From bad9ab7479d66dfdb1c8e2d18c23fbcff9ec394b Mon Sep 17 00:00:00 2001 From: Kimplul Date: Tue, 15 Aug 2023 21:41:29 +0300 Subject: updates to syntax --- src/lexer.l | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'src/lexer.l') 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 */} -- cgit v1.3