In debug mode (-d) print all shell scripts executed.
[goals.git] / src / parser.mly
index faccb6b..7146a99 100644 (file)
@@ -60,7 +60,7 @@ let do_include env loc filename optflag file =
 %}
 
 (* Tokens. *)
-%token <Ast.substs> CODE
+%token <Ast.code> 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,9 @@ stmt:
       let name, params = $1 in
       name, Ast.EGoalDefn ($loc, (params, [], [], Some $2))
     }
-    | FUNCTION ID params_decl return_decl EQUALS CODE
+    | option(PURE) FUNCTION ID params_decl return_decl EQUALS CODE
     {
-      $2, Ast.EFuncDefn ($loc, ($3, $4, $6))
+      $3, Ast.EFuncDefn ($loc, ($4, $5, $1 <> None, $7))
     }
     | TACTIC_KEYWORD TACTIC params_decl EQUALS CODE
     {
@@ -148,7 +149,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 }