aboutsummaryrefslogtreecommitdiff
path: root/internal/ast/tree.go
diff options
context:
space:
mode:
author2026-03-09 23:05:42 +0300
committer2026-03-09 23:05:42 +0300
commit00394a80501960ad26787b5c44435ed5ed67ad84 (patch)
tree672eb918c552c858f32e9533dc3799af6b75769f /internal/ast/tree.go
parent'-' sign in words accepted (diff)
downloadconf-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.go43
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
-}