module FslexFsyacc.Expr.ExprData
open FslexFsyacc
open FslexFsyacc.ItemCores
open FslexFsyacc.YACCs
open FslexFsyacc.BNFs
open FslexFsyacc.Precedences

let inputProductionList = [["expr";"expr";"+";"expr"];["expr";"expr";"-";"expr"];["expr";"expr";"*";"expr"];["expr";"expr";"/";"expr"];["expr";"(";"expr";")"];["expr";"-";"expr"];["expr";"NUMBER"]]
let mainProductions = set [["expr";"(";"expr";")"];["expr";"-";"expr"];["expr";"NUMBER"];["expr";"expr";"*";"expr"];["expr";"expr";"+";"expr"];["expr";"expr";"-";"expr"];["expr";"expr";"/";"expr"]]
let augmentedProductions = set [["";"expr"];["expr";"(";"expr";")"];["expr";"-";"expr"];["expr";"NUMBER"];["expr";"expr";"*";"expr"];["expr";"expr";"+";"expr"];["expr";"expr";"-";"expr"];["expr";"expr";"/";"expr"]]
let symbols = set ["(";")";"*";"+";"-";"/";"NUMBER";"expr"]
let nonterminals = set ["expr"]
let terminals = set ["(";")";"*";"+";"-";"/";"NUMBER"]
let nullables = Set.empty
let firsts = Map ["expr",set ["(";"-";"NUMBER"]]
let lasts = Map ["expr",set [")";"NUMBER"]]
let follows = Map ["(",set ["(";"-";"NUMBER"];")",set ["";")";"*";"+";"-";"/"];"*",set ["(";"-";"NUMBER"];"+",set ["(";"-";"NUMBER"];"-",set ["(";"-";"NUMBER"];"/",set ["(";"-";"NUMBER"];"NUMBER",set ["";")";"*";"+";"-";"/"];"expr",set ["";")";"*";"+";"-";"/"]]
let precedes = Map ["(",set ["";"(";"*";"+";"-";"/"];")",set [")";"NUMBER"];"*",set [")";"NUMBER"];"+",set [")";"NUMBER"];"-",set ["";"(";")";"*";"+";"-";"/";"NUMBER"];"/",set [")";"NUMBER"];"NUMBER",set ["";"(";"*";"+";"-";"/"];"expr",set ["";"(";"*";"+";"-";"/"]]
let itemCores = set [{production= ["";"expr"];dot= 0};{production= ["";"expr"];dot= 1};{production= ["expr";"(";"expr";")"];dot= 0};{production= ["expr";"(";"expr";")"];dot= 1};{production= ["expr";"(";"expr";")"];dot= 2};{production= ["expr";"(";"expr";")"];dot= 3};{production= ["expr";"-";"expr"];dot= 0};{production= ["expr";"-";"expr"];dot= 1};{production= ["expr";"-";"expr"];dot= 2};{production= ["expr";"NUMBER"];dot= 0};{production= ["expr";"NUMBER"];dot= 1};{production= ["expr";"expr";"*";"expr"];dot= 0};{production= ["expr";"expr";"*";"expr"];dot= 1};{production= ["expr";"expr";"*";"expr"];dot= 2};{production= ["expr";"expr";"*";"expr"];dot= 3};{production= ["expr";"expr";"+";"expr"];dot= 0};{production= ["expr";"expr";"+";"expr"];dot= 1};{production= ["expr";"expr";"+";"expr"];dot= 2};{production= ["expr";"expr";"+";"expr"];dot= 3};{production= ["expr";"expr";"-";"expr"];dot= 0};{production= ["expr";"expr";"-";"expr"];dot= 1};{production= ["expr";"expr";"-";"expr"];dot= 2};{production= ["expr";"expr";"-";"expr"];dot= 3};{production= ["expr";"expr";"/";"expr"];dot= 0};{production= ["expr";"expr";"/";"expr"];dot= 1};{production= ["expr";"expr";"/";"expr"];dot= 2};{production= ["expr";"expr";"/";"expr"];dot= 3}]
let itemCoreAttributes = Map [{production= ["";"expr"];dot= 0},(true,Set.empty);{production= ["expr";"(";"expr";")"];dot= 1},(false,set [")"]);{production= ["expr";"-";"expr"];dot= 1},(true,Set.empty);{production= ["expr";"expr";"*";"expr"];dot= 0},(false,set ["*"]);{production= ["expr";"expr";"*";"expr"];dot= 2},(true,Set.empty);{production= ["expr";"expr";"+";"expr"];dot= 0},(false,set ["+"]);{production= ["expr";"expr";"+";"expr"];dot= 2},(true,Set.empty);{production= ["expr";"expr";"-";"expr"];dot= 0},(false,set ["-"]);{production= ["expr";"expr";"-";"expr"];dot= 2},(true,Set.empty);{production= ["expr";"expr";"/";"expr"];dot= 0},(false,set ["/"]);{production= ["expr";"expr";"/";"expr"];dot= 2},(true,Set.empty)]
let kernels = set [set [{production= ["";"expr"];dot= 0}];set [{production= ["";"expr"];dot= 1};{production= ["expr";"expr";"*";"expr"];dot= 1};{production= ["expr";"expr";"+";"expr"];dot= 1};{production= ["expr";"expr";"-";"expr"];dot= 1};{production= ["expr";"expr";"/";"expr"];dot= 1}];set [{production= ["expr";"(";"expr";")"];dot= 1}];set [{production= ["expr";"(";"expr";")"];dot= 2};{production= ["expr";"expr";"*";"expr"];dot= 1};{production= ["expr";"expr";"+";"expr"];dot= 1};{production= ["expr";"expr";"-";"expr"];dot= 1};{production= ["expr";"expr";"/";"expr"];dot= 1}];set [{production= ["expr";"(";"expr";")"];dot= 3}];set [{production= ["expr";"-";"expr"];dot= 1}];set [{production= ["expr";"-";"expr"];dot= 2};{production= ["expr";"expr";"*";"expr"];dot= 1};{production= ["expr";"expr";"+";"expr"];dot= 1};{production= ["expr";"expr";"-";"expr"];dot= 1};{production= ["expr";"expr";"/";"expr"];dot= 1}];set [{production= ["expr";"NUMBER"];dot= 1}];set [{production= ["expr";"expr";"*";"expr"];dot= 1};{production= ["expr";"expr";"*";"expr"];dot= 3};{production= ["expr";"expr";"+";"expr"];dot= 1};{production= ["expr";"expr";"-";"expr"];dot= 1};{production= ["expr";"expr";"/";"expr"];dot= 1}];set [{production= ["expr";"expr";"*";"expr"];dot= 1};{production= ["expr";"expr";"+";"expr"];dot= 1};{production= ["expr";"expr";"+";"expr"];dot= 3};{production= ["expr";"expr";"-";"expr"];dot= 1};{production= ["expr";"expr";"/";"expr"];dot= 1}];set [{production= ["expr";"expr";"*";"expr"];dot= 1};{production= ["expr";"expr";"+";"expr"];dot= 1};{production= ["expr";"expr";"-";"expr"];dot= 1};{production= ["expr";"expr";"-";"expr"];dot= 3};{production= ["expr";"expr";"/";"expr"];dot= 1}];set [{production= ["expr";"expr";"*";"expr"];dot= 1};{production= ["expr";"expr";"+";"expr"];dot= 1};{production= ["expr";"expr";"-";"expr"];dot= 1};{production= ["expr";"expr";"/";"expr"];dot= 1};{production= ["expr";"expr";"/";"expr"];dot= 3}];set [{production= ["expr";"expr";"*";"expr"];dot= 2}];set [{production= ["expr";"expr";"+";"expr"];dot= 2}];set [{production= ["expr";"expr";"-";"expr"];dot= 2}];set [{production= ["expr";"expr";"/";"expr"];dot= 2}]]
let closures = [set ["(",{production= ["expr";"(";"expr";")"];dot= 0};"-",{production= ["expr";"-";"expr"];dot= 0};"NUMBER",{production= ["expr";"NUMBER"];dot= 0};"expr",{production= ["";"expr"];dot= 0};"expr",{production= ["expr";"expr";"*";"expr"];dot= 0};"expr",{production= ["expr";"expr";"+";"expr"];dot= 0};"expr",{production= ["expr";"expr";"-";"expr"];dot= 0};"expr",{production= ["expr";"expr";"/";"expr"];dot= 0}];set ["",{production= ["";"expr"];dot= 1};"*",{production= ["expr";"expr";"*";"expr"];dot= 1};"+",{production= ["expr";"expr";"+";"expr"];dot= 1};"-",{production= ["expr";"expr";"-";"expr"];dot= 1};"/",{production= ["expr";"expr";"/";"expr"];dot= 1}];set ["(",{production= ["expr";"(";"expr";")"];dot= 0};"-",{production= ["expr";"-";"expr"];dot= 0};"NUMBER",{production= ["expr";"NUMBER"];dot= 0};"expr",{production= ["expr";"(";"expr";")"];dot= 1};"expr",{production= ["expr";"expr";"*";"expr"];dot= 0};"expr",{production= ["expr";"expr";"+";"expr"];dot= 0};"expr",{production= ["expr";"expr";"-";"expr"];dot= 0};"expr",{production= ["expr";"expr";"/";"expr"];dot= 0}];set [")",{production= ["expr";"(";"expr";")"];dot= 2};"*",{production= ["expr";"expr";"*";"expr"];dot= 1};"+",{production= ["expr";"expr";"+";"expr"];dot= 1};"-",{production= ["expr";"expr";"-";"expr"];dot= 1};"/",{production= ["expr";"expr";"/";"expr"];dot= 1}];set ["",{production= ["expr";"(";"expr";")"];dot= 3};")",{production= ["expr";"(";"expr";")"];dot= 3};"*",{production= ["expr";"(";"expr";")"];dot= 3};"+",{production= ["expr";"(";"expr";")"];dot= 3};"-",{production= ["expr";"(";"expr";")"];dot= 3};"/",{production= ["expr";"(";"expr";")"];dot= 3}];set ["(",{production= ["expr";"(";"expr";")"];dot= 0};"-",{production= ["expr";"-";"expr"];dot= 0};"NUMBER",{production= ["expr";"NUMBER"];dot= 0};"expr",{production= ["expr";"-";"expr"];dot= 1};"expr",{production= ["expr";"expr";"*";"expr"];dot= 0};"expr",{production= ["expr";"expr";"+";"expr"];dot= 0};"expr",{production= ["expr";"expr";"-";"expr"];dot= 0};"expr",{production= ["expr";"expr";"/";"expr"];dot= 0}];set ["",{production= ["expr";"-";"expr"];dot= 2};")",{production= ["expr";"-";"expr"];dot= 2};"*",{production= ["expr";"-";"expr"];dot= 2};"*",{production= ["expr";"expr";"*";"expr"];dot= 1};"+",{production= ["expr";"-";"expr"];dot= 2};"+",{production= ["expr";"expr";"+";"expr"];dot= 1};"-",{production= ["expr";"-";"expr"];dot= 2};"-",{production= ["expr";"expr";"-";"expr"];dot= 1};"/",{production= ["expr";"-";"expr"];dot= 2};"/",{production= ["expr";"expr";"/";"expr"];dot= 1}];set ["",{production= ["expr";"NUMBER"];dot= 1};")",{production= ["expr";"NUMBER"];dot= 1};"*",{production= ["expr";"NUMBER"];dot= 1};"+",{production= ["expr";"NUMBER"];dot= 1};"-",{production= ["expr";"NUMBER"];dot= 1};"/",{production= ["expr";"NUMBER"];dot= 1}];set ["",{production= ["expr";"expr";"*";"expr"];dot= 3};")",{production= ["expr";"expr";"*";"expr"];dot= 3};"*",{production= ["expr";"expr";"*";"expr"];dot= 1};"*",{production= ["expr";"expr";"*";"expr"];dot= 3};"+",{production= ["expr";"expr";"*";"expr"];dot= 3};"+",{production= ["expr";"expr";"+";"expr"];dot= 1};"-",{production= ["expr";"expr";"*";"expr"];dot= 3};"-",{production= ["expr";"expr";"-";"expr"];dot= 1};"/",{production= ["expr";"expr";"*";"expr"];dot= 3};"/",{production= ["expr";"expr";"/";"expr"];dot= 1}];set ["",{production= ["expr";"expr";"+";"expr"];dot= 3};")",{production= ["expr";"expr";"+";"expr"];dot= 3};"*",{production= ["expr";"expr";"*";"expr"];dot= 1};"*",{production= ["expr";"expr";"+";"expr"];dot= 3};"+",{production= ["expr";"expr";"+";"expr"];dot= 1};"+",{production= ["expr";"expr";"+";"expr"];dot= 3};"-",{production= ["expr";"expr";"+";"expr"];dot= 3};"-",{production= ["expr";"expr";"-";"expr"];dot= 1};"/",{production= ["expr";"expr";"+";"expr"];dot= 3};"/",{production= ["expr";"expr";"/";"expr"];dot= 1}];set ["",{production= ["expr";"expr";"-";"expr"];dot= 3};")",{production= ["expr";"expr";"-";"expr"];dot= 3};"*",{production= ["expr";"expr";"*";"expr"];dot= 1};"*",{production= ["expr";"expr";"-";"expr"];dot= 3};"+",{production= ["expr";"expr";"+";"expr"];dot= 1};"+",{production= ["expr";"expr";"-";"expr"];dot= 3};"-",{production= ["expr";"expr";"-";"expr"];dot= 1};"-",{production= ["expr";"expr";"-";"expr"];dot= 3};"/",{production= ["expr";"expr";"-";"expr"];dot= 3};"/",{production= ["expr";"expr";"/";"expr"];dot= 1}];set ["",{production= ["expr";"expr";"/";"expr"];dot= 3};")",{production= ["expr";"expr";"/";"expr"];dot= 3};"*",{production= ["expr";"expr";"*";"expr"];dot= 1};"*",{production= ["expr";"expr";"/";"expr"];dot= 3};"+",{production= ["expr";"expr";"+";"expr"];dot= 1};"+",{production= ["expr";"expr";"/";"expr"];dot= 3};"-",{production= ["expr";"expr";"-";"expr"];dot= 1};"-",{production= ["expr";"expr";"/";"expr"];dot= 3};"/",{production= ["expr";"expr";"/";"expr"];dot= 1};"/",{production= ["expr";"expr";"/";"expr"];dot= 3}];set ["(",{production= ["expr";"(";"expr";")"];dot= 0};"-",{production= ["expr";"-";"expr"];dot= 0};"NUMBER",{production= ["expr";"NUMBER"];dot= 0};"expr",{production= ["expr";"expr";"*";"expr"];dot= 0};"expr",{production= ["expr";"expr";"*";"expr"];dot= 2};"expr",{production= ["expr";"expr";"+";"expr"];dot= 0};"expr",{production= ["expr";"expr";"-";"expr"];dot= 0};"expr",{production= ["expr";"expr";"/";"expr"];dot= 0}];set ["(",{production= ["expr";"(";"expr";")"];dot= 0};"-",{production= ["expr";"-";"expr"];dot= 0};"NUMBER",{production= ["expr";"NUMBER"];dot= 0};"expr",{production= ["expr";"expr";"*";"expr"];dot= 0};"expr",{production= ["expr";"expr";"+";"expr"];dot= 0};"expr",{production= ["expr";"expr";"+";"expr"];dot= 2};"expr",{production= ["expr";"expr";"-";"expr"];dot= 0};"expr",{production= ["expr";"expr";"/";"expr"];dot= 0}];set ["(",{production= ["expr";"(";"expr";")"];dot= 0};"-",{production= ["expr";"-";"expr"];dot= 0};"NUMBER",{production= ["expr";"NUMBER"];dot= 0};"expr",{production= ["expr";"expr";"*";"expr"];dot= 0};"expr",{production= ["expr";"expr";"+";"expr"];dot= 0};"expr",{production= ["expr";"expr";"-";"expr"];dot= 0};"expr",{production= ["expr";"expr";"-";"expr"];dot= 2};"expr",{production= ["expr";"expr";"/";"expr"];dot= 0}];set ["(",{production= ["expr";"(";"expr";")"];dot= 0};"-",{production= ["expr";"-";"expr"];dot= 0};"NUMBER",{production= ["expr";"NUMBER"];dot= 0};"expr",{production= ["expr";"expr";"*";"expr"];dot= 0};"expr",{production= ["expr";"expr";"+";"expr"];dot= 0};"expr",{production= ["expr";"expr";"-";"expr"];dot= 0};"expr",{production= ["expr";"expr";"/";"expr"];dot= 0};"expr",{production= ["expr";"expr";"/";"expr"];dot= 2}]]
let gotos = [Map ["(",set [{production= ["expr";"(";"expr";")"];dot= 1}];"-",set [{production= ["expr";"-";"expr"];dot= 1}];"NUMBER",set [{production= ["expr";"NUMBER"];dot= 1}];"expr",set [{production= ["";"expr"];dot= 1};{production= ["expr";"expr";"*";"expr"];dot= 1};{production= ["expr";"expr";"+";"expr"];dot= 1};{production= ["expr";"expr";"-";"expr"];dot= 1};{production= ["expr";"expr";"/";"expr"];dot= 1}]];Map ["*",set [{production= ["expr";"expr";"*";"expr"];dot= 2}];"+",set [{production= ["expr";"expr";"+";"expr"];dot= 2}];"-",set [{production= ["expr";"expr";"-";"expr"];dot= 2}];"/",set [{production= ["expr";"expr";"/";"expr"];dot= 2}]];Map ["(",set [{production= ["expr";"(";"expr";")"];dot= 1}];"-",set [{production= ["expr";"-";"expr"];dot= 1}];"NUMBER",set [{production= ["expr";"NUMBER"];dot= 1}];"expr",set [{production= ["expr";"(";"expr";")"];dot= 2};{production= ["expr";"expr";"*";"expr"];dot= 1};{production= ["expr";"expr";"+";"expr"];dot= 1};{production= ["expr";"expr";"-";"expr"];dot= 1};{production= ["expr";"expr";"/";"expr"];dot= 1}]];Map [")",set [{production= ["expr";"(";"expr";")"];dot= 3}];"*",set [{production= ["expr";"expr";"*";"expr"];dot= 2}];"+",set [{production= ["expr";"expr";"+";"expr"];dot= 2}];"-",set [{production= ["expr";"expr";"-";"expr"];dot= 2}];"/",set [{production= ["expr";"expr";"/";"expr"];dot= 2}]];Map.empty;Map ["(",set [{production= ["expr";"(";"expr";")"];dot= 1}];"-",set [{production= ["expr";"-";"expr"];dot= 1}];"NUMBER",set [{production= ["expr";"NUMBER"];dot= 1}];"expr",set [{production= ["expr";"-";"expr"];dot= 2};{production= ["expr";"expr";"*";"expr"];dot= 1};{production= ["expr";"expr";"+";"expr"];dot= 1};{production= ["expr";"expr";"-";"expr"];dot= 1};{production= ["expr";"expr";"/";"expr"];dot= 1}]];Map ["*",set [{production= ["expr";"expr";"*";"expr"];dot= 2}];"+",set [{production= ["expr";"expr";"+";"expr"];dot= 2}];"-",set [{production= ["expr";"expr";"-";"expr"];dot= 2}];"/",set [{production= ["expr";"expr";"/";"expr"];dot= 2}]];Map.empty;Map ["*",set [{production= ["expr";"expr";"*";"expr"];dot= 2}];"+",set [{production= ["expr";"expr";"+";"expr"];dot= 2}];"-",set [{production= ["expr";"expr";"-";"expr"];dot= 2}];"/",set [{production= ["expr";"expr";"/";"expr"];dot= 2}]];Map ["*",set [{production= ["expr";"expr";"*";"expr"];dot= 2}];"+",set [{production= ["expr";"expr";"+";"expr"];dot= 2}];"-",set [{production= ["expr";"expr";"-";"expr"];dot= 2}];"/",set [{production= ["expr";"expr";"/";"expr"];dot= 2}]];Map ["*",set [{production= ["expr";"expr";"*";"expr"];dot= 2}];"+",set [{production= ["expr";"expr";"+";"expr"];dot= 2}];"-",set [{production= ["expr";"expr";"-";"expr"];dot= 2}];"/",set [{production= ["expr";"expr";"/";"expr"];dot= 2}]];Map ["*",set [{production= ["expr";"expr";"*";"expr"];dot= 2}];"+",set [{production= ["expr";"expr";"+";"expr"];dot= 2}];"-",set [{production= ["expr";"expr";"-";"expr"];dot= 2}];"/",set [{production= ["expr";"expr";"/";"expr"];dot= 2}]];Map ["(",set [{production= ["expr";"(";"expr";")"];dot= 1}];"-",set [{production= ["expr";"-";"expr"];dot= 1}];"NUMBER",set [{production= ["expr";"NUMBER"];dot= 1}];"expr",set [{production= ["expr";"expr";"*";"expr"];dot= 1};{production= ["expr";"expr";"*";"expr"];dot= 3};{production= ["expr";"expr";"+";"expr"];dot= 1};{production= ["expr";"expr";"-";"expr"];dot= 1};{production= ["expr";"expr";"/";"expr"];dot= 1}]];Map ["(",set [{production= ["expr";"(";"expr";")"];dot= 1}];"-",set [{production= ["expr";"-";"expr"];dot= 1}];"NUMBER",set [{production= ["expr";"NUMBER"];dot= 1}];"expr",set [{production= ["expr";"expr";"*";"expr"];dot= 1};{production= ["expr";"expr";"+";"expr"];dot= 1};{production= ["expr";"expr";"+";"expr"];dot= 3};{production= ["expr";"expr";"-";"expr"];dot= 1};{production= ["expr";"expr";"/";"expr"];dot= 1}]];Map ["(",set [{production= ["expr";"(";"expr";")"];dot= 1}];"-",set [{production= ["expr";"-";"expr"];dot= 1}];"NUMBER",set [{production= ["expr";"NUMBER"];dot= 1}];"expr",set [{production= ["expr";"expr";"*";"expr"];dot= 1};{production= ["expr";"expr";"+";"expr"];dot= 1};{production= ["expr";"expr";"-";"expr"];dot= 1};{production= ["expr";"expr";"-";"expr"];dot= 3};{production= ["expr";"expr";"/";"expr"];dot= 1}]];Map ["(",set [{production= ["expr";"(";"expr";")"];dot= 1}];"-",set [{production= ["expr";"-";"expr"];dot= 1}];"NUMBER",set [{production= ["expr";"NUMBER"];dot= 1}];"expr",set [{production= ["expr";"expr";"*";"expr"];dot= 1};{production= ["expr";"expr";"+";"expr"];dot= 1};{production= ["expr";"expr";"-";"expr"];dot= 1};{production= ["expr";"expr";"/";"expr"];dot= 1};{production= ["expr";"expr";"/";"expr"];dot= 3}]]]
let conflicts = [Map ["(",set [{production= ["expr";"(";"expr";")"];dot= 0}];"-",set [{production= ["expr";"-";"expr"];dot= 0}];"NUMBER",set [{production= ["expr";"NUMBER"];dot= 0}];"expr",set [{production= ["";"expr"];dot= 0};{production= ["expr";"expr";"*";"expr"];dot= 0};{production= ["expr";"expr";"+";"expr"];dot= 0};{production= ["expr";"expr";"-";"expr"];dot= 0};{production= ["expr";"expr";"/";"expr"];dot= 0}]];Map ["",set [{production= ["";"expr"];dot= 1}];"*",set [{production= ["expr";"expr";"*";"expr"];dot= 1}];"+",set [{production= ["expr";"expr";"+";"expr"];dot= 1}];"-",set [{production= ["expr";"expr";"-";"expr"];dot= 1}];"/",set [{production= ["expr";"expr";"/";"expr"];dot= 1}]];Map ["(",set [{production= ["expr";"(";"expr";")"];dot= 0}];"-",set [{production= ["expr";"-";"expr"];dot= 0}];"NUMBER",set [{production= ["expr";"NUMBER"];dot= 0}];"expr",set [{production= ["expr";"(";"expr";")"];dot= 1};{production= ["expr";"expr";"*";"expr"];dot= 0};{production= ["expr";"expr";"+";"expr"];dot= 0};{production= ["expr";"expr";"-";"expr"];dot= 0};{production= ["expr";"expr";"/";"expr"];dot= 0}]];Map [")",set [{production= ["expr";"(";"expr";")"];dot= 2}];"*",set [{production= ["expr";"expr";"*";"expr"];dot= 1}];"+",set [{production= ["expr";"expr";"+";"expr"];dot= 1}];"-",set [{production= ["expr";"expr";"-";"expr"];dot= 1}];"/",set [{production= ["expr";"expr";"/";"expr"];dot= 1}]];Map ["",set [{production= ["expr";"(";"expr";")"];dot= 3}];")",set [{production= ["expr";"(";"expr";")"];dot= 3}];"*",set [{production= ["expr";"(";"expr";")"];dot= 3}];"+",set [{production= ["expr";"(";"expr";")"];dot= 3}];"-",set [{production= ["expr";"(";"expr";")"];dot= 3}];"/",set [{production= ["expr";"(";"expr";")"];dot= 3}]];Map ["(",set [{production= ["expr";"(";"expr";")"];dot= 0}];"-",set [{production= ["expr";"-";"expr"];dot= 0}];"NUMBER",set [{production= ["expr";"NUMBER"];dot= 0}];"expr",set [{production= ["expr";"-";"expr"];dot= 1};{production= ["expr";"expr";"*";"expr"];dot= 0};{production= ["expr";"expr";"+";"expr"];dot= 0};{production= ["expr";"expr";"-";"expr"];dot= 0};{production= ["expr";"expr";"/";"expr"];dot= 0}]];Map ["",set [{production= ["expr";"-";"expr"];dot= 2}];")",set [{production= ["expr";"-";"expr"];dot= 2}];"*",set [{production= ["expr";"-";"expr"];dot= 2};{production= ["expr";"expr";"*";"expr"];dot= 1}];"+",set [{production= ["expr";"-";"expr"];dot= 2};{production= ["expr";"expr";"+";"expr"];dot= 1}];"-",set [{production= ["expr";"-";"expr"];dot= 2};{production= ["expr";"expr";"-";"expr"];dot= 1}];"/",set [{production= ["expr";"-";"expr"];dot= 2};{production= ["expr";"expr";"/";"expr"];dot= 1}]];Map ["",set [{production= ["expr";"NUMBER"];dot= 1}];")",set [{production= ["expr";"NUMBER"];dot= 1}];"*",set [{production= ["expr";"NUMBER"];dot= 1}];"+",set [{production= ["expr";"NUMBER"];dot= 1}];"-",set [{production= ["expr";"NUMBER"];dot= 1}];"/",set [{production= ["expr";"NUMBER"];dot= 1}]];Map ["",set [{production= ["expr";"expr";"*";"expr"];dot= 3}];")",set [{production= ["expr";"expr";"*";"expr"];dot= 3}];"*",set [{production= ["expr";"expr";"*";"expr"];dot= 1};{production= ["expr";"expr";"*";"expr"];dot= 3}];"+",set [{production= ["expr";"expr";"*";"expr"];dot= 3};{production= ["expr";"expr";"+";"expr"];dot= 1}];"-",set [{production= ["expr";"expr";"*";"expr"];dot= 3};{production= ["expr";"expr";"-";"expr"];dot= 1}];"/",set [{production= ["expr";"expr";"*";"expr"];dot= 3};{production= ["expr";"expr";"/";"expr"];dot= 1}]];Map ["",set [{production= ["expr";"expr";"+";"expr"];dot= 3}];")",set [{production= ["expr";"expr";"+";"expr"];dot= 3}];"*",set [{production= ["expr";"expr";"*";"expr"];dot= 1};{production= ["expr";"expr";"+";"expr"];dot= 3}];"+",set [{production= ["expr";"expr";"+";"expr"];dot= 1};{production= ["expr";"expr";"+";"expr"];dot= 3}];"-",set [{production= ["expr";"expr";"+";"expr"];dot= 3};{production= ["expr";"expr";"-";"expr"];dot= 1}];"/",set [{production= ["expr";"expr";"+";"expr"];dot= 3};{production= ["expr";"expr";"/";"expr"];dot= 1}]];Map ["",set [{production= ["expr";"expr";"-";"expr"];dot= 3}];")",set [{production= ["expr";"expr";"-";"expr"];dot= 3}];"*",set [{production= ["expr";"expr";"*";"expr"];dot= 1};{production= ["expr";"expr";"-";"expr"];dot= 3}];"+",set [{production= ["expr";"expr";"+";"expr"];dot= 1};{production= ["expr";"expr";"-";"expr"];dot= 3}];"-",set [{production= ["expr";"expr";"-";"expr"];dot= 1};{production= ["expr";"expr";"-";"expr"];dot= 3}];"/",set [{production= ["expr";"expr";"-";"expr"];dot= 3};{production= ["expr";"expr";"/";"expr"];dot= 1}]];Map ["",set [{production= ["expr";"expr";"/";"expr"];dot= 3}];")",set [{production= ["expr";"expr";"/";"expr"];dot= 3}];"*",set [{production= ["expr";"expr";"*";"expr"];dot= 1};{production= ["expr";"expr";"/";"expr"];dot= 3}];"+",set [{production= ["expr";"expr";"+";"expr"];dot= 1};{production= ["expr";"expr";"/";"expr"];dot= 3}];"-",set [{production= ["expr";"expr";"-";"expr"];dot= 1};{production= ["expr";"expr";"/";"expr"];dot= 3}];"/",set [{production= ["expr";"expr";"/";"expr"];dot= 1};{production= ["expr";"expr";"/";"expr"];dot= 3}]];Map ["(",set [{production= ["expr";"(";"expr";")"];dot= 0}];"-",set [{production= ["expr";"-";"expr"];dot= 0}];"NUMBER",set [{production= ["expr";"NUMBER"];dot= 0}];"expr",set [{production= ["expr";"expr";"*";"expr"];dot= 0};{production= ["expr";"expr";"*";"expr"];dot= 2};{production= ["expr";"expr";"+";"expr"];dot= 0};{production= ["expr";"expr";"-";"expr"];dot= 0};{production= ["expr";"expr";"/";"expr"];dot= 0}]];Map ["(",set [{production= ["expr";"(";"expr";")"];dot= 0}];"-",set [{production= ["expr";"-";"expr"];dot= 0}];"NUMBER",set [{production= ["expr";"NUMBER"];dot= 0}];"expr",set [{production= ["expr";"expr";"*";"expr"];dot= 0};{production= ["expr";"expr";"+";"expr"];dot= 0};{production= ["expr";"expr";"+";"expr"];dot= 2};{production= ["expr";"expr";"-";"expr"];dot= 0};{production= ["expr";"expr";"/";"expr"];dot= 0}]];Map ["(",set [{production= ["expr";"(";"expr";")"];dot= 0}];"-",set [{production= ["expr";"-";"expr"];dot= 0}];"NUMBER",set [{production= ["expr";"NUMBER"];dot= 0}];"expr",set [{production= ["expr";"expr";"*";"expr"];dot= 0};{production= ["expr";"expr";"+";"expr"];dot= 0};{production= ["expr";"expr";"-";"expr"];dot= 0};{production= ["expr";"expr";"-";"expr"];dot= 2};{production= ["expr";"expr";"/";"expr"];dot= 0}]];Map ["(",set [{production= ["expr";"(";"expr";")"];dot= 0}];"-",set [{production= ["expr";"-";"expr"];dot= 0}];"NUMBER",set [{production= ["expr";"NUMBER"];dot= 0}];"expr",set [{production= ["expr";"expr";"*";"expr"];dot= 0};{production= ["expr";"expr";"+";"expr"];dot= 0};{production= ["expr";"expr";"-";"expr"];dot= 0};{production= ["expr";"expr";"/";"expr"];dot= 0};{production= ["expr";"expr";"/";"expr"];dot= 2}]]]
let productionNames = Map [["expr";"-";"expr"],"UMINUS"]
let precedences = Map ["*",199;"+",99;"-",99;"/",199;"UMINUS",301]
let actions = [Map ["(",Shift(set [{production= ["expr";"(";"expr";")"];dot= 1}]);"-",Shift(set [{production= ["expr";"-";"expr"];dot= 1}]);"NUMBER",Shift(set [{production= ["expr";"NUMBER"];dot= 1}]);"expr",Shift(set [{production= ["";"expr"];dot= 1};{production= ["expr";"expr";"*";"expr"];dot= 1};{production= ["expr";"expr";"+";"expr"];dot= 1};{production= ["expr";"expr";"-";"expr"];dot= 1};{production= ["expr";"expr";"/";"expr"];dot= 1}])];Map ["",Reduce ["";"expr"];"*",Shift(set [{production= ["expr";"expr";"*";"expr"];dot= 2}]);"+",Shift(set [{production= ["expr";"expr";"+";"expr"];dot= 2}]);"-",Shift(set [{production= ["expr";"expr";"-";"expr"];dot= 2}]);"/",Shift(set [{production= ["expr";"expr";"/";"expr"];dot= 2}])];Map ["(",Shift(set [{production= ["expr";"(";"expr";")"];dot= 1}]);"-",Shift(set [{production= ["expr";"-";"expr"];dot= 1}]);"NUMBER",Shift(set [{production= ["expr";"NUMBER"];dot= 1}]);"expr",Shift(set [{production= ["expr";"(";"expr";")"];dot= 2};{production= ["expr";"expr";"*";"expr"];dot= 1};{production= ["expr";"expr";"+";"expr"];dot= 1};{production= ["expr";"expr";"-";"expr"];dot= 1};{production= ["expr";"expr";"/";"expr"];dot= 1}])];Map [")",Shift(set [{production= ["expr";"(";"expr";")"];dot= 3}]);"*",Shift(set [{production= ["expr";"expr";"*";"expr"];dot= 2}]);"+",Shift(set [{production= ["expr";"expr";"+";"expr"];dot= 2}]);"-",Shift(set [{production= ["expr";"expr";"-";"expr"];dot= 2}]);"/",Shift(set [{production= ["expr";"expr";"/";"expr"];dot= 2}])];Map ["",Reduce ["expr";"(";"expr";")"];")",Reduce ["expr";"(";"expr";")"];"*",Reduce ["expr";"(";"expr";")"];"+",Reduce ["expr";"(";"expr";")"];"-",Reduce ["expr";"(";"expr";")"];"/",Reduce ["expr";"(";"expr";")"]];Map ["(",Shift(set [{production= ["expr";"(";"expr";")"];dot= 1}]);"-",Shift(set [{production= ["expr";"-";"expr"];dot= 1}]);"NUMBER",Shift(set [{production= ["expr";"NUMBER"];dot= 1}]);"expr",Shift(set [{production= ["expr";"-";"expr"];dot= 2};{production= ["expr";"expr";"*";"expr"];dot= 1};{production= ["expr";"expr";"+";"expr"];dot= 1};{production= ["expr";"expr";"-";"expr"];dot= 1};{production= ["expr";"expr";"/";"expr"];dot= 1}])];Map ["",Reduce ["expr";"-";"expr"];")",Reduce ["expr";"-";"expr"];"*",Reduce ["expr";"-";"expr"];"+",Reduce ["expr";"-";"expr"];"-",Reduce ["expr";"-";"expr"];"/",Reduce ["expr";"-";"expr"]];Map ["",Reduce ["expr";"NUMBER"];")",Reduce ["expr";"NUMBER"];"*",Reduce ["expr";"NUMBER"];"+",Reduce ["expr";"NUMBER"];"-",Reduce ["expr";"NUMBER"];"/",Reduce ["expr";"NUMBER"]];Map ["",Reduce ["expr";"expr";"*";"expr"];")",Reduce ["expr";"expr";"*";"expr"];"*",Reduce ["expr";"expr";"*";"expr"];"+",Reduce ["expr";"expr";"*";"expr"];"-",Reduce ["expr";"expr";"*";"expr"];"/",Reduce ["expr";"expr";"*";"expr"]];Map ["",Reduce ["expr";"expr";"+";"expr"];")",Reduce ["expr";"expr";"+";"expr"];"*",Shift(set [{production= ["expr";"expr";"*";"expr"];dot= 2}]);"+",Reduce ["expr";"expr";"+";"expr"];"-",Reduce ["expr";"expr";"+";"expr"];"/",Shift(set [{production= ["expr";"expr";"/";"expr"];dot= 2}])];Map ["",Reduce ["expr";"expr";"-";"expr"];")",Reduce ["expr";"expr";"-";"expr"];"*",Shift(set [{production= ["expr";"expr";"*";"expr"];dot= 2}]);"+",Reduce ["expr";"expr";"-";"expr"];"-",Reduce ["expr";"expr";"-";"expr"];"/",Shift(set [{production= ["expr";"expr";"/";"expr"];dot= 2}])];Map ["",Reduce ["expr";"expr";"/";"expr"];")",Reduce ["expr";"expr";"/";"expr"];"*",Reduce ["expr";"expr";"/";"expr"];"+",Reduce ["expr";"expr";"/";"expr"];"-",Reduce ["expr";"expr";"/";"expr"];"/",Reduce ["expr";"expr";"/";"expr"]];Map ["(",Shift(set [{production= ["expr";"(";"expr";")"];dot= 1}]);"-",Shift(set [{production= ["expr";"-";"expr"];dot= 1}]);"NUMBER",Shift(set [{production= ["expr";"NUMBER"];dot= 1}]);"expr",Shift(set [{production= ["expr";"expr";"*";"expr"];dot= 1};{production= ["expr";"expr";"*";"expr"];dot= 3};{production= ["expr";"expr";"+";"expr"];dot= 1};{production= ["expr";"expr";"-";"expr"];dot= 1};{production= ["expr";"expr";"/";"expr"];dot= 1}])];Map ["(",Shift(set [{production= ["expr";"(";"expr";")"];dot= 1}]);"-",Shift(set [{production= ["expr";"-";"expr"];dot= 1}]);"NUMBER",Shift(set [{production= ["expr";"NUMBER"];dot= 1}]);"expr",Shift(set [{production= ["expr";"expr";"*";"expr"];dot= 1};{production= ["expr";"expr";"+";"expr"];dot= 1};{production= ["expr";"expr";"+";"expr"];dot= 3};{production= ["expr";"expr";"-";"expr"];dot= 1};{production= ["expr";"expr";"/";"expr"];dot= 1}])];Map ["(",Shift(set [{production= ["expr";"(";"expr";")"];dot= 1}]);"-",Shift(set [{production= ["expr";"-";"expr"];dot= 1}]);"NUMBER",Shift(set [{production= ["expr";"NUMBER"];dot= 1}]);"expr",Shift(set [{production= ["expr";"expr";"*";"expr"];dot= 1};{production= ["expr";"expr";"+";"expr"];dot= 1};{production= ["expr";"expr";"-";"expr"];dot= 1};{production= ["expr";"expr";"-";"expr"];dot= 3};{production= ["expr";"expr";"/";"expr"];dot= 1}])];Map ["(",Shift(set [{production= ["expr";"(";"expr";")"];dot= 1}]);"-",Shift(set [{production= ["expr";"-";"expr"];dot= 1}]);"NUMBER",Shift(set [{production= ["expr";"NUMBER"];dot= 1}]);"expr",Shift(set [{production= ["expr";"expr";"*";"expr"];dot= 1};{production= ["expr";"expr";"+";"expr"];dot= 1};{production= ["expr";"expr";"-";"expr"];dot= 1};{production= ["expr";"expr";"/";"expr"];dot= 1};{production= ["expr";"expr";"/";"expr"];dot= 3}])]]
let resolvedClosures = [Map [{production= ["";"expr"];dot= 0},Set.empty;{production= ["expr";"(";"expr";")"];dot= 0},Set.empty;{production= ["expr";"-";"expr"];dot= 0},Set.empty;{production= ["expr";"NUMBER"];dot= 0},Set.empty;{production= ["expr";"expr";"*";"expr"];dot= 0},Set.empty;{production= ["expr";"expr";"+";"expr"];dot= 0},Set.empty;{production= ["expr";"expr";"-";"expr"];dot= 0},Set.empty;{production= ["expr";"expr";"/";"expr"];dot= 0},Set.empty];Map [{production= ["";"expr"];dot= 1},set [""];{production= ["expr";"expr";"*";"expr"];dot= 1},Set.empty;{production= ["expr";"expr";"+";"expr"];dot= 1},Set.empty;{production= ["expr";"expr";"-";"expr"];dot= 1},Set.empty;{production= ["expr";"expr";"/";"expr"];dot= 1},Set.empty];Map [{production= ["expr";"(";"expr";")"];dot= 0},Set.empty;{production= ["expr";"(";"expr";")"];dot= 1},Set.empty;{production= ["expr";"-";"expr"];dot= 0},Set.empty;{production= ["expr";"NUMBER"];dot= 0},Set.empty;{production= ["expr";"expr";"*";"expr"];dot= 0},Set.empty;{production= ["expr";"expr";"+";"expr"];dot= 0},Set.empty;{production= ["expr";"expr";"-";"expr"];dot= 0},Set.empty;{production= ["expr";"expr";"/";"expr"];dot= 0},Set.empty];Map [{production= ["expr";"(";"expr";")"];dot= 2},Set.empty;{production= ["expr";"expr";"*";"expr"];dot= 1},Set.empty;{production= ["expr";"expr";"+";"expr"];dot= 1},Set.empty;{production= ["expr";"expr";"-";"expr"];dot= 1},Set.empty;{production= ["expr";"expr";"/";"expr"];dot= 1},Set.empty];Map [{production= ["expr";"(";"expr";")"];dot= 3},set ["";")";"*";"+";"-";"/"]];Map [{production= ["expr";"(";"expr";")"];dot= 0},Set.empty;{production= ["expr";"-";"expr"];dot= 0},Set.empty;{production= ["expr";"-";"expr"];dot= 1},Set.empty;{production= ["expr";"NUMBER"];dot= 0},Set.empty;{production= ["expr";"expr";"*";"expr"];dot= 0},Set.empty;{production= ["expr";"expr";"+";"expr"];dot= 0},Set.empty;{production= ["expr";"expr";"-";"expr"];dot= 0},Set.empty;{production= ["expr";"expr";"/";"expr"];dot= 0},Set.empty];Map [{production= ["expr";"-";"expr"];dot= 2},set ["";")";"*";"+";"-";"/"]];Map [{production= ["expr";"NUMBER"];dot= 1},set ["";")";"*";"+";"-";"/"]];Map [{production= ["expr";"expr";"*";"expr"];dot= 3},set ["";")";"*";"+";"-";"/"]];Map [{production= ["expr";"expr";"*";"expr"];dot= 1},Set.empty;{production= ["expr";"expr";"+";"expr"];dot= 3},set ["";")";"+";"-"];{production= ["expr";"expr";"/";"expr"];dot= 1},Set.empty];Map [{production= ["expr";"expr";"*";"expr"];dot= 1},Set.empty;{production= ["expr";"expr";"-";"expr"];dot= 3},set ["";")";"+";"-"];{production= ["expr";"expr";"/";"expr"];dot= 1},Set.empty];Map [{production= ["expr";"expr";"/";"expr"];dot= 3},set ["";")";"*";"+";"-";"/"]];Map [{production= ["expr";"(";"expr";")"];dot= 0},Set.empty;{production= ["expr";"-";"expr"];dot= 0},Set.empty;{production= ["expr";"NUMBER"];dot= 0},Set.empty;{production= ["expr";"expr";"*";"expr"];dot= 0},Set.empty;{production= ["expr";"expr";"*";"expr"];dot= 2},Set.empty;{production= ["expr";"expr";"+";"expr"];dot= 0},Set.empty;{production= ["expr";"expr";"-";"expr"];dot= 0},Set.empty;{production= ["expr";"expr";"/";"expr"];dot= 0},Set.empty];Map [{production= ["expr";"(";"expr";")"];dot= 0},Set.empty;{production= ["expr";"-";"expr"];dot= 0},Set.empty;{production= ["expr";"NUMBER"];dot= 0},Set.empty;{production= ["expr";"expr";"*";"expr"];dot= 0},Set.empty;{production= ["expr";"expr";"+";"expr"];dot= 0},Set.empty;{production= ["expr";"expr";"+";"expr"];dot= 2},Set.empty;{production= ["expr";"expr";"-";"expr"];dot= 0},Set.empty;{production= ["expr";"expr";"/";"expr"];dot= 0},Set.empty];Map [{production= ["expr";"(";"expr";")"];dot= 0},Set.empty;{production= ["expr";"-";"expr"];dot= 0},Set.empty;{production= ["expr";"NUMBER"];dot= 0},Set.empty;{production= ["expr";"expr";"*";"expr"];dot= 0},Set.empty;{production= ["expr";"expr";"+";"expr"];dot= 0},Set.empty;{production= ["expr";"expr";"-";"expr"];dot= 0},Set.empty;{production= ["expr";"expr";"-";"expr"];dot= 2},Set.empty;{production= ["expr";"expr";"/";"expr"];dot= 0},Set.empty];Map [{production= ["expr";"(";"expr";")"];dot= 0},Set.empty;{production= ["expr";"-";"expr"];dot= 0},Set.empty;{production= ["expr";"NUMBER"];dot= 0},Set.empty;{production= ["expr";"expr";"*";"expr"];dot= 0},Set.empty;{production= ["expr";"expr";"+";"expr"];dot= 0},Set.empty;{production= ["expr";"expr";"-";"expr"];dot= 0},Set.empty;{production= ["expr";"expr";"/";"expr"];dot= 0},Set.empty;{production= ["expr";"expr";"/";"expr"];dot= 2},Set.empty]]
let encodedActions = [["(",2;"-",5;"NUMBER",7;"expr",1];["",0;"*",12;"+",13;"-",14;"/",15];["(",2;"-",5;"NUMBER",7;"expr",3];[")",4;"*",12;"+",13;"-",14;"/",15];["",-1;")",-1;"*",-1;"+",-1;"-",-1;"/",-1];["(",2;"-",5;"NUMBER",7;"expr",6];["",-2;")",-2;"*",-2;"+",-2;"-",-2;"/",-2];["",-3;")",-3;"*",-3;"+",-3;"-",-3;"/",-3];["",-4;")",-4;"*",-4;"+",-4;"-",-4;"/",-4];["",-5;")",-5;"*",12;"+",-5;"-",-5;"/",15];["",-6;")",-6;"*",12;"+",-6;"-",-6;"/",15];["",-7;")",-7;"*",-7;"+",-7;"-",-7;"/",-7];["(",2;"-",5;"NUMBER",7;"expr",8];["(",2;"-",5;"NUMBER",7;"expr",9];["(",2;"-",5;"NUMBER",7;"expr",10];["(",2;"-",5;"NUMBER",7;"expr",11]]
let encodedClosures = [[0,0,[];-1,0,[];-2,0,[];-3,0,[];-4,0,[];-5,0,[];-6,0,[];-7,0,[]];[0,1,[""];-4,1,[];-5,1,[];-6,1,[];-7,1,[]];[-1,0,[];-1,1,[];-2,0,[];-3,0,[];-4,0,[];-5,0,[];-6,0,[];-7,0,[]];[-1,2,[];-4,1,[];-5,1,[];-6,1,[];-7,1,[]];[-1,3,["";")";"*";"+";"-";"/"]];[-1,0,[];-2,0,[];-2,1,[];-3,0,[];-4,0,[];-5,0,[];-6,0,[];-7,0,[]];[-2,2,["";")";"*";"+";"-";"/"]];[-3,1,["";")";"*";"+";"-";"/"]];[-4,3,["";")";"*";"+";"-";"/"]];[-4,1,[];-5,3,["";")";"+";"-"];-7,1,[]];[-4,1,[];-6,3,["";")";"+";"-"];-7,1,[]];[-7,3,["";")";"*";"+";"-";"/"]];[-1,0,[];-2,0,[];-3,0,[];-4,0,[];-4,2,[];-5,0,[];-6,0,[];-7,0,[]];[-1,0,[];-2,0,[];-3,0,[];-4,0,[];-5,0,[];-5,2,[];-6,0,[];-7,0,[]];[-1,0,[];-2,0,[];-3,0,[];-4,0,[];-5,0,[];-6,0,[];-6,2,[];-7,0,[]];[-1,0,[];-2,0,[];-3,0,[];-4,0,[];-5,0,[];-6,0,[];-7,0,[];-7,2,[]]]
