summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
f858fba)
There is no grammatical ambiguity by using T_WORD for variables.
The parser can distinguish variables from symbols from the context.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
}
alloc_string(yytext, yyleng);
yylval.string = text;
}
alloc_string(yytext, yyleng);
yylval.string = text;
}
({n}|$)+ {
/* this token includes at least one '$' */
yylval.string = expand_token(yytext, yyleng);
if (strlen(yylval.string))
}
({n}|$)+ {
/* this token includes at least one '$' */
yylval.string = expand_token(yytext, yyleng);
if (strlen(yylval.string))
free(yylval.string);
}
"=" { BEGIN(ASSIGN_VAL); return T_EQUAL; }
free(yylval.string);
}
"=" { BEGIN(ASSIGN_VAL); return T_EQUAL; }
%token T_STRING
%token T_TRISTATE
%token T_EOL
%token T_STRING
%token T_TRISTATE
%token T_EOL
-%token <string> T_VARIABLE
%token <string> T_ASSIGN_VAL
%left T_OR
%token <string> T_ASSIGN_VAL
%left T_OR
/* assignment statement */
/* assignment statement */
-assignment_stmt: T_VARIABLE assign_op assign_val T_EOL { variable_add($1, $3, $2); free($1); free($3); }
+assignment_stmt: T_WORD assign_op assign_val T_EOL { variable_add($1, $3, $2); free($1); free($3); }
assign_op:
T_EQUAL { $$ = VAR_RECURSIVE; }
assign_op:
T_EQUAL { $$ = VAR_RECURSIVE; }