X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=src%2Fparser.mly;h=c3148cae191b50a466fa4cf09ab48d2e7037c45d;hb=976bb1b35d77f3058df3c25c1e2a4767147d606b;hp=b84ac151f228faaad68dbcf950753d33d6deb388;hpb=cd5cb328d707b89caad44b038422d6456c1aee03;p=goals.git diff --git a/src/parser.mly b/src/parser.mly index b84ac15..c3148ca 100644 --- a/src/parser.mly +++ b/src/parser.mly @@ -40,7 +40,7 @@ let find_on_include_path filename = ) let do_include env loc filename optflag file = - let filename = Ast.substitute env loc filename in + let filename = Eval.substitute env loc filename in let filename = find_on_include_path filename in if optflag && not (Sys.file_exists filename) then env else ( @@ -61,6 +61,7 @@ let do_include env loc filename optflag file = %token COMMA %token EQUALS %token EOF +%token FUNCTION %token GOAL %token ID %token INCLUDE @@ -108,6 +109,10 @@ stmt: let name, params = $1 in name, Ast.EGoalDefn ($loc, (params, [], [], Some $2)) } + | FUNCTION ID params_decl EQUALS CODE + { + $2, Ast.EFuncDefn ($loc, ($3, $5)) + } | TACTIC_KEYWORD TACTIC params_decl EQUALS CODE { $2, Ast.ETacticDefn ($loc, ($3, $5)) @@ -140,7 +145,7 @@ pattern_param: ; expr: - | ID params { Ast.ECallGoal ($loc, $1, $2) } + | ID params { Ast.ECall ($loc, $1, $2) } | ID { Ast.EVar ($loc, $1) } | TACTIC params { Ast.ETacticCtor ($loc, $1, $2) } | STRING { Ast.ESubsts ($loc, $1) }