Allow arbitrary expressions to be passed as function params.
This commit is contained in:
parent
be3de046c3
commit
7197bd707a
|
@ -146,6 +146,9 @@ CHAR [a-zA-Z_]
|
|||
"brematurata la supercazzola" {
|
||||
return FUNCALL;
|
||||
}
|
||||
"o scherziamo"("?")? {
|
||||
return FUN_END;
|
||||
}
|
||||
"avvertite don ulrico" {
|
||||
return ABORT;
|
||||
}
|
||||
|
|
14
Monicelli.y
14
Monicelli.y
|
@ -26,7 +26,7 @@ extern int yylex();
|
|||
%token LOOP_BEGIN LOOP_CONDITION
|
||||
%token BRANCH_CONDITION BRANCH_BEGIN BRANCH_ELSE BRANCH_END CASE_END
|
||||
%token COLON COMMA
|
||||
%token FUNDECL PARAMS FUNCALL
|
||||
%token FUNDECL PARAMS FUNCALL FUN_END
|
||||
%token ABORT
|
||||
%token ID NUMBER FLOAT
|
||||
|
||||
|
@ -66,11 +66,11 @@ main:
|
|||
MAIN statements
|
||||
;
|
||||
statements:
|
||||
/* epsilon */ | statements statement COMMA | statements assert_stmt
|
||||
/* epsilon */ | statement COMMA statements | assert_stmt statements | fun_call statements
|
||||
;
|
||||
statement:
|
||||
var_decl | assign_stmt | print_stmt | input_stmt | return_stmt |
|
||||
loop_stmt | branch_stmt | fun_call | abort_stmt | /* epsilon */
|
||||
loop_stmt | branch_stmt | abort_stmt | /* epsilon */
|
||||
;
|
||||
var_decl:
|
||||
VARDECL variable COMMA pointer TYPENAME var_init
|
||||
|
@ -118,7 +118,13 @@ case_stmt:
|
|||
semi_expression COLON statements
|
||||
;
|
||||
fun_call:
|
||||
FUNCALL ID args
|
||||
FUNCALL ID call_args FUN_END
|
||||
;
|
||||
call_args:
|
||||
/* epsilon */ | PARAMS call_arglist
|
||||
;
|
||||
call_arglist:
|
||||
expression | expression COMMA call_arglist
|
||||
;
|
||||
abort_stmt:
|
||||
ABORT
|
||||
|
|
|
@ -29,15 +29,15 @@ Lei ha clacsonato,
|
|||
vicesindaco a posterdati,
|
||||
mi porga il vicesindaco,
|
||||
|
||||
brematurata la supercazzola tombale con alfio serio,
|
||||
brematurata la supercazzola tombale con alfio, serio o scherziamo?
|
||||
|
||||
avvertite don ulrico,
|
||||
ho visto la signora!
|
||||
|
||||
vicesindaco come se fosse brematurata la supercazzola avanti con il vicesindaco,
|
||||
vicesindaco come se fosse brematurata la supercazzola avanti con il vicesindaco o scherziamo,
|
||||
vaffanzum,
|
||||
|
||||
blinda la supercazzola antanizzata con alfio,
|
||||
blinda la supercazzola antanizzata con alfio o scherziamo?
|
||||
vaffanzum alfio meno 2,
|
||||
|
||||
bituma al finale?
|
||||
|
|
|
@ -8,7 +8,7 @@ mi porga il cappellano, zingarata come fosse cappellano più uno, zingarata
|
|||
a posterdati, o magari maggiore di mobiletto: genio a posterdati,
|
||||
o tarapia tapioco: mi porga il cappello, e velocità di esecuzione,
|
||||
vicesindaco a posterdati, mi porga il vicesindaco, brematurata la supercazzola
|
||||
tombale con alfio serio, avvertite don ulrico, ho visto la signora!
|
||||
vicesindaco come se fosse brematurata la supercazzola avanti con il vicesindaco,
|
||||
vaffanzum, blinda la supercazzola antanizzata con alfio,
|
||||
tombale con alfio, serio o scherziamo? avvertite don ulrico, ho visto la signora!
|
||||
vicesindaco come se fosse brematurata la supercazzola avanti con il vicesindaco
|
||||
o scherziamo, vaffanzum, blinda la supercazzola antanizzata con alfio o scherziamo?
|
||||
vaffanzum alfio meno 2, bituma al finale?
|
||||
|
|
Reference in New Issue
Block a user