This commit is contained in:
NikolajDanger committed 2022-05-18 13:25:57 +02:00
1 parent 8e3427a843
commit f0fda0bcd7
11 files changed
+7155 -920

No files matched your search

+3
View File
@@ -0,0 +1,3 @@
.vscode
Fasto/bin/*
Fasto/obj/*
+267
View File
@@ -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"
+887
View File
@@ -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;Line truncated
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 :?> _
+101
View File
@@ -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)
File diff suppressed because it is too large. Load diff
+284 -157
View File
@@ -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)
+181 -152
View File
@@ -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
+279 -222
View File
@@ -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
+243 -194
View File
@@ -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)
+188 -132
View File
@@ -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)
+82 -63
View File
@@ -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