diff options
author | Kimplul <kimi.h.kuparinen@gmail.com> | 2024-10-20 23:00:40 +0300 |
---|---|---|
committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2024-10-23 18:25:23 +0300 |
commit | 55428637a8536764a82693c19d76e61a6f557627 (patch) | |
tree | f2998ad3b9483acdf6b7aa29a665061e51f500d5 /src | |
parent | fe66fcdb1549b380fad440320e50e332f409efd3 (diff) | |
download | lyn-55428637a8536764a82693c19d76e61a6f557627.tar.gz lyn-55428637a8536764a82693c19d76e61a6f557627.zip |
add command continuations
Diffstat (limited to 'src')
-rw-r--r-- | src/lexer.l | 3 | ||||
-rw-r--r-- | src/parser.y | 7 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/lexer.l b/src/lexer.l index 3c611ab..4756cf0 100644 --- a/src/lexer.l +++ b/src/lexer.l @@ -27,7 +27,7 @@ static void update_yylloc(struct parser *parser, YYLTYPE *lloc, const char *text #define YY_USER_ACTION update_yylloc(parser, yylloc, yytext); %} -ID [^(){};[:space:]]+ +ID [^(){};\\[:space:]]+ STRING \"(\\.|[^"\\])*\" HEX 0[xX][0-9a-fA-F]+ @@ -50,6 +50,7 @@ FLOAT {HEXF}|{DECF} "{" {return LBRACE;} "}" {return RBRACE;} ";" {return SEMICOLON;} +"\\" {return BACKSLASH;} "\n" {return NL;} {STRING} { diff --git a/src/parser.y b/src/parser.y index a87b6c6..edf71c1 100644 --- a/src/parser.y +++ b/src/parser.y @@ -45,6 +45,7 @@ %token LBRACE "{" %token RBRACE "}" %token SEMICOLON ";" +%token BACKSLASH "\\" %token NL "nl" %nterm <ast> arg args rev_args @@ -101,8 +102,12 @@ arg | INT {$$ = gen_int($1);} | FLOAT {$$ = gen_float($1);} +cont + : BACKSLASH NL + rev_args - : rev_args arg {$$ = $1; vect_append(struct lyn_value, $$.args, &$2);} + : rev_args cont arg {$$ = $1; vect_append(struct lyn_value, $$.args, &$3);} + | rev_args arg {$$ = $1; vect_append(struct lyn_value, $$.args, &$2);} | arg {$$ = gen_list(); vect_append(struct lyn_value, $$.args, &$1);} args |