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 | 
