diff --git a/src/language/PEGGrammar.hpp b/src/language/PEGGrammar.hpp index 0e98c2b4bf710b8e86563cabfc0b58dc45f820ff..aa6698083c9db141ce3134a5ab850da35ff46dc6 100644 --- a/src/language/PEGGrammar.hpp +++ b/src/language/PEGGrammar.hpp @@ -72,6 +72,7 @@ struct B_set : TAO_PEGTL_KEYWORD("B"){}; struct N_set : TAO_PEGTL_KEYWORD("N"){}; struct Z_set : TAO_PEGTL_KEYWORD("Z"){}; struct R_set : TAO_PEGTL_KEYWORD("R"){}; +struct empty_set : TAO_PEGTL_KEYWORD("void"){}; struct string_type : TAO_PEGTL_KEYWORD("string") {}; @@ -90,6 +91,7 @@ struct tuple_type_specifier : sor<try_catch< open_parent, simple_type_specifier if_must< at< open_parent >, raise< simple_type_specifier >, until< eof > > >{}; struct TYPE_SPECIFIER : seq< sor<simple_type_specifier, tuple_type_specifier>, ignored >{}; +struct EMPTY_SET : seq<empty_set, ignored >{}; struct type_expression : list_must< TYPE_SPECIFIER, seq< ignored, one< '*' >, ignored > >{}; struct TYPE_EXPRESSION : seq< type_expression, ignored >{}; @@ -262,7 +264,8 @@ struct name_list : seq< open_parent, list_must< NAME, COMMA >, close_parent >{}; struct function_definition : seq< sor< name_list, NAME >, RIGHT_ARROW, sor< expression_list, expression > >{}; -struct fct_declaration : seq< LET, NAME, COLUMN, type_mapping, COMMA, function_definition >{}; +struct fct_declaration : sor< seq< LET, NAME, COLUMN, type_mapping, COMMA, function_definition >, + seq< LET, EMPTY_SET, COLUMN, type_mapping, COMMA, EMPTY_SET, RIGHT_ARROW, sor< expression_list, expression > >>{}; struct open_brace : seq< one< '{' >, ignored >{}; struct close_brace : seq< one< '}' >, ignored >{};