X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=src%2Fparser.mly;h=9d6988b28ae3a8d266eb5cb8f4f92b569ac37171;hb=017d19bf31e5e4d15423fe7c8068b50034b919a3;hp=faccb6b35faa0f255d69b6d7a59f7ab0504a3574;hpb=c07380a3a4dca44a29df4cb09265d10442c1d06f;p=goals.git diff --git a/src/parser.mly b/src/parser.mly index faccb6b..9d6988b 100644 --- a/src/parser.mly +++ b/src/parser.mly @@ -38,7 +38,7 @@ let find_on_include_path filename = let path = inc // filename in if Sys.file_exists path then path else loop incs in - loop Cmdline.includes + loop (Cmdline.includes ()) ) let do_include env loc filename optflag file = @@ -60,7 +60,7 @@ let do_include env loc filename optflag file = %} (* Tokens. *) -%token CODE +%token CODE %token COLON %token COMMA %token EQUALS @@ -74,6 +74,7 @@ let do_include env loc filename optflag file = %token LEFT_PAREN %token LET %token OPTINCLUDE +%token PURE %token RETURNING %token RIGHT_ARRAY %token RIGHT_PAREN @@ -117,9 +118,13 @@ stmt: let name, params = $1 in name, Ast.EGoalDefn ($loc, (params, [], [], Some $2)) } - | FUNCTION ID params_decl return_decl EQUALS CODE + | GOAL ID { - $2, Ast.EFuncDefn ($loc, ($3, $4, $6)) + $2, Ast.EGoalDefn ($loc, ([], [], [], None)) + } + | option(PURE) FUNCTION ID params_decl return_decl EQUALS CODE + { + $3, Ast.EFuncDefn ($loc, ($4, $5, $1 <> None, $7)) } | TACTIC_KEYWORD TACTIC params_decl EQUALS CODE { @@ -148,7 +153,7 @@ patterns: ; pattern: | STRING { Ast.PTactic ($loc, "*file", [$1]) } - | ID pattern_params { Ast.PTactic ($loc, $1, $2) } + | TACTIC pattern_params { Ast.PTactic ($loc, $1, $2) } ; pattern_params: | LEFT_PAREN separated_list(COMMA, pattern_param) RIGHT_PAREN { $2 }