X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=src%2Fparser.mly;h=57a0c5cdb59b912d342b61097e385db49cb6ea69;hb=3258e6938ac266998ced1394792e1a3a44779526;hp=eedbddbdfebc7bab5a611b1a76e14be774693dce;hpb=ec7d2c76a7ae7447866522103b18107f154083cb;p=goals.git diff --git a/src/parser.mly b/src/parser.mly index eedbddb..57a0c5c 100644 --- a/src/parser.mly +++ b/src/parser.mly @@ -87,7 +87,7 @@ let do_include env loc filename optflag file = (* Start nonterminals. *) %start file -%start expr +%start expr_only %% file: @@ -118,6 +118,10 @@ stmt: let name, params = $1 in name, Ast.EGoalDefn ($loc, (params, [], [], Some $2)) } + | GOAL ID + { + $2, Ast.EGoalDefn ($loc, ([], [], [], None)) + } | option(PURE) FUNCTION ID params_decl return_decl EQUALS CODE { $3, Ast.EFuncDefn ($loc, ($4, $5, $1 <> None, $7)) @@ -172,6 +176,13 @@ params: | LEFT_PAREN separated_list(COMMA, expr) RIGHT_PAREN { $2 } ; +(* This is used by Parse.parse_expr where we have to parse + * a standalone string (eg. from the command line). + *) +expr_only: + | expr EOF { $1 } + ; + (* http://gallium.inria.fr/blog/lr-lists/ *) right_flexible_list(delim, X): | (* nothing *) { [] }