diff --git a/Fasto/CodeGen.fs b/Fasto/CodeGen.fs index d4dc31d..b46144b 100644 --- a/Fasto/CodeGen.fs +++ b/Fasto/CodeGen.fs @@ -194,8 +194,10 @@ let rec compileExp (e : TypedExp) [ Mips.LUI (place, n / 65536) ; Mips.ORI (place, place, n % 65536) ] | Constant (BoolVal p, _) -> - (* TODO project task 1: represent `true`/`false` values as `1`/`0` *) - failwith "Unimplemented code generation of boolean constants" + match p with + | true -> [Mips.LI (place, 1)] + | false -> [Mips.LI (place, 0)] + | Constant (CharVal c, pos) -> [ Mips.LI (place, int c) ] (* Create/return a label here, collect all string literals of the program @@ -263,17 +265,30 @@ let rec compileExp (e : TypedExp) version, but remember to come back and clean it up later. `Not` and `Negate` are simpler; you can use `Mips.XORI` for `Not` *) - | Times (_, _, _) -> - failwith "Unimplemented code generation of multiplication" + | Times (e1, e2, pos) -> + let t1 = newReg "times_L" + let t2 = newReg "times_R" + let code1 = compileExp e1 vtable t1 + let code2 = compileExp e2 vtable t2 + code1 @ code2 @ [Mips.MUL (place,t1,t2)] - | Divide (_, _, _) -> - failwith "Unimplemented code generation of division" + | Divide (e1, e2, pos) -> + let t1 = newReg "divide_L" + let t2 = newReg "divide_R" + let code1 = compileExp e1 vtable t1 + let code2 = compileExp e2 vtable t2 + code1 @ code2 @ [Mips.DIV (place,t1,t2)] - | Not (_, _) -> - failwith "Unimplemented code generation of not" + | Not (e, pos) -> + let t = newReg "not_R" + let code = compileExp e vtable t + code @ [Mips.XORI (place,t,0)] - | Negate (_, _) -> - failwith "Unimplemented code generation of negate" + | Negate (e, pos) -> + let t = newReg "negate_R" + let R0 = Mips.RN 0 + let code = compileExp e vtable t + code @ [Mips.SUB (place,R0,t)] | Let (dec, e1, pos) -> let (code1, vtable1) = compileDec dec vtable @@ -389,11 +404,19 @@ let rec compileExp (e : TypedExp) in `e1 || e2` if the execution of `e1` will evaluate to `true` then the code of `e2` must not be executed. Similarly for `And` (&&). *) - | And (_, _, _) -> - failwith "Unimplemented code generation of &&" + | And (e1, e2, pos) -> + let R0 = Mips.RS "0" + let label = newLab "false" + let code1 = compileExp e1 vtable place + let code2 = compileExp e2 vtable place + code1 @ [Mips.BEQ (place, R0, label)] @ code2 @ [Mips.LABEL label] - | Or (_, _, _) -> - failwith "Unimplemented code generation of ||" + | Or (e1, e2, pos) -> + let R0 = Mips.RS "0" + let label = newLab "true" + let code1 = compileExp e1 vtable place + let code2 = compileExp e2 vtable place + code1 @ [Mips.BNE (place, R0, label)] @ code2 @ [Mips.LABEL label] (* Indexing: 1. generate code to compute the index diff --git a/Fasto/Interpreter.fs b/Fasto/Interpreter.fs index 4d4ae4b..0b20fd5 100644 --- a/Fasto/Interpreter.fs +++ b/Fasto/Interpreter.fs @@ -144,18 +144,55 @@ let rec evalExp (e : UntypedExp, vtab : VarTable, ftab : FunTable) : Value = e.g., `And (e1, e2, pos)` should not evaluate `e2` if `e1` already evaluates to false. *) - | Times(_, _, _) -> - failwith "Unimplemented interpretation of multiplication" - | Divide(_, _, _) -> - failwith "Unimplemented interpretation of division" - | And (_, _, _) -> - failwith "Unimplemented interpretation of &&" - | Or (_, _, _) -> - failwith "Unimplemented interpretation of ||" - | Not(_, _) -> - failwith "Unimplemented interpretation of not" - | Negate(_, _) -> - failwith "Unimplemented interpretation of negate" + | Times(e1, e2, pos) -> + let res1 = evalExp(e1, vtab, ftab) + let res2 = evalExp(e2, vtab, ftab) + match (res1, res2) with + | (IntVal n1, IntVal n2) -> IntVal (n1*n2) + | (IntVal _, _) -> reportWrongType "right operand of *" Int res2 (expPos e2) + | (_, _) -> reportWrongType "left operand of *" Int res1 (expPos e1) + | Divide(e1, e2, pos) -> + let res1 = evalExp(e1, vtab, ftab) + let res2 = evalExp(e2, vtab, ftab) + match (res1, res2) with + | (IntVal n1, IntVal n2) -> + if (n2 = 0) then + raise (MyError("division by 0 error", pos)) + else IntVal (n1/n2) + | (IntVal _, _) -> reportWrongType "right operand of /" Int res2 (expPos e2) + | (_, _) -> reportWrongType "left operand of /" Int res1 (expPos e1) + | And (e1, e2, pos) -> + let res1 = evalExp(e1, vtab, ftab) + match res1 with + | BoolVal false -> BoolVal false + | BoolVal true -> + let res2 = evalExp(e2, vtab, ftab) + match res2 with + | BoolVal p -> BoolVal p + | _ -> reportWrongType "right operand of *" Bool res1 (expPos e1) + | _ -> reportWrongType "left operand of *" Bool res1 (expPos e1) + + | Or (e1, e2, pos) -> + let res1 = evalExp(e1, vtab, ftab) + match res1 with + | BoolVal true -> BoolVal true + | BoolVal false -> + let res2 = evalExp(e2, vtab, ftab) + match res2 with + | BoolVal p -> BoolVal p + | _ -> reportWrongType "right operand of *" Bool res1 (expPos e1) + | _ -> reportWrongType "left operand of *" Bool res1 (expPos e1) + + | Not(e, pos) -> + let res = evalExp(e, vtab, ftab) + match res with + | BoolVal p -> BoolVal (not p) + | _ -> reportWrongType "operand of *" Bool res (expPos e) + | Negate(e, pos) -> + let res = evalExp(e, vtab, ftab) + match res with + | IntVal i -> IntVal (0-i) + | _ -> reportWrongType "operand of *" Int res (expPos e) | Equal(e1, e2, pos) -> let r1 = evalExp(e1, vtab, ftab) let r2 = evalExp(e2, vtab, ftab) @@ -248,8 +285,14 @@ let rec evalExp (e : UntypedExp, vtab : VarTable, ftab : FunTable) : Value = the value of `a`; otherwise raise an error (containing a meaningful message). *) - | Replicate (_, _, _, _) -> - failwith "Unimplemented interpretation of replicate" + | Replicate (narg, aarg, _, pos) -> + let n = evalExp(narg, vtab, ftab) + let a = evalExp(aarg, vtab, ftab) + match n with + | IntVal size when (size >= 0) -> + let a_array = List.replicate size a + ArrayVal (a_array, valueType a) + | _ -> reportWrongType "argument of \"Replicate\"" Int n pos (* TODO project task 2: `filter(p, arr)` pattern match the implementation of map: @@ -259,15 +302,34 @@ let rec evalExp (e : UntypedExp, vtab : VarTable, ftab : FunTable) : Value = under predicate `p`, i.e., `p(a) = true`; - create an `ArrayVal` from the (list) result of the previous step. *) - | Filter (_, _, _, _) -> - failwith "Unimplemented interpretation of filter" + | Filter (farg, arrayarg, _, pos) -> + let arr = evalExp(arrayarg, vtab, ftab) + match arr with + | ArrayVal (a_arr, a_type) -> + let new_array = (List.filter (fun x -> + let x_value = evalFunArg (farg, vtab, ftab, pos, [x]) + match x_value with + | BoolVal p -> p + | _ -> reportWrongType "argument of \"Filter\"" Bool x_value pos + ) a_arr) + ArrayVal (new_array, a_type) + | _ -> reportWrongType "argument of \"Filter\"" Int arr pos + (* TODO project task 2: `scan(f, ne, arr)` Implementation similar to reduce, except that it produces an array of the same type and length to the input array `arr`. *) - | Scan (_, _, _, _, _) -> - failwith "Unimplemented interpretation of scan" + | Scan (farg, ne, arrayexp, _, pos) -> + let arr = evalExp(arrayexp, vtab, ftab) + let init_e = evalExp(ne, vtab, ftab) + match arr with + | ArrayVal (a_arr, a_type) -> + let new_array = (List.scan (fun e x -> + evalFunArg (farg, vtab, ftab, pos, [e;x]) + ) init_e a_arr) + ArrayVal (List.tail new_array, a_type) + | _ -> reportWrongType "argument of \"Scan\"" Int arr pos | Read (t,p) -> let str = Console.ReadLine() diff --git a/Fasto/Lexer.fs b/Fasto/Lexer.fs index 8c007ee..204e558 100644 --- a/Fasto/Lexer.fs +++ b/Fasto/Lexer.fs @@ -54,36 +54,46 @@ let keyword (s, pos) = | "reduce" -> Parser.REDUCE pos | "read" -> Parser.READ pos | "write" -> Parser.WRITE pos + +(* added: *) + | "not" -> Parser.NOT pos + | "true" -> Parser.BOOLVAL (true, pos) + | "false" -> Parser.BOOLVAL (false, pos) + + | "replicate" -> Parser.REPLICATE pos + | "scan" -> Parser.SCAN pos + | "filter" -> Parser.FILTER pos + | _ -> Parser.ID (s, pos) -# 60 "Lexer.fs" +# 70 "Lexer.fs" let trans : uint16[] array = [| (* State 0 *) - [|21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 1us; 2us; 21us; 2us; 1us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 1us; 21us; 8us; 21us; 21us; 21us; 21us; 7us; 13us; 14us; 21us; 9us; 19us; 10us; 21us; 3us; 4us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 21us; 21us; 12us; 11us; 21us; 21us; 21us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 15us; 21us; 16us; 21us; 21us; 21us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 17us; 21us; 18us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 20us; |]; + [|26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 1us; 2us; 26us; 2us; 1us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 1us; 26us; 8us; 26us; 26us; 26us; 23us; 7us; 13us; 14us; 20us; 9us; 19us; 10us; 26us; 3us; 4us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 26us; 24us; 12us; 11us; 26us; 26us; 26us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 15us; 26us; 16us; 26us; 26us; 26us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 17us; 22us; 18us; 21us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 25us; |]; (* State 1 *) - [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 34us; 65535us; 65535us; 65535us; 34us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 34us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 41us; 65535us; 65535us; 65535us; 41us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 41us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; (* State 2 *) [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; (* State 3 *) - [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 32us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 39us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; (* State 4 *) [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; (* State 5 *) - [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; (* State 6 *) - [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 65535us; 65535us; 65535us; 65535us; 30us; 65535us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 65535us; 65535us; 65535us; 65535us; 37us; 65535us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; (* State 7 *) - [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 27us; 27us; 65535us; 27us; 27us; 27us; 27us; 65535us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 28us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 34us; 34us; 65535us; 34us; 34us; 34us; 34us; 65535us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 35us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; (* State 8 *) - [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 25us; 25us; 24us; 25us; 25us; 25us; 25us; 65535us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 26us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 32us; 32us; 31us; 32us; 32us; 32us; 32us; 65535us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 33us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; (* State 9 *) [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; (* State 10 *) [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; (* State 11 *) - [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 23us; 22us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 30us; 29us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; (* State 12 *) [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; (* State 13 *) @@ -105,162 +115,206 @@ let trans : uint16[] array = (* State 21 *) [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; (* State 22 *) - [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 28us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; (* State 23 *) - [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 27us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; (* State 24 *) [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; (* State 25 *) - [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 25us; 25us; 24us; 25us; 25us; 25us; 25us; 65535us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 26us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; (* State 26 *) - [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 25us; 65535us; 65535us; 65535us; 65535us; 25us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 25us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 25us; 65535us; 65535us; 65535us; 65535us; 65535us; 25us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; (* State 27 *) - [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 29us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; (* State 28 *) - [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 27us; 65535us; 65535us; 65535us; 65535us; 27us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 27us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 27us; 65535us; 65535us; 65535us; 65535us; 65535us; 27us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; (* State 29 *) [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; (* State 30 *) - [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 65535us; 65535us; 65535us; 65535us; 30us; 65535us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; (* State 31 *) - [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; (* State 32 *) - [|33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 65535us; 33us; 65535us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 65535us; |]; + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 32us; 32us; 31us; 32us; 32us; 32us; 32us; 65535us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 33us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 32us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; (* State 33 *) - [|33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 65535us; 33us; 65535us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 65535us; |]; + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 32us; 65535us; 65535us; 65535us; 65535us; 32us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 32us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 32us; 65535us; 65535us; 65535us; 65535us; 65535us; 32us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; (* State 34 *) - [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 34us; 65535us; 65535us; 65535us; 34us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 34us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 35 *) + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 34us; 65535us; 65535us; 65535us; 65535us; 34us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 34us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 34us; 65535us; 65535us; 65535us; 65535us; 65535us; 34us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 36 *) + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 37 *) + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 65535us; 65535us; 65535us; 65535us; 37us; 65535us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 37us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 38 *) + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 39 *) + [|40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 65535us; 40us; 65535us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 65535us; |]; + (* State 40 *) + [|40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 65535us; 40us; 65535us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 65535us; |]; + (* State 41 *) + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 41us; 65535us; 65535us; 65535us; 41us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 41us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; |] -let actions : uint16[] = [|65535us; 0us; 1us; 21us; 3us; 3us; 4us; 21us; 21us; 7us; 8us; 11us; 12us; 13us; 14us; 15us; 16us; 17us; 18us; 19us; 20us; 21us; 9us; 10us; 6us; 65535us; 65535us; 65535us; 65535us; 5us; 4us; 3us; 2us; 2us; 0us; |] +let actions : uint16[] = [|65535us; 0us; 1us; 21us; 3us; 3us; 4us; 27us; 27us; 7us; 8us; 11us; 12us; 13us; 14us; 15us; 16us; 17us; 18us; 19us; 20us; 22us; 27us; 27us; 25us; 26us; 27us; 24us; 23us; 9us; 10us; 6us; 65535us; 65535us; 65535us; 65535us; 5us; 4us; 3us; 2us; 2us; 0us; |] let _fslex_tables = FSharp.Text.Lexing.AsciiTables.Create(trans,actions) let rec _fslex_dummy () = _fslex_dummy() // Rule Token and Token lexbuf = match _fslex_tables.Interpret(0,lexbuf) with | 0 -> ( -# 78 "Lexer.fsl" +# 88 "Lexer.fsl" Token lexbuf -# 143 "Lexer.fs" +# 167 "Lexer.fs" ) | 1 -> ( -# 79 "Lexer.fsl" +# 89 "Lexer.fsl" currentLine <- currentLine + 1; lineStartPos <- lexbuf.StartPos.pos_cnum :: lineStartPos; Token lexbuf -# 151 "Lexer.fs" +# 175 "Lexer.fs" ) | 2 -> ( -# 83 "Lexer.fsl" +# 93 "Lexer.fsl" Token lexbuf -# 156 "Lexer.fs" +# 180 "Lexer.fs" ) | 3 -> ( -# 85 "Lexer.fsl" +# 95 "Lexer.fsl" Parser.NUM ( int (Encoding.UTF8.GetString(lexbuf.Lexeme)) , getPos lexbuf ) -# 164 "Lexer.fs" +# 188 "Lexer.fs" ) | 4 -> ( -# 90 "Lexer.fsl" +# 100 "Lexer.fsl" keyword ( Encoding.UTF8.GetString(lexbuf.Lexeme) , getPos lexbuf ) -# 170 "Lexer.fs" +# 194 "Lexer.fs" ) | 5 -> ( -# 93 "Lexer.fsl" +# 103 "Lexer.fsl" let str0 = Encoding.UTF8.GetString(lexbuf.Lexeme) let str1 = str0.Substring (1, (String.length str0) - 2) let str2 = AbSyn.fromCString str1 Parser.CHARLIT (str2.Chars(0), getPos lexbuf) -# 179 "Lexer.fs" +# 203 "Lexer.fs" ) | 6 -> ( -# 99 "Lexer.fsl" +# 109 "Lexer.fsl" let str0 = Encoding.UTF8.GetString(lexbuf.Lexeme) let str1 = str0.Substring (1, (String.length str0) - 2) Parser.STRINGLIT (AbSyn.fromCString str1, getPos lexbuf) -# 188 "Lexer.fs" +# 212 "Lexer.fs" ) | 7 -> ( -# 104 "Lexer.fsl" +# 114 "Lexer.fsl" Parser.PLUS (getPos lexbuf) -# 193 "Lexer.fs" +# 217 "Lexer.fs" ) | 8 -> ( -# 105 "Lexer.fsl" +# 115 "Lexer.fsl" Parser.MINUS (getPos lexbuf) -# 198 "Lexer.fs" +# 222 "Lexer.fs" ) | 9 -> ( -# 106 "Lexer.fsl" +# 116 "Lexer.fsl" Parser.ARROW (getPos lexbuf) -# 203 "Lexer.fs" +# 227 "Lexer.fs" ) | 10 -> ( -# 107 "Lexer.fsl" +# 117 "Lexer.fsl" Parser.DEQ (getPos lexbuf) -# 208 "Lexer.fs" +# 232 "Lexer.fs" ) | 11 -> ( -# 108 "Lexer.fsl" +# 118 "Lexer.fsl" Parser.EQ (getPos lexbuf) -# 213 "Lexer.fs" +# 237 "Lexer.fs" ) | 12 -> ( -# 109 "Lexer.fsl" +# 119 "Lexer.fsl" Parser.LTH (getPos lexbuf) -# 218 "Lexer.fs" +# 242 "Lexer.fs" ) | 13 -> ( -# 110 "Lexer.fsl" +# 120 "Lexer.fsl" Parser.LPAR (getPos lexbuf) -# 223 "Lexer.fs" +# 247 "Lexer.fs" ) | 14 -> ( -# 111 "Lexer.fsl" +# 121 "Lexer.fsl" Parser.RPAR (getPos lexbuf) -# 228 "Lexer.fs" +# 252 "Lexer.fs" ) | 15 -> ( -# 112 "Lexer.fsl" +# 122 "Lexer.fsl" Parser.LBRACKET (getPos lexbuf) -# 233 "Lexer.fs" +# 257 "Lexer.fs" ) | 16 -> ( -# 113 "Lexer.fsl" +# 123 "Lexer.fsl" Parser.RBRACKET (getPos lexbuf) -# 238 "Lexer.fs" +# 262 "Lexer.fs" ) | 17 -> ( -# 114 "Lexer.fsl" +# 124 "Lexer.fsl" Parser.LCURLY (getPos lexbuf) -# 243 "Lexer.fs" +# 267 "Lexer.fs" ) | 18 -> ( -# 115 "Lexer.fsl" +# 125 "Lexer.fsl" Parser.RCURLY (getPos lexbuf) -# 248 "Lexer.fs" +# 272 "Lexer.fs" ) | 19 -> ( -# 116 "Lexer.fsl" +# 126 "Lexer.fsl" Parser.COMMA (getPos lexbuf) -# 253 "Lexer.fs" +# 277 "Lexer.fs" ) | 20 -> ( -# 117 "Lexer.fsl" - Parser.EOF (getPos lexbuf) -# 258 "Lexer.fs" +# 128 "Lexer.fsl" + Parser.TIMES (getPos lexbuf) +# 282 "Lexer.fs" ) | 21 -> ( -# 118 "Lexer.fsl" +# 129 "Lexer.fsl" + Parser.DIVIDE (getPos lexbuf) +# 287 "Lexer.fs" + ) + | 22 -> ( +# 130 "Lexer.fsl" + Parser.NUMNEG (getPos lexbuf) +# 292 "Lexer.fs" + ) + | 23 -> ( +# 132 "Lexer.fsl" + Parser.OR (getPos lexbuf) +# 297 "Lexer.fs" + ) + | 24 -> ( +# 133 "Lexer.fsl" + Parser.AND (getPos lexbuf) +# 302 "Lexer.fs" + ) + | 25 -> ( +# 135 "Lexer.fsl" + Parser.SEMICOLON (getPos lexbuf) +# 307 "Lexer.fs" + ) + | 26 -> ( +# 137 "Lexer.fsl" + Parser.EOF (getPos lexbuf) +# 312 "Lexer.fs" + ) + | 27 -> ( +# 138 "Lexer.fsl" lexerError lexbuf "Illegal symbol in input" -# 263 "Lexer.fs" +# 317 "Lexer.fs" ) | _ -> failwith "Token" diff --git a/Fasto/Lexer.fsl b/Fasto/Lexer.fsl index 0d1ff9b..f9373ad 100644 --- a/Fasto/Lexer.fsl +++ b/Fasto/Lexer.fsl @@ -1,5 +1,5 @@ //////////////////////////////////////////////////////////////////// -// TODO: project task 1 +// TODO: project task 1 // implement lexer tokens for the new operators: // multiplication (*), division (/), numerical negation (~), // logical negation (not), logical and (&&), logical or (||), @@ -70,6 +70,16 @@ let keyword (s, pos) = | "reduce" -> Parser.REDUCE pos | "read" -> Parser.READ pos | "write" -> Parser.WRITE pos + +(* added: *) + | "not" -> Parser.NOT pos + | "true" -> Parser.BOOLVAL (true, pos) + | "false" -> Parser.BOOLVAL (false, pos) + + | "replicate" -> Parser.REPLICATE pos + | "scan" -> Parser.SCAN pos + | "filter" -> Parser.FILTER pos + | _ -> Parser.ID (s, pos) } @@ -114,5 +124,15 @@ rule Token = parse | '{' { Parser.LCURLY (getPos lexbuf) } | '}' { Parser.RCURLY (getPos lexbuf) } | ',' { Parser.COMMA (getPos lexbuf) } + + | '*' { Parser.TIMES (getPos lexbuf) } + | '/' { Parser.DIVIDE (getPos lexbuf) } + | '~' { Parser.NUMNEG (getPos lexbuf) } + + | "||" { Parser.OR (getPos lexbuf) } + | "&&" { Parser.AND (getPos lexbuf) } + + | ';' { Parser.SEMICOLON (getPos lexbuf) } + | eof { Parser.EOF (getPos lexbuf) } | _ { lexerError lexbuf "Illegal symbol in input" } diff --git a/Fasto/Parser.fs b/Fasto/Parser.fs index 97e4581..1d7a426 100644 --- a/Fasto/Parser.fs +++ b/Fasto/Parser.fs @@ -26,6 +26,16 @@ let parse_error_rich = # 26 "Parser.fs" // This type is the type of tokens accepted by the parser type token = + | FILTER of (Position) + | SCAN of (Position) + | REPLICATE of (Position) + | BOOLVAL of (bool * Position) + | NOT of (Position) + | AND of (Position) + | OR of (Position) + | TIMES of (Position) + | DIVIDE of (Position) + | NUMNEG of (Position) | LPAR of (Position) | RPAR of (Position) | LBRACKET of (Position) @@ -64,6 +74,16 @@ type token = | NUM of (int * Position) // This type is used to give symbolic names to token indexes, useful for error messages type tokenId = + | TOKEN_FILTER + | TOKEN_SCAN + | TOKEN_REPLICATE + | TOKEN_BOOLVAL + | TOKEN_NOT + | TOKEN_AND + | TOKEN_OR + | TOKEN_TIMES + | TOKEN_DIVIDE + | TOKEN_NUMNEG | TOKEN_LPAR | TOKEN_RPAR | TOKEN_LBRACKET @@ -112,90 +132,111 @@ type nonTerminalId = | NONTERM_Params | NONTERM_BinOp | NONTERM_Exp + | NONTERM_MultiLet | NONTERM_Exps | NONTERM_FunArg // This function maps tokens to integer indexes let tagOfToken (t:token) = match t with - | LPAR _ -> 0 - | RPAR _ -> 1 - | LBRACKET _ -> 2 - | RBRACKET _ -> 3 - | LCURLY _ -> 4 - | RCURLY _ -> 5 - | FUN _ -> 6 - | FN _ -> 7 - | COMMA _ -> 8 - | SEMICOLON _ -> 9 - | READ _ -> 10 - | WRITE _ -> 11 - | DEQ _ -> 12 - | LTH _ -> 13 - | EQ _ -> 14 - | OP _ -> 15 - | MAP _ -> 16 - | REDUCE _ -> 17 - | IOTA _ -> 18 - | ARROW _ -> 19 - | PLUS _ -> 20 - | MINUS _ -> 21 - | LESS _ -> 22 - | INT _ -> 23 - | CHAR _ -> 24 - | BOOL _ -> 25 - | IF _ -> 26 - | THEN _ -> 27 - | ELSE _ -> 28 - | LET _ -> 29 - | IN _ -> 30 - | EOF _ -> 31 - | ID _ -> 32 - | STRINGLIT _ -> 33 - | CHARLIT _ -> 34 - | NUM _ -> 35 + | FILTER _ -> 0 + | SCAN _ -> 1 + | REPLICATE _ -> 2 + | BOOLVAL _ -> 3 + | NOT _ -> 4 + | AND _ -> 5 + | OR _ -> 6 + | TIMES _ -> 7 + | DIVIDE _ -> 8 + | NUMNEG _ -> 9 + | LPAR _ -> 10 + | RPAR _ -> 11 + | LBRACKET _ -> 12 + | RBRACKET _ -> 13 + | LCURLY _ -> 14 + | RCURLY _ -> 15 + | FUN _ -> 16 + | FN _ -> 17 + | COMMA _ -> 18 + | SEMICOLON _ -> 19 + | READ _ -> 20 + | WRITE _ -> 21 + | DEQ _ -> 22 + | LTH _ -> 23 + | EQ _ -> 24 + | OP _ -> 25 + | MAP _ -> 26 + | REDUCE _ -> 27 + | IOTA _ -> 28 + | ARROW _ -> 29 + | PLUS _ -> 30 + | MINUS _ -> 31 + | LESS _ -> 32 + | INT _ -> 33 + | CHAR _ -> 34 + | BOOL _ -> 35 + | IF _ -> 36 + | THEN _ -> 37 + | ELSE _ -> 38 + | LET _ -> 39 + | IN _ -> 40 + | EOF _ -> 41 + | ID _ -> 42 + | STRINGLIT _ -> 43 + | CHARLIT _ -> 44 + | NUM _ -> 45 // This function maps integer indexes to symbolic token ids let tokenTagToTokenId (tokenIdx:int) = match tokenIdx with - | 0 -> TOKEN_LPAR - | 1 -> TOKEN_RPAR - | 2 -> TOKEN_LBRACKET - | 3 -> TOKEN_RBRACKET - | 4 -> TOKEN_LCURLY - | 5 -> TOKEN_RCURLY - | 6 -> TOKEN_FUN - | 7 -> TOKEN_FN - | 8 -> TOKEN_COMMA - | 9 -> TOKEN_SEMICOLON - | 10 -> TOKEN_READ - | 11 -> TOKEN_WRITE - | 12 -> TOKEN_DEQ - | 13 -> TOKEN_LTH - | 14 -> TOKEN_EQ - | 15 -> TOKEN_OP - | 16 -> TOKEN_MAP - | 17 -> TOKEN_REDUCE - | 18 -> TOKEN_IOTA - | 19 -> TOKEN_ARROW - | 20 -> TOKEN_PLUS - | 21 -> TOKEN_MINUS - | 22 -> TOKEN_LESS - | 23 -> TOKEN_INT - | 24 -> TOKEN_CHAR - | 25 -> TOKEN_BOOL - | 26 -> TOKEN_IF - | 27 -> TOKEN_THEN - | 28 -> TOKEN_ELSE - | 29 -> TOKEN_LET - | 30 -> TOKEN_IN - | 31 -> TOKEN_EOF - | 32 -> TOKEN_ID - | 33 -> TOKEN_STRINGLIT - | 34 -> TOKEN_CHARLIT - | 35 -> TOKEN_NUM - | 38 -> TOKEN_end_of_input - | 36 -> TOKEN_error + | 0 -> TOKEN_FILTER + | 1 -> TOKEN_SCAN + | 2 -> TOKEN_REPLICATE + | 3 -> TOKEN_BOOLVAL + | 4 -> TOKEN_NOT + | 5 -> TOKEN_AND + | 6 -> TOKEN_OR + | 7 -> TOKEN_TIMES + | 8 -> TOKEN_DIVIDE + | 9 -> TOKEN_NUMNEG + | 10 -> TOKEN_LPAR + | 11 -> TOKEN_RPAR + | 12 -> TOKEN_LBRACKET + | 13 -> TOKEN_RBRACKET + | 14 -> TOKEN_LCURLY + | 15 -> TOKEN_RCURLY + | 16 -> TOKEN_FUN + | 17 -> TOKEN_FN + | 18 -> TOKEN_COMMA + | 19 -> TOKEN_SEMICOLON + | 20 -> TOKEN_READ + | 21 -> TOKEN_WRITE + | 22 -> TOKEN_DEQ + | 23 -> TOKEN_LTH + | 24 -> TOKEN_EQ + | 25 -> TOKEN_OP + | 26 -> TOKEN_MAP + | 27 -> TOKEN_REDUCE + | 28 -> TOKEN_IOTA + | 29 -> TOKEN_ARROW + | 30 -> TOKEN_PLUS + | 31 -> TOKEN_MINUS + | 32 -> TOKEN_LESS + | 33 -> TOKEN_INT + | 34 -> TOKEN_CHAR + | 35 -> TOKEN_BOOL + | 36 -> TOKEN_IF + | 37 -> TOKEN_THEN + | 38 -> TOKEN_ELSE + | 39 -> TOKEN_LET + | 40 -> TOKEN_IN + | 41 -> TOKEN_EOF + | 42 -> TOKEN_ID + | 43 -> TOKEN_STRINGLIT + | 44 -> TOKEN_CHARLIT + | 45 -> TOKEN_NUM + | 48 -> TOKEN_end_of_input + | 46 -> TOKEN_error | _ -> failwith "tokenTagToTokenId: bad token" /// This function maps production indexes returned in syntax errors to strings representing the non terminal that would be produced by that production @@ -235,19 +276,41 @@ let prodIdxToNonTerminal (prodIdx:int) = | 31 -> NONTERM_Exp | 32 -> NONTERM_Exp | 33 -> NONTERM_Exp - | 34 -> NONTERM_Exps - | 35 -> NONTERM_Exps - | 36 -> NONTERM_FunArg - | 37 -> NONTERM_FunArg - | 38 -> NONTERM_FunArg + | 34 -> NONTERM_Exp + | 35 -> NONTERM_Exp + | 36 -> NONTERM_Exp + | 37 -> NONTERM_Exp + | 38 -> NONTERM_Exp + | 39 -> NONTERM_Exp + | 40 -> NONTERM_Exp + | 41 -> NONTERM_Exp + | 42 -> NONTERM_Exp + | 43 -> NONTERM_Exp + | 44 -> NONTERM_MultiLet + | 45 -> NONTERM_MultiLet + | 46 -> NONTERM_Exps + | 47 -> NONTERM_Exps + | 48 -> NONTERM_FunArg + | 49 -> NONTERM_FunArg + | 50 -> NONTERM_FunArg | _ -> failwith "prodIdxToNonTerminal: bad production index" -let _fsyacc_endOfInputTag = 38 -let _fsyacc_tagOfErrorTerminal = 36 +let _fsyacc_endOfInputTag = 48 +let _fsyacc_tagOfErrorTerminal = 46 // This function gets the name of a token as a string let token_to_string (t:token) = match t with + | FILTER _ -> "FILTER" + | SCAN _ -> "SCAN" + | REPLICATE _ -> "REPLICATE" + | BOOLVAL _ -> "BOOLVAL" + | NOT _ -> "NOT" + | AND _ -> "AND" + | OR _ -> "OR" + | TIMES _ -> "TIMES" + | DIVIDE _ -> "DIVIDE" + | NUMNEG _ -> "NUMNEG" | LPAR _ -> "LPAR" | RPAR _ -> "RPAR" | LBRACKET _ -> "LBRACKET" @@ -288,6 +351,16 @@ let token_to_string (t:token) = // This function gets the data carried by a token as an object let _fsyacc_dataOfToken (t:token) = match t with + | FILTER _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | SCAN _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | REPLICATE _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | BOOLVAL _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | NOT _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | AND _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | OR _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | TIMES _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | DIVIDE _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | NUMNEG _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x | LPAR _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x | RPAR _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x | LBRACKET _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x @@ -324,18 +397,18 @@ let _fsyacc_dataOfToken (t:token) = | STRINGLIT _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x | CHARLIT _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x | NUM _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x -let _fsyacc_gotos = [| 0us; 65535us; 1us; 65535us; 0us; 1us; 2us; 65535us; 0us; 2us; 5us; 6us; 1us; 65535us; 4us; 5us; 7us; 65535us; 4us; 7us; 9us; 23us; 20us; 21us; 25us; 23us; 68us; 69us; 104us; 105us; 106us; 23us; 3us; 65535us; 9us; 10us; 25us; 26us; 106us; 109us; 1us; 65535us; 88us; 89us; 25us; 65535us; 12us; 13us; 15us; 16us; 32us; 53us; 56us; 35us; 57us; 36us; 58us; 37us; 59us; 38us; 60us; 39us; 61us; 40us; 62us; 41us; 63us; 53us; 72us; 42us; 75us; 43us; 80us; 44us; 85us; 45us; 86us; 46us; 90us; 47us; 91us; 48us; 93us; 49us; 97us; 50us; 98us; 51us; 99us; 52us; 101us; 53us; 108us; 54us; 111us; 55us; 3us; 65535us; 32us; 33us; 63us; 64us; 101us; 102us; 2us; 65535us; 78us; 79us; 83us; 84us; |] -let _fsyacc_sparseGotoTableRowOffsets = [|0us; 1us; 3us; 6us; 8us; 16us; 20us; 22us; 48us; 52us; |] -let _fsyacc_stateToProdIdxsTableElements = [| 1us; 0us; 1us; 0us; 1us; 1us; 1us; 1us; 2us; 2us; 3us; 2us; 2us; 3us; 1us; 2us; 2us; 4us; 5us; 2us; 4us; 5us; 2us; 4us; 5us; 1us; 4us; 1us; 4us; 1us; 4us; 5us; 4us; 18us; 19us; 20us; 21us; 1us; 5us; 1us; 5us; 5us; 5us; 18us; 19us; 20us; 21us; 1us; 6us; 1us; 7us; 1us; 8us; 1us; 9us; 1us; 9us; 1us; 9us; 2us; 10us; 11us; 2us; 10us; 11us; 1us; 10us; 1us; 10us; 1us; 12us; 1us; 13us; 1us; 14us; 4us; 15us; 23us; 24us; 33us; 1us; 16us; 1us; 17us; 1us; 17us; 1us; 17us; 5us; 18us; 18us; 19us; 20us; 21us; 5us; 18us; 19us; 19us; 20us; 21us; 5us; 18us; 19us; 20us; 20us; 21us; 5us; 18us; 19us; 20us; 21us; 21us; 5us; 18us; 19us; 20us; 21us; 22us; 5us; 18us; 19us; 20us; 21us; 22us; 5us; 18us; 19us; 20us; 21us; 22us; 5us; 18us; 19us; 20us; 21us; 26us; 5us; 18us; 19us; 20us; 21us; 27us; 5us; 18us; 19us; 20us; 21us; 28us; 5us; 18us; 19us; 20us; 21us; 29us; 5us; 18us; 19us; 20us; 21us; 29us; 5us; 18us; 19us; 20us; 21us; 30us; 5us; 18us; 19us; 20us; 21us; 30us; 5us; 18us; 19us; 20us; 21us; 31us; 5us; 18us; 19us; 20us; 21us; 32us; 5us; 18us; 19us; 20us; 21us; 32us; 5us; 18us; 19us; 20us; 21us; 33us; 6us; 18us; 19us; 20us; 21us; 34us; 35us; 5us; 18us; 19us; 20us; 21us; 37us; 5us; 18us; 19us; 20us; 21us; 38us; 1us; 18us; 1us; 19us; 1us; 20us; 1us; 21us; 1us; 22us; 1us; 22us; 1us; 22us; 2us; 23us; 24us; 1us; 23us; 1us; 23us; 1us; 24us; 1us; 25us; 1us; 25us; 1us; 25us; 1us; 25us; 1us; 26us; 1us; 26us; 1us; 26us; 1us; 27us; 1us; 27us; 1us; 27us; 1us; 28us; 1us; 28us; 1us; 28us; 1us; 28us; 1us; 28us; 2us; 29us; 30us; 2us; 29us; 30us; 1us; 29us; 1us; 29us; 1us; 29us; 1us; 29us; 1us; 30us; 1us; 30us; 1us; 30us; 1us; 30us; 1us; 30us; 1us; 31us; 1us; 31us; 1us; 32us; 1us; 32us; 1us; 32us; 1us; 32us; 1us; 33us; 1us; 33us; 1us; 34us; 1us; 34us; 1us; 36us; 2us; 37us; 38us; 2us; 37us; 38us; 2us; 37us; 38us; 1us; 37us; 1us; 37us; 1us; 38us; 1us; 38us; 1us; 38us; |] -let _fsyacc_stateToProdIdxsTableRowOffsets = [|0us; 2us; 4us; 6us; 8us; 11us; 14us; 16us; 19us; 22us; 25us; 27us; 29us; 31us; 37us; 39us; 41us; 47us; 49us; 51us; 53us; 55us; 57us; 59us; 62us; 65us; 67us; 69us; 71us; 73us; 75us; 80us; 82us; 84us; 86us; 88us; 94us; 100us; 106us; 112us; 118us; 124us; 130us; 136us; 142us; 148us; 154us; 160us; 166us; 172us; 178us; 184us; 190us; 196us; 203us; 209us; 215us; 217us; 219us; 221us; 223us; 225us; 227us; 229us; 232us; 234us; 236us; 238us; 240us; 242us; 244us; 246us; 248us; 250us; 252us; 254us; 256us; 258us; 260us; 262us; 264us; 266us; 268us; 271us; 274us; 276us; 278us; 280us; 282us; 284us; 286us; 288us; 290us; 292us; 294us; 296us; 298us; 300us; 302us; 304us; 306us; 308us; 310us; 312us; 314us; 317us; 320us; 323us; 325us; 327us; 329us; 331us; |] -let _fsyacc_action_rows = 112 -let _fsyacc_actionTableElements = [|1us; 32768us; 6us; 4us; 0us; 49152us; 1us; 32768us; 31us; 3us; 0us; 16385us; 4us; 32768us; 2us; 20us; 23us; 17us; 24us; 18us; 25us; 19us; 1us; 16387us; 6us; 4us; 0us; 16386us; 1us; 32768us; 32us; 8us; 1us; 32768us; 0us; 9us; 5us; 32768us; 1us; 14us; 2us; 20us; 23us; 17us; 24us; 18us; 25us; 19us; 1us; 32768us; 1us; 11us; 1us; 32768us; 14us; 12us; 13us; 32768us; 0us; 93us; 4us; 32us; 10us; 67us; 11us; 71us; 16us; 77us; 17us; 82us; 18us; 74us; 26us; 60us; 29us; 95us; 32us; 30us; 33us; 31us; 34us; 29us; 35us; 28us; 4us; 16388us; 12us; 58us; 13us; 59us; 20us; 56us; 21us; 57us; 1us; 32768us; 14us; 15us; 13us; 32768us; 0us; 93us; 4us; 32us; 10us; 67us; 11us; 71us; 16us; 77us; 17us; 82us; 18us; 74us; 26us; 60us; 29us; 95us; 32us; 30us; 33us; 31us; 34us; 29us; 35us; 28us; 4us; 16389us; 12us; 58us; 13us; 59us; 20us; 56us; 21us; 57us; 0us; 16390us; 0us; 16391us; 0us; 16392us; 4us; 32768us; 2us; 20us; 23us; 17us; 24us; 18us; 25us; 19us; 1us; 32768us; 3us; 22us; 0us; 16393us; 1us; 32768us; 32us; 24us; 1us; 16395us; 8us; 25us; 4us; 32768us; 2us; 20us; 23us; 17us; 24us; 18us; 25us; 19us; 0us; 16394us; 0us; 16396us; 0us; 16397us; 0us; 16398us; 2us; 16399us; 0us; 63us; 2us; 99us; 0us; 16400us; 13us; 32768us; 0us; 93us; 4us; 32us; 10us; 67us; 11us; 71us; 16us; 77us; 17us; 82us; 18us; 74us; 26us; 60us; 29us; 95us; 32us; 30us; 33us; 31us; 34us; 29us; 35us; 28us; 1us; 32768us; 5us; 34us; 0us; 16401us; 0us; 16402us; 0us; 16403us; 2us; 16404us; 20us; 56us; 21us; 57us; 2us; 16405us; 20us; 56us; 21us; 57us; 5us; 32768us; 12us; 58us; 13us; 59us; 20us; 56us; 21us; 57us; 27us; 61us; 5us; 32768us; 12us; 58us; 13us; 59us; 20us; 56us; 21us; 57us; 28us; 62us; 4us; 16406us; 12us; 58us; 13us; 59us; 20us; 56us; 21us; 57us; 5us; 32768us; 1us; 73us; 12us; 58us; 13us; 59us; 20us; 56us; 21us; 57us; 5us; 32768us; 1us; 76us; 12us; 58us; 13us; 59us; 20us; 56us; 21us; 57us; 5us; 32768us; 1us; 81us; 12us; 58us; 13us; 59us; 20us; 56us; 21us; 57us; 5us; 32768us; 8us; 86us; 12us; 58us; 13us; 59us; 20us; 56us; 21us; 57us; 5us; 32768us; 1us; 87us; 12us; 58us; 13us; 59us; 20us; 56us; 21us; 57us; 5us; 32768us; 8us; 91us; 12us; 58us; 13us; 59us; 20us; 56us; 21us; 57us; 5us; 32768us; 1us; 92us; 12us; 58us; 13us; 59us; 20us; 56us; 21us; 57us; 5us; 32768us; 1us; 94us; 12us; 58us; 13us; 59us; 20us; 56us; 21us; 57us; 5us; 32768us; 12us; 58us; 13us; 59us; 20us; 56us; 21us; 57us; 30us; 98us; 4us; 16416us; 12us; 58us; 13us; 59us; 20us; 56us; 21us; 57us; 5us; 32768us; 3us; 100us; 12us; 58us; 13us; 59us; 20us; 56us; 21us; 57us; 5us; 16419us; 8us; 101us; 12us; 58us; 13us; 59us; 20us; 56us; 21us; 57us; 4us; 16421us; 12us; 58us; 13us; 59us; 20us; 56us; 21us; 57us; 4us; 16422us; 12us; 58us; 13us; 59us; 20us; 56us; 21us; 57us; 13us; 32768us; 0us; 93us; 4us; 32us; 10us; 67us; 11us; 71us; 16us; 77us; 17us; 82us; 18us; 74us; 26us; 60us; 29us; 95us; 32us; 30us; 33us; 31us; 34us; 29us; 35us; 28us; 13us; 32768us; 0us; 93us; 4us; 32us; 10us; 67us; 11us; 71us; 16us; 77us; 17us; 82us; 18us; 74us; 26us; 60us; 29us; 95us; 32us; 30us; 33us; 31us; 34us; 29us; 35us; 28us; 13us; 32768us; 0us; 93us; 4us; 32us; 10us; 67us; 11us; 71us; 16us; 77us; 17us; 82us; 18us; 74us; 26us; 60us; 29us; 95us; 32us; 30us; 33us; 31us; 34us; 29us; 35us; 28us; 13us; 32768us; 0us; 93us; 4us; 32us; 10us; 67us; 11us; 71us; 16us; 77us; 17us; 82us; 18us; 74us; 26us; 60us; 29us; 95us; 32us; 30us; 33us; 31us; 34us; 29us; 35us; 28us; 13us; 32768us; 0us; 93us; 4us; 32us; 10us; 67us; 11us; 71us; 16us; 77us; 17us; 82us; 18us; 74us; 26us; 60us; 29us; 95us; 32us; 30us; 33us; 31us; 34us; 29us; 35us; 28us; 13us; 32768us; 0us; 93us; 4us; 32us; 10us; 67us; 11us; 71us; 16us; 77us; 17us; 82us; 18us; 74us; 26us; 60us; 29us; 95us; 32us; 30us; 33us; 31us; 34us; 29us; 35us; 28us; 13us; 32768us; 0us; 93us; 4us; 32us; 10us; 67us; 11us; 71us; 16us; 77us; 17us; 82us; 18us; 74us; 26us; 60us; 29us; 95us; 32us; 30us; 33us; 31us; 34us; 29us; 35us; 28us; 14us; 32768us; 0us; 93us; 1us; 66us; 4us; 32us; 10us; 67us; 11us; 71us; 16us; 77us; 17us; 82us; 18us; 74us; 26us; 60us; 29us; 95us; 32us; 30us; 33us; 31us; 34us; 29us; 35us; 28us; 1us; 32768us; 1us; 65us; 0us; 16407us; 0us; 16408us; 1us; 32768us; 0us; 68us; 4us; 32768us; 2us; 20us; 23us; 17us; 24us; 18us; 25us; 19us; 1us; 32768us; 1us; 70us; 0us; 16409us; 1us; 32768us; 0us; 72us; 13us; 32768us; 0us; 93us; 4us; 32us; 10us; 67us; 11us; 71us; 16us; 77us; 17us; 82us; 18us; 74us; 26us; 60us; 29us; 95us; 32us; 30us; 33us; 31us; 34us; 29us; 35us; 28us; 0us; 16410us; 1us; 32768us; 0us; 75us; 13us; 32768us; 0us; 93us; 4us; 32us; 10us; 67us; 11us; 71us; 16us; 77us; 17us; 82us; 18us; 74us; 26us; 60us; 29us; 95us; 32us; 30us; 33us; 31us; 34us; 29us; 35us; 28us; 0us; 16411us; 1us; 32768us; 0us; 78us; 2us; 32768us; 7us; 104us; 32us; 103us; 1us; 32768us; 8us; 80us; 13us; 32768us; 0us; 93us; 4us; 32us; 10us; 67us; 11us; 71us; 16us; 77us; 17us; 82us; 18us; 74us; 26us; 60us; 29us; 95us; 32us; 30us; 33us; 31us; 34us; 29us; 35us; 28us; 0us; 16412us; 1us; 32768us; 0us; 83us; 3us; 32768us; 7us; 104us; 15us; 88us; 32us; 103us; 1us; 32768us; 8us; 85us; 13us; 32768us; 0us; 93us; 4us; 32us; 10us; 67us; 11us; 71us; 16us; 77us; 17us; 82us; 18us; 74us; 26us; 60us; 29us; 95us; 32us; 30us; 33us; 31us; 34us; 29us; 35us; 28us; 13us; 32768us; 0us; 93us; 4us; 32us; 10us; 67us; 11us; 71us; 16us; 77us; 17us; 82us; 18us; 74us; 26us; 60us; 29us; 95us; 32us; 30us; 33us; 31us; 34us; 29us; 35us; 28us; 0us; 16413us; 1us; 32768us; 20us; 27us; 1us; 32768us; 8us; 90us; 13us; 32768us; 0us; 93us; 4us; 32us; 10us; 67us; 11us; 71us; 16us; 77us; 17us; 82us; 18us; 74us; 26us; 60us; 29us; 95us; 32us; 30us; 33us; 31us; 34us; 29us; 35us; 28us; 13us; 32768us; 0us; 93us; 4us; 32us; 10us; 67us; 11us; 71us; 16us; 77us; 17us; 82us; 18us; 74us; 26us; 60us; 29us; 95us; 32us; 30us; 33us; 31us; 34us; 29us; 35us; 28us; 0us; 16414us; 13us; 32768us; 0us; 93us; 4us; 32us; 10us; 67us; 11us; 71us; 16us; 77us; 17us; 82us; 18us; 74us; 26us; 60us; 29us; 95us; 32us; 30us; 33us; 31us; 34us; 29us; 35us; 28us; 0us; 16415us; 1us; 32768us; 32us; 96us; 1us; 32768us; 14us; 97us; 13us; 32768us; 0us; 93us; 4us; 32us; 10us; 67us; 11us; 71us; 16us; 77us; 17us; 82us; 18us; 74us; 26us; 60us; 29us; 95us; 32us; 30us; 33us; 31us; 34us; 29us; 35us; 28us; 13us; 32768us; 0us; 93us; 4us; 32us; 10us; 67us; 11us; 71us; 16us; 77us; 17us; 82us; 18us; 74us; 26us; 60us; 29us; 95us; 32us; 30us; 33us; 31us; 34us; 29us; 35us; 28us; 13us; 32768us; 0us; 93us; 4us; 32us; 10us; 67us; 11us; 71us; 16us; 77us; 17us; 82us; 18us; 74us; 26us; 60us; 29us; 95us; 32us; 30us; 33us; 31us; 34us; 29us; 35us; 28us; 0us; 16417us; 13us; 32768us; 0us; 93us; 4us; 32us; 10us; 67us; 11us; 71us; 16us; 77us; 17us; 82us; 18us; 74us; 26us; 60us; 29us; 95us; 32us; 30us; 33us; 31us; 34us; 29us; 35us; 28us; 0us; 16418us; 0us; 16420us; 4us; 32768us; 2us; 20us; 23us; 17us; 24us; 18us; 25us; 19us; 1us; 32768us; 0us; 106us; 5us; 32768us; 1us; 107us; 2us; 20us; 23us; 17us; 24us; 18us; 25us; 19us; 1us; 32768us; 19us; 108us; 13us; 32768us; 0us; 93us; 4us; 32us; 10us; 67us; 11us; 71us; 16us; 77us; 17us; 82us; 18us; 74us; 26us; 60us; 29us; 95us; 32us; 30us; 33us; 31us; 34us; 29us; 35us; 28us; 1us; 32768us; 1us; 110us; 1us; 32768us; 19us; 111us; 13us; 32768us; 0us; 93us; 4us; 32us; 10us; 67us; 11us; 71us; 16us; 77us; 17us; 82us; 18us; 74us; 26us; 60us; 29us; 95us; 32us; 30us; 33us; 31us; 34us; 29us; 35us; 28us; |] -let _fsyacc_actionTableRowOffsets = [|0us; 2us; 3us; 5us; 6us; 11us; 13us; 14us; 16us; 18us; 24us; 26us; 28us; 42us; 47us; 49us; 63us; 68us; 69us; 70us; 71us; 76us; 78us; 79us; 81us; 83us; 88us; 89us; 90us; 91us; 92us; 95us; 96us; 110us; 112us; 113us; 114us; 115us; 118us; 121us; 127us; 133us; 138us; 144us; 150us; 156us; 162us; 168us; 174us; 180us; 186us; 192us; 197us; 203us; 209us; 214us; 219us; 233us; 247us; 261us; 275us; 289us; 303us; 317us; 332us; 334us; 335us; 336us; 338us; 343us; 345us; 346us; 348us; 362us; 363us; 365us; 379us; 380us; 382us; 385us; 387us; 401us; 402us; 404us; 408us; 410us; 424us; 438us; 439us; 441us; 443us; 457us; 471us; 472us; 486us; 487us; 489us; 491us; 505us; 519us; 533us; 534us; 548us; 549us; 550us; 555us; 557us; 563us; 565us; 579us; 581us; 583us; |] -let _fsyacc_reductionSymbolCounts = [|1us; 2us; 3us; 2us; 7us; 6us; 1us; 1us; 1us; 3us; 4us; 2us; 1us; 1us; 1us; 1us; 1us; 3us; 3us; 3us; 3us; 3us; 6us; 4us; 3us; 4us; 4us; 4us; 6us; 8us; 9us; 3us; 6us; 4us; 3us; 1us; 1us; 6us; 7us; |] -let _fsyacc_productionToNonTerminalTable = [|0us; 1us; 2us; 2us; 3us; 3us; 4us; 4us; 4us; 4us; 5us; 5us; 6us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 8us; 8us; 9us; 9us; 9us; |] -let _fsyacc_immediateActions = [|65535us; 49152us; 65535us; 16385us; 65535us; 65535us; 16386us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 16390us; 16391us; 16392us; 65535us; 65535us; 16393us; 65535us; 65535us; 65535us; 16394us; 16396us; 16397us; 16398us; 65535us; 16400us; 65535us; 65535us; 16401us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 16407us; 16408us; 65535us; 65535us; 65535us; 16409us; 65535us; 65535us; 16410us; 65535us; 65535us; 16411us; 65535us; 65535us; 65535us; 65535us; 16412us; 65535us; 65535us; 65535us; 65535us; 65535us; 16413us; 65535us; 65535us; 65535us; 65535us; 16414us; 65535us; 16415us; 65535us; 65535us; 65535us; 65535us; 65535us; 16417us; 65535us; 16418us; 16420us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |] +let _fsyacc_gotos = [| 0us; 65535us; 1us; 65535us; 0us; 1us; 2us; 65535us; 0us; 2us; 5us; 6us; 1us; 65535us; 4us; 5us; 7us; 65535us; 4us; 7us; 9us; 23us; 20us; 21us; 25us; 23us; 80us; 81us; 143us; 144us; 145us; 23us; 3us; 65535us; 9us; 10us; 25us; 26us; 145us; 148us; 1us; 65535us; 100us; 101us; 37us; 65535us; 12us; 13us; 15us; 16us; 32us; 65us; 68us; 35us; 69us; 36us; 70us; 37us; 71us; 38us; 72us; 39us; 73us; 40us; 74us; 41us; 75us; 65us; 84us; 42us; 87us; 43us; 92us; 44us; 97us; 45us; 98us; 46us; 102us; 47us; 103us; 48us; 106us; 49us; 107us; 50us; 112us; 51us; 117us; 52us; 118us; 53us; 120us; 54us; 124us; 55us; 126us; 56us; 128us; 57us; 129us; 58us; 130us; 59us; 131us; 60us; 132us; 61us; 133us; 62us; 135us; 63us; 138us; 64us; 140us; 65us; 147us; 66us; 150us; 67us; 2us; 65535us; 55us; 125us; 64us; 139us; 3us; 65535us; 32us; 33us; 75us; 76us; 140us; 141us; 4us; 65535us; 90us; 91us; 95us; 96us; 110us; 111us; 115us; 116us; |] +let _fsyacc_sparseGotoTableRowOffsets = [|0us; 1us; 3us; 6us; 8us; 16us; 20us; 22us; 60us; 63us; 67us; |] +let _fsyacc_stateToProdIdxsTableElements = [| 1us; 0us; 1us; 0us; 1us; 1us; 1us; 1us; 2us; 2us; 3us; 2us; 2us; 3us; 1us; 2us; 2us; 4us; 5us; 2us; 4us; 5us; 2us; 4us; 5us; 1us; 4us; 1us; 4us; 1us; 4us; 9us; 4us; 18us; 19us; 20us; 21us; 37us; 38us; 40us; 41us; 1us; 5us; 1us; 5us; 9us; 5us; 18us; 19us; 20us; 21us; 37us; 38us; 40us; 41us; 1us; 6us; 1us; 7us; 1us; 8us; 1us; 9us; 1us; 9us; 1us; 9us; 2us; 10us; 11us; 2us; 10us; 11us; 1us; 10us; 1us; 10us; 1us; 12us; 1us; 13us; 1us; 14us; 4us; 15us; 23us; 24us; 36us; 1us; 16us; 1us; 17us; 1us; 17us; 1us; 17us; 9us; 18us; 18us; 19us; 20us; 21us; 37us; 38us; 40us; 41us; 9us; 18us; 19us; 19us; 20us; 21us; 37us; 38us; 40us; 41us; 9us; 18us; 19us; 20us; 20us; 21us; 37us; 38us; 40us; 41us; 9us; 18us; 19us; 20us; 21us; 21us; 37us; 38us; 40us; 41us; 9us; 18us; 19us; 20us; 21us; 22us; 37us; 38us; 40us; 41us; 9us; 18us; 19us; 20us; 21us; 22us; 37us; 38us; 40us; 41us; 9us; 18us; 19us; 20us; 21us; 22us; 37us; 38us; 40us; 41us; 9us; 18us; 19us; 20us; 21us; 26us; 37us; 38us; 40us; 41us; 9us; 18us; 19us; 20us; 21us; 27us; 37us; 38us; 40us; 41us; 9us; 18us; 19us; 20us; 21us; 28us; 37us; 38us; 40us; 41us; 9us; 18us; 19us; 20us; 21us; 29us; 37us; 38us; 40us; 41us; 9us; 18us; 19us; 20us; 21us; 29us; 37us; 38us; 40us; 41us; 9us; 18us; 19us; 20us; 21us; 30us; 37us; 38us; 40us; 41us; 9us; 18us; 19us; 20us; 21us; 30us; 37us; 38us; 40us; 41us; 9us; 18us; 19us; 20us; 21us; 31us; 37us; 38us; 40us; 41us; 9us; 18us; 19us; 20us; 21us; 31us; 37us; 38us; 40us; 41us; 9us; 18us; 19us; 20us; 21us; 32us; 37us; 38us; 40us; 41us; 9us; 18us; 19us; 20us; 21us; 33us; 37us; 38us; 40us; 41us; 9us; 18us; 19us; 20us; 21us; 33us; 37us; 38us; 40us; 41us; 9us; 18us; 19us; 20us; 21us; 34us; 37us; 38us; 40us; 41us; 9us; 18us; 19us; 20us; 21us; 35us; 37us; 38us; 40us; 41us; 9us; 18us; 19us; 20us; 21us; 36us; 37us; 38us; 40us; 41us; 9us; 18us; 19us; 20us; 21us; 37us; 37us; 38us; 40us; 41us; 9us; 18us; 19us; 20us; 21us; 37us; 38us; 38us; 40us; 41us; 9us; 18us; 19us; 20us; 21us; 37us; 38us; 39us; 40us; 41us; 9us; 18us; 19us; 20us; 21us; 37us; 38us; 40us; 40us; 41us; 9us; 18us; 19us; 20us; 21us; 37us; 38us; 40us; 41us; 41us; 9us; 18us; 19us; 20us; 21us; 37us; 38us; 40us; 41us; 42us; 9us; 18us; 19us; 20us; 21us; 37us; 38us; 40us; 41us; 44us; 9us; 18us; 19us; 20us; 21us; 37us; 38us; 40us; 41us; 45us; 10us; 18us; 19us; 20us; 21us; 37us; 38us; 40us; 41us; 46us; 47us; 9us; 18us; 19us; 20us; 21us; 37us; 38us; 40us; 41us; 49us; 9us; 18us; 19us; 20us; 21us; 37us; 38us; 40us; 41us; 50us; 1us; 18us; 1us; 19us; 1us; 20us; 1us; 21us; 1us; 22us; 1us; 22us; 1us; 22us; 2us; 23us; 24us; 1us; 23us; 1us; 23us; 1us; 24us; 1us; 25us; 1us; 25us; 1us; 25us; 1us; 25us; 1us; 26us; 1us; 26us; 1us; 26us; 1us; 27us; 1us; 27us; 1us; 27us; 1us; 28us; 1us; 28us; 1us; 28us; 1us; 28us; 1us; 28us; 2us; 29us; 30us; 2us; 29us; 30us; 1us; 29us; 1us; 29us; 1us; 29us; 1us; 29us; 1us; 30us; 1us; 30us; 1us; 30us; 1us; 30us; 1us; 30us; 1us; 31us; 1us; 31us; 1us; 31us; 1us; 31us; 1us; 32us; 1us; 32us; 1us; 32us; 1us; 32us; 1us; 32us; 1us; 33us; 1us; 33us; 1us; 33us; 1us; 33us; 1us; 33us; 1us; 33us; 1us; 34us; 1us; 34us; 1us; 35us; 1us; 35us; 1us; 35us; 1us; 35us; 1us; 36us; 1us; 36us; 1us; 37us; 1us; 38us; 1us; 39us; 1us; 40us; 1us; 41us; 1us; 42us; 1us; 43us; 1us; 44us; 1us; 45us; 1us; 45us; 1us; 45us; 1us; 45us; 1us; 46us; 1us; 46us; 1us; 48us; 2us; 49us; 50us; 2us; 49us; 50us; 2us; 49us; 50us; 1us; 49us; 1us; 49us; 1us; 50us; 1us; 50us; 1us; 50us; |] +let _fsyacc_stateToProdIdxsTableRowOffsets = [|0us; 2us; 4us; 6us; 8us; 11us; 14us; 16us; 19us; 22us; 25us; 27us; 29us; 31us; 41us; 43us; 45us; 55us; 57us; 59us; 61us; 63us; 65us; 67us; 70us; 73us; 75us; 77us; 79us; 81us; 83us; 88us; 90us; 92us; 94us; 96us; 106us; 116us; 126us; 136us; 146us; 156us; 166us; 176us; 186us; 196us; 206us; 216us; 226us; 236us; 246us; 256us; 266us; 276us; 286us; 296us; 306us; 316us; 326us; 336us; 346us; 356us; 366us; 376us; 386us; 396us; 407us; 417us; 427us; 429us; 431us; 433us; 435us; 437us; 439us; 441us; 444us; 446us; 448us; 450us; 452us; 454us; 456us; 458us; 460us; 462us; 464us; 466us; 468us; 470us; 472us; 474us; 476us; 478us; 480us; 483us; 486us; 488us; 490us; 492us; 494us; 496us; 498us; 500us; 502us; 504us; 506us; 508us; 510us; 512us; 514us; 516us; 518us; 520us; 522us; 524us; 526us; 528us; 530us; 532us; 534us; 536us; 538us; 540us; 542us; 544us; 546us; 548us; 550us; 552us; 554us; 556us; 558us; 560us; 562us; 564us; 566us; 568us; 570us; 572us; 574us; 576us; 578us; 580us; 583us; 586us; 589us; 591us; 593us; 595us; 597us; |] +let _fsyacc_action_rows = 151 +let _fsyacc_actionTableElements = [|1us; 32768us; 16us; 4us; 0us; 49152us; 1us; 32768us; 41us; 3us; 0us; 16385us; 4us; 32768us; 12us; 20us; 33us; 17us; 34us; 18us; 35us; 19us; 1us; 16387us; 16us; 4us; 0us; 16386us; 1us; 32768us; 42us; 8us; 1us; 32768us; 10us; 9us; 5us; 32768us; 11us; 14us; 12us; 20us; 33us; 17us; 34us; 18us; 35us; 19us; 1us; 32768us; 11us; 11us; 1us; 32768us; 24us; 12us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 8us; 16388us; 5us; 131us; 6us; 132us; 7us; 128us; 8us; 129us; 22us; 70us; 23us; 71us; 30us; 68us; 31us; 69us; 1us; 32768us; 24us; 15us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 8us; 16389us; 5us; 131us; 6us; 132us; 7us; 128us; 8us; 129us; 22us; 70us; 23us; 71us; 30us; 68us; 31us; 69us; 0us; 16390us; 0us; 16391us; 0us; 16392us; 4us; 32768us; 12us; 20us; 33us; 17us; 34us; 18us; 35us; 19us; 1us; 32768us; 13us; 22us; 0us; 16393us; 1us; 32768us; 42us; 24us; 1us; 16395us; 18us; 25us; 4us; 32768us; 12us; 20us; 33us; 17us; 34us; 18us; 35us; 19us; 0us; 16394us; 0us; 16396us; 0us; 16397us; 0us; 16398us; 2us; 16399us; 10us; 75us; 12us; 126us; 0us; 16400us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 1us; 32768us; 15us; 34us; 0us; 16401us; 2us; 16402us; 7us; 128us; 8us; 129us; 2us; 16403us; 7us; 128us; 8us; 129us; 4us; 16404us; 7us; 128us; 8us; 129us; 30us; 68us; 31us; 69us; 4us; 16405us; 7us; 128us; 8us; 129us; 30us; 68us; 31us; 69us; 9us; 32768us; 5us; 131us; 6us; 132us; 7us; 128us; 8us; 129us; 22us; 70us; 23us; 71us; 30us; 68us; 31us; 69us; 37us; 73us; 9us; 32768us; 5us; 131us; 6us; 132us; 7us; 128us; 8us; 129us; 22us; 70us; 23us; 71us; 30us; 68us; 31us; 69us; 38us; 74us; 8us; 16406us; 5us; 131us; 6us; 132us; 7us; 128us; 8us; 129us; 22us; 70us; 23us; 71us; 30us; 68us; 31us; 69us; 9us; 32768us; 5us; 131us; 6us; 132us; 7us; 128us; 8us; 129us; 11us; 85us; 22us; 70us; 23us; 71us; 30us; 68us; 31us; 69us; 9us; 32768us; 5us; 131us; 6us; 132us; 7us; 128us; 8us; 129us; 11us; 88us; 22us; 70us; 23us; 71us; 30us; 68us; 31us; 69us; 9us; 32768us; 5us; 131us; 6us; 132us; 7us; 128us; 8us; 129us; 11us; 93us; 22us; 70us; 23us; 71us; 30us; 68us; 31us; 69us; 9us; 32768us; 5us; 131us; 6us; 132us; 7us; 128us; 8us; 129us; 18us; 98us; 22us; 70us; 23us; 71us; 30us; 68us; 31us; 69us; 9us; 32768us; 5us; 131us; 6us; 132us; 7us; 128us; 8us; 129us; 11us; 99us; 22us; 70us; 23us; 71us; 30us; 68us; 31us; 69us; 9us; 32768us; 5us; 131us; 6us; 132us; 7us; 128us; 8us; 129us; 18us; 103us; 22us; 70us; 23us; 71us; 30us; 68us; 31us; 69us; 9us; 32768us; 5us; 131us; 6us; 132us; 7us; 128us; 8us; 129us; 11us; 104us; 22us; 70us; 23us; 71us; 30us; 68us; 31us; 69us; 9us; 32768us; 5us; 131us; 6us; 132us; 7us; 128us; 8us; 129us; 18us; 107us; 22us; 70us; 23us; 71us; 30us; 68us; 31us; 69us; 9us; 32768us; 5us; 131us; 6us; 132us; 7us; 128us; 8us; 129us; 11us; 108us; 22us; 70us; 23us; 71us; 30us; 68us; 31us; 69us; 9us; 32768us; 5us; 131us; 6us; 132us; 7us; 128us; 8us; 129us; 11us; 113us; 22us; 70us; 23us; 71us; 30us; 68us; 31us; 69us; 9us; 32768us; 5us; 131us; 6us; 132us; 7us; 128us; 8us; 129us; 18us; 118us; 22us; 70us; 23us; 71us; 30us; 68us; 31us; 69us; 9us; 32768us; 5us; 131us; 6us; 132us; 7us; 128us; 8us; 129us; 11us; 119us; 22us; 70us; 23us; 71us; 30us; 68us; 31us; 69us; 9us; 32768us; 5us; 131us; 6us; 132us; 7us; 128us; 8us; 129us; 11us; 121us; 22us; 70us; 23us; 71us; 30us; 68us; 31us; 69us; 10us; 32768us; 5us; 131us; 6us; 132us; 7us; 128us; 8us; 129us; 19us; 136us; 22us; 70us; 23us; 71us; 30us; 68us; 31us; 69us; 40us; 135us; 9us; 32768us; 5us; 131us; 6us; 132us; 7us; 128us; 8us; 129us; 13us; 127us; 22us; 70us; 23us; 71us; 30us; 68us; 31us; 69us; 0us; 16421us; 0us; 16422us; 0us; 16423us; 6us; 16424us; 7us; 128us; 8us; 129us; 22us; 70us; 23us; 71us; 30us; 68us; 31us; 69us; 6us; 16425us; 7us; 128us; 8us; 129us; 22us; 70us; 23us; 71us; 30us; 68us; 31us; 69us; 6us; 16426us; 7us; 128us; 8us; 129us; 22us; 70us; 23us; 71us; 30us; 68us; 31us; 69us; 8us; 16428us; 5us; 131us; 6us; 132us; 7us; 128us; 8us; 129us; 22us; 70us; 23us; 71us; 30us; 68us; 31us; 69us; 10us; 32768us; 5us; 131us; 6us; 132us; 7us; 128us; 8us; 129us; 19us; 136us; 22us; 70us; 23us; 71us; 30us; 68us; 31us; 69us; 40us; 135us; 9us; 16431us; 5us; 131us; 6us; 132us; 7us; 128us; 8us; 129us; 18us; 140us; 22us; 70us; 23us; 71us; 30us; 68us; 31us; 69us; 8us; 16433us; 5us; 131us; 6us; 132us; 7us; 128us; 8us; 129us; 22us; 70us; 23us; 71us; 30us; 68us; 31us; 69us; 8us; 16434us; 5us; 131us; 6us; 132us; 7us; 128us; 8us; 129us; 22us; 70us; 23us; 71us; 30us; 68us; 31us; 69us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 20us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 11us; 78us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 1us; 32768us; 11us; 77us; 0us; 16407us; 0us; 16408us; 1us; 32768us; 10us; 80us; 4us; 32768us; 12us; 20us; 33us; 17us; 34us; 18us; 35us; 19us; 1us; 32768us; 11us; 82us; 0us; 16409us; 1us; 32768us; 10us; 84us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 0us; 16410us; 1us; 32768us; 10us; 87us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 0us; 16411us; 1us; 32768us; 10us; 90us; 2us; 32768us; 17us; 143us; 42us; 142us; 1us; 32768us; 18us; 92us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 0us; 16412us; 1us; 32768us; 10us; 95us; 3us; 32768us; 17us; 143us; 25us; 100us; 42us; 142us; 1us; 32768us; 18us; 97us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 0us; 16413us; 1us; 32768us; 30us; 27us; 1us; 32768us; 18us; 102us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 0us; 16414us; 1us; 32768us; 10us; 106us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 0us; 16415us; 1us; 32768us; 10us; 110us; 2us; 32768us; 17us; 143us; 42us; 142us; 1us; 32768us; 18us; 112us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 0us; 16416us; 1us; 32768us; 10us; 115us; 2us; 32768us; 17us; 143us; 42us; 142us; 1us; 32768us; 18us; 117us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 0us; 16417us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 0us; 16418us; 1us; 32768us; 42us; 123us; 1us; 32768us; 24us; 124us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 0us; 16419us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 0us; 16420us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 0us; 16427us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 1us; 32768us; 42us; 137us; 1us; 32768us; 24us; 138us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 0us; 16429us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 0us; 16430us; 0us; 16432us; 4us; 32768us; 12us; 20us; 33us; 17us; 34us; 18us; 35us; 19us; 1us; 32768us; 10us; 145us; 5us; 32768us; 11us; 146us; 12us; 20us; 33us; 17us; 34us; 18us; 35us; 19us; 1us; 32768us; 29us; 147us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; 1us; 32768us; 11us; 149us; 1us; 32768us; 29us; 150us; 19us; 32768us; 0us; 109us; 1us; 114us; 2us; 105us; 3us; 134us; 4us; 133us; 9us; 130us; 10us; 120us; 14us; 32us; 20us; 79us; 21us; 83us; 26us; 89us; 27us; 94us; 28us; 86us; 36us; 72us; 39us; 122us; 42us; 30us; 43us; 31us; 44us; 29us; 45us; 28us; |] +let _fsyacc_actionTableRowOffsets = [|0us; 2us; 3us; 5us; 6us; 11us; 13us; 14us; 16us; 18us; 24us; 26us; 28us; 48us; 57us; 59us; 79us; 88us; 89us; 90us; 91us; 96us; 98us; 99us; 101us; 103us; 108us; 109us; 110us; 111us; 112us; 115us; 116us; 136us; 138us; 139us; 142us; 145us; 150us; 155us; 165us; 175us; 184us; 194us; 204us; 214us; 224us; 234us; 244us; 254us; 264us; 274us; 284us; 294us; 304us; 314us; 325us; 335us; 336us; 337us; 338us; 345us; 352us; 359us; 368us; 379us; 389us; 398us; 407us; 427us; 447us; 467us; 487us; 507us; 527us; 547us; 568us; 570us; 571us; 572us; 574us; 579us; 581us; 582us; 584us; 604us; 605us; 607us; 627us; 628us; 630us; 633us; 635us; 655us; 656us; 658us; 662us; 664us; 684us; 704us; 705us; 707us; 709us; 729us; 749us; 750us; 752us; 772us; 792us; 793us; 795us; 798us; 800us; 820us; 821us; 823us; 826us; 828us; 848us; 868us; 869us; 889us; 890us; 892us; 894us; 914us; 915us; 935us; 936us; 956us; 976us; 996us; 1016us; 1036us; 1056us; 1057us; 1077us; 1079us; 1081us; 1101us; 1102us; 1122us; 1123us; 1124us; 1129us; 1131us; 1137us; 1139us; 1159us; 1161us; 1163us; |] +let _fsyacc_reductionSymbolCounts = [|1us; 2us; 3us; 2us; 7us; 6us; 1us; 1us; 1us; 3us; 4us; 2us; 1us; 1us; 1us; 1us; 1us; 3us; 3us; 3us; 3us; 3us; 6us; 4us; 3us; 4us; 4us; 4us; 6us; 8us; 9us; 6us; 6us; 8us; 3us; 5us; 4us; 3us; 3us; 2us; 3us; 3us; 2us; 1us; 2us; 5us; 3us; 1us; 1us; 6us; 7us; |] +let _fsyacc_productionToNonTerminalTable = [|0us; 1us; 2us; 2us; 3us; 3us; 4us; 4us; 4us; 4us; 5us; 5us; 6us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 8us; 8us; 9us; 9us; 10us; 10us; 10us; |] +let _fsyacc_immediateActions = [|65535us; 49152us; 65535us; 16385us; 65535us; 65535us; 16386us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 16390us; 16391us; 16392us; 65535us; 65535us; 16393us; 65535us; 65535us; 65535us; 16394us; 16396us; 16397us; 16398us; 65535us; 16400us; 65535us; 65535us; 16401us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 16407us; 16408us; 65535us; 65535us; 65535us; 16409us; 65535us; 65535us; 16410us; 65535us; 65535us; 16411us; 65535us; 65535us; 65535us; 65535us; 16412us; 65535us; 65535us; 65535us; 65535us; 65535us; 16413us; 65535us; 65535us; 65535us; 65535us; 16414us; 65535us; 65535us; 65535us; 16415us; 65535us; 65535us; 65535us; 65535us; 16416us; 65535us; 65535us; 65535us; 65535us; 65535us; 16417us; 65535us; 16418us; 65535us; 65535us; 65535us; 16419us; 65535us; 16420us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 16427us; 65535us; 65535us; 65535us; 65535us; 16429us; 65535us; 16430us; 16432us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |] let _fsyacc_reductions () = [| -# 338 "Parser.fs" +# 411 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> AbSyn.UntypedProg in Microsoft.FSharp.Core.Operators.box @@ -344,19 +417,19 @@ let _fsyacc_reductions () = [| raise (FSharp.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1)) ) : 'gentype__startProg)); -# 347 "Parser.fs" +# 420 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> AbSyn.UntypedFunDec list in let _2 = parseState.GetInput(2) :?> Position in Microsoft.FSharp.Core.Operators.box ( ( -# 65 "Parser.fsp" +# 76 "Parser.fsp" _1 ) -# 65 "Parser.fsp" +# 76 "Parser.fsp" : AbSyn.UntypedProg)); -# 359 "Parser.fs" +# 432 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Position in let _2 = parseState.GetInput(2) :?> AbSyn.UntypedFunDec in @@ -364,24 +437,24 @@ let _fsyacc_reductions () = [| Microsoft.FSharp.Core.Operators.box ( ( -# 68 "Parser.fsp" +# 79 "Parser.fsp" _2 :: _3 ) -# 68 "Parser.fsp" +# 79 "Parser.fsp" : AbSyn.UntypedFunDec list)); -# 372 "Parser.fs" +# 445 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Position in let _2 = parseState.GetInput(2) :?> AbSyn.UntypedFunDec in Microsoft.FSharp.Core.Operators.box ( ( -# 69 "Parser.fsp" +# 80 "Parser.fsp" _2 :: [] ) -# 69 "Parser.fsp" +# 80 "Parser.fsp" : AbSyn.UntypedFunDec list)); -# 384 "Parser.fs" +# 457 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> AbSyn.Type in let _2 = parseState.GetInput(2) :?> string * Position in @@ -393,12 +466,12 @@ let _fsyacc_reductions () = [| Microsoft.FSharp.Core.Operators.box ( ( -# 73 "Parser.fsp" +# 84 "Parser.fsp" FunDec (fst _2, _1, _4, _7, snd _2) ) -# 73 "Parser.fsp" +# 84 "Parser.fsp" : AbSyn.UntypedFunDec)); -# 401 "Parser.fs" +# 474 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> AbSyn.Type in let _2 = parseState.GetInput(2) :?> string * Position in @@ -409,45 +482,45 @@ let _fsyacc_reductions () = [| Microsoft.FSharp.Core.Operators.box ( ( -# 75 "Parser.fsp" +# 86 "Parser.fsp" FunDec (fst _2, _1, [], _6, snd _2) ) -# 75 "Parser.fsp" +# 86 "Parser.fsp" : AbSyn.UntypedFunDec)); -# 417 "Parser.fs" +# 490 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Position in Microsoft.FSharp.Core.Operators.box ( ( -# 78 "Parser.fsp" +# 89 "Parser.fsp" AbSyn.Int ) -# 78 "Parser.fsp" +# 89 "Parser.fsp" : AbSyn.Type)); -# 428 "Parser.fs" +# 501 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Position in Microsoft.FSharp.Core.Operators.box ( ( -# 79 "Parser.fsp" +# 90 "Parser.fsp" AbSyn.Char ) -# 79 "Parser.fsp" +# 90 "Parser.fsp" : AbSyn.Type)); -# 439 "Parser.fs" +# 512 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Position in Microsoft.FSharp.Core.Operators.box ( ( -# 80 "Parser.fsp" +# 91 "Parser.fsp" AbSyn.Bool ) -# 80 "Parser.fsp" +# 91 "Parser.fsp" : AbSyn.Type)); -# 450 "Parser.fs" +# 523 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Position in let _2 = parseState.GetInput(2) :?> AbSyn.Type in @@ -455,12 +528,12 @@ let _fsyacc_reductions () = [| Microsoft.FSharp.Core.Operators.box ( ( -# 81 "Parser.fsp" +# 92 "Parser.fsp" AbSyn.Array _2 ) -# 81 "Parser.fsp" +# 92 "Parser.fsp" : AbSyn.Type)); -# 463 "Parser.fs" +# 536 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> AbSyn.Type in let _2 = parseState.GetInput(2) :?> string * Position in @@ -469,30 +542,30 @@ let _fsyacc_reductions () = [| Microsoft.FSharp.Core.Operators.box ( ( -# 85 "Parser.fsp" +# 96 "Parser.fsp" Param (fst _2, _1) :: _4 ) -# 85 "Parser.fsp" +# 96 "Parser.fsp" : 'gentype_Params)); -# 477 "Parser.fs" +# 550 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> AbSyn.Type in let _2 = parseState.GetInput(2) :?> string * Position in Microsoft.FSharp.Core.Operators.box ( ( -# 86 "Parser.fsp" +# 97 "Parser.fsp" Param (fst _2, _1) :: [] ) -# 86 "Parser.fsp" +# 97 "Parser.fsp" : 'gentype_Params)); -# 489 "Parser.fs" +# 562 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Position in Microsoft.FSharp.Core.Operators.box ( ( -# 90 "Parser.fsp" +# 101 "Parser.fsp" (Lambda (Int, [Param ("x", Int); Param ("y", Int)], @@ -500,53 +573,53 @@ let _fsyacc_reductions () = [| Var ("y", _1), _1) ,_1)) ) -# 90 "Parser.fsp" +# 101 "Parser.fsp" : 'gentype_BinOp)); -# 505 "Parser.fs" +# 578 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> int * Position in Microsoft.FSharp.Core.Operators.box ( ( -# 103 "Parser.fsp" +# 114 "Parser.fsp" Constant (IntVal (fst _1), snd _1) ) -# 103 "Parser.fsp" +# 114 "Parser.fsp" : AbSyn.UntypedExp)); -# 516 "Parser.fs" +# 589 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> char * Position in Microsoft.FSharp.Core.Operators.box ( ( -# 104 "Parser.fsp" +# 115 "Parser.fsp" Constant (CharVal (fst _1), snd _1) ) -# 104 "Parser.fsp" +# 115 "Parser.fsp" : AbSyn.UntypedExp)); -# 527 "Parser.fs" +# 600 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string * Position in Microsoft.FSharp.Core.Operators.box ( ( -# 105 "Parser.fsp" +# 116 "Parser.fsp" Var _1 ) -# 105 "Parser.fsp" +# 116 "Parser.fsp" : AbSyn.UntypedExp)); -# 538 "Parser.fs" +# 611 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string * Position in Microsoft.FSharp.Core.Operators.box ( ( -# 106 "Parser.fsp" +# 117 "Parser.fsp" StringLit _1 ) -# 106 "Parser.fsp" +# 117 "Parser.fsp" : AbSyn.UntypedExp)); -# 549 "Parser.fs" +# 622 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Position in let _2 = parseState.GetInput(2) :?> AbSyn.UntypedExp list in @@ -554,12 +627,12 @@ let _fsyacc_reductions () = [| Microsoft.FSharp.Core.Operators.box ( ( -# 108 "Parser.fsp" +# 119 "Parser.fsp" ArrayLit (_2, (), _1) ) -# 108 "Parser.fsp" +# 119 "Parser.fsp" : AbSyn.UntypedExp)); -# 562 "Parser.fs" +# 635 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> AbSyn.UntypedExp in let _2 = parseState.GetInput(2) :?> Position in @@ -567,12 +640,12 @@ let _fsyacc_reductions () = [| Microsoft.FSharp.Core.Operators.box ( ( -# 109 "Parser.fsp" +# 120 "Parser.fsp" Plus (_1, _3, _2) ) -# 109 "Parser.fsp" +# 120 "Parser.fsp" : AbSyn.UntypedExp)); -# 575 "Parser.fs" +# 648 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> AbSyn.UntypedExp in let _2 = parseState.GetInput(2) :?> Position in @@ -580,12 +653,12 @@ let _fsyacc_reductions () = [| Microsoft.FSharp.Core.Operators.box ( ( -# 110 "Parser.fsp" +# 121 "Parser.fsp" Minus(_1, _3, _2) ) -# 110 "Parser.fsp" +# 121 "Parser.fsp" : AbSyn.UntypedExp)); -# 588 "Parser.fs" +# 661 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> AbSyn.UntypedExp in let _2 = parseState.GetInput(2) :?> Position in @@ -593,12 +666,12 @@ let _fsyacc_reductions () = [| Microsoft.FSharp.Core.Operators.box ( ( -# 111 "Parser.fsp" +# 122 "Parser.fsp" Equal(_1, _3, _2) ) -# 111 "Parser.fsp" +# 122 "Parser.fsp" : AbSyn.UntypedExp)); -# 601 "Parser.fs" +# 674 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> AbSyn.UntypedExp in let _2 = parseState.GetInput(2) :?> Position in @@ -606,12 +679,12 @@ let _fsyacc_reductions () = [| Microsoft.FSharp.Core.Operators.box ( ( -# 112 "Parser.fsp" +# 123 "Parser.fsp" Less (_1, _3, _2) ) -# 112 "Parser.fsp" +# 123 "Parser.fsp" : AbSyn.UntypedExp)); -# 614 "Parser.fs" +# 687 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Position in let _2 = parseState.GetInput(2) :?> AbSyn.UntypedExp in @@ -622,12 +695,12 @@ let _fsyacc_reductions () = [| Microsoft.FSharp.Core.Operators.box ( ( -# 114 "Parser.fsp" +# 125 "Parser.fsp" If (_2, _4, _6, _1) ) -# 114 "Parser.fsp" +# 125 "Parser.fsp" : AbSyn.UntypedExp)); -# 630 "Parser.fs" +# 703 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string * Position in let _2 = parseState.GetInput(2) :?> Position in @@ -636,12 +709,12 @@ let _fsyacc_reductions () = [| Microsoft.FSharp.Core.Operators.box ( ( -# 116 "Parser.fsp" +# 127 "Parser.fsp" Apply (fst _1, _3, snd _1) ) -# 116 "Parser.fsp" +# 127 "Parser.fsp" : AbSyn.UntypedExp)); -# 644 "Parser.fs" +# 717 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string * Position in let _2 = parseState.GetInput(2) :?> Position in @@ -649,12 +722,12 @@ let _fsyacc_reductions () = [| Microsoft.FSharp.Core.Operators.box ( ( -# 117 "Parser.fsp" +# 128 "Parser.fsp" Apply (fst _1, [], snd _1) ) -# 117 "Parser.fsp" +# 128 "Parser.fsp" : AbSyn.UntypedExp)); -# 657 "Parser.fs" +# 730 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Position in let _2 = parseState.GetInput(2) :?> Position in @@ -663,12 +736,12 @@ let _fsyacc_reductions () = [| Microsoft.FSharp.Core.Operators.box ( ( -# 119 "Parser.fsp" +# 130 "Parser.fsp" Read (_3, _1) ) -# 119 "Parser.fsp" +# 130 "Parser.fsp" : AbSyn.UntypedExp)); -# 671 "Parser.fs" +# 744 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Position in let _2 = parseState.GetInput(2) :?> Position in @@ -677,12 +750,12 @@ let _fsyacc_reductions () = [| Microsoft.FSharp.Core.Operators.box ( ( -# 121 "Parser.fsp" +# 132 "Parser.fsp" Write (_3, (), _1) ) -# 121 "Parser.fsp" +# 132 "Parser.fsp" : AbSyn.UntypedExp)); -# 685 "Parser.fs" +# 758 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Position in let _2 = parseState.GetInput(2) :?> Position in @@ -691,12 +764,12 @@ let _fsyacc_reductions () = [| Microsoft.FSharp.Core.Operators.box ( ( -# 123 "Parser.fsp" +# 134 "Parser.fsp" Iota (_3, _1) ) -# 123 "Parser.fsp" +# 134 "Parser.fsp" : AbSyn.UntypedExp)); -# 699 "Parser.fs" +# 772 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Position in let _2 = parseState.GetInput(2) :?> Position in @@ -707,12 +780,12 @@ let _fsyacc_reductions () = [| Microsoft.FSharp.Core.Operators.box ( ( -# 125 "Parser.fsp" +# 136 "Parser.fsp" Map (_3, _5, (), (), _1) ) -# 125 "Parser.fsp" +# 136 "Parser.fsp" : AbSyn.UntypedExp)); -# 715 "Parser.fs" +# 788 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Position in let _2 = parseState.GetInput(2) :?> Position in @@ -725,12 +798,12 @@ let _fsyacc_reductions () = [| Microsoft.FSharp.Core.Operators.box ( ( -# 127 "Parser.fsp" +# 138 "Parser.fsp" Reduce (_3, _5, _7, (), _1) ) -# 127 "Parser.fsp" +# 138 "Parser.fsp" : AbSyn.UntypedExp)); -# 733 "Parser.fs" +# 806 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Position in let _2 = parseState.GetInput(2) :?> Position in @@ -744,12 +817,62 @@ let _fsyacc_reductions () = [| Microsoft.FSharp.Core.Operators.box ( ( -# 129 "Parser.fsp" +# 140 "Parser.fsp" Reduce (_4, _6, _8, (), _1) ) -# 129 "Parser.fsp" +# 140 "Parser.fsp" : AbSyn.UntypedExp)); -# 752 "Parser.fs" +# 825 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> Position in + let _2 = parseState.GetInput(2) :?> Position in + let _3 = parseState.GetInput(3) :?> AbSyn.UntypedExp in + let _4 = parseState.GetInput(4) :?> Position in + let _5 = parseState.GetInput(5) :?> AbSyn.UntypedExp in + let _6 = parseState.GetInput(6) :?> Position in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 142 "Parser.fsp" + Replicate (_3, _5, (), _1) + ) +# 142 "Parser.fsp" + : AbSyn.UntypedExp)); +# 841 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> Position in + let _2 = parseState.GetInput(2) :?> Position in + let _3 = parseState.GetInput(3) :?> AbSyn.UntypedFunArg in + let _4 = parseState.GetInput(4) :?> Position in + let _5 = parseState.GetInput(5) :?> AbSyn.UntypedExp in + let _6 = parseState.GetInput(6) :?> Position in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 144 "Parser.fsp" + Filter (_3, _5, (), _1) + ) +# 144 "Parser.fsp" + : AbSyn.UntypedExp)); +# 857 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> Position in + let _2 = parseState.GetInput(2) :?> Position in + let _3 = parseState.GetInput(3) :?> AbSyn.UntypedFunArg in + let _4 = parseState.GetInput(4) :?> Position in + let _5 = parseState.GetInput(5) :?> AbSyn.UntypedExp in + let _6 = parseState.GetInput(6) :?> Position in + let _7 = parseState.GetInput(7) :?> AbSyn.UntypedExp in + let _8 = parseState.GetInput(8) :?> Position in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 146 "Parser.fsp" + Scan (_3, _5, _7, (), _1) + ) +# 146 "Parser.fsp" + : AbSyn.UntypedExp)); +# 875 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Position in let _2 = parseState.GetInput(2) :?> AbSyn.UntypedExp in @@ -757,28 +880,27 @@ let _fsyacc_reductions () = [| Microsoft.FSharp.Core.Operators.box ( ( -# 130 "Parser.fsp" +# 147 "Parser.fsp" _2 ) -# 130 "Parser.fsp" +# 147 "Parser.fsp" : AbSyn.UntypedExp)); -# 765 "Parser.fs" +# 888 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Position in let _2 = parseState.GetInput(2) :?> string * Position in let _3 = parseState.GetInput(3) :?> Position in let _4 = parseState.GetInput(4) :?> AbSyn.UntypedExp in - let _5 = parseState.GetInput(5) :?> Position in - let _6 = parseState.GetInput(6) :?> AbSyn.UntypedExp in + let _5 = parseState.GetInput(5) :?> AbSyn.UntypedExp in Microsoft.FSharp.Core.Operators.box ( ( -# 133 "Parser.fsp" - Let (Dec (fst _2, _4, _3), _6, _1) +# 149 "Parser.fsp" + Let (Dec (fst _2, _4, _3), _5, _1) ) -# 133 "Parser.fsp" +# 149 "Parser.fsp" : AbSyn.UntypedExp)); -# 781 "Parser.fs" +# 903 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string * Position in let _2 = parseState.GetInput(2) :?> Position in @@ -787,12 +909,126 @@ let _fsyacc_reductions () = [| Microsoft.FSharp.Core.Operators.box ( ( -# 135 "Parser.fsp" +# 151 "Parser.fsp" Index (fst _1, _3, (), _2) ) -# 135 "Parser.fsp" +# 151 "Parser.fsp" : AbSyn.UntypedExp)); -# 795 "Parser.fs" +# 917 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> AbSyn.UntypedExp in + let _2 = parseState.GetInput(2) :?> Position in + let _3 = parseState.GetInput(3) :?> AbSyn.UntypedExp in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 153 "Parser.fsp" + Times (_1, _3, _2) + ) +# 153 "Parser.fsp" + : AbSyn.UntypedExp)); +# 930 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> AbSyn.UntypedExp in + let _2 = parseState.GetInput(2) :?> Position in + let _3 = parseState.GetInput(3) :?> AbSyn.UntypedExp in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 154 "Parser.fsp" + Divide (_1, _3, _2) + ) +# 154 "Parser.fsp" + : AbSyn.UntypedExp)); +# 943 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> Position in + let _2 = parseState.GetInput(2) :?> AbSyn.UntypedExp in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 155 "Parser.fsp" + Negate (_2, _1) + ) +# 155 "Parser.fsp" + : AbSyn.UntypedExp)); +# 955 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> AbSyn.UntypedExp in + let _2 = parseState.GetInput(2) :?> Position in + let _3 = parseState.GetInput(3) :?> AbSyn.UntypedExp in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 157 "Parser.fsp" + And (_1, _3, _2) + ) +# 157 "Parser.fsp" + : AbSyn.UntypedExp)); +# 968 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> AbSyn.UntypedExp in + let _2 = parseState.GetInput(2) :?> Position in + let _3 = parseState.GetInput(3) :?> AbSyn.UntypedExp in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 158 "Parser.fsp" + Or (_1, _3, _2) + ) +# 158 "Parser.fsp" + : AbSyn.UntypedExp)); +# 981 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> Position in + let _2 = parseState.GetInput(2) :?> AbSyn.UntypedExp in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 159 "Parser.fsp" + Not (_2, _1) + ) +# 159 "Parser.fsp" + : AbSyn.UntypedExp)); +# 993 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> bool * Position in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 160 "Parser.fsp" + Constant (BoolVal (fst _1), snd _1) + ) +# 160 "Parser.fsp" + : AbSyn.UntypedExp)); +# 1004 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> Position in + let _2 = parseState.GetInput(2) :?> AbSyn.UntypedExp in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 163 "Parser.fsp" + _2 + ) +# 163 "Parser.fsp" + : AbSyn.UntypedExp)); +# 1016 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> Position in + let _2 = parseState.GetInput(2) :?> string * Position in + let _3 = parseState.GetInput(3) :?> Position in + let _4 = parseState.GetInput(4) :?> AbSyn.UntypedExp in + let _5 = parseState.GetInput(5) :?> AbSyn.UntypedExp in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 165 "Parser.fsp" + Let (Dec (fst _2, _4, _3), _5, _1) + ) +# 165 "Parser.fsp" + : AbSyn.UntypedExp)); +# 1031 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> AbSyn.UntypedExp in let _2 = parseState.GetInput(2) :?> Position in @@ -800,34 +1036,34 @@ let _fsyacc_reductions () = [| Microsoft.FSharp.Core.Operators.box ( ( -# 138 "Parser.fsp" +# 168 "Parser.fsp" _1 :: _3 ) -# 138 "Parser.fsp" +# 168 "Parser.fsp" : AbSyn.UntypedExp list)); -# 808 "Parser.fs" +# 1044 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> AbSyn.UntypedExp in Microsoft.FSharp.Core.Operators.box ( ( -# 139 "Parser.fsp" +# 169 "Parser.fsp" _1 :: [] ) -# 139 "Parser.fsp" +# 169 "Parser.fsp" : AbSyn.UntypedExp list)); -# 819 "Parser.fs" +# 1055 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string * Position in Microsoft.FSharp.Core.Operators.box ( ( -# 142 "Parser.fsp" +# 172 "Parser.fsp" FunName (fst _1 ) ) -# 142 "Parser.fsp" +# 172 "Parser.fsp" : AbSyn.UntypedFunArg)); -# 830 "Parser.fs" +# 1066 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Position in let _2 = parseState.GetInput(2) :?> AbSyn.Type in @@ -838,12 +1074,12 @@ let _fsyacc_reductions () = [| Microsoft.FSharp.Core.Operators.box ( ( -# 144 "Parser.fsp" +# 174 "Parser.fsp" Lambda (_2, [], _6, _1) ) -# 144 "Parser.fsp" +# 174 "Parser.fsp" : AbSyn.UntypedFunArg)); -# 846 "Parser.fs" +# 1082 "Parser.fs" (fun (parseState : FSharp.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Position in let _2 = parseState.GetInput(2) :?> AbSyn.Type in @@ -855,13 +1091,13 @@ let _fsyacc_reductions () = [| Microsoft.FSharp.Core.Operators.box ( ( -# 146 "Parser.fsp" +# 176 "Parser.fsp" Lambda (_2, _4, _7, _1) ) -# 146 "Parser.fsp" +# 176 "Parser.fsp" : AbSyn.UntypedFunArg)); |] -# 864 "Parser.fs" +# 1100 "Parser.fs" let tables : FSharp.Text.Parsing.Tables<_> = { reductions= _fsyacc_reductions (); endOfInputTag = _fsyacc_endOfInputTag; @@ -880,7 +1116,7 @@ let tables : FSharp.Text.Parsing.Tables<_> = match parse_error_rich with | Some f -> f ctxt | None -> parse_error ctxt.Message); - numTerminals = 39; + numTerminals = 49; productionToNonTerminalTable = _fsyacc_productionToNonTerminalTable } let engine lexer lexbuf startState = tables.Interpret(lexer, lexbuf, startState) let Prog lexer lexbuf : AbSyn.UntypedProg = diff --git a/Fasto/Parser.fsi b/Fasto/Parser.fsi index c5f62f9..dd43921 100644 --- a/Fasto/Parser.fsi +++ b/Fasto/Parser.fsi @@ -1,6 +1,16 @@ // Signature file for parser generated by fsyacc module Parser type token = + | FILTER of (Position) + | SCAN of (Position) + | REPLICATE of (Position) + | BOOLVAL of (bool * Position) + | NOT of (Position) + | AND of (Position) + | OR of (Position) + | TIMES of (Position) + | DIVIDE of (Position) + | NUMNEG of (Position) | LPAR of (Position) | RPAR of (Position) | LBRACKET of (Position) @@ -38,6 +48,16 @@ type token = | CHARLIT of (char * Position) | NUM of (int * Position) type tokenId = + | TOKEN_FILTER + | TOKEN_SCAN + | TOKEN_REPLICATE + | TOKEN_BOOLVAL + | TOKEN_NOT + | TOKEN_AND + | TOKEN_OR + | TOKEN_TIMES + | TOKEN_DIVIDE + | TOKEN_NUMNEG | TOKEN_LPAR | TOKEN_RPAR | TOKEN_LBRACKET @@ -85,6 +105,7 @@ type nonTerminalId = | NONTERM_Params | NONTERM_BinOp | NONTERM_Exp + | NONTERM_MultiLet | NONTERM_Exps | NONTERM_FunArg /// This function maps tokens to integer indexes diff --git a/Fasto/Parser.fsp b/Fasto/Parser.fsp index a0bad45..fcad116 100644 --- a/Fasto/Parser.fsp +++ b/Fasto/Parser.fsp @@ -46,9 +46,19 @@ let parse_error_rich = %token FUN FN COMMA SEMICOLON READ WRITE %token LPAR RPAR LBRACKET RBRACKET LCURLY RCURLY +%token TIMES DIVIDE NUMNEG +%token NOT AND OR +%token BOOLVAL + +%token FILTER SCAN REPLICATE + %nonassoc ifprec letprec +%left AND OR +%nonassoc NOT %left DEQ LTH %left PLUS MINUS +%left TIMES DIVIDE +%nonassoc NUMNEG %start Prog %type Prog @@ -59,6 +69,7 @@ let parse_error_rich = %type Exps %type FunArg // TODO: Task 1(b): add any new nonterminals here +%type MultiLet %% @@ -127,12 +138,31 @@ Exp : NUM { Constant (IntVal (fst $1), snd $1) } { Reduce ($3, $5, $7, (), $1) } | REDUCE LPAR OP BinOp COMMA Exp COMMA Exp RPAR { Reduce ($4, $6, $8, (), $1) } + | REPLICATE LPAR Exp COMMA Exp RPAR + { Replicate ($3, $5, (), $1) } + | FILTER LPAR FunArg COMMA Exp RPAR + { Filter ($3, $5, (), $1) } + | SCAN LPAR FunArg COMMA Exp COMMA Exp RPAR + { Scan ($3, $5, $7, (), $1) } | LPAR Exp RPAR { $2 } - // TODO: task 1(b): replace this with a more general production - | LET ID EQ Exp IN Exp %prec letprec - { Let (Dec (fst $2, $4, $3), $6, $1) } + | LET ID EQ Exp MultiLet %prec letprec + { Let (Dec (fst $2, $4, $3), $5, $1) } | ID LBRACKET Exp RBRACKET { Index (fst $1, $3, (), $2) } + + | Exp TIMES Exp { Times ($1, $3, $2) } + | Exp DIVIDE Exp { Divide ($1, $3, $2) } + | NUMNEG Exp { Negate ($2, $1) } + + | Exp AND Exp { And ($1, $3, $2) } + | Exp OR Exp { Or ($1, $3, $2) } + | NOT Exp { Not ($2, $1) } + | BOOLVAL { Constant (BoolVal (fst $1), snd $1) } +; + +MultiLet : IN Exp { $2 } + | SEMICOLON ID EQ Exp MultiLet + { Let (Dec (fst $2, $4, $3), $5, $1) } ; Exps : Exp COMMA Exps { $1 :: $3 } diff --git a/Fasto/Parser.fsyacc.output b/Fasto/Parser.fsyacc.output index a94e590..f45825f 100644 --- a/Fasto/Parser.fsyacc.output +++ b/Fasto/Parser.fsyacc.output @@ -2,7 +2,17 @@ ------------------------ states = state 0: items: _startProg -> . Prog - actions: action 'LPAR' (noprec): error + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -44,7 +54,17 @@ state 0: items: _startProg -> . Prog immediate action: gotos: goto Prog: 1 goto FunDecs: 2 state 1: items: _startProg -> Prog . - actions: action 'LPAR' (noprec): accept + actions: action 'FILTER' (noprec): accept + action 'SCAN' (noprec): accept + action 'REPLICATE' (noprec): accept + action 'BOOLVAL' (noprec): accept + action 'NOT' (noprec): accept + action 'AND' (noprec): accept + action 'OR' (noprec): accept + action 'TIMES' (noprec): accept + action 'DIVIDE' (noprec): accept + action 'NUMNEG' (noprec): accept + action 'LPAR' (noprec): accept action 'RPAR' (noprec): accept action 'LBRACKET' (noprec): accept action 'RBRACKET' (noprec): accept @@ -84,7 +104,17 @@ state 1: items: _startProg -> Prog . action '#' (noprec): accept action '$$' (noprec): accept immediate action: accept gotos:state 2: items: Prog -> FunDecs . 'EOF' - actions: action 'LPAR' (noprec): error + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -124,7 +154,17 @@ state 1: items: _startProg -> Prog . action '#' (noprec): error action '$$' (noprec): error immediate action: gotos:state 3: items: Prog -> FunDecs 'EOF' . - actions: action 'LPAR' (noprec): reduce Prog --> FunDecs 'EOF' + actions: action 'FILTER' (noprec): reduce Prog --> FunDecs 'EOF' + action 'SCAN' (noprec): reduce Prog --> FunDecs 'EOF' + action 'REPLICATE' (noprec): reduce Prog --> FunDecs 'EOF' + action 'BOOLVAL' (noprec): reduce Prog --> FunDecs 'EOF' + action 'NOT' (noprec): reduce Prog --> FunDecs 'EOF' + action 'AND' (noprec): reduce Prog --> FunDecs 'EOF' + action 'OR' (noprec): reduce Prog --> FunDecs 'EOF' + action 'TIMES' (noprec): reduce Prog --> FunDecs 'EOF' + action 'DIVIDE' (noprec): reduce Prog --> FunDecs 'EOF' + action 'NUMNEG' (noprec): reduce Prog --> FunDecs 'EOF' + action 'LPAR' (noprec): reduce Prog --> FunDecs 'EOF' action 'RPAR' (noprec): reduce Prog --> FunDecs 'EOF' action 'LBRACKET' (noprec): reduce Prog --> FunDecs 'EOF' action 'RBRACKET' (noprec): reduce Prog --> FunDecs 'EOF' @@ -165,7 +205,17 @@ state 1: items: _startProg -> Prog . action '$$' (noprec): reduce Prog --> FunDecs 'EOF' immediate action: reduce Prog --> FunDecs 'EOF' gotos:state 4: items: FunDecs -> 'FUN' . Fun FunDecs FunDecs -> 'FUN' . Fun - actions: action 'LPAR' (noprec): error + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): error action 'LBRACKET' (noprec): shift 20 action 'RBRACKET' (noprec): error @@ -208,7 +258,17 @@ state 1: items: _startProg -> Prog . goto Type: 7 state 5: items: FunDecs -> 'FUN' Fun . FunDecs FunDecs -> 'FUN' Fun . - actions: action 'LPAR' (noprec): reduce FunDecs --> 'FUN' Fun + actions: action 'FILTER' (noprec): reduce FunDecs --> 'FUN' Fun + action 'SCAN' (noprec): reduce FunDecs --> 'FUN' Fun + action 'REPLICATE' (noprec): reduce FunDecs --> 'FUN' Fun + action 'BOOLVAL' (noprec): reduce FunDecs --> 'FUN' Fun + action 'NOT' (noprec): reduce FunDecs --> 'FUN' Fun + action 'AND' (noprec): reduce FunDecs --> 'FUN' Fun + action 'OR' (noprec): reduce FunDecs --> 'FUN' Fun + action 'TIMES' (noprec): reduce FunDecs --> 'FUN' Fun + action 'DIVIDE' (noprec): reduce FunDecs --> 'FUN' Fun + action 'NUMNEG' (noprec): reduce FunDecs --> 'FUN' Fun + action 'LPAR' (noprec): reduce FunDecs --> 'FUN' Fun action 'RPAR' (noprec): reduce FunDecs --> 'FUN' Fun action 'LBRACKET' (noprec): reduce FunDecs --> 'FUN' Fun action 'RBRACKET' (noprec): reduce FunDecs --> 'FUN' Fun @@ -249,7 +309,17 @@ state 5: items: FunDecs -> 'FUN' Fun . FunDecs action '$$' (noprec): reduce FunDecs --> 'FUN' Fun immediate action: gotos: goto FunDecs: 6 state 6: items: FunDecs -> 'FUN' Fun FunDecs . - actions: action 'LPAR' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + actions: action 'FILTER' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'SCAN' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'REPLICATE' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'BOOLVAL' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'NOT' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'AND' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'OR' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'TIMES' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'DIVIDE' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'NUMNEG' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'LPAR' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs action 'RPAR' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs action 'LBRACKET' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs action 'RBRACKET' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs @@ -290,7 +360,17 @@ state 6: items: FunDecs -> 'FUN' Fun FunDecs . action '$$' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs immediate action: reduce FunDecs --> 'FUN' Fun FunDecs gotos:state 7: items: Fun -> Type . 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp Fun -> Type . 'ID' 'LPAR' 'RPAR' 'EQ' Exp - actions: action 'LPAR' (noprec): error + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -331,7 +411,17 @@ state 6: items: FunDecs -> 'FUN' Fun FunDecs . action '$$' (noprec): error immediate action: gotos:state 8: items: Fun -> Type 'ID' . 'LPAR' Params 'RPAR' 'EQ' Exp Fun -> Type 'ID' . 'LPAR' 'RPAR' 'EQ' Exp - actions: action 'LPAR' (noprec): shift 9 + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): shift 9 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -372,7 +462,17 @@ state 6: items: FunDecs -> 'FUN' Fun FunDecs . action '$$' (noprec): error immediate action: gotos:state 9: items: Fun -> Type 'ID' 'LPAR' . Params 'RPAR' 'EQ' Exp Fun -> Type 'ID' 'LPAR' . 'RPAR' 'EQ' Exp - actions: action 'LPAR' (noprec): error + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): shift 14 action 'LBRACKET' (noprec): shift 20 action 'RBRACKET' (noprec): error @@ -414,7 +514,17 @@ state 6: items: FunDecs -> 'FUN' Fun FunDecs . immediate action: gotos: goto Type: 23 goto Params: 10 state 10: items: Fun -> Type 'ID' 'LPAR' Params . 'RPAR' 'EQ' Exp - actions: action 'LPAR' (noprec): error + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): shift 11 action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -454,7 +564,17 @@ state 10: items: Fun -> Type 'ID' 'LPAR' Params . 'RPAR' 'EQ' Exp action '#' (noprec): error action '$$' (noprec): error immediate action: gotos:state 11: items: Fun -> Type 'ID' 'LPAR' Params 'RPAR' . 'EQ' Exp - actions: action 'LPAR' (noprec): error + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -494,7 +614,17 @@ state 10: items: Fun -> Type 'ID' 'LPAR' Params . 'RPAR' 'EQ' Exp action '#' (noprec): error action '$$' (noprec): error immediate action: gotos:state 12: items: Fun -> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' . Exp - actions: action 'LPAR' (noprec): shift 93 + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -504,15 +634,15 @@ state 10: items: Fun -> Type 'ID' 'LPAR' Params . 'RPAR' 'EQ' Exp action 'FN' (noprec): error action 'COMMA' (noprec): error action 'SEMICOLON' (noprec): error - action 'READ' (noprec): shift 67 - action 'WRITE' (noprec): shift 71 + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 action 'DEQ' (noprec): error action 'LTH' (noprec): error action 'EQ' (noprec): error action 'OP' (noprec): error - action 'MAP' (noprec): shift 77 - action 'REDUCE' (noprec): shift 82 - action 'IOTA' (noprec): shift 74 + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 action 'ARROW' (noprec): error action 'PLUS' (noprec): error action 'MINUS' (noprec): error @@ -520,10 +650,10 @@ state 10: items: Fun -> Type 'ID' 'LPAR' Params . 'RPAR' 'EQ' Exp action 'INT' (noprec): error action 'CHAR' (noprec): error action 'BOOL' (noprec): error - action 'IF' (noprec): shift 60 + action 'IF' (noprec): shift 72 action 'THEN' (noprec): error action 'ELSE' (noprec): error - action 'LET' (noprec): shift 95 + action 'LET' (noprec): shift 122 action 'IN' (noprec): error action 'EOF' (noprec): error action 'ID' (noprec): shift 30 @@ -539,7 +669,21 @@ state 13: items: Fun -> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp . Exp -> Exp . 'MINUS' Exp Exp -> Exp . 'DEQ' Exp Exp -> Exp . 'LTH' Exp - actions: action 'LPAR' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + actions: action 'FILTER' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp + action 'SCAN' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp + action 'REPLICATE' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp + action 'BOOLVAL' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp + action 'NOT' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp + action 'AND' (explicit left 9994): shift 131 + action 'OR' (explicit left 9994): shift 132 + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp + action 'LPAR' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp action 'RPAR' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp action 'LBRACKET' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp action 'RBRACKET' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp @@ -551,16 +695,16 @@ state 13: items: Fun -> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp . action 'SEMICOLON' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp action 'READ' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp action 'WRITE' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp - action 'DEQ' (explicit left 9998): shift 58 - action 'LTH' (explicit left 9998): shift 59 + action 'DEQ' (explicit left 9996): shift 70 + action 'LTH' (explicit left 9996): shift 71 action 'EQ' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp action 'OP' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp action 'MAP' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp action 'REDUCE' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp action 'IOTA' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp action 'ARROW' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp - action 'PLUS' (explicit left 9999): shift 56 - action 'MINUS' (explicit left 9999): shift 57 + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 action 'LESS' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp action 'INT' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp action 'CHAR' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp @@ -579,7 +723,17 @@ state 13: items: Fun -> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp . action '#' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp action '$$' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp immediate action: gotos:state 14: items: Fun -> Type 'ID' 'LPAR' 'RPAR' . 'EQ' Exp - actions: action 'LPAR' (noprec): error + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -619,7 +773,17 @@ state 13: items: Fun -> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp . action '#' (noprec): error action '$$' (noprec): error immediate action: gotos:state 15: items: Fun -> Type 'ID' 'LPAR' 'RPAR' 'EQ' . Exp - actions: action 'LPAR' (noprec): shift 93 + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -629,15 +793,15 @@ state 13: items: Fun -> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp . action 'FN' (noprec): error action 'COMMA' (noprec): error action 'SEMICOLON' (noprec): error - action 'READ' (noprec): shift 67 - action 'WRITE' (noprec): shift 71 + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 action 'DEQ' (noprec): error action 'LTH' (noprec): error action 'EQ' (noprec): error action 'OP' (noprec): error - action 'MAP' (noprec): shift 77 - action 'REDUCE' (noprec): shift 82 - action 'IOTA' (noprec): shift 74 + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 action 'ARROW' (noprec): error action 'PLUS' (noprec): error action 'MINUS' (noprec): error @@ -645,10 +809,10 @@ state 13: items: Fun -> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp . action 'INT' (noprec): error action 'CHAR' (noprec): error action 'BOOL' (noprec): error - action 'IF' (noprec): shift 60 + action 'IF' (noprec): shift 72 action 'THEN' (noprec): error action 'ELSE' (noprec): error - action 'LET' (noprec): shift 95 + action 'LET' (noprec): shift 122 action 'IN' (noprec): error action 'EOF' (noprec): error action 'ID' (noprec): shift 30 @@ -664,7 +828,21 @@ state 16: items: Fun -> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp . Exp -> Exp . 'MINUS' Exp Exp -> Exp . 'DEQ' Exp Exp -> Exp . 'LTH' Exp - actions: action 'LPAR' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + actions: action 'FILTER' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp + action 'SCAN' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp + action 'REPLICATE' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp + action 'BOOLVAL' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp + action 'NOT' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp + action 'AND' (explicit left 9994): shift 131 + action 'OR' (explicit left 9994): shift 132 + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp + action 'LPAR' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp action 'RPAR' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp action 'LBRACKET' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp action 'RBRACKET' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp @@ -676,16 +854,16 @@ state 16: items: Fun -> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp . action 'SEMICOLON' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp action 'READ' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp action 'WRITE' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp - action 'DEQ' (explicit left 9998): shift 58 - action 'LTH' (explicit left 9998): shift 59 + action 'DEQ' (explicit left 9996): shift 70 + action 'LTH' (explicit left 9996): shift 71 action 'EQ' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp action 'OP' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp action 'MAP' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp action 'REDUCE' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp action 'IOTA' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp action 'ARROW' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp - action 'PLUS' (explicit left 9999): shift 56 - action 'MINUS' (explicit left 9999): shift 57 + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 action 'LESS' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp action 'INT' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp action 'CHAR' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp @@ -704,7 +882,17 @@ state 16: items: Fun -> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp . action '#' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp action '$$' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp immediate action: gotos:state 17: items: Type -> 'INT' . - actions: action 'LPAR' (noprec): reduce Type --> 'INT' + actions: action 'FILTER' (noprec): reduce Type --> 'INT' + action 'SCAN' (noprec): reduce Type --> 'INT' + action 'REPLICATE' (noprec): reduce Type --> 'INT' + action 'BOOLVAL' (noprec): reduce Type --> 'INT' + action 'NOT' (noprec): reduce Type --> 'INT' + action 'AND' (noprec): reduce Type --> 'INT' + action 'OR' (noprec): reduce Type --> 'INT' + action 'TIMES' (noprec): reduce Type --> 'INT' + action 'DIVIDE' (noprec): reduce Type --> 'INT' + action 'NUMNEG' (noprec): reduce Type --> 'INT' + action 'LPAR' (noprec): reduce Type --> 'INT' action 'RPAR' (noprec): reduce Type --> 'INT' action 'LBRACKET' (noprec): reduce Type --> 'INT' action 'RBRACKET' (noprec): reduce Type --> 'INT' @@ -744,7 +932,17 @@ state 16: items: Fun -> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp . action '#' (noprec): reduce Type --> 'INT' action '$$' (noprec): reduce Type --> 'INT' immediate action: reduce Type --> 'INT' gotos:state 18: items: Type -> 'CHAR' . - actions: action 'LPAR' (noprec): reduce Type --> 'CHAR' + actions: action 'FILTER' (noprec): reduce Type --> 'CHAR' + action 'SCAN' (noprec): reduce Type --> 'CHAR' + action 'REPLICATE' (noprec): reduce Type --> 'CHAR' + action 'BOOLVAL' (noprec): reduce Type --> 'CHAR' + action 'NOT' (noprec): reduce Type --> 'CHAR' + action 'AND' (noprec): reduce Type --> 'CHAR' + action 'OR' (noprec): reduce Type --> 'CHAR' + action 'TIMES' (noprec): reduce Type --> 'CHAR' + action 'DIVIDE' (noprec): reduce Type --> 'CHAR' + action 'NUMNEG' (noprec): reduce Type --> 'CHAR' + action 'LPAR' (noprec): reduce Type --> 'CHAR' action 'RPAR' (noprec): reduce Type --> 'CHAR' action 'LBRACKET' (noprec): reduce Type --> 'CHAR' action 'RBRACKET' (noprec): reduce Type --> 'CHAR' @@ -784,7 +982,17 @@ state 16: items: Fun -> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp . action '#' (noprec): reduce Type --> 'CHAR' action '$$' (noprec): reduce Type --> 'CHAR' immediate action: reduce Type --> 'CHAR' gotos:state 19: items: Type -> 'BOOL' . - actions: action 'LPAR' (noprec): reduce Type --> 'BOOL' + actions: action 'FILTER' (noprec): reduce Type --> 'BOOL' + action 'SCAN' (noprec): reduce Type --> 'BOOL' + action 'REPLICATE' (noprec): reduce Type --> 'BOOL' + action 'BOOLVAL' (noprec): reduce Type --> 'BOOL' + action 'NOT' (noprec): reduce Type --> 'BOOL' + action 'AND' (noprec): reduce Type --> 'BOOL' + action 'OR' (noprec): reduce Type --> 'BOOL' + action 'TIMES' (noprec): reduce Type --> 'BOOL' + action 'DIVIDE' (noprec): reduce Type --> 'BOOL' + action 'NUMNEG' (noprec): reduce Type --> 'BOOL' + action 'LPAR' (noprec): reduce Type --> 'BOOL' action 'RPAR' (noprec): reduce Type --> 'BOOL' action 'LBRACKET' (noprec): reduce Type --> 'BOOL' action 'RBRACKET' (noprec): reduce Type --> 'BOOL' @@ -824,7 +1032,17 @@ state 16: items: Fun -> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp . action '#' (noprec): reduce Type --> 'BOOL' action '$$' (noprec): reduce Type --> 'BOOL' immediate action: reduce Type --> 'BOOL' gotos:state 20: items: Type -> 'LBRACKET' . Type 'RBRACKET' - actions: action 'LPAR' (noprec): error + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): error action 'LBRACKET' (noprec): shift 20 action 'RBRACKET' (noprec): error @@ -865,7 +1083,17 @@ state 16: items: Fun -> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp . action '$$' (noprec): error immediate action: gotos: goto Type: 21 state 21: items: Type -> 'LBRACKET' Type . 'RBRACKET' - actions: action 'LPAR' (noprec): error + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): shift 22 @@ -905,7 +1133,17 @@ state 21: items: Type -> 'LBRACKET' Type . 'RBRACKET' action '#' (noprec): error action '$$' (noprec): error immediate action: gotos:state 22: items: Type -> 'LBRACKET' Type 'RBRACKET' . - actions: action 'LPAR' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + actions: action 'FILTER' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'SCAN' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'REPLICATE' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'BOOLVAL' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'NOT' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'AND' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'OR' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'TIMES' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'DIVIDE' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'NUMNEG' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'LPAR' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' action 'RPAR' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' action 'LBRACKET' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' action 'RBRACKET' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' @@ -946,7 +1184,17 @@ state 21: items: Type -> 'LBRACKET' Type . 'RBRACKET' action '$$' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' immediate action: reduce Type --> 'LBRACKET' Type 'RBRACKET' gotos:state 23: items: Params -> Type . 'ID' 'COMMA' Params Params -> Type . 'ID' - actions: action 'LPAR' (noprec): error + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -987,7 +1235,17 @@ state 21: items: Type -> 'LBRACKET' Type . 'RBRACKET' action '$$' (noprec): error immediate action: gotos:state 24: items: Params -> Type 'ID' . 'COMMA' Params Params -> Type 'ID' . - actions: action 'LPAR' (noprec): reduce Params --> Type 'ID' + actions: action 'FILTER' (noprec): reduce Params --> Type 'ID' + action 'SCAN' (noprec): reduce Params --> Type 'ID' + action 'REPLICATE' (noprec): reduce Params --> Type 'ID' + action 'BOOLVAL' (noprec): reduce Params --> Type 'ID' + action 'NOT' (noprec): reduce Params --> Type 'ID' + action 'AND' (noprec): reduce Params --> Type 'ID' + action 'OR' (noprec): reduce Params --> Type 'ID' + action 'TIMES' (noprec): reduce Params --> Type 'ID' + action 'DIVIDE' (noprec): reduce Params --> Type 'ID' + action 'NUMNEG' (noprec): reduce Params --> Type 'ID' + action 'LPAR' (noprec): reduce Params --> Type 'ID' action 'RPAR' (noprec): reduce Params --> Type 'ID' action 'LBRACKET' (noprec): reduce Params --> Type 'ID' action 'RBRACKET' (noprec): reduce Params --> Type 'ID' @@ -1027,7 +1285,17 @@ state 21: items: Type -> 'LBRACKET' Type . 'RBRACKET' action '#' (noprec): reduce Params --> Type 'ID' action '$$' (noprec): reduce Params --> Type 'ID' immediate action: gotos:state 25: items: Params -> Type 'ID' 'COMMA' . Params - actions: action 'LPAR' (noprec): error + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): error action 'LBRACKET' (noprec): shift 20 action 'RBRACKET' (noprec): error @@ -1069,7 +1337,17 @@ state 21: items: Type -> 'LBRACKET' Type . 'RBRACKET' immediate action: gotos: goto Type: 23 goto Params: 26 state 26: items: Params -> Type 'ID' 'COMMA' Params . - actions: action 'LPAR' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + actions: action 'FILTER' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'SCAN' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'REPLICATE' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'BOOLVAL' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'NOT' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'AND' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'OR' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'TIMES' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'DIVIDE' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'NUMNEG' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'LPAR' (noprec): reduce Params --> Type 'ID' 'COMMA' Params action 'RPAR' (noprec): reduce Params --> Type 'ID' 'COMMA' Params action 'LBRACKET' (noprec): reduce Params --> Type 'ID' 'COMMA' Params action 'RBRACKET' (noprec): reduce Params --> Type 'ID' 'COMMA' Params @@ -1109,47 +1387,67 @@ state 26: items: Params -> Type 'ID' 'COMMA' Params . action '#' (noprec): reduce Params --> Type 'ID' 'COMMA' Params action '$$' (noprec): reduce Params --> Type 'ID' 'COMMA' Params immediate action: reduce Params --> Type 'ID' 'COMMA' Params gotos:state 27: items: BinOp -> 'PLUS' . - actions: action 'LPAR' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'RPAR' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'LBRACKET' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'RBRACKET' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'LCURLY' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'RCURLY' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'FUN' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'FN' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'COMMA' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'SEMICOLON' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'READ' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'WRITE' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'DEQ' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'LTH' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'EQ' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'OP' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'MAP' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'REDUCE' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'IOTA' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'ARROW' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'PLUS' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'MINUS' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'LESS' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'INT' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'CHAR' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'BOOL' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'IF' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'THEN' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'ELSE' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'LET' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'IN' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'EOF' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'ID' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'STRINGLIT' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'CHARLIT' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'NUM' (explicit left 9999): reduce BinOp --> 'PLUS' - action 'error' (explicit left 9999): reduce BinOp --> 'PLUS' - action '#' (explicit left 9999): reduce BinOp --> 'PLUS' - action '$$' (explicit left 9999): reduce BinOp --> 'PLUS' + actions: action 'FILTER' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'SCAN' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'REPLICATE' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'BOOLVAL' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'NOT' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'AND' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'OR' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'TIMES' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'DIVIDE' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'NUMNEG' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'LPAR' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'RPAR' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'LBRACKET' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'RBRACKET' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'LCURLY' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'RCURLY' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'FUN' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'FN' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'COMMA' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'SEMICOLON' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'READ' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'WRITE' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'DEQ' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'LTH' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'EQ' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'OP' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'MAP' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'REDUCE' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'IOTA' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'ARROW' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'PLUS' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'MINUS' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'LESS' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'INT' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'CHAR' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'BOOL' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'IF' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'THEN' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'ELSE' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'LET' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'IN' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'EOF' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'ID' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'STRINGLIT' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'CHARLIT' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'NUM' (explicit left 9997): reduce BinOp --> 'PLUS' + action 'error' (explicit left 9997): reduce BinOp --> 'PLUS' + action '#' (explicit left 9997): reduce BinOp --> 'PLUS' + action '$$' (explicit left 9997): reduce BinOp --> 'PLUS' immediate action: reduce BinOp --> 'PLUS' gotos:state 28: items: Exp -> 'NUM' . - actions: action 'LPAR' (noprec): reduce Exp --> 'NUM' + actions: action 'FILTER' (noprec): reduce Exp --> 'NUM' + action 'SCAN' (noprec): reduce Exp --> 'NUM' + action 'REPLICATE' (noprec): reduce Exp --> 'NUM' + action 'BOOLVAL' (noprec): reduce Exp --> 'NUM' + action 'NOT' (noprec): reduce Exp --> 'NUM' + action 'AND' (noprec): reduce Exp --> 'NUM' + action 'OR' (noprec): reduce Exp --> 'NUM' + action 'TIMES' (noprec): reduce Exp --> 'NUM' + action 'DIVIDE' (noprec): reduce Exp --> 'NUM' + action 'NUMNEG' (noprec): reduce Exp --> 'NUM' + action 'LPAR' (noprec): reduce Exp --> 'NUM' action 'RPAR' (noprec): reduce Exp --> 'NUM' action 'LBRACKET' (noprec): reduce Exp --> 'NUM' action 'RBRACKET' (noprec): reduce Exp --> 'NUM' @@ -1189,7 +1487,17 @@ state 26: items: Params -> Type 'ID' 'COMMA' Params . action '#' (noprec): reduce Exp --> 'NUM' action '$$' (noprec): reduce Exp --> 'NUM' immediate action: reduce Exp --> 'NUM' gotos:state 29: items: Exp -> 'CHARLIT' . - actions: action 'LPAR' (noprec): reduce Exp --> 'CHARLIT' + actions: action 'FILTER' (noprec): reduce Exp --> 'CHARLIT' + action 'SCAN' (noprec): reduce Exp --> 'CHARLIT' + action 'REPLICATE' (noprec): reduce Exp --> 'CHARLIT' + action 'BOOLVAL' (noprec): reduce Exp --> 'CHARLIT' + action 'NOT' (noprec): reduce Exp --> 'CHARLIT' + action 'AND' (noprec): reduce Exp --> 'CHARLIT' + action 'OR' (noprec): reduce Exp --> 'CHARLIT' + action 'TIMES' (noprec): reduce Exp --> 'CHARLIT' + action 'DIVIDE' (noprec): reduce Exp --> 'CHARLIT' + action 'NUMNEG' (noprec): reduce Exp --> 'CHARLIT' + action 'LPAR' (noprec): reduce Exp --> 'CHARLIT' action 'RPAR' (noprec): reduce Exp --> 'CHARLIT' action 'LBRACKET' (noprec): reduce Exp --> 'CHARLIT' action 'RBRACKET' (noprec): reduce Exp --> 'CHARLIT' @@ -1232,9 +1540,19 @@ state 26: items: Params -> Type 'ID' 'COMMA' Params . Exp -> 'ID' . 'LPAR' Exps 'RPAR' Exp -> 'ID' . 'LPAR' 'RPAR' Exp -> 'ID' . 'LBRACKET' Exp 'RBRACKET' - actions: action 'LPAR' (noprec): shift 63 + actions: action 'FILTER' (noprec): reduce Exp --> 'ID' + action 'SCAN' (noprec): reduce Exp --> 'ID' + action 'REPLICATE' (noprec): reduce Exp --> 'ID' + action 'BOOLVAL' (noprec): reduce Exp --> 'ID' + action 'NOT' (noprec): reduce Exp --> 'ID' + action 'AND' (noprec): reduce Exp --> 'ID' + action 'OR' (noprec): reduce Exp --> 'ID' + action 'TIMES' (noprec): reduce Exp --> 'ID' + action 'DIVIDE' (noprec): reduce Exp --> 'ID' + action 'NUMNEG' (noprec): reduce Exp --> 'ID' + action 'LPAR' (noprec): shift 75 action 'RPAR' (noprec): reduce Exp --> 'ID' - action 'LBRACKET' (noprec): shift 99 + action 'LBRACKET' (noprec): shift 126 action 'RBRACKET' (noprec): reduce Exp --> 'ID' action 'LCURLY' (noprec): reduce Exp --> 'ID' action 'RCURLY' (noprec): reduce Exp --> 'ID' @@ -1272,7 +1590,17 @@ state 26: items: Params -> Type 'ID' 'COMMA' Params . action '#' (noprec): reduce Exp --> 'ID' action '$$' (noprec): reduce Exp --> 'ID' immediate action: gotos:state 31: items: Exp -> 'STRINGLIT' . - actions: action 'LPAR' (noprec): reduce Exp --> 'STRINGLIT' + actions: action 'FILTER' (noprec): reduce Exp --> 'STRINGLIT' + action 'SCAN' (noprec): reduce Exp --> 'STRINGLIT' + action 'REPLICATE' (noprec): reduce Exp --> 'STRINGLIT' + action 'BOOLVAL' (noprec): reduce Exp --> 'STRINGLIT' + action 'NOT' (noprec): reduce Exp --> 'STRINGLIT' + action 'AND' (noprec): reduce Exp --> 'STRINGLIT' + action 'OR' (noprec): reduce Exp --> 'STRINGLIT' + action 'TIMES' (noprec): reduce Exp --> 'STRINGLIT' + action 'DIVIDE' (noprec): reduce Exp --> 'STRINGLIT' + action 'NUMNEG' (noprec): reduce Exp --> 'STRINGLIT' + action 'LPAR' (noprec): reduce Exp --> 'STRINGLIT' action 'RPAR' (noprec): reduce Exp --> 'STRINGLIT' action 'LBRACKET' (noprec): reduce Exp --> 'STRINGLIT' action 'RBRACKET' (noprec): reduce Exp --> 'STRINGLIT' @@ -1312,7 +1640,17 @@ state 26: items: Params -> Type 'ID' 'COMMA' Params . action '#' (noprec): reduce Exp --> 'STRINGLIT' action '$$' (noprec): reduce Exp --> 'STRINGLIT' immediate action: reduce Exp --> 'STRINGLIT' gotos:state 32: items: Exp -> 'LCURLY' . Exps 'RCURLY' - actions: action 'LPAR' (noprec): shift 93 + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -1322,15 +1660,15 @@ state 26: items: Params -> Type 'ID' 'COMMA' Params . action 'FN' (noprec): error action 'COMMA' (noprec): error action 'SEMICOLON' (noprec): error - action 'READ' (noprec): shift 67 - action 'WRITE' (noprec): shift 71 + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 action 'DEQ' (noprec): error action 'LTH' (noprec): error action 'EQ' (noprec): error action 'OP' (noprec): error - action 'MAP' (noprec): shift 77 - action 'REDUCE' (noprec): shift 82 - action 'IOTA' (noprec): shift 74 + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 action 'ARROW' (noprec): error action 'PLUS' (noprec): error action 'MINUS' (noprec): error @@ -1338,10 +1676,10 @@ state 26: items: Params -> Type 'ID' 'COMMA' Params . action 'INT' (noprec): error action 'CHAR' (noprec): error action 'BOOL' (noprec): error - action 'IF' (noprec): shift 60 + action 'IF' (noprec): shift 72 action 'THEN' (noprec): error action 'ELSE' (noprec): error - action 'LET' (noprec): shift 95 + action 'LET' (noprec): shift 122 action 'IN' (noprec): error action 'EOF' (noprec): error action 'ID' (noprec): shift 30 @@ -1351,10 +1689,20 @@ state 26: items: Params -> Type 'ID' 'COMMA' Params . action 'error' (noprec): error action '#' (noprec): error action '$$' (noprec): error - immediate action: gotos: goto Exp: 53 + immediate action: gotos: goto Exp: 65 goto Exps: 33 state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' - actions: action 'LPAR' (noprec): error + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -1394,7 +1742,17 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' action '#' (noprec): error action '$$' (noprec): error immediate action: gotos:state 34: items: Exp -> 'LCURLY' Exps 'RCURLY' . - actions: action 'LPAR' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + actions: action 'FILTER' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'SCAN' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'REPLICATE' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'BOOLVAL' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'NOT' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'AND' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'OR' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'TIMES' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'DIVIDE' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'NUMNEG' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'LPAR' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' action 'RPAR' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' action 'LBRACKET' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' action 'RBRACKET' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' @@ -1438,183 +1796,253 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' Exp -> Exp . 'MINUS' Exp Exp -> Exp . 'DEQ' Exp Exp -> Exp . 'LTH' Exp - actions: action 'LPAR' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'RPAR' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'LBRACKET' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'RBRACKET' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'LCURLY' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'RCURLY' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'FUN' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'FN' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'COMMA' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'SEMICOLON' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'READ' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'WRITE' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'DEQ' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'LTH' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'EQ' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'OP' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'MAP' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'REDUCE' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'IOTA' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'ARROW' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'PLUS' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'MINUS' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'LESS' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'INT' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'CHAR' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'BOOL' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'IF' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'THEN' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'ELSE' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'LET' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'IN' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'EOF' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'ID' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'STRINGLIT' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'CHARLIT' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'NUM' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action 'error' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action '#' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp - action '$$' (explicit left 9999): reduce Exp --> Exp 'PLUS' Exp + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + actions: action 'FILTER' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'SCAN' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'REPLICATE' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'BOOLVAL' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'NOT' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'AND' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'OR' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'LPAR' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'RPAR' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'LBRACKET' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'RBRACKET' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'LCURLY' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'RCURLY' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'FUN' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'FN' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'COMMA' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'SEMICOLON' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'READ' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'WRITE' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'DEQ' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'LTH' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'EQ' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'OP' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'MAP' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'REDUCE' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'IOTA' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'ARROW' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'PLUS' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'MINUS' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'LESS' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'INT' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'CHAR' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'BOOL' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'IF' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'THEN' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'ELSE' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'LET' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'IN' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'EOF' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'ID' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'STRINGLIT' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'CHARLIT' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'NUM' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action 'error' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action '#' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp + action '$$' (explicit left 9997): reduce Exp --> Exp 'PLUS' Exp immediate action: gotos:state 36: items: Exp -> Exp . 'PLUS' Exp Exp -> Exp . 'MINUS' Exp Exp -> Exp 'MINUS' Exp . Exp -> Exp . 'DEQ' Exp Exp -> Exp . 'LTH' Exp - actions: action 'LPAR' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'RPAR' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'LBRACKET' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'RBRACKET' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'LCURLY' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'RCURLY' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'FUN' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'FN' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'COMMA' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'SEMICOLON' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'READ' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'WRITE' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'DEQ' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'LTH' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'EQ' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'OP' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'MAP' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'REDUCE' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'IOTA' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'ARROW' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'PLUS' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'MINUS' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'LESS' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'INT' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'CHAR' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'BOOL' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'IF' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'THEN' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'ELSE' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'LET' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'IN' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'EOF' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'ID' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'STRINGLIT' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'CHARLIT' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'NUM' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action 'error' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action '#' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp - action '$$' (explicit left 9999): reduce Exp --> Exp 'MINUS' Exp + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + actions: action 'FILTER' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'SCAN' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'REPLICATE' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'BOOLVAL' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'NOT' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'AND' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'OR' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'LPAR' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'RPAR' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'LBRACKET' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'RBRACKET' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'LCURLY' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'RCURLY' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'FUN' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'FN' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'COMMA' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'SEMICOLON' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'READ' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'WRITE' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'DEQ' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'LTH' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'EQ' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'OP' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'MAP' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'REDUCE' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'IOTA' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'ARROW' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'PLUS' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'MINUS' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'LESS' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'INT' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'CHAR' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'BOOL' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'IF' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'THEN' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'ELSE' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'LET' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'IN' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'EOF' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'ID' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'STRINGLIT' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'CHARLIT' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'NUM' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action 'error' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action '#' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp + action '$$' (explicit left 9997): reduce Exp --> Exp 'MINUS' Exp immediate action: gotos:state 37: items: Exp -> Exp . 'PLUS' Exp Exp -> Exp . 'MINUS' Exp Exp -> Exp . 'DEQ' Exp Exp -> Exp 'DEQ' Exp . Exp -> Exp . 'LTH' Exp - actions: action 'LPAR' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'RPAR' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'LBRACKET' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'RBRACKET' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'LCURLY' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'RCURLY' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'FUN' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'FN' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'COMMA' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'SEMICOLON' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'READ' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'WRITE' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'DEQ' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'LTH' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'EQ' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'OP' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'MAP' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'REDUCE' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'IOTA' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'ARROW' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'PLUS' (explicit left 9999): shift 56 - action 'MINUS' (explicit left 9999): shift 57 - action 'LESS' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'INT' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'CHAR' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'BOOL' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'IF' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'THEN' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'ELSE' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'LET' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'IN' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'EOF' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'ID' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'STRINGLIT' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'CHARLIT' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'NUM' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action 'error' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action '#' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp - action '$$' (explicit left 9998): reduce Exp --> Exp 'DEQ' Exp + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + actions: action 'FILTER' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'SCAN' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'REPLICATE' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'BOOLVAL' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'NOT' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'AND' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'OR' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'LPAR' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'RPAR' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'LBRACKET' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'RBRACKET' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'LCURLY' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'RCURLY' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'FUN' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'FN' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'COMMA' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'SEMICOLON' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'READ' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'WRITE' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'DEQ' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'LTH' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'EQ' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'OP' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'MAP' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'REDUCE' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'IOTA' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'ARROW' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 + action 'LESS' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'INT' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'CHAR' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'BOOL' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'IF' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'THEN' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'ELSE' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'LET' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'IN' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'EOF' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'ID' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'STRINGLIT' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'CHARLIT' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'NUM' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action 'error' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action '#' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp + action '$$' (explicit left 9996): reduce Exp --> Exp 'DEQ' Exp immediate action: gotos:state 38: items: Exp -> Exp . 'PLUS' Exp Exp -> Exp . 'MINUS' Exp Exp -> Exp . 'DEQ' Exp Exp -> Exp . 'LTH' Exp Exp -> Exp 'LTH' Exp . - actions: action 'LPAR' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'RPAR' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'LBRACKET' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'RBRACKET' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'LCURLY' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'RCURLY' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'FUN' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'FN' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'COMMA' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'SEMICOLON' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'READ' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'WRITE' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'DEQ' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'LTH' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'EQ' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'OP' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'MAP' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'REDUCE' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'IOTA' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'ARROW' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'PLUS' (explicit left 9999): shift 56 - action 'MINUS' (explicit left 9999): shift 57 - action 'LESS' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'INT' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'CHAR' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'BOOL' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'IF' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'THEN' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'ELSE' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'LET' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'IN' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'EOF' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'ID' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'STRINGLIT' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'CHARLIT' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'NUM' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action 'error' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action '#' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp - action '$$' (explicit left 9998): reduce Exp --> Exp 'LTH' Exp + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + actions: action 'FILTER' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'SCAN' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'REPLICATE' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'BOOLVAL' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'NOT' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'AND' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'OR' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'LPAR' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'RPAR' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'LBRACKET' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'RBRACKET' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'LCURLY' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'RCURLY' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'FUN' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'FN' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'COMMA' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'SEMICOLON' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'READ' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'WRITE' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'DEQ' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'LTH' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'EQ' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'OP' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'MAP' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'REDUCE' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'IOTA' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'ARROW' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 + action 'LESS' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'INT' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'CHAR' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'BOOL' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'IF' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'THEN' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'ELSE' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'LET' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'IN' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'EOF' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'ID' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'STRINGLIT' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'CHARLIT' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'NUM' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action 'error' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action '#' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp + action '$$' (explicit left 9996): reduce Exp --> Exp 'LTH' Exp immediate action: gotos:state 39: items: Exp -> Exp . 'PLUS' Exp Exp -> Exp . 'MINUS' Exp Exp -> Exp . 'DEQ' Exp Exp -> Exp . 'LTH' Exp Exp -> 'IF' Exp . 'THEN' Exp 'ELSE' Exp - actions: action 'LPAR' (noprec): error + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (explicit left 9994): shift 131 + action 'OR' (explicit left 9994): shift 132 + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -1626,22 +2054,22 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' action 'SEMICOLON' (noprec): error action 'READ' (noprec): error action 'WRITE' (noprec): error - action 'DEQ' (explicit left 9998): shift 58 - action 'LTH' (explicit left 9998): shift 59 + action 'DEQ' (explicit left 9996): shift 70 + action 'LTH' (explicit left 9996): shift 71 action 'EQ' (noprec): error action 'OP' (noprec): error action 'MAP' (noprec): error action 'REDUCE' (noprec): error action 'IOTA' (noprec): error action 'ARROW' (noprec): error - action 'PLUS' (explicit left 9999): shift 56 - action 'MINUS' (explicit left 9999): shift 57 + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 action 'LESS' (noprec): error action 'INT' (noprec): error action 'CHAR' (noprec): error action 'BOOL' (noprec): error action 'IF' (noprec): error - action 'THEN' (noprec): shift 61 + action 'THEN' (noprec): shift 73 action 'ELSE' (noprec): error action 'LET' (noprec): error action 'IN' (noprec): error @@ -1658,7 +2086,21 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' Exp -> Exp . 'DEQ' Exp Exp -> Exp . 'LTH' Exp Exp -> 'IF' Exp 'THEN' Exp . 'ELSE' Exp - actions: action 'LPAR' (noprec): error + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (explicit left 9994): shift 131 + action 'OR' (explicit left 9994): shift 132 + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -1670,23 +2112,23 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' action 'SEMICOLON' (noprec): error action 'READ' (noprec): error action 'WRITE' (noprec): error - action 'DEQ' (explicit left 9998): shift 58 - action 'LTH' (explicit left 9998): shift 59 + action 'DEQ' (explicit left 9996): shift 70 + action 'LTH' (explicit left 9996): shift 71 action 'EQ' (noprec): error action 'OP' (noprec): error action 'MAP' (noprec): error action 'REDUCE' (noprec): error action 'IOTA' (noprec): error action 'ARROW' (noprec): error - action 'PLUS' (explicit left 9999): shift 56 - action 'MINUS' (explicit left 9999): shift 57 + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 action 'LESS' (noprec): error action 'INT' (noprec): error action 'CHAR' (noprec): error action 'BOOL' (noprec): error action 'IF' (noprec): error action 'THEN' (noprec): error - action 'ELSE' (noprec): shift 62 + action 'ELSE' (noprec): shift 74 action 'LET' (noprec): error action 'IN' (noprec): error action 'EOF' (noprec): error @@ -1702,52 +2144,80 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' Exp -> Exp . 'DEQ' Exp Exp -> Exp . 'LTH' Exp Exp -> 'IF' Exp 'THEN' Exp 'ELSE' Exp . - actions: action 'LPAR' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'RPAR' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'LBRACKET' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'RBRACKET' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'LCURLY' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'RCURLY' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'FUN' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'FN' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'COMMA' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'SEMICOLON' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'READ' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'WRITE' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'DEQ' (explicit left 9998): shift 58 - action 'LTH' (explicit left 9998): shift 59 - action 'EQ' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'OP' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'MAP' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'REDUCE' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'IOTA' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'ARROW' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'PLUS' (explicit left 9999): shift 56 - action 'MINUS' (explicit left 9999): shift 57 - action 'LESS' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'INT' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'CHAR' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'BOOL' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'IF' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'THEN' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'ELSE' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'LET' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'IN' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'EOF' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'ID' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'STRINGLIT' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'CHARLIT' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'NUM' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action 'error' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action '#' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp - action '$$' (explicit nonassoc 9997): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + actions: action 'FILTER' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'SCAN' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'REPLICATE' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'BOOLVAL' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'NOT' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'AND' (explicit left 9994): shift 131 + action 'OR' (explicit left 9994): shift 132 + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'LPAR' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'RPAR' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'LBRACKET' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'RBRACKET' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'LCURLY' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'RCURLY' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'FUN' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'FN' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'COMMA' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'SEMICOLON' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'READ' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'WRITE' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'DEQ' (explicit left 9996): shift 70 + action 'LTH' (explicit left 9996): shift 71 + action 'EQ' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'OP' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'MAP' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'REDUCE' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'IOTA' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'ARROW' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 + action 'LESS' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'INT' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'CHAR' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'BOOL' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'IF' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'THEN' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'ELSE' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'LET' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'IN' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'EOF' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'ID' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'STRINGLIT' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'CHARLIT' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'NUM' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action 'error' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action '#' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp + action '$$' (explicit nonassoc 9993): reduce Exp --> 'IF' Exp 'THEN' Exp 'ELSE' Exp immediate action: gotos:state 42: items: Exp -> Exp . 'PLUS' Exp Exp -> Exp . 'MINUS' Exp Exp -> Exp . 'DEQ' Exp Exp -> Exp . 'LTH' Exp Exp -> 'WRITE' 'LPAR' Exp . 'RPAR' - actions: action 'LPAR' (noprec): error - action 'RPAR' (noprec): shift 73 + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (explicit left 9994): shift 131 + action 'OR' (explicit left 9994): shift 132 + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error + action 'RPAR' (noprec): shift 85 action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error action 'LCURLY' (noprec): error @@ -1758,16 +2228,16 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' action 'SEMICOLON' (noprec): error action 'READ' (noprec): error action 'WRITE' (noprec): error - action 'DEQ' (explicit left 9998): shift 58 - action 'LTH' (explicit left 9998): shift 59 + action 'DEQ' (explicit left 9996): shift 70 + action 'LTH' (explicit left 9996): shift 71 action 'EQ' (noprec): error action 'OP' (noprec): error action 'MAP' (noprec): error action 'REDUCE' (noprec): error action 'IOTA' (noprec): error action 'ARROW' (noprec): error - action 'PLUS' (explicit left 9999): shift 56 - action 'MINUS' (explicit left 9999): shift 57 + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 action 'LESS' (noprec): error action 'INT' (noprec): error action 'CHAR' (noprec): error @@ -1790,8 +2260,22 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' Exp -> Exp . 'DEQ' Exp Exp -> Exp . 'LTH' Exp Exp -> 'IOTA' 'LPAR' Exp . 'RPAR' - actions: action 'LPAR' (noprec): error - action 'RPAR' (noprec): shift 76 + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (explicit left 9994): shift 131 + action 'OR' (explicit left 9994): shift 132 + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error + action 'RPAR' (noprec): shift 88 action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error action 'LCURLY' (noprec): error @@ -1802,16 +2286,16 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' action 'SEMICOLON' (noprec): error action 'READ' (noprec): error action 'WRITE' (noprec): error - action 'DEQ' (explicit left 9998): shift 58 - action 'LTH' (explicit left 9998): shift 59 + action 'DEQ' (explicit left 9996): shift 70 + action 'LTH' (explicit left 9996): shift 71 action 'EQ' (noprec): error action 'OP' (noprec): error action 'MAP' (noprec): error action 'REDUCE' (noprec): error action 'IOTA' (noprec): error action 'ARROW' (noprec): error - action 'PLUS' (explicit left 9999): shift 56 - action 'MINUS' (explicit left 9999): shift 57 + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 action 'LESS' (noprec): error action 'INT' (noprec): error action 'CHAR' (noprec): error @@ -1834,8 +2318,22 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' Exp -> Exp . 'DEQ' Exp Exp -> Exp . 'LTH' Exp Exp -> 'MAP' 'LPAR' FunArg 'COMMA' Exp . 'RPAR' - actions: action 'LPAR' (noprec): error - action 'RPAR' (noprec): shift 81 + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (explicit left 9994): shift 131 + action 'OR' (explicit left 9994): shift 132 + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error + action 'RPAR' (noprec): shift 93 action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error action 'LCURLY' (noprec): error @@ -1846,16 +2344,16 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' action 'SEMICOLON' (noprec): error action 'READ' (noprec): error action 'WRITE' (noprec): error - action 'DEQ' (explicit left 9998): shift 58 - action 'LTH' (explicit left 9998): shift 59 + action 'DEQ' (explicit left 9996): shift 70 + action 'LTH' (explicit left 9996): shift 71 action 'EQ' (noprec): error action 'OP' (noprec): error action 'MAP' (noprec): error action 'REDUCE' (noprec): error action 'IOTA' (noprec): error action 'ARROW' (noprec): error - action 'PLUS' (explicit left 9999): shift 56 - action 'MINUS' (explicit left 9999): shift 57 + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 action 'LESS' (noprec): error action 'INT' (noprec): error action 'CHAR' (noprec): error @@ -1878,7 +2376,21 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' Exp -> Exp . 'DEQ' Exp Exp -> Exp . 'LTH' Exp Exp -> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp . 'COMMA' Exp 'RPAR' - actions: action 'LPAR' (noprec): error + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (explicit left 9994): shift 131 + action 'OR' (explicit left 9994): shift 132 + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -1886,20 +2398,20 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' action 'RCURLY' (noprec): error action 'FUN' (noprec): error action 'FN' (noprec): error - action 'COMMA' (noprec): shift 86 + action 'COMMA' (noprec): shift 98 action 'SEMICOLON' (noprec): error action 'READ' (noprec): error action 'WRITE' (noprec): error - action 'DEQ' (explicit left 9998): shift 58 - action 'LTH' (explicit left 9998): shift 59 + action 'DEQ' (explicit left 9996): shift 70 + action 'LTH' (explicit left 9996): shift 71 action 'EQ' (noprec): error action 'OP' (noprec): error action 'MAP' (noprec): error action 'REDUCE' (noprec): error action 'IOTA' (noprec): error action 'ARROW' (noprec): error - action 'PLUS' (explicit left 9999): shift 56 - action 'MINUS' (explicit left 9999): shift 57 + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 action 'LESS' (noprec): error action 'INT' (noprec): error action 'CHAR' (noprec): error @@ -1922,8 +2434,22 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' Exp -> Exp . 'DEQ' Exp Exp -> Exp . 'LTH' Exp Exp -> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp . 'RPAR' - actions: action 'LPAR' (noprec): error - action 'RPAR' (noprec): shift 87 + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (explicit left 9994): shift 131 + action 'OR' (explicit left 9994): shift 132 + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error + action 'RPAR' (noprec): shift 99 action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error action 'LCURLY' (noprec): error @@ -1934,16 +2460,16 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' action 'SEMICOLON' (noprec): error action 'READ' (noprec): error action 'WRITE' (noprec): error - action 'DEQ' (explicit left 9998): shift 58 - action 'LTH' (explicit left 9998): shift 59 + action 'DEQ' (explicit left 9996): shift 70 + action 'LTH' (explicit left 9996): shift 71 action 'EQ' (noprec): error action 'OP' (noprec): error action 'MAP' (noprec): error action 'REDUCE' (noprec): error action 'IOTA' (noprec): error action 'ARROW' (noprec): error - action 'PLUS' (explicit left 9999): shift 56 - action 'MINUS' (explicit left 9999): shift 57 + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 action 'LESS' (noprec): error action 'INT' (noprec): error action 'CHAR' (noprec): error @@ -1966,7 +2492,21 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' Exp -> Exp . 'DEQ' Exp Exp -> Exp . 'LTH' Exp Exp -> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp . 'COMMA' Exp 'RPAR' - actions: action 'LPAR' (noprec): error + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (explicit left 9994): shift 131 + action 'OR' (explicit left 9994): shift 132 + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -1974,20 +2514,20 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' action 'RCURLY' (noprec): error action 'FUN' (noprec): error action 'FN' (noprec): error - action 'COMMA' (noprec): shift 91 + action 'COMMA' (noprec): shift 103 action 'SEMICOLON' (noprec): error action 'READ' (noprec): error action 'WRITE' (noprec): error - action 'DEQ' (explicit left 9998): shift 58 - action 'LTH' (explicit left 9998): shift 59 + action 'DEQ' (explicit left 9996): shift 70 + action 'LTH' (explicit left 9996): shift 71 action 'EQ' (noprec): error action 'OP' (noprec): error action 'MAP' (noprec): error action 'REDUCE' (noprec): error action 'IOTA' (noprec): error action 'ARROW' (noprec): error - action 'PLUS' (explicit left 9999): shift 56 - action 'MINUS' (explicit left 9999): shift 57 + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 action 'LESS' (noprec): error action 'INT' (noprec): error action 'CHAR' (noprec): error @@ -2010,8 +2550,22 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' Exp -> Exp . 'DEQ' Exp Exp -> Exp . 'LTH' Exp Exp -> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp . 'RPAR' - actions: action 'LPAR' (noprec): error - action 'RPAR' (noprec): shift 92 + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (explicit left 9994): shift 131 + action 'OR' (explicit left 9994): shift 132 + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error + action 'RPAR' (noprec): shift 104 action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error action 'LCURLY' (noprec): error @@ -2022,16 +2576,16 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' action 'SEMICOLON' (noprec): error action 'READ' (noprec): error action 'WRITE' (noprec): error - action 'DEQ' (explicit left 9998): shift 58 - action 'LTH' (explicit left 9998): shift 59 + action 'DEQ' (explicit left 9996): shift 70 + action 'LTH' (explicit left 9996): shift 71 action 'EQ' (noprec): error action 'OP' (noprec): error action 'MAP' (noprec): error action 'REDUCE' (noprec): error action 'IOTA' (noprec): error action 'ARROW' (noprec): error - action 'PLUS' (explicit left 9999): shift 56 - action 'MINUS' (explicit left 9999): shift 57 + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 action 'LESS' (noprec): error action 'INT' (noprec): error action 'CHAR' (noprec): error @@ -2053,29 +2607,43 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' Exp -> Exp . 'MINUS' Exp Exp -> Exp . 'DEQ' Exp Exp -> Exp . 'LTH' Exp - Exp -> 'LPAR' Exp . 'RPAR' - actions: action 'LPAR' (noprec): error - action 'RPAR' (noprec): shift 94 + Exp -> 'REPLICATE' 'LPAR' Exp . 'COMMA' Exp 'RPAR' + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (explicit left 9994): shift 131 + action 'OR' (explicit left 9994): shift 132 + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error + action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error action 'LCURLY' (noprec): error action 'RCURLY' (noprec): error action 'FUN' (noprec): error action 'FN' (noprec): error - action 'COMMA' (noprec): error + action 'COMMA' (noprec): shift 107 action 'SEMICOLON' (noprec): error action 'READ' (noprec): error action 'WRITE' (noprec): error - action 'DEQ' (explicit left 9998): shift 58 - action 'LTH' (explicit left 9998): shift 59 + action 'DEQ' (explicit left 9996): shift 70 + action 'LTH' (explicit left 9996): shift 71 action 'EQ' (noprec): error action 'OP' (noprec): error action 'MAP' (noprec): error action 'REDUCE' (noprec): error action 'IOTA' (noprec): error action 'ARROW' (noprec): error - action 'PLUS' (explicit left 9999): shift 56 - action 'MINUS' (explicit left 9999): shift 57 + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 action 'LESS' (noprec): error action 'INT' (noprec): error action 'CHAR' (noprec): error @@ -2097,9 +2665,23 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' Exp -> Exp . 'MINUS' Exp Exp -> Exp . 'DEQ' Exp Exp -> Exp . 'LTH' Exp - Exp -> 'LET' 'ID' 'EQ' Exp . 'IN' Exp - actions: action 'LPAR' (noprec): error - action 'RPAR' (noprec): error + Exp -> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp . 'RPAR' + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (explicit left 9994): shift 131 + action 'OR' (explicit left 9994): shift 132 + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error + action 'RPAR' (noprec): shift 108 action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error action 'LCURLY' (noprec): error @@ -2110,16 +2692,16 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' action 'SEMICOLON' (noprec): error action 'READ' (noprec): error action 'WRITE' (noprec): error - action 'DEQ' (explicit left 9998): shift 58 - action 'LTH' (explicit left 9998): shift 59 + action 'DEQ' (explicit left 9996): shift 70 + action 'LTH' (explicit left 9996): shift 71 action 'EQ' (noprec): error action 'OP' (noprec): error action 'MAP' (noprec): error action 'REDUCE' (noprec): error action 'IOTA' (noprec): error action 'ARROW' (noprec): error - action 'PLUS' (explicit left 9999): shift 56 - action 'MINUS' (explicit left 9999): shift 57 + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 action 'LESS' (noprec): error action 'INT' (noprec): error action 'CHAR' (noprec): error @@ -2128,7 +2710,7 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' action 'THEN' (noprec): error action 'ELSE' (noprec): error action 'LET' (noprec): error - action 'IN' (noprec): shift 98 + action 'IN' (noprec): error action 'EOF' (noprec): error action 'ID' (noprec): error action 'STRINGLIT' (noprec): error @@ -2141,55 +2723,25 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' Exp -> Exp . 'MINUS' Exp Exp -> Exp . 'DEQ' Exp Exp -> Exp . 'LTH' Exp - Exp -> 'LET' 'ID' 'EQ' Exp 'IN' Exp . - actions: action 'LPAR' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'RPAR' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'LBRACKET' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'RBRACKET' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'LCURLY' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'RCURLY' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'FUN' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'FN' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'COMMA' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'SEMICOLON' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'READ' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'WRITE' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'DEQ' (explicit left 9998): shift 58 - action 'LTH' (explicit left 9998): shift 59 - action 'EQ' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'OP' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'MAP' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'REDUCE' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'IOTA' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'ARROW' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'PLUS' (explicit left 9999): shift 56 - action 'MINUS' (explicit left 9999): shift 57 - action 'LESS' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'INT' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'CHAR' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'BOOL' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'IF' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'THEN' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'ELSE' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'LET' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'IN' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'EOF' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'ID' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'STRINGLIT' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'CHARLIT' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'NUM' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action 'error' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action '#' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - action '$$' (explicit nonassoc 9997): reduce Exp --> 'LET' 'ID' 'EQ' Exp 'IN' Exp - immediate action: gotos:state 52: items: Exp -> Exp . 'PLUS' Exp - Exp -> Exp . 'MINUS' Exp - Exp -> Exp . 'DEQ' Exp - Exp -> Exp . 'LTH' Exp - Exp -> 'ID' 'LBRACKET' Exp . 'RBRACKET' - actions: action 'LPAR' (noprec): error - action 'RPAR' (noprec): error + Exp -> 'FILTER' 'LPAR' FunArg 'COMMA' Exp . 'RPAR' + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (explicit left 9994): shift 131 + action 'OR' (explicit left 9994): shift 132 + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error + action 'RPAR' (noprec): shift 113 action 'LBRACKET' (noprec): error - action 'RBRACKET' (noprec): shift 100 + action 'RBRACKET' (noprec): error action 'LCURLY' (noprec): error action 'RCURLY' (noprec): error action 'FUN' (noprec): error @@ -2198,16 +2750,74 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' action 'SEMICOLON' (noprec): error action 'READ' (noprec): error action 'WRITE' (noprec): error - action 'DEQ' (explicit left 9998): shift 58 - action 'LTH' (explicit left 9998): shift 59 + action 'DEQ' (explicit left 9996): shift 70 + action 'LTH' (explicit left 9996): shift 71 action 'EQ' (noprec): error action 'OP' (noprec): error action 'MAP' (noprec): error action 'REDUCE' (noprec): error action 'IOTA' (noprec): error action 'ARROW' (noprec): error - action 'PLUS' (explicit left 9999): shift 56 - action 'MINUS' (explicit left 9999): shift 57 + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 + action 'LESS' (noprec): error + action 'INT' (noprec): error + action 'CHAR' (noprec): error + action 'BOOL' (noprec): error + action 'IF' (noprec): error + action 'THEN' (noprec): error + action 'ELSE' (noprec): error + action 'LET' (noprec): error + action 'IN' (noprec): error + action 'EOF' (noprec): error + action 'ID' (noprec): error + action 'STRINGLIT' (noprec): error + action 'CHARLIT' (noprec): error + action 'NUM' (noprec): error + action 'error' (noprec): error + action '#' (noprec): error + action '$$' (noprec): error + immediate action: gotos:state 52: items: Exp -> Exp . 'PLUS' Exp + Exp -> Exp . 'MINUS' Exp + Exp -> Exp . 'DEQ' Exp + Exp -> Exp . 'LTH' Exp + Exp -> 'SCAN' 'LPAR' FunArg 'COMMA' Exp . 'COMMA' Exp 'RPAR' + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (explicit left 9994): shift 131 + action 'OR' (explicit left 9994): shift 132 + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): error + action 'LCURLY' (noprec): error + action 'RCURLY' (noprec): error + action 'FUN' (noprec): error + action 'FN' (noprec): error + action 'COMMA' (noprec): shift 118 + action 'SEMICOLON' (noprec): error + action 'READ' (noprec): error + action 'WRITE' (noprec): error + action 'DEQ' (explicit left 9996): shift 70 + action 'LTH' (explicit left 9996): shift 71 + action 'EQ' (noprec): error + action 'OP' (noprec): error + action 'MAP' (noprec): error + action 'REDUCE' (noprec): error + action 'IOTA' (noprec): error + action 'ARROW' (noprec): error + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 action 'LESS' (noprec): error action 'INT' (noprec): error action 'CHAR' (noprec): error @@ -2229,9 +2839,721 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' Exp -> Exp . 'MINUS' Exp Exp -> Exp . 'DEQ' Exp Exp -> Exp . 'LTH' Exp + Exp -> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp . 'RPAR' + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (explicit left 9994): shift 131 + action 'OR' (explicit left 9994): shift 132 + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error + action 'RPAR' (noprec): shift 119 + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): error + action 'LCURLY' (noprec): error + action 'RCURLY' (noprec): error + action 'FUN' (noprec): error + action 'FN' (noprec): error + action 'COMMA' (noprec): error + action 'SEMICOLON' (noprec): error + action 'READ' (noprec): error + action 'WRITE' (noprec): error + action 'DEQ' (explicit left 9996): shift 70 + action 'LTH' (explicit left 9996): shift 71 + action 'EQ' (noprec): error + action 'OP' (noprec): error + action 'MAP' (noprec): error + action 'REDUCE' (noprec): error + action 'IOTA' (noprec): error + action 'ARROW' (noprec): error + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 + action 'LESS' (noprec): error + action 'INT' (noprec): error + action 'CHAR' (noprec): error + action 'BOOL' (noprec): error + action 'IF' (noprec): error + action 'THEN' (noprec): error + action 'ELSE' (noprec): error + action 'LET' (noprec): error + action 'IN' (noprec): error + action 'EOF' (noprec): error + action 'ID' (noprec): error + action 'STRINGLIT' (noprec): error + action 'CHARLIT' (noprec): error + action 'NUM' (noprec): error + action 'error' (noprec): error + action '#' (noprec): error + action '$$' (noprec): error + immediate action: gotos:state 54: items: Exp -> Exp . 'PLUS' Exp + Exp -> Exp . 'MINUS' Exp + Exp -> Exp . 'DEQ' Exp + Exp -> Exp . 'LTH' Exp + Exp -> 'LPAR' Exp . 'RPAR' + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (explicit left 9994): shift 131 + action 'OR' (explicit left 9994): shift 132 + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error + action 'RPAR' (noprec): shift 121 + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): error + action 'LCURLY' (noprec): error + action 'RCURLY' (noprec): error + action 'FUN' (noprec): error + action 'FN' (noprec): error + action 'COMMA' (noprec): error + action 'SEMICOLON' (noprec): error + action 'READ' (noprec): error + action 'WRITE' (noprec): error + action 'DEQ' (explicit left 9996): shift 70 + action 'LTH' (explicit left 9996): shift 71 + action 'EQ' (noprec): error + action 'OP' (noprec): error + action 'MAP' (noprec): error + action 'REDUCE' (noprec): error + action 'IOTA' (noprec): error + action 'ARROW' (noprec): error + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 + action 'LESS' (noprec): error + action 'INT' (noprec): error + action 'CHAR' (noprec): error + action 'BOOL' (noprec): error + action 'IF' (noprec): error + action 'THEN' (noprec): error + action 'ELSE' (noprec): error + action 'LET' (noprec): error + action 'IN' (noprec): error + action 'EOF' (noprec): error + action 'ID' (noprec): error + action 'STRINGLIT' (noprec): error + action 'CHARLIT' (noprec): error + action 'NUM' (noprec): error + action 'error' (noprec): error + action '#' (noprec): error + action '$$' (noprec): error + immediate action: gotos:state 55: items: Exp -> Exp . 'PLUS' Exp + Exp -> Exp . 'MINUS' Exp + Exp -> Exp . 'DEQ' Exp + Exp -> Exp . 'LTH' Exp + Exp -> 'LET' 'ID' 'EQ' Exp . MultiLet + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (explicit left 9994): shift 131 + action 'OR' (explicit left 9994): shift 132 + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): error + action 'LCURLY' (noprec): error + action 'RCURLY' (noprec): error + action 'FUN' (noprec): error + action 'FN' (noprec): error + action 'COMMA' (noprec): error + action 'SEMICOLON' (noprec): shift 136 + action 'READ' (noprec): error + action 'WRITE' (noprec): error + action 'DEQ' (explicit left 9996): shift 70 + action 'LTH' (explicit left 9996): shift 71 + action 'EQ' (noprec): error + action 'OP' (noprec): error + action 'MAP' (noprec): error + action 'REDUCE' (noprec): error + action 'IOTA' (noprec): error + action 'ARROW' (noprec): error + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 + action 'LESS' (noprec): error + action 'INT' (noprec): error + action 'CHAR' (noprec): error + action 'BOOL' (noprec): error + action 'IF' (noprec): error + action 'THEN' (noprec): error + action 'ELSE' (noprec): error + action 'LET' (noprec): error + action 'IN' (noprec): shift 135 + action 'EOF' (noprec): error + action 'ID' (noprec): error + action 'STRINGLIT' (noprec): error + action 'CHARLIT' (noprec): error + action 'NUM' (noprec): error + action 'error' (noprec): error + action '#' (noprec): error + action '$$' (noprec): error + immediate action: gotos: goto MultiLet: 125 +state 56: items: Exp -> Exp . 'PLUS' Exp + Exp -> Exp . 'MINUS' Exp + Exp -> Exp . 'DEQ' Exp + Exp -> Exp . 'LTH' Exp + Exp -> 'ID' 'LBRACKET' Exp . 'RBRACKET' + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (explicit left 9994): shift 131 + action 'OR' (explicit left 9994): shift 132 + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): shift 127 + action 'LCURLY' (noprec): error + action 'RCURLY' (noprec): error + action 'FUN' (noprec): error + action 'FN' (noprec): error + action 'COMMA' (noprec): error + action 'SEMICOLON' (noprec): error + action 'READ' (noprec): error + action 'WRITE' (noprec): error + action 'DEQ' (explicit left 9996): shift 70 + action 'LTH' (explicit left 9996): shift 71 + action 'EQ' (noprec): error + action 'OP' (noprec): error + action 'MAP' (noprec): error + action 'REDUCE' (noprec): error + action 'IOTA' (noprec): error + action 'ARROW' (noprec): error + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 + action 'LESS' (noprec): error + action 'INT' (noprec): error + action 'CHAR' (noprec): error + action 'BOOL' (noprec): error + action 'IF' (noprec): error + action 'THEN' (noprec): error + action 'ELSE' (noprec): error + action 'LET' (noprec): error + action 'IN' (noprec): error + action 'EOF' (noprec): error + action 'ID' (noprec): error + action 'STRINGLIT' (noprec): error + action 'CHARLIT' (noprec): error + action 'NUM' (noprec): error + action 'error' (noprec): error + action '#' (noprec): error + action '$$' (noprec): error + immediate action: gotos:state 57: items: Exp -> Exp . 'PLUS' Exp + Exp -> Exp . 'MINUS' Exp + Exp -> Exp . 'DEQ' Exp + Exp -> Exp . 'LTH' Exp + Exp -> Exp . 'TIMES' Exp + Exp -> Exp 'TIMES' Exp . + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + actions: action 'FILTER' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'SCAN' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'REPLICATE' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'BOOLVAL' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'NOT' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'AND' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'OR' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'TIMES' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'DIVIDE' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'NUMNEG' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'LPAR' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'RPAR' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'LBRACKET' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'RBRACKET' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'LCURLY' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'RCURLY' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'FUN' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'FN' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'COMMA' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'SEMICOLON' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'READ' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'WRITE' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'DEQ' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'LTH' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'EQ' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'OP' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'MAP' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'REDUCE' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'IOTA' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'ARROW' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'PLUS' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'MINUS' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'LESS' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'INT' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'CHAR' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'BOOL' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'IF' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'THEN' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'ELSE' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'LET' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'IN' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'EOF' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'ID' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'STRINGLIT' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'CHARLIT' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'NUM' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action 'error' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action '#' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + action '$$' (explicit left 9998): reduce Exp --> Exp 'TIMES' Exp + immediate action: gotos:state 58: items: Exp -> Exp . 'PLUS' Exp + Exp -> Exp . 'MINUS' Exp + Exp -> Exp . 'DEQ' Exp + Exp -> Exp . 'LTH' Exp + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp 'DIVIDE' Exp . + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + actions: action 'FILTER' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'SCAN' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'REPLICATE' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'BOOLVAL' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'NOT' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'AND' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'OR' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'TIMES' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'DIVIDE' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'NUMNEG' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'LPAR' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'RPAR' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'LBRACKET' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'RBRACKET' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'LCURLY' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'RCURLY' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'FUN' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'FN' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'COMMA' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'SEMICOLON' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'READ' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'WRITE' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'DEQ' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'LTH' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'EQ' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'OP' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'MAP' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'REDUCE' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'IOTA' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'ARROW' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'PLUS' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'MINUS' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'LESS' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'INT' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'CHAR' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'BOOL' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'IF' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'THEN' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'ELSE' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'LET' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'IN' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'EOF' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'ID' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'STRINGLIT' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'CHARLIT' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'NUM' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action 'error' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action '#' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + action '$$' (explicit left 9998): reduce Exp --> Exp 'DIVIDE' Exp + immediate action: gotos:state 59: items: Exp -> Exp . 'PLUS' Exp + Exp -> Exp . 'MINUS' Exp + Exp -> Exp . 'DEQ' Exp + Exp -> Exp . 'LTH' Exp + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> 'NUMNEG' Exp . + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + actions: action 'FILTER' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'SCAN' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'REPLICATE' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'BOOLVAL' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'NOT' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'AND' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'OR' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'TIMES' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'DIVIDE' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'NUMNEG' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'LPAR' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'RPAR' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'LBRACKET' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'RBRACKET' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'LCURLY' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'RCURLY' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'FUN' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'FN' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'COMMA' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'SEMICOLON' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'READ' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'WRITE' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'DEQ' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'LTH' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'EQ' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'OP' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'MAP' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'REDUCE' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'IOTA' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'ARROW' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'PLUS' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'MINUS' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'LESS' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'INT' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'CHAR' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'BOOL' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'IF' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'THEN' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'ELSE' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'LET' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'IN' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'EOF' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'ID' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'STRINGLIT' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'CHARLIT' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'NUM' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action 'error' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action '#' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + action '$$' (explicit nonassoc 9999): reduce Exp --> 'NUMNEG' Exp + immediate action: gotos:state 60: items: Exp -> Exp . 'PLUS' Exp + Exp -> Exp . 'MINUS' Exp + Exp -> Exp . 'DEQ' Exp + Exp -> Exp . 'LTH' Exp + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp 'AND' Exp . + Exp -> Exp . 'OR' Exp + actions: action 'FILTER' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'SCAN' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'REPLICATE' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'BOOLVAL' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'NOT' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'AND' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'OR' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'LPAR' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'RPAR' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'LBRACKET' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'RBRACKET' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'LCURLY' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'RCURLY' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'FUN' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'FN' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'COMMA' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'SEMICOLON' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'READ' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'WRITE' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'DEQ' (explicit left 9996): shift 70 + action 'LTH' (explicit left 9996): shift 71 + action 'EQ' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'OP' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'MAP' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'REDUCE' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'IOTA' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'ARROW' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 + action 'LESS' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'INT' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'CHAR' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'BOOL' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'IF' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'THEN' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'ELSE' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'LET' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'IN' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'EOF' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'ID' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'STRINGLIT' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'CHARLIT' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'NUM' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action 'error' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action '#' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + action '$$' (explicit left 9994): reduce Exp --> Exp 'AND' Exp + immediate action: gotos:state 61: items: Exp -> Exp . 'PLUS' Exp + Exp -> Exp . 'MINUS' Exp + Exp -> Exp . 'DEQ' Exp + Exp -> Exp . 'LTH' Exp + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + Exp -> Exp 'OR' Exp . + actions: action 'FILTER' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'SCAN' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'REPLICATE' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'BOOLVAL' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'NOT' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'AND' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'OR' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'LPAR' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'RPAR' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'LBRACKET' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'RBRACKET' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'LCURLY' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'RCURLY' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'FUN' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'FN' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'COMMA' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'SEMICOLON' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'READ' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'WRITE' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'DEQ' (explicit left 9996): shift 70 + action 'LTH' (explicit left 9996): shift 71 + action 'EQ' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'OP' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'MAP' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'REDUCE' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'IOTA' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'ARROW' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 + action 'LESS' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'INT' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'CHAR' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'BOOL' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'IF' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'THEN' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'ELSE' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'LET' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'IN' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'EOF' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'ID' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'STRINGLIT' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'CHARLIT' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'NUM' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action 'error' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action '#' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + action '$$' (explicit left 9994): reduce Exp --> Exp 'OR' Exp + immediate action: gotos:state 62: items: Exp -> Exp . 'PLUS' Exp + Exp -> Exp . 'MINUS' Exp + Exp -> Exp . 'DEQ' Exp + Exp -> Exp . 'LTH' Exp + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + Exp -> 'NOT' Exp . + actions: action 'FILTER' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'SCAN' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'REPLICATE' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'BOOLVAL' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'NOT' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'AND' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'OR' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'LPAR' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'RPAR' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'LBRACKET' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'RBRACKET' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'LCURLY' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'RCURLY' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'FUN' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'FN' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'COMMA' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'SEMICOLON' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'READ' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'WRITE' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'DEQ' (explicit left 9996): shift 70 + action 'LTH' (explicit left 9996): shift 71 + action 'EQ' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'OP' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'MAP' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'REDUCE' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'IOTA' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'ARROW' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 + action 'LESS' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'INT' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'CHAR' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'BOOL' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'IF' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'THEN' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'ELSE' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'LET' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'IN' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'EOF' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'ID' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'STRINGLIT' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'CHARLIT' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'NUM' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action 'error' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action '#' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + action '$$' (explicit nonassoc 9995): reduce Exp --> 'NOT' Exp + immediate action: gotos:state 63: items: Exp -> Exp . 'PLUS' Exp + Exp -> Exp . 'MINUS' Exp + Exp -> Exp . 'DEQ' Exp + Exp -> Exp . 'LTH' Exp + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + MultiLet -> 'IN' Exp . + actions: action 'FILTER' (noprec): reduce MultiLet --> 'IN' Exp + action 'SCAN' (noprec): reduce MultiLet --> 'IN' Exp + action 'REPLICATE' (noprec): reduce MultiLet --> 'IN' Exp + action 'BOOLVAL' (noprec): reduce MultiLet --> 'IN' Exp + action 'NOT' (noprec): reduce MultiLet --> 'IN' Exp + action 'AND' (explicit left 9994): shift 131 + action 'OR' (explicit left 9994): shift 132 + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (noprec): reduce MultiLet --> 'IN' Exp + action 'LPAR' (noprec): reduce MultiLet --> 'IN' Exp + action 'RPAR' (noprec): reduce MultiLet --> 'IN' Exp + action 'LBRACKET' (noprec): reduce MultiLet --> 'IN' Exp + action 'RBRACKET' (noprec): reduce MultiLet --> 'IN' Exp + action 'LCURLY' (noprec): reduce MultiLet --> 'IN' Exp + action 'RCURLY' (noprec): reduce MultiLet --> 'IN' Exp + action 'FUN' (noprec): reduce MultiLet --> 'IN' Exp + action 'FN' (noprec): reduce MultiLet --> 'IN' Exp + action 'COMMA' (noprec): reduce MultiLet --> 'IN' Exp + action 'SEMICOLON' (noprec): reduce MultiLet --> 'IN' Exp + action 'READ' (noprec): reduce MultiLet --> 'IN' Exp + action 'WRITE' (noprec): reduce MultiLet --> 'IN' Exp + action 'DEQ' (explicit left 9996): shift 70 + action 'LTH' (explicit left 9996): shift 71 + action 'EQ' (noprec): reduce MultiLet --> 'IN' Exp + action 'OP' (noprec): reduce MultiLet --> 'IN' Exp + action 'MAP' (noprec): reduce MultiLet --> 'IN' Exp + action 'REDUCE' (noprec): reduce MultiLet --> 'IN' Exp + action 'IOTA' (noprec): reduce MultiLet --> 'IN' Exp + action 'ARROW' (noprec): reduce MultiLet --> 'IN' Exp + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 + action 'LESS' (noprec): reduce MultiLet --> 'IN' Exp + action 'INT' (noprec): reduce MultiLet --> 'IN' Exp + action 'CHAR' (noprec): reduce MultiLet --> 'IN' Exp + action 'BOOL' (noprec): reduce MultiLet --> 'IN' Exp + action 'IF' (noprec): reduce MultiLet --> 'IN' Exp + action 'THEN' (noprec): reduce MultiLet --> 'IN' Exp + action 'ELSE' (noprec): reduce MultiLet --> 'IN' Exp + action 'LET' (noprec): reduce MultiLet --> 'IN' Exp + action 'IN' (noprec): reduce MultiLet --> 'IN' Exp + action 'EOF' (noprec): reduce MultiLet --> 'IN' Exp + action 'ID' (noprec): reduce MultiLet --> 'IN' Exp + action 'STRINGLIT' (noprec): reduce MultiLet --> 'IN' Exp + action 'CHARLIT' (noprec): reduce MultiLet --> 'IN' Exp + action 'NUM' (noprec): reduce MultiLet --> 'IN' Exp + action 'error' (noprec): reduce MultiLet --> 'IN' Exp + action '#' (noprec): reduce MultiLet --> 'IN' Exp + action '$$' (noprec): reduce MultiLet --> 'IN' Exp + immediate action: gotos:state 64: items: Exp -> Exp . 'PLUS' Exp + Exp -> Exp . 'MINUS' Exp + Exp -> Exp . 'DEQ' Exp + Exp -> Exp . 'LTH' Exp + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp + MultiLet -> 'SEMICOLON' 'ID' 'EQ' Exp . MultiLet + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (explicit left 9994): shift 131 + action 'OR' (explicit left 9994): shift 132 + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): error + action 'LCURLY' (noprec): error + action 'RCURLY' (noprec): error + action 'FUN' (noprec): error + action 'FN' (noprec): error + action 'COMMA' (noprec): error + action 'SEMICOLON' (noprec): shift 136 + action 'READ' (noprec): error + action 'WRITE' (noprec): error + action 'DEQ' (explicit left 9996): shift 70 + action 'LTH' (explicit left 9996): shift 71 + action 'EQ' (noprec): error + action 'OP' (noprec): error + action 'MAP' (noprec): error + action 'REDUCE' (noprec): error + action 'IOTA' (noprec): error + action 'ARROW' (noprec): error + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 + action 'LESS' (noprec): error + action 'INT' (noprec): error + action 'CHAR' (noprec): error + action 'BOOL' (noprec): error + action 'IF' (noprec): error + action 'THEN' (noprec): error + action 'ELSE' (noprec): error + action 'LET' (noprec): error + action 'IN' (noprec): shift 135 + action 'EOF' (noprec): error + action 'ID' (noprec): error + action 'STRINGLIT' (noprec): error + action 'CHARLIT' (noprec): error + action 'NUM' (noprec): error + action 'error' (noprec): error + action '#' (noprec): error + action '$$' (noprec): error + immediate action: gotos: goto MultiLet: 139 +state 65: items: Exp -> Exp . 'PLUS' Exp + Exp -> Exp . 'MINUS' Exp + Exp -> Exp . 'DEQ' Exp + Exp -> Exp . 'LTH' Exp + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp Exps -> Exp . 'COMMA' Exps Exps -> Exp . - actions: action 'LPAR' (noprec): reduce Exps --> Exp + actions: action 'FILTER' (noprec): reduce Exps --> Exp + action 'SCAN' (noprec): reduce Exps --> Exp + action 'REPLICATE' (noprec): reduce Exps --> Exp + action 'BOOLVAL' (noprec): reduce Exps --> Exp + action 'NOT' (noprec): reduce Exps --> Exp + action 'AND' (explicit left 9994): shift 131 + action 'OR' (explicit left 9994): shift 132 + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (noprec): reduce Exps --> Exp + action 'LPAR' (noprec): reduce Exps --> Exp action 'RPAR' (noprec): reduce Exps --> Exp action 'LBRACKET' (noprec): reduce Exps --> Exp action 'RBRACKET' (noprec): reduce Exps --> Exp @@ -2239,20 +3561,20 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' action 'RCURLY' (noprec): reduce Exps --> Exp action 'FUN' (noprec): reduce Exps --> Exp action 'FN' (noprec): reduce Exps --> Exp - action 'COMMA' (noprec): shift 101 + action 'COMMA' (noprec): shift 140 action 'SEMICOLON' (noprec): reduce Exps --> Exp action 'READ' (noprec): reduce Exps --> Exp action 'WRITE' (noprec): reduce Exps --> Exp - action 'DEQ' (explicit left 9998): shift 58 - action 'LTH' (explicit left 9998): shift 59 + action 'DEQ' (explicit left 9996): shift 70 + action 'LTH' (explicit left 9996): shift 71 action 'EQ' (noprec): reduce Exps --> Exp action 'OP' (noprec): reduce Exps --> Exp action 'MAP' (noprec): reduce Exps --> Exp action 'REDUCE' (noprec): reduce Exps --> Exp action 'IOTA' (noprec): reduce Exps --> Exp action 'ARROW' (noprec): reduce Exps --> Exp - action 'PLUS' (explicit left 9999): shift 56 - action 'MINUS' (explicit left 9999): shift 57 + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 action 'LESS' (noprec): reduce Exps --> Exp action 'INT' (noprec): reduce Exps --> Exp action 'CHAR' (noprec): reduce Exps --> Exp @@ -2270,12 +3592,26 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' action 'error' (noprec): reduce Exps --> Exp action '#' (noprec): reduce Exps --> Exp action '$$' (noprec): reduce Exps --> Exp - immediate action: gotos:state 54: items: Exp -> Exp . 'PLUS' Exp + immediate action: gotos:state 66: items: Exp -> Exp . 'PLUS' Exp Exp -> Exp . 'MINUS' Exp Exp -> Exp . 'DEQ' Exp Exp -> Exp . 'LTH' Exp + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp FunArg -> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp . - actions: action 'LPAR' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp + actions: action 'FILTER' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp + action 'SCAN' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp + action 'REPLICATE' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp + action 'BOOLVAL' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp + action 'NOT' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp + action 'AND' (explicit left 9994): shift 131 + action 'OR' (explicit left 9994): shift 132 + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp + action 'LPAR' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp action 'RPAR' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp action 'LBRACKET' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp action 'RBRACKET' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp @@ -2287,16 +3623,16 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' action 'SEMICOLON' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp action 'READ' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp action 'WRITE' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp - action 'DEQ' (explicit left 9998): shift 58 - action 'LTH' (explicit left 9998): shift 59 + action 'DEQ' (explicit left 9996): shift 70 + action 'LTH' (explicit left 9996): shift 71 action 'EQ' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp action 'OP' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp action 'MAP' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp action 'REDUCE' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp action 'IOTA' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp action 'ARROW' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp - action 'PLUS' (explicit left 9999): shift 56 - action 'MINUS' (explicit left 9999): shift 57 + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 action 'LESS' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp action 'INT' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp action 'CHAR' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp @@ -2314,12 +3650,26 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' action 'error' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp action '#' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp action '$$' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp - immediate action: gotos:state 55: items: Exp -> Exp . 'PLUS' Exp + immediate action: gotos:state 67: items: Exp -> Exp . 'PLUS' Exp Exp -> Exp . 'MINUS' Exp Exp -> Exp . 'DEQ' Exp Exp -> Exp . 'LTH' Exp + Exp -> Exp . 'TIMES' Exp + Exp -> Exp . 'DIVIDE' Exp + Exp -> Exp . 'AND' Exp + Exp -> Exp . 'OR' Exp FunArg -> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp . - actions: action 'LPAR' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp + actions: action 'FILTER' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp + action 'SCAN' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp + action 'REPLICATE' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp + action 'BOOLVAL' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp + action 'NOT' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp + action 'AND' (explicit left 9994): shift 131 + action 'OR' (explicit left 9994): shift 132 + action 'TIMES' (explicit left 9998): shift 128 + action 'DIVIDE' (explicit left 9998): shift 129 + action 'NUMNEG' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp + action 'LPAR' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp action 'RPAR' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp action 'LBRACKET' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp action 'RBRACKET' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp @@ -2331,16 +3681,16 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' action 'SEMICOLON' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp action 'READ' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp action 'WRITE' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp - action 'DEQ' (explicit left 9998): shift 58 - action 'LTH' (explicit left 9998): shift 59 + action 'DEQ' (explicit left 9996): shift 70 + action 'LTH' (explicit left 9996): shift 71 action 'EQ' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp action 'OP' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp action 'MAP' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp action 'REDUCE' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp action 'IOTA' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp action 'ARROW' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp - action 'PLUS' (explicit left 9999): shift 56 - action 'MINUS' (explicit left 9999): shift 57 + action 'PLUS' (explicit left 9997): shift 68 + action 'MINUS' (explicit left 9997): shift 69 action 'LESS' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp action 'INT' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp action 'CHAR' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp @@ -2358,8 +3708,18 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' action 'error' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp action '#' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp action '$$' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp - immediate action: gotos:state 56: items: Exp -> Exp 'PLUS' . Exp - actions: action 'LPAR' (noprec): shift 93 + immediate action: gotos:state 68: items: Exp -> Exp 'PLUS' . Exp + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -2369,15 +3729,15 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' action 'FN' (noprec): error action 'COMMA' (noprec): error action 'SEMICOLON' (noprec): error - action 'READ' (noprec): shift 67 - action 'WRITE' (noprec): shift 71 + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 action 'DEQ' (noprec): error action 'LTH' (noprec): error action 'EQ' (noprec): error action 'OP' (noprec): error - action 'MAP' (noprec): shift 77 - action 'REDUCE' (noprec): shift 82 - action 'IOTA' (noprec): shift 74 + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 action 'ARROW' (noprec): error action 'PLUS' (noprec): error action 'MINUS' (noprec): error @@ -2385,10 +3745,10 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' action 'INT' (noprec): error action 'CHAR' (noprec): error action 'BOOL' (noprec): error - action 'IF' (noprec): shift 60 + action 'IF' (noprec): shift 72 action 'THEN' (noprec): error action 'ELSE' (noprec): error - action 'LET' (noprec): shift 95 + action 'LET' (noprec): shift 122 action 'IN' (noprec): error action 'EOF' (noprec): error action 'ID' (noprec): shift 30 @@ -2399,8 +3759,18 @@ state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' action '#' (noprec): error action '$$' (noprec): error immediate action: gotos: goto Exp: 35 -state 57: items: Exp -> Exp 'MINUS' . Exp - actions: action 'LPAR' (noprec): shift 93 +state 69: items: Exp -> Exp 'MINUS' . Exp + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -2410,15 +3780,15 @@ state 57: items: Exp -> Exp 'MINUS' . Exp action 'FN' (noprec): error action 'COMMA' (noprec): error action 'SEMICOLON' (noprec): error - action 'READ' (noprec): shift 67 - action 'WRITE' (noprec): shift 71 + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 action 'DEQ' (noprec): error action 'LTH' (noprec): error action 'EQ' (noprec): error action 'OP' (noprec): error - action 'MAP' (noprec): shift 77 - action 'REDUCE' (noprec): shift 82 - action 'IOTA' (noprec): shift 74 + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 action 'ARROW' (noprec): error action 'PLUS' (noprec): error action 'MINUS' (noprec): error @@ -2426,10 +3796,10 @@ state 57: items: Exp -> Exp 'MINUS' . Exp action 'INT' (noprec): error action 'CHAR' (noprec): error action 'BOOL' (noprec): error - action 'IF' (noprec): shift 60 + action 'IF' (noprec): shift 72 action 'THEN' (noprec): error action 'ELSE' (noprec): error - action 'LET' (noprec): shift 95 + action 'LET' (noprec): shift 122 action 'IN' (noprec): error action 'EOF' (noprec): error action 'ID' (noprec): shift 30 @@ -2440,8 +3810,18 @@ state 57: items: Exp -> Exp 'MINUS' . Exp action '#' (noprec): error action '$$' (noprec): error immediate action: gotos: goto Exp: 36 -state 58: items: Exp -> Exp 'DEQ' . Exp - actions: action 'LPAR' (noprec): shift 93 +state 70: items: Exp -> Exp 'DEQ' . Exp + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -2451,15 +3831,15 @@ state 58: items: Exp -> Exp 'DEQ' . Exp action 'FN' (noprec): error action 'COMMA' (noprec): error action 'SEMICOLON' (noprec): error - action 'READ' (noprec): shift 67 - action 'WRITE' (noprec): shift 71 + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 action 'DEQ' (noprec): error action 'LTH' (noprec): error action 'EQ' (noprec): error action 'OP' (noprec): error - action 'MAP' (noprec): shift 77 - action 'REDUCE' (noprec): shift 82 - action 'IOTA' (noprec): shift 74 + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 action 'ARROW' (noprec): error action 'PLUS' (noprec): error action 'MINUS' (noprec): error @@ -2467,10 +3847,10 @@ state 58: items: Exp -> Exp 'DEQ' . Exp action 'INT' (noprec): error action 'CHAR' (noprec): error action 'BOOL' (noprec): error - action 'IF' (noprec): shift 60 + action 'IF' (noprec): shift 72 action 'THEN' (noprec): error action 'ELSE' (noprec): error - action 'LET' (noprec): shift 95 + action 'LET' (noprec): shift 122 action 'IN' (noprec): error action 'EOF' (noprec): error action 'ID' (noprec): shift 30 @@ -2481,8 +3861,18 @@ state 58: items: Exp -> Exp 'DEQ' . Exp action '#' (noprec): error action '$$' (noprec): error immediate action: gotos: goto Exp: 37 -state 59: items: Exp -> Exp 'LTH' . Exp - actions: action 'LPAR' (noprec): shift 93 +state 71: items: Exp -> Exp 'LTH' . Exp + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -2492,15 +3882,15 @@ state 59: items: Exp -> Exp 'LTH' . Exp action 'FN' (noprec): error action 'COMMA' (noprec): error action 'SEMICOLON' (noprec): error - action 'READ' (noprec): shift 67 - action 'WRITE' (noprec): shift 71 + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 action 'DEQ' (noprec): error action 'LTH' (noprec): error action 'EQ' (noprec): error action 'OP' (noprec): error - action 'MAP' (noprec): shift 77 - action 'REDUCE' (noprec): shift 82 - action 'IOTA' (noprec): shift 74 + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 action 'ARROW' (noprec): error action 'PLUS' (noprec): error action 'MINUS' (noprec): error @@ -2508,10 +3898,10 @@ state 59: items: Exp -> Exp 'LTH' . Exp action 'INT' (noprec): error action 'CHAR' (noprec): error action 'BOOL' (noprec): error - action 'IF' (noprec): shift 60 + action 'IF' (noprec): shift 72 action 'THEN' (noprec): error action 'ELSE' (noprec): error - action 'LET' (noprec): shift 95 + action 'LET' (noprec): shift 122 action 'IN' (noprec): error action 'EOF' (noprec): error action 'ID' (noprec): shift 30 @@ -2522,8 +3912,18 @@ state 59: items: Exp -> Exp 'LTH' . Exp action '#' (noprec): error action '$$' (noprec): error immediate action: gotos: goto Exp: 38 -state 60: items: Exp -> 'IF' . Exp 'THEN' Exp 'ELSE' Exp - actions: action 'LPAR' (noprec): shift 93 +state 72: items: Exp -> 'IF' . Exp 'THEN' Exp 'ELSE' Exp + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -2533,15 +3933,15 @@ state 60: items: Exp -> 'IF' . Exp 'THEN' Exp 'ELSE' Exp action 'FN' (noprec): error action 'COMMA' (noprec): error action 'SEMICOLON' (noprec): error - action 'READ' (noprec): shift 67 - action 'WRITE' (noprec): shift 71 + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 action 'DEQ' (noprec): error action 'LTH' (noprec): error action 'EQ' (noprec): error action 'OP' (noprec): error - action 'MAP' (noprec): shift 77 - action 'REDUCE' (noprec): shift 82 - action 'IOTA' (noprec): shift 74 + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 action 'ARROW' (noprec): error action 'PLUS' (noprec): error action 'MINUS' (noprec): error @@ -2549,10 +3949,10 @@ state 60: items: Exp -> 'IF' . Exp 'THEN' Exp 'ELSE' Exp action 'INT' (noprec): error action 'CHAR' (noprec): error action 'BOOL' (noprec): error - action 'IF' (noprec): shift 60 + action 'IF' (noprec): shift 72 action 'THEN' (noprec): error action 'ELSE' (noprec): error - action 'LET' (noprec): shift 95 + action 'LET' (noprec): shift 122 action 'IN' (noprec): error action 'EOF' (noprec): error action 'ID' (noprec): shift 30 @@ -2563,8 +3963,18 @@ state 60: items: Exp -> 'IF' . Exp 'THEN' Exp 'ELSE' Exp action '#' (noprec): error action '$$' (noprec): error immediate action: gotos: goto Exp: 39 -state 61: items: Exp -> 'IF' Exp 'THEN' . Exp 'ELSE' Exp - actions: action 'LPAR' (noprec): shift 93 +state 73: items: Exp -> 'IF' Exp 'THEN' . Exp 'ELSE' Exp + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -2574,15 +3984,15 @@ state 61: items: Exp -> 'IF' Exp 'THEN' . Exp 'ELSE' Exp action 'FN' (noprec): error action 'COMMA' (noprec): error action 'SEMICOLON' (noprec): error - action 'READ' (noprec): shift 67 - action 'WRITE' (noprec): shift 71 + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 action 'DEQ' (noprec): error action 'LTH' (noprec): error action 'EQ' (noprec): error action 'OP' (noprec): error - action 'MAP' (noprec): shift 77 - action 'REDUCE' (noprec): shift 82 - action 'IOTA' (noprec): shift 74 + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 action 'ARROW' (noprec): error action 'PLUS' (noprec): error action 'MINUS' (noprec): error @@ -2590,10 +4000,10 @@ state 61: items: Exp -> 'IF' Exp 'THEN' . Exp 'ELSE' Exp action 'INT' (noprec): error action 'CHAR' (noprec): error action 'BOOL' (noprec): error - action 'IF' (noprec): shift 60 + action 'IF' (noprec): shift 72 action 'THEN' (noprec): error action 'ELSE' (noprec): error - action 'LET' (noprec): shift 95 + action 'LET' (noprec): shift 122 action 'IN' (noprec): error action 'EOF' (noprec): error action 'ID' (noprec): shift 30 @@ -2604,8 +4014,18 @@ state 61: items: Exp -> 'IF' Exp 'THEN' . Exp 'ELSE' Exp action '#' (noprec): error action '$$' (noprec): error immediate action: gotos: goto Exp: 40 -state 62: items: Exp -> 'IF' Exp 'THEN' Exp 'ELSE' . Exp - actions: action 'LPAR' (noprec): shift 93 +state 74: items: Exp -> 'IF' Exp 'THEN' Exp 'ELSE' . Exp + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -2615,15 +4035,15 @@ state 62: items: Exp -> 'IF' Exp 'THEN' Exp 'ELSE' . Exp action 'FN' (noprec): error action 'COMMA' (noprec): error action 'SEMICOLON' (noprec): error - action 'READ' (noprec): shift 67 - action 'WRITE' (noprec): shift 71 + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 action 'DEQ' (noprec): error action 'LTH' (noprec): error action 'EQ' (noprec): error action 'OP' (noprec): error - action 'MAP' (noprec): shift 77 - action 'REDUCE' (noprec): shift 82 - action 'IOTA' (noprec): shift 74 + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 action 'ARROW' (noprec): error action 'PLUS' (noprec): error action 'MINUS' (noprec): error @@ -2631,10 +4051,10 @@ state 62: items: Exp -> 'IF' Exp 'THEN' Exp 'ELSE' . Exp action 'INT' (noprec): error action 'CHAR' (noprec): error action 'BOOL' (noprec): error - action 'IF' (noprec): shift 60 + action 'IF' (noprec): shift 72 action 'THEN' (noprec): error action 'ELSE' (noprec): error - action 'LET' (noprec): shift 95 + action 'LET' (noprec): shift 122 action 'IN' (noprec): error action 'EOF' (noprec): error action 'ID' (noprec): shift 30 @@ -2645,10 +4065,20 @@ state 62: items: Exp -> 'IF' Exp 'THEN' Exp 'ELSE' . Exp action '#' (noprec): error action '$$' (noprec): error immediate action: gotos: goto Exp: 41 -state 63: items: Exp -> 'ID' 'LPAR' . Exps 'RPAR' +state 75: items: Exp -> 'ID' 'LPAR' . Exps 'RPAR' Exp -> 'ID' 'LPAR' . 'RPAR' - actions: action 'LPAR' (noprec): shift 93 - action 'RPAR' (noprec): shift 66 + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 + action 'RPAR' (noprec): shift 78 action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error action 'LCURLY' (noprec): shift 32 @@ -2657,15 +4087,15 @@ state 63: items: Exp -> 'ID' 'LPAR' . Exps 'RPAR' action 'FN' (noprec): error action 'COMMA' (noprec): error action 'SEMICOLON' (noprec): error - action 'READ' (noprec): shift 67 - action 'WRITE' (noprec): shift 71 + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 action 'DEQ' (noprec): error action 'LTH' (noprec): error action 'EQ' (noprec): error action 'OP' (noprec): error - action 'MAP' (noprec): shift 77 - action 'REDUCE' (noprec): shift 82 - action 'IOTA' (noprec): shift 74 + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 action 'ARROW' (noprec): error action 'PLUS' (noprec): error action 'MINUS' (noprec): error @@ -2673,10 +4103,10 @@ state 63: items: Exp -> 'ID' 'LPAR' . Exps 'RPAR' action 'INT' (noprec): error action 'CHAR' (noprec): error action 'BOOL' (noprec): error - action 'IF' (noprec): shift 60 + action 'IF' (noprec): shift 72 action 'THEN' (noprec): error action 'ELSE' (noprec): error - action 'LET' (noprec): shift 95 + action 'LET' (noprec): shift 122 action 'IN' (noprec): error action 'EOF' (noprec): error action 'ID' (noprec): shift 30 @@ -2686,11 +4116,21 @@ state 63: items: Exp -> 'ID' 'LPAR' . Exps 'RPAR' action 'error' (noprec): error action '#' (noprec): error action '$$' (noprec): error - immediate action: gotos: goto Exp: 53 - goto Exps: 64 -state 64: items: Exp -> 'ID' 'LPAR' Exps . 'RPAR' - actions: action 'LPAR' (noprec): error - action 'RPAR' (noprec): shift 65 + immediate action: gotos: goto Exp: 65 + goto Exps: 76 +state 76: items: Exp -> 'ID' 'LPAR' Exps . 'RPAR' + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error + action 'RPAR' (noprec): shift 77 action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error action 'LCURLY' (noprec): error @@ -2728,8 +4168,18 @@ state 64: items: Exp -> 'ID' 'LPAR' Exps . 'RPAR' action 'error' (noprec): error action '#' (noprec): error action '$$' (noprec): error - immediate action: gotos:state 65: items: Exp -> 'ID' 'LPAR' Exps 'RPAR' . - actions: action 'LPAR' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + immediate action: gotos:state 77: items: Exp -> 'ID' 'LPAR' Exps 'RPAR' . + actions: action 'FILTER' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'SCAN' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'REPLICATE' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'BOOLVAL' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'NOT' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'AND' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'OR' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'TIMES' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'DIVIDE' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'NUMNEG' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'LPAR' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' action 'RPAR' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' action 'LBRACKET' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' action 'RBRACKET' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' @@ -2768,8 +4218,18 @@ state 64: items: Exp -> 'ID' 'LPAR' Exps . 'RPAR' action 'error' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' action '#' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' action '$$' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' - immediate action: reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' gotos:state 66: items: Exp -> 'ID' 'LPAR' 'RPAR' . - actions: action 'LPAR' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + immediate action: reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' gotos:state 78: items: Exp -> 'ID' 'LPAR' 'RPAR' . + actions: action 'FILTER' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'SCAN' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'REPLICATE' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'BOOLVAL' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'NOT' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'AND' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'OR' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'TIMES' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'DIVIDE' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'NUMNEG' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'LPAR' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' action 'RPAR' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' action 'LBRACKET' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' action 'RBRACKET' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' @@ -2808,8 +4268,18 @@ state 64: items: Exp -> 'ID' 'LPAR' Exps . 'RPAR' action 'error' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' action '#' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' action '$$' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' - immediate action: reduce Exp --> 'ID' 'LPAR' 'RPAR' gotos:state 67: items: Exp -> 'READ' . 'LPAR' Type 'RPAR' - actions: action 'LPAR' (noprec): shift 68 + immediate action: reduce Exp --> 'ID' 'LPAR' 'RPAR' gotos:state 79: items: Exp -> 'READ' . 'LPAR' Type 'RPAR' + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): shift 80 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -2848,8 +4318,18 @@ state 64: items: Exp -> 'ID' 'LPAR' Exps . 'RPAR' action 'error' (noprec): error action '#' (noprec): error action '$$' (noprec): error - immediate action: gotos:state 68: items: Exp -> 'READ' 'LPAR' . Type 'RPAR' - actions: action 'LPAR' (noprec): error + immediate action: gotos:state 80: items: Exp -> 'READ' 'LPAR' . Type 'RPAR' + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): error action 'LBRACKET' (noprec): shift 20 action 'RBRACKET' (noprec): error @@ -2888,10 +4368,20 @@ state 64: items: Exp -> 'ID' 'LPAR' Exps . 'RPAR' action 'error' (noprec): error action '#' (noprec): error action '$$' (noprec): error - immediate action: gotos: goto Type: 69 -state 69: items: Exp -> 'READ' 'LPAR' Type . 'RPAR' - actions: action 'LPAR' (noprec): error - action 'RPAR' (noprec): shift 70 + immediate action: gotos: goto Type: 81 +state 81: items: Exp -> 'READ' 'LPAR' Type . 'RPAR' + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error + action 'RPAR' (noprec): shift 82 action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error action 'LCURLY' (noprec): error @@ -2929,8 +4419,18 @@ state 69: items: Exp -> 'READ' 'LPAR' Type . 'RPAR' action 'error' (noprec): error action '#' (noprec): error action '$$' (noprec): error - immediate action: gotos:state 70: items: Exp -> 'READ' 'LPAR' Type 'RPAR' . - actions: action 'LPAR' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + immediate action: gotos:state 82: items: Exp -> 'READ' 'LPAR' Type 'RPAR' . + actions: action 'FILTER' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'SCAN' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'REPLICATE' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'BOOLVAL' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'NOT' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'AND' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'OR' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'TIMES' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'DIVIDE' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'NUMNEG' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'LPAR' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' action 'RPAR' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' action 'LBRACKET' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' action 'RBRACKET' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' @@ -2969,8 +4469,18 @@ state 69: items: Exp -> 'READ' 'LPAR' Type . 'RPAR' action 'error' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' action '#' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' action '$$' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' - immediate action: reduce Exp --> 'READ' 'LPAR' Type 'RPAR' gotos:state 71: items: Exp -> 'WRITE' . 'LPAR' Exp 'RPAR' - actions: action 'LPAR' (noprec): shift 72 + immediate action: reduce Exp --> 'READ' 'LPAR' Type 'RPAR' gotos:state 83: items: Exp -> 'WRITE' . 'LPAR' Exp 'RPAR' + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): shift 84 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -3009,8 +4519,18 @@ state 69: items: Exp -> 'READ' 'LPAR' Type . 'RPAR' action 'error' (noprec): error action '#' (noprec): error action '$$' (noprec): error - immediate action: gotos:state 72: items: Exp -> 'WRITE' 'LPAR' . Exp 'RPAR' - actions: action 'LPAR' (noprec): shift 93 + immediate action: gotos:state 84: items: Exp -> 'WRITE' 'LPAR' . Exp 'RPAR' + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -3020,15 +4540,15 @@ state 69: items: Exp -> 'READ' 'LPAR' Type . 'RPAR' action 'FN' (noprec): error action 'COMMA' (noprec): error action 'SEMICOLON' (noprec): error - action 'READ' (noprec): shift 67 - action 'WRITE' (noprec): shift 71 + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 action 'DEQ' (noprec): error action 'LTH' (noprec): error action 'EQ' (noprec): error action 'OP' (noprec): error - action 'MAP' (noprec): shift 77 - action 'REDUCE' (noprec): shift 82 - action 'IOTA' (noprec): shift 74 + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 action 'ARROW' (noprec): error action 'PLUS' (noprec): error action 'MINUS' (noprec): error @@ -3036,10 +4556,10 @@ state 69: items: Exp -> 'READ' 'LPAR' Type . 'RPAR' action 'INT' (noprec): error action 'CHAR' (noprec): error action 'BOOL' (noprec): error - action 'IF' (noprec): shift 60 + action 'IF' (noprec): shift 72 action 'THEN' (noprec): error action 'ELSE' (noprec): error - action 'LET' (noprec): shift 95 + action 'LET' (noprec): shift 122 action 'IN' (noprec): error action 'EOF' (noprec): error action 'ID' (noprec): shift 30 @@ -3050,8 +4570,18 @@ state 69: items: Exp -> 'READ' 'LPAR' Type . 'RPAR' action '#' (noprec): error action '$$' (noprec): error immediate action: gotos: goto Exp: 42 -state 73: items: Exp -> 'WRITE' 'LPAR' Exp 'RPAR' . - actions: action 'LPAR' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' +state 85: items: Exp -> 'WRITE' 'LPAR' Exp 'RPAR' . + actions: action 'FILTER' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'SCAN' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'REPLICATE' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'BOOLVAL' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'NOT' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'AND' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'OR' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'TIMES' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'DIVIDE' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'NUMNEG' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'LPAR' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' action 'RPAR' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' action 'LBRACKET' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' action 'RBRACKET' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' @@ -3090,8 +4620,18 @@ state 73: items: Exp -> 'WRITE' 'LPAR' Exp 'RPAR' . action 'error' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' action '#' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' action '$$' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' - immediate action: reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' gotos:state 74: items: Exp -> 'IOTA' . 'LPAR' Exp 'RPAR' - actions: action 'LPAR' (noprec): shift 75 + immediate action: reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' gotos:state 86: items: Exp -> 'IOTA' . 'LPAR' Exp 'RPAR' + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): shift 87 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -3130,8 +4670,18 @@ state 73: items: Exp -> 'WRITE' 'LPAR' Exp 'RPAR' . action 'error' (noprec): error action '#' (noprec): error action '$$' (noprec): error - immediate action: gotos:state 75: items: Exp -> 'IOTA' 'LPAR' . Exp 'RPAR' - actions: action 'LPAR' (noprec): shift 93 + immediate action: gotos:state 87: items: Exp -> 'IOTA' 'LPAR' . Exp 'RPAR' + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -3141,15 +4691,15 @@ state 73: items: Exp -> 'WRITE' 'LPAR' Exp 'RPAR' . action 'FN' (noprec): error action 'COMMA' (noprec): error action 'SEMICOLON' (noprec): error - action 'READ' (noprec): shift 67 - action 'WRITE' (noprec): shift 71 + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 action 'DEQ' (noprec): error action 'LTH' (noprec): error action 'EQ' (noprec): error action 'OP' (noprec): error - action 'MAP' (noprec): shift 77 - action 'REDUCE' (noprec): shift 82 - action 'IOTA' (noprec): shift 74 + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 action 'ARROW' (noprec): error action 'PLUS' (noprec): error action 'MINUS' (noprec): error @@ -3157,10 +4707,10 @@ state 73: items: Exp -> 'WRITE' 'LPAR' Exp 'RPAR' . action 'INT' (noprec): error action 'CHAR' (noprec): error action 'BOOL' (noprec): error - action 'IF' (noprec): shift 60 + action 'IF' (noprec): shift 72 action 'THEN' (noprec): error action 'ELSE' (noprec): error - action 'LET' (noprec): shift 95 + action 'LET' (noprec): shift 122 action 'IN' (noprec): error action 'EOF' (noprec): error action 'ID' (noprec): shift 30 @@ -3171,8 +4721,18 @@ state 73: items: Exp -> 'WRITE' 'LPAR' Exp 'RPAR' . action '#' (noprec): error action '$$' (noprec): error immediate action: gotos: goto Exp: 43 -state 76: items: Exp -> 'IOTA' 'LPAR' Exp 'RPAR' . - actions: action 'LPAR' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' +state 88: items: Exp -> 'IOTA' 'LPAR' Exp 'RPAR' . + actions: action 'FILTER' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'SCAN' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'REPLICATE' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'BOOLVAL' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'NOT' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'AND' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'OR' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'TIMES' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'DIVIDE' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'NUMNEG' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'LPAR' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' action 'RPAR' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' action 'LBRACKET' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' action 'RBRACKET' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' @@ -3211,8 +4771,18 @@ state 76: items: Exp -> 'IOTA' 'LPAR' Exp 'RPAR' . action 'error' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' action '#' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' action '$$' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' - immediate action: reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' gotos:state 77: items: Exp -> 'MAP' . 'LPAR' FunArg 'COMMA' Exp 'RPAR' - actions: action 'LPAR' (noprec): shift 78 + immediate action: reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' gotos:state 89: items: Exp -> 'MAP' . 'LPAR' FunArg 'COMMA' Exp 'RPAR' + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): shift 90 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -3251,15 +4821,25 @@ state 76: items: Exp -> 'IOTA' 'LPAR' Exp 'RPAR' . action 'error' (noprec): error action '#' (noprec): error action '$$' (noprec): error - immediate action: gotos:state 78: items: Exp -> 'MAP' 'LPAR' . FunArg 'COMMA' Exp 'RPAR' - actions: action 'LPAR' (noprec): error + immediate action: gotos:state 90: items: Exp -> 'MAP' 'LPAR' . FunArg 'COMMA' Exp 'RPAR' + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error action 'LCURLY' (noprec): error action 'RCURLY' (noprec): error action 'FUN' (noprec): error - action 'FN' (noprec): shift 104 + action 'FN' (noprec): shift 143 action 'COMMA' (noprec): error action 'SEMICOLON' (noprec): error action 'READ' (noprec): error @@ -3284,16 +4864,26 @@ state 76: items: Exp -> 'IOTA' 'LPAR' Exp 'RPAR' . action 'LET' (noprec): error action 'IN' (noprec): error action 'EOF' (noprec): error - action 'ID' (noprec): shift 103 + action 'ID' (noprec): shift 142 action 'STRINGLIT' (noprec): error action 'CHARLIT' (noprec): error action 'NUM' (noprec): error action 'error' (noprec): error action '#' (noprec): error action '$$' (noprec): error - immediate action: gotos: goto FunArg: 79 -state 79: items: Exp -> 'MAP' 'LPAR' FunArg . 'COMMA' Exp 'RPAR' - actions: action 'LPAR' (noprec): error + immediate action: gotos: goto FunArg: 91 +state 91: items: Exp -> 'MAP' 'LPAR' FunArg . 'COMMA' Exp 'RPAR' + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -3301,7 +4891,7 @@ state 79: items: Exp -> 'MAP' 'LPAR' FunArg . 'COMMA' Exp 'RPAR' action 'RCURLY' (noprec): error action 'FUN' (noprec): error action 'FN' (noprec): error - action 'COMMA' (noprec): shift 80 + action 'COMMA' (noprec): shift 92 action 'SEMICOLON' (noprec): error action 'READ' (noprec): error action 'WRITE' (noprec): error @@ -3332,8 +4922,18 @@ state 79: items: Exp -> 'MAP' 'LPAR' FunArg . 'COMMA' Exp 'RPAR' action 'error' (noprec): error action '#' (noprec): error action '$$' (noprec): error - immediate action: gotos:state 80: items: Exp -> 'MAP' 'LPAR' FunArg 'COMMA' . Exp 'RPAR' - actions: action 'LPAR' (noprec): shift 93 + immediate action: gotos:state 92: items: Exp -> 'MAP' 'LPAR' FunArg 'COMMA' . Exp 'RPAR' + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -3343,15 +4943,15 @@ state 79: items: Exp -> 'MAP' 'LPAR' FunArg . 'COMMA' Exp 'RPAR' action 'FN' (noprec): error action 'COMMA' (noprec): error action 'SEMICOLON' (noprec): error - action 'READ' (noprec): shift 67 - action 'WRITE' (noprec): shift 71 + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 action 'DEQ' (noprec): error action 'LTH' (noprec): error action 'EQ' (noprec): error action 'OP' (noprec): error - action 'MAP' (noprec): shift 77 - action 'REDUCE' (noprec): shift 82 - action 'IOTA' (noprec): shift 74 + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 action 'ARROW' (noprec): error action 'PLUS' (noprec): error action 'MINUS' (noprec): error @@ -3359,10 +4959,10 @@ state 79: items: Exp -> 'MAP' 'LPAR' FunArg . 'COMMA' Exp 'RPAR' action 'INT' (noprec): error action 'CHAR' (noprec): error action 'BOOL' (noprec): error - action 'IF' (noprec): shift 60 + action 'IF' (noprec): shift 72 action 'THEN' (noprec): error action 'ELSE' (noprec): error - action 'LET' (noprec): shift 95 + action 'LET' (noprec): shift 122 action 'IN' (noprec): error action 'EOF' (noprec): error action 'ID' (noprec): shift 30 @@ -3373,8 +4973,18 @@ state 79: items: Exp -> 'MAP' 'LPAR' FunArg . 'COMMA' Exp 'RPAR' action '#' (noprec): error action '$$' (noprec): error immediate action: gotos: goto Exp: 44 -state 81: items: Exp -> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' . - actions: action 'LPAR' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' +state 93: items: Exp -> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' . + actions: action 'FILTER' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'SCAN' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'REPLICATE' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'BOOLVAL' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'NOT' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'AND' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'OR' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'TIMES' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'DIVIDE' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'NUMNEG' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'LPAR' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' action 'RPAR' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' action 'LBRACKET' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' action 'RBRACKET' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' @@ -3413,9 +5023,19 @@ state 81: items: Exp -> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' . action 'error' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' action '#' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' action '$$' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' - immediate action: reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' gotos:state 82: items: Exp -> 'REDUCE' . 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + immediate action: reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' gotos:state 94: items: Exp -> 'REDUCE' . 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' Exp -> 'REDUCE' . 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' - actions: action 'LPAR' (noprec): shift 83 + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): shift 95 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -3454,16 +5074,26 @@ state 81: items: Exp -> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' . action 'error' (noprec): error action '#' (noprec): error action '$$' (noprec): error - immediate action: gotos:state 83: items: Exp -> 'REDUCE' 'LPAR' . FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + immediate action: gotos:state 95: items: Exp -> 'REDUCE' 'LPAR' . FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' Exp -> 'REDUCE' 'LPAR' . 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' - actions: action 'LPAR' (noprec): error + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error action 'LCURLY' (noprec): error action 'RCURLY' (noprec): error action 'FUN' (noprec): error - action 'FN' (noprec): shift 104 + action 'FN' (noprec): shift 143 action 'COMMA' (noprec): error action 'SEMICOLON' (noprec): error action 'READ' (noprec): error @@ -3471,7 +5101,7 @@ state 81: items: Exp -> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' . action 'DEQ' (noprec): error action 'LTH' (noprec): error action 'EQ' (noprec): error - action 'OP' (noprec): shift 88 + action 'OP' (noprec): shift 100 action 'MAP' (noprec): error action 'REDUCE' (noprec): error action 'IOTA' (noprec): error @@ -3488,16 +5118,26 @@ state 81: items: Exp -> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' . action 'LET' (noprec): error action 'IN' (noprec): error action 'EOF' (noprec): error - action 'ID' (noprec): shift 103 + action 'ID' (noprec): shift 142 action 'STRINGLIT' (noprec): error action 'CHARLIT' (noprec): error action 'NUM' (noprec): error action 'error' (noprec): error action '#' (noprec): error action '$$' (noprec): error - immediate action: gotos: goto FunArg: 84 -state 84: items: Exp -> 'REDUCE' 'LPAR' FunArg . 'COMMA' Exp 'COMMA' Exp 'RPAR' - actions: action 'LPAR' (noprec): error + immediate action: gotos: goto FunArg: 96 +state 96: items: Exp -> 'REDUCE' 'LPAR' FunArg . 'COMMA' Exp 'COMMA' Exp 'RPAR' + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -3505,7 +5145,7 @@ state 84: items: Exp -> 'REDUCE' 'LPAR' FunArg . 'COMMA' Exp 'COMMA' Exp 'RP action 'RCURLY' (noprec): error action 'FUN' (noprec): error action 'FN' (noprec): error - action 'COMMA' (noprec): shift 85 + action 'COMMA' (noprec): shift 97 action 'SEMICOLON' (noprec): error action 'READ' (noprec): error action 'WRITE' (noprec): error @@ -3536,8 +5176,18 @@ state 84: items: Exp -> 'REDUCE' 'LPAR' FunArg . 'COMMA' Exp 'COMMA' Exp 'RP action 'error' (noprec): error action '#' (noprec): error action '$$' (noprec): error - immediate action: gotos:state 85: items: Exp -> 'REDUCE' 'LPAR' FunArg 'COMMA' . Exp 'COMMA' Exp 'RPAR' - actions: action 'LPAR' (noprec): shift 93 + immediate action: gotos:state 97: items: Exp -> 'REDUCE' 'LPAR' FunArg 'COMMA' . Exp 'COMMA' Exp 'RPAR' + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -3547,15 +5197,15 @@ state 84: items: Exp -> 'REDUCE' 'LPAR' FunArg . 'COMMA' Exp 'COMMA' Exp 'RP action 'FN' (noprec): error action 'COMMA' (noprec): error action 'SEMICOLON' (noprec): error - action 'READ' (noprec): shift 67 - action 'WRITE' (noprec): shift 71 + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 action 'DEQ' (noprec): error action 'LTH' (noprec): error action 'EQ' (noprec): error action 'OP' (noprec): error - action 'MAP' (noprec): shift 77 - action 'REDUCE' (noprec): shift 82 - action 'IOTA' (noprec): shift 74 + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 action 'ARROW' (noprec): error action 'PLUS' (noprec): error action 'MINUS' (noprec): error @@ -3563,10 +5213,10 @@ state 84: items: Exp -> 'REDUCE' 'LPAR' FunArg . 'COMMA' Exp 'COMMA' Exp 'RP action 'INT' (noprec): error action 'CHAR' (noprec): error action 'BOOL' (noprec): error - action 'IF' (noprec): shift 60 + action 'IF' (noprec): shift 72 action 'THEN' (noprec): error action 'ELSE' (noprec): error - action 'LET' (noprec): shift 95 + action 'LET' (noprec): shift 122 action 'IN' (noprec): error action 'EOF' (noprec): error action 'ID' (noprec): shift 30 @@ -3577,8 +5227,18 @@ state 84: items: Exp -> 'REDUCE' 'LPAR' FunArg . 'COMMA' Exp 'COMMA' Exp 'RP action '#' (noprec): error action '$$' (noprec): error immediate action: gotos: goto Exp: 45 -state 86: items: Exp -> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' . Exp 'RPAR' - actions: action 'LPAR' (noprec): shift 93 +state 98: items: Exp -> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' . Exp 'RPAR' + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -3588,15 +5248,15 @@ state 86: items: Exp -> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' . Exp 'RP action 'FN' (noprec): error action 'COMMA' (noprec): error action 'SEMICOLON' (noprec): error - action 'READ' (noprec): shift 67 - action 'WRITE' (noprec): shift 71 + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 action 'DEQ' (noprec): error action 'LTH' (noprec): error action 'EQ' (noprec): error action 'OP' (noprec): error - action 'MAP' (noprec): shift 77 - action 'REDUCE' (noprec): shift 82 - action 'IOTA' (noprec): shift 74 + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 action 'ARROW' (noprec): error action 'PLUS' (noprec): error action 'MINUS' (noprec): error @@ -3604,10 +5264,10 @@ state 86: items: Exp -> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' . Exp 'RP action 'INT' (noprec): error action 'CHAR' (noprec): error action 'BOOL' (noprec): error - action 'IF' (noprec): shift 60 + action 'IF' (noprec): shift 72 action 'THEN' (noprec): error action 'ELSE' (noprec): error - action 'LET' (noprec): shift 95 + action 'LET' (noprec): shift 122 action 'IN' (noprec): error action 'EOF' (noprec): error action 'ID' (noprec): shift 30 @@ -3618,8 +5278,18 @@ state 86: items: Exp -> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' . Exp 'RP action '#' (noprec): error action '$$' (noprec): error immediate action: gotos: goto Exp: 46 -state 87: items: Exp -> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' . - actions: action 'LPAR' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' +state 99: items: Exp -> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' . + actions: action 'FILTER' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'SCAN' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'REPLICATE' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'BOOLVAL' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'NOT' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'AND' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'OR' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'TIMES' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'DIVIDE' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'NUMNEG' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'LPAR' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' action 'RPAR' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' action 'LBRACKET' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' action 'RBRACKET' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' @@ -3658,8 +5328,18 @@ state 87: items: Exp -> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR action 'error' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' action '#' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' action '$$' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' - immediate action: reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' gotos:state 88: items: Exp -> 'REDUCE' 'LPAR' 'OP' . BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' - actions: action 'LPAR' (noprec): error + immediate action: reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' gotos:state 100: items: Exp -> 'REDUCE' 'LPAR' 'OP' . BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -3679,7 +5359,7 @@ state 87: items: Exp -> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR action 'REDUCE' (noprec): error action 'IOTA' (noprec): error action 'ARROW' (noprec): error - action 'PLUS' (explicit left 9999): shift 27 + action 'PLUS' (explicit left 9997): shift 27 action 'MINUS' (noprec): error action 'LESS' (noprec): error action 'INT' (noprec): error @@ -3698,9 +5378,19 @@ state 87: items: Exp -> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR action 'error' (noprec): error action '#' (noprec): error action '$$' (noprec): error - immediate action: gotos: goto BinOp: 89 -state 89: items: Exp -> 'REDUCE' 'LPAR' 'OP' BinOp . 'COMMA' Exp 'COMMA' Exp 'RPAR' - actions: action 'LPAR' (noprec): error + immediate action: gotos: goto BinOp: 101 +state 101: items: Exp -> 'REDUCE' 'LPAR' 'OP' BinOp . 'COMMA' Exp 'COMMA' Exp 'RPAR' + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -3708,7 +5398,7 @@ state 89: items: Exp -> 'REDUCE' 'LPAR' 'OP' BinOp . 'COMMA' Exp 'COMMA' Exp action 'RCURLY' (noprec): error action 'FUN' (noprec): error action 'FN' (noprec): error - action 'COMMA' (noprec): shift 90 + action 'COMMA' (noprec): shift 102 action 'SEMICOLON' (noprec): error action 'READ' (noprec): error action 'WRITE' (noprec): error @@ -3739,8 +5429,18 @@ state 89: items: Exp -> 'REDUCE' 'LPAR' 'OP' BinOp . 'COMMA' Exp 'COMMA' Exp action 'error' (noprec): error action '#' (noprec): error action '$$' (noprec): error - immediate action: gotos:state 90: items: Exp -> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' . Exp 'COMMA' Exp 'RPAR' - actions: action 'LPAR' (noprec): shift 93 + immediate action: gotos:state 102: items: Exp -> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' . Exp 'COMMA' Exp 'RPAR' + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -3750,15 +5450,15 @@ state 89: items: Exp -> 'REDUCE' 'LPAR' 'OP' BinOp . 'COMMA' Exp 'COMMA' Exp action 'FN' (noprec): error action 'COMMA' (noprec): error action 'SEMICOLON' (noprec): error - action 'READ' (noprec): shift 67 - action 'WRITE' (noprec): shift 71 + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 action 'DEQ' (noprec): error action 'LTH' (noprec): error action 'EQ' (noprec): error action 'OP' (noprec): error - action 'MAP' (noprec): shift 77 - action 'REDUCE' (noprec): shift 82 - action 'IOTA' (noprec): shift 74 + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 action 'ARROW' (noprec): error action 'PLUS' (noprec): error action 'MINUS' (noprec): error @@ -3766,10 +5466,10 @@ state 89: items: Exp -> 'REDUCE' 'LPAR' 'OP' BinOp . 'COMMA' Exp 'COMMA' Exp action 'INT' (noprec): error action 'CHAR' (noprec): error action 'BOOL' (noprec): error - action 'IF' (noprec): shift 60 + action 'IF' (noprec): shift 72 action 'THEN' (noprec): error action 'ELSE' (noprec): error - action 'LET' (noprec): shift 95 + action 'LET' (noprec): shift 122 action 'IN' (noprec): error action 'EOF' (noprec): error action 'ID' (noprec): shift 30 @@ -3780,8 +5480,18 @@ state 89: items: Exp -> 'REDUCE' 'LPAR' 'OP' BinOp . 'COMMA' Exp 'COMMA' Exp action '#' (noprec): error action '$$' (noprec): error immediate action: gotos: goto Exp: 47 -state 91: items: Exp -> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' . Exp 'RPAR' - actions: action 'LPAR' (noprec): shift 93 +state 103: items: Exp -> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' . Exp 'RPAR' + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -3791,15 +5501,15 @@ state 91: items: Exp -> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' . Exp action 'FN' (noprec): error action 'COMMA' (noprec): error action 'SEMICOLON' (noprec): error - action 'READ' (noprec): shift 67 - action 'WRITE' (noprec): shift 71 + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 action 'DEQ' (noprec): error action 'LTH' (noprec): error action 'EQ' (noprec): error action 'OP' (noprec): error - action 'MAP' (noprec): shift 77 - action 'REDUCE' (noprec): shift 82 - action 'IOTA' (noprec): shift 74 + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 action 'ARROW' (noprec): error action 'PLUS' (noprec): error action 'MINUS' (noprec): error @@ -3807,10 +5517,10 @@ state 91: items: Exp -> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' . Exp action 'INT' (noprec): error action 'CHAR' (noprec): error action 'BOOL' (noprec): error - action 'IF' (noprec): shift 60 + action 'IF' (noprec): shift 72 action 'THEN' (noprec): error action 'ELSE' (noprec): error - action 'LET' (noprec): shift 95 + action 'LET' (noprec): shift 122 action 'IN' (noprec): error action 'EOF' (noprec): error action 'ID' (noprec): shift 30 @@ -3821,8 +5531,18 @@ state 91: items: Exp -> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' . Exp action '#' (noprec): error action '$$' (noprec): error immediate action: gotos: goto Exp: 48 -state 92: items: Exp -> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' . - actions: action 'LPAR' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' +state 104: items: Exp -> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' . + actions: action 'FILTER' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'SCAN' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'REPLICATE' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'BOOLVAL' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'NOT' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'AND' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'OR' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'TIMES' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'DIVIDE' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'NUMNEG' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'LPAR' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' action 'RPAR' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' action 'LBRACKET' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' action 'RBRACKET' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' @@ -3861,8 +5581,68 @@ state 92: items: Exp -> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp ' action 'error' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' action '#' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' action '$$' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' - immediate action: reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' gotos:state 93: items: Exp -> 'LPAR' . Exp 'RPAR' - actions: action 'LPAR' (noprec): shift 93 + immediate action: reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' gotos:state 105: items: Exp -> 'REPLICATE' . 'LPAR' Exp 'COMMA' Exp 'RPAR' + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): shift 106 + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): error + action 'LCURLY' (noprec): error + action 'RCURLY' (noprec): error + action 'FUN' (noprec): error + action 'FN' (noprec): error + action 'COMMA' (noprec): error + action 'SEMICOLON' (noprec): error + action 'READ' (noprec): error + action 'WRITE' (noprec): error + action 'DEQ' (noprec): error + action 'LTH' (noprec): error + action 'EQ' (noprec): error + action 'OP' (noprec): error + action 'MAP' (noprec): error + action 'REDUCE' (noprec): error + action 'IOTA' (noprec): error + action 'ARROW' (noprec): error + action 'PLUS' (noprec): error + action 'MINUS' (noprec): error + action 'LESS' (noprec): error + action 'INT' (noprec): error + action 'CHAR' (noprec): error + action 'BOOL' (noprec): error + action 'IF' (noprec): error + action 'THEN' (noprec): error + action 'ELSE' (noprec): error + action 'LET' (noprec): error + action 'IN' (noprec): error + action 'EOF' (noprec): error + action 'ID' (noprec): error + action 'STRINGLIT' (noprec): error + action 'CHARLIT' (noprec): error + action 'NUM' (noprec): error + action 'error' (noprec): error + action '#' (noprec): error + action '$$' (noprec): error + immediate action: gotos:state 106: items: Exp -> 'REPLICATE' 'LPAR' . Exp 'COMMA' Exp 'RPAR' + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -3872,15 +5652,15 @@ state 92: items: Exp -> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp ' action 'FN' (noprec): error action 'COMMA' (noprec): error action 'SEMICOLON' (noprec): error - action 'READ' (noprec): shift 67 - action 'WRITE' (noprec): shift 71 + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 action 'DEQ' (noprec): error action 'LTH' (noprec): error action 'EQ' (noprec): error action 'OP' (noprec): error - action 'MAP' (noprec): shift 77 - action 'REDUCE' (noprec): shift 82 - action 'IOTA' (noprec): shift 74 + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 action 'ARROW' (noprec): error action 'PLUS' (noprec): error action 'MINUS' (noprec): error @@ -3888,10 +5668,10 @@ state 92: items: Exp -> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp ' action 'INT' (noprec): error action 'CHAR' (noprec): error action 'BOOL' (noprec): error - action 'IF' (noprec): shift 60 + action 'IF' (noprec): shift 72 action 'THEN' (noprec): error action 'ELSE' (noprec): error - action 'LET' (noprec): shift 95 + action 'LET' (noprec): shift 122 action 'IN' (noprec): error action 'EOF' (noprec): error action 'ID' (noprec): shift 30 @@ -3902,8 +5682,725 @@ state 92: items: Exp -> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp ' action '#' (noprec): error action '$$' (noprec): error immediate action: gotos: goto Exp: 49 -state 94: items: Exp -> 'LPAR' Exp 'RPAR' . - actions: action 'LPAR' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' +state 107: items: Exp -> 'REPLICATE' 'LPAR' Exp 'COMMA' . Exp 'RPAR' + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): error + action 'LCURLY' (noprec): shift 32 + action 'RCURLY' (noprec): error + action 'FUN' (noprec): error + action 'FN' (noprec): error + action 'COMMA' (noprec): error + action 'SEMICOLON' (noprec): error + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 + action 'DEQ' (noprec): error + action 'LTH' (noprec): error + action 'EQ' (noprec): error + action 'OP' (noprec): error + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 + action 'ARROW' (noprec): error + action 'PLUS' (noprec): error + action 'MINUS' (noprec): error + action 'LESS' (noprec): error + action 'INT' (noprec): error + action 'CHAR' (noprec): error + action 'BOOL' (noprec): error + action 'IF' (noprec): shift 72 + action 'THEN' (noprec): error + action 'ELSE' (noprec): error + action 'LET' (noprec): shift 122 + action 'IN' (noprec): error + action 'EOF' (noprec): error + action 'ID' (noprec): shift 30 + action 'STRINGLIT' (noprec): shift 31 + action 'CHARLIT' (noprec): shift 29 + action 'NUM' (noprec): shift 28 + action 'error' (noprec): error + action '#' (noprec): error + action '$$' (noprec): error + immediate action: gotos: goto Exp: 50 +state 108: items: Exp -> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' . + actions: action 'FILTER' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'SCAN' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'REPLICATE' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'BOOLVAL' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'NOT' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'AND' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'OR' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'TIMES' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'DIVIDE' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'NUMNEG' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'LPAR' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'RPAR' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'LBRACKET' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'RBRACKET' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'LCURLY' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'RCURLY' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'FUN' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'FN' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'COMMA' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'SEMICOLON' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'READ' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'WRITE' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'DEQ' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'LTH' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'EQ' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'OP' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'MAP' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'REDUCE' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'IOTA' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'ARROW' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'PLUS' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'MINUS' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'LESS' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'INT' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'CHAR' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'BOOL' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'IF' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'THEN' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'ELSE' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'LET' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'IN' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'EOF' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'ID' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'STRINGLIT' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'CHARLIT' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'NUM' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action 'error' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action '#' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + action '$$' (noprec): reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' + immediate action: reduce Exp --> 'REPLICATE' 'LPAR' Exp 'COMMA' Exp 'RPAR' gotos:state 109: items: Exp -> 'FILTER' . 'LPAR' FunArg 'COMMA' Exp 'RPAR' + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): shift 110 + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): error + action 'LCURLY' (noprec): error + action 'RCURLY' (noprec): error + action 'FUN' (noprec): error + action 'FN' (noprec): error + action 'COMMA' (noprec): error + action 'SEMICOLON' (noprec): error + action 'READ' (noprec): error + action 'WRITE' (noprec): error + action 'DEQ' (noprec): error + action 'LTH' (noprec): error + action 'EQ' (noprec): error + action 'OP' (noprec): error + action 'MAP' (noprec): error + action 'REDUCE' (noprec): error + action 'IOTA' (noprec): error + action 'ARROW' (noprec): error + action 'PLUS' (noprec): error + action 'MINUS' (noprec): error + action 'LESS' (noprec): error + action 'INT' (noprec): error + action 'CHAR' (noprec): error + action 'BOOL' (noprec): error + action 'IF' (noprec): error + action 'THEN' (noprec): error + action 'ELSE' (noprec): error + action 'LET' (noprec): error + action 'IN' (noprec): error + action 'EOF' (noprec): error + action 'ID' (noprec): error + action 'STRINGLIT' (noprec): error + action 'CHARLIT' (noprec): error + action 'NUM' (noprec): error + action 'error' (noprec): error + action '#' (noprec): error + action '$$' (noprec): error + immediate action: gotos:state 110: items: Exp -> 'FILTER' 'LPAR' . FunArg 'COMMA' Exp 'RPAR' + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): error + action 'LCURLY' (noprec): error + action 'RCURLY' (noprec): error + action 'FUN' (noprec): error + action 'FN' (noprec): shift 143 + action 'COMMA' (noprec): error + action 'SEMICOLON' (noprec): error + action 'READ' (noprec): error + action 'WRITE' (noprec): error + action 'DEQ' (noprec): error + action 'LTH' (noprec): error + action 'EQ' (noprec): error + action 'OP' (noprec): error + action 'MAP' (noprec): error + action 'REDUCE' (noprec): error + action 'IOTA' (noprec): error + action 'ARROW' (noprec): error + action 'PLUS' (noprec): error + action 'MINUS' (noprec): error + action 'LESS' (noprec): error + action 'INT' (noprec): error + action 'CHAR' (noprec): error + action 'BOOL' (noprec): error + action 'IF' (noprec): error + action 'THEN' (noprec): error + action 'ELSE' (noprec): error + action 'LET' (noprec): error + action 'IN' (noprec): error + action 'EOF' (noprec): error + action 'ID' (noprec): shift 142 + action 'STRINGLIT' (noprec): error + action 'CHARLIT' (noprec): error + action 'NUM' (noprec): error + action 'error' (noprec): error + action '#' (noprec): error + action '$$' (noprec): error + immediate action: gotos: goto FunArg: 111 +state 111: items: Exp -> 'FILTER' 'LPAR' FunArg . 'COMMA' Exp 'RPAR' + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): error + action 'LCURLY' (noprec): error + action 'RCURLY' (noprec): error + action 'FUN' (noprec): error + action 'FN' (noprec): error + action 'COMMA' (noprec): shift 112 + action 'SEMICOLON' (noprec): error + action 'READ' (noprec): error + action 'WRITE' (noprec): error + action 'DEQ' (noprec): error + action 'LTH' (noprec): error + action 'EQ' (noprec): error + action 'OP' (noprec): error + action 'MAP' (noprec): error + action 'REDUCE' (noprec): error + action 'IOTA' (noprec): error + action 'ARROW' (noprec): error + action 'PLUS' (noprec): error + action 'MINUS' (noprec): error + action 'LESS' (noprec): error + action 'INT' (noprec): error + action 'CHAR' (noprec): error + action 'BOOL' (noprec): error + action 'IF' (noprec): error + action 'THEN' (noprec): error + action 'ELSE' (noprec): error + action 'LET' (noprec): error + action 'IN' (noprec): error + action 'EOF' (noprec): error + action 'ID' (noprec): error + action 'STRINGLIT' (noprec): error + action 'CHARLIT' (noprec): error + action 'NUM' (noprec): error + action 'error' (noprec): error + action '#' (noprec): error + action '$$' (noprec): error + immediate action: gotos:state 112: items: Exp -> 'FILTER' 'LPAR' FunArg 'COMMA' . Exp 'RPAR' + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): error + action 'LCURLY' (noprec): shift 32 + action 'RCURLY' (noprec): error + action 'FUN' (noprec): error + action 'FN' (noprec): error + action 'COMMA' (noprec): error + action 'SEMICOLON' (noprec): error + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 + action 'DEQ' (noprec): error + action 'LTH' (noprec): error + action 'EQ' (noprec): error + action 'OP' (noprec): error + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 + action 'ARROW' (noprec): error + action 'PLUS' (noprec): error + action 'MINUS' (noprec): error + action 'LESS' (noprec): error + action 'INT' (noprec): error + action 'CHAR' (noprec): error + action 'BOOL' (noprec): error + action 'IF' (noprec): shift 72 + action 'THEN' (noprec): error + action 'ELSE' (noprec): error + action 'LET' (noprec): shift 122 + action 'IN' (noprec): error + action 'EOF' (noprec): error + action 'ID' (noprec): shift 30 + action 'STRINGLIT' (noprec): shift 31 + action 'CHARLIT' (noprec): shift 29 + action 'NUM' (noprec): shift 28 + action 'error' (noprec): error + action '#' (noprec): error + action '$$' (noprec): error + immediate action: gotos: goto Exp: 51 +state 113: items: Exp -> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' . + actions: action 'FILTER' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'SCAN' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'REPLICATE' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'BOOLVAL' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'NOT' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'AND' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'OR' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'TIMES' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'DIVIDE' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'NUMNEG' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'LPAR' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'RPAR' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'LBRACKET' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'RBRACKET' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'LCURLY' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'RCURLY' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'FUN' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'FN' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'COMMA' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'SEMICOLON' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'READ' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'WRITE' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'DEQ' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'LTH' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'EQ' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'OP' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'MAP' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'REDUCE' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'IOTA' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'ARROW' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'PLUS' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'MINUS' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'LESS' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'INT' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'CHAR' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'BOOL' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'IF' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'THEN' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'ELSE' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'LET' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'IN' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'EOF' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'ID' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'STRINGLIT' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'CHARLIT' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'NUM' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'error' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action '#' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action '$$' (noprec): reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + immediate action: reduce Exp --> 'FILTER' 'LPAR' FunArg 'COMMA' Exp 'RPAR' gotos:state 114: items: Exp -> 'SCAN' . 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): shift 115 + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): error + action 'LCURLY' (noprec): error + action 'RCURLY' (noprec): error + action 'FUN' (noprec): error + action 'FN' (noprec): error + action 'COMMA' (noprec): error + action 'SEMICOLON' (noprec): error + action 'READ' (noprec): error + action 'WRITE' (noprec): error + action 'DEQ' (noprec): error + action 'LTH' (noprec): error + action 'EQ' (noprec): error + action 'OP' (noprec): error + action 'MAP' (noprec): error + action 'REDUCE' (noprec): error + action 'IOTA' (noprec): error + action 'ARROW' (noprec): error + action 'PLUS' (noprec): error + action 'MINUS' (noprec): error + action 'LESS' (noprec): error + action 'INT' (noprec): error + action 'CHAR' (noprec): error + action 'BOOL' (noprec): error + action 'IF' (noprec): error + action 'THEN' (noprec): error + action 'ELSE' (noprec): error + action 'LET' (noprec): error + action 'IN' (noprec): error + action 'EOF' (noprec): error + action 'ID' (noprec): error + action 'STRINGLIT' (noprec): error + action 'CHARLIT' (noprec): error + action 'NUM' (noprec): error + action 'error' (noprec): error + action '#' (noprec): error + action '$$' (noprec): error + immediate action: gotos:state 115: items: Exp -> 'SCAN' 'LPAR' . FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): error + action 'LCURLY' (noprec): error + action 'RCURLY' (noprec): error + action 'FUN' (noprec): error + action 'FN' (noprec): shift 143 + action 'COMMA' (noprec): error + action 'SEMICOLON' (noprec): error + action 'READ' (noprec): error + action 'WRITE' (noprec): error + action 'DEQ' (noprec): error + action 'LTH' (noprec): error + action 'EQ' (noprec): error + action 'OP' (noprec): error + action 'MAP' (noprec): error + action 'REDUCE' (noprec): error + action 'IOTA' (noprec): error + action 'ARROW' (noprec): error + action 'PLUS' (noprec): error + action 'MINUS' (noprec): error + action 'LESS' (noprec): error + action 'INT' (noprec): error + action 'CHAR' (noprec): error + action 'BOOL' (noprec): error + action 'IF' (noprec): error + action 'THEN' (noprec): error + action 'ELSE' (noprec): error + action 'LET' (noprec): error + action 'IN' (noprec): error + action 'EOF' (noprec): error + action 'ID' (noprec): shift 142 + action 'STRINGLIT' (noprec): error + action 'CHARLIT' (noprec): error + action 'NUM' (noprec): error + action 'error' (noprec): error + action '#' (noprec): error + action '$$' (noprec): error + immediate action: gotos: goto FunArg: 116 +state 116: items: Exp -> 'SCAN' 'LPAR' FunArg . 'COMMA' Exp 'COMMA' Exp 'RPAR' + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): error + action 'LCURLY' (noprec): error + action 'RCURLY' (noprec): error + action 'FUN' (noprec): error + action 'FN' (noprec): error + action 'COMMA' (noprec): shift 117 + action 'SEMICOLON' (noprec): error + action 'READ' (noprec): error + action 'WRITE' (noprec): error + action 'DEQ' (noprec): error + action 'LTH' (noprec): error + action 'EQ' (noprec): error + action 'OP' (noprec): error + action 'MAP' (noprec): error + action 'REDUCE' (noprec): error + action 'IOTA' (noprec): error + action 'ARROW' (noprec): error + action 'PLUS' (noprec): error + action 'MINUS' (noprec): error + action 'LESS' (noprec): error + action 'INT' (noprec): error + action 'CHAR' (noprec): error + action 'BOOL' (noprec): error + action 'IF' (noprec): error + action 'THEN' (noprec): error + action 'ELSE' (noprec): error + action 'LET' (noprec): error + action 'IN' (noprec): error + action 'EOF' (noprec): error + action 'ID' (noprec): error + action 'STRINGLIT' (noprec): error + action 'CHARLIT' (noprec): error + action 'NUM' (noprec): error + action 'error' (noprec): error + action '#' (noprec): error + action '$$' (noprec): error + immediate action: gotos:state 117: items: Exp -> 'SCAN' 'LPAR' FunArg 'COMMA' . Exp 'COMMA' Exp 'RPAR' + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): error + action 'LCURLY' (noprec): shift 32 + action 'RCURLY' (noprec): error + action 'FUN' (noprec): error + action 'FN' (noprec): error + action 'COMMA' (noprec): error + action 'SEMICOLON' (noprec): error + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 + action 'DEQ' (noprec): error + action 'LTH' (noprec): error + action 'EQ' (noprec): error + action 'OP' (noprec): error + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 + action 'ARROW' (noprec): error + action 'PLUS' (noprec): error + action 'MINUS' (noprec): error + action 'LESS' (noprec): error + action 'INT' (noprec): error + action 'CHAR' (noprec): error + action 'BOOL' (noprec): error + action 'IF' (noprec): shift 72 + action 'THEN' (noprec): error + action 'ELSE' (noprec): error + action 'LET' (noprec): shift 122 + action 'IN' (noprec): error + action 'EOF' (noprec): error + action 'ID' (noprec): shift 30 + action 'STRINGLIT' (noprec): shift 31 + action 'CHARLIT' (noprec): shift 29 + action 'NUM' (noprec): shift 28 + action 'error' (noprec): error + action '#' (noprec): error + action '$$' (noprec): error + immediate action: gotos: goto Exp: 52 +state 118: items: Exp -> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' . Exp 'RPAR' + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): error + action 'LCURLY' (noprec): shift 32 + action 'RCURLY' (noprec): error + action 'FUN' (noprec): error + action 'FN' (noprec): error + action 'COMMA' (noprec): error + action 'SEMICOLON' (noprec): error + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 + action 'DEQ' (noprec): error + action 'LTH' (noprec): error + action 'EQ' (noprec): error + action 'OP' (noprec): error + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 + action 'ARROW' (noprec): error + action 'PLUS' (noprec): error + action 'MINUS' (noprec): error + action 'LESS' (noprec): error + action 'INT' (noprec): error + action 'CHAR' (noprec): error + action 'BOOL' (noprec): error + action 'IF' (noprec): shift 72 + action 'THEN' (noprec): error + action 'ELSE' (noprec): error + action 'LET' (noprec): shift 122 + action 'IN' (noprec): error + action 'EOF' (noprec): error + action 'ID' (noprec): shift 30 + action 'STRINGLIT' (noprec): shift 31 + action 'CHARLIT' (noprec): shift 29 + action 'NUM' (noprec): shift 28 + action 'error' (noprec): error + action '#' (noprec): error + action '$$' (noprec): error + immediate action: gotos: goto Exp: 53 +state 119: items: Exp -> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' . + actions: action 'FILTER' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'SCAN' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'REPLICATE' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'BOOLVAL' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'NOT' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'AND' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'OR' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'TIMES' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'DIVIDE' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'NUMNEG' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'LPAR' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'RPAR' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'LBRACKET' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'RBRACKET' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'LCURLY' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'RCURLY' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'FUN' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'FN' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'COMMA' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'SEMICOLON' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'READ' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'WRITE' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'DEQ' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'LTH' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'EQ' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'OP' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'MAP' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'REDUCE' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'IOTA' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'ARROW' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'PLUS' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'MINUS' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'LESS' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'INT' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'CHAR' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'BOOL' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'IF' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'THEN' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'ELSE' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'LET' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'IN' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'EOF' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'ID' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'STRINGLIT' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'CHARLIT' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'NUM' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'error' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action '#' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action '$$' (noprec): reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + immediate action: reduce Exp --> 'SCAN' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' gotos:state 120: items: Exp -> 'LPAR' . Exp 'RPAR' + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): error + action 'LCURLY' (noprec): shift 32 + action 'RCURLY' (noprec): error + action 'FUN' (noprec): error + action 'FN' (noprec): error + action 'COMMA' (noprec): error + action 'SEMICOLON' (noprec): error + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 + action 'DEQ' (noprec): error + action 'LTH' (noprec): error + action 'EQ' (noprec): error + action 'OP' (noprec): error + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 + action 'ARROW' (noprec): error + action 'PLUS' (noprec): error + action 'MINUS' (noprec): error + action 'LESS' (noprec): error + action 'INT' (noprec): error + action 'CHAR' (noprec): error + action 'BOOL' (noprec): error + action 'IF' (noprec): shift 72 + action 'THEN' (noprec): error + action 'ELSE' (noprec): error + action 'LET' (noprec): shift 122 + action 'IN' (noprec): error + action 'EOF' (noprec): error + action 'ID' (noprec): shift 30 + action 'STRINGLIT' (noprec): shift 31 + action 'CHARLIT' (noprec): shift 29 + action 'NUM' (noprec): shift 28 + action 'error' (noprec): error + action '#' (noprec): error + action '$$' (noprec): error + immediate action: gotos: goto Exp: 54 +state 121: items: Exp -> 'LPAR' Exp 'RPAR' . + actions: action 'FILTER' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'SCAN' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'REPLICATE' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'BOOLVAL' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'NOT' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'AND' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'OR' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'TIMES' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'DIVIDE' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'NUMNEG' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'LPAR' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' action 'RPAR' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' action 'LBRACKET' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' action 'RBRACKET' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' @@ -3942,8 +6439,18 @@ state 94: items: Exp -> 'LPAR' Exp 'RPAR' . action 'error' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' action '#' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' action '$$' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' - immediate action: reduce Exp --> 'LPAR' Exp 'RPAR' gotos:state 95: items: Exp -> 'LET' . 'ID' 'EQ' Exp 'IN' Exp - actions: action 'LPAR' (noprec): error + immediate action: reduce Exp --> 'LPAR' Exp 'RPAR' gotos:state 122: items: Exp -> 'LET' . 'ID' 'EQ' Exp MultiLet + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -3975,15 +6482,25 @@ state 94: items: Exp -> 'LPAR' Exp 'RPAR' . action 'LET' (noprec): error action 'IN' (noprec): error action 'EOF' (noprec): error - action 'ID' (noprec): shift 96 + action 'ID' (noprec): shift 123 action 'STRINGLIT' (noprec): error action 'CHARLIT' (noprec): error action 'NUM' (noprec): error action 'error' (noprec): error action '#' (noprec): error action '$$' (noprec): error - immediate action: gotos:state 96: items: Exp -> 'LET' 'ID' . 'EQ' Exp 'IN' Exp - actions: action 'LPAR' (noprec): error + immediate action: gotos:state 123: items: Exp -> 'LET' 'ID' . 'EQ' Exp MultiLet + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -3997,7 +6514,7 @@ state 94: items: Exp -> 'LPAR' Exp 'RPAR' . action 'WRITE' (noprec): error action 'DEQ' (noprec): error action 'LTH' (noprec): error - action 'EQ' (noprec): shift 97 + action 'EQ' (noprec): shift 124 action 'OP' (noprec): error action 'MAP' (noprec): error action 'REDUCE' (noprec): error @@ -4022,8 +6539,18 @@ state 94: items: Exp -> 'LPAR' Exp 'RPAR' . action 'error' (noprec): error action '#' (noprec): error action '$$' (noprec): error - immediate action: gotos:state 97: items: Exp -> 'LET' 'ID' 'EQ' . Exp 'IN' Exp - actions: action 'LPAR' (noprec): shift 93 + immediate action: gotos:state 124: items: Exp -> 'LET' 'ID' 'EQ' . Exp MultiLet + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -4033,15 +6560,15 @@ state 94: items: Exp -> 'LPAR' Exp 'RPAR' . action 'FN' (noprec): error action 'COMMA' (noprec): error action 'SEMICOLON' (noprec): error - action 'READ' (noprec): shift 67 - action 'WRITE' (noprec): shift 71 + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 action 'DEQ' (noprec): error action 'LTH' (noprec): error action 'EQ' (noprec): error action 'OP' (noprec): error - action 'MAP' (noprec): shift 77 - action 'REDUCE' (noprec): shift 82 - action 'IOTA' (noprec): shift 74 + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 action 'ARROW' (noprec): error action 'PLUS' (noprec): error action 'MINUS' (noprec): error @@ -4049,10 +6576,10 @@ state 94: items: Exp -> 'LPAR' Exp 'RPAR' . action 'INT' (noprec): error action 'CHAR' (noprec): error action 'BOOL' (noprec): error - action 'IF' (noprec): shift 60 + action 'IF' (noprec): shift 72 action 'THEN' (noprec): error action 'ELSE' (noprec): error - action 'LET' (noprec): shift 95 + action 'LET' (noprec): shift 122 action 'IN' (noprec): error action 'EOF' (noprec): error action 'ID' (noprec): shift 30 @@ -4062,9 +6589,69 @@ state 94: items: Exp -> 'LPAR' Exp 'RPAR' . action 'error' (noprec): error action '#' (noprec): error action '$$' (noprec): error - immediate action: gotos: goto Exp: 50 -state 98: items: Exp -> 'LET' 'ID' 'EQ' Exp 'IN' . Exp - actions: action 'LPAR' (noprec): shift 93 + immediate action: gotos: goto Exp: 55 +state 125: items: Exp -> 'LET' 'ID' 'EQ' Exp MultiLet . + actions: action 'FILTER' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'SCAN' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'REPLICATE' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'BOOLVAL' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'NOT' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'AND' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'OR' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'TIMES' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'DIVIDE' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'NUMNEG' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'LPAR' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'RPAR' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'LBRACKET' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'RBRACKET' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'LCURLY' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'RCURLY' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'FUN' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'FN' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'COMMA' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'SEMICOLON' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'READ' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'WRITE' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'DEQ' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'LTH' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'EQ' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'OP' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'MAP' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'REDUCE' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'IOTA' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'ARROW' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'PLUS' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'MINUS' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'LESS' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'INT' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'CHAR' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'BOOL' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'IF' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'THEN' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'ELSE' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'LET' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'IN' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'EOF' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'ID' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'STRINGLIT' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'CHARLIT' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'NUM' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action 'error' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action '#' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + action '$$' (explicit nonassoc 9993): reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet + immediate action: reduce Exp --> 'LET' 'ID' 'EQ' Exp MultiLet gotos:state 126: items: Exp -> 'ID' 'LBRACKET' . Exp 'RBRACKET' + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -4074,15 +6661,15 @@ state 98: items: Exp -> 'LET' 'ID' 'EQ' Exp 'IN' . Exp action 'FN' (noprec): error action 'COMMA' (noprec): error action 'SEMICOLON' (noprec): error - action 'READ' (noprec): shift 67 - action 'WRITE' (noprec): shift 71 + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 action 'DEQ' (noprec): error action 'LTH' (noprec): error action 'EQ' (noprec): error action 'OP' (noprec): error - action 'MAP' (noprec): shift 77 - action 'REDUCE' (noprec): shift 82 - action 'IOTA' (noprec): shift 74 + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 action 'ARROW' (noprec): error action 'PLUS' (noprec): error action 'MINUS' (noprec): error @@ -4090,10 +6677,10 @@ state 98: items: Exp -> 'LET' 'ID' 'EQ' Exp 'IN' . Exp action 'INT' (noprec): error action 'CHAR' (noprec): error action 'BOOL' (noprec): error - action 'IF' (noprec): shift 60 + action 'IF' (noprec): shift 72 action 'THEN' (noprec): error action 'ELSE' (noprec): error - action 'LET' (noprec): shift 95 + action 'LET' (noprec): shift 122 action 'IN' (noprec): error action 'EOF' (noprec): error action 'ID' (noprec): shift 30 @@ -4103,50 +6690,19 @@ state 98: items: Exp -> 'LET' 'ID' 'EQ' Exp 'IN' . Exp action 'error' (noprec): error action '#' (noprec): error action '$$' (noprec): error - immediate action: gotos: goto Exp: 51 -state 99: items: Exp -> 'ID' 'LBRACKET' . Exp 'RBRACKET' - actions: action 'LPAR' (noprec): shift 93 - action 'RPAR' (noprec): error - action 'LBRACKET' (noprec): error - action 'RBRACKET' (noprec): error - action 'LCURLY' (noprec): shift 32 - action 'RCURLY' (noprec): error - action 'FUN' (noprec): error - action 'FN' (noprec): error - action 'COMMA' (noprec): error - action 'SEMICOLON' (noprec): error - action 'READ' (noprec): shift 67 - action 'WRITE' (noprec): shift 71 - action 'DEQ' (noprec): error - action 'LTH' (noprec): error - action 'EQ' (noprec): error - action 'OP' (noprec): error - action 'MAP' (noprec): shift 77 - action 'REDUCE' (noprec): shift 82 - action 'IOTA' (noprec): shift 74 - action 'ARROW' (noprec): error - action 'PLUS' (noprec): error - action 'MINUS' (noprec): error - action 'LESS' (noprec): error - action 'INT' (noprec): error - action 'CHAR' (noprec): error - action 'BOOL' (noprec): error - action 'IF' (noprec): shift 60 - action 'THEN' (noprec): error - action 'ELSE' (noprec): error - action 'LET' (noprec): shift 95 - action 'IN' (noprec): error - action 'EOF' (noprec): error - action 'ID' (noprec): shift 30 - action 'STRINGLIT' (noprec): shift 31 - action 'CHARLIT' (noprec): shift 29 - action 'NUM' (noprec): shift 28 - action 'error' (noprec): error - action '#' (noprec): error - action '$$' (noprec): error - immediate action: gotos: goto Exp: 52 -state 100: items: Exp -> 'ID' 'LBRACKET' Exp 'RBRACKET' . - actions: action 'LPAR' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + immediate action: gotos: goto Exp: 56 +state 127: items: Exp -> 'ID' 'LBRACKET' Exp 'RBRACKET' . + actions: action 'FILTER' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'SCAN' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'REPLICATE' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'BOOLVAL' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'NOT' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'AND' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'OR' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'TIMES' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'DIVIDE' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'NUMNEG' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'LPAR' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' action 'RPAR' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' action 'LBRACKET' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' action 'RBRACKET' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' @@ -4185,8 +6741,18 @@ state 100: items: Exp -> 'ID' 'LBRACKET' Exp 'RBRACKET' . action 'error' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' action '#' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' action '$$' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' - immediate action: reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' gotos:state 101: items: Exps -> Exp 'COMMA' . Exps - actions: action 'LPAR' (noprec): shift 93 + immediate action: reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' gotos:state 128: items: Exp -> Exp 'TIMES' . Exp + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -4196,15 +6762,15 @@ state 100: items: Exp -> 'ID' 'LBRACKET' Exp 'RBRACKET' . action 'FN' (noprec): error action 'COMMA' (noprec): error action 'SEMICOLON' (noprec): error - action 'READ' (noprec): shift 67 - action 'WRITE' (noprec): shift 71 + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 action 'DEQ' (noprec): error action 'LTH' (noprec): error action 'EQ' (noprec): error action 'OP' (noprec): error - action 'MAP' (noprec): shift 77 - action 'REDUCE' (noprec): shift 82 - action 'IOTA' (noprec): shift 74 + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 action 'ARROW' (noprec): error action 'PLUS' (noprec): error action 'MINUS' (noprec): error @@ -4212,10 +6778,10 @@ state 100: items: Exp -> 'ID' 'LBRACKET' Exp 'RBRACKET' . action 'INT' (noprec): error action 'CHAR' (noprec): error action 'BOOL' (noprec): error - action 'IF' (noprec): shift 60 + action 'IF' (noprec): shift 72 action 'THEN' (noprec): error action 'ELSE' (noprec): error - action 'LET' (noprec): shift 95 + action 'LET' (noprec): shift 122 action 'IN' (noprec): error action 'EOF' (noprec): error action 'ID' (noprec): shift 30 @@ -4225,10 +6791,628 @@ state 100: items: Exp -> 'ID' 'LBRACKET' Exp 'RBRACKET' . action 'error' (noprec): error action '#' (noprec): error action '$$' (noprec): error - immediate action: gotos: goto Exp: 53 - goto Exps: 102 -state 102: items: Exps -> Exp 'COMMA' Exps . - actions: action 'LPAR' (noprec): reduce Exps --> Exp 'COMMA' Exps + immediate action: gotos: goto Exp: 57 +state 129: items: Exp -> Exp 'DIVIDE' . Exp + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): error + action 'LCURLY' (noprec): shift 32 + action 'RCURLY' (noprec): error + action 'FUN' (noprec): error + action 'FN' (noprec): error + action 'COMMA' (noprec): error + action 'SEMICOLON' (noprec): error + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 + action 'DEQ' (noprec): error + action 'LTH' (noprec): error + action 'EQ' (noprec): error + action 'OP' (noprec): error + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 + action 'ARROW' (noprec): error + action 'PLUS' (noprec): error + action 'MINUS' (noprec): error + action 'LESS' (noprec): error + action 'INT' (noprec): error + action 'CHAR' (noprec): error + action 'BOOL' (noprec): error + action 'IF' (noprec): shift 72 + action 'THEN' (noprec): error + action 'ELSE' (noprec): error + action 'LET' (noprec): shift 122 + action 'IN' (noprec): error + action 'EOF' (noprec): error + action 'ID' (noprec): shift 30 + action 'STRINGLIT' (noprec): shift 31 + action 'CHARLIT' (noprec): shift 29 + action 'NUM' (noprec): shift 28 + action 'error' (noprec): error + action '#' (noprec): error + action '$$' (noprec): error + immediate action: gotos: goto Exp: 58 +state 130: items: Exp -> 'NUMNEG' . Exp + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): error + action 'LCURLY' (noprec): shift 32 + action 'RCURLY' (noprec): error + action 'FUN' (noprec): error + action 'FN' (noprec): error + action 'COMMA' (noprec): error + action 'SEMICOLON' (noprec): error + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 + action 'DEQ' (noprec): error + action 'LTH' (noprec): error + action 'EQ' (noprec): error + action 'OP' (noprec): error + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 + action 'ARROW' (noprec): error + action 'PLUS' (noprec): error + action 'MINUS' (noprec): error + action 'LESS' (noprec): error + action 'INT' (noprec): error + action 'CHAR' (noprec): error + action 'BOOL' (noprec): error + action 'IF' (noprec): shift 72 + action 'THEN' (noprec): error + action 'ELSE' (noprec): error + action 'LET' (noprec): shift 122 + action 'IN' (noprec): error + action 'EOF' (noprec): error + action 'ID' (noprec): shift 30 + action 'STRINGLIT' (noprec): shift 31 + action 'CHARLIT' (noprec): shift 29 + action 'NUM' (noprec): shift 28 + action 'error' (noprec): error + action '#' (noprec): error + action '$$' (noprec): error + immediate action: gotos: goto Exp: 59 +state 131: items: Exp -> Exp 'AND' . Exp + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): error + action 'LCURLY' (noprec): shift 32 + action 'RCURLY' (noprec): error + action 'FUN' (noprec): error + action 'FN' (noprec): error + action 'COMMA' (noprec): error + action 'SEMICOLON' (noprec): error + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 + action 'DEQ' (noprec): error + action 'LTH' (noprec): error + action 'EQ' (noprec): error + action 'OP' (noprec): error + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 + action 'ARROW' (noprec): error + action 'PLUS' (noprec): error + action 'MINUS' (noprec): error + action 'LESS' (noprec): error + action 'INT' (noprec): error + action 'CHAR' (noprec): error + action 'BOOL' (noprec): error + action 'IF' (noprec): shift 72 + action 'THEN' (noprec): error + action 'ELSE' (noprec): error + action 'LET' (noprec): shift 122 + action 'IN' (noprec): error + action 'EOF' (noprec): error + action 'ID' (noprec): shift 30 + action 'STRINGLIT' (noprec): shift 31 + action 'CHARLIT' (noprec): shift 29 + action 'NUM' (noprec): shift 28 + action 'error' (noprec): error + action '#' (noprec): error + action '$$' (noprec): error + immediate action: gotos: goto Exp: 60 +state 132: items: Exp -> Exp 'OR' . Exp + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): error + action 'LCURLY' (noprec): shift 32 + action 'RCURLY' (noprec): error + action 'FUN' (noprec): error + action 'FN' (noprec): error + action 'COMMA' (noprec): error + action 'SEMICOLON' (noprec): error + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 + action 'DEQ' (noprec): error + action 'LTH' (noprec): error + action 'EQ' (noprec): error + action 'OP' (noprec): error + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 + action 'ARROW' (noprec): error + action 'PLUS' (noprec): error + action 'MINUS' (noprec): error + action 'LESS' (noprec): error + action 'INT' (noprec): error + action 'CHAR' (noprec): error + action 'BOOL' (noprec): error + action 'IF' (noprec): shift 72 + action 'THEN' (noprec): error + action 'ELSE' (noprec): error + action 'LET' (noprec): shift 122 + action 'IN' (noprec): error + action 'EOF' (noprec): error + action 'ID' (noprec): shift 30 + action 'STRINGLIT' (noprec): shift 31 + action 'CHARLIT' (noprec): shift 29 + action 'NUM' (noprec): shift 28 + action 'error' (noprec): error + action '#' (noprec): error + action '$$' (noprec): error + immediate action: gotos: goto Exp: 61 +state 133: items: Exp -> 'NOT' . Exp + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): error + action 'LCURLY' (noprec): shift 32 + action 'RCURLY' (noprec): error + action 'FUN' (noprec): error + action 'FN' (noprec): error + action 'COMMA' (noprec): error + action 'SEMICOLON' (noprec): error + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 + action 'DEQ' (noprec): error + action 'LTH' (noprec): error + action 'EQ' (noprec): error + action 'OP' (noprec): error + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 + action 'ARROW' (noprec): error + action 'PLUS' (noprec): error + action 'MINUS' (noprec): error + action 'LESS' (noprec): error + action 'INT' (noprec): error + action 'CHAR' (noprec): error + action 'BOOL' (noprec): error + action 'IF' (noprec): shift 72 + action 'THEN' (noprec): error + action 'ELSE' (noprec): error + action 'LET' (noprec): shift 122 + action 'IN' (noprec): error + action 'EOF' (noprec): error + action 'ID' (noprec): shift 30 + action 'STRINGLIT' (noprec): shift 31 + action 'CHARLIT' (noprec): shift 29 + action 'NUM' (noprec): shift 28 + action 'error' (noprec): error + action '#' (noprec): error + action '$$' (noprec): error + immediate action: gotos: goto Exp: 62 +state 134: items: Exp -> 'BOOLVAL' . + actions: action 'FILTER' (noprec): reduce Exp --> 'BOOLVAL' + action 'SCAN' (noprec): reduce Exp --> 'BOOLVAL' + action 'REPLICATE' (noprec): reduce Exp --> 'BOOLVAL' + action 'BOOLVAL' (noprec): reduce Exp --> 'BOOLVAL' + action 'NOT' (noprec): reduce Exp --> 'BOOLVAL' + action 'AND' (noprec): reduce Exp --> 'BOOLVAL' + action 'OR' (noprec): reduce Exp --> 'BOOLVAL' + action 'TIMES' (noprec): reduce Exp --> 'BOOLVAL' + action 'DIVIDE' (noprec): reduce Exp --> 'BOOLVAL' + action 'NUMNEG' (noprec): reduce Exp --> 'BOOLVAL' + action 'LPAR' (noprec): reduce Exp --> 'BOOLVAL' + action 'RPAR' (noprec): reduce Exp --> 'BOOLVAL' + action 'LBRACKET' (noprec): reduce Exp --> 'BOOLVAL' + action 'RBRACKET' (noprec): reduce Exp --> 'BOOLVAL' + action 'LCURLY' (noprec): reduce Exp --> 'BOOLVAL' + action 'RCURLY' (noprec): reduce Exp --> 'BOOLVAL' + action 'FUN' (noprec): reduce Exp --> 'BOOLVAL' + action 'FN' (noprec): reduce Exp --> 'BOOLVAL' + action 'COMMA' (noprec): reduce Exp --> 'BOOLVAL' + action 'SEMICOLON' (noprec): reduce Exp --> 'BOOLVAL' + action 'READ' (noprec): reduce Exp --> 'BOOLVAL' + action 'WRITE' (noprec): reduce Exp --> 'BOOLVAL' + action 'DEQ' (noprec): reduce Exp --> 'BOOLVAL' + action 'LTH' (noprec): reduce Exp --> 'BOOLVAL' + action 'EQ' (noprec): reduce Exp --> 'BOOLVAL' + action 'OP' (noprec): reduce Exp --> 'BOOLVAL' + action 'MAP' (noprec): reduce Exp --> 'BOOLVAL' + action 'REDUCE' (noprec): reduce Exp --> 'BOOLVAL' + action 'IOTA' (noprec): reduce Exp --> 'BOOLVAL' + action 'ARROW' (noprec): reduce Exp --> 'BOOLVAL' + action 'PLUS' (noprec): reduce Exp --> 'BOOLVAL' + action 'MINUS' (noprec): reduce Exp --> 'BOOLVAL' + action 'LESS' (noprec): reduce Exp --> 'BOOLVAL' + action 'INT' (noprec): reduce Exp --> 'BOOLVAL' + action 'CHAR' (noprec): reduce Exp --> 'BOOLVAL' + action 'BOOL' (noprec): reduce Exp --> 'BOOLVAL' + action 'IF' (noprec): reduce Exp --> 'BOOLVAL' + action 'THEN' (noprec): reduce Exp --> 'BOOLVAL' + action 'ELSE' (noprec): reduce Exp --> 'BOOLVAL' + action 'LET' (noprec): reduce Exp --> 'BOOLVAL' + action 'IN' (noprec): reduce Exp --> 'BOOLVAL' + action 'EOF' (noprec): reduce Exp --> 'BOOLVAL' + action 'ID' (noprec): reduce Exp --> 'BOOLVAL' + action 'STRINGLIT' (noprec): reduce Exp --> 'BOOLVAL' + action 'CHARLIT' (noprec): reduce Exp --> 'BOOLVAL' + action 'NUM' (noprec): reduce Exp --> 'BOOLVAL' + action 'error' (noprec): reduce Exp --> 'BOOLVAL' + action '#' (noprec): reduce Exp --> 'BOOLVAL' + action '$$' (noprec): reduce Exp --> 'BOOLVAL' + immediate action: reduce Exp --> 'BOOLVAL' gotos:state 135: items: MultiLet -> 'IN' . Exp + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): error + action 'LCURLY' (noprec): shift 32 + action 'RCURLY' (noprec): error + action 'FUN' (noprec): error + action 'FN' (noprec): error + action 'COMMA' (noprec): error + action 'SEMICOLON' (noprec): error + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 + action 'DEQ' (noprec): error + action 'LTH' (noprec): error + action 'EQ' (noprec): error + action 'OP' (noprec): error + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 + action 'ARROW' (noprec): error + action 'PLUS' (noprec): error + action 'MINUS' (noprec): error + action 'LESS' (noprec): error + action 'INT' (noprec): error + action 'CHAR' (noprec): error + action 'BOOL' (noprec): error + action 'IF' (noprec): shift 72 + action 'THEN' (noprec): error + action 'ELSE' (noprec): error + action 'LET' (noprec): shift 122 + action 'IN' (noprec): error + action 'EOF' (noprec): error + action 'ID' (noprec): shift 30 + action 'STRINGLIT' (noprec): shift 31 + action 'CHARLIT' (noprec): shift 29 + action 'NUM' (noprec): shift 28 + action 'error' (noprec): error + action '#' (noprec): error + action '$$' (noprec): error + immediate action: gotos: goto Exp: 63 +state 136: items: MultiLet -> 'SEMICOLON' . 'ID' 'EQ' Exp MultiLet + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): error + action 'LCURLY' (noprec): error + action 'RCURLY' (noprec): error + action 'FUN' (noprec): error + action 'FN' (noprec): error + action 'COMMA' (noprec): error + action 'SEMICOLON' (noprec): error + action 'READ' (noprec): error + action 'WRITE' (noprec): error + action 'DEQ' (noprec): error + action 'LTH' (noprec): error + action 'EQ' (noprec): error + action 'OP' (noprec): error + action 'MAP' (noprec): error + action 'REDUCE' (noprec): error + action 'IOTA' (noprec): error + action 'ARROW' (noprec): error + action 'PLUS' (noprec): error + action 'MINUS' (noprec): error + action 'LESS' (noprec): error + action 'INT' (noprec): error + action 'CHAR' (noprec): error + action 'BOOL' (noprec): error + action 'IF' (noprec): error + action 'THEN' (noprec): error + action 'ELSE' (noprec): error + action 'LET' (noprec): error + action 'IN' (noprec): error + action 'EOF' (noprec): error + action 'ID' (noprec): shift 137 + action 'STRINGLIT' (noprec): error + action 'CHARLIT' (noprec): error + action 'NUM' (noprec): error + action 'error' (noprec): error + action '#' (noprec): error + action '$$' (noprec): error + immediate action: gotos:state 137: items: MultiLet -> 'SEMICOLON' 'ID' . 'EQ' Exp MultiLet + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): error + action 'LCURLY' (noprec): error + action 'RCURLY' (noprec): error + action 'FUN' (noprec): error + action 'FN' (noprec): error + action 'COMMA' (noprec): error + action 'SEMICOLON' (noprec): error + action 'READ' (noprec): error + action 'WRITE' (noprec): error + action 'DEQ' (noprec): error + action 'LTH' (noprec): error + action 'EQ' (noprec): shift 138 + action 'OP' (noprec): error + action 'MAP' (noprec): error + action 'REDUCE' (noprec): error + action 'IOTA' (noprec): error + action 'ARROW' (noprec): error + action 'PLUS' (noprec): error + action 'MINUS' (noprec): error + action 'LESS' (noprec): error + action 'INT' (noprec): error + action 'CHAR' (noprec): error + action 'BOOL' (noprec): error + action 'IF' (noprec): error + action 'THEN' (noprec): error + action 'ELSE' (noprec): error + action 'LET' (noprec): error + action 'IN' (noprec): error + action 'EOF' (noprec): error + action 'ID' (noprec): error + action 'STRINGLIT' (noprec): error + action 'CHARLIT' (noprec): error + action 'NUM' (noprec): error + action 'error' (noprec): error + action '#' (noprec): error + action '$$' (noprec): error + immediate action: gotos:state 138: items: MultiLet -> 'SEMICOLON' 'ID' 'EQ' . Exp MultiLet + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): error + action 'LCURLY' (noprec): shift 32 + action 'RCURLY' (noprec): error + action 'FUN' (noprec): error + action 'FN' (noprec): error + action 'COMMA' (noprec): error + action 'SEMICOLON' (noprec): error + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 + action 'DEQ' (noprec): error + action 'LTH' (noprec): error + action 'EQ' (noprec): error + action 'OP' (noprec): error + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 + action 'ARROW' (noprec): error + action 'PLUS' (noprec): error + action 'MINUS' (noprec): error + action 'LESS' (noprec): error + action 'INT' (noprec): error + action 'CHAR' (noprec): error + action 'BOOL' (noprec): error + action 'IF' (noprec): shift 72 + action 'THEN' (noprec): error + action 'ELSE' (noprec): error + action 'LET' (noprec): shift 122 + action 'IN' (noprec): error + action 'EOF' (noprec): error + action 'ID' (noprec): shift 30 + action 'STRINGLIT' (noprec): shift 31 + action 'CHARLIT' (noprec): shift 29 + action 'NUM' (noprec): shift 28 + action 'error' (noprec): error + action '#' (noprec): error + action '$$' (noprec): error + immediate action: gotos: goto Exp: 64 +state 139: items: MultiLet -> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet . + actions: action 'FILTER' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'SCAN' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'REPLICATE' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'BOOLVAL' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'NOT' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'AND' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'OR' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'TIMES' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'DIVIDE' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'NUMNEG' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'LPAR' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'RPAR' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'LBRACKET' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'RBRACKET' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'LCURLY' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'RCURLY' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'FUN' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'FN' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'COMMA' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'SEMICOLON' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'READ' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'WRITE' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'DEQ' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'LTH' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'EQ' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'OP' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'MAP' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'REDUCE' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'IOTA' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'ARROW' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'PLUS' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'MINUS' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'LESS' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'INT' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'CHAR' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'BOOL' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'IF' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'THEN' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'ELSE' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'LET' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'IN' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'EOF' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'ID' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'STRINGLIT' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'CHARLIT' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'NUM' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action 'error' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action '#' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + action '$$' (noprec): reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet + immediate action: reduce MultiLet --> 'SEMICOLON' 'ID' 'EQ' Exp MultiLet gotos:state 140: items: Exps -> Exp 'COMMA' . Exps + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): error + action 'LCURLY' (noprec): shift 32 + action 'RCURLY' (noprec): error + action 'FUN' (noprec): error + action 'FN' (noprec): error + action 'COMMA' (noprec): error + action 'SEMICOLON' (noprec): error + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 + action 'DEQ' (noprec): error + action 'LTH' (noprec): error + action 'EQ' (noprec): error + action 'OP' (noprec): error + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 + action 'ARROW' (noprec): error + action 'PLUS' (noprec): error + action 'MINUS' (noprec): error + action 'LESS' (noprec): error + action 'INT' (noprec): error + action 'CHAR' (noprec): error + action 'BOOL' (noprec): error + action 'IF' (noprec): shift 72 + action 'THEN' (noprec): error + action 'ELSE' (noprec): error + action 'LET' (noprec): shift 122 + action 'IN' (noprec): error + action 'EOF' (noprec): error + action 'ID' (noprec): shift 30 + action 'STRINGLIT' (noprec): shift 31 + action 'CHARLIT' (noprec): shift 29 + action 'NUM' (noprec): shift 28 + action 'error' (noprec): error + action '#' (noprec): error + action '$$' (noprec): error + immediate action: gotos: goto Exp: 65 + goto Exps: 141 +state 141: items: Exps -> Exp 'COMMA' Exps . + actions: action 'FILTER' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'SCAN' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'REPLICATE' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'BOOLVAL' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'NOT' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'AND' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'OR' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'TIMES' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'DIVIDE' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'NUMNEG' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'LPAR' (noprec): reduce Exps --> Exp 'COMMA' Exps action 'RPAR' (noprec): reduce Exps --> Exp 'COMMA' Exps action 'LBRACKET' (noprec): reduce Exps --> Exp 'COMMA' Exps action 'RBRACKET' (noprec): reduce Exps --> Exp 'COMMA' Exps @@ -4267,8 +7451,18 @@ state 102: items: Exps -> Exp 'COMMA' Exps . action 'error' (noprec): reduce Exps --> Exp 'COMMA' Exps action '#' (noprec): reduce Exps --> Exp 'COMMA' Exps action '$$' (noprec): reduce Exps --> Exp 'COMMA' Exps - immediate action: reduce Exps --> Exp 'COMMA' Exps gotos:state 103: items: FunArg -> 'ID' . - actions: action 'LPAR' (noprec): reduce FunArg --> 'ID' + immediate action: reduce Exps --> Exp 'COMMA' Exps gotos:state 142: items: FunArg -> 'ID' . + actions: action 'FILTER' (noprec): reduce FunArg --> 'ID' + action 'SCAN' (noprec): reduce FunArg --> 'ID' + action 'REPLICATE' (noprec): reduce FunArg --> 'ID' + action 'BOOLVAL' (noprec): reduce FunArg --> 'ID' + action 'NOT' (noprec): reduce FunArg --> 'ID' + action 'AND' (noprec): reduce FunArg --> 'ID' + action 'OR' (noprec): reduce FunArg --> 'ID' + action 'TIMES' (noprec): reduce FunArg --> 'ID' + action 'DIVIDE' (noprec): reduce FunArg --> 'ID' + action 'NUMNEG' (noprec): reduce FunArg --> 'ID' + action 'LPAR' (noprec): reduce FunArg --> 'ID' action 'RPAR' (noprec): reduce FunArg --> 'ID' action 'LBRACKET' (noprec): reduce FunArg --> 'ID' action 'RBRACKET' (noprec): reduce FunArg --> 'ID' @@ -4307,9 +7501,19 @@ state 102: items: Exps -> Exp 'COMMA' Exps . action 'error' (noprec): reduce FunArg --> 'ID' action '#' (noprec): reduce FunArg --> 'ID' action '$$' (noprec): reduce FunArg --> 'ID' - immediate action: reduce FunArg --> 'ID' gotos:state 104: items: FunArg -> 'FN' . Type 'LPAR' 'RPAR' 'ARROW' Exp + immediate action: reduce FunArg --> 'ID' gotos:state 143: items: FunArg -> 'FN' . Type 'LPAR' 'RPAR' 'ARROW' Exp FunArg -> 'FN' . Type 'LPAR' Params 'RPAR' 'ARROW' Exp - actions: action 'LPAR' (noprec): error + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): error action 'LBRACKET' (noprec): shift 20 action 'RBRACKET' (noprec): error @@ -4348,10 +7552,20 @@ state 102: items: Exps -> Exp 'COMMA' Exps . action 'error' (noprec): error action '#' (noprec): error action '$$' (noprec): error - immediate action: gotos: goto Type: 105 -state 105: items: FunArg -> 'FN' Type . 'LPAR' 'RPAR' 'ARROW' Exp + immediate action: gotos: goto Type: 144 +state 144: items: FunArg -> 'FN' Type . 'LPAR' 'RPAR' 'ARROW' Exp FunArg -> 'FN' Type . 'LPAR' Params 'RPAR' 'ARROW' Exp - actions: action 'LPAR' (noprec): shift 106 + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): shift 145 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -4390,10 +7604,20 @@ state 105: items: FunArg -> 'FN' Type . 'LPAR' 'RPAR' 'ARROW' Exp action 'error' (noprec): error action '#' (noprec): error action '$$' (noprec): error - immediate action: gotos:state 106: items: FunArg -> 'FN' Type 'LPAR' . 'RPAR' 'ARROW' Exp + immediate action: gotos:state 145: items: FunArg -> 'FN' Type 'LPAR' . 'RPAR' 'ARROW' Exp FunArg -> 'FN' Type 'LPAR' . Params 'RPAR' 'ARROW' Exp - actions: action 'LPAR' (noprec): error - action 'RPAR' (noprec): shift 107 + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error + action 'RPAR' (noprec): shift 146 action 'LBRACKET' (noprec): shift 20 action 'RBRACKET' (noprec): error action 'LCURLY' (noprec): error @@ -4432,9 +7656,19 @@ state 105: items: FunArg -> 'FN' Type . 'LPAR' 'RPAR' 'ARROW' Exp action '#' (noprec): error action '$$' (noprec): error immediate action: gotos: goto Type: 23 - goto Params: 109 -state 107: items: FunArg -> 'FN' Type 'LPAR' 'RPAR' . 'ARROW' Exp - actions: action 'LPAR' (noprec): error + goto Params: 148 +state 146: items: FunArg -> 'FN' Type 'LPAR' 'RPAR' . 'ARROW' Exp + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -4453,7 +7687,7 @@ state 107: items: FunArg -> 'FN' Type 'LPAR' 'RPAR' . 'ARROW' Exp action 'MAP' (noprec): error action 'REDUCE' (noprec): error action 'IOTA' (noprec): error - action 'ARROW' (noprec): shift 108 + action 'ARROW' (noprec): shift 147 action 'PLUS' (noprec): error action 'MINUS' (noprec): error action 'LESS' (noprec): error @@ -4473,8 +7707,18 @@ state 107: items: FunArg -> 'FN' Type 'LPAR' 'RPAR' . 'ARROW' Exp action 'error' (noprec): error action '#' (noprec): error action '$$' (noprec): error - immediate action: gotos:state 108: items: FunArg -> 'FN' Type 'LPAR' 'RPAR' 'ARROW' . Exp - actions: action 'LPAR' (noprec): shift 93 + immediate action: gotos:state 147: items: FunArg -> 'FN' Type 'LPAR' 'RPAR' 'ARROW' . Exp + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -4484,15 +7728,15 @@ state 107: items: FunArg -> 'FN' Type 'LPAR' 'RPAR' . 'ARROW' Exp action 'FN' (noprec): error action 'COMMA' (noprec): error action 'SEMICOLON' (noprec): error - action 'READ' (noprec): shift 67 - action 'WRITE' (noprec): shift 71 + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 action 'DEQ' (noprec): error action 'LTH' (noprec): error action 'EQ' (noprec): error action 'OP' (noprec): error - action 'MAP' (noprec): shift 77 - action 'REDUCE' (noprec): shift 82 - action 'IOTA' (noprec): shift 74 + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 action 'ARROW' (noprec): error action 'PLUS' (noprec): error action 'MINUS' (noprec): error @@ -4500,10 +7744,10 @@ state 107: items: FunArg -> 'FN' Type 'LPAR' 'RPAR' . 'ARROW' Exp action 'INT' (noprec): error action 'CHAR' (noprec): error action 'BOOL' (noprec): error - action 'IF' (noprec): shift 60 + action 'IF' (noprec): shift 72 action 'THEN' (noprec): error action 'ELSE' (noprec): error - action 'LET' (noprec): shift 95 + action 'LET' (noprec): shift 122 action 'IN' (noprec): error action 'EOF' (noprec): error action 'ID' (noprec): shift 30 @@ -4513,10 +7757,20 @@ state 107: items: FunArg -> 'FN' Type 'LPAR' 'RPAR' . 'ARROW' Exp action 'error' (noprec): error action '#' (noprec): error action '$$' (noprec): error - immediate action: gotos: goto Exp: 54 -state 109: items: FunArg -> 'FN' Type 'LPAR' Params . 'RPAR' 'ARROW' Exp - actions: action 'LPAR' (noprec): error - action 'RPAR' (noprec): shift 110 + immediate action: gotos: goto Exp: 66 +state 148: items: FunArg -> 'FN' Type 'LPAR' Params . 'RPAR' 'ARROW' Exp + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error + action 'RPAR' (noprec): shift 149 action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error action 'LCURLY' (noprec): error @@ -4554,8 +7808,18 @@ state 109: items: FunArg -> 'FN' Type 'LPAR' Params . 'RPAR' 'ARROW' Exp action 'error' (noprec): error action '#' (noprec): error action '$$' (noprec): error - immediate action: gotos:state 110: items: FunArg -> 'FN' Type 'LPAR' Params 'RPAR' . 'ARROW' Exp - actions: action 'LPAR' (noprec): error + immediate action: gotos:state 149: items: FunArg -> 'FN' Type 'LPAR' Params 'RPAR' . 'ARROW' Exp + actions: action 'FILTER' (noprec): error + action 'SCAN' (noprec): error + action 'REPLICATE' (noprec): error + action 'BOOLVAL' (noprec): error + action 'NOT' (noprec): error + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (noprec): error + action 'LPAR' (noprec): error action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -4574,7 +7838,7 @@ state 109: items: FunArg -> 'FN' Type 'LPAR' Params . 'RPAR' 'ARROW' Exp action 'MAP' (noprec): error action 'REDUCE' (noprec): error action 'IOTA' (noprec): error - action 'ARROW' (noprec): shift 111 + action 'ARROW' (noprec): shift 150 action 'PLUS' (noprec): error action 'MINUS' (noprec): error action 'LESS' (noprec): error @@ -4594,8 +7858,18 @@ state 109: items: FunArg -> 'FN' Type 'LPAR' Params . 'RPAR' 'ARROW' Exp action 'error' (noprec): error action '#' (noprec): error action '$$' (noprec): error - immediate action: gotos:state 111: items: FunArg -> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' . Exp - actions: action 'LPAR' (noprec): shift 93 + immediate action: gotos:state 150: items: FunArg -> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' . Exp + actions: action 'FILTER' (noprec): shift 109 + action 'SCAN' (noprec): shift 114 + action 'REPLICATE' (noprec): shift 105 + action 'BOOLVAL' (noprec): shift 134 + action 'NOT' (explicit nonassoc 9995): shift 133 + action 'AND' (noprec): error + action 'OR' (noprec): error + action 'TIMES' (noprec): error + action 'DIVIDE' (noprec): error + action 'NUMNEG' (explicit nonassoc 9999): shift 130 + action 'LPAR' (noprec): shift 120 action 'RPAR' (noprec): error action 'LBRACKET' (noprec): error action 'RBRACKET' (noprec): error @@ -4605,15 +7879,15 @@ state 109: items: FunArg -> 'FN' Type 'LPAR' Params . 'RPAR' 'ARROW' Exp action 'FN' (noprec): error action 'COMMA' (noprec): error action 'SEMICOLON' (noprec): error - action 'READ' (noprec): shift 67 - action 'WRITE' (noprec): shift 71 + action 'READ' (noprec): shift 79 + action 'WRITE' (noprec): shift 83 action 'DEQ' (noprec): error action 'LTH' (noprec): error action 'EQ' (noprec): error action 'OP' (noprec): error - action 'MAP' (noprec): shift 77 - action 'REDUCE' (noprec): shift 82 - action 'IOTA' (noprec): shift 74 + action 'MAP' (noprec): shift 89 + action 'REDUCE' (noprec): shift 94 + action 'IOTA' (noprec): shift 86 action 'ARROW' (noprec): error action 'PLUS' (noprec): error action 'MINUS' (noprec): error @@ -4621,10 +7895,10 @@ state 109: items: FunArg -> 'FN' Type 'LPAR' Params . 'RPAR' 'ARROW' Exp action 'INT' (noprec): error action 'CHAR' (noprec): error action 'BOOL' (noprec): error - action 'IF' (noprec): shift 60 + action 'IF' (noprec): shift 72 action 'THEN' (noprec): error action 'ELSE' (noprec): error - action 'LET' (noprec): shift 95 + action 'LET' (noprec): shift 122 action 'IN' (noprec): error action 'EOF' (noprec): error action 'ID' (noprec): shift 30 @@ -4634,7 +7908,7 @@ state 109: items: FunArg -> 'FN' Type 'LPAR' Params . 'RPAR' 'ARROW' Exp action 'error' (noprec): error action '#' (noprec): error action '$$' (noprec): error - immediate action: gotos: goto Exp: 55 + immediate action: gotos: goto Exp: 67 startStates = 0 ------------------------ diff --git a/Fasto/TypeChecker.fs b/Fasto/TypeChecker.fs index 84ff77b..db90cb8 100644 --- a/Fasto/TypeChecker.fs +++ b/Fasto/TypeChecker.fs @@ -130,22 +130,32 @@ and checkExp (ftab : FunTable) See `AbSyn.fs` for the expression constructors of `Times`, ... *) | Times (e1, e2, pos) -> - failwith "Unimplemented type check of multiplication" + let (e1_dec, e2_dec) = checkBinOp ftab vtab (pos, Int, e1, e2) + (Int, Times (e1_dec, e2_dec, pos)) - | Divide (_, _, _) -> - failwith "Unimplemented type check of division" + | Divide (e1, e2, pos) -> + let (e1_dec, e2_dec) = checkBinOp ftab vtab (pos, Int, e1, e2) + (Int, Divide (e1_dec, e2_dec, pos)) - | And (_, _, _) -> - failwith "Unimplemented type check of &&" + | And (e1, e2, pos) -> + let (e1_dec, e2_dec) = checkBinOp ftab vtab (pos, Bool, e1, e2) + (Bool, And (e1_dec, e2_dec, pos)) - | Or (_, _, _) -> - failwith "Unimplemented type check of ||" + | Or (e1, e2, pos) -> + let (e1_dec, e2_dec) = checkBinOp ftab vtab (pos, Bool, e1, e2) + (Bool, Or (e1_dec, e2_dec, pos)) - | Not (_, _) -> - failwith "Unimplemented type check of not" + | Not (e, pos) -> + let (t, e_dec) = checkExp ftab vtab e + if (t = Bool) then + (Bool, Not (e_dec, pos)) + else raise (MyError("Not on non-bool type", pos)) - | Negate (_, _) -> - failwith "Unimplemented type check of negate" + | Negate (e, pos) -> + let (t, e_dec) = checkExp ftab vtab e + if (t = Int) then + (Int, Negate (e_dec, pos)) + else raise (MyError("Negation of non-int type", pos)) (* The types for e1, e2 must be the same. The result is always a Bool. *) | Equal (e1, e2, pos) -> @@ -294,8 +304,12 @@ and checkExp (ftab : FunTable) - assuming `a` is of type `t` the result type of replicate is `[t]` *) - | Replicate (_, _, _, _) -> - failwith "Unimplemented type check of replicate" + | Replicate (n_exp, a_exp, _, pos) -> + let (n_t, n_dec) = checkExp ftab vtab n_exp + let (a_t, a_dec) = checkExp ftab vtab a_exp + if (n_t = Int) then + (Array a_t, Replicate (n_dec, a_dec, a_t, pos)) + else raise (MyError("parameter n not Int", pos)) (* TODO project task 2: Hint for `filter(f, arr)` Look into the type-checking lecture slides for the type rule of `map` @@ -306,8 +320,21 @@ and checkExp (ftab : FunTable) - `arr` should be of type `[ta]` - the result of filter should have type `[tb]` *) - | Filter (_, _, _, _) -> - failwith "Unimplemented type check of filter" + | Filter (f, arr_exp, _, pos) -> + let (arr_type, arr_exp_dec) = checkExp ftab vtab arr_exp + let elem_type = + match arr_type with + | Array t -> t + | _ -> reportTypeWrongKind "second argument of map" "array" arr_type pos + let (f', f_res_type, f_arg_type) = + match checkFunArg ftab vtab pos f with + | (f', res, [a1]) -> (f', res, a1) + | (_, res, args) -> + reportArityWrong "first argument of map" 1 (args,res) pos + if elem_type <> f_arg_type then + reportTypesDifferent "function-argument and array-element types in map" + f_arg_type elem_type pos + (Array f_res_type, Map (f', arr_exp_dec, elem_type, f_res_type, pos)) (* TODO project task 2: `scan(f, ne, arr)` Hint: Implementation is very similar to `reduce(f, ne, arr)`. @@ -315,8 +342,32 @@ and checkExp (ftab : FunTable) scan's return type is the same as the type of `arr`, while reduce's return type is that of an element of `arr`). *) - | Scan (_, _, _, _, _) -> - failwith "Unimplemented type check of scan" + | Scan (f, e_exp, arr_exp, _, pos) -> + let (e_type , e_dec ) = checkExp ftab vtab e_exp + let (arr_type, arr_dec) = checkExp ftab vtab arr_exp + let elem_type = + match arr_type with + | Array t -> t + | _ -> reportTypeWrongKind "third argument of reduce" "array" arr_type pos + let (f', f_argres_type) = + match checkFunArg ftab vtab pos f with + | (f', res, [a1; a2]) -> + if a1 <> a2 then + reportTypesDifferent "argument types of operation in reduce" + a1 a2 pos + if res <> a1 then + reportTypesDifferent "argument and return type of operation in reduce" + a1 res pos + (f', res) + | (_, res, args) -> + reportArityWrong "operation in reduce" 2 (args,res) pos + if elem_type <> f_argres_type then + reportTypesDifferent "operation and array-element types in reduce" + f_argres_type elem_type pos + if e_type <> f_argres_type then + reportTypesDifferent "operation and start-element types in scan" + f_argres_type e_type pos + (f_argres_type, Reduce (f', e_dec, arr_dec, elem_type, pos)) and checkFunArg (ftab : FunTable) (vtab : VarTable) diff --git a/booltest.asm b/booltest.asm new file mode 100644 index 0000000..168855d --- /dev/null +++ b/booltest.asm @@ -0,0 +1,169 @@ + .text 0x00400000 + .globl main + la $28, _heap_ + la $4, _true +# was: la _true_addr, _true + ori $3, $0, 4 +# was: ori _true_init, $0, 4 + sw $3, 0($4) +# was: sw _true_init, 0(_true_addr) + la $3, _false +# was: la _false_addr, _false + ori $4, $0, 5 +# was: ori _false_init, $0, 5 + sw $4, 0($3) +# was: sw _false_init, 0(_false_addr) + jal main +_stop_: + ori $2, $0, 10 + syscall +# Function main +main: + sw $31, -4($29) + sw $16, -8($29) + addi $29, $29, -12 + ori $16, $0, 1 +# was: ori _tmp_2_, $0, 1 + beq $16, $2, _false_3_ +# was: beq _tmp_2_, 0, _false_3_ + ori $16, $0, 1 +# was: ori _tmp_2_, $0, 1 +_false_3_: +# ori _mainres_1_,_tmp_2_,0 + la $2, _true +# was: la $2, _true + bne $16, $0, _wBoolF_4_ +# was: bne _mainres_1_, $0, _wBoolF_4_ + la $2, _false +# was: la $2, _false +_wBoolF_4_: + jal putstring +# was: jal putstring, $2 + ori $2, $16, 0 +# was: ori $2, _mainres_1_, 0 + addi $29, $29, 12 + lw $16, -8($29) + lw $31, -4($29) + jr $31 +ord: + jr $31 +chr: + andi $2, $2, 255 + jr $31 +putint: + addi $29, $29, -8 + sw $2, 0($29) + sw $4, 4($29) + ori $4, $2, 0 + ori $2, $0, 1 + syscall + ori $2, $0, 4 + la $4, _space_ + syscall + lw $2, 0($29) + lw $4, 4($29) + addi $29, $29, 8 + jr $31 +getint: + ori $2, $0, 5 + syscall + jr $31 +putchar: + addi $29, $29, -8 + sw $2, 0($29) + sw $4, 4($29) + ori $4, $2, 0 + ori $2, $0, 11 + syscall + ori $2, $0, 4 + la $4, _space_ + syscall + lw $2, 0($29) + lw $4, 4($29) + addi $29, $29, 8 + jr $31 +getchar: + addi $29, $29, -8 + sw $4, 0($29) + sw $5, 4($29) + ori $2, $0, 12 + syscall + ori $5, $2, 0 + ori $2, $0, 4 + la $4, _cr_ + syscall + ori $2, $5, 0 + lw $4, 0($29) + lw $5, 4($29) + addi $29, $29, 8 + jr $31 +putstring: + addi $29, $29, -16 + sw $2, 0($29) + sw $4, 4($29) + sw $5, 8($29) + sw $6, 12($29) + lw $4, 0($2) + addi $5, $2, 4 + add $6, $5, $4 + ori $2, $0, 11 +putstring_begin: + sub $4, $5, $6 + bgez $4, putstring_done + lb $4, 0($5) + syscall + addi $5, $5, 1 + j putstring_begin +putstring_done: + lw $2, 0($29) + lw $4, 4($29) + lw $5, 8($29) + lw $6, 12($29) + addi $29, $29, 16 + jr $31 +_RuntimeError_: + la $4, _ErrMsg_ + ori $2, $0, 4 + syscall + ori $4, $5, 0 + ori $2, $0, 1 + syscall + la $4, _colon_space_ + ori $2, $0, 4 + syscall + ori $4, $6, 0 + ori $2, $0, 4 + syscall + la $4, _cr_ + ori $2, $0, 4 + syscall + j _stop_ + .data +# Fixed strings for I/O +_ErrMsg_: + .asciiz "Runtime error at line " +_colon_space_: + .asciiz ": " +_cr_: + .asciiz "\n" +_space_: + .asciiz " " +# Message strings for specific errors +_Msg_IllegalArraySize_: + .asciiz "negative array size" +_Msg_IllegalIndex_: + .asciiz "array index out of bounds" +_Msg_DivZero_: + .asciiz "division by zero" +# String Literals + .align 2 +_true: + .space 4 + .asciiz "true" + .align 2 +_false: + .space 4 + .asciiz "false" + .align 2 +_heap_: + .space 100000 \ No newline at end of file diff --git a/booltest.fo b/booltest.fo new file mode 100644 index 0000000..e7a1668 --- /dev/null +++ b/booltest.fo @@ -0,0 +1 @@ +fun bool main() = write(true && true) diff --git a/tests/comprehension.out-testresult b/tests/comprehension.out-testresult new file mode 100644 index 0000000..723c049 --- /dev/null +++ b/tests/comprehension.out-testresult @@ -0,0 +1 @@ +Parse error: Error at line 8, column 18 diff --git a/tests/copyConstPropFold0.asm b/tests/copyConstPropFold0.asm index 95f4b11..824fcda 100644 --- a/tests/copyConstPropFold0.asm +++ b/tests/copyConstPropFold0.asm @@ -17,6 +17,29 @@ _stop_: ori $2, $0, 10 syscall +# Function f +f: + sw $31, -4($29) + addi $29, $29, -8 +# ori _param_x_1_,$2,0 +# ori _param_y_2_,$3,0 + ori $4, $2, 0 +# was: ori _plus_L_6_, _param_x_1_, 0 + ori $2, $0, 2 +# was: ori _plus_R_7_, $0, 2 + add $2, $4, $2 +# was: add _times_L_4_, _plus_L_6_, _plus_R_7_ +# ori _minus_L_8_,_param_y_2_,0 + ori $4, $0, 2 +# was: ori _minus_R_9_, $0, 2 + sub $3, $3, $4 +# was: sub _times_R_5_, _minus_L_8_, _minus_R_9_ + mul $2, $2, $3 +# was: mul _fres_3_, _times_L_4_, _times_R_5_ +# ori $2,_fres_3_,0 + addi $29, $29, 8 + lw $31, -4($29) + jr $31 # Function main main: sw $31, -4($29) @@ -24,25 +47,31 @@ main: addi $29, $29, -12 jal getint # was: jal getint, $2 -# ori _letBind_2_,$2,0 - ori $3, $2, 0 -# was: ori _plus_L_6_, _letBind_2_, 0 +# ori _letBind_11_,$2,0 + ori $4, $2, 0 +# was: ori _letBind_13_, _letBind_11_, 0 ori $2, $0, 2 -# was: ori _plus_R_7_, $0, 2 - add $2, $3, $2 -# was: add _mult1_L_4_, _plus_L_6_, _plus_R_7_ - ori $3, $0, 0 -# was: ori _mult2_R_5_, $0, 0 - mul $16, $2, $3 -# was: mul _letBind_3_, _mult1_L_4_, _mult2_R_5_ -# ori _tmp_8_,_letBind_3_,0 -# ori _mainres_1_,_tmp_8_,0 +# was: ori _letBind_14_, $0, 2 +# ori _plus_L_17_,_letBind_13_,0 + ori $3, $0, 2 +# was: ori _plus_R_18_, $0, 2 + add $3, $4, $3 +# was: add _times_L_15_, _plus_L_17_, _plus_R_18_ +# ori _minus_L_19_,_letBind_14_,0 + ori $4, $0, 2 +# was: ori _minus_R_20_, $0, 2 + sub $2, $2, $4 +# was: sub _times_R_16_, _minus_L_19_, _minus_R_20_ + mul $16, $3, $2 +# was: mul _letBind_12_, _times_L_15_, _times_R_16_ +# ori _tmp_21_,_letBind_12_,0 +# ori _mainres_10_,_tmp_21_,0 ori $2, $16, 0 -# was: ori $2, _mainres_1_, 0 +# was: ori $2, _mainres_10_, 0 jal putint # was: jal putint, $2 ori $2, $16, 0 -# was: ori $2, _mainres_1_, 0 +# was: ori $2, _mainres_10_, 0 addi $29, $29, 12 lw $16, -8($29) lw $31, -4($29) diff --git a/tests/copyConstPropFold1.asm b/tests/copyConstPropFold1.asm index ba901c5..9da0494 100644 --- a/tests/copyConstPropFold1.asm +++ b/tests/copyConstPropFold1.asm @@ -23,69 +23,83 @@ main: sw $16, -8($29) addi $29, $29, -12 ori $3, $0, 40 -# was: ori _size_reg_3_, $0, 40 - bgez $3, _safe_lab_4_ -# was: bgez _size_reg_3_, _safe_lab_4_ +# was: ori _letBind_2_, $0, 40 +# ori _size_reg_4_,_letBind_2_,0 + bgez $3, _safe_lab_5_ +# was: bgez _size_reg_4_, _safe_lab_5_ ori $5, $0, 3 # was: ori $5, $0, 3 la $6, _Msg_IllegalArraySize_ # was: la $6, _Msg_IllegalArraySize_ j _RuntimeError_ -_safe_lab_4_: +_safe_lab_5_: ori $2, $28, 0 -# was: ori _letBind_2_, $28, 0 +# was: ori _letBind_3_, $28, 0 sll $4, $3, 2 -# was: sll _tmp_10_, _size_reg_3_, 2 +# was: sll _tmp_11_, _size_reg_4_, 2 addi $4, $4, 4 -# was: addi _tmp_10_, _tmp_10_, 4 +# was: addi _tmp_11_, _tmp_11_, 4 add $28, $28, $4 -# was: add $28, $28, _tmp_10_ +# was: add $28, $28, _tmp_11_ sw $3, 0($2) -# was: sw _size_reg_3_, 0(_letBind_2_) +# was: sw _size_reg_4_, 0(_letBind_3_) addi $6, $2, 4 -# was: addi _addr_reg_5_, _letBind_2_, 4 - ori $5, $0, 0 -# was: ori _i_reg_6_, $0, 0 -_loop_beg_7_: - sub $4, $5, $3 -# was: sub _tmp_reg_9_, _i_reg_6_, _size_reg_3_ - bgez $4, _loop_end_8_ -# was: bgez _tmp_reg_9_, _loop_end_8_ - sw $5, 0($6) -# was: sw _i_reg_6_, 0(_addr_reg_5_) +# was: addi _addr_reg_6_, _letBind_3_, 4 + ori $4, $0, 0 +# was: ori _i_reg_7_, $0, 0 +_loop_beg_8_: + sub $5, $4, $3 +# was: sub _tmp_reg_10_, _i_reg_7_, _size_reg_4_ + bgez $5, _loop_end_9_ +# was: bgez _tmp_reg_10_, _loop_end_9_ + sw $4, 0($6) +# was: sw _i_reg_7_, 0(_addr_reg_6_) addi $6, $6, 4 -# was: addi _addr_reg_5_, _addr_reg_5_, 4 - addi $5, $5, 1 -# was: addi _i_reg_6_, _i_reg_6_, 1 - j _loop_beg_7_ -_loop_end_8_: - ori $4, $0, 4 -# was: ori _arr_ind_12_, $0, 4 +# was: addi _addr_reg_6_, _addr_reg_6_, 4 + addi $4, $4, 1 +# was: addi _i_reg_7_, _i_reg_7_, 1 + j _loop_beg_8_ +_loop_end_9_: + ori $4, $3, 0 +# was: ori _divide_L_13_, _letBind_2_, 0 + ori $3, $0, 10 +# was: ori _divide_R_14_, $0, 10 + div $4, $4, $3 +# was: div _letBind_12_, _divide_L_13_, _divide_R_14_ +# ori _arr_ind_16_,_letBind_12_,0 addi $3, $2, 4 -# was: addi _arr_reg_13_, _letBind_2_, 4 +# was: addi _arr_reg_17_, _letBind_3_, 4 lw $2, 0($2) -# was: lw _size_reg_14_, 0(_letBind_2_) - bgez $4, _safe_lab_17_ -# was: bgez _arr_ind_12_, _safe_lab_17_ -_error_lab_16_: +# was: lw _size_reg_18_, 0(_letBind_3_) + bgez $4, _safe_lab_21_ +# was: bgez _arr_ind_16_, _safe_lab_21_ +_error_lab_20_: ori $5, $0, 5 # was: ori $5, $0, 5 la $6, _Msg_IllegalIndex_ # was: la $6, _Msg_IllegalIndex_ j _RuntimeError_ -_safe_lab_17_: +_safe_lab_21_: sub $2, $4, $2 -# was: sub _tmp_reg_15_, _arr_ind_12_, _size_reg_14_ - bgez $2, _error_lab_16_ -# was: bgez _tmp_reg_15_, _error_lab_16_ +# was: sub _tmp_reg_19_, _arr_ind_16_, _size_reg_18_ + bgez $2, _error_lab_20_ +# was: bgez _tmp_reg_19_, _error_lab_20_ sll $4, $4, 2 -# was: sll _arr_ind_12_, _arr_ind_12_, 2 +# was: sll _arr_ind_16_, _arr_ind_16_, 2 add $3, $3, $4 -# was: add _arr_reg_13_, _arr_reg_13_, _arr_ind_12_ - lw $16, 0($3) -# was: lw _letBind_11_, 0(_arr_reg_13_) -# ori _tmp_18_,_letBind_11_,0 -# ori _mainres_1_,_tmp_18_,0 +# was: add _arr_reg_17_, _arr_reg_17_, _arr_ind_16_ + lw $3, 0($3) +# was: lw _letBind_15_, 0(_arr_reg_17_) +# ori _times_L_25_,_letBind_15_,0 + ori $2, $0, 1 +# was: ori _times_R_26_, $0, 1 + mul $2, $3, $2 +# was: mul _plus_L_23_, _times_L_25_, _times_R_26_ + ori $3, $0, 0 +# was: ori _plus_R_24_, $0, 0 + add $16, $2, $3 +# was: add _tmp_22_, _plus_L_23_, _plus_R_24_ +# ori _mainres_1_,_tmp_22_,0 ori $2, $16, 0 # was: ori $2, _mainres_1_, 0 jal putint diff --git a/tests/dead_bnd_rem.asm b/tests/dead_bnd_rem.asm index c90ad82..994c9f0 100644 --- a/tests/dead_bnd_rem.asm +++ b/tests/dead_bnd_rem.asm @@ -25,22 +25,52 @@ main: jal getint # was: jal getint, $2 # ori _letBind_2_,$2,0 -# ori _plus_L_4_,_letBind_2_,0 +# ori _times_L_4_,_letBind_2_,0 + ori $3, $2, 0 +# was: ori _times_R_5_, _letBind_2_, 0 + mul $4, $2, $3 +# was: mul _letBind_3_, _times_L_4_, _times_R_5_ +# ori _plus_L_9_,_letBind_3_,0 + ori $3, $0, 3 +# was: ori _plus_R_10_, $0, 3 + add $3, $4, $3 +# was: add _letBind_8_, _plus_L_9_, _plus_R_10_ +# ori _plus_L_12_,_letBind_8_,0 +# ori _plus_R_13_,_letBind_2_,0 + add $3, $3, $2 +# was: add _letBind_11_, _plus_L_12_, _plus_R_13_ +# ori _plus_L_14_,_letBind_11_,0 + ori $4, $0, 8 +# was: ori _plus_R_15_, $0, 8 + add $0, $3, $4 +# was: add _letBind_7_, _plus_L_14_, _plus_R_15_ +# ori _letBind_6_,_letBind_2_,0 + ori $4, $2, 0 +# was: ori _plus_L_17_, _letBind_2_, 0 ori $3, $0, 2 -# was: ori _plus_R_5_, $0, 2 - add $3, $2, $3 -# was: add _letBind_3_, _plus_L_4_, _plus_R_5_ -# ori _plus_L_7_,_letBind_2_,0 +# was: ori _plus_R_18_, $0, 2 + add $3, $4, $3 +# was: add _letBind_16_, _plus_L_17_, _plus_R_18_ +# ori _plus_L_22_,_letBind_16_,0 + ori $4, $0, 2 +# was: ori _plus_R_23_, $0, 2 + add $4, $3, $4 +# was: add _plus_L_20_, _plus_L_22_, _plus_R_23_ + ori $5, $2, 0 +# was: ori _plus_R_21_, _letBind_6_, 0 + add $0, $4, $5 +# was: add _letBind_19_, _plus_L_20_, _plus_R_21_ +# ori _plus_L_26_,_letBind_2_,0 ori $4, $0, 3 -# was: ori _plus_R_8_, $0, 3 +# was: ori _plus_R_27_, $0, 3 add $2, $2, $4 -# was: add _letBind_6_, _plus_L_7_, _plus_R_8_ -# ori _mult1_L_10_,_letBind_3_,0 -# ori _mult2_R_11_,_letBind_6_,0 +# was: add _letBind_25_, _plus_L_26_, _plus_R_27_ +# ori _times_L_28_,_letBind_16_,0 +# ori _times_R_29_,_letBind_25_,0 mul $16, $3, $2 -# was: mul _letBind_9_, _mult1_L_10_, _mult2_R_11_ -# ori _tmp_12_,_letBind_9_,0 -# ori _mainres_1_,_tmp_12_,0 +# was: mul _letBind_24_, _times_L_28_, _times_R_29_ +# ori _tmp_30_,_letBind_24_,0 +# ori _mainres_1_,_tmp_30_,0 ori $2, $16, 0 # was: ori $2, _mainres_1_, 0 jal putint diff --git a/tests/inline_shadow.asm b/tests/inline_shadow.asm index 29cb61f..eaa468b 100644 --- a/tests/inline_shadow.asm +++ b/tests/inline_shadow.asm @@ -17,27 +17,101 @@ _stop_: ori $2, $0, 10 syscall +# Function f +f: + sw $31, -4($29) + addi $29, $29, -8 +# ori _param_a_1_,$2,0 +# ori _param_b_2_,$3,0 +# ori _param_c_3_,$4,0 +# ori _param_d_4_,$5,0 + ori $6, $0, 1000 +# was: ori _times_L_12_, $0, 1000 +# ori _times_R_13_,_param_a_1_,0 + mul $2, $6, $2 +# was: mul _plus_L_10_, _times_L_12_, _times_R_13_ + ori $6, $0, 100 +# was: ori _times_L_14_, $0, 100 +# ori _times_R_15_,_param_b_2_,0 + mul $3, $6, $3 +# was: mul _plus_R_11_, _times_L_14_, _times_R_15_ + add $2, $2, $3 +# was: add _plus_L_8_, _plus_L_10_, _plus_R_11_ + ori $3, $0, 10 +# was: ori _times_L_16_, $0, 10 +# ori _times_R_17_,_param_c_3_,0 + mul $3, $3, $4 +# was: mul _plus_R_9_, _times_L_16_, _times_R_17_ + add $2, $2, $3 +# was: add _plus_L_6_, _plus_L_8_, _plus_R_9_ +# ori _plus_R_7_,_param_d_4_,0 + add $2, $2, $5 +# was: add _fres_5_, _plus_L_6_, _plus_R_7_ +# ori $2,_fres_5_,0 + addi $29, $29, 8 + lw $31, -4($29) + jr $31 # Function zero zero: sw $31, -4($29) addi $29, $29, -8 -# ori _param_b_1_,$2,0 -# ori _cond_6_,_param_b_1_,0 - bne $2, $0, _then_3_ -# was: bne _cond_6_, $0, _then_3_ - j _else_4_ -_then_3_: +# ori _param_b_18_,$2,0 +# ori _cond_23_,_param_b_18_,0 + bne $2, $0, _then_20_ +# was: bne _cond_23_, $0, _then_20_ + j _else_21_ +_then_20_: ori $2, $0, 0 -# was: ori _zerores_2_, $0, 0 - j _endif_5_ -_else_4_: -# ori _arg_7_,_param_b_1_,0 -# ori $2,_arg_7_,0 +# was: ori _zerores_19_, $0, 0 + j _endif_22_ +_else_21_: +# ori _arg_24_,_param_b_18_,0 +# ori $2,_arg_24_,0 jal zero # was: jal zero, $2 -# ori _zerores_2_,$2,0 -_endif_5_: -# ori $2,_zerores_2_,0 +# ori _zerores_19_,$2,0 +_endif_22_: +# ori $2,_zerores_19_,0 + addi $29, $29, 8 + lw $31, -4($29) + jr $31 +# Function test +test: + sw $31, -4($29) + addi $29, $29, -8 +# ori _param_z_25_,$2,0 + ori $3, $0, 1 +# was: ori _plus_L_28_, $0, 1 +# ori _plus_R_29_,_param_z_25_,0 + add $3, $3, $2 +# was: add _letBind_27_, _plus_L_28_, _plus_R_29_ + ori $4, $0, 2 +# was: ori _plus_L_31_, $0, 2 +# ori _plus_R_32_,_param_z_25_,0 + add $5, $4, $2 +# was: add _letBind_30_, _plus_L_31_, _plus_R_32_ + ori $4, $0, 3 +# was: ori _plus_L_34_, $0, 3 +# ori _plus_R_35_,_param_z_25_,0 + add $4, $4, $2 +# was: add _letBind_33_, _plus_L_34_, _plus_R_35_ + ori $6, $0, 4 +# was: ori _plus_L_37_, $0, 4 +# ori _plus_R_38_,_param_z_25_,0 + add $2, $6, $2 +# was: add _letBind_36_, _plus_L_37_, _plus_R_38_ +# ori _arg_39_,_letBind_36_,0 +# ori _arg_40_,_letBind_27_,0 +# ori _arg_41_,_letBind_33_,0 +# ori _arg_42_,_letBind_30_,0 +# ori $2,_arg_39_,0 +# ori $3,_arg_40_,0 +# ori $4,_arg_41_,0 +# ori $5,_arg_42_,0 + jal f +# was: jal f, $2 $3 $4 $5 +# ori _testres_26_,$2,0 +# ori $2,_testres_26_,0 addi $29, $29, 8 lw $31, -4($29) jr $31 @@ -47,76 +121,43 @@ main: sw $17, -12($29) sw $16, -8($29) addi $29, $29, -16 - ori $16, $0, 4132 -# was: ori _tmp_10_, $0, 4132 -# ori _letBind_9_,_tmp_10_,0 - ori $2, $16, 0 -# was: ori $2, _letBind_9_, 0 + ori $2, $0, 0 +# was: ori _arg_46_, $0, 0 +# ori $2,_arg_46_,0 + jal test +# was: jal test, $2 +# ori _tmp_45_,$2,0 + ori $17, $2, 0 +# was: ori _letBind_44_, _tmp_45_, 0 + ori $2, $17, 0 +# was: ori $2, _letBind_44_, 0 jal putint # was: jal putint, $2 ori $2, $0, 1 -# was: ori _arg_14_, $0, 1 -# ori $2,_arg_14_,0 +# was: ori _arg_50_, $0, 1 +# ori $2,_arg_50_,0 jal zero # was: jal zero, $2 - ori $6, $2, 0 -# was: ori _letBind_13_, $2, 0 - ori $2, $0, 1 -# was: ori _plus_L_16_, $0, 1 -# ori _plus_R_17_,_letBind_13_,0 - add $4, $2, $6 -# was: add _letBind_15_, _plus_L_16_, _plus_R_17_ - ori $2, $0, 2 -# was: ori _plus_L_19_, $0, 2 -# ori _plus_R_20_,_letBind_13_,0 - add $2, $2, $6 -# was: add _letBind_18_, _plus_L_19_, _plus_R_20_ - ori $3, $0, 3 -# was: ori _plus_L_22_, $0, 3 -# ori _plus_R_23_,_letBind_13_,0 - add $3, $3, $6 -# was: add _letBind_21_, _plus_L_22_, _plus_R_23_ - ori $5, $0, 4 -# was: ori _plus_L_25_, $0, 4 -# ori _plus_R_26_,_letBind_13_,0 - add $6, $5, $6 -# was: add _letBind_24_, _plus_L_25_, _plus_R_26_ - ori $5, $0, 1000 -# was: ori _mult1_L_33_, $0, 1000 -# ori _mult2_R_34_,_letBind_24_,0 - mul $5, $5, $6 -# was: mul _plus_L_31_, _mult1_L_33_, _mult2_R_34_ - ori $6, $0, 100 -# was: ori _mult1_L_35_, $0, 100 -# ori _mult2_R_36_,_letBind_15_,0 - mul $4, $6, $4 -# was: mul _plus_R_32_, _mult1_L_35_, _mult2_R_36_ - add $5, $5, $4 -# was: add _plus_L_29_, _plus_L_31_, _plus_R_32_ - ori $4, $0, 10 -# was: ori _mult1_L_37_, $0, 10 -# ori _mult2_R_38_,_letBind_21_,0 - mul $3, $4, $3 -# was: mul _plus_R_30_, _mult1_L_37_, _mult2_R_38_ - add $3, $5, $3 -# was: add _plus_L_27_, _plus_L_29_, _plus_R_30_ -# ori _plus_R_28_,_letBind_18_,0 - add $17, $3, $2 -# was: add _tmp_12_, _plus_L_27_, _plus_R_28_ -# ori _letBind_11_,_tmp_12_,0 - ori $2, $17, 0 -# was: ori $2, _letBind_11_, 0 +# ori _arg_49_,$2,0 +# ori $2,_arg_49_,0 + jal test +# was: jal test, $2 +# ori _tmp_48_,$2,0 + ori $16, $2, 0 +# was: ori _letBind_47_, _tmp_48_, 0 + ori $2, $16, 0 +# was: ori $2, _letBind_47_, 0 jal putint # was: jal putint, $2 ori $2, $0, 10000 -# was: ori _mult1_L_41_, $0, 10000 -# ori _mult2_R_42_,_letBind_9_,0 - mul $2, $2, $16 -# was: mul _plus_L_39_, _mult1_L_41_, _mult2_R_42_ -# ori _plus_R_40_,_letBind_11_,0 - add $2, $2, $17 -# was: add _mainres_8_, _plus_L_39_, _plus_R_40_ -# ori $2,_mainres_8_,0 +# was: ori _times_L_53_, $0, 10000 +# ori _times_R_54_,_letBind_44_,0 + mul $2, $2, $17 +# was: mul _plus_L_51_, _times_L_53_, _times_R_54_ +# ori _plus_R_52_,_letBind_47_,0 + add $2, $2, $16 +# was: add _mainres_43_, _plus_L_51_, _plus_R_52_ +# ori $2,_mainres_43_,0 addi $29, $29, 16 lw $17, -12($29) lw $16, -8($29) diff --git a/tests/io_mssp.asm b/tests/io_mssp.asm index c89ed87..9c682bb 100644 --- a/tests/io_mssp.asm +++ b/tests/io_mssp.asm @@ -1,30 +1,42 @@ .text 0x00400000 .globl main la $28, _heap_ - la $4, _aaMSSPa_193_ -# was: la _aaMSSPa_193__addr, _aaMSSPa_193_ + la $4, _aaMSSPa_210_ +# was: la _aaMSSPa_210__addr, _aaMSSPa_210_ ori $3, $0, 18 -# was: ori _aaMSSPa_193__init, $0, 18 +# was: ori _aaMSSPa_210__init, $0, 18 sw $3, 0($4) -# was: sw _aaMSSPa_193__init, 0(_aaMSSPa_193__addr) - la $4, _a__str__33_ -# was: la _a__str__33__addr, _a__str__33_ +# was: sw _aaMSSPa_210__init, 0(_aaMSSPa_210__addr) + la $4, _aaa__st_59_ +# was: la _aaa__st_59__addr, _aaa__st_59_ + ori $3, $0, 3 +# was: ori _aaa__st_59__init, $0, 3 + sw $3, 0($4) +# was: sw _aaa__st_59__init, 0(_aaa__st_59__addr) + la $4, _aaa__st_44_ +# was: la _aaa__st_44__addr, _aaa__st_44_ + ori $3, $0, 3 +# was: ori _aaa__st_44__init, $0, 3 + sw $3, 0($4) +# was: sw _aaa__st_44__init, 0(_aaa__st_44__addr) + la $4, _a__str__14_ +# was: la _a__str__14__addr, _a__str__14_ ori $3, $0, 1 -# was: ori _a__str__33__init, $0, 1 +# was: ori _a__str__14__init, $0, 1 sw $3, 0($4) -# was: sw _a__str__33__init, 0(_a__str__33__addr) - la $4, _aa__str_29_ -# was: la _aa__str_29__addr, _aa__str_29_ +# was: sw _a__str__14__init, 0(_a__str__14__addr) + la $4, _aa__str_10_ +# was: la _aa__str_10__addr, _aa__str_10_ ori $3, $0, 2 -# was: ori _aa__str_29__init, $0, 2 +# was: ori _aa__str_10__init, $0, 2 sw $3, 0($4) -# was: sw _aa__str_29__init, 0(_aa__str_29__addr) - la $4, _Introdu_24_ -# was: la _Introdu_24__addr, _Introdu_24_ +# was: sw _aa__str_10__init, 0(_aa__str_10__addr) + la $4, _Introdu_5_ +# was: la _Introdu_5__addr, _Introdu_5_ ori $3, $0, 17 -# was: ori _Introdu_24__init, $0, 17 +# was: ori _Introdu_5__init, $0, 17 sw $3, 0($4) -# was: sw _Introdu_24__init, 0(_Introdu_24__addr) +# was: sw _Introdu_5__init, 0(_Introdu_5__addr) la $4, _true # was: la _true_addr, _true ori $3, $0, 4 @@ -41,521 +53,593 @@ _stop_: ori $2, $0, 10 syscall -# Function main -main: +# Function read_int +read_int: + sw $31, -4($29) + sw $16, -8($29) + addi $29, $29, -12 + ori $16, $2, 0 +# was: ori _param_i_1_, $2, 0 + la $2, _Introdu_5_ +# was: la _tmp_4_, _Introdu_5_ +# _Introdu_5_: string "Introduce number " +# ori _letBind_3_,_tmp_4_,0 +# ori $2,_tmp_4_,0 + jal putstring +# was: jal putstring, $2 + ori $2, $16, 0 +# was: ori _tmp_7_, _param_i_1_, 0 +# ori _letBind_6_,_tmp_7_,0 +# ori $2,_letBind_6_,0 + jal putint +# was: jal putint, $2 + la $2, _aa__str_10_ +# was: la _tmp_9_, _aa__str_10_ +# _aa__str_10_: string ": " +# ori _letBind_8_,_tmp_9_,0 +# ori $2,_tmp_9_,0 + jal putstring +# was: jal putstring, $2 + jal getint +# was: jal getint, $2 + ori $16, $2, 0 +# was: ori _letBind_11_, $2, 0 + la $2, _a__str__14_ +# was: la _tmp_13_, _a__str__14_ +# _a__str__14_: string "\n" +# ori _letBind_12_,_tmp_13_,0 +# ori $2,_tmp_13_,0 + jal putstring +# was: jal putstring, $2 + ori $2, $16, 0 +# was: ori _read_intres_2_, _letBind_11_, 0 +# ori $2,_read_intres_2_,0 + addi $29, $29, 12 + lw $16, -8($29) + lw $31, -4($29) + jr $31 +# Function read_int_arr +read_int_arr: sw $31, -4($29) - sw $21, -28($29) sw $20, -24($29) sw $19, -20($29) sw $18, -16($29) sw $17, -12($29) sw $16, -8($29) - addi $29, $29, -32 - ori $2, $0, 8 -# was: ori _size_reg_3_, $0, 8 - bgez $2, _safe_lab_4_ -# was: bgez _size_reg_3_, _safe_lab_4_ + addi $29, $29, -28 +# ori _param_n_15_,$2,0 +# ori _size_reg_18_,_param_n_15_,0 + bgez $2, _safe_lab_19_ +# was: bgez _size_reg_18_, _safe_lab_19_ ori $5, $0, 10 # was: ori $5, $0, 10 la $6, _Msg_IllegalArraySize_ # was: la $6, _Msg_IllegalArraySize_ j _RuntimeError_ -_safe_lab_4_: +_safe_lab_19_: ori $3, $28, 0 -# was: ori _letBind_2_, $28, 0 +# was: ori _letBind_17_, $28, 0 sll $4, $2, 2 -# was: sll _tmp_10_, _size_reg_3_, 2 +# was: sll _tmp_25_, _size_reg_18_, 2 addi $4, $4, 4 -# was: addi _tmp_10_, _tmp_10_, 4 +# was: addi _tmp_25_, _tmp_25_, 4 add $28, $28, $4 -# was: add $28, $28, _tmp_10_ +# was: add $28, $28, _tmp_25_ sw $2, 0($3) -# was: sw _size_reg_3_, 0(_letBind_2_) - addi $5, $3, 4 -# was: addi _addr_reg_5_, _letBind_2_, 4 - ori $6, $0, 0 -# was: ori _i_reg_6_, $0, 0 -_loop_beg_7_: - sub $4, $6, $2 -# was: sub _tmp_reg_9_, _i_reg_6_, _size_reg_3_ - bgez $4, _loop_end_8_ -# was: bgez _tmp_reg_9_, _loop_end_8_ - sw $6, 0($5) -# was: sw _i_reg_6_, 0(_addr_reg_5_) - addi $5, $5, 4 -# was: addi _addr_reg_5_, _addr_reg_5_, 4 - addi $6, $6, 1 -# was: addi _i_reg_6_, _i_reg_6_, 1 - j _loop_beg_7_ -_loop_end_8_: +# was: sw _size_reg_18_, 0(_letBind_17_) + addi $6, $3, 4 +# was: addi _addr_reg_20_, _letBind_17_, 4 + ori $5, $0, 0 +# was: ori _i_reg_21_, $0, 0 +_loop_beg_22_: + sub $4, $5, $2 +# was: sub _tmp_reg_24_, _i_reg_21_, _size_reg_18_ + bgez $4, _loop_end_23_ +# was: bgez _tmp_reg_24_, _loop_end_23_ + sw $5, 0($6) +# was: sw _i_reg_21_, 0(_addr_reg_20_) + addi $6, $6, 4 +# was: addi _addr_reg_20_, _addr_reg_20_, 4 + addi $5, $5, 1 +# was: addi _i_reg_21_, _i_reg_21_, 1 + j _loop_beg_22_ +_loop_end_23_: ori $2, $3, 0 -# was: ori _arr_reg_13_, _letBind_2_, 0 - lw $16, 0($2) -# was: lw _size_reg_12_, 0(_arr_reg_13_) - ori $17, $28, 0 -# was: ori _letBind_11_, $28, 0 - sll $3, $16, 2 -# was: sll _tmp_34_, _size_reg_12_, 2 +# was: ori _arr_reg_27_, _letBind_17_, 0 + lw $17, 0($2) +# was: lw _size_reg_26_, 0(_arr_reg_27_) + ori $16, $28, 0 +# was: ori _read_int_arrres_16_, $28, 0 + sll $3, $17, 2 +# was: sll _tmp_36_, _size_reg_26_, 2 addi $3, $3, 4 -# was: addi _tmp_34_, _tmp_34_, 4 +# was: addi _tmp_36_, _tmp_36_, 4 add $28, $28, $3 -# was: add $28, $28, _tmp_34_ - sw $16, 0($17) -# was: sw _size_reg_12_, 0(_letBind_11_) - addi $18, $17, 4 -# was: addi _addr_reg_16_, _letBind_11_, 4 +# was: add $28, $28, _tmp_36_ + sw $17, 0($16) +# was: sw _size_reg_26_, 0(_read_int_arrres_16_) + addi $18, $16, 4 +# was: addi _addr_reg_30_, _read_int_arrres_16_, 4 ori $19, $0, 0 -# was: ori _i_reg_17_, $0, 0 +# was: ori _i_reg_31_, $0, 0 addi $20, $2, 4 -# was: addi _elem_reg_14_, _arr_reg_13_, 4 -_loop_beg_18_: - sub $2, $19, $16 -# was: sub _tmp_reg_20_, _i_reg_17_, _size_reg_12_ - bgez $2, _loop_end_19_ -# was: bgez _tmp_reg_20_, _loop_end_19_ - lw $21, 0($20) -# was: lw _res_reg_15_, 0(_elem_reg_14_) +# was: addi _elem_reg_28_, _arr_reg_27_, 4 +_loop_beg_32_: + sub $2, $19, $17 +# was: sub _tmp_reg_34_, _i_reg_31_, _size_reg_26_ + bgez $2, _loop_end_33_ +# was: bgez _tmp_reg_34_, _loop_end_33_ + lw $2, 0($20) +# was: lw _res_reg_29_, 0(_elem_reg_28_) addi $20, $20, 4 -# was: addi _elem_reg_14_, _elem_reg_14_, 4 - la $2, _Introdu_24_ -# was: la _tmp_23_, _Introdu_24_ -# _Introdu_24_: string "Introduce number " -# ori _letBind_22_,_tmp_23_,0 -# ori $2,_tmp_23_,0 - jal putstring -# was: jal putstring, $2 - ori $2, $21, 0 -# was: ori _tmp_26_, _res_reg_15_, 0 -# ori _letBind_25_,_tmp_26_,0 -# ori $2,_letBind_25_,0 +# was: addi _elem_reg_28_, _elem_reg_28_, 4 +# ori $2,_res_reg_29_,0 + jal read_int +# was: jal read_int, $2 +# ori _tmp_reg_35_,$2,0 +# ori _res_reg_29_,_tmp_reg_35_,0 + sw $2, 0($18) +# was: sw _res_reg_29_, 0(_addr_reg_30_) + addi $18, $18, 4 +# was: addi _addr_reg_30_, _addr_reg_30_, 4 + addi $19, $19, 1 +# was: addi _i_reg_31_, _i_reg_31_, 1 + j _loop_beg_32_ +_loop_end_33_: + ori $2, $16, 0 +# was: ori $2, _read_int_arrres_16_, 0 + addi $29, $29, 28 + lw $20, -24($29) + lw $19, -20($29) + lw $18, -16($29) + lw $17, -12($29) + lw $16, -8($29) + lw $31, -4($29) + jr $31 +# Function write_int +write_int: + sw $31, -4($29) + sw $16, -8($29) + addi $29, $29, -12 +# ori _param_i_37_,$2,0 + ori $16, $2, 0 +# was: ori _tmp_39_, _param_i_37_, 0 +# ori _write_intres_38_,_tmp_39_,0 + ori $2, $16, 0 +# was: ori $2, _write_intres_38_, 0 jal putint # was: jal putint, $2 - la $2, _aa__str_29_ -# was: la _tmp_28_, _aa__str_29_ -# _aa__str_29_: string ": " -# ori _letBind_27_,_tmp_28_,0 -# ori $2,_tmp_28_,0 + ori $2, $16, 0 +# was: ori $2, _write_intres_38_, 0 + addi $29, $29, 12 + lw $16, -8($29) + lw $31, -4($29) + jr $31 +# Function write_int_arr +write_int_arr: + sw $31, -4($29) + sw $19, -20($29) + sw $18, -16($29) + sw $17, -12($29) + sw $16, -8($29) + addi $29, $29, -24 + ori $16, $2, 0 +# was: ori _param_arr_40_, $2, 0 + la $2, _aaa__st_44_ +# was: la _tmp_43_, _aaa__st_44_ +# _aaa__st_44_: string " { " +# ori _letBind_42_,_tmp_43_,0 +# ori $2,_tmp_43_,0 jal putstring # was: jal putstring, $2 - jal getint -# was: jal getint, $2 - ori $21, $2, 0 -# was: ori _letBind_30_, $2, 0 - la $2, _a__str__33_ -# was: la _tmp_32_, _a__str__33_ -# _a__str__33_: string "\n" -# ori _letBind_31_,_tmp_32_,0 -# ori $2,_tmp_32_,0 - jal putstring -# was: jal putstring, $2 -# ori _fun_arg_res_21_,_letBind_30_,0 -# ori _res_reg_15_,_fun_arg_res_21_,0 - sw $21, 0($18) -# was: sw _res_reg_15_, 0(_addr_reg_16_) - addi $18, $18, 4 -# was: addi _addr_reg_16_, _addr_reg_16_, 4 - addi $19, $19, 1 -# was: addi _i_reg_17_, _i_reg_17_, 1 - j _loop_beg_18_ -_loop_end_19_: -# ori _arr_reg_37_,_letBind_11_,0 - lw $6, 0($17) -# was: lw _size_reg_36_, 0(_arr_reg_37_) - ori $5, $28, 0 -# was: ori _letBind_35_, $28, 0 - sll $2, $6, 2 -# was: sll _tmp_57_, _size_reg_36_, 2 - addi $2, $2, 4 -# was: addi _tmp_57_, _tmp_57_, 4 - add $28, $28, $2 -# was: add $28, $28, _tmp_57_ - sw $6, 0($5) -# was: sw _size_reg_36_, 0(_letBind_35_) - addi $8, $5, 4 -# was: addi _addr_reg_40_, _letBind_35_, 4 - ori $7, $0, 0 -# was: ori _i_reg_41_, $0, 0 - addi $9, $17, 4 -# was: addi _elem_reg_38_, _arr_reg_37_, 4 -_loop_beg_42_: - sub $2, $7, $6 -# was: sub _tmp_reg_44_, _i_reg_41_, _size_reg_36_ - bgez $2, _loop_end_43_ -# was: bgez _tmp_reg_44_, _loop_end_43_ - lw $10, 0($9) -# was: lw _res_reg_39_, 0(_elem_reg_38_) - addi $9, $9, 4 -# was: addi _elem_reg_38_, _elem_reg_38_, 4 -# ori _lt_L_51_,_res_reg_39_,0 - ori $2, $0, 0 -# was: ori _lt_R_52_, $0, 0 - slt $2, $10, $2 -# was: slt _cond_50_, _lt_L_51_, _lt_R_52_ - bne $2, $0, _then_47_ -# was: bne _cond_50_, $0, _then_47_ - j _else_48_ -_then_47_: - ori $4, $0, 0 -# was: ori _letBind_46_, $0, 0 - j _endif_49_ -_else_48_: - ori $4, $10, 0 -# was: ori _letBind_46_, _res_reg_39_, 0 -_endif_49_: - ori $11, $0, 4 -# was: ori _size_reg_53_, $0, 4 + ori $2, $16, 0 +# was: ori _arr_reg_47_, _param_arr_40_, 0 + lw $16, 0($2) +# was: lw _size_reg_46_, 0(_arr_reg_47_) ori $3, $28, 0 -# was: ori _fun_arg_res_45_, $28, 0 - sll $2, $11, 2 -# was: sll _tmp_56_, _size_reg_53_, 2 - addi $2, $2, 4 +# was: ori _letBind_45_, $28, 0 + sll $4, $16, 2 +# was: sll _tmp_56_, _size_reg_46_, 2 + addi $4, $4, 4 # was: addi _tmp_56_, _tmp_56_, 4 - add $28, $28, $2 + add $28, $28, $4 # was: add $28, $28, _tmp_56_ - sw $11, 0($3) -# was: sw _size_reg_53_, 0(_fun_arg_res_45_) - addi $2, $3, 4 -# was: addi _addr_reg_54_, _fun_arg_res_45_, 4 -# ori _tmp_reg_55_,_letBind_46_,0 - sw $4, 0($2) -# was: sw _tmp_reg_55_, 0(_addr_reg_54_) - addi $2, $2, 4 -# was: addi _addr_reg_54_, _addr_reg_54_, 4 -# ori _tmp_reg_55_,_letBind_46_,0 - sw $4, 0($2) -# was: sw _tmp_reg_55_, 0(_addr_reg_54_) - addi $2, $2, 4 -# was: addi _addr_reg_54_, _addr_reg_54_, 4 -# ori _tmp_reg_55_,_letBind_46_,0 - sw $4, 0($2) -# was: sw _tmp_reg_55_, 0(_addr_reg_54_) - addi $2, $2, 4 -# was: addi _addr_reg_54_, _addr_reg_54_, 4 - ori $4, $10, 0 -# was: ori _tmp_reg_55_, _res_reg_39_, 0 - sw $4, 0($2) -# was: sw _tmp_reg_55_, 0(_addr_reg_54_) - addi $2, $2, 4 -# was: addi _addr_reg_54_, _addr_reg_54_, 4 - ori $10, $3, 0 -# was: ori _res_reg_39_, _fun_arg_res_45_, 0 - sw $10, 0($8) -# was: sw _res_reg_39_, 0(_addr_reg_40_) - addi $8, $8, 4 -# was: addi _addr_reg_40_, _addr_reg_40_, 4 - addi $7, $7, 1 -# was: addi _i_reg_41_, _i_reg_41_, 1 - j _loop_beg_42_ -_loop_end_43_: - ori $2, $0, 4 -# was: ori _size_reg_59_, $0, 4 - ori $16, $28, 0 -# was: ori _letBind_58_, $28, 0 - sll $3, $2, 2 -# was: sll _tmp_62_, _size_reg_59_, 2 - addi $3, $3, 4 -# was: addi _tmp_62_, _tmp_62_, 4 - add $28, $28, $3 -# was: add $28, $28, _tmp_62_ - sw $2, 0($16) -# was: sw _size_reg_59_, 0(_letBind_58_) - addi $2, $16, 4 -# was: addi _addr_reg_60_, _letBind_58_, 4 + sw $16, 0($3) +# was: sw _size_reg_46_, 0(_letBind_45_) + addi $17, $3, 4 +# was: addi _addr_reg_50_, _letBind_45_, 4 + ori $18, $0, 0 +# was: ori _i_reg_51_, $0, 0 + addi $19, $2, 4 +# was: addi _elem_reg_48_, _arr_reg_47_, 4 +_loop_beg_52_: + sub $2, $18, $16 +# was: sub _tmp_reg_54_, _i_reg_51_, _size_reg_46_ + bgez $2, _loop_end_53_ +# was: bgez _tmp_reg_54_, _loop_end_53_ + lw $2, 0($19) +# was: lw _res_reg_49_, 0(_elem_reg_48_) + addi $19, $19, 4 +# was: addi _elem_reg_48_, _elem_reg_48_, 4 +# ori $2,_res_reg_49_,0 + jal write_int +# was: jal write_int, $2 +# ori _tmp_reg_55_,$2,0 +# ori _res_reg_49_,_tmp_reg_55_,0 + sw $2, 0($17) +# was: sw _res_reg_49_, 0(_addr_reg_50_) + addi $17, $17, 4 +# was: addi _addr_reg_50_, _addr_reg_50_, 4 + addi $18, $18, 1 +# was: addi _i_reg_51_, _i_reg_51_, 1 + j _loop_beg_52_ +_loop_end_53_: + la $2, _aaa__st_59_ +# was: la _tmp_58_, _aaa__st_59_ +# _aaa__st_59_: string " }\n" +# ori _letBind_57_,_tmp_58_,0 +# ori $2,_tmp_58_,0 + jal putstring +# was: jal putstring, $2 + ori $2, $0, 1 +# was: ori _write_int_arrres_41_, $0, 1 +# ori $2,_write_int_arrres_41_,0 + addi $29, $29, 24 + lw $19, -20($29) + lw $18, -16($29) + lw $17, -12($29) + lw $16, -8($29) + lw $31, -4($29) + jr $31 +# Function max +max: + sw $31, -4($29) + addi $29, $29, -8 +# ori _param_x_60_,$2,0 +# ori _param_y_61_,$3,0 +# ori _lt_L_67_,_param_x_60_,0 +# ori _lt_R_68_,_param_y_61_,0 + slt $4, $2, $3 +# was: slt _cond_66_, _lt_L_67_, _lt_R_68_ + bne $4, $0, _then_63_ +# was: bne _cond_66_, $0, _then_63_ + j _else_64_ +_then_63_: + ori $2, $3, 0 +# was: ori _maxres_62_, _param_y_61_, 0 + j _endif_65_ +_else_64_: +# ori _maxres_62_,_param_x_60_,0 +_endif_65_: +# ori $2,_maxres_62_,0 + addi $29, $29, 8 + lw $31, -4($29) + jr $31 +# Function mapper +mapper: + sw $31, -4($29) + sw $16, -8($29) + addi $29, $29, -12 + ori $16, $2, 0 +# was: ori _param_x_69_, $2, 0 + ori $2, $16, 0 +# was: ori _arg_72_, _param_x_69_, 0 ori $3, $0, 0 -# was: ori _tmp_reg_61_, $0, 0 - sw $3, 0($2) -# was: sw _tmp_reg_61_, 0(_addr_reg_60_) - addi $2, $2, 4 -# was: addi _addr_reg_60_, _addr_reg_60_, 4 +# was: ori _arg_73_, $0, 0 +# ori $2,_arg_72_,0 +# ori $3,_arg_73_,0 + jal max +# was: jal max, $2 $3 +# ori _letBind_71_,$2,0 + ori $5, $0, 4 +# was: ori _size_reg_74_, $0, 4 + ori $3, $28, 0 +# was: ori _mapperres_70_, $28, 0 + sll $4, $5, 2 +# was: sll _tmp_77_, _size_reg_74_, 2 + addi $4, $4, 4 +# was: addi _tmp_77_, _tmp_77_, 4 + add $28, $28, $4 +# was: add $28, $28, _tmp_77_ + sw $5, 0($3) +# was: sw _size_reg_74_, 0(_mapperres_70_) + addi $4, $3, 4 +# was: addi _addr_reg_75_, _mapperres_70_, 4 +# ori _tmp_reg_76_,_letBind_71_,0 + sw $2, 0($4) +# was: sw _tmp_reg_76_, 0(_addr_reg_75_) + addi $4, $4, 4 +# was: addi _addr_reg_75_, _addr_reg_75_, 4 +# ori _tmp_reg_76_,_letBind_71_,0 + sw $2, 0($4) +# was: sw _tmp_reg_76_, 0(_addr_reg_75_) + addi $4, $4, 4 +# was: addi _addr_reg_75_, _addr_reg_75_, 4 +# ori _tmp_reg_76_,_letBind_71_,0 + sw $2, 0($4) +# was: sw _tmp_reg_76_, 0(_addr_reg_75_) + addi $4, $4, 4 +# was: addi _addr_reg_75_, _addr_reg_75_, 4 + ori $2, $16, 0 +# was: ori _tmp_reg_76_, _param_x_69_, 0 + sw $2, 0($4) +# was: sw _tmp_reg_76_, 0(_addr_reg_75_) + addi $4, $4, 4 +# was: addi _addr_reg_75_, _addr_reg_75_, 4 + ori $2, $3, 0 +# was: ori $2, _mapperres_70_, 0 + addi $29, $29, 12 + lw $16, -8($29) + lw $31, -4($29) + jr $31 +# Function reducer +reducer: + sw $31, -4($29) + sw $19, -20($29) + sw $18, -16($29) + sw $17, -12($29) + sw $16, -8($29) + addi $29, $29, -24 + ori $18, $2, 0 +# was: ori _param_a_78_, $2, 0 + ori $16, $3, 0 +# was: ori _param_b_79_, $3, 0 ori $3, $0, 0 -# was: ori _tmp_reg_61_, $0, 0 - sw $3, 0($2) -# was: sw _tmp_reg_61_, 0(_addr_reg_60_) - addi $2, $2, 4 -# was: addi _addr_reg_60_, _addr_reg_60_, 4 - ori $3, $0, 0 -# was: ori _tmp_reg_61_, $0, 0 - sw $3, 0($2) -# was: sw _tmp_reg_61_, 0(_addr_reg_60_) - addi $2, $2, 4 -# was: addi _addr_reg_60_, _addr_reg_60_, 4 - ori $3, $0, 0 -# was: ori _tmp_reg_61_, $0, 0 - sw $3, 0($2) -# was: sw _tmp_reg_61_, 0(_addr_reg_60_) - addi $2, $2, 4 -# was: addi _addr_reg_60_, _addr_reg_60_, 4 - ori $3, $5, 0 -# was: ori _arr_reg_64_, _letBind_35_, 0 - lw $2, 0($3) -# was: lw _size_reg_65_, 0(_arr_reg_64_) -# ori _letBind_63_,_letBind_58_,0 - addi $3, $3, 4 -# was: addi _arr_reg_64_, _arr_reg_64_, 4 - ori $4, $0, 0 -# was: ori _ind_var_66_, $0, 0 -_loop_beg_68_: - sub $6, $4, $2 -# was: sub _tmp_reg_67_, _ind_var_66_, _size_reg_65_ - bgez $6, _loop_end_69_ -# was: bgez _tmp_reg_67_, _loop_end_69_ - lw $6, 0($3) -# was: lw _tmp_reg_67_, 0(_arr_reg_64_) - addi $3, $3, 4 -# was: addi _arr_reg_64_, _arr_reg_64_, 4 - ori $5, $0, 0 -# was: ori _arr_ind_72_, $0, 0 - addi $7, $16, 4 -# was: addi _arr_reg_73_, _letBind_63_, 4 - lw $8, 0($16) -# was: lw _size_reg_74_, 0(_letBind_63_) - bgez $5, _safe_lab_77_ -# was: bgez _arr_ind_72_, _safe_lab_77_ -_error_lab_76_: +# was: ori _arr_ind_84_, $0, 0 + addi $2, $18, 4 +# was: addi _arr_reg_85_, _param_a_78_, 4 + lw $4, 0($18) +# was: lw _size_reg_86_, 0(_param_a_78_) + bgez $3, _safe_lab_89_ +# was: bgez _arr_ind_84_, _safe_lab_89_ +_error_lab_88_: ori $5, $0, 28 # was: ori $5, $0, 28 la $6, _Msg_IllegalIndex_ # was: la $6, _Msg_IllegalIndex_ j _RuntimeError_ -_safe_lab_77_: - sub $8, $5, $8 -# was: sub _tmp_reg_75_, _arr_ind_72_, _size_reg_74_ - bgez $8, _error_lab_76_ -# was: bgez _tmp_reg_75_, _error_lab_76_ - sll $5, $5, 2 -# was: sll _arr_ind_72_, _arr_ind_72_, 2 - add $7, $7, $5 -# was: add _arr_reg_73_, _arr_reg_73_, _arr_ind_72_ - lw $9, 0($7) -# was: lw _letBind_71_, 0(_arr_reg_73_) - ori $7, $0, 0 -# was: ori _arr_ind_79_, $0, 0 - addi $5, $6, 4 -# was: addi _arr_reg_80_, _tmp_reg_67_, 4 - lw $8, 0($6) -# was: lw _size_reg_81_, 0(_tmp_reg_67_) - bgez $7, _safe_lab_84_ -# was: bgez _arr_ind_79_, _safe_lab_84_ -_error_lab_83_: +_safe_lab_89_: + sub $4, $3, $4 +# was: sub _tmp_reg_87_, _arr_ind_84_, _size_reg_86_ + bgez $4, _error_lab_88_ +# was: bgez _tmp_reg_87_, _error_lab_88_ + sll $3, $3, 2 +# was: sll _arr_ind_84_, _arr_ind_84_, 2 + add $2, $2, $3 +# was: add _arr_reg_85_, _arr_reg_85_, _arr_ind_84_ + lw $2, 0($2) +# was: lw _arg_83_, 0(_arr_reg_85_) + ori $3, $0, 0 +# was: ori _arr_ind_91_, $0, 0 + addi $4, $16, 4 +# was: addi _arr_reg_92_, _param_b_79_, 4 + lw $5, 0($16) +# was: lw _size_reg_93_, 0(_param_b_79_) + bgez $3, _safe_lab_96_ +# was: bgez _arr_ind_91_, _safe_lab_96_ +_error_lab_95_: ori $5, $0, 28 # was: ori $5, $0, 28 la $6, _Msg_IllegalIndex_ # was: la $6, _Msg_IllegalIndex_ j _RuntimeError_ -_safe_lab_84_: - sub $8, $7, $8 -# was: sub _tmp_reg_82_, _arr_ind_79_, _size_reg_81_ - bgez $8, _error_lab_83_ -# was: bgez _tmp_reg_82_, _error_lab_83_ - sll $7, $7, 2 -# was: sll _arr_ind_79_, _arr_ind_79_, 2 - add $5, $5, $7 -# was: add _arr_reg_80_, _arr_reg_80_, _arr_ind_79_ - lw $5, 0($5) -# was: lw _letBind_78_, 0(_arr_reg_80_) -# ori _lt_L_90_,_letBind_71_,0 -# ori _lt_R_91_,_letBind_78_,0 - slt $7, $9, $5 -# was: slt _cond_89_, _lt_L_90_, _lt_R_91_ - bne $7, $0, _then_86_ -# was: bne _cond_89_, $0, _then_86_ - j _else_87_ -_then_86_: - ori $9, $5, 0 -# was: ori _letBind_85_, _letBind_78_, 0 - j _endif_88_ -_else_87_: -# ori _letBind_85_,_letBind_71_,0 -_endif_88_: +_safe_lab_96_: + sub $5, $3, $5 +# was: sub _tmp_reg_94_, _arr_ind_91_, _size_reg_93_ + bgez $5, _error_lab_95_ +# was: bgez _tmp_reg_94_, _error_lab_95_ + sll $3, $3, 2 +# was: sll _arr_ind_91_, _arr_ind_91_, 2 + add $4, $4, $3 +# was: add _arr_reg_92_, _arr_reg_92_, _arr_ind_91_ + lw $3, 0($4) +# was: lw _arg_90_, 0(_arr_reg_92_) +# ori $2,_arg_83_,0 +# ori $3,_arg_90_,0 + jal max +# was: jal max, $2 $3 +# ori _arg_82_,$2,0 ori $5, $0, 2 -# was: ori _arr_ind_95_, $0, 2 - addi $7, $16, 4 -# was: addi _arr_reg_96_, _letBind_63_, 4 - lw $8, 0($16) -# was: lw _size_reg_97_, 0(_letBind_63_) - bgez $5, _safe_lab_100_ -# was: bgez _arr_ind_95_, _safe_lab_100_ -_error_lab_99_: +# was: ori _arr_ind_100_, $0, 2 + addi $4, $18, 4 +# was: addi _arr_reg_101_, _param_a_78_, 4 + lw $3, 0($18) +# was: lw _size_reg_102_, 0(_param_a_78_) + bgez $5, _safe_lab_105_ +# was: bgez _arr_ind_100_, _safe_lab_105_ +_error_lab_104_: ori $5, $0, 28 # was: ori $5, $0, 28 la $6, _Msg_IllegalIndex_ # was: la $6, _Msg_IllegalIndex_ j _RuntimeError_ -_safe_lab_100_: - sub $8, $5, $8 -# was: sub _tmp_reg_98_, _arr_ind_95_, _size_reg_97_ - bgez $8, _error_lab_99_ -# was: bgez _tmp_reg_98_, _error_lab_99_ +_safe_lab_105_: + sub $3, $5, $3 +# was: sub _tmp_reg_103_, _arr_ind_100_, _size_reg_102_ + bgez $3, _error_lab_104_ +# was: bgez _tmp_reg_103_, _error_lab_104_ sll $5, $5, 2 -# was: sll _arr_ind_95_, _arr_ind_95_, 2 - add $7, $7, $5 -# was: add _arr_reg_96_, _arr_reg_96_, _arr_ind_95_ - lw $8, 0($7) -# was: lw _plus_L_93_, 0(_arr_reg_96_) +# was: sll _arr_ind_100_, _arr_ind_100_, 2 + add $4, $4, $5 +# was: add _arr_reg_101_, _arr_reg_101_, _arr_ind_100_ + lw $3, 0($4) +# was: lw _plus_L_98_, 0(_arr_reg_101_) ori $5, $0, 1 -# was: ori _arr_ind_101_, $0, 1 - addi $7, $6, 4 -# was: addi _arr_reg_102_, _tmp_reg_67_, 4 - lw $10, 0($6) -# was: lw _size_reg_103_, 0(_tmp_reg_67_) - bgez $5, _safe_lab_106_ -# was: bgez _arr_ind_101_, _safe_lab_106_ -_error_lab_105_: +# was: ori _arr_ind_106_, $0, 1 + addi $4, $16, 4 +# was: addi _arr_reg_107_, _param_b_79_, 4 + lw $6, 0($16) +# was: lw _size_reg_108_, 0(_param_b_79_) + bgez $5, _safe_lab_111_ +# was: bgez _arr_ind_106_, _safe_lab_111_ +_error_lab_110_: ori $5, $0, 28 # was: ori $5, $0, 28 la $6, _Msg_IllegalIndex_ # was: la $6, _Msg_IllegalIndex_ j _RuntimeError_ -_safe_lab_106_: - sub $10, $5, $10 -# was: sub _tmp_reg_104_, _arr_ind_101_, _size_reg_103_ - bgez $10, _error_lab_105_ -# was: bgez _tmp_reg_104_, _error_lab_105_ +_safe_lab_111_: + sub $6, $5, $6 +# was: sub _tmp_reg_109_, _arr_ind_106_, _size_reg_108_ + bgez $6, _error_lab_110_ +# was: bgez _tmp_reg_109_, _error_lab_110_ sll $5, $5, 2 -# was: sll _arr_ind_101_, _arr_ind_101_, 2 - add $7, $7, $5 -# was: add _arr_reg_102_, _arr_reg_102_, _arr_ind_101_ - lw $5, 0($7) -# was: lw _plus_R_94_, 0(_arr_reg_102_) - add $5, $8, $5 -# was: add _letBind_92_, _plus_L_93_, _plus_R_94_ -# ori _lt_L_112_,_letBind_85_,0 -# ori _lt_R_113_,_letBind_92_,0 - slt $7, $9, $5 -# was: slt _cond_111_, _lt_L_112_, _lt_R_113_ - bne $7, $0, _then_108_ -# was: bne _cond_111_, $0, _then_108_ - j _else_109_ -_then_108_: -# ori _letBind_107_,_letBind_92_,0 - j _endif_110_ -_else_109_: - ori $5, $9, 0 -# was: ori _letBind_107_, _letBind_85_, 0 -_endif_110_: - ori $7, $0, 1 -# was: ori _arr_ind_115_, $0, 1 - addi $8, $16, 4 -# was: addi _arr_reg_116_, _letBind_63_, 4 - lw $9, 0($16) -# was: lw _size_reg_117_, 0(_letBind_63_) - bgez $7, _safe_lab_120_ -# was: bgez _arr_ind_115_, _safe_lab_120_ -_error_lab_119_: +# was: sll _arr_ind_106_, _arr_ind_106_, 2 + add $4, $4, $5 +# was: add _arr_reg_107_, _arr_reg_107_, _arr_ind_106_ + lw $4, 0($4) +# was: lw _plus_R_99_, 0(_arr_reg_107_) + add $3, $3, $4 +# was: add _arg_97_, _plus_L_98_, _plus_R_99_ +# ori $2,_arg_82_,0 +# ori $3,_arg_97_,0 + jal max +# was: jal max, $2 $3 + ori $17, $2, 0 +# was: ori _letBind_81_, $2, 0 + ori $3, $0, 1 +# was: ori _arr_ind_114_, $0, 1 + addi $2, $18, 4 +# was: addi _arr_reg_115_, _param_a_78_, 4 + lw $4, 0($18) +# was: lw _size_reg_116_, 0(_param_a_78_) + bgez $3, _safe_lab_119_ +# was: bgez _arr_ind_114_, _safe_lab_119_ +_error_lab_118_: ori $5, $0, 29 # was: ori $5, $0, 29 la $6, _Msg_IllegalIndex_ # was: la $6, _Msg_IllegalIndex_ j _RuntimeError_ -_safe_lab_120_: - sub $9, $7, $9 -# was: sub _tmp_reg_118_, _arr_ind_115_, _size_reg_117_ - bgez $9, _error_lab_119_ -# was: bgez _tmp_reg_118_, _error_lab_119_ - sll $7, $7, 2 -# was: sll _arr_ind_115_, _arr_ind_115_, 2 - add $8, $8, $7 -# was: add _arr_reg_116_, _arr_reg_116_, _arr_ind_115_ - lw $7, 0($8) -# was: lw _letBind_114_, 0(_arr_reg_116_) - ori $9, $0, 3 -# was: ori _arr_ind_124_, $0, 3 - addi $10, $16, 4 -# was: addi _arr_reg_125_, _letBind_63_, 4 - lw $8, 0($16) -# was: lw _size_reg_126_, 0(_letBind_63_) - bgez $9, _safe_lab_129_ -# was: bgez _arr_ind_124_, _safe_lab_129_ -_error_lab_128_: +_safe_lab_119_: + sub $4, $3, $4 +# was: sub _tmp_reg_117_, _arr_ind_114_, _size_reg_116_ + bgez $4, _error_lab_118_ +# was: bgez _tmp_reg_117_, _error_lab_118_ + sll $3, $3, 2 +# was: sll _arr_ind_114_, _arr_ind_114_, 2 + add $2, $2, $3 +# was: add _arr_reg_115_, _arr_reg_115_, _arr_ind_114_ + lw $4, 0($2) +# was: lw _arg_113_, 0(_arr_reg_115_) + ori $2, $0, 3 +# was: ori _arr_ind_123_, $0, 3 + addi $3, $18, 4 +# was: addi _arr_reg_124_, _param_a_78_, 4 + lw $5, 0($18) +# was: lw _size_reg_125_, 0(_param_a_78_) + bgez $2, _safe_lab_128_ +# was: bgez _arr_ind_123_, _safe_lab_128_ +_error_lab_127_: ori $5, $0, 29 # was: ori $5, $0, 29 la $6, _Msg_IllegalIndex_ # was: la $6, _Msg_IllegalIndex_ j _RuntimeError_ -_safe_lab_129_: - sub $8, $9, $8 -# was: sub _tmp_reg_127_, _arr_ind_124_, _size_reg_126_ - bgez $8, _error_lab_128_ -# was: bgez _tmp_reg_127_, _error_lab_128_ - sll $9, $9, 2 -# was: sll _arr_ind_124_, _arr_ind_124_, 2 - add $10, $10, $9 -# was: add _arr_reg_125_, _arr_reg_125_, _arr_ind_124_ - lw $9, 0($10) -# was: lw _plus_L_122_, 0(_arr_reg_125_) - ori $8, $0, 1 -# was: ori _arr_ind_130_, $0, 1 - addi $10, $6, 4 -# was: addi _arr_reg_131_, _tmp_reg_67_, 4 - lw $11, 0($6) -# was: lw _size_reg_132_, 0(_tmp_reg_67_) - bgez $8, _safe_lab_135_ -# was: bgez _arr_ind_130_, _safe_lab_135_ -_error_lab_134_: +_safe_lab_128_: + sub $5, $2, $5 +# was: sub _tmp_reg_126_, _arr_ind_123_, _size_reg_125_ + bgez $5, _error_lab_127_ +# was: bgez _tmp_reg_126_, _error_lab_127_ + sll $2, $2, 2 +# was: sll _arr_ind_123_, _arr_ind_123_, 2 + add $3, $3, $2 +# was: add _arr_reg_124_, _arr_reg_124_, _arr_ind_123_ + lw $5, 0($3) +# was: lw _plus_L_121_, 0(_arr_reg_124_) + ori $2, $0, 1 +# was: ori _arr_ind_129_, $0, 1 + addi $3, $16, 4 +# was: addi _arr_reg_130_, _param_b_79_, 4 + lw $6, 0($16) +# was: lw _size_reg_131_, 0(_param_b_79_) + bgez $2, _safe_lab_134_ +# was: bgez _arr_ind_129_, _safe_lab_134_ +_error_lab_133_: ori $5, $0, 29 # was: ori $5, $0, 29 la $6, _Msg_IllegalIndex_ # was: la $6, _Msg_IllegalIndex_ j _RuntimeError_ -_safe_lab_135_: - sub $11, $8, $11 -# was: sub _tmp_reg_133_, _arr_ind_130_, _size_reg_132_ - bgez $11, _error_lab_134_ -# was: bgez _tmp_reg_133_, _error_lab_134_ - sll $8, $8, 2 -# was: sll _arr_ind_130_, _arr_ind_130_, 2 - add $10, $10, $8 -# was: add _arr_reg_131_, _arr_reg_131_, _arr_ind_130_ - lw $8, 0($10) -# was: lw _plus_R_123_, 0(_arr_reg_131_) - add $8, $9, $8 -# was: add _letBind_121_, _plus_L_122_, _plus_R_123_ -# ori _lt_L_141_,_letBind_114_,0 -# ori _lt_R_142_,_letBind_121_,0 - slt $9, $7, $8 -# was: slt _cond_140_, _lt_L_141_, _lt_R_142_ - bne $9, $0, _then_137_ -# was: bne _cond_140_, $0, _then_137_ - j _else_138_ -_then_137_: - ori $7, $8, 0 -# was: ori _letBind_136_, _letBind_121_, 0 - j _endif_139_ -_else_138_: -# ori _letBind_136_,_letBind_114_,0 -_endif_139_: - ori $8, $0, 2 -# was: ori _arr_ind_146_, $0, 2 - addi $9, $16, 4 -# was: addi _arr_reg_147_, _letBind_63_, 4 - lw $10, 0($16) -# was: lw _size_reg_148_, 0(_letBind_63_) - bgez $8, _safe_lab_151_ -# was: bgez _arr_ind_146_, _safe_lab_151_ -_error_lab_150_: +_safe_lab_134_: + sub $6, $2, $6 +# was: sub _tmp_reg_132_, _arr_ind_129_, _size_reg_131_ + bgez $6, _error_lab_133_ +# was: bgez _tmp_reg_132_, _error_lab_133_ + sll $2, $2, 2 +# was: sll _arr_ind_129_, _arr_ind_129_, 2 + add $3, $3, $2 +# was: add _arr_reg_130_, _arr_reg_130_, _arr_ind_129_ + lw $2, 0($3) +# was: lw _plus_R_122_, 0(_arr_reg_130_) + add $3, $5, $2 +# was: add _arg_120_, _plus_L_121_, _plus_R_122_ + ori $2, $4, 0 +# was: ori $2, _arg_113_, 0 +# ori $3,_arg_120_,0 + jal max +# was: jal max, $2 $3 + ori $19, $2, 0 +# was: ori _letBind_112_, $2, 0 + ori $2, $0, 2 +# was: ori _arr_ind_139_, $0, 2 + addi $3, $18, 4 +# was: addi _arr_reg_140_, _param_a_78_, 4 + lw $4, 0($18) +# was: lw _size_reg_141_, 0(_param_a_78_) + bgez $2, _safe_lab_144_ +# was: bgez _arr_ind_139_, _safe_lab_144_ +_error_lab_143_: ori $5, $0, 30 # was: ori $5, $0, 30 la $6, _Msg_IllegalIndex_ # was: la $6, _Msg_IllegalIndex_ j _RuntimeError_ -_safe_lab_151_: - sub $10, $8, $10 -# was: sub _tmp_reg_149_, _arr_ind_146_, _size_reg_148_ - bgez $10, _error_lab_150_ -# was: bgez _tmp_reg_149_, _error_lab_150_ - sll $8, $8, 2 -# was: sll _arr_ind_146_, _arr_ind_146_, 2 - add $9, $9, $8 -# was: add _arr_reg_147_, _arr_reg_147_, _arr_ind_146_ - lw $8, 0($9) -# was: lw _plus_L_144_, 0(_arr_reg_147_) - ori $9, $0, 3 -# was: ori _arr_ind_152_, $0, 3 - addi $10, $6, 4 -# was: addi _arr_reg_153_, _tmp_reg_67_, 4 - lw $11, 0($6) -# was: lw _size_reg_154_, 0(_tmp_reg_67_) - bgez $9, _safe_lab_157_ +_safe_lab_144_: + sub $4, $2, $4 +# was: sub _tmp_reg_142_, _arr_ind_139_, _size_reg_141_ + bgez $4, _error_lab_143_ +# was: bgez _tmp_reg_142_, _error_lab_143_ + sll $2, $2, 2 +# was: sll _arr_ind_139_, _arr_ind_139_, 2 + add $3, $3, $2 +# was: add _arr_reg_140_, _arr_reg_140_, _arr_ind_139_ + lw $2, 0($3) +# was: lw _plus_L_137_, 0(_arr_reg_140_) + ori $3, $0, 3 +# was: ori _arr_ind_145_, $0, 3 + addi $4, $16, 4 +# was: addi _arr_reg_146_, _param_b_79_, 4 + lw $5, 0($16) +# was: lw _size_reg_147_, 0(_param_b_79_) + bgez $3, _safe_lab_150_ +# was: bgez _arr_ind_145_, _safe_lab_150_ +_error_lab_149_: + ori $5, $0, 30 +# was: ori $5, $0, 30 + la $6, _Msg_IllegalIndex_ +# was: la $6, _Msg_IllegalIndex_ + j _RuntimeError_ +_safe_lab_150_: + sub $5, $3, $5 +# was: sub _tmp_reg_148_, _arr_ind_145_, _size_reg_147_ + bgez $5, _error_lab_149_ +# was: bgez _tmp_reg_148_, _error_lab_149_ + sll $3, $3, 2 +# was: sll _arr_ind_145_, _arr_ind_145_, 2 + add $4, $4, $3 +# was: add _arr_reg_146_, _arr_reg_146_, _arr_ind_145_ + lw $3, 0($4) +# was: lw _plus_R_138_, 0(_arr_reg_146_) + add $2, $2, $3 +# was: add _arg_136_, _plus_L_137_, _plus_R_138_ + ori $3, $0, 2 +# was: ori _arr_ind_152_, $0, 2 + addi $4, $16, 4 +# was: addi _arr_reg_153_, _param_b_79_, 4 + lw $5, 0($16) +# was: lw _size_reg_154_, 0(_param_b_79_) + bgez $3, _safe_lab_157_ # was: bgez _arr_ind_152_, _safe_lab_157_ _error_lab_156_: ori $5, $0, 30 @@ -564,196 +648,302 @@ _error_lab_156_: # was: la $6, _Msg_IllegalIndex_ j _RuntimeError_ _safe_lab_157_: - sub $11, $9, $11 + sub $5, $3, $5 # was: sub _tmp_reg_155_, _arr_ind_152_, _size_reg_154_ - bgez $11, _error_lab_156_ + bgez $5, _error_lab_156_ # was: bgez _tmp_reg_155_, _error_lab_156_ - sll $9, $9, 2 + sll $3, $3, 2 # was: sll _arr_ind_152_, _arr_ind_152_, 2 - add $10, $10, $9 + add $4, $4, $3 # was: add _arr_reg_153_, _arr_reg_153_, _arr_ind_152_ - lw $9, 0($10) -# was: lw _plus_R_145_, 0(_arr_reg_153_) - add $8, $8, $9 -# was: add _letBind_143_, _plus_L_144_, _plus_R_145_ - ori $9, $0, 2 -# was: ori _arr_ind_159_, $0, 2 - addi $10, $6, 4 -# was: addi _arr_reg_160_, _tmp_reg_67_, 4 - lw $11, 0($6) -# was: lw _size_reg_161_, 0(_tmp_reg_67_) - bgez $9, _safe_lab_164_ -# was: bgez _arr_ind_159_, _safe_lab_164_ -_error_lab_163_: - ori $5, $0, 30 -# was: ori $5, $0, 30 - la $6, _Msg_IllegalIndex_ -# was: la $6, _Msg_IllegalIndex_ - j _RuntimeError_ -_safe_lab_164_: - sub $11, $9, $11 -# was: sub _tmp_reg_162_, _arr_ind_159_, _size_reg_161_ - bgez $11, _error_lab_163_ -# was: bgez _tmp_reg_162_, _error_lab_163_ - sll $9, $9, 2 -# was: sll _arr_ind_159_, _arr_ind_159_, 2 - add $10, $10, $9 -# was: add _arr_reg_160_, _arr_reg_160_, _arr_ind_159_ - lw $9, 0($10) -# was: lw _letBind_158_, 0(_arr_reg_160_) -# ori _lt_L_170_,_letBind_143_,0 -# ori _lt_R_171_,_letBind_158_,0 - slt $10, $8, $9 -# was: slt _cond_169_, _lt_L_170_, _lt_R_171_ - bne $10, $0, _then_166_ -# was: bne _cond_169_, $0, _then_166_ - j _else_167_ -_then_166_: - ori $8, $9, 0 -# was: ori _letBind_165_, _letBind_158_, 0 - j _endif_168_ -_else_167_: -# ori _letBind_165_,_letBind_143_,0 -_endif_168_: - ori $10, $0, 3 -# was: ori _arr_ind_175_, $0, 3 - addi $9, $16, 4 -# was: addi _arr_reg_176_, _letBind_63_, 4 - lw $11, 0($16) -# was: lw _size_reg_177_, 0(_letBind_63_) - bgez $10, _safe_lab_180_ -# was: bgez _arr_ind_175_, _safe_lab_180_ -_error_lab_179_: + lw $3, 0($4) +# was: lw _arg_151_, 0(_arr_reg_153_) +# ori $2,_arg_136_,0 +# ori $3,_arg_151_,0 + jal max +# was: jal max, $2 $3 +# ori _letBind_135_,$2,0 + ori $4, $0, 3 +# was: ori _arr_ind_161_, $0, 3 + addi $3, $18, 4 +# was: addi _arr_reg_162_, _param_a_78_, 4 + lw $5, 0($18) +# was: lw _size_reg_163_, 0(_param_a_78_) + bgez $4, _safe_lab_166_ +# was: bgez _arr_ind_161_, _safe_lab_166_ +_error_lab_165_: ori $5, $0, 31 # was: ori $5, $0, 31 la $6, _Msg_IllegalIndex_ # was: la $6, _Msg_IllegalIndex_ j _RuntimeError_ -_safe_lab_180_: - sub $11, $10, $11 -# was: sub _tmp_reg_178_, _arr_ind_175_, _size_reg_177_ - bgez $11, _error_lab_179_ -# was: bgez _tmp_reg_178_, _error_lab_179_ - sll $10, $10, 2 -# was: sll _arr_ind_175_, _arr_ind_175_, 2 - add $9, $9, $10 -# was: add _arr_reg_176_, _arr_reg_176_, _arr_ind_175_ - lw $11, 0($9) -# was: lw _plus_L_173_, 0(_arr_reg_176_) - ori $9, $0, 3 -# was: ori _arr_ind_181_, $0, 3 - addi $10, $6, 4 -# was: addi _arr_reg_182_, _tmp_reg_67_, 4 - lw $6, 0($6) -# was: lw _size_reg_183_, 0(_tmp_reg_67_) - bgez $9, _safe_lab_186_ -# was: bgez _arr_ind_181_, _safe_lab_186_ -_error_lab_185_: +_safe_lab_166_: + sub $5, $4, $5 +# was: sub _tmp_reg_164_, _arr_ind_161_, _size_reg_163_ + bgez $5, _error_lab_165_ +# was: bgez _tmp_reg_164_, _error_lab_165_ + sll $4, $4, 2 +# was: sll _arr_ind_161_, _arr_ind_161_, 2 + add $3, $3, $4 +# was: add _arr_reg_162_, _arr_reg_162_, _arr_ind_161_ + lw $5, 0($3) +# was: lw _plus_L_159_, 0(_arr_reg_162_) + ori $4, $0, 3 +# was: ori _arr_ind_167_, $0, 3 + addi $3, $16, 4 +# was: addi _arr_reg_168_, _param_b_79_, 4 + lw $6, 0($16) +# was: lw _size_reg_169_, 0(_param_b_79_) + bgez $4, _safe_lab_172_ +# was: bgez _arr_ind_167_, _safe_lab_172_ +_error_lab_171_: ori $5, $0, 31 # was: ori $5, $0, 31 la $6, _Msg_IllegalIndex_ # was: la $6, _Msg_IllegalIndex_ j _RuntimeError_ -_safe_lab_186_: - sub $6, $9, $6 -# was: sub _tmp_reg_184_, _arr_ind_181_, _size_reg_183_ - bgez $6, _error_lab_185_ -# was: bgez _tmp_reg_184_, _error_lab_185_ - sll $9, $9, 2 -# was: sll _arr_ind_181_, _arr_ind_181_, 2 - add $10, $10, $9 -# was: add _arr_reg_182_, _arr_reg_182_, _arr_ind_181_ - lw $6, 0($10) -# was: lw _plus_R_174_, 0(_arr_reg_182_) - add $9, $11, $6 -# was: add _letBind_172_, _plus_L_173_, _plus_R_174_ - ori $10, $0, 4 -# was: ori _size_reg_187_, $0, 4 +_safe_lab_172_: + sub $6, $4, $6 +# was: sub _tmp_reg_170_, _arr_ind_167_, _size_reg_169_ + bgez $6, _error_lab_171_ +# was: bgez _tmp_reg_170_, _error_lab_171_ + sll $4, $4, 2 +# was: sll _arr_ind_167_, _arr_ind_167_, 2 + add $3, $3, $4 +# was: add _arr_reg_168_, _arr_reg_168_, _arr_ind_167_ + lw $3, 0($3) +# was: lw _plus_R_160_, 0(_arr_reg_168_) + add $3, $5, $3 +# was: add _letBind_158_, _plus_L_159_, _plus_R_160_ + ori $6, $0, 4 +# was: ori _size_reg_173_, $0, 4 + ori $5, $28, 0 +# was: ori _reducerres_80_, $28, 0 + sll $4, $6, 2 +# was: sll _tmp_176_, _size_reg_173_, 2 + addi $4, $4, 4 +# was: addi _tmp_176_, _tmp_176_, 4 + add $28, $28, $4 +# was: add $28, $28, _tmp_176_ + sw $6, 0($5) +# was: sw _size_reg_173_, 0(_reducerres_80_) + addi $4, $5, 4 +# was: addi _addr_reg_174_, _reducerres_80_, 4 +# ori _tmp_reg_175_,_letBind_81_,0 + sw $17, 0($4) +# was: sw _tmp_reg_175_, 0(_addr_reg_174_) + addi $4, $4, 4 +# was: addi _addr_reg_174_, _addr_reg_174_, 4 + ori $17, $19, 0 +# was: ori _tmp_reg_175_, _letBind_112_, 0 + sw $17, 0($4) +# was: sw _tmp_reg_175_, 0(_addr_reg_174_) + addi $4, $4, 4 +# was: addi _addr_reg_174_, _addr_reg_174_, 4 + ori $17, $2, 0 +# was: ori _tmp_reg_175_, _letBind_135_, 0 + sw $17, 0($4) +# was: sw _tmp_reg_175_, 0(_addr_reg_174_) + addi $4, $4, 4 +# was: addi _addr_reg_174_, _addr_reg_174_, 4 + ori $17, $3, 0 +# was: ori _tmp_reg_175_, _letBind_158_, 0 + sw $17, 0($4) +# was: sw _tmp_reg_175_, 0(_addr_reg_174_) + addi $4, $4, 4 +# was: addi _addr_reg_174_, _addr_reg_174_, 4 + ori $2, $5, 0 +# was: ori $2, _reducerres_80_, 0 + addi $29, $29, 24 + lw $19, -20($29) + lw $18, -16($29) + lw $17, -12($29) + lw $16, -8($29) + lw $31, -4($29) + jr $31 +# Function mssp +mssp: + sw $31, -4($29) + sw $20, -24($29) + sw $19, -20($29) + sw $18, -16($29) + sw $17, -12($29) + sw $16, -8($29) + addi $29, $29, -28 +# ori _param_n_177_,$2,0 +# ori _arg_180_,_param_n_177_,0 +# ori $2,_arg_180_,0 + jal read_int_arr +# was: jal read_int_arr, $2 +# ori _letBind_179_,$2,0 +# ori _arr_reg_183_,_letBind_179_,0 + lw $17, 0($2) +# was: lw _size_reg_182_, 0(_arr_reg_183_) ori $16, $28, 0 -# was: ori _fun_arg_res_70_, $28, 0 - sll $6, $10, 2 -# was: sll _tmp_190_, _size_reg_187_, 2 - addi $6, $6, 4 -# was: addi _tmp_190_, _tmp_190_, 4 - add $28, $28, $6 -# was: add $28, $28, _tmp_190_ - sw $10, 0($16) -# was: sw _size_reg_187_, 0(_fun_arg_res_70_) - addi $6, $16, 4 -# was: addi _addr_reg_188_, _fun_arg_res_70_, 4 -# ori _tmp_reg_189_,_letBind_107_,0 - sw $5, 0($6) -# was: sw _tmp_reg_189_, 0(_addr_reg_188_) - addi $6, $6, 4 -# was: addi _addr_reg_188_, _addr_reg_188_, 4 - ori $5, $7, 0 -# was: ori _tmp_reg_189_, _letBind_136_, 0 - sw $5, 0($6) -# was: sw _tmp_reg_189_, 0(_addr_reg_188_) - addi $6, $6, 4 -# was: addi _addr_reg_188_, _addr_reg_188_, 4 - ori $5, $8, 0 -# was: ori _tmp_reg_189_, _letBind_165_, 0 - sw $5, 0($6) -# was: sw _tmp_reg_189_, 0(_addr_reg_188_) - addi $6, $6, 4 -# was: addi _addr_reg_188_, _addr_reg_188_, 4 - ori $5, $9, 0 -# was: ori _tmp_reg_189_, _letBind_172_, 0 - sw $5, 0($6) -# was: sw _tmp_reg_189_, 0(_addr_reg_188_) - addi $6, $6, 4 -# was: addi _addr_reg_188_, _addr_reg_188_, 4 -# ori _letBind_63_,_fun_arg_res_70_,0 - addi $4, $4, 1 -# was: addi _ind_var_66_, _ind_var_66_, 1 - j _loop_beg_68_ -_loop_end_69_: - la $2, _aaMSSPa_193_ -# was: la _tmp_192_, _aaMSSPa_193_ -# _aaMSSPa_193_: string "\n\nMSSP result is: " -# ori _letBind_191_,_tmp_192_,0 -# ori $2,_tmp_192_,0 +# was: ori _letBind_181_, $28, 0 + sll $3, $17, 2 +# was: sll _tmp_192_, _size_reg_182_, 2 + addi $3, $3, 4 +# was: addi _tmp_192_, _tmp_192_, 4 + add $28, $28, $3 +# was: add $28, $28, _tmp_192_ + sw $17, 0($16) +# was: sw _size_reg_182_, 0(_letBind_181_) + addi $19, $16, 4 +# was: addi _addr_reg_186_, _letBind_181_, 4 + ori $18, $0, 0 +# was: ori _i_reg_187_, $0, 0 + addi $20, $2, 4 +# was: addi _elem_reg_184_, _arr_reg_183_, 4 +_loop_beg_188_: + sub $2, $18, $17 +# was: sub _tmp_reg_190_, _i_reg_187_, _size_reg_182_ + bgez $2, _loop_end_189_ +# was: bgez _tmp_reg_190_, _loop_end_189_ + lw $2, 0($20) +# was: lw _res_reg_185_, 0(_elem_reg_184_) + addi $20, $20, 4 +# was: addi _elem_reg_184_, _elem_reg_184_, 4 +# ori $2,_res_reg_185_,0 + jal mapper +# was: jal mapper, $2 +# ori _tmp_reg_191_,$2,0 +# ori _res_reg_185_,_tmp_reg_191_,0 + sw $2, 0($19) +# was: sw _res_reg_185_, 0(_addr_reg_186_) + addi $19, $19, 4 +# was: addi _addr_reg_186_, _addr_reg_186_, 4 + addi $18, $18, 1 +# was: addi _i_reg_187_, _i_reg_187_, 1 + j _loop_beg_188_ +_loop_end_189_: + ori $3, $0, 4 +# was: ori _size_reg_194_, $0, 4 + ori $2, $28, 0 +# was: ori _letBind_193_, $28, 0 + sll $4, $3, 2 +# was: sll _tmp_197_, _size_reg_194_, 2 + addi $4, $4, 4 +# was: addi _tmp_197_, _tmp_197_, 4 + add $28, $28, $4 +# was: add $28, $28, _tmp_197_ + sw $3, 0($2) +# was: sw _size_reg_194_, 0(_letBind_193_) + addi $3, $2, 4 +# was: addi _addr_reg_195_, _letBind_193_, 4 + ori $4, $0, 0 +# was: ori _tmp_reg_196_, $0, 0 + sw $4, 0($3) +# was: sw _tmp_reg_196_, 0(_addr_reg_195_) + addi $3, $3, 4 +# was: addi _addr_reg_195_, _addr_reg_195_, 4 + ori $4, $0, 0 +# was: ori _tmp_reg_196_, $0, 0 + sw $4, 0($3) +# was: sw _tmp_reg_196_, 0(_addr_reg_195_) + addi $3, $3, 4 +# was: addi _addr_reg_195_, _addr_reg_195_, 4 + ori $4, $0, 0 +# was: ori _tmp_reg_196_, $0, 0 + sw $4, 0($3) +# was: sw _tmp_reg_196_, 0(_addr_reg_195_) + addi $3, $3, 4 +# was: addi _addr_reg_195_, _addr_reg_195_, 4 + ori $4, $0, 0 +# was: ori _tmp_reg_196_, $0, 0 + sw $4, 0($3) +# was: sw _tmp_reg_196_, 0(_addr_reg_195_) + addi $3, $3, 4 +# was: addi _addr_reg_195_, _addr_reg_195_, 4 + ori $17, $16, 0 +# was: ori _arr_reg_198_, _letBind_181_, 0 + lw $16, 0($17) +# was: lw _size_reg_199_, 0(_arr_reg_198_) +# ori _msspres_178_,_letBind_193_,0 + addi $17, $17, 4 +# was: addi _arr_reg_198_, _arr_reg_198_, 4 + ori $18, $0, 0 +# was: ori _ind_var_200_, $0, 0 +_loop_beg_202_: + sub $3, $18, $16 +# was: sub _tmp_reg_201_, _ind_var_200_, _size_reg_199_ + bgez $3, _loop_end_203_ +# was: bgez _tmp_reg_201_, _loop_end_203_ + lw $3, 0($17) +# was: lw _tmp_reg_201_, 0(_arr_reg_198_) + addi $17, $17, 4 +# was: addi _arr_reg_198_, _arr_reg_198_, 4 +# ori $2,_msspres_178_,0 +# ori $3,_tmp_reg_201_,0 + jal reducer +# was: jal reducer, $2 $3 +# ori _tmp_reg_204_,$2,0 +# ori _msspres_178_,_tmp_reg_204_,0 + addi $18, $18, 1 +# was: addi _ind_var_200_, _ind_var_200_, 1 + j _loop_beg_202_ +_loop_end_203_: +# ori $2,_msspres_178_,0 + addi $29, $29, 28 + lw $20, -24($29) + lw $19, -20($29) + lw $18, -16($29) + lw $17, -12($29) + lw $16, -8($29) + lw $31, -4($29) + jr $31 +# Function main +main: + sw $31, -4($29) + sw $16, -8($29) + addi $29, $29, -12 + ori $2, $0, 8 +# was: ori _arg_207_, $0, 8 +# ori $2,_arg_207_,0 + jal mssp +# was: jal mssp, $2 + ori $16, $2, 0 +# was: ori _letBind_206_, $2, 0 + la $2, _aaMSSPa_210_ +# was: la _tmp_209_, _aaMSSPa_210_ +# _aaMSSPa_210_: string "\n\nMSSP result is: " +# ori _letBind_208_,_tmp_209_,0 +# ori $2,_tmp_209_,0 jal putstring # was: jal putstring, $2 ori $3, $0, 0 -# was: ori _arr_ind_195_, $0, 0 +# was: ori _arr_ind_212_, $0, 0 addi $2, $16, 4 -# was: addi _arr_reg_196_, _letBind_63_, 4 +# was: addi _arr_reg_213_, _letBind_206_, 4 lw $4, 0($16) -# was: lw _size_reg_197_, 0(_letBind_63_) - bgez $3, _safe_lab_200_ -# was: bgez _arr_ind_195_, _safe_lab_200_ -_error_lab_199_: +# was: lw _size_reg_214_, 0(_letBind_206_) + bgez $3, _safe_lab_217_ +# was: bgez _arr_ind_212_, _safe_lab_217_ +_error_lab_216_: ori $5, $0, 44 # was: ori $5, $0, 44 la $6, _Msg_IllegalIndex_ # was: la $6, _Msg_IllegalIndex_ j _RuntimeError_ -_safe_lab_200_: +_safe_lab_217_: sub $4, $3, $4 -# was: sub _tmp_reg_198_, _arr_ind_195_, _size_reg_197_ - bgez $4, _error_lab_199_ -# was: bgez _tmp_reg_198_, _error_lab_199_ +# was: sub _tmp_reg_215_, _arr_ind_212_, _size_reg_214_ + bgez $4, _error_lab_216_ +# was: bgez _tmp_reg_215_, _error_lab_216_ sll $3, $3, 2 -# was: sll _arr_ind_195_, _arr_ind_195_, 2 +# was: sll _arr_ind_212_, _arr_ind_212_, 2 add $2, $2, $3 -# was: add _arr_reg_196_, _arr_reg_196_, _arr_ind_195_ +# was: add _arr_reg_213_, _arr_reg_213_, _arr_ind_212_ lw $16, 0($2) -# was: lw _tmp_194_, 0(_arr_reg_196_) -# ori _mainres_1_,_tmp_194_,0 +# was: lw _tmp_211_, 0(_arr_reg_213_) +# ori _mainres_205_,_tmp_211_,0 ori $2, $16, 0 -# was: ori $2, _mainres_1_, 0 +# was: ori $2, _mainres_205_, 0 jal putint # was: jal putint, $2 ori $2, $16, 0 -# was: ori $2, _mainres_1_, 0 - addi $29, $29, 32 - lw $21, -28($29) - lw $20, -24($29) - lw $19, -20($29) - lw $18, -16($29) - lw $17, -12($29) +# was: ori $2, _mainres_205_, 0 + addi $29, $29, 12 lw $16, -8($29) lw $31, -4($29) jr $31 @@ -869,19 +1059,27 @@ _Msg_DivZero_: .asciiz "division by zero" # String Literals .align 2 -_aaMSSPa_193_: +_aaMSSPa_210_: .space 4 .asciiz "\n\nMSSP result is: " .align 2 -_a__str__33_: +_aaa__st_59_: + .space 4 + .asciiz " }\n" + .align 2 +_aaa__st_44_: + .space 4 + .asciiz " { " + .align 2 +_a__str__14_: .space 4 .asciiz "\n" .align 2 -_aa__str_29_: +_aa__str_10_: .space 4 .asciiz ": " .align 2 -_Introdu_24_: +_Introdu_5_: .space 4 .asciiz "Introduce number " .align 2 diff --git a/tests/multilet.asm b/tests/multilet.asm index 6c2a305..60f5f65 100644 --- a/tests/multilet.asm +++ b/tests/multilet.asm @@ -35,10 +35,10 @@ main: # was: ori _minus_R_8_, $0, 1 sub $3, $3, $4 # was: sub _letBind_6_, _minus_L_7_, _minus_R_8_ -# ori _mult1_L_10_,_letBind_2_,0 -# ori _mult2_R_11_,_letBind_6_,0 +# ori _times_L_10_,_letBind_2_,0 +# ori _times_R_11_,_letBind_6_,0 mul $16, $2, $3 -# was: mul _tmp_9_, _mult1_L_10_, _mult2_R_11_ +# was: mul _tmp_9_, _times_L_10_, _times_R_11_ # ori _mainres_1_,_tmp_9_,0 ori $2, $16, 0 # was: ori $2, _mainres_1_, 0 diff --git a/tests/negate.asm b/tests/negate.asm index 0cbe2d6..223fc82 100644 --- a/tests/negate.asm +++ b/tests/negate.asm @@ -1,36 +1,12 @@ .text 0x00400000 .globl main la $28, _heap_ - la $4, _a__str__35_ -# was: la _a__str__35__addr, _a__str__35_ + la $4, _a__str__8_ +# was: la _a__str__8__addr, _a__str__8_ ori $3, $0, 1 -# was: ori _a__str__35__init, $0, 1 +# was: ori _a__str__8__init, $0, 1 sw $3, 0($4) -# was: sw _a__str__35__init, 0(_a__str__35__addr) - la $4, _a__str__25_ -# was: la _a__str__25__addr, _a__str__25_ - ori $3, $0, 1 -# was: ori _a__str__25__init, $0, 1 - sw $3, 0($4) -# was: sw _a__str__25__init, 0(_a__str__25__addr) - la $4, _a__str__19_ -# was: la _a__str__19__addr, _a__str__19_ - ori $3, $0, 1 -# was: ori _a__str__19__init, $0, 1 - sw $3, 0($4) -# was: sw _a__str__19__init, 0(_a__str__19__addr) - la $4, _a__str__13_ -# was: la _a__str__13__addr, _a__str__13_ - ori $3, $0, 1 -# was: ori _a__str__13__init, $0, 1 - sw $3, 0($4) -# was: sw _a__str__13__init, 0(_a__str__13__addr) - la $4, _a__str__7_ -# was: la _a__str__7__addr, _a__str__7_ - ori $3, $0, 1 -# was: ori _a__str__7__init, $0, 1 - sw $3, 0($4) -# was: sw _a__str__7__init, 0(_a__str__7__addr) +# was: sw _a__str__8__init, 0(_a__str__8__addr) la $4, _true # was: la _true_addr, _true ori $3, $0, 4 @@ -47,6 +23,38 @@ _stop_: ori $2, $0, 10 syscall +# Function write_nl +write_nl: + sw $31, -4($29) + sw $16, -8($29) + addi $29, $29, -12 +# ori _param_b_1_,$2,0 + ori $16, $2, 0 +# was: ori _tmp_4_, _param_b_1_, 0 +# ori _letBind_3_,_tmp_4_,0 + la $2, _true +# was: la $2, _true + bne $16, $0, _wBoolF_5_ +# was: bne _letBind_3_, $0, _wBoolF_5_ + la $2, _false +# was: la $2, _false +_wBoolF_5_: + jal putstring +# was: jal putstring, $2 + la $2, _a__str__8_ +# was: la _tmp_7_, _a__str__8_ +# _a__str__8_: string "\n" +# ori _letBind_6_,_tmp_7_,0 +# ori $2,_tmp_7_,0 + jal putstring +# was: jal putstring, $2 + ori $2, $16, 0 +# was: ori _write_nlres_2_, _letBind_3_, 0 +# ori $2,_write_nlres_2_,0 + addi $29, $29, 12 + lw $16, -8($29) + lw $31, -4($29) + jr $31 # Function main main: sw $31, -4($29) @@ -55,119 +63,123 @@ main: sw $17, -12($29) sw $16, -8($29) addi $29, $29, -24 - ori $16, $0, 1 -# was: ori _tmp_3_, $0, 1 -# ori _letBind_2_,_tmp_3_,0 - la $2, _true -# was: la $2, _true - bne $16, $0, _wBoolF_4_ -# was: bne _letBind_2_, $0, _wBoolF_4_ - la $2, _false -# was: la $2, _false -_wBoolF_4_: - jal putstring -# was: jal putstring, $2 - la $2, _a__str__7_ -# was: la _tmp_6_, _a__str__7_ -# _a__str__7_: string "\n" -# ori _letBind_5_,_tmp_6_,0 -# ori $2,_tmp_6_,0 - jal putstring -# was: jal putstring, $2 - ori $17, $0, 0 -# was: ori _tmp_9_, $0, 0 -# ori _letBind_8_,_tmp_9_,0 - la $2, _true -# was: la $2, _true - bne $17, $0, _wBoolF_10_ -# was: bne _letBind_8_, $0, _wBoolF_10_ - la $2, _false -# was: la $2, _false -_wBoolF_10_: - jal putstring -# was: jal putstring, $2 - la $2, _a__str__13_ -# was: la _tmp_12_, _a__str__13_ -# _a__str__13_: string "\n" -# ori _letBind_11_,_tmp_12_,0 -# ori $2,_tmp_12_,0 - jal putstring -# was: jal putstring, $2 - ori $18, $0, 0 -# was: ori _tmp_15_, $0, 0 -# ori _letBind_14_,_tmp_15_,0 - la $2, _true -# was: la $2, _true - bne $18, $0, _wBoolF_16_ -# was: bne _letBind_14_, $0, _wBoolF_16_ - la $2, _false -# was: la $2, _false -_wBoolF_16_: - jal putstring -# was: jal putstring, $2 - la $2, _a__str__19_ -# was: la _tmp_18_, _a__str__19_ -# _a__str__19_: string "\n" -# ori _letBind_17_,_tmp_18_,0 -# ori $2,_tmp_18_,0 - jal putstring -# was: jal putstring, $2 - ori $19, $0, 1 -# was: ori _tmp_21_, $0, 1 -# ori _letBind_20_,_tmp_21_,0 - la $2, _true -# was: la $2, _true - bne $19, $0, _wBoolF_22_ -# was: bne _letBind_20_, $0, _wBoolF_22_ - la $2, _false -# was: la $2, _false -_wBoolF_22_: - jal putstring -# was: jal putstring, $2 - la $2, _a__str__25_ -# was: la _tmp_24_, _a__str__25_ -# _a__str__25_: string "\n" -# ori _letBind_23_,_tmp_24_,0 -# ori $2,_tmp_24_,0 - jal putstring -# was: jal putstring, $2 -# ori _letBind_26_,_letBind_2_,0 - beq $16, $0, _endLabel_29_ -# was: beq _letBind_26_, $0, _endLabel_29_ + ori $3, $0, 3 +# was: ori _divide_L_14_, $0, 3 + ori $2, $0, 2 +# was: ori _divide_R_15_, $0, 2 + div $3, $3, $2 +# was: div _eq_L_12_, _divide_L_14_, _divide_R_15_ + ori $2, $0, 1 +# was: ori _eq_R_13_, $0, 1 + ori $4, $0, 0 +# was: ori _arg_11_, $0, 0 + bne $3, $2, _false_16_ +# was: bne _eq_L_12_, _eq_R_13_, _false_16_ + ori $4, $0, 1 +# was: ori _arg_11_, $0, 1 +_false_16_: + ori $2, $4, 0 +# was: ori $2, _arg_11_, 0 + jal write_nl +# was: jal write_nl, $2 + ori $16, $2, 0 +# was: ori _letBind_10_, $2, 0 + ori $2, $0, 3 +# was: ori _negate_R_23_, $0, 3 + sub $3, $0, $2 +# was: sub _divide_L_21_, $0, _negate_R_23_ + ori $2, $0, 2 +# was: ori _divide_R_22_, $0, 2 + div $3, $3, $2 +# was: div _eq_L_19_, _divide_L_21_, _divide_R_22_ + ori $2, $0, 2 +# was: ori _negate_R_24_, $0, 2 + sub $2, $0, $2 +# was: sub _eq_R_20_, $0, _negate_R_24_ + ori $4, $0, 0 +# was: ori _arg_18_, $0, 0 + bne $3, $2, _false_25_ +# was: bne _eq_L_19_, _eq_R_20_, _false_25_ + ori $4, $0, 1 +# was: ori _arg_18_, $0, 1 +_false_25_: + ori $2, $4, 0 +# was: ori $2, _arg_18_, 0 + jal write_nl +# was: jal write_nl, $2 + ori $17, $2, 0 +# was: ori _letBind_17_, $2, 0 + ori $2, $0, 3 +# was: ori _divide_L_30_, $0, 3 + ori $3, $0, 2 +# was: ori _negate_R_32_, $0, 2 + sub $3, $0, $3 +# was: sub _divide_R_31_, $0, _negate_R_32_ + div $3, $2, $3 +# was: div _eq_L_28_, _divide_L_30_, _divide_R_31_ + ori $2, $0, 2 +# was: ori _negate_R_33_, $0, 2 + sub $2, $0, $2 +# was: sub _eq_R_29_, $0, _negate_R_33_ + ori $4, $0, 0 +# was: ori _arg_27_, $0, 0 + bne $3, $2, _false_34_ +# was: bne _eq_L_28_, _eq_R_29_, _false_34_ + ori $4, $0, 1 +# was: ori _arg_27_, $0, 1 +_false_34_: + ori $2, $4, 0 +# was: ori $2, _arg_27_, 0 + jal write_nl +# was: jal write_nl, $2 + ori $18, $2, 0 +# was: ori _letBind_26_, $2, 0 + ori $2, $0, 3 +# was: ori _negate_R_41_, $0, 3 + sub $2, $0, $2 +# was: sub _divide_L_39_, $0, _negate_R_41_ + ori $3, $0, 2 +# was: ori _negate_R_42_, $0, 2 + sub $3, $0, $3 +# was: sub _divide_R_40_, $0, _negate_R_42_ + div $3, $2, $3 +# was: div _eq_L_37_, _divide_L_39_, _divide_R_40_ + ori $2, $0, 1 +# was: ori _eq_R_38_, $0, 1 + ori $4, $0, 0 +# was: ori _arg_36_, $0, 0 + bne $3, $2, _false_43_ +# was: bne _eq_L_37_, _eq_R_38_, _false_43_ + ori $4, $0, 1 +# was: ori _arg_36_, $0, 1 +_false_43_: + ori $2, $4, 0 +# was: ori $2, _arg_36_, 0 + jal write_nl +# was: jal write_nl, $2 +# ori _letBind_35_,$2,0 +# ori _arg_44_,_letBind_10_,0 + beq $16, $19, _false_47_ +# was: beq _arg_44_, 0, _false_47_ ori $16, $17, 0 -# was: ori _letBind_26_, _letBind_8_, 0 -_endLabel_29_: - beq $16, $0, _endLabel_28_ -# was: beq _letBind_26_, $0, _endLabel_28_ +# was: ori _arg_44_, _letBind_17_, 0 +_false_47_: + beq $16, $19, _false_46_ +# was: beq _arg_44_, 0, _false_46_ ori $16, $18, 0 -# was: ori _letBind_26_, _letBind_14_, 0 -_endLabel_28_: - beq $16, $0, _endLabel_27_ -# was: beq _letBind_26_, $0, _endLabel_27_ - ori $16, $19, 0 -# was: ori _letBind_26_, _letBind_20_, 0 -_endLabel_27_: -# ori _tmp_31_,_letBind_26_,0 -# ori _letBind_30_,_tmp_31_,0 - la $2, _true -# was: la $2, _true - bne $16, $0, _wBoolF_32_ -# was: bne _letBind_30_, $0, _wBoolF_32_ - la $2, _false -# was: la $2, _false -_wBoolF_32_: - jal putstring -# was: jal putstring, $2 - la $2, _a__str__35_ -# was: la _tmp_34_, _a__str__35_ -# _a__str__35_: string "\n" -# ori _letBind_33_,_tmp_34_,0 -# ori $2,_tmp_34_,0 - jal putstring -# was: jal putstring, $2 +# was: ori _arg_44_, _letBind_26_, 0 +_false_46_: + beq $16, $19, _false_45_ +# was: beq _arg_44_, 0, _false_45_ + ori $16, $2, 0 +# was: ori _arg_44_, _letBind_35_, 0 +_false_45_: ori $2, $16, 0 -# was: ori _mainres_1_, _letBind_30_, 0 -# ori $2,_mainres_1_,0 +# was: ori $2, _arg_44_, 0 + jal write_nl +# was: jal write_nl, $2 +# ori _mainres_9_,$2,0 +# ori $2,_mainres_9_,0 addi $29, $29, 24 lw $19, -20($29) lw $18, -16($29) @@ -287,23 +299,7 @@ _Msg_DivZero_: .asciiz "division by zero" # String Literals .align 2 -_a__str__35_: - .space 4 - .asciiz "\n" - .align 2 -_a__str__25_: - .space 4 - .asciiz "\n" - .align 2 -_a__str__19_: - .space 4 - .asciiz "\n" - .align 2 -_a__str__13_: - .space 4 - .asciiz "\n" - .align 2 -_a__str__7_: +_a__str__8_: .space 4 .asciiz "\n" .align 2 diff --git a/tests/short_circuit.asm b/tests/short_circuit.asm index a777142..f14398d 100644 --- a/tests/short_circuit.asm +++ b/tests/short_circuit.asm @@ -31,42 +31,51 @@ no_way: # Function main main: sw $31, -4($29) - addi $29, $29, -8 + sw $16, -8($29) + addi $29, $29, -12 ori $3, $0, 0 # was: ori _tmp_4_, $0, 0 -# ori _letBind_3_,_tmp_4_,0 - la $2, _true -# was: la $2, _true - bne $3, $0, _wBoolF_5_ -# was: bne _letBind_3_, $0, _wBoolF_5_ - la $2, _false -# was: la $2, _false -_wBoolF_5_: - jal putstring -# was: jal putstring, $2 - ori $3, $0, 1 -# was: ori _tmp_7_, $0, 1 - bne $3, $0, _endLabel_8_ -# was: bne _tmp_7_, $0, _endLabel_8_ + beq $3, $16, _false_5_ +# was: beq _tmp_4_, 0, _false_5_ jal no_way # was: jal no_way, ori $3, $2, 0 -# was: ori _tmp_7_, $2, 0 -_endLabel_8_: -# ori _letBind_6_,_tmp_7_,0 +# was: ori _tmp_4_, $2, 0 +_false_5_: +# ori _letBind_3_,_tmp_4_,0 la $2, _true # was: la $2, _true - bne $3, $0, _wBoolF_9_ -# was: bne _letBind_6_, $0, _wBoolF_9_ + bne $3, $0, _wBoolF_6_ +# was: bne _letBind_3_, $0, _wBoolF_6_ la $2, _false # was: la $2, _false -_wBoolF_9_: +_wBoolF_6_: + jal putstring +# was: jal putstring, $2 + ori $3, $0, 1 +# was: ori _tmp_8_, $0, 1 + bne $3, $16, _true_9_ +# was: bne _tmp_8_, 0, _true_9_ + jal no_way +# was: jal no_way, + ori $3, $2, 0 +# was: ori _tmp_8_, $2, 0 +_true_9_: +# ori _letBind_7_,_tmp_8_,0 + la $2, _true +# was: la $2, _true + bne $3, $0, _wBoolF_10_ +# was: bne _letBind_7_, $0, _wBoolF_10_ + la $2, _false +# was: la $2, _false +_wBoolF_10_: jal putstring # was: jal putstring, $2 ori $2, $0, 1 # was: ori _mainres_2_, $0, 1 # ori $2,_mainres_2_,0 - addi $29, $29, 8 + addi $29, $29, 12 + lw $16, -8($29) lw $31, -4($29) jr $31 ord: