diff options
| author | 2026-03-09 23:05:42 +0300 | |
|---|---|---|
| committer | 2026-03-09 23:05:42 +0300 | |
| commit | 00394a80501960ad26787b5c44435ed5ed67ad84 (patch) | |
| tree | 672eb918c552c858f32e9533dc3799af6b75769f /internal/ast/tree.go | |
| parent | '-' sign in words accepted (diff) | |
| download | conf-00394a80501960ad26787b5c44435ed5ed67ad84.tar.gz conf-00394a80501960ad26787b5c44435ed5ed67ad84.tar.bz2 conf-00394a80501960ad26787b5c44435ed5ed67ad84.tar.xz conf-00394a80501960ad26787b5c44435ed5ed67ad84.zip | |
Полностью переписал библиотеку. Перевёл с EBNF на PEG.v0.1.0
Diffstat (limited to 'internal/ast/tree.go')
| -rw-r--r-- | internal/ast/tree.go | 43 |
1 files changed, 0 insertions, 43 deletions
diff --git a/internal/ast/tree.go b/internal/ast/tree.go deleted file mode 100644 index 72b7c78..0000000 --- a/internal/ast/tree.go +++ /dev/null @@ -1,43 +0,0 @@ -package ast - -import ( - "go.neonxp.ru/conf/internal/parser" - "modernc.org/scanner" -) - -func Parse(p *parser.Parser, data []int32) []*Node { - nodes := make([]*Node, 0, 2) - for len(data) != 0 { - next := int32(1) - var node *Node - switch n := data[0]; { - case n < 0: - next = 2 + data[1] - node = &Node{ - Symbol: parser.Symbol(-data[0]), - Children: Parse(p, data[2:next]), - } - default: - tok := p.Token(n) - node = &Node{ - Token: tok, - Symbol: parser.Symbol(tok.Ch), - Source: tok.Src(), - Col: tok.Position().Column, - Line: tok.Position().Line, - } - } - nodes = append(nodes, node) - data = data[next:] - } - return nodes -} - -type Node struct { - Symbol parser.Symbol - Token scanner.Token - Children []*Node - Source string - Col int - Line int -} |
