Skip to content
Snippets Groups Projects
Commit 59adbfed authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Fix grammar for expression_list

Grammar was incorrect in the sens that in
``
let f : R -> R, x -> (x+3)*2;
``
`(x+3)*2` was interpreted as an expression_list multiplied by 2 instead of the
single expression `(x+3)*2`. Expression list now requires at least two elements.

Also, allow to grammar now support function calls with multiple parameters.
parent db96f4ee
No related branches found
No related tags found
1 merge request!37Feature/language
...@@ -131,7 +131,8 @@ struct close_parent : seq< one< ')' >, ignored > {}; ...@@ -131,7 +131,8 @@ struct close_parent : seq< one< ')' >, ignored > {};
struct expression; struct expression;
struct parented_expression : if_must< open_parent, expression, close_parent > {}; struct parented_expression : if_must< open_parent, expression, close_parent > {};
struct function_evaluation : seq< NAME, parented_expression > {}; struct expression_list;
struct function_evaluation : seq< NAME, sor< expression_list, parented_expression > > {};
struct primary_expression : sor< BOOL, REAL, INTEGER, LITERAL, function_evaluation, NAME, parented_expression > {}; struct primary_expression : sor< BOOL, REAL, INTEGER, LITERAL, function_evaluation, NAME, parented_expression > {};
...@@ -208,7 +209,7 @@ struct type_expression : list_must< TYPESPECIFIER, one< '*' > >{}; ...@@ -208,7 +209,7 @@ struct type_expression : list_must< TYPESPECIFIER, one< '*' > >{};
struct type_mapping : seq< type_expression, RIGHT_ARROW, type_expression >{}; struct type_mapping : seq< type_expression, RIGHT_ARROW, type_expression >{};
struct name_list : seq< open_parent, list_must< NAME, COMMA >, close_parent >{}; struct name_list : seq< open_parent, list_must< NAME, COMMA >, close_parent >{};
struct expression_list : seq< open_parent, list_must< expression, COMMA >, close_parent >{}; struct expression_list : seq< open_parent, expression, plus< if_must< COMMA, expression > >, close_parent >{};
struct function_definition : seq< sor< name_list, NAME >, RIGHT_ARROW, sor< expression_list, expression > >{}; struct function_definition : seq< sor< name_list, NAME >, RIGHT_ARROW, sor< expression_list, expression > >{};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment