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" {
|
"brematurata la supercazzola" {
|
||||||
return FUNCALL;
|
return FUNCALL;
|
||||||
}
|
}
|
||||||
|
"o scherziamo"("?")? {
|
||||||
|
return FUN_END;
|
||||||
|
}
|
||||||
"avvertite don ulrico" {
|
"avvertite don ulrico" {
|
||||||
return ABORT;
|
return ABORT;
|
||||||
}
|
}
|
||||||
|
|
14
Monicelli.y
14
Monicelli.y
|
@ -26,7 +26,7 @@ extern int yylex();
|
||||||
%token LOOP_BEGIN LOOP_CONDITION
|
%token LOOP_BEGIN LOOP_CONDITION
|
||||||
%token BRANCH_CONDITION BRANCH_BEGIN BRANCH_ELSE BRANCH_END CASE_END
|
%token BRANCH_CONDITION BRANCH_BEGIN BRANCH_ELSE BRANCH_END CASE_END
|
||||||
%token COLON COMMA
|
%token COLON COMMA
|
||||||
%token FUNDECL PARAMS FUNCALL
|
%token FUNDECL PARAMS FUNCALL FUN_END
|
||||||
%token ABORT
|
%token ABORT
|
||||||
%token ID NUMBER FLOAT
|
%token ID NUMBER FLOAT
|
||||||
|
|
||||||
|
@ -66,11 +66,11 @@ main:
|
||||||
MAIN statements
|
MAIN statements
|
||||||
;
|
;
|
||||||
statements:
|
statements:
|
||||||
/* epsilon */ | statements statement COMMA | statements assert_stmt
|
/* epsilon */ | statement COMMA statements | assert_stmt statements | fun_call statements
|
||||||
;
|
;
|
||||||
statement:
|
statement:
|
||||||
var_decl | assign_stmt | print_stmt | input_stmt | return_stmt |
|
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:
|
var_decl:
|
||||||
VARDECL variable COMMA pointer TYPENAME var_init
|
VARDECL variable COMMA pointer TYPENAME var_init
|
||||||
|
@ -118,7 +118,13 @@ case_stmt:
|
||||||
semi_expression COLON statements
|
semi_expression COLON statements
|
||||||
;
|
;
|
||||||
fun_call:
|
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_stmt:
|
||||||
ABORT
|
ABORT
|
||||||
|
|
|
@ -29,15 +29,15 @@ Lei ha clacsonato,
|
||||||
vicesindaco a posterdati,
|
vicesindaco a posterdati,
|
||||||
mi porga il vicesindaco,
|
mi porga il vicesindaco,
|
||||||
|
|
||||||
brematurata la supercazzola tombale con alfio serio,
|
brematurata la supercazzola tombale con alfio, serio o scherziamo?
|
||||||
|
|
||||||
avvertite don ulrico,
|
avvertite don ulrico,
|
||||||
ho visto la signora!
|
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,
|
vaffanzum,
|
||||||
|
|
||||||
blinda la supercazzola antanizzata con alfio,
|
blinda la supercazzola antanizzata con alfio o scherziamo?
|
||||||
vaffanzum alfio meno 2,
|
vaffanzum alfio meno 2,
|
||||||
|
|
||||||
bituma al finale?
|
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,
|
a posterdati, o magari maggiore di mobiletto: genio a posterdati,
|
||||||
o tarapia tapioco: mi porga il cappello, e velocità di esecuzione,
|
o tarapia tapioco: mi porga il cappello, e velocità di esecuzione,
|
||||||
vicesindaco a posterdati, mi porga il vicesindaco, brematurata la supercazzola
|
vicesindaco a posterdati, mi porga il vicesindaco, brematurata la supercazzola
|
||||||
tombale con alfio serio, avvertite don ulrico, ho visto la signora!
|
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
|
||||||
vaffanzum, blinda la supercazzola antanizzata con alfio,
|
o scherziamo, vaffanzum, blinda la supercazzola antanizzata con alfio o scherziamo?
|
||||||
vaffanzum alfio meno 2, bituma al finale?
|
vaffanzum alfio meno 2, bituma al finale?
|
||||||
|
|
Reference in New Issue
Block a user