summaryrefslogtreecommitdiff
path: root/src/tparse/tree-list.go
diff options
context:
space:
mode:
authorKyle Gunger <kgunger12@gmail.com>2021-10-29 23:12:42 -0400
committerKyle Gunger <kgunger12@gmail.com>2021-10-29 23:12:42 -0400
commit6af4308f464e3821baca41a5bc5b4938481504b4 (patch)
treef13eac68640fea9142ed17e3a71d0afdda43753c /src/tparse/tree-list.go
parenta7b7ecec0cafe6399151669860b3c0d521a31828 (diff)
[AST] General bugfixes
We have emerged into the testing phase of the AST. Very basic statements seem to parse here, but not much else.
Diffstat (limited to 'src/tparse/tree-list.go')
-rw-r--r--src/tparse/tree-list.go23
1 files changed, 12 insertions, 11 deletions
diff --git a/src/tparse/tree-list.go b/src/tparse/tree-list.go
index 059ef0b..0a98e8c 100644
--- a/src/tparse/tree-list.go
+++ b/src/tparse/tree-list.go
@@ -31,21 +31,22 @@ func getClosing(start string) string {
// Parse a list of values
func parseValueList(tokens *[]Token, tok, max int) (Node, int) {
- out := Node{}
- out.Data = Token{Type: 10, Data: "value"}
+ out := Node{Data: Token{Type: 10, Data: "list"}, IsBlock: false}
var tmp Node
- c := getClosing((*tokens)[tok].Data)
+ tmp, tok = parseValue(tokens, tok, max)
+ out.Sub = append(out.Sub, tmp)
+
+ for ; tok < max; {
- tok++
-
- for ; tok < max; tok++ {
t := (*tokens)[tok]
-
- switch t.Data {
- case c:
- return out, tok
- case ",":
+
+ switch t.Type {
+ case LINESEP:
+ fallthrough
+ case DELIMIT:
+ return out, tok + 1
+ case INLNSEP:
tok++
default:
errOut("Error: unexpected token when parsing a list of values", t)