1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
fdName_:
identifier
{
d_symtab.defineFunction(d_type, $1);
}
;
fdParamName_:
identifier
{
d_symtab.defineVar(d_type, $1);
}
;
fdParam_:
varType fdParamName_ syntaxCommaOrCloseparen
;
fdParams_:
fdParams_ ',' syntaxTypename fdParam_
|
fdParam_
;
fdOptParams_:
fdParams_
|
// empty
;
fdHead_:
fdName_ '(' fdOptParams_ ')' syntaxOpenCurly
{
functionHead();
}
;
functionDef:
fdHead_ openCurly statements closeCurly
{
functionDefined($3);
}
;
|