%%
module
- : optional_statements_or_definitions {
+ : optional_statements {
$$ = sltNodeMakeModule($1);
*moduleOut = $$;
}
;
-optional_statements_or_definitions
- : /* Nothing */ {
+/*optional_statements_or_definitions
+ : *//* Nothing *//* {
$$ = NULL;
}
| statements_or_definitions
;
statements_or_definitions
- : definition {
+ : function_definition {
$$ = sltNodeMakeSequence(NULL, $1);
}
| statement {
$$ = sltNodeMakeSequence(NULL, $1);
}
- | statements_or_definitions definition {
+ | statements_or_definitions function_definition {
$$ = sltNodeMakeSequence($1, $2);
}
| statements_or_definitions statement {
$$ = sltNodeMakeSequence($1, $2);
}
- ;
+ ;*/
-definition
+/*definition
: function_definition
- /*| type_definition*/
+ | type_definition
| variable_definition ';'
- ;
+ ;*/
function_definition
: IDENTIFIER IDENTIFIER '(' optional_parameter_definitions ')' '{' optional_statements '}' {
: ';' {
$$ = NULL; /* Otherwise this will pass up the ';' character */
}
+ | function_definition
| variable_definition ';'
| "return" optional_expression ';' {
$$ = sltNodeMakeReturn($2);