From f0fda0bcd7359295b001cce4ef8dc894ff4769bd Mon Sep 17 00:00:00 2001 From: NikolajDanger Date: Wed, 18 May 2022 13:25:57 +0200 Subject: [PATCH] seathu --- .gitignore | 3 + Fasto/Lexer.fs | 267 +++ Fasto/Parser.fs | 887 +++++++ Fasto/Parser.fsi | 101 + Fasto/Parser.fsyacc.output | 4640 ++++++++++++++++++++++++++++++++++++ tests/inline_map.asm | 441 ++-- tests/lambda.asm | 333 +-- tests/map_red_io.asm | 501 ++-- tests/ordchr.asm | 437 ++-- tests/proj_figure3.asm | 320 ++- tests/reduce.asm | 145 +- 11 files changed, 7155 insertions(+), 920 deletions(-) create mode 100644 .gitignore create mode 100644 Fasto/Lexer.fs create mode 100644 Fasto/Parser.fs create mode 100644 Fasto/Parser.fsi create mode 100644 Fasto/Parser.fsyacc.output diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7c0bab9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.vscode +Fasto/bin/* +Fasto/obj/* \ No newline at end of file diff --git a/Fasto/Lexer.fs b/Fasto/Lexer.fs new file mode 100644 index 0000000..8c007ee --- /dev/null +++ b/Fasto/Lexer.fs @@ -0,0 +1,267 @@ +# 18 "Lexer.fsl" + +module Lexer + +open System;; +open FSharp.Text.Lexing;; +open System.Text;; + +(* A lexer definition for Fasto, for use with fslex. *) + +(* boilerplate code for all lexer files... *) +let mutable currentLine = 1 +let mutable lineStartPos = [0] + +let rec getLineCol pos line = function + | (p1::ps) -> + if pos>=p1 + then (line, pos-p1) + else getLineCol pos (line-1) ps + | [] -> (0,0) (* should not happen *) + +let getPos (lexbuf : LexBuffer<'char>) = + getLineCol lexbuf.StartPos.pos_cnum + (currentLine) + (lineStartPos) + +exception LexicalError of string * (int * int) (* (message, (line, column)) *) + +let lexerError lexbuf s = + raise (LexicalError (s, getPos lexbuf)) + +(* This one is language specific, yet very common. Alternative would + be to encode every keyword as a regexp. This one is much easier. + Note that here we recognize specific keywords, and if none matches + then we assume we have found a user-defined identifier (last case). +*) +let keyword (s, pos) = + match s with + | "if" -> Parser.IF pos + | "then" -> Parser.THEN pos + | "else" -> Parser.ELSE pos + | "let" -> Parser.LET pos + | "in" -> Parser.IN pos + | "int" -> Parser.INT pos + | "bool" -> Parser.BOOL pos + | "char" -> Parser.CHAR pos + | "fun" -> Parser.FUN pos + | "fn" -> Parser.FN pos + | "op" -> Parser.OP pos + +(* specials: *) + | "iota" -> Parser.IOTA pos + | "map" -> Parser.MAP pos + | "reduce" -> Parser.REDUCE pos + | "read" -> Parser.READ pos + | "write" -> Parser.WRITE pos + | _ -> Parser.ID (s, pos) + + +# 60 "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; |]; + (* 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; |]; + (* 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; |]; + (* 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; |]; + (* 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; |]; + (* 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; |]; + (* 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; |]; + (* 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; |]; + (* 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 *) + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 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 14 *) + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 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 15 *) + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 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 16 *) + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 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 17 *) + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 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 18 *) + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 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 19 *) + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 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 20 *) + [|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 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 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; |]; + (* 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; |]; + (* 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; |]; + (* 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; |]; + (* 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; |]; + (* 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; |]; + (* 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; |]; + (* 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; |]; + (* 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; |]; + (* 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; |]; + (* 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; |]; + |] +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 _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" + Token lexbuf +# 143 "Lexer.fs" + ) + | 1 -> ( +# 79 "Lexer.fsl" + currentLine <- currentLine + 1; + lineStartPos <- lexbuf.StartPos.pos_cnum + :: lineStartPos; + Token lexbuf +# 151 "Lexer.fs" + ) + | 2 -> ( +# 83 "Lexer.fsl" + Token lexbuf +# 156 "Lexer.fs" + ) + | 3 -> ( +# 85 "Lexer.fsl" + Parser.NUM + ( int (Encoding.UTF8.GetString(lexbuf.Lexeme)) + , getPos lexbuf ) + +# 164 "Lexer.fs" + ) + | 4 -> ( +# 90 "Lexer.fsl" + keyword ( Encoding.UTF8.GetString(lexbuf.Lexeme) + , getPos lexbuf ) +# 170 "Lexer.fs" + ) + | 5 -> ( +# 93 "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" + ) + | 6 -> ( +# 99 "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" + ) + | 7 -> ( +# 104 "Lexer.fsl" + Parser.PLUS (getPos lexbuf) +# 193 "Lexer.fs" + ) + | 8 -> ( +# 105 "Lexer.fsl" + Parser.MINUS (getPos lexbuf) +# 198 "Lexer.fs" + ) + | 9 -> ( +# 106 "Lexer.fsl" + Parser.ARROW (getPos lexbuf) +# 203 "Lexer.fs" + ) + | 10 -> ( +# 107 "Lexer.fsl" + Parser.DEQ (getPos lexbuf) +# 208 "Lexer.fs" + ) + | 11 -> ( +# 108 "Lexer.fsl" + Parser.EQ (getPos lexbuf) +# 213 "Lexer.fs" + ) + | 12 -> ( +# 109 "Lexer.fsl" + Parser.LTH (getPos lexbuf) +# 218 "Lexer.fs" + ) + | 13 -> ( +# 110 "Lexer.fsl" + Parser.LPAR (getPos lexbuf) +# 223 "Lexer.fs" + ) + | 14 -> ( +# 111 "Lexer.fsl" + Parser.RPAR (getPos lexbuf) +# 228 "Lexer.fs" + ) + | 15 -> ( +# 112 "Lexer.fsl" + Parser.LBRACKET (getPos lexbuf) +# 233 "Lexer.fs" + ) + | 16 -> ( +# 113 "Lexer.fsl" + Parser.RBRACKET (getPos lexbuf) +# 238 "Lexer.fs" + ) + | 17 -> ( +# 114 "Lexer.fsl" + Parser.LCURLY (getPos lexbuf) +# 243 "Lexer.fs" + ) + | 18 -> ( +# 115 "Lexer.fsl" + Parser.RCURLY (getPos lexbuf) +# 248 "Lexer.fs" + ) + | 19 -> ( +# 116 "Lexer.fsl" + Parser.COMMA (getPos lexbuf) +# 253 "Lexer.fs" + ) + | 20 -> ( +# 117 "Lexer.fsl" + Parser.EOF (getPos lexbuf) +# 258 "Lexer.fs" + ) + | 21 -> ( +# 118 "Lexer.fsl" + lexerError lexbuf "Illegal symbol in input" +# 263 "Lexer.fs" + ) + | _ -> failwith "Token" + +# 3000000 "Lexer.fs" diff --git a/Fasto/Parser.fs b/Fasto/Parser.fs new file mode 100644 index 0000000..97e4581 --- /dev/null +++ b/Fasto/Parser.fs @@ -0,0 +1,887 @@ +// Implementation file for parser generated by fsyacc +module Parser +#nowarn "64";; // turn off warnings that type variables used in production annotations are instantiated to concrete type +open FSharp.Text.Lexing +open FSharp.Text.Parsing.ParseHelpers +# 2 "Parser.fsp" + + +let p0 = (0,0) + +open FSharp.Text.Parsing +open AbSyn + +(* parse-error function *) +let mutable ErrorContextDescriptor : string = "" + +let parse_error_rich = + Some (fun (ctxt: ParseErrorContext<_>) -> + ErrorContextDescriptor <- + match ctxt.CurrentToken with + | None -> "At beginning of input\n" + | Some token -> sprintf "at token %A\n" token + ) + + +# 26 "Parser.fs" +// This type is the type of tokens accepted by the parser +type token = + | LPAR of (Position) + | RPAR of (Position) + | LBRACKET of (Position) + | RBRACKET of (Position) + | LCURLY of (Position) + | RCURLY of (Position) + | FUN of (Position) + | FN of (Position) + | COMMA of (Position) + | SEMICOLON of (Position) + | READ of (Position) + | WRITE of (Position) + | DEQ of (Position) + | LTH of (Position) + | EQ of (Position) + | OP of (Position) + | MAP of (Position) + | REDUCE of (Position) + | IOTA of (Position) + | ARROW of (Position) + | PLUS of (Position) + | MINUS of (Position) + | LESS of (Position) + | INT of (Position) + | CHAR of (Position) + | BOOL of (Position) + | IF of (Position) + | THEN of (Position) + | ELSE of (Position) + | LET of (Position) + | IN of (Position) + | EOF of (Position) + | ID of (string * Position) + | STRINGLIT of (string * Position) + | CHARLIT of (char * Position) + | NUM of (int * Position) +// This type is used to give symbolic names to token indexes, useful for error messages +type tokenId = + | TOKEN_LPAR + | TOKEN_RPAR + | TOKEN_LBRACKET + | TOKEN_RBRACKET + | TOKEN_LCURLY + | TOKEN_RCURLY + | TOKEN_FUN + | TOKEN_FN + | TOKEN_COMMA + | TOKEN_SEMICOLON + | TOKEN_READ + | TOKEN_WRITE + | TOKEN_DEQ + | TOKEN_LTH + | TOKEN_EQ + | TOKEN_OP + | TOKEN_MAP + | TOKEN_REDUCE + | TOKEN_IOTA + | TOKEN_ARROW + | TOKEN_PLUS + | TOKEN_MINUS + | TOKEN_LESS + | TOKEN_INT + | TOKEN_CHAR + | TOKEN_BOOL + | TOKEN_IF + | TOKEN_THEN + | TOKEN_ELSE + | TOKEN_LET + | TOKEN_IN + | TOKEN_EOF + | TOKEN_ID + | TOKEN_STRINGLIT + | TOKEN_CHARLIT + | TOKEN_NUM + | TOKEN_end_of_input + | TOKEN_error +// This type is used to give symbolic names to token indexes, useful for error messages +type nonTerminalId = + | NONTERM__startProg + | NONTERM_Prog + | NONTERM_FunDecs + | NONTERM_Fun + | NONTERM_Type + | NONTERM_Params + | NONTERM_BinOp + | NONTERM_Exp + | 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 + +// 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 + | _ -> 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 +let prodIdxToNonTerminal (prodIdx:int) = + match prodIdx with + | 0 -> NONTERM__startProg + | 1 -> NONTERM_Prog + | 2 -> NONTERM_FunDecs + | 3 -> NONTERM_FunDecs + | 4 -> NONTERM_Fun + | 5 -> NONTERM_Fun + | 6 -> NONTERM_Type + | 7 -> NONTERM_Type + | 8 -> NONTERM_Type + | 9 -> NONTERM_Type + | 10 -> NONTERM_Params + | 11 -> NONTERM_Params + | 12 -> NONTERM_BinOp + | 13 -> NONTERM_Exp + | 14 -> NONTERM_Exp + | 15 -> NONTERM_Exp + | 16 -> NONTERM_Exp + | 17 -> NONTERM_Exp + | 18 -> NONTERM_Exp + | 19 -> NONTERM_Exp + | 20 -> NONTERM_Exp + | 21 -> NONTERM_Exp + | 22 -> NONTERM_Exp + | 23 -> NONTERM_Exp + | 24 -> NONTERM_Exp + | 25 -> NONTERM_Exp + | 26 -> NONTERM_Exp + | 27 -> NONTERM_Exp + | 28 -> NONTERM_Exp + | 29 -> NONTERM_Exp + | 30 -> NONTERM_Exp + | 31 -> NONTERM_Exp + | 32 -> NONTERM_Exp + | 33 -> NONTERM_Exp + | 34 -> NONTERM_Exps + | 35 -> NONTERM_Exps + | 36 -> NONTERM_FunArg + | 37 -> NONTERM_FunArg + | 38 -> NONTERM_FunArg + | _ -> failwith "prodIdxToNonTerminal: bad production index" + +let _fsyacc_endOfInputTag = 38 +let _fsyacc_tagOfErrorTerminal = 36 + +// This function gets the name of a token as a string +let token_to_string (t:token) = + match t with + | LPAR _ -> "LPAR" + | RPAR _ -> "RPAR" + | LBRACKET _ -> "LBRACKET" + | RBRACKET _ -> "RBRACKET" + | LCURLY _ -> "LCURLY" + | RCURLY _ -> "RCURLY" + | FUN _ -> "FUN" + | FN _ -> "FN" + | COMMA _ -> "COMMA" + | SEMICOLON _ -> "SEMICOLON" + | READ _ -> "READ" + | WRITE _ -> "WRITE" + | DEQ _ -> "DEQ" + | LTH _ -> "LTH" + | EQ _ -> "EQ" + | OP _ -> "OP" + | MAP _ -> "MAP" + | REDUCE _ -> "REDUCE" + | IOTA _ -> "IOTA" + | ARROW _ -> "ARROW" + | PLUS _ -> "PLUS" + | MINUS _ -> "MINUS" + | LESS _ -> "LESS" + | INT _ -> "INT" + | CHAR _ -> "CHAR" + | BOOL _ -> "BOOL" + | IF _ -> "IF" + | THEN _ -> "THEN" + | ELSE _ -> "ELSE" + | LET _ -> "LET" + | IN _ -> "IN" + | EOF _ -> "EOF" + | ID _ -> "ID" + | STRINGLIT _ -> "STRINGLIT" + | CHARLIT _ -> "CHARLIT" + | NUM _ -> "NUM" + +// This function gets the data carried by a token as an object +let _fsyacc_dataOfToken (t:token) = + match t with + | 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 + | RBRACKET _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | LCURLY _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | RCURLY _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | FUN _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | FN _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | COMMA _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | SEMICOLON _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | READ _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | WRITE _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | DEQ _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | LTH _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | EQ _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | OP _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | MAP _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | REDUCE _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | IOTA _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | ARROW _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | PLUS _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | MINUS _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | LESS _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | INT _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | CHAR _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | BOOL _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | IF _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | THEN _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | ELSE _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | LET _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | IN _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | EOF _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | ID _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | 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_reductions () = [| +# 338 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> AbSyn.UntypedProg in + Microsoft.FSharp.Core.Operators.box + ( + ( + raise (FSharp.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1)) + ) + : 'gentype__startProg)); +# 347 "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" + _1 + ) +# 65 "Parser.fsp" + : AbSyn.UntypedProg)); +# 359 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> Position in + let _2 = parseState.GetInput(2) :?> AbSyn.UntypedFunDec in + let _3 = parseState.GetInput(3) :?> AbSyn.UntypedFunDec list in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 68 "Parser.fsp" + _2 :: _3 + ) +# 68 "Parser.fsp" + : AbSyn.UntypedFunDec list)); +# 372 "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" + _2 :: [] + ) +# 69 "Parser.fsp" + : AbSyn.UntypedFunDec list)); +# 384 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> AbSyn.Type in + let _2 = parseState.GetInput(2) :?> string * Position in + let _3 = parseState.GetInput(3) :?> Position in + let _4 = parseState.GetInput(4) :?> 'gentype_Params in + let _5 = parseState.GetInput(5) :?> Position in + let _6 = parseState.GetInput(6) :?> Position in + let _7 = parseState.GetInput(7) :?> AbSyn.UntypedExp in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 73 "Parser.fsp" + FunDec (fst _2, _1, _4, _7, snd _2) + ) +# 73 "Parser.fsp" + : AbSyn.UntypedFunDec)); +# 401 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> AbSyn.Type in + let _2 = parseState.GetInput(2) :?> string * Position in + let _3 = parseState.GetInput(3) :?> Position in + let _4 = parseState.GetInput(4) :?> Position in + let _5 = parseState.GetInput(5) :?> Position in + let _6 = parseState.GetInput(6) :?> AbSyn.UntypedExp in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 75 "Parser.fsp" + FunDec (fst _2, _1, [], _6, snd _2) + ) +# 75 "Parser.fsp" + : AbSyn.UntypedFunDec)); +# 417 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> Position in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 78 "Parser.fsp" + AbSyn.Int + ) +# 78 "Parser.fsp" + : AbSyn.Type)); +# 428 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> Position in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 79 "Parser.fsp" + AbSyn.Char + ) +# 79 "Parser.fsp" + : AbSyn.Type)); +# 439 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> Position in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 80 "Parser.fsp" + AbSyn.Bool + ) +# 80 "Parser.fsp" + : AbSyn.Type)); +# 450 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> Position in + let _2 = parseState.GetInput(2) :?> AbSyn.Type in + let _3 = parseState.GetInput(3) :?> Position in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 81 "Parser.fsp" + AbSyn.Array _2 + ) +# 81 "Parser.fsp" + : AbSyn.Type)); +# 463 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> AbSyn.Type in + let _2 = parseState.GetInput(2) :?> string * Position in + let _3 = parseState.GetInput(3) :?> Position in + let _4 = parseState.GetInput(4) :?> 'gentype_Params in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 85 "Parser.fsp" + Param (fst _2, _1) :: _4 + ) +# 85 "Parser.fsp" + : 'gentype_Params)); +# 477 "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" + Param (fst _2, _1) :: [] + ) +# 86 "Parser.fsp" + : 'gentype_Params)); +# 489 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> Position in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 90 "Parser.fsp" + (Lambda + (Int, [Param ("x", Int); + Param ("y", Int)], + Plus (Var ("x", _1), + Var ("y", _1), + _1) ,_1)) + ) +# 90 "Parser.fsp" + : 'gentype_BinOp)); +# 505 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> int * Position in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 103 "Parser.fsp" + Constant (IntVal (fst _1), snd _1) + ) +# 103 "Parser.fsp" + : AbSyn.UntypedExp)); +# 516 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> char * Position in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 104 "Parser.fsp" + Constant (CharVal (fst _1), snd _1) + ) +# 104 "Parser.fsp" + : AbSyn.UntypedExp)); +# 527 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> string * Position in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 105 "Parser.fsp" + Var _1 + ) +# 105 "Parser.fsp" + : AbSyn.UntypedExp)); +# 538 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> string * Position in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 106 "Parser.fsp" + StringLit _1 + ) +# 106 "Parser.fsp" + : AbSyn.UntypedExp)); +# 549 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> Position in + let _2 = parseState.GetInput(2) :?> AbSyn.UntypedExp list in + let _3 = parseState.GetInput(3) :?> Position in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 108 "Parser.fsp" + ArrayLit (_2, (), _1) + ) +# 108 "Parser.fsp" + : AbSyn.UntypedExp)); +# 562 "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 + ( + ( +# 109 "Parser.fsp" + Plus (_1, _3, _2) + ) +# 109 "Parser.fsp" + : AbSyn.UntypedExp)); +# 575 "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 + ( + ( +# 110 "Parser.fsp" + Minus(_1, _3, _2) + ) +# 110 "Parser.fsp" + : AbSyn.UntypedExp)); +# 588 "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 + ( + ( +# 111 "Parser.fsp" + Equal(_1, _3, _2) + ) +# 111 "Parser.fsp" + : AbSyn.UntypedExp)); +# 601 "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 + ( + ( +# 112 "Parser.fsp" + Less (_1, _3, _2) + ) +# 112 "Parser.fsp" + : AbSyn.UntypedExp)); +# 614 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> Position in + let _2 = parseState.GetInput(2) :?> AbSyn.UntypedExp 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 + Microsoft.FSharp.Core.Operators.box + ( + ( +# 114 "Parser.fsp" + If (_2, _4, _6, _1) + ) +# 114 "Parser.fsp" + : AbSyn.UntypedExp)); +# 630 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> string * Position in + let _2 = parseState.GetInput(2) :?> Position in + let _3 = parseState.GetInput(3) :?> AbSyn.UntypedExp list in + let _4 = parseState.GetInput(4) :?> Position in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 116 "Parser.fsp" + Apply (fst _1, _3, snd _1) + ) +# 116 "Parser.fsp" + : AbSyn.UntypedExp)); +# 644 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> string * Position in + let _2 = parseState.GetInput(2) :?> Position in + let _3 = parseState.GetInput(3) :?> Position in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 117 "Parser.fsp" + Apply (fst _1, [], snd _1) + ) +# 117 "Parser.fsp" + : AbSyn.UntypedExp)); +# 657 "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.Type in + let _4 = parseState.GetInput(4) :?> Position in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 119 "Parser.fsp" + Read (_3, _1) + ) +# 119 "Parser.fsp" + : AbSyn.UntypedExp)); +# 671 "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 + Microsoft.FSharp.Core.Operators.box + ( + ( +# 121 "Parser.fsp" + Write (_3, (), _1) + ) +# 121 "Parser.fsp" + : AbSyn.UntypedExp)); +# 685 "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 + Microsoft.FSharp.Core.Operators.box + ( + ( +# 123 "Parser.fsp" + Iota (_3, _1) + ) +# 123 "Parser.fsp" + : AbSyn.UntypedExp)); +# 699 "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 + ( + ( +# 125 "Parser.fsp" + Map (_3, _5, (), (), _1) + ) +# 125 "Parser.fsp" + : AbSyn.UntypedExp)); +# 715 "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 + ( + ( +# 127 "Parser.fsp" + Reduce (_3, _5, _7, (), _1) + ) +# 127 "Parser.fsp" + : AbSyn.UntypedExp)); +# 733 "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) :?> Position in + let _4 = parseState.GetInput(4) :?> 'gentype_BinOp in + let _5 = parseState.GetInput(5) :?> Position in + let _6 = parseState.GetInput(6) :?> AbSyn.UntypedExp in + let _7 = parseState.GetInput(7) :?> Position in + let _8 = parseState.GetInput(8) :?> AbSyn.UntypedExp in + let _9 = parseState.GetInput(9) :?> Position in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 129 "Parser.fsp" + Reduce (_4, _6, _8, (), _1) + ) +# 129 "Parser.fsp" + : AbSyn.UntypedExp)); +# 752 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> Position in + let _2 = parseState.GetInput(2) :?> AbSyn.UntypedExp in + let _3 = parseState.GetInput(3) :?> Position in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 130 "Parser.fsp" + _2 + ) +# 130 "Parser.fsp" + : AbSyn.UntypedExp)); +# 765 "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 + Microsoft.FSharp.Core.Operators.box + ( + ( +# 133 "Parser.fsp" + Let (Dec (fst _2, _4, _3), _6, _1) + ) +# 133 "Parser.fsp" + : AbSyn.UntypedExp)); +# 781 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> string * Position in + let _2 = parseState.GetInput(2) :?> Position in + let _3 = parseState.GetInput(3) :?> AbSyn.UntypedExp in + let _4 = parseState.GetInput(4) :?> Position in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 135 "Parser.fsp" + Index (fst _1, _3, (), _2) + ) +# 135 "Parser.fsp" + : AbSyn.UntypedExp)); +# 795 "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 list in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 138 "Parser.fsp" + _1 :: _3 + ) +# 138 "Parser.fsp" + : AbSyn.UntypedExp list)); +# 808 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> AbSyn.UntypedExp in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 139 "Parser.fsp" + _1 :: [] + ) +# 139 "Parser.fsp" + : AbSyn.UntypedExp list)); +# 819 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> string * Position in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 142 "Parser.fsp" + FunName (fst _1 ) + ) +# 142 "Parser.fsp" + : AbSyn.UntypedFunArg)); +# 830 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> Position in + let _2 = parseState.GetInput(2) :?> AbSyn.Type in + let _3 = parseState.GetInput(3) :?> Position in + let _4 = parseState.GetInput(4) :?> Position in + let _5 = parseState.GetInput(5) :?> Position in + let _6 = parseState.GetInput(6) :?> AbSyn.UntypedExp in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 144 "Parser.fsp" + Lambda (_2, [], _6, _1) + ) +# 144 "Parser.fsp" + : AbSyn.UntypedFunArg)); +# 846 "Parser.fs" + (fun (parseState : FSharp.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> Position in + let _2 = parseState.GetInput(2) :?> AbSyn.Type in + let _3 = parseState.GetInput(3) :?> Position in + let _4 = parseState.GetInput(4) :?> 'gentype_Params in + let _5 = parseState.GetInput(5) :?> Position in + let _6 = parseState.GetInput(6) :?> Position in + let _7 = parseState.GetInput(7) :?> AbSyn.UntypedExp in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 146 "Parser.fsp" + Lambda (_2, _4, _7, _1) + ) +# 146 "Parser.fsp" + : AbSyn.UntypedFunArg)); +|] +# 864 "Parser.fs" +let tables : FSharp.Text.Parsing.Tables<_> = + { reductions= _fsyacc_reductions (); + endOfInputTag = _fsyacc_endOfInputTag; + tagOfToken = tagOfToken; + dataOfToken = _fsyacc_dataOfToken; + actionTableElements = _fsyacc_actionTableElements; + actionTableRowOffsets = _fsyacc_actionTableRowOffsets; + stateToProdIdxsTableElements = _fsyacc_stateToProdIdxsTableElements; + stateToProdIdxsTableRowOffsets = _fsyacc_stateToProdIdxsTableRowOffsets; + reductionSymbolCounts = _fsyacc_reductionSymbolCounts; + immediateActions = _fsyacc_immediateActions; + gotos = _fsyacc_gotos; + sparseGotoTableRowOffsets = _fsyacc_sparseGotoTableRowOffsets; + tagOfErrorTerminal = _fsyacc_tagOfErrorTerminal; + parseError = (fun (ctxt:FSharp.Text.Parsing.ParseErrorContext<_>) -> + match parse_error_rich with + | Some f -> f ctxt + | None -> parse_error ctxt.Message); + numTerminals = 39; + productionToNonTerminalTable = _fsyacc_productionToNonTerminalTable } +let engine lexer lexbuf startState = tables.Interpret(lexer, lexbuf, startState) +let Prog lexer lexbuf : AbSyn.UntypedProg = + engine lexer lexbuf 0 :?> _ diff --git a/Fasto/Parser.fsi b/Fasto/Parser.fsi new file mode 100644 index 0000000..c5f62f9 --- /dev/null +++ b/Fasto/Parser.fsi @@ -0,0 +1,101 @@ +// Signature file for parser generated by fsyacc +module Parser +type token = + | LPAR of (Position) + | RPAR of (Position) + | LBRACKET of (Position) + | RBRACKET of (Position) + | LCURLY of (Position) + | RCURLY of (Position) + | FUN of (Position) + | FN of (Position) + | COMMA of (Position) + | SEMICOLON of (Position) + | READ of (Position) + | WRITE of (Position) + | DEQ of (Position) + | LTH of (Position) + | EQ of (Position) + | OP of (Position) + | MAP of (Position) + | REDUCE of (Position) + | IOTA of (Position) + | ARROW of (Position) + | PLUS of (Position) + | MINUS of (Position) + | LESS of (Position) + | INT of (Position) + | CHAR of (Position) + | BOOL of (Position) + | IF of (Position) + | THEN of (Position) + | ELSE of (Position) + | LET of (Position) + | IN of (Position) + | EOF of (Position) + | ID of (string * Position) + | STRINGLIT of (string * Position) + | CHARLIT of (char * Position) + | NUM of (int * Position) +type tokenId = + | TOKEN_LPAR + | TOKEN_RPAR + | TOKEN_LBRACKET + | TOKEN_RBRACKET + | TOKEN_LCURLY + | TOKEN_RCURLY + | TOKEN_FUN + | TOKEN_FN + | TOKEN_COMMA + | TOKEN_SEMICOLON + | TOKEN_READ + | TOKEN_WRITE + | TOKEN_DEQ + | TOKEN_LTH + | TOKEN_EQ + | TOKEN_OP + | TOKEN_MAP + | TOKEN_REDUCE + | TOKEN_IOTA + | TOKEN_ARROW + | TOKEN_PLUS + | TOKEN_MINUS + | TOKEN_LESS + | TOKEN_INT + | TOKEN_CHAR + | TOKEN_BOOL + | TOKEN_IF + | TOKEN_THEN + | TOKEN_ELSE + | TOKEN_LET + | TOKEN_IN + | TOKEN_EOF + | TOKEN_ID + | TOKEN_STRINGLIT + | TOKEN_CHARLIT + | TOKEN_NUM + | TOKEN_end_of_input + | TOKEN_error +type nonTerminalId = + | NONTERM__startProg + | NONTERM_Prog + | NONTERM_FunDecs + | NONTERM_Fun + | NONTERM_Type + | NONTERM_Params + | NONTERM_BinOp + | NONTERM_Exp + | NONTERM_Exps + | NONTERM_FunArg +/// This function maps tokens to integer indexes +val tagOfToken: token -> int + +/// This function maps integer indexes to symbolic token ids +val tokenTagToTokenId: int -> tokenId + +/// This function maps production indexes returned in syntax errors to strings representing the non terminal that would be produced by that production +val prodIdxToNonTerminal: int -> nonTerminalId + +/// This function gets the name of a token as a string +val token_to_string: token -> string +val Prog : (FSharp.Text.Lexing.LexBuffer<'cty> -> token) -> FSharp.Text.Lexing.LexBuffer<'cty> -> (AbSyn.UntypedProg) diff --git a/Fasto/Parser.fsyacc.output b/Fasto/Parser.fsyacc.output new file mode 100644 index 0000000..a94e590 --- /dev/null +++ b/Fasto/Parser.fsyacc.output @@ -0,0 +1,4640 @@ + Output file describing compiled parser placed in Parser.fs and Parser.fsi +------------------------ +states = +state 0: items: _startProg -> . Prog + actions: 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): shift 4 + 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: goto Prog: 1 + goto FunDecs: 2 +state 1: items: _startProg -> Prog . + actions: action 'LPAR' (noprec): accept + action 'RPAR' (noprec): accept + action 'LBRACKET' (noprec): accept + action 'RBRACKET' (noprec): accept + action 'LCURLY' (noprec): accept + action 'RCURLY' (noprec): accept + action 'FUN' (noprec): accept + action 'FN' (noprec): accept + action 'COMMA' (noprec): accept + action 'SEMICOLON' (noprec): accept + action 'READ' (noprec): accept + action 'WRITE' (noprec): accept + action 'DEQ' (noprec): accept + action 'LTH' (noprec): accept + action 'EQ' (noprec): accept + action 'OP' (noprec): accept + action 'MAP' (noprec): accept + action 'REDUCE' (noprec): accept + action 'IOTA' (noprec): accept + action 'ARROW' (noprec): accept + action 'PLUS' (noprec): accept + action 'MINUS' (noprec): accept + action 'LESS' (noprec): accept + action 'INT' (noprec): accept + action 'CHAR' (noprec): accept + action 'BOOL' (noprec): accept + action 'IF' (noprec): accept + action 'THEN' (noprec): accept + action 'ELSE' (noprec): accept + action 'LET' (noprec): accept + action 'IN' (noprec): accept + action 'EOF' (noprec): accept + action 'ID' (noprec): accept + action 'STRINGLIT' (noprec): accept + action 'CHARLIT' (noprec): accept + action 'NUM' (noprec): accept + action 'error' (noprec): accept + action '#' (noprec): accept + action '$$' (noprec): accept + immediate action: accept gotos:state 2: items: Prog -> FunDecs . 'EOF' + actions: 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): shift 3 + 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 3: items: Prog -> FunDecs 'EOF' . + actions: 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' + action 'LCURLY' (noprec): reduce Prog --> FunDecs 'EOF' + action 'RCURLY' (noprec): reduce Prog --> FunDecs 'EOF' + action 'FUN' (noprec): reduce Prog --> FunDecs 'EOF' + action 'FN' (noprec): reduce Prog --> FunDecs 'EOF' + action 'COMMA' (noprec): reduce Prog --> FunDecs 'EOF' + action 'SEMICOLON' (noprec): reduce Prog --> FunDecs 'EOF' + action 'READ' (noprec): reduce Prog --> FunDecs 'EOF' + action 'WRITE' (noprec): reduce Prog --> FunDecs 'EOF' + action 'DEQ' (noprec): reduce Prog --> FunDecs 'EOF' + action 'LTH' (noprec): reduce Prog --> FunDecs 'EOF' + action 'EQ' (noprec): reduce Prog --> FunDecs 'EOF' + action 'OP' (noprec): reduce Prog --> FunDecs 'EOF' + action 'MAP' (noprec): reduce Prog --> FunDecs 'EOF' + action 'REDUCE' (noprec): reduce Prog --> FunDecs 'EOF' + action 'IOTA' (noprec): reduce Prog --> FunDecs 'EOF' + action 'ARROW' (noprec): reduce Prog --> FunDecs 'EOF' + action 'PLUS' (noprec): reduce Prog --> FunDecs 'EOF' + action 'MINUS' (noprec): reduce Prog --> FunDecs 'EOF' + action 'LESS' (noprec): reduce Prog --> FunDecs 'EOF' + action 'INT' (noprec): reduce Prog --> FunDecs 'EOF' + action 'CHAR' (noprec): reduce Prog --> FunDecs 'EOF' + action 'BOOL' (noprec): reduce Prog --> FunDecs 'EOF' + action 'IF' (noprec): reduce Prog --> FunDecs 'EOF' + action 'THEN' (noprec): reduce Prog --> FunDecs 'EOF' + action 'ELSE' (noprec): reduce Prog --> FunDecs 'EOF' + action 'LET' (noprec): reduce Prog --> FunDecs 'EOF' + action 'IN' (noprec): reduce Prog --> FunDecs 'EOF' + action 'EOF' (noprec): reduce Prog --> FunDecs 'EOF' + action 'ID' (noprec): reduce Prog --> FunDecs 'EOF' + action 'STRINGLIT' (noprec): reduce Prog --> FunDecs 'EOF' + action 'CHARLIT' (noprec): reduce Prog --> FunDecs 'EOF' + action 'NUM' (noprec): reduce Prog --> FunDecs 'EOF' + action 'error' (noprec): reduce Prog --> FunDecs 'EOF' + action '#' (noprec): reduce Prog --> FunDecs 'EOF' + 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 + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): shift 20 + 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): shift 17 + action 'CHAR' (noprec): shift 18 + action 'BOOL' (noprec): shift 19 + 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: goto Fun: 5 + goto Type: 7 +state 5: items: FunDecs -> 'FUN' Fun . FunDecs + FunDecs -> 'FUN' Fun . + actions: 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 + action 'LCURLY' (noprec): reduce FunDecs --> 'FUN' Fun + action 'RCURLY' (noprec): reduce FunDecs --> 'FUN' Fun + action 'FUN' (noprec): shift 4 + action 'FN' (noprec): reduce FunDecs --> 'FUN' Fun + action 'COMMA' (noprec): reduce FunDecs --> 'FUN' Fun + action 'SEMICOLON' (noprec): reduce FunDecs --> 'FUN' Fun + action 'READ' (noprec): reduce FunDecs --> 'FUN' Fun + action 'WRITE' (noprec): reduce FunDecs --> 'FUN' Fun + action 'DEQ' (noprec): reduce FunDecs --> 'FUN' Fun + action 'LTH' (noprec): reduce FunDecs --> 'FUN' Fun + action 'EQ' (noprec): reduce FunDecs --> 'FUN' Fun + action 'OP' (noprec): reduce FunDecs --> 'FUN' Fun + action 'MAP' (noprec): reduce FunDecs --> 'FUN' Fun + action 'REDUCE' (noprec): reduce FunDecs --> 'FUN' Fun + action 'IOTA' (noprec): reduce FunDecs --> 'FUN' Fun + action 'ARROW' (noprec): reduce FunDecs --> 'FUN' Fun + action 'PLUS' (noprec): reduce FunDecs --> 'FUN' Fun + action 'MINUS' (noprec): reduce FunDecs --> 'FUN' Fun + action 'LESS' (noprec): reduce FunDecs --> 'FUN' Fun + action 'INT' (noprec): reduce FunDecs --> 'FUN' Fun + action 'CHAR' (noprec): reduce FunDecs --> 'FUN' Fun + action 'BOOL' (noprec): reduce FunDecs --> 'FUN' Fun + action 'IF' (noprec): reduce FunDecs --> 'FUN' Fun + action 'THEN' (noprec): reduce FunDecs --> 'FUN' Fun + action 'ELSE' (noprec): reduce FunDecs --> 'FUN' Fun + action 'LET' (noprec): reduce FunDecs --> 'FUN' Fun + action 'IN' (noprec): reduce FunDecs --> 'FUN' Fun + action 'EOF' (noprec): reduce FunDecs --> 'FUN' Fun + action 'ID' (noprec): reduce FunDecs --> 'FUN' Fun + action 'STRINGLIT' (noprec): reduce FunDecs --> 'FUN' Fun + action 'CHARLIT' (noprec): reduce FunDecs --> 'FUN' Fun + action 'NUM' (noprec): reduce FunDecs --> 'FUN' Fun + action 'error' (noprec): reduce FunDecs --> 'FUN' Fun + action '#' (noprec): reduce FunDecs --> 'FUN' Fun + 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 + action 'RPAR' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'LBRACKET' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'RBRACKET' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'LCURLY' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'RCURLY' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'FUN' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'FN' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'COMMA' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'SEMICOLON' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'READ' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'WRITE' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'DEQ' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'LTH' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'EQ' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'OP' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'MAP' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'REDUCE' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'IOTA' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'ARROW' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'PLUS' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'MINUS' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'LESS' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'INT' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'CHAR' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'BOOL' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'IF' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'THEN' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'ELSE' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'LET' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'IN' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'EOF' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'ID' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'STRINGLIT' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'CHARLIT' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'NUM' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action 'error' (noprec): reduce FunDecs --> 'FUN' Fun FunDecs + action '#' (noprec): reduce 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 + 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 8 + 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 8: items: Fun -> Type 'ID' . 'LPAR' Params 'RPAR' 'EQ' Exp + Fun -> Type 'ID' . 'LPAR' 'RPAR' 'EQ' Exp + actions: action 'LPAR' (noprec): shift 9 + 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 9: items: Fun -> Type 'ID' 'LPAR' . Params 'RPAR' 'EQ' Exp + Fun -> Type 'ID' 'LPAR' . 'RPAR' 'EQ' Exp + actions: action 'LPAR' (noprec): error + action 'RPAR' (noprec): shift 14 + action 'LBRACKET' (noprec): shift 20 + 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): shift 17 + action 'CHAR' (noprec): shift 18 + action 'BOOL' (noprec): shift 19 + 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: goto Type: 23 + goto Params: 10 +state 10: items: Fun -> Type 'ID' 'LPAR' Params . 'RPAR' 'EQ' Exp + actions: action 'LPAR' (noprec): error + action 'RPAR' (noprec): shift 11 + 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 11: items: Fun -> Type 'ID' 'LPAR' Params 'RPAR' . 'EQ' Exp + actions: 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 12 + 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 12: items: Fun -> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' . Exp + 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: 13 +state 13: items: Fun -> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp . + Exp -> Exp . 'PLUS' 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 + 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 + action 'LCURLY' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp + action 'RCURLY' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp + action 'FUN' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp + action 'FN' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp + action 'COMMA' (noprec): reduce 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 '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 '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 + action 'BOOL' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp + action 'IF' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp + action 'THEN' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp + action 'ELSE' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp + action 'LET' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp + action 'IN' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp + action 'EOF' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp + action 'ID' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp + action 'STRINGLIT' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp + action 'CHARLIT' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp + action 'NUM' (noprec): reduce Fun --> Type 'ID' 'LPAR' Params 'RPAR' 'EQ' Exp + action 'error' (noprec): reduce 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 + 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 15 + 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 15: items: Fun -> Type 'ID' 'LPAR' 'RPAR' 'EQ' . Exp + 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: 16 +state 16: items: Fun -> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp . + Exp -> Exp . 'PLUS' 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 + 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 + action 'LCURLY' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp + action 'RCURLY' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp + action 'FUN' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp + action 'FN' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp + action 'COMMA' (noprec): reduce 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 '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 '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 + action 'BOOL' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp + action 'IF' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp + action 'THEN' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp + action 'ELSE' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp + action 'LET' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp + action 'IN' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp + action 'EOF' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp + action 'ID' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp + action 'STRINGLIT' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp + action 'CHARLIT' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp + action 'NUM' (noprec): reduce Fun --> Type 'ID' 'LPAR' 'RPAR' 'EQ' Exp + action 'error' (noprec): reduce 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' + action 'RPAR' (noprec): reduce Type --> 'INT' + action 'LBRACKET' (noprec): reduce Type --> 'INT' + action 'RBRACKET' (noprec): reduce Type --> 'INT' + action 'LCURLY' (noprec): reduce Type --> 'INT' + action 'RCURLY' (noprec): reduce Type --> 'INT' + action 'FUN' (noprec): reduce Type --> 'INT' + action 'FN' (noprec): reduce Type --> 'INT' + action 'COMMA' (noprec): reduce Type --> 'INT' + action 'SEMICOLON' (noprec): reduce Type --> 'INT' + action 'READ' (noprec): reduce Type --> 'INT' + action 'WRITE' (noprec): reduce Type --> 'INT' + action 'DEQ' (noprec): reduce Type --> 'INT' + action 'LTH' (noprec): reduce Type --> 'INT' + action 'EQ' (noprec): reduce Type --> 'INT' + action 'OP' (noprec): reduce Type --> 'INT' + action 'MAP' (noprec): reduce Type --> 'INT' + action 'REDUCE' (noprec): reduce Type --> 'INT' + action 'IOTA' (noprec): reduce Type --> 'INT' + action 'ARROW' (noprec): reduce Type --> 'INT' + action 'PLUS' (noprec): reduce Type --> 'INT' + action 'MINUS' (noprec): reduce Type --> 'INT' + action 'LESS' (noprec): reduce Type --> 'INT' + action 'INT' (noprec): reduce Type --> 'INT' + action 'CHAR' (noprec): reduce Type --> 'INT' + action 'BOOL' (noprec): reduce Type --> 'INT' + action 'IF' (noprec): reduce Type --> 'INT' + action 'THEN' (noprec): reduce Type --> 'INT' + action 'ELSE' (noprec): reduce Type --> 'INT' + action 'LET' (noprec): reduce Type --> 'INT' + action 'IN' (noprec): reduce Type --> 'INT' + action 'EOF' (noprec): reduce Type --> 'INT' + action 'ID' (noprec): reduce Type --> 'INT' + action 'STRINGLIT' (noprec): reduce Type --> 'INT' + action 'CHARLIT' (noprec): reduce Type --> 'INT' + action 'NUM' (noprec): reduce Type --> 'INT' + action 'error' (noprec): reduce Type --> 'INT' + 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' + action 'RPAR' (noprec): reduce Type --> 'CHAR' + action 'LBRACKET' (noprec): reduce Type --> 'CHAR' + action 'RBRACKET' (noprec): reduce Type --> 'CHAR' + action 'LCURLY' (noprec): reduce Type --> 'CHAR' + action 'RCURLY' (noprec): reduce Type --> 'CHAR' + action 'FUN' (noprec): reduce Type --> 'CHAR' + action 'FN' (noprec): reduce Type --> 'CHAR' + action 'COMMA' (noprec): reduce Type --> 'CHAR' + action 'SEMICOLON' (noprec): reduce Type --> 'CHAR' + action 'READ' (noprec): reduce Type --> 'CHAR' + action 'WRITE' (noprec): reduce Type --> 'CHAR' + action 'DEQ' (noprec): reduce Type --> 'CHAR' + action 'LTH' (noprec): reduce Type --> 'CHAR' + action 'EQ' (noprec): reduce Type --> 'CHAR' + action 'OP' (noprec): reduce Type --> 'CHAR' + action 'MAP' (noprec): reduce Type --> 'CHAR' + action 'REDUCE' (noprec): reduce Type --> 'CHAR' + action 'IOTA' (noprec): reduce Type --> 'CHAR' + action 'ARROW' (noprec): reduce Type --> 'CHAR' + action 'PLUS' (noprec): reduce Type --> 'CHAR' + action 'MINUS' (noprec): reduce Type --> 'CHAR' + action 'LESS' (noprec): reduce Type --> 'CHAR' + action 'INT' (noprec): reduce Type --> 'CHAR' + action 'CHAR' (noprec): reduce Type --> 'CHAR' + action 'BOOL' (noprec): reduce Type --> 'CHAR' + action 'IF' (noprec): reduce Type --> 'CHAR' + action 'THEN' (noprec): reduce Type --> 'CHAR' + action 'ELSE' (noprec): reduce Type --> 'CHAR' + action 'LET' (noprec): reduce Type --> 'CHAR' + action 'IN' (noprec): reduce Type --> 'CHAR' + action 'EOF' (noprec): reduce Type --> 'CHAR' + action 'ID' (noprec): reduce Type --> 'CHAR' + action 'STRINGLIT' (noprec): reduce Type --> 'CHAR' + action 'CHARLIT' (noprec): reduce Type --> 'CHAR' + action 'NUM' (noprec): reduce Type --> 'CHAR' + action 'error' (noprec): reduce Type --> 'CHAR' + 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' + action 'RPAR' (noprec): reduce Type --> 'BOOL' + action 'LBRACKET' (noprec): reduce Type --> 'BOOL' + action 'RBRACKET' (noprec): reduce Type --> 'BOOL' + action 'LCURLY' (noprec): reduce Type --> 'BOOL' + action 'RCURLY' (noprec): reduce Type --> 'BOOL' + action 'FUN' (noprec): reduce Type --> 'BOOL' + action 'FN' (noprec): reduce Type --> 'BOOL' + action 'COMMA' (noprec): reduce Type --> 'BOOL' + action 'SEMICOLON' (noprec): reduce Type --> 'BOOL' + action 'READ' (noprec): reduce Type --> 'BOOL' + action 'WRITE' (noprec): reduce Type --> 'BOOL' + action 'DEQ' (noprec): reduce Type --> 'BOOL' + action 'LTH' (noprec): reduce Type --> 'BOOL' + action 'EQ' (noprec): reduce Type --> 'BOOL' + action 'OP' (noprec): reduce Type --> 'BOOL' + action 'MAP' (noprec): reduce Type --> 'BOOL' + action 'REDUCE' (noprec): reduce Type --> 'BOOL' + action 'IOTA' (noprec): reduce Type --> 'BOOL' + action 'ARROW' (noprec): reduce Type --> 'BOOL' + action 'PLUS' (noprec): reduce Type --> 'BOOL' + action 'MINUS' (noprec): reduce Type --> 'BOOL' + action 'LESS' (noprec): reduce Type --> 'BOOL' + action 'INT' (noprec): reduce Type --> 'BOOL' + action 'CHAR' (noprec): reduce Type --> 'BOOL' + action 'BOOL' (noprec): reduce Type --> 'BOOL' + action 'IF' (noprec): reduce Type --> 'BOOL' + action 'THEN' (noprec): reduce Type --> 'BOOL' + action 'ELSE' (noprec): reduce Type --> 'BOOL' + action 'LET' (noprec): reduce Type --> 'BOOL' + action 'IN' (noprec): reduce Type --> 'BOOL' + action 'EOF' (noprec): reduce Type --> 'BOOL' + action 'ID' (noprec): reduce Type --> 'BOOL' + action 'STRINGLIT' (noprec): reduce Type --> 'BOOL' + action 'CHARLIT' (noprec): reduce Type --> 'BOOL' + action 'NUM' (noprec): reduce Type --> 'BOOL' + action 'error' (noprec): reduce Type --> 'BOOL' + 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 + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): shift 20 + 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): shift 17 + action 'CHAR' (noprec): shift 18 + action 'BOOL' (noprec): shift 19 + 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: goto Type: 21 +state 21: items: Type -> 'LBRACKET' Type . 'RBRACKET' + actions: action 'LPAR' (noprec): error + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): shift 22 + 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 22: items: Type -> 'LBRACKET' Type 'RBRACKET' . + actions: 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' + action 'LCURLY' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'RCURLY' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'FUN' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'FN' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'COMMA' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'SEMICOLON' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'READ' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'WRITE' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'DEQ' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'LTH' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'EQ' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'OP' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'MAP' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'REDUCE' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'IOTA' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'ARROW' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'PLUS' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'MINUS' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'LESS' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'INT' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'CHAR' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'BOOL' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'IF' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'THEN' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'ELSE' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'LET' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'IN' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'EOF' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'ID' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'STRINGLIT' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'CHARLIT' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'NUM' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action 'error' (noprec): reduce Type --> 'LBRACKET' Type 'RBRACKET' + action '#' (noprec): reduce 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 + 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 24 + 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 24: items: Params -> Type 'ID' . 'COMMA' Params + Params -> Type 'ID' . + actions: 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' + action 'LCURLY' (noprec): reduce Params --> Type 'ID' + action 'RCURLY' (noprec): reduce Params --> Type 'ID' + action 'FUN' (noprec): reduce Params --> Type 'ID' + action 'FN' (noprec): reduce Params --> Type 'ID' + action 'COMMA' (noprec): shift 25 + action 'SEMICOLON' (noprec): reduce Params --> Type 'ID' + action 'READ' (noprec): reduce Params --> Type 'ID' + action 'WRITE' (noprec): reduce Params --> Type 'ID' + action 'DEQ' (noprec): reduce Params --> Type 'ID' + action 'LTH' (noprec): reduce Params --> Type 'ID' + action 'EQ' (noprec): reduce Params --> Type 'ID' + action 'OP' (noprec): reduce Params --> Type 'ID' + action 'MAP' (noprec): reduce Params --> Type 'ID' + action 'REDUCE' (noprec): reduce Params --> Type 'ID' + action 'IOTA' (noprec): reduce Params --> Type 'ID' + action 'ARROW' (noprec): reduce Params --> Type 'ID' + action 'PLUS' (noprec): reduce Params --> Type 'ID' + action 'MINUS' (noprec): reduce Params --> Type 'ID' + action 'LESS' (noprec): reduce Params --> Type 'ID' + action 'INT' (noprec): reduce Params --> Type 'ID' + action 'CHAR' (noprec): reduce Params --> Type 'ID' + action 'BOOL' (noprec): reduce Params --> Type 'ID' + action 'IF' (noprec): reduce Params --> Type 'ID' + action 'THEN' (noprec): reduce Params --> Type 'ID' + action 'ELSE' (noprec): reduce Params --> Type 'ID' + action 'LET' (noprec): reduce Params --> Type 'ID' + action 'IN' (noprec): reduce Params --> Type 'ID' + action 'EOF' (noprec): reduce Params --> Type 'ID' + action 'ID' (noprec): reduce Params --> Type 'ID' + action 'STRINGLIT' (noprec): reduce Params --> Type 'ID' + action 'CHARLIT' (noprec): reduce Params --> Type 'ID' + action 'NUM' (noprec): reduce Params --> Type 'ID' + action 'error' (noprec): reduce Params --> Type 'ID' + 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 + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): shift 20 + 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): shift 17 + action 'CHAR' (noprec): shift 18 + action 'BOOL' (noprec): shift 19 + 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: goto Type: 23 + goto Params: 26 +state 26: items: Params -> Type 'ID' 'COMMA' Params . + actions: 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 + action 'LCURLY' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'RCURLY' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'FUN' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'FN' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'COMMA' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'SEMICOLON' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'READ' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'WRITE' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'DEQ' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'LTH' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'EQ' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'OP' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'MAP' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'REDUCE' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'IOTA' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'ARROW' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'PLUS' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'MINUS' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'LESS' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'INT' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'CHAR' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'BOOL' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'IF' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'THEN' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'ELSE' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'LET' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'IN' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'EOF' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'ID' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'STRINGLIT' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'CHARLIT' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'NUM' (noprec): reduce Params --> Type 'ID' 'COMMA' Params + action 'error' (noprec): reduce 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' + immediate action: reduce BinOp --> 'PLUS' gotos:state 28: items: Exp -> 'NUM' . + actions: action 'LPAR' (noprec): reduce Exp --> 'NUM' + action 'RPAR' (noprec): reduce Exp --> 'NUM' + action 'LBRACKET' (noprec): reduce Exp --> 'NUM' + action 'RBRACKET' (noprec): reduce Exp --> 'NUM' + action 'LCURLY' (noprec): reduce Exp --> 'NUM' + action 'RCURLY' (noprec): reduce Exp --> 'NUM' + action 'FUN' (noprec): reduce Exp --> 'NUM' + action 'FN' (noprec): reduce Exp --> 'NUM' + action 'COMMA' (noprec): reduce Exp --> 'NUM' + action 'SEMICOLON' (noprec): reduce Exp --> 'NUM' + action 'READ' (noprec): reduce Exp --> 'NUM' + action 'WRITE' (noprec): reduce Exp --> 'NUM' + action 'DEQ' (noprec): reduce Exp --> 'NUM' + action 'LTH' (noprec): reduce Exp --> 'NUM' + action 'EQ' (noprec): reduce Exp --> 'NUM' + action 'OP' (noprec): reduce Exp --> 'NUM' + action 'MAP' (noprec): reduce Exp --> 'NUM' + action 'REDUCE' (noprec): reduce Exp --> 'NUM' + action 'IOTA' (noprec): reduce Exp --> 'NUM' + action 'ARROW' (noprec): reduce Exp --> 'NUM' + action 'PLUS' (noprec): reduce Exp --> 'NUM' + action 'MINUS' (noprec): reduce Exp --> 'NUM' + action 'LESS' (noprec): reduce Exp --> 'NUM' + action 'INT' (noprec): reduce Exp --> 'NUM' + action 'CHAR' (noprec): reduce Exp --> 'NUM' + action 'BOOL' (noprec): reduce Exp --> 'NUM' + action 'IF' (noprec): reduce Exp --> 'NUM' + action 'THEN' (noprec): reduce Exp --> 'NUM' + action 'ELSE' (noprec): reduce Exp --> 'NUM' + action 'LET' (noprec): reduce Exp --> 'NUM' + action 'IN' (noprec): reduce Exp --> 'NUM' + action 'EOF' (noprec): reduce Exp --> 'NUM' + action 'ID' (noprec): reduce Exp --> 'NUM' + action 'STRINGLIT' (noprec): reduce Exp --> 'NUM' + action 'CHARLIT' (noprec): reduce Exp --> 'NUM' + action 'NUM' (noprec): reduce Exp --> 'NUM' + action 'error' (noprec): reduce Exp --> 'NUM' + 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' + action 'RPAR' (noprec): reduce Exp --> 'CHARLIT' + action 'LBRACKET' (noprec): reduce Exp --> 'CHARLIT' + action 'RBRACKET' (noprec): reduce Exp --> 'CHARLIT' + action 'LCURLY' (noprec): reduce Exp --> 'CHARLIT' + action 'RCURLY' (noprec): reduce Exp --> 'CHARLIT' + action 'FUN' (noprec): reduce Exp --> 'CHARLIT' + action 'FN' (noprec): reduce Exp --> 'CHARLIT' + action 'COMMA' (noprec): reduce Exp --> 'CHARLIT' + action 'SEMICOLON' (noprec): reduce Exp --> 'CHARLIT' + action 'READ' (noprec): reduce Exp --> 'CHARLIT' + action 'WRITE' (noprec): reduce Exp --> 'CHARLIT' + action 'DEQ' (noprec): reduce Exp --> 'CHARLIT' + action 'LTH' (noprec): reduce Exp --> 'CHARLIT' + action 'EQ' (noprec): reduce Exp --> 'CHARLIT' + action 'OP' (noprec): reduce Exp --> 'CHARLIT' + action 'MAP' (noprec): reduce Exp --> 'CHARLIT' + action 'REDUCE' (noprec): reduce Exp --> 'CHARLIT' + action 'IOTA' (noprec): reduce Exp --> 'CHARLIT' + action 'ARROW' (noprec): reduce Exp --> 'CHARLIT' + action 'PLUS' (noprec): reduce Exp --> 'CHARLIT' + action 'MINUS' (noprec): reduce Exp --> 'CHARLIT' + action 'LESS' (noprec): reduce Exp --> 'CHARLIT' + action 'INT' (noprec): reduce Exp --> 'CHARLIT' + action 'CHAR' (noprec): reduce Exp --> 'CHARLIT' + action 'BOOL' (noprec): reduce Exp --> 'CHARLIT' + action 'IF' (noprec): reduce Exp --> 'CHARLIT' + action 'THEN' (noprec): reduce Exp --> 'CHARLIT' + action 'ELSE' (noprec): reduce Exp --> 'CHARLIT' + action 'LET' (noprec): reduce Exp --> 'CHARLIT' + action 'IN' (noprec): reduce Exp --> 'CHARLIT' + action 'EOF' (noprec): reduce Exp --> 'CHARLIT' + action 'ID' (noprec): reduce Exp --> 'CHARLIT' + action 'STRINGLIT' (noprec): reduce Exp --> 'CHARLIT' + action 'CHARLIT' (noprec): reduce Exp --> 'CHARLIT' + action 'NUM' (noprec): reduce Exp --> 'CHARLIT' + action 'error' (noprec): reduce Exp --> 'CHARLIT' + action '#' (noprec): reduce Exp --> 'CHARLIT' + action '$$' (noprec): reduce Exp --> 'CHARLIT' + immediate action: reduce Exp --> 'CHARLIT' gotos:state 30: items: Exp -> 'ID' . + Exp -> 'ID' . 'LPAR' Exps 'RPAR' + Exp -> 'ID' . 'LPAR' 'RPAR' + Exp -> 'ID' . 'LBRACKET' Exp 'RBRACKET' + actions: action 'LPAR' (noprec): shift 63 + action 'RPAR' (noprec): reduce Exp --> 'ID' + action 'LBRACKET' (noprec): shift 99 + action 'RBRACKET' (noprec): reduce Exp --> 'ID' + action 'LCURLY' (noprec): reduce Exp --> 'ID' + action 'RCURLY' (noprec): reduce Exp --> 'ID' + action 'FUN' (noprec): reduce Exp --> 'ID' + action 'FN' (noprec): reduce Exp --> 'ID' + action 'COMMA' (noprec): reduce Exp --> 'ID' + action 'SEMICOLON' (noprec): reduce Exp --> 'ID' + action 'READ' (noprec): reduce Exp --> 'ID' + action 'WRITE' (noprec): reduce Exp --> 'ID' + action 'DEQ' (noprec): reduce Exp --> 'ID' + action 'LTH' (noprec): reduce Exp --> 'ID' + action 'EQ' (noprec): reduce Exp --> 'ID' + action 'OP' (noprec): reduce Exp --> 'ID' + action 'MAP' (noprec): reduce Exp --> 'ID' + action 'REDUCE' (noprec): reduce Exp --> 'ID' + action 'IOTA' (noprec): reduce Exp --> 'ID' + action 'ARROW' (noprec): reduce Exp --> 'ID' + action 'PLUS' (noprec): reduce Exp --> 'ID' + action 'MINUS' (noprec): reduce Exp --> 'ID' + action 'LESS' (noprec): reduce Exp --> 'ID' + action 'INT' (noprec): reduce Exp --> 'ID' + action 'CHAR' (noprec): reduce Exp --> 'ID' + action 'BOOL' (noprec): reduce Exp --> 'ID' + action 'IF' (noprec): reduce Exp --> 'ID' + action 'THEN' (noprec): reduce Exp --> 'ID' + action 'ELSE' (noprec): reduce Exp --> 'ID' + action 'LET' (noprec): reduce Exp --> 'ID' + action 'IN' (noprec): reduce Exp --> 'ID' + action 'EOF' (noprec): reduce Exp --> 'ID' + action 'ID' (noprec): reduce Exp --> 'ID' + action 'STRINGLIT' (noprec): reduce Exp --> 'ID' + action 'CHARLIT' (noprec): reduce Exp --> 'ID' + action 'NUM' (noprec): reduce Exp --> 'ID' + action 'error' (noprec): reduce Exp --> 'ID' + 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' + action 'RPAR' (noprec): reduce Exp --> 'STRINGLIT' + action 'LBRACKET' (noprec): reduce Exp --> 'STRINGLIT' + action 'RBRACKET' (noprec): reduce Exp --> 'STRINGLIT' + action 'LCURLY' (noprec): reduce Exp --> 'STRINGLIT' + action 'RCURLY' (noprec): reduce Exp --> 'STRINGLIT' + action 'FUN' (noprec): reduce Exp --> 'STRINGLIT' + action 'FN' (noprec): reduce Exp --> 'STRINGLIT' + action 'COMMA' (noprec): reduce Exp --> 'STRINGLIT' + action 'SEMICOLON' (noprec): reduce Exp --> 'STRINGLIT' + action 'READ' (noprec): reduce Exp --> 'STRINGLIT' + action 'WRITE' (noprec): reduce Exp --> 'STRINGLIT' + action 'DEQ' (noprec): reduce Exp --> 'STRINGLIT' + action 'LTH' (noprec): reduce Exp --> 'STRINGLIT' + action 'EQ' (noprec): reduce Exp --> 'STRINGLIT' + action 'OP' (noprec): reduce Exp --> 'STRINGLIT' + action 'MAP' (noprec): reduce Exp --> 'STRINGLIT' + action 'REDUCE' (noprec): reduce Exp --> 'STRINGLIT' + action 'IOTA' (noprec): reduce Exp --> 'STRINGLIT' + action 'ARROW' (noprec): reduce Exp --> 'STRINGLIT' + action 'PLUS' (noprec): reduce Exp --> 'STRINGLIT' + action 'MINUS' (noprec): reduce Exp --> 'STRINGLIT' + action 'LESS' (noprec): reduce Exp --> 'STRINGLIT' + action 'INT' (noprec): reduce Exp --> 'STRINGLIT' + action 'CHAR' (noprec): reduce Exp --> 'STRINGLIT' + action 'BOOL' (noprec): reduce Exp --> 'STRINGLIT' + action 'IF' (noprec): reduce Exp --> 'STRINGLIT' + action 'THEN' (noprec): reduce Exp --> 'STRINGLIT' + action 'ELSE' (noprec): reduce Exp --> 'STRINGLIT' + action 'LET' (noprec): reduce Exp --> 'STRINGLIT' + action 'IN' (noprec): reduce Exp --> 'STRINGLIT' + action 'EOF' (noprec): reduce Exp --> 'STRINGLIT' + action 'ID' (noprec): reduce Exp --> 'STRINGLIT' + action 'STRINGLIT' (noprec): reduce Exp --> 'STRINGLIT' + action 'CHARLIT' (noprec): reduce Exp --> 'STRINGLIT' + action 'NUM' (noprec): reduce Exp --> 'STRINGLIT' + action 'error' (noprec): reduce Exp --> 'STRINGLIT' + 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 + 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: 53 + goto Exps: 33 +state 33: items: Exp -> 'LCURLY' Exps . 'RCURLY' + actions: action 'LPAR' (noprec): error + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): error + action 'LCURLY' (noprec): error + action 'RCURLY' (noprec): shift 34 + 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 34: items: Exp -> 'LCURLY' Exps 'RCURLY' . + actions: 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' + action 'LCURLY' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'RCURLY' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'FUN' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'FN' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'COMMA' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'SEMICOLON' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'READ' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'WRITE' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'DEQ' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'LTH' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'EQ' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'OP' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'MAP' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'REDUCE' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'IOTA' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'ARROW' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'PLUS' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'MINUS' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'LESS' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'INT' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'CHAR' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'BOOL' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'IF' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'THEN' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'ELSE' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'LET' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'IN' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'EOF' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'ID' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'STRINGLIT' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'CHARLIT' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'NUM' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action 'error' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action '#' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + action '$$' (noprec): reduce Exp --> 'LCURLY' Exps 'RCURLY' + immediate action: reduce Exp --> 'LCURLY' Exps 'RCURLY' gotos:state 35: items: Exp -> Exp . 'PLUS' Exp + Exp -> Exp 'PLUS' Exp . + 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 + 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 + 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 + 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 + 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 + 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' (explicit left 9998): shift 58 + action 'LTH' (explicit left 9998): shift 59 + 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 '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 '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 40: 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 + 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' (explicit left 9998): shift 58 + action 'LTH' (explicit left 9998): shift 59 + 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 '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 '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 41: 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' (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 + 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 + 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 9998): shift 58 + action 'LTH' (explicit left 9998): shift 59 + 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 '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 43: items: Exp -> Exp . 'PLUS' Exp + Exp -> Exp . 'MINUS' Exp + Exp -> Exp . 'DEQ' Exp + Exp -> Exp . 'LTH' Exp + Exp -> 'IOTA' 'LPAR' Exp . 'RPAR' + actions: action 'LPAR' (noprec): error + action 'RPAR' (noprec): shift 76 + 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 9998): shift 58 + action 'LTH' (explicit left 9998): shift 59 + 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 '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 44: items: Exp -> Exp . 'PLUS' Exp + Exp -> Exp . 'MINUS' Exp + 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 + 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 9998): shift 58 + action 'LTH' (explicit left 9998): shift 59 + 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 '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 45: items: Exp -> Exp . 'PLUS' Exp + Exp -> Exp . 'MINUS' Exp + 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): 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 86 + 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 '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 '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 46: items: Exp -> Exp . 'PLUS' Exp + Exp -> Exp . 'MINUS' Exp + 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 + 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 9998): shift 58 + action 'LTH' (explicit left 9998): shift 59 + 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 '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 47: items: Exp -> Exp . 'PLUS' Exp + Exp -> Exp . 'MINUS' Exp + 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): 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 91 + 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 '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 '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 48: items: Exp -> Exp . 'PLUS' Exp + Exp -> Exp . 'MINUS' Exp + 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 + 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 9998): shift 58 + action 'LTH' (explicit left 9998): shift 59 + 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 '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 49: items: Exp -> Exp . 'PLUS' Exp + 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 + 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 9998): shift 58 + action 'LTH' (explicit left 9998): shift 59 + 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 '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 50: items: Exp -> Exp . 'PLUS' Exp + 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 + 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 9998): shift 58 + action 'LTH' (explicit left 9998): shift 59 + 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 '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 98 + 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 51: items: Exp -> Exp . 'PLUS' Exp + 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 + action 'LBRACKET' (noprec): error + action 'RBRACKET' (noprec): shift 100 + 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 9998): shift 58 + action 'LTH' (explicit left 9998): shift 59 + 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 '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 53: items: Exp -> Exp . 'PLUS' Exp + Exp -> Exp . 'MINUS' Exp + Exp -> Exp . 'DEQ' Exp + Exp -> Exp . 'LTH' Exp + Exps -> Exp . 'COMMA' Exps + Exps -> Exp . + actions: action 'LPAR' (noprec): reduce Exps --> Exp + action 'RPAR' (noprec): reduce Exps --> Exp + action 'LBRACKET' (noprec): reduce Exps --> Exp + action 'RBRACKET' (noprec): reduce Exps --> Exp + action 'LCURLY' (noprec): reduce Exps --> Exp + action 'RCURLY' (noprec): reduce Exps --> Exp + action 'FUN' (noprec): reduce Exps --> Exp + action 'FN' (noprec): reduce Exps --> Exp + action 'COMMA' (noprec): shift 101 + 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 '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 'LESS' (noprec): reduce Exps --> Exp + action 'INT' (noprec): reduce Exps --> Exp + action 'CHAR' (noprec): reduce Exps --> Exp + action 'BOOL' (noprec): reduce Exps --> Exp + action 'IF' (noprec): reduce Exps --> Exp + action 'THEN' (noprec): reduce Exps --> Exp + action 'ELSE' (noprec): reduce Exps --> Exp + action 'LET' (noprec): reduce Exps --> Exp + action 'IN' (noprec): reduce Exps --> Exp + action 'EOF' (noprec): reduce Exps --> Exp + action 'ID' (noprec): reduce Exps --> Exp + action 'STRINGLIT' (noprec): reduce Exps --> Exp + action 'CHARLIT' (noprec): reduce Exps --> Exp + action 'NUM' (noprec): reduce Exps --> Exp + 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 + Exp -> Exp . 'MINUS' Exp + Exp -> Exp . 'DEQ' Exp + Exp -> Exp . 'LTH' Exp + FunArg -> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp . + actions: 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 + action 'LCURLY' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp + action 'RCURLY' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp + action 'FUN' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp + action 'FN' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp + action 'COMMA' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp + 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 '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 '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 + action 'BOOL' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp + action 'IF' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp + action 'THEN' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp + action 'ELSE' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp + action 'LET' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp + action 'IN' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp + action 'EOF' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp + action 'ID' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp + action 'STRINGLIT' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp + action 'CHARLIT' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp + action 'NUM' (noprec): reduce FunArg --> 'FN' Type 'LPAR' 'RPAR' 'ARROW' Exp + 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 + Exp -> Exp . 'MINUS' Exp + Exp -> Exp . 'DEQ' Exp + Exp -> Exp . 'LTH' Exp + FunArg -> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp . + actions: 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 + action 'LCURLY' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp + action 'RCURLY' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp + action 'FUN' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp + action 'FN' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp + action 'COMMA' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp + 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 '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 '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 + action 'BOOL' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp + action 'IF' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp + action 'THEN' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp + action 'ELSE' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp + action 'LET' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp + action 'IN' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp + action 'EOF' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp + action 'ID' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp + action 'STRINGLIT' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp + action 'CHARLIT' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp + action 'NUM' (noprec): reduce FunArg --> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' Exp + 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 + 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: 35 +state 57: items: Exp -> Exp 'MINUS' . Exp + 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: 36 +state 58: items: Exp -> Exp 'DEQ' . Exp + 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: 37 +state 59: items: Exp -> Exp 'LTH' . Exp + 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: 38 +state 60: items: Exp -> 'IF' . Exp 'THEN' Exp 'ELSE' Exp + 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: 39 +state 61: items: Exp -> 'IF' Exp 'THEN' . Exp 'ELSE' Exp + 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: 40 +state 62: items: Exp -> 'IF' Exp 'THEN' Exp 'ELSE' . Exp + 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: 41 +state 63: items: Exp -> 'ID' 'LPAR' . Exps 'RPAR' + Exp -> 'ID' 'LPAR' . 'RPAR' + actions: action 'LPAR' (noprec): shift 93 + action 'RPAR' (noprec): shift 66 + 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: 53 + goto Exps: 64 +state 64: items: Exp -> 'ID' 'LPAR' Exps . 'RPAR' + actions: action 'LPAR' (noprec): error + action 'RPAR' (noprec): shift 65 + 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 65: items: Exp -> 'ID' 'LPAR' Exps 'RPAR' . + actions: 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' + action 'LCURLY' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'RCURLY' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'FUN' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'FN' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'COMMA' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'SEMICOLON' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'READ' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'WRITE' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'DEQ' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'LTH' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'EQ' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'OP' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'MAP' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'REDUCE' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'IOTA' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'ARROW' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'PLUS' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'MINUS' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'LESS' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'INT' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'CHAR' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'BOOL' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'IF' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'THEN' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'ELSE' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'LET' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'IN' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'EOF' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'ID' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'STRINGLIT' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'CHARLIT' (noprec): reduce Exp --> 'ID' 'LPAR' Exps 'RPAR' + action 'NUM' (noprec): reduce 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' + action 'RPAR' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'LBRACKET' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'RBRACKET' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'LCURLY' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'RCURLY' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'FUN' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'FN' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'COMMA' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'SEMICOLON' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'READ' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'WRITE' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'DEQ' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'LTH' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'EQ' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'OP' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'MAP' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'REDUCE' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'IOTA' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'ARROW' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'PLUS' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'MINUS' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'LESS' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'INT' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'CHAR' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'BOOL' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'IF' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'THEN' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'ELSE' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'LET' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'IN' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'EOF' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'ID' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'STRINGLIT' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'CHARLIT' (noprec): reduce Exp --> 'ID' 'LPAR' 'RPAR' + action 'NUM' (noprec): reduce Exp --> 'ID' 'LPAR' '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 + 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 68: items: Exp -> 'READ' 'LPAR' . Type 'RPAR' + actions: action 'LPAR' (noprec): error + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): shift 20 + 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): shift 17 + action 'CHAR' (noprec): shift 18 + action 'BOOL' (noprec): shift 19 + 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: goto Type: 69 +state 69: items: Exp -> 'READ' 'LPAR' Type . 'RPAR' + actions: action 'LPAR' (noprec): error + action 'RPAR' (noprec): shift 70 + 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 70: items: Exp -> 'READ' 'LPAR' Type 'RPAR' . + actions: 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' + action 'LCURLY' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'RCURLY' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'FUN' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'FN' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'COMMA' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'SEMICOLON' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'READ' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'WRITE' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'DEQ' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'LTH' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'EQ' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'OP' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'MAP' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'REDUCE' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'IOTA' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'ARROW' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'PLUS' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'MINUS' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'LESS' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'INT' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'CHAR' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'BOOL' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'IF' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'THEN' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'ELSE' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'LET' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'IN' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'EOF' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'ID' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'STRINGLIT' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'CHARLIT' (noprec): reduce Exp --> 'READ' 'LPAR' Type 'RPAR' + action 'NUM' (noprec): reduce 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 + 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 72: items: Exp -> 'WRITE' 'LPAR' . Exp 'RPAR' + 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: 42 +state 73: items: Exp -> 'WRITE' 'LPAR' Exp 'RPAR' . + actions: 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' + action 'LCURLY' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'RCURLY' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'FUN' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'FN' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'COMMA' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'SEMICOLON' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'READ' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'WRITE' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'DEQ' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'LTH' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'EQ' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'OP' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'MAP' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'REDUCE' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'IOTA' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'ARROW' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'PLUS' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'MINUS' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'LESS' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'INT' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'CHAR' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'BOOL' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'IF' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'THEN' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'ELSE' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'LET' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'IN' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'EOF' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'ID' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'STRINGLIT' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'CHARLIT' (noprec): reduce Exp --> 'WRITE' 'LPAR' Exp 'RPAR' + action 'NUM' (noprec): reduce 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 + 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 75: items: Exp -> 'IOTA' 'LPAR' . Exp 'RPAR' + 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: 43 +state 76: items: Exp -> 'IOTA' 'LPAR' Exp 'RPAR' . + actions: 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' + action 'LCURLY' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'RCURLY' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'FUN' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'FN' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'COMMA' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'SEMICOLON' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'READ' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'WRITE' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'DEQ' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'LTH' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'EQ' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'OP' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'MAP' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'REDUCE' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'IOTA' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'ARROW' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'PLUS' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'MINUS' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'LESS' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'INT' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'CHAR' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'BOOL' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'IF' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'THEN' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'ELSE' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'LET' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'IN' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'EOF' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'ID' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'STRINGLIT' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'CHARLIT' (noprec): reduce Exp --> 'IOTA' 'LPAR' Exp 'RPAR' + action 'NUM' (noprec): reduce 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 + 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 78: items: Exp -> 'MAP' 'LPAR' . FunArg 'COMMA' Exp 'RPAR' + actions: 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 '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 103 + 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 + 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 80 + 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 80: items: Exp -> 'MAP' 'LPAR' FunArg 'COMMA' . Exp 'RPAR' + 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: 44 +state 81: items: Exp -> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' . + actions: 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' + action 'LCURLY' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'RCURLY' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'FUN' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'FN' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'COMMA' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'SEMICOLON' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'READ' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'WRITE' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'DEQ' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'LTH' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'EQ' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'OP' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'MAP' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'REDUCE' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'IOTA' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'ARROW' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'PLUS' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'MINUS' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'LESS' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'INT' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'CHAR' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'BOOL' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'IF' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'THEN' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'ELSE' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'LET' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'IN' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'EOF' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'ID' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'STRINGLIT' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'CHARLIT' (noprec): reduce Exp --> 'MAP' 'LPAR' FunArg 'COMMA' Exp 'RPAR' + action 'NUM' (noprec): reduce 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' + Exp -> 'REDUCE' . 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + actions: action 'LPAR' (noprec): shift 83 + 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 83: 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 + 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 '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): shift 88 + 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 103 + 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 + 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 85 + 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 85: items: Exp -> 'REDUCE' 'LPAR' FunArg 'COMMA' . Exp 'COMMA' Exp 'RPAR' + 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: 45 +state 86: items: Exp -> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' . Exp 'RPAR' + 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: 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' + 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' + action 'LCURLY' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'RCURLY' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'FUN' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'FN' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'COMMA' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'SEMICOLON' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'READ' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'WRITE' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'DEQ' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'LTH' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'EQ' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'OP' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'MAP' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'REDUCE' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'IOTA' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'ARROW' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'PLUS' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'MINUS' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'LESS' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'INT' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'CHAR' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'BOOL' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'IF' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'THEN' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'ELSE' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'LET' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'IN' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'EOF' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'ID' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'STRINGLIT' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'CHARLIT' (noprec): reduce Exp --> 'REDUCE' 'LPAR' FunArg 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'NUM' (noprec): reduce 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 + 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' (explicit left 9999): shift 27 + 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: goto BinOp: 89 +state 89: items: Exp -> 'REDUCE' 'LPAR' 'OP' BinOp . 'COMMA' Exp 'COMMA' Exp 'RPAR' + actions: 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 90 + 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 90: items: Exp -> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' . Exp 'COMMA' Exp 'RPAR' + 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: 47 +state 91: items: Exp -> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' . Exp 'RPAR' + 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: 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' + 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' + action 'LCURLY' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'RCURLY' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'FUN' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'FN' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'COMMA' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'SEMICOLON' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'READ' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'WRITE' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'DEQ' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'LTH' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'EQ' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'OP' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'MAP' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'REDUCE' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'IOTA' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'ARROW' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'PLUS' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'MINUS' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'LESS' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'INT' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'CHAR' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'BOOL' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'IF' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'THEN' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'ELSE' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'LET' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'IN' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'EOF' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'ID' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'STRINGLIT' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'CHARLIT' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + action 'NUM' (noprec): reduce Exp --> 'REDUCE' 'LPAR' 'OP' BinOp 'COMMA' Exp 'COMMA' Exp 'RPAR' + 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 + 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: 49 +state 94: items: Exp -> 'LPAR' Exp 'RPAR' . + actions: 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' + action 'LCURLY' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'RCURLY' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'FUN' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'FN' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'COMMA' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'SEMICOLON' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'READ' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'WRITE' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'DEQ' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'LTH' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'EQ' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'OP' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'MAP' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'REDUCE' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'IOTA' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'ARROW' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'PLUS' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'MINUS' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'LESS' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'INT' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'CHAR' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'BOOL' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'IF' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'THEN' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'ELSE' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'LET' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'IN' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'EOF' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'ID' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'STRINGLIT' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'CHARLIT' (noprec): reduce Exp --> 'LPAR' Exp 'RPAR' + action 'NUM' (noprec): reduce 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 + 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 96 + 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 + 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 97 + 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 97: items: Exp -> 'LET' 'ID' 'EQ' . Exp 'IN' Exp + 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: 50 +state 98: items: Exp -> 'LET' 'ID' 'EQ' Exp 'IN' . Exp + 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: 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' + 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' + action 'LCURLY' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'RCURLY' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'FUN' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'FN' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'COMMA' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'SEMICOLON' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'READ' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'WRITE' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'DEQ' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'LTH' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'EQ' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'OP' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'MAP' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'REDUCE' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'IOTA' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'ARROW' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'PLUS' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'MINUS' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'LESS' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'INT' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'CHAR' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'BOOL' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'IF' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'THEN' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'ELSE' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'LET' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'IN' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'EOF' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'ID' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'STRINGLIT' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'CHARLIT' (noprec): reduce Exp --> 'ID' 'LBRACKET' Exp 'RBRACKET' + action 'NUM' (noprec): reduce 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 + 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: 53 + goto Exps: 102 +state 102: items: Exps -> Exp 'COMMA' Exps . + actions: 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 + action 'LCURLY' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'RCURLY' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'FUN' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'FN' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'COMMA' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'SEMICOLON' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'READ' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'WRITE' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'DEQ' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'LTH' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'EQ' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'OP' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'MAP' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'REDUCE' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'IOTA' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'ARROW' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'PLUS' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'MINUS' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'LESS' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'INT' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'CHAR' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'BOOL' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'IF' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'THEN' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'ELSE' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'LET' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'IN' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'EOF' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'ID' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'STRINGLIT' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'CHARLIT' (noprec): reduce Exps --> Exp 'COMMA' Exps + action 'NUM' (noprec): reduce 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' + action 'RPAR' (noprec): reduce FunArg --> 'ID' + action 'LBRACKET' (noprec): reduce FunArg --> 'ID' + action 'RBRACKET' (noprec): reduce FunArg --> 'ID' + action 'LCURLY' (noprec): reduce FunArg --> 'ID' + action 'RCURLY' (noprec): reduce FunArg --> 'ID' + action 'FUN' (noprec): reduce FunArg --> 'ID' + action 'FN' (noprec): reduce FunArg --> 'ID' + action 'COMMA' (noprec): reduce FunArg --> 'ID' + action 'SEMICOLON' (noprec): reduce FunArg --> 'ID' + action 'READ' (noprec): reduce FunArg --> 'ID' + action 'WRITE' (noprec): reduce FunArg --> 'ID' + action 'DEQ' (noprec): reduce FunArg --> 'ID' + action 'LTH' (noprec): reduce FunArg --> 'ID' + action 'EQ' (noprec): reduce FunArg --> 'ID' + action 'OP' (noprec): reduce FunArg --> 'ID' + action 'MAP' (noprec): reduce FunArg --> 'ID' + action 'REDUCE' (noprec): reduce FunArg --> 'ID' + action 'IOTA' (noprec): reduce FunArg --> 'ID' + action 'ARROW' (noprec): reduce FunArg --> 'ID' + action 'PLUS' (noprec): reduce FunArg --> 'ID' + action 'MINUS' (noprec): reduce FunArg --> 'ID' + action 'LESS' (noprec): reduce FunArg --> 'ID' + action 'INT' (noprec): reduce FunArg --> 'ID' + action 'CHAR' (noprec): reduce FunArg --> 'ID' + action 'BOOL' (noprec): reduce FunArg --> 'ID' + action 'IF' (noprec): reduce FunArg --> 'ID' + action 'THEN' (noprec): reduce FunArg --> 'ID' + action 'ELSE' (noprec): reduce FunArg --> 'ID' + action 'LET' (noprec): reduce FunArg --> 'ID' + action 'IN' (noprec): reduce FunArg --> 'ID' + action 'EOF' (noprec): reduce FunArg --> 'ID' + action 'ID' (noprec): reduce FunArg --> 'ID' + action 'STRINGLIT' (noprec): reduce FunArg --> 'ID' + action 'CHARLIT' (noprec): reduce FunArg --> 'ID' + action 'NUM' (noprec): reduce FunArg --> 'ID' + 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 + FunArg -> 'FN' . Type 'LPAR' Params 'RPAR' 'ARROW' Exp + actions: action 'LPAR' (noprec): error + action 'RPAR' (noprec): error + action 'LBRACKET' (noprec): shift 20 + 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): shift 17 + action 'CHAR' (noprec): shift 18 + action 'BOOL' (noprec): shift 19 + 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: goto Type: 105 +state 105: items: FunArg -> 'FN' Type . 'LPAR' 'RPAR' 'ARROW' Exp + FunArg -> 'FN' Type . 'LPAR' Params 'RPAR' 'ARROW' Exp + actions: 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: 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 + action 'LBRACKET' (noprec): shift 20 + 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): shift 17 + action 'CHAR' (noprec): shift 18 + action 'BOOL' (noprec): shift 19 + 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: goto Type: 23 + goto Params: 109 +state 107: items: FunArg -> 'FN' Type 'LPAR' 'RPAR' . 'ARROW' Exp + actions: 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): shift 108 + 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 108: items: FunArg -> 'FN' Type 'LPAR' 'RPAR' 'ARROW' . Exp + 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: 54 +state 109: items: FunArg -> 'FN' Type 'LPAR' Params . 'RPAR' 'ARROW' Exp + actions: action 'LPAR' (noprec): error + action 'RPAR' (noprec): shift 110 + 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: FunArg -> 'FN' Type 'LPAR' Params 'RPAR' . 'ARROW' Exp + actions: 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): shift 111 + 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 111: items: FunArg -> 'FN' Type 'LPAR' Params 'RPAR' 'ARROW' . Exp + 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: 55 + +startStates = 0 +------------------------ diff --git a/tests/inline_map.asm b/tests/inline_map.asm index a9e9741..88bf437 100644 --- a/tests/inline_map.asm +++ b/tests/inline_map.asm @@ -17,189 +17,316 @@ _stop_: ori $2, $0, 10 syscall -# Function main -main: +# Function plus5 +plus5: + sw $31, -4($29) + addi $29, $29, -8 +# ori _param_x_1_,$2,0 +# ori _plus_L_3_,_param_x_1_,0 + ori $3, $0, 5 +# was: ori _plus_R_4_, $0, 5 + add $2, $2, $3 +# was: add _plus5res_2_, _plus_L_3_, _plus_R_4_ +# ori $2,_plus5res_2_,0 + addi $29, $29, 8 + lw $31, -4($29) + jr $31 +# Function mul2 +mul2: + sw $31, -4($29) + addi $29, $29, -8 +# ori _param_x_5_,$2,0 + ori $3, $2, 0 +# was: ori _plus_L_7_, _param_x_5_, 0 +# ori _plus_R_8_,_param_x_5_,0 + add $2, $3, $2 +# was: add _mul2res_6_, _plus_L_7_, _plus_R_8_ +# ori $2,_mul2res_6_,0 + addi $29, $29, 8 + lw $31, -4($29) + jr $31 +# Function testcomp +testcomp: + sw $31, -4($29) + addi $29, $29, -8 +# ori _param_x_9_,$2,0 +# ori _arg_12_,_param_x_9_,0 +# ori $2,_arg_12_,0 + jal write_int_arr +# was: jal write_int_arr, $2 +# ori _arg_11_,$2,0 +# ori $2,_arg_11_,0 + jal write_int_arr +# was: jal write_int_arr, $2 +# ori _testcompres_10_,$2,0 +# ori $2,_testcompres_10_,0 + addi $29, $29, 8 + 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_x_13_,$2,0 + ori $16, $2, 0 +# was: ori _tmp_15_, _param_x_13_, 0 +# ori _write_intres_14_,_tmp_15_,0 + ori $2, $16, 0 +# was: ori $2, _write_intres_14_, 0 + jal putint +# was: jal putint, $2 + ori $2, $16, 0 +# was: ori $2, _write_intres_14_, 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 $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 + addi $29, $29, -28 +# ori _param_x_16_,$2,0 +# ori _arr_reg_19_,_param_x_16_,0 + lw $16, 0($2) +# was: lw _size_reg_18_, 0(_arr_reg_19_) + ori $17, $28, 0 +# was: ori _write_int_arrres_17_, $28, 0 + sll $3, $16, 2 +# was: sll _tmp_28_, _size_reg_18_, 2 + addi $3, $3, 4 +# was: addi _tmp_28_, _tmp_28_, 4 + add $28, $28, $3 +# was: add $28, $28, _tmp_28_ + sw $16, 0($17) +# was: sw _size_reg_18_, 0(_write_int_arrres_17_) + addi $18, $17, 4 +# was: addi _addr_reg_22_, _write_int_arrres_17_, 4 + ori $19, $0, 0 +# was: ori _i_reg_23_, $0, 0 + addi $20, $2, 4 +# was: addi _elem_reg_20_, _arr_reg_19_, 4 +_loop_beg_24_: + sub $2, $19, $16 +# was: sub _tmp_reg_26_, _i_reg_23_, _size_reg_18_ + bgez $2, _loop_end_25_ +# was: bgez _tmp_reg_26_, _loop_end_25_ + lw $2, 0($20) +# was: lw _res_reg_21_, 0(_elem_reg_20_) + addi $20, $20, 4 +# was: addi _elem_reg_20_, _elem_reg_20_, 4 +# ori $2,_res_reg_21_,0 + jal write_int +# was: jal write_int, $2 +# ori _tmp_reg_27_,$2,0 +# ori _res_reg_21_,_tmp_reg_27_,0 + sw $2, 0($18) +# was: sw _res_reg_21_, 0(_addr_reg_22_) + addi $18, $18, 4 +# was: addi _addr_reg_22_, _addr_reg_22_, 4 + addi $19, $19, 1 +# was: addi _i_reg_23_, _i_reg_23_, 1 + j _loop_beg_24_ +_loop_end_25_: + ori $2, $17, 0 +# was: ori $2, _write_int_arrres_17_, 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 boo +boo: + 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_a_29_,$2,0 + ori $4, $0, 5 +# was: ori _plus_L_33_, $0, 5 + ori $3, $0, 3 +# was: ori _plus_R_34_, $0, 3 + add $0, $4, $3 +# was: add _letBind_32_, _plus_L_33_, _plus_R_34_ +# ori _arr_reg_36_,_param_a_29_,0 + lw $17, 0($2) +# was: lw _size_reg_35_, 0(_arr_reg_36_) + ori $16, $28, 0 +# was: ori _letBind_31_, $28, 0 + sll $3, $17, 2 +# was: sll _tmp_45_, _size_reg_35_, 2 + addi $3, $3, 4 +# was: addi _tmp_45_, _tmp_45_, 4 + add $28, $28, $3 +# was: add $28, $28, _tmp_45_ + sw $17, 0($16) +# was: sw _size_reg_35_, 0(_letBind_31_) + addi $18, $16, 4 +# was: addi _addr_reg_39_, _letBind_31_, 4 + ori $19, $0, 0 +# was: ori _i_reg_40_, $0, 0 + addi $20, $2, 4 +# was: addi _elem_reg_37_, _arr_reg_36_, 4 +_loop_beg_41_: + sub $2, $19, $17 +# was: sub _tmp_reg_43_, _i_reg_40_, _size_reg_35_ + bgez $2, _loop_end_42_ +# was: bgez _tmp_reg_43_, _loop_end_42_ + lw $2, 0($20) +# was: lw _res_reg_38_, 0(_elem_reg_37_) + addi $20, $20, 4 +# was: addi _elem_reg_37_, _elem_reg_37_, 4 +# ori $2,_res_reg_38_,0 + jal plus5 +# was: jal plus5, $2 +# ori _tmp_reg_44_,$2,0 +# ori _res_reg_38_,_tmp_reg_44_,0 + sw $2, 0($18) +# was: sw _res_reg_38_, 0(_addr_reg_39_) + addi $18, $18, 4 +# was: addi _addr_reg_39_, _addr_reg_39_, 4 + addi $19, $19, 1 +# was: addi _i_reg_40_, _i_reg_40_, 1 + j _loop_beg_41_ +_loop_end_42_: + ori $2, $16, 0 +# was: ori _boores_30_, _letBind_31_, 0 +# ori $2,_boores_30_,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 $20, -24($29) + sw $19, -20($29) + sw $18, -16($29) + sw $17, -12($29) + sw $16, -8($29) + addi $29, $29, -28 jal getint # was: jal getint, $2 -# ori _letBind_2_,$2,0 -# ori _size_reg_4_,_letBind_2_,0 - bgez $2, _safe_lab_5_ -# was: bgez _size_reg_4_, _safe_lab_5_ + ori $3, $2, 0 +# was: ori _letBind_47_, $2, 0 +# ori _size_reg_49_,_letBind_47_,0 + bgez $3, _safe_lab_50_ +# was: bgez _size_reg_49_, _safe_lab_50_ ori $5, $0, 15 # was: ori $5, $0, 15 la $6, _Msg_IllegalArraySize_ # was: la $6, _Msg_IllegalArraySize_ j _RuntimeError_ -_safe_lab_5_: - ori $3, $28, 0 -# was: ori _letBind_3_, $28, 0 - sll $4, $2, 2 -# was: sll _tmp_11_, _size_reg_4_, 2 +_safe_lab_50_: + ori $2, $28, 0 +# was: ori _letBind_48_, $28, 0 + sll $4, $3, 2 +# was: sll _tmp_56_, _size_reg_49_, 2 addi $4, $4, 4 -# was: addi _tmp_11_, _tmp_11_, 4 +# was: addi _tmp_56_, _tmp_56_, 4 add $28, $28, $4 -# was: add $28, $28, _tmp_11_ - sw $2, 0($3) -# was: sw _size_reg_4_, 0(_letBind_3_) - addi $6, $3, 4 -# was: addi _addr_reg_6_, _letBind_3_, 4 - ori $5, $0, 0 -# was: ori _i_reg_7_, $0, 0 -_loop_beg_8_: - sub $4, $5, $2 -# was: sub _tmp_reg_10_, _i_reg_7_, _size_reg_4_ - bgez $4, _loop_end_9_ -# was: bgez _tmp_reg_10_, _loop_end_9_ - sw $5, 0($6) -# was: sw _i_reg_7_, 0(_addr_reg_6_) - addi $6, $6, 4 -# was: addi _addr_reg_6_, _addr_reg_6_, 4 - addi $5, $5, 1 -# was: addi _i_reg_7_, _i_reg_7_, 1 - j _loop_beg_8_ -_loop_end_9_: - ori $2, $3, 0 -# was: ori _arr_reg_14_, _letBind_3_, 0 - lw $4, 0($2) -# was: lw _size_reg_13_, 0(_arr_reg_14_) - ori $6, $28, 0 -# was: ori _letBind_12_, $28, 0 - sll $3, $4, 2 -# was: sll _tmp_25_, _size_reg_13_, 2 - addi $3, $3, 4 -# was: addi _tmp_25_, _tmp_25_, 4 - add $28, $28, $3 -# was: add $28, $28, _tmp_25_ - sw $4, 0($6) -# was: sw _size_reg_13_, 0(_letBind_12_) - addi $3, $6, 4 -# was: addi _addr_reg_17_, _letBind_12_, 4 - ori $5, $0, 0 -# was: ori _i_reg_18_, $0, 0 - addi $7, $2, 4 -# was: addi _elem_reg_15_, _arr_reg_14_, 4 -_loop_beg_19_: - sub $2, $5, $4 -# was: sub _tmp_reg_21_, _i_reg_18_, _size_reg_13_ - bgez $2, _loop_end_20_ -# was: bgez _tmp_reg_21_, _loop_end_20_ - lw $2, 0($7) -# was: lw _res_reg_16_, 0(_elem_reg_15_) - addi $7, $7, 4 -# was: addi _elem_reg_15_, _elem_reg_15_, 4 - ori $8, $2, 0 -# was: ori _plus_L_23_, _res_reg_16_, 0 - ori $2, $0, 5 -# was: ori _plus_R_24_, $0, 5 - add $2, $8, $2 -# was: add _fun_arg_res_22_, _plus_L_23_, _plus_R_24_ -# ori _res_reg_16_,_fun_arg_res_22_,0 - sw $2, 0($3) -# was: sw _res_reg_16_, 0(_addr_reg_17_) - addi $3, $3, 4 -# was: addi _addr_reg_17_, _addr_reg_17_, 4 - addi $5, $5, 1 -# was: addi _i_reg_18_, _i_reg_18_, 1 - j _loop_beg_19_ -_loop_end_20_: - ori $2, $6, 0 -# was: ori _arr_reg_28_, _letBind_12_, 0 - lw $4, 0($2) -# was: lw _size_reg_27_, 0(_arr_reg_28_) - ori $5, $28, 0 -# was: ori _letBind_26_, $28, 0 - sll $3, $4, 2 -# was: sll _tmp_39_, _size_reg_27_, 2 - addi $3, $3, 4 -# was: addi _tmp_39_, _tmp_39_, 4 - add $28, $28, $3 -# was: add $28, $28, _tmp_39_ - sw $4, 0($5) -# was: sw _size_reg_27_, 0(_letBind_26_) - addi $3, $5, 4 -# was: addi _addr_reg_31_, _letBind_26_, 4 +# was: add $28, $28, _tmp_56_ + sw $3, 0($2) +# was: sw _size_reg_49_, 0(_letBind_48_) + addi $5, $2, 4 +# was: addi _addr_reg_51_, _letBind_48_, 4 ori $6, $0, 0 -# was: ori _i_reg_32_, $0, 0 - addi $7, $2, 4 -# was: addi _elem_reg_29_, _arr_reg_28_, 4 -_loop_beg_33_: - sub $2, $6, $4 -# was: sub _tmp_reg_35_, _i_reg_32_, _size_reg_27_ - bgez $2, _loop_end_34_ -# was: bgez _tmp_reg_35_, _loop_end_34_ - lw $2, 0($7) -# was: lw _res_reg_30_, 0(_elem_reg_29_) - addi $7, $7, 4 -# was: addi _elem_reg_29_, _elem_reg_29_, 4 - ori $8, $2, 0 -# was: ori _plus_L_37_, _res_reg_30_, 0 -# ori _plus_R_38_,_res_reg_30_,0 - add $2, $8, $2 -# was: add _fun_arg_res_36_, _plus_L_37_, _plus_R_38_ -# ori _res_reg_30_,_fun_arg_res_36_,0 - sw $2, 0($3) -# was: sw _res_reg_30_, 0(_addr_reg_31_) - addi $3, $3, 4 -# was: addi _addr_reg_31_, _addr_reg_31_, 4 +# was: ori _i_reg_52_, $0, 0 +_loop_beg_53_: + sub $4, $6, $3 +# was: sub _tmp_reg_55_, _i_reg_52_, _size_reg_49_ + bgez $4, _loop_end_54_ +# was: bgez _tmp_reg_55_, _loop_end_54_ + sw $6, 0($5) +# was: sw _i_reg_52_, 0(_addr_reg_51_) + addi $5, $5, 4 +# was: addi _addr_reg_51_, _addr_reg_51_, 4 addi $6, $6, 1 -# was: addi _i_reg_32_, _i_reg_32_, 1 - j _loop_beg_33_ -_loop_end_34_: -# ori _arr_reg_41_,_letBind_26_,0 - lw $16, 0($5) -# was: lw _size_reg_40_, 0(_arr_reg_41_) +# was: addi _i_reg_52_, _i_reg_52_, 1 + j _loop_beg_53_ +_loop_end_54_: +# ori _plus_L_59_,_letBind_47_,0 + ori $4, $3, 0 +# was: ori _plus_R_60_, _letBind_47_, 0 + add $0, $3, $4 +# was: add _letBind_58_, _plus_L_59_, _plus_R_60_ + ori $4, $3, 0 +# was: ori _plus_L_63_, _letBind_47_, 0 +# ori _plus_R_64_,_letBind_47_,0 + add $4, $4, $3 +# was: add _plus_L_61_, _plus_L_63_, _plus_R_64_ +# ori _plus_R_62_,_letBind_47_,0 + add $0, $4, $3 +# was: add _letBind_57_, _plus_L_61_, _plus_R_62_ +# ori _arg_66_,_letBind_48_,0 +# ori $2,_arg_66_,0 + jal boo +# was: jal boo, $2 +# ori _letBind_65_,$2,0 +# ori _arr_reg_69_,_letBind_65_,0 + lw $16, 0($2) +# was: lw _size_reg_68_, 0(_arr_reg_69_) ori $17, $28, 0 -# was: ori _mainres_1_, $28, 0 - sll $2, $16, 2 -# was: sll _tmp_51_, _size_reg_40_, 2 - addi $2, $2, 4 -# was: addi _tmp_51_, _tmp_51_, 4 - add $28, $28, $2 -# was: add $28, $28, _tmp_51_ +# was: ori _letBind_67_, $28, 0 + sll $3, $16, 2 +# was: sll _tmp_78_, _size_reg_68_, 2 + addi $3, $3, 4 +# was: addi _tmp_78_, _tmp_78_, 4 + add $28, $28, $3 +# was: add $28, $28, _tmp_78_ sw $16, 0($17) -# was: sw _size_reg_40_, 0(_mainres_1_) +# was: sw _size_reg_68_, 0(_letBind_67_) addi $18, $17, 4 -# was: addi _addr_reg_44_, _mainres_1_, 4 +# was: addi _addr_reg_72_, _letBind_67_, 4 ori $19, $0, 0 -# was: ori _i_reg_45_, $0, 0 - addi $20, $5, 4 -# was: addi _elem_reg_42_, _arr_reg_41_, 4 -_loop_beg_46_: +# was: ori _i_reg_73_, $0, 0 + addi $20, $2, 4 +# was: addi _elem_reg_70_, _arr_reg_69_, 4 +_loop_beg_74_: sub $2, $19, $16 -# was: sub _tmp_reg_48_, _i_reg_45_, _size_reg_40_ - bgez $2, _loop_end_47_ -# was: bgez _tmp_reg_48_, _loop_end_47_ - lw $21, 0($20) -# was: lw _res_reg_43_, 0(_elem_reg_42_) +# was: sub _tmp_reg_76_, _i_reg_73_, _size_reg_68_ + bgez $2, _loop_end_75_ +# was: bgez _tmp_reg_76_, _loop_end_75_ + lw $2, 0($20) +# was: lw _res_reg_71_, 0(_elem_reg_70_) addi $20, $20, 4 -# was: addi _elem_reg_42_, _elem_reg_42_, 4 -# ori _tmp_50_,_res_reg_43_,0 -# ori _fun_arg_res_49_,_tmp_50_,0 - ori $2, $21, 0 -# was: ori $2, _fun_arg_res_49_, 0 - jal putint -# was: jal putint, $2 -# ori _res_reg_43_,_fun_arg_res_49_,0 - sw $21, 0($18) -# was: sw _res_reg_43_, 0(_addr_reg_44_) +# was: addi _elem_reg_70_, _elem_reg_70_, 4 +# ori $2,_res_reg_71_,0 + jal mul2 +# was: jal mul2, $2 +# ori _tmp_reg_77_,$2,0 +# ori _res_reg_71_,_tmp_reg_77_,0 + sw $2, 0($18) +# was: sw _res_reg_71_, 0(_addr_reg_72_) addi $18, $18, 4 -# was: addi _addr_reg_44_, _addr_reg_44_, 4 +# was: addi _addr_reg_72_, _addr_reg_72_, 4 addi $19, $19, 1 -# was: addi _i_reg_45_, _i_reg_45_, 1 - j _loop_beg_46_ -_loop_end_47_: +# was: addi _i_reg_73_, _i_reg_73_, 1 + j _loop_beg_74_ +_loop_end_75_: ori $2, $17, 0 -# was: ori $2, _mainres_1_, 0 - addi $29, $29, 32 - lw $21, -28($29) +# was: ori _arg_79_, _letBind_67_, 0 +# ori $2,_arg_79_,0 + jal write_int_arr +# was: jal write_int_arr, $2 +# ori _mainres_46_,$2,0 +# ori $2,_mainres_46_,0 + addi $29, $29, 28 lw $20, -24($29) lw $19, -20($29) lw $18, -16($29) diff --git a/tests/lambda.asm b/tests/lambda.asm index d51f4f6..4b54603 100644 --- a/tests/lambda.asm +++ b/tests/lambda.asm @@ -1,12 +1,12 @@ .text 0x00400000 .globl main la $28, _heap_ - la $4, _a__str__41_ -# was: la _a__str__41__addr, _a__str__41_ + la $4, _a__str__45_ +# was: la _a__str__45__addr, _a__str__45_ ori $3, $0, 1 -# was: ori _a__str__41__init, $0, 1 +# was: ori _a__str__45__init, $0, 1 sw $3, 0($4) -# was: sw _a__str__41__init, 0(_a__str__41__addr) +# was: sw _a__str__45__init, 0(_a__str__45__addr) la $4, _true # was: la _true_addr, _true ori $3, $0, 4 @@ -23,191 +23,220 @@ _stop_: ori $2, $0, 10 syscall -# Function main -main: +# Function write_int +write_int: + sw $31, -4($29) + sw $16, -8($29) + addi $29, $29, -12 +# ori _param_x_1_,$2,0 + ori $16, $2, 0 +# was: ori _tmp_3_, _param_x_1_, 0 +# ori _write_intres_2_,_tmp_3_,0 + ori $2, $16, 0 +# was: ori $2, _write_intres_2_, 0 + jal putint +# was: jal putint, $2 + ori $2, $16, 0 +# was: ori $2, _write_intres_2_, 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 $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 + addi $29, $29, -28 +# ori _param_x_4_,$2,0 +# ori _arr_reg_7_,_param_x_4_,0 + lw $16, 0($2) +# was: lw _size_reg_6_, 0(_arr_reg_7_) + ori $17, $28, 0 +# was: ori _write_int_arrres_5_, $28, 0 + sll $3, $16, 2 +# was: sll _tmp_16_, _size_reg_6_, 2 + addi $3, $3, 4 +# was: addi _tmp_16_, _tmp_16_, 4 + add $28, $28, $3 +# was: add $28, $28, _tmp_16_ + sw $16, 0($17) +# was: sw _size_reg_6_, 0(_write_int_arrres_5_) + addi $18, $17, 4 +# was: addi _addr_reg_10_, _write_int_arrres_5_, 4 + ori $19, $0, 0 +# was: ori _i_reg_11_, $0, 0 + addi $20, $2, 4 +# was: addi _elem_reg_8_, _arr_reg_7_, 4 +_loop_beg_12_: + sub $2, $19, $16 +# was: sub _tmp_reg_14_, _i_reg_11_, _size_reg_6_ + bgez $2, _loop_end_13_ +# was: bgez _tmp_reg_14_, _loop_end_13_ + lw $2, 0($20) +# was: lw _res_reg_9_, 0(_elem_reg_8_) + addi $20, $20, 4 +# was: addi _elem_reg_8_, _elem_reg_8_, 4 +# ori $2,_res_reg_9_,0 + jal write_int +# was: jal write_int, $2 +# ori _tmp_reg_15_,$2,0 +# ori _res_reg_9_,_tmp_reg_15_,0 + sw $2, 0($18) +# was: sw _res_reg_9_, 0(_addr_reg_10_) + addi $18, $18, 4 +# was: addi _addr_reg_10_, _addr_reg_10_, 4 + addi $19, $19, 1 +# was: addi _i_reg_11_, _i_reg_11_, 1 + j _loop_beg_12_ +_loop_end_13_: + ori $2, $17, 0 +# was: ori $2, _write_int_arrres_5_, 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 jal getint # was: jal getint, $2 -# ori _letBind_2_,$2,0 - ori $4, $2, 0 -# was: ori _size_reg_4_, _letBind_2_, 0 - bgez $4, _safe_lab_5_ -# was: bgez _size_reg_4_, _safe_lab_5_ +# ori _letBind_18_,$2,0 + ori $5, $2, 0 +# was: ori _size_reg_20_, _letBind_18_, 0 + bgez $5, _safe_lab_21_ +# was: bgez _size_reg_20_, _safe_lab_21_ ori $5, $0, 7 # was: ori $5, $0, 7 la $6, _Msg_IllegalArraySize_ # was: la $6, _Msg_IllegalArraySize_ j _RuntimeError_ -_safe_lab_5_: +_safe_lab_21_: ori $6, $28, 0 -# was: ori _letBind_3_, $28, 0 - sll $2, $4, 2 -# was: sll _tmp_11_, _size_reg_4_, 2 +# was: ori _letBind_19_, $28, 0 + sll $2, $5, 2 +# was: sll _tmp_27_, _size_reg_20_, 2 addi $2, $2, 4 -# was: addi _tmp_11_, _tmp_11_, 4 +# was: addi _tmp_27_, _tmp_27_, 4 add $28, $28, $2 -# was: add $28, $28, _tmp_11_ - sw $4, 0($6) -# was: sw _size_reg_4_, 0(_letBind_3_) - addi $5, $6, 4 -# was: addi _addr_reg_6_, _letBind_3_, 4 - ori $2, $0, 0 -# was: ori _i_reg_7_, $0, 0 -_loop_beg_8_: - sub $3, $2, $4 -# was: sub _tmp_reg_10_, _i_reg_7_, _size_reg_4_ - bgez $3, _loop_end_9_ -# was: bgez _tmp_reg_10_, _loop_end_9_ - sw $2, 0($5) -# was: sw _i_reg_7_, 0(_addr_reg_6_) - addi $5, $5, 4 -# was: addi _addr_reg_6_, _addr_reg_6_, 4 - addi $2, $2, 1 -# was: addi _i_reg_7_, _i_reg_7_, 1 - j _loop_beg_8_ -_loop_end_9_: -# ori _arr_reg_14_,_letBind_3_,0 +# was: add $28, $28, _tmp_27_ + sw $5, 0($6) +# was: sw _size_reg_20_, 0(_letBind_19_) + addi $2, $6, 4 +# was: addi _addr_reg_22_, _letBind_19_, 4 + ori $4, $0, 0 +# was: ori _i_reg_23_, $0, 0 +_loop_beg_24_: + sub $3, $4, $5 +# was: sub _tmp_reg_26_, _i_reg_23_, _size_reg_20_ + bgez $3, _loop_end_25_ +# was: bgez _tmp_reg_26_, _loop_end_25_ + sw $4, 0($2) +# was: sw _i_reg_23_, 0(_addr_reg_22_) + addi $2, $2, 4 +# was: addi _addr_reg_22_, _addr_reg_22_, 4 + addi $4, $4, 1 +# was: addi _i_reg_23_, _i_reg_23_, 1 + j _loop_beg_24_ +_loop_end_25_: +# ori _arr_reg_31_,_letBind_19_,0 lw $2, 0($6) -# was: lw _size_reg_13_, 0(_arr_reg_14_) +# was: lw _size_reg_30_, 0(_arr_reg_31_) ori $3, $28, 0 -# was: ori _letBind_12_, $28, 0 +# was: ori _arg_29_, $28, 0 sll $4, $2, 2 -# was: sll _tmp_25_, _size_reg_13_, 2 +# was: sll _tmp_42_, _size_reg_30_, 2 addi $4, $4, 4 -# was: addi _tmp_25_, _tmp_25_, 4 +# was: addi _tmp_42_, _tmp_42_, 4 add $28, $28, $4 -# was: add $28, $28, _tmp_25_ +# was: add $28, $28, _tmp_42_ sw $2, 0($3) -# was: sw _size_reg_13_, 0(_letBind_12_) +# was: sw _size_reg_30_, 0(_arg_29_) addi $4, $3, 4 -# was: addi _addr_reg_17_, _letBind_12_, 4 +# was: addi _addr_reg_34_, _arg_29_, 4 ori $5, $0, 0 -# was: ori _i_reg_18_, $0, 0 +# was: ori _i_reg_35_, $0, 0 addi $6, $6, 4 -# was: addi _elem_reg_15_, _arr_reg_14_, 4 -_loop_beg_19_: +# was: addi _elem_reg_32_, _arr_reg_31_, 4 +_loop_beg_36_: sub $7, $5, $2 -# was: sub _tmp_reg_21_, _i_reg_18_, _size_reg_13_ - bgez $7, _loop_end_20_ -# was: bgez _tmp_reg_21_, _loop_end_20_ +# was: sub _tmp_reg_38_, _i_reg_35_, _size_reg_30_ + bgez $7, _loop_end_37_ +# was: bgez _tmp_reg_38_, _loop_end_37_ lw $7, 0($6) -# was: lw _res_reg_16_, 0(_elem_reg_15_) +# was: lw _res_reg_33_, 0(_elem_reg_32_) addi $6, $6, 4 -# was: addi _elem_reg_15_, _elem_reg_15_, 4 - ori $8, $7, 0 -# was: ori _plus_L_23_, _res_reg_16_, 0 - ori $7, $0, 2 -# was: ori _plus_R_24_, $0, 2 - add $7, $8, $7 -# was: add _fun_arg_res_22_, _plus_L_23_, _plus_R_24_ -# ori _res_reg_16_,_fun_arg_res_22_,0 +# was: addi _elem_reg_32_, _elem_reg_32_, 4 +# ori _plus_L_40_,_res_reg_33_,0 + ori $8, $0, 2 +# was: ori _plus_R_41_, $0, 2 + add $7, $7, $8 +# was: add _fun_arg_res_39_, _plus_L_40_, _plus_R_41_ +# ori _res_reg_33_,_fun_arg_res_39_,0 sw $7, 0($4) -# was: sw _res_reg_16_, 0(_addr_reg_17_) +# was: sw _res_reg_33_, 0(_addr_reg_34_) addi $4, $4, 4 -# was: addi _addr_reg_17_, _addr_reg_17_, 4 +# was: addi _addr_reg_34_, _addr_reg_34_, 4 addi $5, $5, 1 -# was: addi _i_reg_18_, _i_reg_18_, 1 - j _loop_beg_19_ -_loop_end_20_: -# ori _arr_reg_28_,_letBind_12_,0 - lw $17, 0($3) -# was: lw _size_reg_27_, 0(_arr_reg_28_) - ori $16, $28, 0 -# was: ori _letBind_26_, $28, 0 - sll $2, $17, 2 -# was: sll _tmp_38_, _size_reg_27_, 2 - addi $2, $2, 4 -# was: addi _tmp_38_, _tmp_38_, 4 - add $28, $28, $2 -# was: add $28, $28, _tmp_38_ - sw $17, 0($16) -# was: sw _size_reg_27_, 0(_letBind_26_) - addi $18, $16, 4 -# was: addi _addr_reg_31_, _letBind_26_, 4 - ori $19, $0, 0 -# was: ori _i_reg_32_, $0, 0 - addi $20, $3, 4 -# was: addi _elem_reg_29_, _arr_reg_28_, 4 -_loop_beg_33_: - sub $2, $19, $17 -# was: sub _tmp_reg_35_, _i_reg_32_, _size_reg_27_ - bgez $2, _loop_end_34_ -# was: bgez _tmp_reg_35_, _loop_end_34_ - lw $21, 0($20) -# was: lw _res_reg_30_, 0(_elem_reg_29_) - addi $20, $20, 4 -# was: addi _elem_reg_29_, _elem_reg_29_, 4 -# ori _tmp_37_,_res_reg_30_,0 -# ori _fun_arg_res_36_,_tmp_37_,0 - ori $2, $21, 0 -# was: ori $2, _fun_arg_res_36_, 0 - jal putint -# was: jal putint, $2 -# ori _res_reg_30_,_fun_arg_res_36_,0 - sw $21, 0($18) -# was: sw _res_reg_30_, 0(_addr_reg_31_) - addi $18, $18, 4 -# was: addi _addr_reg_31_, _addr_reg_31_, 4 - addi $19, $19, 1 -# was: addi _i_reg_32_, _i_reg_32_, 1 - j _loop_beg_33_ -_loop_end_34_: - la $2, _a__str__41_ -# was: la _tmp_40_, _a__str__41_ -# _a__str__41_: string "\n" -# ori _letBind_39_,_tmp_40_,0 -# ori $2,_tmp_40_,0 +# was: addi _i_reg_35_, _i_reg_35_, 1 + j _loop_beg_36_ +_loop_end_37_: + ori $2, $3, 0 +# was: ori $2, _arg_29_, 0 + jal write_int_arr +# was: jal write_int_arr, $2 + ori $16, $2, 0 +# was: ori _letBind_28_, $2, 0 + la $2, _a__str__45_ +# was: la _tmp_44_, _a__str__45_ +# _a__str__45_: string "\n" +# ori _letBind_43_,_tmp_44_,0 +# ori $2,_tmp_44_,0 jal putstring # was: jal putstring, $2 -# ori _arr_reg_43_,_letBind_26_,0 +# ori _arr_reg_47_,_letBind_28_,0 lw $2, 0($16) -# was: lw _size_reg_44_, 0(_arr_reg_43_) - ori $5, $0, 0 -# was: ori _letBind_42_, $0, 0 +# was: lw _size_reg_48_, 0(_arr_reg_47_) + ori $4, $0, 0 +# was: ori _arg_46_, $0, 0 addi $16, $16, 4 -# was: addi _arr_reg_43_, _arr_reg_43_, 4 +# was: addi _arr_reg_47_, _arr_reg_47_, 4 ori $3, $0, 0 -# was: ori _ind_var_45_, $0, 0 -_loop_beg_47_: - sub $4, $3, $2 -# was: sub _tmp_reg_46_, _ind_var_45_, _size_reg_44_ - bgez $4, _loop_end_48_ -# was: bgez _tmp_reg_46_, _loop_end_48_ - lw $4, 0($16) -# was: lw _tmp_reg_46_, 0(_arr_reg_43_) +# was: ori _ind_var_49_, $0, 0 +_loop_beg_51_: + sub $5, $3, $2 +# was: sub _tmp_reg_50_, _ind_var_49_, _size_reg_48_ + bgez $5, _loop_end_52_ +# was: bgez _tmp_reg_50_, _loop_end_52_ + lw $5, 0($16) +# was: lw _tmp_reg_50_, 0(_arr_reg_47_) addi $16, $16, 4 -# was: addi _arr_reg_43_, _arr_reg_43_, 4 -# ori _plus_L_50_,_letBind_42_,0 -# ori _plus_R_51_,_tmp_reg_46_,0 - add $5, $5, $4 -# was: add _fun_arg_res_49_, _plus_L_50_, _plus_R_51_ -# ori _letBind_42_,_fun_arg_res_49_,0 +# was: addi _arr_reg_47_, _arr_reg_47_, 4 +# ori _plus_L_54_,_arg_46_,0 +# ori _plus_R_55_,_tmp_reg_50_,0 + add $4, $4, $5 +# was: add _fun_arg_res_53_, _plus_L_54_, _plus_R_55_ +# ori _arg_46_,_fun_arg_res_53_,0 addi $3, $3, 1 -# was: addi _ind_var_45_, _ind_var_45_, 1 - j _loop_beg_47_ -_loop_end_48_: -# ori _tmp_52_,_letBind_42_,0 - ori $16, $5, 0 -# was: ori _mainres_1_, _tmp_52_, 0 - ori $2, $16, 0 -# was: ori $2, _mainres_1_, 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: addi _ind_var_49_, _ind_var_49_, 1 + j _loop_beg_51_ +_loop_end_52_: + ori $2, $4, 0 +# was: ori $2, _arg_46_, 0 + jal write_int +# was: jal write_int, $2 +# ori _mainres_17_,$2,0 +# ori $2,_mainres_17_,0 + addi $29, $29, 12 lw $16, -8($29) lw $31, -4($29) jr $31 @@ -323,7 +352,7 @@ _Msg_DivZero_: .asciiz "division by zero" # String Literals .align 2 -_a__str__41_: +_a__str__45_: .space 4 .asciiz "\n" .align 2 diff --git a/tests/map_red_io.asm b/tests/map_red_io.asm index 57331e0..5f78a5e 100644 --- a/tests/map_red_io.asm +++ b/tests/map_red_io.asm @@ -1,24 +1,24 @@ .text 0x00400000 .globl main la $28, _heap_ - la $4, _Maxacha_72_ -# was: la _Maxacha_72__addr, _Maxacha_72_ + la $4, _Maxacha_82_ +# was: la _Maxacha_82__addr, _Maxacha_82_ ori $3, $0, 10 -# was: ori _Maxacha_72__init, $0, 10 +# was: ori _Maxacha_82__init, $0, 10 sw $3, 0($4) -# was: sw _Maxacha_72__init, 0(_Maxacha_72__addr) - la $4, _a__str__69_ -# was: la _a__str__69__addr, _a__str__69_ +# was: sw _Maxacha_82__init, 0(_Maxacha_82__addr) + la $4, _a__str__79_ +# was: la _a__str__79__addr, _a__str__79_ ori $3, $0, 1 -# was: ori _a__str__69__init, $0, 1 +# was: ori _a__str__79__init, $0, 1 sw $3, 0($4) -# was: sw _a__str__69__init, 0(_a__str__69__addr) - la $4, _Sumaa___64_ -# was: la _Sumaa___64__addr, _Sumaa___64_ +# was: sw _a__str__79__init, 0(_a__str__79__addr) + la $4, _Sumaa___74_ +# was: la _Sumaa___74__addr, _Sumaa___74_ ori $3, $0, 5 -# was: ori _Sumaa___64__init, $0, 5 +# was: ori _Sumaa___74__init, $0, 5 sw $3, 0($4) -# was: sw _Sumaa___64__init, 0(_Sumaa___64__addr) +# was: sw _Sumaa___74__init, 0(_Sumaa___74__addr) la $4, _true # was: la _true_addr, _true ori $3, $0, 4 @@ -35,6 +35,70 @@ _stop_: ori $2, $0, 10 syscall +# Function plus100 +plus100: + sw $31, -4($29) + addi $29, $29, -8 +# ori _param_x_1_,$2,0 +# ori _plus_L_3_,_param_x_1_,0 + ori $3, $0, 100 +# was: ori _plus_R_4_, $0, 100 + add $2, $2, $3 +# was: add _plus100res_2_, _plus_L_3_, _plus_R_4_ +# ori $2,_plus100res_2_,0 + addi $29, $29, 8 + lw $31, -4($29) + jr $31 +# Function read_chr +read_chr: + sw $31, -4($29) + addi $29, $29, -8 +# ori _param_i_5_,$2,0 + jal getchar +# was: jal getchar, $2 +# ori _read_chrres_6_,$2,0 +# ori $2,_read_chrres_6_,0 + addi $29, $29, 8 + lw $31, -4($29) + jr $31 +# Function plus +plus: + sw $31, -4($29) + addi $29, $29, -8 +# ori _param_x_7_,$2,0 +# ori _param_y_8_,$3,0 +# ori _plus_L_10_,_param_x_7_,0 +# ori _plus_R_11_,_param_y_8_,0 + add $2, $2, $3 +# was: add _plusres_9_, _plus_L_10_, _plus_R_11_ +# ori $2,_plusres_9_,0 + addi $29, $29, 8 + lw $31, -4($29) + jr $31 +# Function max_chr +max_chr: + sw $31, -4($29) + addi $29, $29, -8 +# ori _param_a_12_,$2,0 +# ori _param_b_13_,$3,0 +# ori _lt_L_19_,_param_a_12_,0 +# ori _lt_R_20_,_param_b_13_,0 + slt $4, $2, $3 +# was: slt _cond_18_, _lt_L_19_, _lt_R_20_ + bne $4, $0, _then_15_ +# was: bne _cond_18_, $0, _then_15_ + j _else_16_ +_then_15_: + ori $2, $3, 0 +# was: ori _max_chrres_14_, _param_b_13_, 0 + j _endif_17_ +_else_16_: +# ori _max_chrres_14_,_param_a_12_,0 +_endif_17_: +# ori $2,_max_chrres_14_,0 + addi $29, $29, 8 + lw $31, -4($29) + jr $31 # Function main main: sw $31, -4($29) @@ -47,234 +111,227 @@ main: addi $29, $29, -32 jal getint # was: jal getint, $2 -# ori _letBind_2_,$2,0 - ori $5, $2, 0 -# was: ori _size_reg_4_, _letBind_2_, 0 - bgez $5, _safe_lab_5_ -# was: bgez _size_reg_4_, _safe_lab_5_ +# ori _letBind_22_,$2,0 +# ori _size_reg_24_,_letBind_22_,0 + bgez $2, _safe_lab_25_ +# was: bgez _size_reg_24_, _safe_lab_25_ ori $5, $0, 10 # was: ori $5, $0, 10 la $6, _Msg_IllegalArraySize_ # was: la $6, _Msg_IllegalArraySize_ j _RuntimeError_ -_safe_lab_5_: - ori $3, $28, 0 -# was: ori _letBind_3_, $28, 0 - sll $4, $5, 2 -# was: sll _tmp_11_, _size_reg_4_, 2 - addi $4, $4, 4 -# was: addi _tmp_11_, _tmp_11_, 4 - add $28, $28, $4 -# was: add $28, $28, _tmp_11_ - sw $5, 0($3) -# was: sw _size_reg_4_, 0(_letBind_3_) - addi $7, $3, 4 -# was: addi _addr_reg_6_, _letBind_3_, 4 - ori $4, $0, 0 -# was: ori _i_reg_7_, $0, 0 -_loop_beg_8_: - sub $6, $4, $5 -# was: sub _tmp_reg_10_, _i_reg_7_, _size_reg_4_ - bgez $6, _loop_end_9_ -# was: bgez _tmp_reg_10_, _loop_end_9_ - sw $4, 0($7) -# was: sw _i_reg_7_, 0(_addr_reg_6_) - addi $7, $7, 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 _arr_reg_14_,_letBind_3_,0 - lw $5, 0($3) -# was: lw _size_reg_13_, 0(_arr_reg_14_) - ori $4, $28, 0 -# was: ori _letBind_12_, $28, 0 - sll $6, $5, 2 -# was: sll _tmp_25_, _size_reg_13_, 2 - addi $6, $6, 4 -# was: addi _tmp_25_, _tmp_25_, 4 - add $28, $28, $6 -# was: add $28, $28, _tmp_25_ - sw $5, 0($4) -# was: sw _size_reg_13_, 0(_letBind_12_) - addi $7, $4, 4 -# was: addi _addr_reg_17_, _letBind_12_, 4 - ori $6, $0, 0 -# was: ori _i_reg_18_, $0, 0 - addi $8, $3, 4 -# was: addi _elem_reg_15_, _arr_reg_14_, 4 -_loop_beg_19_: - sub $9, $6, $5 -# was: sub _tmp_reg_21_, _i_reg_18_, _size_reg_13_ - bgez $9, _loop_end_20_ -# was: bgez _tmp_reg_21_, _loop_end_20_ - lw $9, 0($8) -# was: lw _res_reg_16_, 0(_elem_reg_15_) - addi $8, $8, 4 -# was: addi _elem_reg_15_, _elem_reg_15_, 4 -# ori _plus_L_23_,_res_reg_16_,0 - ori $10, $0, 100 -# was: ori _plus_R_24_, $0, 100 - add $9, $9, $10 -# was: add _fun_arg_res_22_, _plus_L_23_, _plus_R_24_ -# ori _res_reg_16_,_fun_arg_res_22_,0 - sw $9, 0($7) -# was: sw _res_reg_16_, 0(_addr_reg_17_) - addi $7, $7, 4 -# was: addi _addr_reg_17_, _addr_reg_17_, 4 - addi $6, $6, 1 -# was: addi _i_reg_18_, _i_reg_18_, 1 - j _loop_beg_19_ -_loop_end_20_: - ori $7, $4, 0 -# was: ori _arr_reg_27_, _letBind_12_, 0 - lw $5, 0($7) -# was: lw _size_reg_28_, 0(_arr_reg_27_) - ori $17, $0, 0 -# was: ori _letBind_26_, $0, 0 - addi $7, $7, 4 -# was: addi _arr_reg_27_, _arr_reg_27_, 4 - ori $6, $0, 0 -# was: ori _ind_var_29_, $0, 0 -_loop_beg_31_: - sub $4, $6, $5 -# was: sub _tmp_reg_30_, _ind_var_29_, _size_reg_28_ - bgez $4, _loop_end_32_ -# was: bgez _tmp_reg_30_, _loop_end_32_ - lw $4, 0($7) -# was: lw _tmp_reg_30_, 0(_arr_reg_27_) - addi $7, $7, 4 -# was: addi _arr_reg_27_, _arr_reg_27_, 4 -# ori _plus_L_34_,_letBind_26_,0 -# ori _plus_R_35_,_tmp_reg_30_,0 - add $17, $17, $4 -# was: add _fun_arg_res_33_, _plus_L_34_, _plus_R_35_ -# ori _letBind_26_,_fun_arg_res_33_,0 - addi $6, $6, 1 -# was: addi _ind_var_29_, _ind_var_29_, 1 - j _loop_beg_31_ -_loop_end_32_: -# ori _arr_reg_38_,_letBind_3_,0 - lw $18, 0($3) -# was: lw _size_reg_37_, 0(_arr_reg_38_) +_safe_lab_25_: ori $16, $28, 0 -# was: ori _letBind_36_, $28, 0 - addi $4, $18, 3 -# was: addi _tmp_47_, _size_reg_37_, 3 - sra $4, $4, 2 -# was: sra _tmp_47_, _tmp_47_, 2 - sll $4, $4, 2 -# was: sll _tmp_47_, _tmp_47_, 2 - addi $4, $4, 4 -# was: addi _tmp_47_, _tmp_47_, 4 - add $28, $28, $4 -# was: add $28, $28, _tmp_47_ - sw $18, 0($16) -# was: sw _size_reg_37_, 0(_letBind_36_) - addi $20, $16, 4 -# was: addi _addr_reg_41_, _letBind_36_, 4 - ori $19, $0, 0 -# was: ori _i_reg_42_, $0, 0 - addi $21, $3, 4 -# was: addi _elem_reg_39_, _arr_reg_38_, 4 -_loop_beg_43_: - sub $3, $19, $18 -# was: sub _tmp_reg_45_, _i_reg_42_, _size_reg_37_ - bgez $3, _loop_end_44_ -# was: bgez _tmp_reg_45_, _loop_end_44_ - lw $3, 0($21) -# was: lw _res_reg_40_, 0(_elem_reg_39_) - addi $21, $21, 4 -# was: addi _elem_reg_39_, _elem_reg_39_, 4 - jal getchar -# was: jal getchar, $2 -# ori _fun_arg_res_46_,$2,0 - ori $3, $2, 0 -# was: ori _res_reg_40_, _fun_arg_res_46_, 0 - sb $3, 0($20) -# was: sb _res_reg_40_, 0(_addr_reg_41_) - addi $20, $20, 1 -# was: addi _addr_reg_41_, _addr_reg_41_, 1 - addi $19, $19, 1 -# was: addi _i_reg_42_, _i_reg_42_, 1 - j _loop_beg_43_ -_loop_end_44_: - ori $2, $16, 0 -# was: ori _arr_reg_49_, _letBind_36_, 0 - lw $3, 0($2) -# was: lw _size_reg_50_, 0(_arr_reg_49_) - ori $18, $0, 97 -# was: ori _letBind_48_, $0, 97 - addi $2, $2, 4 -# was: addi _arr_reg_49_, _arr_reg_49_, 4 +# was: ori _letBind_23_, $28, 0 + sll $3, $2, 2 +# was: sll _tmp_31_, _size_reg_24_, 2 + addi $3, $3, 4 +# was: addi _tmp_31_, _tmp_31_, 4 + add $28, $28, $3 +# was: add $28, $28, _tmp_31_ + sw $2, 0($16) +# was: sw _size_reg_24_, 0(_letBind_23_) + addi $3, $16, 4 +# was: addi _addr_reg_26_, _letBind_23_, 4 ori $4, $0, 0 -# was: ori _ind_var_51_, $0, 0 -_loop_beg_53_: - sub $5, $4, $3 -# was: sub _tmp_reg_52_, _ind_var_51_, _size_reg_50_ - bgez $5, _loop_end_54_ -# was: bgez _tmp_reg_52_, _loop_end_54_ - lb $5, 0($2) -# was: lb _tmp_reg_52_, 0(_arr_reg_49_) - addi $2, $2, 1 -# was: addi _arr_reg_49_, _arr_reg_49_, 1 -# ori _lt_L_60_,_letBind_48_,0 -# ori _lt_R_61_,_tmp_reg_52_,0 - slt $6, $18, $5 -# was: slt _cond_59_, _lt_L_60_, _lt_R_61_ - bne $6, $0, _then_56_ -# was: bne _cond_59_, $0, _then_56_ - j _else_57_ -_then_56_: -# ori _fun_arg_res_55_,_tmp_reg_52_,0 - j _endif_58_ -_else_57_: - ori $5, $18, 0 -# was: ori _fun_arg_res_55_, _letBind_48_, 0 -_endif_58_: - ori $18, $5, 0 -# was: ori _letBind_48_, _fun_arg_res_55_, 0 +# was: ori _i_reg_27_, $0, 0 +_loop_beg_28_: + sub $5, $4, $2 +# was: sub _tmp_reg_30_, _i_reg_27_, _size_reg_24_ + bgez $5, _loop_end_29_ +# was: bgez _tmp_reg_30_, _loop_end_29_ + sw $4, 0($3) +# was: sw _i_reg_27_, 0(_addr_reg_26_) + addi $3, $3, 4 +# was: addi _addr_reg_26_, _addr_reg_26_, 4 addi $4, $4, 1 -# was: addi _ind_var_51_, _ind_var_51_, 1 - j _loop_beg_53_ -_loop_end_54_: - la $2, _Sumaa___64_ -# was: la _tmp_63_, _Sumaa___64_ -# _Sumaa___64_: string "Sum: " -# ori _letBind_62_,_tmp_63_,0 -# ori $2,_tmp_63_,0 +# was: addi _i_reg_27_, _i_reg_27_, 1 + j _loop_beg_28_ +_loop_end_29_: +# ori _arr_reg_34_,_letBind_23_,0 + lw $17, 0($16) +# was: lw _size_reg_33_, 0(_arr_reg_34_) + ori $20, $28, 0 +# was: ori _letBind_32_, $28, 0 + sll $2, $17, 2 +# was: sll _tmp_43_, _size_reg_33_, 2 + addi $2, $2, 4 +# was: addi _tmp_43_, _tmp_43_, 4 + add $28, $28, $2 +# was: add $28, $28, _tmp_43_ + sw $17, 0($20) +# was: sw _size_reg_33_, 0(_letBind_32_) + addi $18, $20, 4 +# was: addi _addr_reg_37_, _letBind_32_, 4 + ori $19, $0, 0 +# was: ori _i_reg_38_, $0, 0 + addi $21, $16, 4 +# was: addi _elem_reg_35_, _arr_reg_34_, 4 +_loop_beg_39_: + sub $2, $19, $17 +# was: sub _tmp_reg_41_, _i_reg_38_, _size_reg_33_ + bgez $2, _loop_end_40_ +# was: bgez _tmp_reg_41_, _loop_end_40_ + lw $2, 0($21) +# was: lw _res_reg_36_, 0(_elem_reg_35_) + addi $21, $21, 4 +# was: addi _elem_reg_35_, _elem_reg_35_, 4 +# ori $2,_res_reg_36_,0 + jal plus100 +# was: jal plus100, $2 +# ori _tmp_reg_42_,$2,0 +# ori _res_reg_36_,_tmp_reg_42_,0 + sw $2, 0($18) +# was: sw _res_reg_36_, 0(_addr_reg_37_) + addi $18, $18, 4 +# was: addi _addr_reg_37_, _addr_reg_37_, 4 + addi $19, $19, 1 +# was: addi _i_reg_38_, _i_reg_38_, 1 + j _loop_beg_39_ +_loop_end_40_: +# ori _arr_reg_45_,_letBind_32_,0 + lw $18, 0($20) +# was: lw _size_reg_46_, 0(_arr_reg_45_) + ori $17, $0, 0 +# was: ori _letBind_44_, $0, 0 + addi $20, $20, 4 +# was: addi _arr_reg_45_, _arr_reg_45_, 4 + ori $19, $0, 0 +# was: ori _ind_var_47_, $0, 0 +_loop_beg_49_: + sub $3, $19, $18 +# was: sub _tmp_reg_48_, _ind_var_47_, _size_reg_46_ + bgez $3, _loop_end_50_ +# was: bgez _tmp_reg_48_, _loop_end_50_ + lw $3, 0($20) +# was: lw _tmp_reg_48_, 0(_arr_reg_45_) + addi $20, $20, 4 +# was: addi _arr_reg_45_, _arr_reg_45_, 4 + ori $2, $17, 0 +# was: ori $2, _letBind_44_, 0 +# ori $3,_tmp_reg_48_,0 + jal plus +# was: jal plus, $2 $3 +# ori _tmp_reg_51_,$2,0 + ori $17, $2, 0 +# was: ori _letBind_44_, _tmp_reg_51_, 0 + addi $19, $19, 1 +# was: addi _ind_var_47_, _ind_var_47_, 1 + j _loop_beg_49_ +_loop_end_50_: + ori $2, $16, 0 +# was: ori _arr_reg_54_, _letBind_23_, 0 + lw $18, 0($2) +# was: lw _size_reg_53_, 0(_arr_reg_54_) + ori $16, $28, 0 +# was: ori _letBind_52_, $28, 0 + addi $3, $18, 3 +# was: addi _tmp_63_, _size_reg_53_, 3 + sra $3, $3, 2 +# was: sra _tmp_63_, _tmp_63_, 2 + sll $3, $3, 2 +# was: sll _tmp_63_, _tmp_63_, 2 + addi $3, $3, 4 +# was: addi _tmp_63_, _tmp_63_, 4 + add $28, $28, $3 +# was: add $28, $28, _tmp_63_ + sw $18, 0($16) +# was: sw _size_reg_53_, 0(_letBind_52_) + addi $20, $16, 4 +# was: addi _addr_reg_57_, _letBind_52_, 4 + ori $19, $0, 0 +# was: ori _i_reg_58_, $0, 0 + addi $21, $2, 4 +# was: addi _elem_reg_55_, _arr_reg_54_, 4 +_loop_beg_59_: + sub $2, $19, $18 +# was: sub _tmp_reg_61_, _i_reg_58_, _size_reg_53_ + bgez $2, _loop_end_60_ +# was: bgez _tmp_reg_61_, _loop_end_60_ + lw $2, 0($21) +# was: lw _res_reg_56_, 0(_elem_reg_55_) + addi $21, $21, 4 +# was: addi _elem_reg_55_, _elem_reg_55_, 4 +# ori $2,_res_reg_56_,0 + jal read_chr +# was: jal read_chr, $2 +# ori _tmp_reg_62_,$2,0 +# ori _res_reg_56_,_tmp_reg_62_,0 + sb $2, 0($20) +# was: sb _res_reg_56_, 0(_addr_reg_57_) + addi $20, $20, 1 +# was: addi _addr_reg_57_, _addr_reg_57_, 1 + addi $19, $19, 1 +# was: addi _i_reg_58_, _i_reg_58_, 1 + j _loop_beg_59_ +_loop_end_60_: + ori $20, $16, 0 +# was: ori _arr_reg_65_, _letBind_52_, 0 + lw $19, 0($20) +# was: lw _size_reg_66_, 0(_arr_reg_65_) + ori $18, $0, 97 +# was: ori _letBind_64_, $0, 97 + addi $20, $20, 4 +# was: addi _arr_reg_65_, _arr_reg_65_, 4 + ori $21, $0, 0 +# was: ori _ind_var_67_, $0, 0 +_loop_beg_69_: + sub $3, $21, $19 +# was: sub _tmp_reg_68_, _ind_var_67_, _size_reg_66_ + bgez $3, _loop_end_70_ +# was: bgez _tmp_reg_68_, _loop_end_70_ + lb $3, 0($20) +# was: lb _tmp_reg_68_, 0(_arr_reg_65_) + addi $20, $20, 1 +# was: addi _arr_reg_65_, _arr_reg_65_, 1 + ori $2, $18, 0 +# was: ori $2, _letBind_64_, 0 +# ori $3,_tmp_reg_68_,0 + jal max_chr +# was: jal max_chr, $2 $3 +# ori _tmp_reg_71_,$2,0 + ori $18, $2, 0 +# was: ori _letBind_64_, _tmp_reg_71_, 0 + addi $21, $21, 1 +# was: addi _ind_var_67_, _ind_var_67_, 1 + j _loop_beg_69_ +_loop_end_70_: + la $2, _Sumaa___74_ +# was: la _tmp_73_, _Sumaa___74_ +# _Sumaa___74_: string "Sum: " +# ori _letBind_72_,_tmp_73_,0 +# ori $2,_tmp_73_,0 jal putstring # was: jal putstring, $2 -# ori _tmp_66_,_letBind_26_,0 ori $2, $17, 0 -# was: ori _letBind_65_, _tmp_66_, 0 -# ori $2,_letBind_65_,0 +# was: ori _tmp_76_, _letBind_44_, 0 +# ori _letBind_75_,_tmp_76_,0 +# ori $2,_letBind_75_,0 jal putint # was: jal putint, $2 - la $2, _a__str__69_ -# was: la _tmp_68_, _a__str__69_ -# _a__str__69_: string "\n" -# ori _letBind_67_,_tmp_68_,0 -# ori $2,_tmp_68_,0 + la $2, _a__str__79_ +# was: la _tmp_78_, _a__str__79_ +# _a__str__79_: string "\n" +# ori _letBind_77_,_tmp_78_,0 +# ori $2,_tmp_78_,0 jal putstring # was: jal putstring, $2 - la $2, _Maxacha_72_ -# was: la _tmp_71_, _Maxacha_72_ -# _Maxacha_72_: string "Max char: " -# ori _letBind_70_,_tmp_71_,0 -# ori $2,_tmp_71_,0 + la $2, _Maxacha_82_ +# was: la _tmp_81_, _Maxacha_82_ +# _Maxacha_82_: string "Max char: " +# ori _letBind_80_,_tmp_81_,0 +# ori $2,_tmp_81_,0 jal putstring # was: jal putstring, $2 ori $2, $18, 0 -# was: ori _tmp_74_, _letBind_48_, 0 -# ori _letBind_73_,_tmp_74_,0 -# ori $2,_letBind_73_,0 +# was: ori _tmp_84_, _letBind_64_, 0 +# ori _letBind_83_,_tmp_84_,0 +# ori $2,_letBind_83_,0 jal putchar # was: jal putchar, $2 ori $2, $16, 0 -# was: ori _mainres_1_, _letBind_36_, 0 -# ori $2,_mainres_1_,0 +# was: ori _mainres_21_, _letBind_52_, 0 +# ori $2,_mainres_21_,0 addi $29, $29, 32 lw $21, -28($29) lw $20, -24($29) @@ -396,15 +453,15 @@ _Msg_DivZero_: .asciiz "division by zero" # String Literals .align 2 -_Maxacha_72_: +_Maxacha_82_: .space 4 .asciiz "Max char: " .align 2 -_a__str__69_: +_a__str__79_: .space 4 .asciiz "\n" .align 2 -_Sumaa___64_: +_Sumaa___74_: .space 4 .asciiz "Sum: " .align 2 diff --git a/tests/ordchr.asm b/tests/ordchr.asm index 0a081b7..0b061c3 100644 --- a/tests/ordchr.asm +++ b/tests/ordchr.asm @@ -17,6 +17,133 @@ _stop_: ori $2, $0, 10 syscall +# Function read_char +read_char: + sw $31, -4($29) + addi $29, $29, -8 +# ori _param_i_1_,$2,0 + jal getchar +# was: jal getchar, $2 +# ori _read_charres_2_,$2,0 +# ori $2,_read_charres_2_,0 + addi $29, $29, 8 + lw $31, -4($29) + jr $31 +# Function read_string +read_string: + 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_3_,$2,0 + ori $3, $2, 0 +# was: ori _size_reg_9_, _param_n_3_, 0 + bgez $3, _safe_lab_10_ +# was: bgez _size_reg_9_, _safe_lab_10_ + ori $5, $0, 3 +# was: ori $5, $0, 3 + la $6, _Msg_IllegalArraySize_ +# was: la $6, _Msg_IllegalArraySize_ + j _RuntimeError_ +_safe_lab_10_: + ori $2, $28, 0 +# was: ori _arr_reg_6_, $28, 0 + sll $4, $3, 2 +# was: sll _tmp_16_, _size_reg_9_, 2 + addi $4, $4, 4 +# was: addi _tmp_16_, _tmp_16_, 4 + add $28, $28, $4 +# was: add $28, $28, _tmp_16_ + sw $3, 0($2) +# was: sw _size_reg_9_, 0(_arr_reg_6_) + addi $6, $2, 4 +# was: addi _addr_reg_11_, _arr_reg_6_, 4 + ori $5, $0, 0 +# was: ori _i_reg_12_, $0, 0 +_loop_beg_13_: + sub $4, $5, $3 +# was: sub _tmp_reg_15_, _i_reg_12_, _size_reg_9_ + bgez $4, _loop_end_14_ +# was: bgez _tmp_reg_15_, _loop_end_14_ + sw $5, 0($6) +# was: sw _i_reg_12_, 0(_addr_reg_11_) + addi $6, $6, 4 +# was: addi _addr_reg_11_, _addr_reg_11_, 4 + addi $5, $5, 1 +# was: addi _i_reg_12_, _i_reg_12_, 1 + j _loop_beg_13_ +_loop_end_14_: + lw $16, 0($2) +# was: lw _size_reg_5_, 0(_arr_reg_6_) + ori $17, $28, 0 +# was: ori _read_stringres_4_, $28, 0 + addi $3, $16, 3 +# was: addi _tmp_23_, _size_reg_5_, 3 + sra $3, $3, 2 +# was: sra _tmp_23_, _tmp_23_, 2 + sll $3, $3, 2 +# was: sll _tmp_23_, _tmp_23_, 2 + addi $3, $3, 4 +# was: addi _tmp_23_, _tmp_23_, 4 + add $28, $28, $3 +# was: add $28, $28, _tmp_23_ + sw $16, 0($17) +# was: sw _size_reg_5_, 0(_read_stringres_4_) + addi $18, $17, 4 +# was: addi _addr_reg_17_, _read_stringres_4_, 4 + ori $19, $0, 0 +# was: ori _i_reg_18_, $0, 0 + addi $20, $2, 4 +# was: addi _elem_reg_7_, _arr_reg_6_, 4 +_loop_beg_19_: + sub $2, $19, $16 +# was: sub _tmp_reg_21_, _i_reg_18_, _size_reg_5_ + bgez $2, _loop_end_20_ +# was: bgez _tmp_reg_21_, _loop_end_20_ + lw $2, 0($20) +# was: lw _res_reg_8_, 0(_elem_reg_7_) + addi $20, $20, 4 +# was: addi _elem_reg_7_, _elem_reg_7_, 4 +# ori $2,_res_reg_8_,0 + jal read_char +# was: jal read_char, $2 +# ori _tmp_reg_22_,$2,0 +# ori _res_reg_8_,_tmp_reg_22_,0 + sb $2, 0($18) +# was: sb _res_reg_8_, 0(_addr_reg_17_) + addi $18, $18, 1 +# was: addi _addr_reg_17_, _addr_reg_17_, 1 + addi $19, $19, 1 +# was: addi _i_reg_18_, _i_reg_18_, 1 + j _loop_beg_19_ +_loop_end_20_: + ori $2, $17, 0 +# was: ori $2, _read_stringres_4_, 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 add_one +add_one: + sw $31, -4($29) + addi $29, $29, -8 +# ori _param_x_24_,$2,0 +# ori _plus_L_26_,_param_x_24_,0 + ori $3, $0, 1 +# was: ori _plus_R_27_, $0, 1 + add $2, $2, $3 +# was: add _add_oneres_25_, _plus_L_26_, _plus_R_27_ +# ori $2,_add_oneres_25_,0 + addi $29, $29, 8 + lw $31, -4($29) + jr $31 # Function main main: sw $31, -4($29) @@ -28,224 +155,146 @@ main: addi $29, $29, -28 jal getint # was: jal getint, $2 -# ori _letBind_2_,$2,0 - ori $4, $2, 0 -# was: ori _size_reg_8_, _letBind_2_, 0 - bgez $4, _safe_lab_9_ -# was: bgez _size_reg_8_, _safe_lab_9_ - ori $5, $0, 3 -# was: ori $5, $0, 3 - la $6, _Msg_IllegalArraySize_ -# was: la $6, _Msg_IllegalArraySize_ - j _RuntimeError_ -_safe_lab_9_: - ori $3, $28, 0 -# was: ori _arr_reg_5_, $28, 0 - sll $5, $4, 2 -# was: sll _tmp_15_, _size_reg_8_, 2 - addi $5, $5, 4 -# was: addi _tmp_15_, _tmp_15_, 4 - add $28, $28, $5 -# was: add $28, $28, _tmp_15_ - sw $4, 0($3) -# was: sw _size_reg_8_, 0(_arr_reg_5_) - addi $5, $3, 4 -# was: addi _addr_reg_10_, _arr_reg_5_, 4 - ori $7, $0, 0 -# was: ori _i_reg_11_, $0, 0 -_loop_beg_12_: - sub $6, $7, $4 -# was: sub _tmp_reg_14_, _i_reg_11_, _size_reg_8_ - bgez $6, _loop_end_13_ -# was: bgez _tmp_reg_14_, _loop_end_13_ - sw $7, 0($5) -# was: sw _i_reg_11_, 0(_addr_reg_10_) - addi $5, $5, 4 -# was: addi _addr_reg_10_, _addr_reg_10_, 4 - addi $7, $7, 1 -# was: addi _i_reg_11_, _i_reg_11_, 1 - j _loop_beg_12_ -_loop_end_13_: - lw $17, 0($3) -# was: lw _size_reg_4_, 0(_arr_reg_5_) - ori $18, $28, 0 -# was: ori _letBind_3_, $28, 0 - addi $4, $17, 3 -# was: addi _tmp_22_, _size_reg_4_, 3 - sra $4, $4, 2 -# was: sra _tmp_22_, _tmp_22_, 2 - sll $4, $4, 2 -# was: sll _tmp_22_, _tmp_22_, 2 - addi $4, $4, 4 -# was: addi _tmp_22_, _tmp_22_, 4 - add $28, $28, $4 -# was: add $28, $28, _tmp_22_ - sw $17, 0($18) -# was: sw _size_reg_4_, 0(_letBind_3_) - addi $16, $18, 4 -# was: addi _addr_reg_16_, _letBind_3_, 4 - ori $19, $0, 0 -# was: ori _i_reg_17_, $0, 0 - addi $20, $3, 4 -# was: addi _elem_reg_6_, _arr_reg_5_, 4 -_loop_beg_18_: - sub $3, $19, $17 -# was: sub _tmp_reg_20_, _i_reg_17_, _size_reg_4_ - bgez $3, _loop_end_19_ -# was: bgez _tmp_reg_20_, _loop_end_19_ - lw $3, 0($20) -# was: lw _res_reg_7_, 0(_elem_reg_6_) - addi $20, $20, 4 -# was: addi _elem_reg_6_, _elem_reg_6_, 4 - jal getchar -# was: jal getchar, $2 -# ori _fun_arg_res_21_,$2,0 - ori $3, $2, 0 -# was: ori _res_reg_7_, _fun_arg_res_21_, 0 - sb $3, 0($16) -# was: sb _res_reg_7_, 0(_addr_reg_16_) - addi $16, $16, 1 -# was: addi _addr_reg_16_, _addr_reg_16_, 1 - addi $19, $19, 1 -# was: addi _i_reg_17_, _i_reg_17_, 1 - j _loop_beg_18_ -_loop_end_19_: - ori $2, $18, 0 -# was: ori _arr_reg_33_, _letBind_3_, 0 +# ori _letBind_29_,$2,0 +# ori _arg_31_,_letBind_29_,0 +# ori $2,_arg_31_,0 + jal read_string +# was: jal read_string, $2 +# ori _letBind_30_,$2,0 +# ori _arr_reg_42_,_letBind_30_,0 lw $18, 0($2) -# was: lw _size_reg_32_, 0(_arr_reg_33_) - ori $16, $28, 0 -# was: ori _arr_reg_29_, $28, 0 +# was: lw _size_reg_41_, 0(_arr_reg_42_) + ori $20, $28, 0 +# was: ori _arr_reg_38_, $28, 0 sll $3, $18, 2 -# was: sll _tmp_42_, _size_reg_32_, 2 +# was: sll _tmp_51_, _size_reg_41_, 2 addi $3, $3, 4 -# was: addi _tmp_42_, _tmp_42_, 4 +# was: addi _tmp_51_, _tmp_51_, 4 add $28, $28, $3 -# was: add $28, $28, _tmp_42_ - sw $18, 0($16) -# was: sw _size_reg_32_, 0(_arr_reg_29_) - addi $19, $16, 4 -# was: addi _addr_reg_36_, _arr_reg_29_, 4 - ori $17, $0, 0 -# was: ori _i_reg_37_, $0, 0 - addi $20, $2, 4 -# was: addi _elem_reg_34_, _arr_reg_33_, 4 -_loop_beg_38_: - sub $2, $17, $18 -# was: sub _tmp_reg_40_, _i_reg_37_, _size_reg_32_ - bgez $2, _loop_end_39_ -# was: bgez _tmp_reg_40_, _loop_end_39_ - lb $2, 0($20) -# was: lb _res_reg_35_, 0(_elem_reg_34_) - addi $20, $20, 1 -# was: addi _elem_reg_34_, _elem_reg_34_, 1 -# ori $2,_res_reg_35_,0 +# was: add $28, $28, _tmp_51_ + sw $18, 0($20) +# was: sw _size_reg_41_, 0(_arr_reg_38_) + addi $17, $20, 4 +# was: addi _addr_reg_45_, _arr_reg_38_, 4 + ori $16, $0, 0 +# was: ori _i_reg_46_, $0, 0 + addi $19, $2, 4 +# was: addi _elem_reg_43_, _arr_reg_42_, 4 +_loop_beg_47_: + sub $2, $16, $18 +# was: sub _tmp_reg_49_, _i_reg_46_, _size_reg_41_ + bgez $2, _loop_end_48_ +# was: bgez _tmp_reg_49_, _loop_end_48_ + lb $2, 0($19) +# was: lb _res_reg_44_, 0(_elem_reg_43_) + addi $19, $19, 1 +# was: addi _elem_reg_43_, _elem_reg_43_, 1 +# ori $2,_res_reg_44_,0 jal ord # was: jal ord, $2 -# ori _tmp_reg_41_,$2,0 -# ori _res_reg_35_,_tmp_reg_41_,0 - sw $2, 0($19) -# was: sw _res_reg_35_, 0(_addr_reg_36_) - addi $19, $19, 4 -# was: addi _addr_reg_36_, _addr_reg_36_, 4 - addi $17, $17, 1 -# was: addi _i_reg_37_, _i_reg_37_, 1 - j _loop_beg_38_ -_loop_end_39_: - lw $3, 0($16) -# was: lw _size_reg_28_, 0(_arr_reg_29_) - ori $2, $28, 0 -# was: ori _arr_reg_25_, $28, 0 - sll $4, $3, 2 -# was: sll _tmp_51_, _size_reg_28_, 2 - addi $4, $4, 4 -# was: addi _tmp_51_, _tmp_51_, 4 - add $28, $28, $4 -# was: add $28, $28, _tmp_51_ - sw $3, 0($2) -# was: sw _size_reg_28_, 0(_arr_reg_25_) - addi $5, $2, 4 -# was: addi _addr_reg_43_, _arr_reg_25_, 4 - ori $4, $0, 0 -# was: ori _i_reg_44_, $0, 0 - addi $6, $16, 4 -# was: addi _elem_reg_30_, _arr_reg_29_, 4 -_loop_beg_45_: - sub $7, $4, $3 -# was: sub _tmp_reg_47_, _i_reg_44_, _size_reg_28_ - bgez $7, _loop_end_46_ -# was: bgez _tmp_reg_47_, _loop_end_46_ - lw $8, 0($6) -# was: lw _res_reg_31_, 0(_elem_reg_30_) - addi $6, $6, 4 -# was: addi _elem_reg_30_, _elem_reg_30_, 4 -# ori _plus_L_49_,_res_reg_31_,0 - ori $7, $0, 1 -# was: ori _plus_R_50_, $0, 1 - add $8, $8, $7 -# was: add _fun_arg_res_48_, _plus_L_49_, _plus_R_50_ -# ori _res_reg_31_,_fun_arg_res_48_,0 - sw $8, 0($5) -# was: sw _res_reg_31_, 0(_addr_reg_43_) - addi $5, $5, 4 -# was: addi _addr_reg_43_, _addr_reg_43_, 4 - addi $4, $4, 1 -# was: addi _i_reg_44_, _i_reg_44_, 1 - j _loop_beg_45_ -_loop_end_46_: - lw $17, 0($2) -# was: lw _size_reg_24_, 0(_arr_reg_25_) +# ori _tmp_reg_50_,$2,0 +# ori _res_reg_44_,_tmp_reg_50_,0 + sw $2, 0($17) +# was: sw _res_reg_44_, 0(_addr_reg_45_) + addi $17, $17, 4 +# was: addi _addr_reg_45_, _addr_reg_45_, 4 + addi $16, $16, 1 +# was: addi _i_reg_46_, _i_reg_46_, 1 + j _loop_beg_47_ +_loop_end_48_: + lw $19, 0($20) +# was: lw _size_reg_37_, 0(_arr_reg_38_) ori $16, $28, 0 -# was: ori _letBind_23_, $28, 0 - addi $3, $17, 3 -# was: addi _tmp_58_, _size_reg_24_, 3 - sra $3, $3, 2 -# was: sra _tmp_58_, _tmp_58_, 2 - sll $3, $3, 2 -# was: sll _tmp_58_, _tmp_58_, 2 - addi $3, $3, 4 +# was: ori _arr_reg_34_, $28, 0 + sll $2, $19, 2 +# was: sll _tmp_58_, _size_reg_37_, 2 + addi $2, $2, 4 # was: addi _tmp_58_, _tmp_58_, 4 - add $28, $28, $3 + add $28, $28, $2 # was: add $28, $28, _tmp_58_ - sw $17, 0($16) -# was: sw _size_reg_24_, 0(_letBind_23_) + sw $19, 0($16) +# was: sw _size_reg_37_, 0(_arr_reg_34_) addi $18, $16, 4 -# was: addi _addr_reg_52_, _letBind_23_, 4 - ori $19, $0, 0 +# was: addi _addr_reg_52_, _arr_reg_34_, 4 + ori $17, $0, 0 # was: ori _i_reg_53_, $0, 0 - addi $20, $2, 4 -# was: addi _elem_reg_26_, _arr_reg_25_, 4 + addi $20, $20, 4 +# was: addi _elem_reg_39_, _arr_reg_38_, 4 _loop_beg_54_: - sub $2, $19, $17 -# was: sub _tmp_reg_56_, _i_reg_53_, _size_reg_24_ + sub $2, $17, $19 +# was: sub _tmp_reg_56_, _i_reg_53_, _size_reg_37_ bgez $2, _loop_end_55_ # was: bgez _tmp_reg_56_, _loop_end_55_ lw $2, 0($20) -# was: lw _res_reg_27_, 0(_elem_reg_26_) +# was: lw _res_reg_40_, 0(_elem_reg_39_) addi $20, $20, 4 -# was: addi _elem_reg_26_, _elem_reg_26_, 4 -# ori $2,_res_reg_27_,0 - jal chr -# was: jal chr, $2 +# was: addi _elem_reg_39_, _elem_reg_39_, 4 +# ori $2,_res_reg_40_,0 + jal add_one +# was: jal add_one, $2 # ori _tmp_reg_57_,$2,0 -# ori _res_reg_27_,_tmp_reg_57_,0 - sb $2, 0($18) -# was: sb _res_reg_27_, 0(_addr_reg_52_) - addi $18, $18, 1 -# was: addi _addr_reg_52_, _addr_reg_52_, 1 - addi $19, $19, 1 +# ori _res_reg_40_,_tmp_reg_57_,0 + sw $2, 0($18) +# was: sw _res_reg_40_, 0(_addr_reg_52_) + addi $18, $18, 4 +# was: addi _addr_reg_52_, _addr_reg_52_, 4 + addi $17, $17, 1 # was: addi _i_reg_53_, _i_reg_53_, 1 j _loop_beg_54_ _loop_end_55_: - ori $2, $16, 0 -# was: ori _tmp_59_, _letBind_23_, 0 + lw $18, 0($16) +# was: lw _size_reg_33_, 0(_arr_reg_34_) + ori $17, $28, 0 +# was: ori _letBind_32_, $28, 0 + addi $2, $18, 3 +# was: addi _tmp_65_, _size_reg_33_, 3 + sra $2, $2, 2 +# was: sra _tmp_65_, _tmp_65_, 2 + sll $2, $2, 2 +# was: sll _tmp_65_, _tmp_65_, 2 + addi $2, $2, 4 +# was: addi _tmp_65_, _tmp_65_, 4 + add $28, $28, $2 +# was: add $28, $28, _tmp_65_ + sw $18, 0($17) +# was: sw _size_reg_33_, 0(_letBind_32_) + addi $19, $17, 4 +# was: addi _addr_reg_59_, _letBind_32_, 4 + ori $20, $0, 0 +# was: ori _i_reg_60_, $0, 0 + addi $16, $16, 4 +# was: addi _elem_reg_35_, _arr_reg_34_, 4 +_loop_beg_61_: + sub $2, $20, $18 +# was: sub _tmp_reg_63_, _i_reg_60_, _size_reg_33_ + bgez $2, _loop_end_62_ +# was: bgez _tmp_reg_63_, _loop_end_62_ + lw $2, 0($16) +# was: lw _res_reg_36_, 0(_elem_reg_35_) + addi $16, $16, 4 +# was: addi _elem_reg_35_, _elem_reg_35_, 4 +# ori $2,_res_reg_36_,0 + jal chr +# was: jal chr, $2 +# ori _tmp_reg_64_,$2,0 +# ori _res_reg_36_,_tmp_reg_64_,0 + sb $2, 0($19) +# was: sb _res_reg_36_, 0(_addr_reg_59_) + addi $19, $19, 1 +# was: addi _addr_reg_59_, _addr_reg_59_, 1 + addi $20, $20, 1 +# was: addi _i_reg_60_, _i_reg_60_, 1 + j _loop_beg_61_ +_loop_end_62_: + ori $2, $17, 0 +# was: ori _tmp_66_, _letBind_32_, 0 ori $16, $2, 0 -# was: ori _mainres_1_, _tmp_59_, 0 -# ori $2,_tmp_59_,0 +# was: ori _mainres_28_, _tmp_66_, 0 +# ori $2,_tmp_66_,0 jal putstring # was: jal putstring, $2 ori $2, $16, 0 -# was: ori $2, _mainres_1_, 0 +# was: ori $2, _mainres_28_, 0 addi $29, $29, 28 lw $20, -24($29) lw $19, -20($29) diff --git a/tests/proj_figure3.asm b/tests/proj_figure3.asm index 2ea2684..202498c 100644 --- a/tests/proj_figure3.asm +++ b/tests/proj_figure3.asm @@ -17,184 +17,240 @@ _stop_: ori $2, $0, 10 syscall +# Function plus100 +plus100: + sw $31, -4($29) + addi $29, $29, -8 +# ori _param_x_1_,$2,0 +# ori _plus_L_3_,_param_x_1_,0 + ori $3, $0, 100 +# was: ori _plus_R_4_, $0, 100 + add $2, $2, $3 +# was: add _plus100res_2_, _plus_L_3_, _plus_R_4_ +# ori $2,_plus100res_2_,0 + addi $29, $29, 8 + lw $31, -4($29) + jr $31 +# Function plus +plus: + sw $31, -4($29) + addi $29, $29, -8 +# ori _param_x_5_,$2,0 +# ori _param_y_6_,$3,0 +# ori _plus_L_8_,_param_x_5_,0 +# ori _plus_R_9_,_param_y_6_,0 + add $2, $2, $3 +# was: add _plusres_7_, _plus_L_8_, _plus_R_9_ +# ori $2,_plusres_7_,0 + addi $29, $29, 8 + lw $31, -4($29) + jr $31 # Function main main: 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, -28 + addi $29, $29, -32 jal getint # was: jal getint, $2 -# ori _letBind_2_,$2,0 - ori $3, $2, 0 -# was: ori _size_reg_4_, _letBind_2_, 0 - bgez $3, _safe_lab_5_ -# was: bgez _size_reg_4_, _safe_lab_5_ +# ori _letBind_11_,$2,0 +# ori _size_reg_13_,_letBind_11_,0 + bgez $2, _safe_lab_14_ +# was: bgez _size_reg_13_, _safe_lab_14_ ori $5, $0, 6 # was: ori $5, $0, 6 la $6, _Msg_IllegalArraySize_ # was: la $6, _Msg_IllegalArraySize_ j _RuntimeError_ -_safe_lab_5_: - ori $6, $28, 0 -# was: ori _letBind_3_, $28, 0 - sll $2, $3, 2 -# was: sll _tmp_11_, _size_reg_4_, 2 - addi $2, $2, 4 -# was: addi _tmp_11_, _tmp_11_, 4 - add $28, $28, $2 -# was: add $28, $28, _tmp_11_ - sw $3, 0($6) -# was: sw _size_reg_4_, 0(_letBind_3_) - addi $5, $6, 4 -# was: addi _addr_reg_6_, _letBind_3_, 4 - ori $4, $0, 0 -# was: ori _i_reg_7_, $0, 0 -_loop_beg_8_: - sub $2, $4, $3 -# was: sub _tmp_reg_10_, _i_reg_7_, _size_reg_4_ - bgez $2, _loop_end_9_ -# was: bgez _tmp_reg_10_, _loop_end_9_ - sw $4, 0($5) -# was: sw _i_reg_7_, 0(_addr_reg_6_) - addi $5, $5, 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 _arr_reg_14_,_letBind_3_,0 - lw $2, 0($6) -# was: lw _size_reg_13_, 0(_arr_reg_14_) - ori $3, $28, 0 +_safe_lab_14_: + ori $20, $28, 0 # was: ori _letBind_12_, $28, 0 - sll $4, $2, 2 -# was: sll _tmp_25_, _size_reg_13_, 2 - addi $4, $4, 4 -# was: addi _tmp_25_, _tmp_25_, 4 - add $28, $28, $4 -# was: add $28, $28, _tmp_25_ - sw $2, 0($3) + sll $3, $2, 2 +# was: sll _tmp_20_, _size_reg_13_, 2 + addi $3, $3, 4 +# was: addi _tmp_20_, _tmp_20_, 4 + add $28, $28, $3 +# was: add $28, $28, _tmp_20_ + sw $2, 0($20) # was: sw _size_reg_13_, 0(_letBind_12_) - addi $5, $3, 4 -# was: addi _addr_reg_17_, _letBind_12_, 4 - ori $4, $0, 0 -# was: ori _i_reg_18_, $0, 0 - addi $6, $6, 4 -# was: addi _elem_reg_15_, _arr_reg_14_, 4 -_loop_beg_19_: - sub $7, $4, $2 -# was: sub _tmp_reg_21_, _i_reg_18_, _size_reg_13_ - bgez $7, _loop_end_20_ -# was: bgez _tmp_reg_21_, _loop_end_20_ - lw $7, 0($6) -# was: lw _res_reg_16_, 0(_elem_reg_15_) - addi $6, $6, 4 -# was: addi _elem_reg_15_, _elem_reg_15_, 4 - ori $8, $7, 0 -# was: ori _plus_L_23_, _res_reg_16_, 0 - ori $7, $0, 100 -# was: ori _plus_R_24_, $0, 100 - add $7, $8, $7 -# was: add _fun_arg_res_22_, _plus_L_23_, _plus_R_24_ -# ori _res_reg_16_,_fun_arg_res_22_,0 - sw $7, 0($5) -# was: sw _res_reg_16_, 0(_addr_reg_17_) + addi $5, $20, 4 +# was: addi _addr_reg_15_, _letBind_12_, 4 + ori $3, $0, 0 +# was: ori _i_reg_16_, $0, 0 +_loop_beg_17_: + sub $4, $3, $2 +# was: sub _tmp_reg_19_, _i_reg_16_, _size_reg_13_ + bgez $4, _loop_end_18_ +# was: bgez _tmp_reg_19_, _loop_end_18_ + sw $3, 0($5) +# was: sw _i_reg_16_, 0(_addr_reg_15_) addi $5, $5, 4 -# was: addi _addr_reg_17_, _addr_reg_17_, 4 - addi $4, $4, 1 -# was: addi _i_reg_18_, _i_reg_18_, 1 - j _loop_beg_19_ -_loop_end_20_: -# ori _arr_reg_28_,_letBind_12_,0 - lw $17, 0($3) -# was: lw _size_reg_27_, 0(_arr_reg_28_) +# was: addi _addr_reg_15_, _addr_reg_15_, 4 + addi $3, $3, 1 +# was: addi _i_reg_16_, _i_reg_16_, 1 + j _loop_beg_17_ +_loop_end_18_: +# ori _arr_reg_23_,_letBind_12_,0 + lw $17, 0($20) +# was: lw _size_reg_22_, 0(_arr_reg_23_) ori $16, $28, 0 -# was: ori _letBind_26_, $28, 0 - addi $2, $17, 3 -# was: addi _tmp_37_, _size_reg_27_, 3 - sra $2, $2, 2 -# was: sra _tmp_37_, _tmp_37_, 2 - sll $2, $2, 2 -# was: sll _tmp_37_, _tmp_37_, 2 +# was: ori _letBind_21_, $28, 0 + sll $2, $17, 2 +# was: sll _tmp_32_, _size_reg_22_, 2 addi $2, $2, 4 -# was: addi _tmp_37_, _tmp_37_, 4 +# was: addi _tmp_32_, _tmp_32_, 4 add $28, $28, $2 -# was: add $28, $28, _tmp_37_ +# was: add $28, $28, _tmp_32_ sw $17, 0($16) -# was: sw _size_reg_27_, 0(_letBind_26_) +# was: sw _size_reg_22_, 0(_letBind_21_) addi $19, $16, 4 -# was: addi _addr_reg_31_, _letBind_26_, 4 +# was: addi _addr_reg_26_, _letBind_21_, 4 ori $18, $0, 0 -# was: ori _i_reg_32_, $0, 0 - addi $20, $3, 4 -# was: addi _elem_reg_29_, _arr_reg_28_, 4 -_loop_beg_33_: +# was: ori _i_reg_27_, $0, 0 + addi $21, $20, 4 +# was: addi _elem_reg_24_, _arr_reg_23_, 4 +_loop_beg_28_: sub $2, $18, $17 -# was: sub _tmp_reg_35_, _i_reg_32_, _size_reg_27_ - bgez $2, _loop_end_34_ -# was: bgez _tmp_reg_35_, _loop_end_34_ - lw $2, 0($20) -# was: lw _res_reg_30_, 0(_elem_reg_29_) +# was: sub _tmp_reg_30_, _i_reg_27_, _size_reg_22_ + bgez $2, _loop_end_29_ +# was: bgez _tmp_reg_30_, _loop_end_29_ + lw $2, 0($21) +# was: lw _res_reg_25_, 0(_elem_reg_24_) + addi $21, $21, 4 +# was: addi _elem_reg_24_, _elem_reg_24_, 4 +# ori $2,_res_reg_25_,0 + jal plus100 +# was: jal plus100, $2 +# ori _tmp_reg_31_,$2,0 +# ori _res_reg_25_,_tmp_reg_31_,0 + sw $2, 0($19) +# was: sw _res_reg_25_, 0(_addr_reg_26_) + addi $19, $19, 4 +# was: addi _addr_reg_26_, _addr_reg_26_, 4 + addi $18, $18, 1 +# was: addi _i_reg_27_, _i_reg_27_, 1 + j _loop_beg_28_ +_loop_end_29_: +# ori _arr_reg_34_,_letBind_12_,0 + lw $17, 0($20) +# was: lw _size_reg_35_, 0(_arr_reg_34_) + ori $2, $0, 0 +# was: ori _letBind_33_, $0, 0 addi $20, $20, 4 -# was: addi _elem_reg_29_, _elem_reg_29_, 4 -# ori $2,_res_reg_30_,0 +# was: addi _arr_reg_34_, _arr_reg_34_, 4 + ori $18, $0, 0 +# was: ori _ind_var_36_, $0, 0 +_loop_beg_38_: + sub $3, $18, $17 +# was: sub _tmp_reg_37_, _ind_var_36_, _size_reg_35_ + bgez $3, _loop_end_39_ +# was: bgez _tmp_reg_37_, _loop_end_39_ + lw $3, 0($20) +# was: lw _tmp_reg_37_, 0(_arr_reg_34_) + addi $20, $20, 4 +# was: addi _arr_reg_34_, _arr_reg_34_, 4 +# ori $2,_letBind_33_,0 +# ori $3,_tmp_reg_37_,0 + jal plus +# was: jal plus, $2 $3 +# ori _tmp_reg_40_,$2,0 +# ori _letBind_33_,_tmp_reg_40_,0 + addi $18, $18, 1 +# was: addi _ind_var_36_, _ind_var_36_, 1 + j _loop_beg_38_ +_loop_end_39_: + ori $2, $16, 0 +# was: ori _arr_reg_43_, _letBind_21_, 0 + lw $16, 0($2) +# was: lw _size_reg_42_, 0(_arr_reg_43_) + ori $17, $28, 0 +# was: ori _letBind_41_, $28, 0 + addi $3, $16, 3 +# was: addi _tmp_52_, _size_reg_42_, 3 + sra $3, $3, 2 +# was: sra _tmp_52_, _tmp_52_, 2 + sll $3, $3, 2 +# was: sll _tmp_52_, _tmp_52_, 2 + addi $3, $3, 4 +# was: addi _tmp_52_, _tmp_52_, 4 + add $28, $28, $3 +# was: add $28, $28, _tmp_52_ + sw $16, 0($17) +# was: sw _size_reg_42_, 0(_letBind_41_) + addi $18, $17, 4 +# was: addi _addr_reg_46_, _letBind_41_, 4 + ori $19, $0, 0 +# was: ori _i_reg_47_, $0, 0 + addi $20, $2, 4 +# was: addi _elem_reg_44_, _arr_reg_43_, 4 +_loop_beg_48_: + sub $2, $19, $16 +# was: sub _tmp_reg_50_, _i_reg_47_, _size_reg_42_ + bgez $2, _loop_end_49_ +# was: bgez _tmp_reg_50_, _loop_end_49_ + lw $2, 0($20) +# was: lw _res_reg_45_, 0(_elem_reg_44_) + addi $20, $20, 4 +# was: addi _elem_reg_44_, _elem_reg_44_, 4 +# ori $2,_res_reg_45_,0 jal chr # was: jal chr, $2 -# ori _tmp_reg_36_,$2,0 -# ori _res_reg_30_,_tmp_reg_36_,0 - sb $2, 0($19) -# was: sb _res_reg_30_, 0(_addr_reg_31_) - addi $19, $19, 1 -# was: addi _addr_reg_31_, _addr_reg_31_, 1 +# ori _tmp_reg_51_,$2,0 +# ori _res_reg_45_,_tmp_reg_51_,0 + sb $2, 0($18) +# was: sb _res_reg_45_, 0(_addr_reg_46_) addi $18, $18, 1 -# was: addi _i_reg_32_, _i_reg_32_, 1 - j _loop_beg_33_ -_loop_end_34_: +# was: addi _addr_reg_46_, _addr_reg_46_, 1 + addi $19, $19, 1 +# was: addi _i_reg_47_, _i_reg_47_, 1 + j _loop_beg_48_ +_loop_end_49_: ori $2, $0, 1 -# was: ori _arr_ind_41_, $0, 1 - addi $3, $16, 4 -# was: addi _arr_reg_42_, _letBind_26_, 4 - lw $4, 0($16) -# was: lw _size_reg_43_, 0(_letBind_26_) - bgez $2, _safe_lab_46_ -# was: bgez _arr_ind_41_, _safe_lab_46_ -_error_lab_45_: +# was: ori _arr_ind_56_, $0, 1 + addi $3, $17, 4 +# was: addi _arr_reg_57_, _letBind_41_, 4 + lw $4, 0($17) +# was: lw _size_reg_58_, 0(_letBind_41_) + bgez $2, _safe_lab_61_ +# was: bgez _arr_ind_56_, _safe_lab_61_ +_error_lab_60_: ori $5, $0, 10 # was: ori $5, $0, 10 la $6, _Msg_IllegalIndex_ # was: la $6, _Msg_IllegalIndex_ j _RuntimeError_ -_safe_lab_46_: +_safe_lab_61_: sub $4, $2, $4 -# was: sub _tmp_reg_44_, _arr_ind_41_, _size_reg_43_ - bgez $4, _error_lab_45_ -# was: bgez _tmp_reg_44_, _error_lab_45_ +# was: sub _tmp_reg_59_, _arr_ind_56_, _size_reg_58_ + bgez $4, _error_lab_60_ +# was: bgez _tmp_reg_59_, _error_lab_60_ add $3, $3, $2 -# was: add _arr_reg_42_, _arr_reg_42_, _arr_ind_41_ +# was: add _arr_reg_57_, _arr_reg_57_, _arr_ind_56_ lb $2, 0($3) -# was: lb _arg_40_, 0(_arr_reg_42_) -# ori $2,_arg_40_,0 +# was: lb _arg_55_, 0(_arr_reg_57_) +# ori $2,_arg_55_,0 jal ord # was: jal ord, $2 -# ori _tmp_39_,$2,0 -# ori _letBind_38_,_tmp_39_,0 -# ori $2,_letBind_38_,0 +# ori _tmp_54_,$2,0 +# ori _letBind_53_,_tmp_54_,0 +# ori $2,_letBind_53_,0 jal putint # was: jal putint, $2 - ori $2, $16, 0 -# was: ori _tmp_47_, _letBind_26_, 0 + ori $2, $17, 0 +# was: ori _tmp_62_, _letBind_41_, 0 ori $16, $2, 0 -# was: ori _mainres_1_, _tmp_47_, 0 -# ori $2,_tmp_47_,0 +# was: ori _mainres_10_, _tmp_62_, 0 +# ori $2,_tmp_62_,0 jal putstring # was: jal putstring, $2 ori $2, $16, 0 -# was: ori $2, _mainres_1_, 0 - addi $29, $29, 28 +# was: ori $2, _mainres_10_, 0 + addi $29, $29, 32 + lw $21, -28($29) lw $20, -24($29) lw $19, -20($29) lw $18, -16($29) diff --git a/tests/reduce.asm b/tests/reduce.asm index aa4f5ab..4323dc3 100644 --- a/tests/reduce.asm +++ b/tests/reduce.asm @@ -17,79 +17,98 @@ _stop_: ori $2, $0, 10 syscall +# Function incr +incr: + sw $31, -4($29) + addi $29, $29, -8 +# ori _param_a_1_,$2,0 +# ori _param_b_2_,$3,0 +# ori _plus_L_4_,_param_a_1_,0 +# ori _plus_R_5_,_param_b_2_,0 + add $2, $2, $3 +# was: add _incrres_3_, _plus_L_4_, _plus_R_5_ +# ori $2,_incrres_3_,0 + addi $29, $29, 8 + lw $31, -4($29) + jr $31 # Function main main: sw $31, -4($29) + sw $18, -16($29) + sw $17, -12($29) sw $16, -8($29) - addi $29, $29, -12 - ori $4, $0, 3 -# was: ori _size_reg_9_, $0, 3 - ori $2, $28, 0 -# was: ori _arr_reg_3_, $28, 0 - sll $3, $4, 2 -# was: sll _tmp_12_, _size_reg_9_, 2 - addi $3, $3, 4 -# was: addi _tmp_12_, _tmp_12_, 4 - add $28, $28, $3 -# was: add $28, $28, _tmp_12_ - sw $4, 0($2) -# was: sw _size_reg_9_, 0(_arr_reg_3_) - addi $4, $2, 4 -# was: addi _addr_reg_10_, _arr_reg_3_, 4 - ori $3, $0, 1 -# was: ori _tmp_reg_11_, $0, 1 - sw $3, 0($4) -# was: sw _tmp_reg_11_, 0(_addr_reg_10_) - addi $4, $4, 4 -# was: addi _addr_reg_10_, _addr_reg_10_, 4 - ori $3, $0, 2 -# was: ori _tmp_reg_11_, $0, 2 - sw $3, 0($4) -# was: sw _tmp_reg_11_, 0(_addr_reg_10_) - addi $4, $4, 4 -# was: addi _addr_reg_10_, _addr_reg_10_, 4 + addi $29, $29, -20 ori $3, $0, 3 -# was: ori _tmp_reg_11_, $0, 3 - sw $3, 0($4) -# was: sw _tmp_reg_11_, 0(_addr_reg_10_) - addi $4, $4, 4 -# was: addi _addr_reg_10_, _addr_reg_10_, 4 - lw $3, 0($2) -# was: lw _size_reg_4_, 0(_arr_reg_3_) - ori $6, $0, 0 -# was: ori _letBind_2_, $0, 0 +# was: ori _size_reg_14_, $0, 3 + ori $16, $28, 0 +# was: ori _arr_reg_8_, $28, 0 + sll $2, $3, 2 +# was: sll _tmp_17_, _size_reg_14_, 2 addi $2, $2, 4 -# was: addi _arr_reg_3_, _arr_reg_3_, 4 - ori $4, $0, 0 -# was: ori _ind_var_5_, $0, 0 -_loop_beg_7_: - sub $5, $4, $3 -# was: sub _tmp_reg_6_, _ind_var_5_, _size_reg_4_ - bgez $5, _loop_end_8_ -# was: bgez _tmp_reg_6_, _loop_end_8_ - lw $5, 0($2) -# was: lw _tmp_reg_6_, 0(_arr_reg_3_) - addi $2, $2, 4 -# was: addi _arr_reg_3_, _arr_reg_3_, 4 -# ori _plus_L_14_,_letBind_2_,0 -# ori _plus_R_15_,_tmp_reg_6_,0 - add $6, $6, $5 -# was: add _fun_arg_res_13_, _plus_L_14_, _plus_R_15_ -# ori _letBind_2_,_fun_arg_res_13_,0 - addi $4, $4, 1 -# was: addi _ind_var_5_, _ind_var_5_, 1 - j _loop_beg_7_ -_loop_end_8_: -# ori _tmp_16_,_letBind_2_,0 - ori $16, $6, 0 -# was: ori _mainres_1_, _tmp_16_, 0 +# was: addi _tmp_17_, _tmp_17_, 4 + add $28, $28, $2 +# was: add $28, $28, _tmp_17_ + sw $3, 0($16) +# was: sw _size_reg_14_, 0(_arr_reg_8_) + addi $3, $16, 4 +# was: addi _addr_reg_15_, _arr_reg_8_, 4 + ori $2, $0, 1 +# was: ori _tmp_reg_16_, $0, 1 + sw $2, 0($3) +# was: sw _tmp_reg_16_, 0(_addr_reg_15_) + addi $3, $3, 4 +# was: addi _addr_reg_15_, _addr_reg_15_, 4 + ori $2, $0, 2 +# was: ori _tmp_reg_16_, $0, 2 + sw $2, 0($3) +# was: sw _tmp_reg_16_, 0(_addr_reg_15_) + addi $3, $3, 4 +# was: addi _addr_reg_15_, _addr_reg_15_, 4 + ori $2, $0, 3 +# was: ori _tmp_reg_16_, $0, 3 + sw $2, 0($3) +# was: sw _tmp_reg_16_, 0(_addr_reg_15_) + addi $3, $3, 4 +# was: addi _addr_reg_15_, _addr_reg_15_, 4 + lw $17, 0($16) +# was: lw _size_reg_9_, 0(_arr_reg_8_) + ori $2, $0, 0 +# was: ori _letBind_7_, $0, 0 + addi $16, $16, 4 +# was: addi _arr_reg_8_, _arr_reg_8_, 4 + ori $18, $0, 0 +# was: ori _ind_var_10_, $0, 0 +_loop_beg_12_: + sub $3, $18, $17 +# was: sub _tmp_reg_11_, _ind_var_10_, _size_reg_9_ + bgez $3, _loop_end_13_ +# was: bgez _tmp_reg_11_, _loop_end_13_ + lw $3, 0($16) +# was: lw _tmp_reg_11_, 0(_arr_reg_8_) + addi $16, $16, 4 +# was: addi _arr_reg_8_, _arr_reg_8_, 4 +# ori $2,_letBind_7_,0 +# ori $3,_tmp_reg_11_,0 + jal incr +# was: jal incr, $2 $3 +# ori _tmp_reg_18_,$2,0 +# ori _letBind_7_,_tmp_reg_18_,0 + addi $18, $18, 1 +# was: addi _ind_var_10_, _ind_var_10_, 1 + j _loop_beg_12_ +_loop_end_13_: +# ori _tmp_19_,_letBind_7_,0 + ori $16, $2, 0 +# was: ori _mainres_6_, _tmp_19_, 0 ori $2, $16, 0 -# was: ori $2, _mainres_1_, 0 +# was: ori $2, _mainres_6_, 0 jal putint # was: jal putint, $2 ori $2, $16, 0 -# was: ori $2, _mainres_1_, 0 - addi $29, $29, 12 +# was: ori $2, _mainres_6_, 0 + addi $29, $29, 20 + lw $18, -16($29) + lw $17, -12($29) lw $16, -8($29) lw $31, -4($29) jr $31