diff --git a/src/language/ASTBuilder.cpp b/src/language/ASTBuilder.cpp index 239da703c87bcf1e5d1802e2019635213ed519b8..9ab4cd7a6be344f1c9d5d2bdc4e4ddd377584135 100644 --- a/src/language/ASTBuilder.cpp +++ b/src/language/ASTBuilder.cpp @@ -209,6 +209,8 @@ using selector = real, literal, name, + name_list, + expression_list, B_set, N_set, Z_set, diff --git a/src/language/PEGGrammar.hpp b/src/language/PEGGrammar.hpp index 646842bf3af00fa04b6f7a2363d4fff2f5f3314e..f45d46ccb84be654f7d131b40c5fa461fd52f32b 100644 --- a/src/language/PEGGrammar.hpp +++ b/src/language/PEGGrammar.hpp @@ -206,7 +206,11 @@ struct declaration : if_must< TYPESPECIFIER, NAME, opt< if_must< seq< one< '=' > struct type_expression : list_must< TYPESPECIFIER, one< '*' > >{}; struct type_mapping : seq< type_expression, RIGHT_ARROW, type_expression >{}; -struct function_definition : seq< NAME, RIGHT_ARROW, expression >{}; + +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 function_definition : seq< sor< name_list, NAME >, RIGHT_ARROW, sor< expression_list, expression > >{}; struct let_declaration : if_must< LET, NAME, COLUMN, type_mapping, COMMA, function_definition >{};