aboutsummaryrefslogtreecommitdiff
path: root/src/lexer.l
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2023-08-15 21:41:29 +0300
committerKimplul <kimi.h.kuparinen@gmail.com>2023-08-15 21:41:29 +0300
commitbad9ab7479d66dfdb1c8e2d18c23fbcff9ec394b (patch)
treed43dd3a26685c9adc8201dfe1a4035418175c1eb /src/lexer.l
parent5ffc39352ef0195697953e9318b8a17c79e7ae84 (diff)
downloadek-bad9ab7479d66dfdb1c8e2d18c23fbcff9ec394b.tar.gz
ek-bad9ab7479d66dfdb1c8e2d18c23fbcff9ec394b.zip
updates to syntax
Diffstat (limited to 'src/lexer.l')
-rw-r--r--src/lexer.l16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/lexer.l b/src/lexer.l
index c30e802..ac8ed67 100644
--- a/src/lexer.l
+++ b/src/lexer.l
@@ -40,6 +40,7 @@ DECF [+-]?[0-9]+[.]([eE]?[+-]?[0-9]+)?[fF]?
FLOAT {HEXF}|{DECF}|inf|nan
ID [_a-zA-Z][_a-zA-Z0-9]*
+APPLY {ID}[[:space:]]*!
STRING \"(\\.|[^"\\])*\"
@@ -60,8 +61,8 @@ STRING \"(\\.|[^"\\])*\"
"*"+ {}
[^/*\n]+ {}
- [/] {}
- \n {}
+ [/] {}
+ \n {}
}
"::" {return SCOPE;}
@@ -119,6 +120,7 @@ STRING \"(\\.|[^"\\])*\"
return INT;
}
+"?" {return QUESTION;}
"'" {return SQUOTE;}
"&" {return AND;}
@@ -178,6 +180,7 @@ STRING \"(\\.|[^"\\])*\"
"define" {return DEFINE;}
"break" {return BREAK;}
"continue" {return CONTINUE;}
+"default" {return DEFAULT;}
{STRING} {
/* seems risky, I know, but letting the parser choose when to allocate a
@@ -201,6 +204,15 @@ STRING \"(\\.|[^"\\])*\"
return ID;
}
+{APPLY} {
+ /* strip trailing '!' */
+ char *s = yytext + strlen(yytext);
+ s[-1] = '\0';
+
+ yylval->str = yytext;
+ return APPLY;
+}
+
[[:space:]]+ {/* skip whitespace */}