Hi
I'm trying to understand what are the idioms in Smacc when converting from
ANTLR
######### the case of * ########################
Function = ‘(‘ (',' Arguments )* ‘)’
should be transformed into
Function
: <name> "(" 'leftParen' _ArgumentsOption ")" 'rightParen' {{}}
;
_ArgumentsOption
:
| Arguments
;
Arguments
: Expression 'argument'
| Arguments "," Expression 'argument'
;
Here since there is a recursion in Arguments
the instance variable containing a list of argument will be added to the
FunctionNode
Pay attention that Expression 'argument' should not have a {{}} nor its
parent rule.
######### the case of + ########################
Function = ‘(‘ Arguments + ‘)’
should be transformed into
Function
: <name> "(" 'leftParen' _ArgumentsOption ")" 'rightParen' {{}}
;
_ArgumentsOption
: Arguments
;
Arguments
: Expression 'argument'
| Arguments "," Expression 'argument'
;
######### the case of ? ########################
Function = ‘(‘ Arguments+ ‘)’
should be transformed into
Function
: <name> "(" 'leftParen' _ArgumentsOption ")" 'rightParen' {{}}
;
_ArgumentsOption
:
| Arguments
;
Arguments
: Expression 'argument'
;
Is there a more compact way to express?
Thierry do you have example of *, + , ? in the grammar?
Stef