From 233625db200d453072f5a48a1d744b494fb6cbba Mon Sep 17 00:00:00 2001 From: James Shubin Date: Sat, 4 Nov 2023 14:35:24 -0400 Subject: [PATCH] lang: parser: Lexer should allow in keyword as a variable name We move it downwards to allow this case. Whether we want to allow this long-term or not is to be decided. --- .../TestAstFunc2/lexer-parser0.txtar | 16 ++++++++++++++++ lang/parser/lexer.nex | 10 +++++----- 2 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 lang/interpret_test/TestAstFunc2/lexer-parser0.txtar diff --git a/lang/interpret_test/TestAstFunc2/lexer-parser0.txtar b/lang/interpret_test/TestAstFunc2/lexer-parser0.txtar new file mode 100644 index 00000000..d12ca1bc --- /dev/null +++ b/lang/interpret_test/TestAstFunc2/lexer-parser0.txtar @@ -0,0 +1,16 @@ +-- main.mcl -- +import "fmt" + +$map = 55 +$fn = func($in) { # in is a special keyword + 13 +} +test fmt.printf("%d", $fn(0)) {} +func fn($in) { # in is a special keyword + 42 + $map +} +test fmt.printf("%d", $fn(0)) {} +test fmt.printf("%d", fn(0)) {} +-- OUTPUT -- +Vertex: test[13] +Vertex: test[97] diff --git a/lang/parser/lexer.nex b/lang/parser/lexer.nex index 29fa39f7..13251819 100644 --- a/lang/parser/lexer.nex +++ b/lang/parser/lexer.nex @@ -139,11 +139,6 @@ lval.str = yylex.Text() return NOT } -/in/ { - yylex.pos(lval) // our pos - lval.str = yylex.Text() - return IN - } /\->/ { yylex.pos(lval) // our pos lval.str = yylex.Text() @@ -306,6 +301,11 @@ lval.str = yylex.Text() return IDENTIFIER } +/in/ { + yylex.pos(lval) // our pos + lval.str = yylex.Text() + return IN + } /[A-Z]([a-z0-9_]*[a-z0-9]+)?/ { yylex.pos(lval) // our pos