blob: d22cdc0b10d59f3730570199fae6708d1c12d27f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
package compiler
import "jinx/pkg/lang/vm/code"
type SymbolKind int
const (
SymbolKindVariable SymbolKind = iota
SymbolKindFunction
)
func (s SymbolKind) String() string {
switch s {
case SymbolKindVariable:
return "variable"
case SymbolKindFunction:
return "function"
default:
panic("unknown symbol kind")
}
}
type Symbol[D SymbolData] struct {
name string
data D
}
type SymbolData interface {
SymbolVariable | SymbolFunction
}
type SymbolVariable struct {
localIndex int
}
type SymbolFunction struct {
marker code.Marker
}
|