From ee1c7d3f7ab8e36b4a59123876c712861afe19f8 Mon Sep 17 00:00:00 2001 From: Ilya Rezvov Date: Mon, 5 Apr 2021 21:03:55 -0700 Subject: [PATCH] resolve all grammar conflicts --- src/Language/Wasm/Parser.y | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Language/Wasm/Parser.y b/src/Language/Wasm/Parser.y index c761fc9..864f5a1 100644 --- a/src/Language/Wasm/Parser.y +++ b/src/Language/Wasm/Parser.y @@ -923,7 +923,10 @@ mod :: { S.Module } -- Wasm Script Extended Grammar script :: { Script } - : list(command) EOF { $1 } + : '(' command1 list(command) EOF { $2 : $3 } + | '(' modulefield1 list(modulefield) EOF {% + (\m -> [ModuleDef $ RawModDef Nothing m]) `fmap` (desugarize $ $2 ++ concat $3) + } command :: { Command } : '(' command1 { $2 } @@ -939,7 +942,6 @@ module1 :: { ModuleDef } : 'module' opt(ident) 'binary' datastring ')' { BinaryModDef $2 $4 } | 'module' opt(ident) 'quote' list(string) ')' { TextModDef $2 (TL.concat $4) } | 'module' opt(ident) list(modulefield) ')' {% RawModDef $2 `fmap` (desugarize $ concat $3) } - | modulefield1 list(modulefield) {% RawModDef Nothing `fmap` (desugarize $ $1 ++ concat $2) } action1 :: { Action } : 'invoke' opt(ident) string list(folded_instr) ')' { Invoke $2 $3 (map (map constInstructionToValue) $4) }