diff --git a/interpreter/interpreter.go b/interpreter/interpreter.go index 79d70a7..1fd8f70 100644 --- a/interpreter/interpreter.go +++ b/interpreter/interpreter.go @@ -438,6 +438,8 @@ func (interp *interpreter) evaluate(expr parser.Expression) Value { case *parser.FunctionExpression: closure := interp.vars[len(interp.vars)-1] return &userFunction{"", e.Parameters, e.Ellipsis, e.Body, closure} + case *parser.SemiTag: + return nil default: // Parser should never give us this panic(fmt.Sprintf("unexpected expression type %T", expr)) diff --git a/parser/ast.go b/parser/ast.go index 3171ce6..7e482de 100644 --- a/parser/ast.go +++ b/parser/ast.go @@ -316,3 +316,10 @@ func (e *Variable) Position() Position { return e.pos } func (e *Variable) String() string { return e.Name } + +type SemiTag struct { + pos Position +} + +func (e *SemiTag) expressionNode() {} +func (e *SemiTag) Position() Position { return e.pos } diff --git a/parser/parser.go b/parser/parser.go index 04218a7..0c0f0b0 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -320,11 +320,11 @@ func (p *parser) call() Expression { p.error("can only have ... after last argument") } p.expect(RPAREN) - if p.tok == SEMI { - p.expect(SEMI) - } else { - print(p.tok) - } + //if p.tok == SEMI { + // p.expect(SEMI) + //} else { + // print(p.tok) + //} expr = &Call{pos, expr, args, gotEllipsis} } else if p.tok == LBRACKET { @@ -332,7 +332,7 @@ func (p *parser) call() Expression { p.next() subscript := p.expression() p.expect(RBRACKET) - p.expect(SEMI) + //p.expect(SEMI) expr = &Subscript{pos, expr, subscript} } else { pos := p.pos @@ -404,8 +404,13 @@ func (p *parser) primary() Expression { p.next() expr := p.expression() p.expect(RPAREN) - p.expect(SEMI) + //p.expect(SEMI) return expr + case SEMI: + p.next() + pos := p.pos + return &SemiTag{pos} + default: formatter := prettyjson.NewFormatter() output, _ := formatter.Marshal(p.val) @@ -437,7 +442,7 @@ func (p *parser) list() Expression { } } p.expect(RBRACKET) - p.expect(SEMI) + //p.expect(SEMI) return &List{pos, values} } diff --git a/tests/all-syntax-variations.davi b/tests/all-syntax-variations.davi index b7128f9..5d317f0 100644 --- a/tests/all-syntax-variations.davi +++ b/tests/all-syntax-variations.davi @@ -1,10 +1,8 @@