diff --git a/interpreter/text/parser.mly b/interpreter/text/parser.mly index 1eb6be286a..535a05d51e 100644 --- a/interpreter/text/parser.mly +++ b/interpreter/text/parser.mly @@ -205,8 +205,11 @@ let inline_type_explicit (c : context) x ft at = %} %token LPAR RPAR -%token NAT INT FLOAT STRING VAR -%token NUM_TYPE VEC_TYPE VEC_SHAPE FUNCREF EXTERNREF EXTERN MUT +%token NAT INT FLOAT STRING VAR +%token NUM_TYPE +%token VEC_TYPE +%token VEC_SHAPE +%token FUNCREF EXTERNREF EXTERN MUT %token UNREACHABLE NOP DROP SELECT %token BLOCK END IF THEN ELSE LOOP BR BR_IF BR_TABLE %token CALL CALL_INDIRECT RETURN @@ -214,61 +217,28 @@ let inline_type_explicit (c : context) x ft at = %token TABLE_GET TABLE_SET %token TABLE_SIZE TABLE_GROW TABLE_FILL TABLE_COPY TABLE_INIT ELEM_DROP %token MEMORY_SIZE MEMORY_GROW MEMORY_FILL MEMORY_COPY MEMORY_INIT DATA_DROP -%token LOAD STORE OFFSET_EQ_NAT ALIGN_EQ_NAT -%token CONST UNARY BINARY TEST COMPARE CONVERT +%token Memory.offset -> Ast.instr'> LOAD STORE +%token OFFSET_EQ_NAT ALIGN_EQ_NAT +%token Ast.instr' * Values.num> CONST +%token UNARY BINARY TEST COMPARE CONVERT %token REF_NULL REF_FUNC REF_EXTERN REF_IS_NULL -%token VEC_LOAD VEC_STORE VEC_LOAD_LANE VEC_STORE_LANE -%token VEC_CONST VEC_UNARY VEC_BINARY VEC_TERNARY VEC_TEST -%token VEC_SHIFT VEC_BITMASK VEC_SHUFFLE -%token VEC_EXTRACT VEC_REPLACE +%token Memory.offset -> Ast.instr'> VEC_LOAD VEC_STORE +%token Memory.offset -> int -> Ast.instr'> VEC_LOAD_LANE VEC_STORE_LANE +%token string Source.phrase list -> Source.region -> Ast.instr' * Values.vec> VEC_CONST +%token VEC_UNARY VEC_BINARY VEC_TERNARY VEC_TEST +%token VEC_SHIFT VEC_BITMASK VEC_SPLAT +%token VEC_SHUFFLE +%token Ast.instr'> VEC_EXTRACT VEC_REPLACE %token FUNC START TYPE PARAM RESULT LOCAL GLOBAL %token TABLE ELEM MEMORY DATA DECLARE OFFSET ITEM IMPORT EXPORT %token MODULE BIN QUOTE %token SCRIPT REGISTER INVOKE GET -%token ASSERT_MALFORMED ASSERT_INVALID ASSERT_SOFT_INVALID ASSERT_UNLINKABLE +%token ASSERT_MALFORMED ASSERT_INVALID ASSERT_UNLINKABLE %token ASSERT_RETURN ASSERT_TRAP ASSERT_EXHAUSTION -%token NAN +%token NAN %token INPUT OUTPUT %token EOF -%token NAT -%token INT -%token FLOAT -%token STRING -%token VAR -%token NUM_TYPE -%token VEC_TYPE -%token Ast.instr' * Values.num> CONST -%token string Source.phrase list -> Source.region -> Ast.instr' * Values.vec> VEC_CONST -%token UNARY -%token BINARY -%token TEST -%token COMPARE -%token CONVERT -%token Memory.offset -> Ast.instr'> LOAD -%token Memory.offset -> Ast.instr'> STORE -%token Memory.offset -> Ast.instr'> VEC_LOAD -%token Memory.offset -> Ast.instr'> VEC_STORE -%token Memory.offset -> int -> Ast.instr'> VEC_LOAD_LANE -%token Memory.offset -> int -> Ast.instr'> VEC_STORE_LANE -%token VEC_UNARY -%token VEC_BINARY -%token VEC_TERNARY -%token VEC_TEST -%token VEC_SHIFT -%token VEC_BITMASK -%token VEC_SPLAT -%token Ast.instr'> VEC_EXTRACT -%token Ast.instr'> VEC_REPLACE -%token OFFSET_EQ_NAT -%token ALIGN_EQ_NAT -%token VEC_SHAPE - -%token NAN - -%nonassoc LOW -%nonassoc VAR - %start script script1 module1 %type script %type script1 @@ -367,7 +337,7 @@ bind_var : | VAR { $1 @@ at () } labeling_opt : - | /* empty */ %prec LOW + | /* empty */ { fun c xs -> List.iter (fun x -> error x.at "mismatching label") xs; anon_label c } @@ -378,7 +348,7 @@ labeling_opt : bind_label c $1 } labeling_end_opt : - | /* empty */ %prec LOW { [] } + | /* empty */ { [] } | bind_var { [$1] } offset_opt :