Files
wyst/parser/ast.go
T
2024-08-10 19:48:14 +02:00

36 lines
547 B
Go

package parser
import (
"fmt"
)
type Rule struct {
Name string
Inner []Rule
}
type AstNode struct {
Rule Rule
Inner []AstNode
}
func (t AstNode) String() string {
return fmt.Sprintf("AstNode(\n rule=%v,\n inner=%v,\n)", t.Rule, t.Inner)
}
func (t Rule) String() string {
return t.Name
}
func NewRule(name string, inner []Rule) Rule {
return Rule{name, inner}
}
var (
IDENTIFIER = NewRule("IDENTIFIER", []Rule{})
VAR_DEF = NewRule("VAR_DEF", []Rule{IDENTIFIER, IDENTIFIER})
)
var (
RULE_SET = []Rule{IDENTIFIER, VAR_DEF}
)