module FslexFsyacc.G01Data
open FslexFsyacc
open FslexFsyacc.ItemCores
open FslexFsyacc.YACCs
open FslexFsyacc.BNFs
open FslexFsyacc.Precedences

let inputProductionList = [["E";"E";"+";"T"];["E";"T"];["T";"T";"*";"F"];["T";"F"];["F";"(";"E";")"];["F";"id"]]
let mainProductions = set [["E";"E";"+";"T"];["E";"T"];["F";"(";"E";")"];["F";"id"];["T";"F"];["T";"T";"*";"F"]]
let augmentedProductions = set [["";"E"];["E";"E";"+";"T"];["E";"T"];["F";"(";"E";")"];["F";"id"];["T";"F"];["T";"T";"*";"F"]]
let symbols = set ["(";")";"*";"+";"E";"F";"T";"id"]
let nonterminals = set ["E";"F";"T"]
let terminals = set ["(";")";"*";"+";"id"]
let nullables = Set.empty
let firsts = Map ["E",set ["(";"id"];"F",set ["(";"id"];"T",set ["(";"id"]]
let lasts = Map ["E",set [")";"id"];"F",set [")";"id"];"T",set [")";"id"]]
let follows = Map ["(",set ["(";"id"];")",set ["";")";"*";"+"];"*",set ["(";"id"];"+",set ["(";"id"];"E",set ["";")";"+"];"F",set ["";")";"*";"+"];"T",set ["";")";"*";"+"];"id",set ["";")";"*";"+"]]
let precedes = Map ["(",set ["";"(";"*";"+"];")",set [")";"id"];"*",set [")";"id"];"+",set [")";"id"];"E",set ["";"("];"F",set ["";"(";"*";"+"];"T",set ["";"(";"+"];"id",set ["";"(";"*";"+"]]
//let itemCoreCrewFlats = [{production= ["";"E"];leftside= "";body= ["E"];dot= 0;backwards= [];forwards= ["E"];dotmax= false;isKernel= true};{production= ["";"E"];leftside= "";body= ["E"];dot= 1;backwards= ["E"];forwards= [];dotmax= true;isKernel= true};{production= ["E";"E";"+";"T"];leftside= "E";body= ["E";"+";"T"];dot= 0;backwards= [];forwards= ["E";"+";"T"];dotmax= false;isKernel= false};{production= ["E";"E";"+";"T"];leftside= "E";body= ["E";"+";"T"];dot= 1;backwards= ["E"];forwards= ["+";"T"];dotmax= false;isKernel= true};{production= ["E";"E";"+";"T"];leftside= "E";body= ["E";"+";"T"];dot= 2;backwards= ["+";"E"];forwards= ["T"];dotmax= false;isKernel= true};{production= ["E";"E";"+";"T"];leftside= "E";body= ["E";"+";"T"];dot= 3;backwards= ["T";"+";"E"];forwards= [];dotmax= true;isKernel= true};{production= ["E";"T"];leftside= "E";body= ["T"];dot= 0;backwards= [];forwards= ["T"];dotmax= false;isKernel= false};{production= ["E";"T"];leftside= "E";body= ["T"];dot= 1;backwards= ["T"];forwards= [];dotmax= true;isKernel= true};{production= ["F";"(";"E";")"];leftside= "F";body= ["(";"E";")"];dot= 0;backwards= [];forwards= ["(";"E";")"];dotmax= false;isKernel= false};{production= ["F";"(";"E";")"];leftside= "F";body= ["(";"E";")"];dot= 1;backwards= ["("];forwards= ["E";")"];dotmax= false;isKernel= true};{production= ["F";"(";"E";")"];leftside= "F";body= ["(";"E";")"];dot= 2;backwards= ["E";"("];forwards= [")"];dotmax= false;isKernel= true};{production= ["F";"(";"E";")"];leftside= "F";body= ["(";"E";")"];dot= 3;backwards= [")";"E";"("];forwards= [];dotmax= true;isKernel= true};{production= ["F";"id"];leftside= "F";body= ["id"];dot= 0;backwards= [];forwards= ["id"];dotmax= false;isKernel= false};{production= ["F";"id"];leftside= "F";body= ["id"];dot= 1;backwards= ["id"];forwards= [];dotmax= true;isKernel= true};{production= ["T";"F"];leftside= "T";body= ["F"];dot= 0;backwards= [];forwards= ["F"];dotmax= false;isKernel= false};{production= ["T";"F"];leftside= "T";body= ["F"];dot= 1;backwards= ["F"];forwards= [];dotmax= true;isKernel= true};{production= ["T";"T";"*";"F"];leftside= "T";body= ["T";"*";"F"];dot= 0;backwards= [];forwards= ["T";"*";"F"];dotmax= false;isKernel= false};{production= ["T";"T";"*";"F"];leftside= "T";body= ["T";"*";"F"];dot= 1;backwards= ["T"];forwards= ["*";"F"];dotmax= false;isKernel= true};{production= ["T";"T";"*";"F"];leftside= "T";body= ["T";"*";"F"];dot= 2;backwards= ["*";"T"];forwards= ["F"];dotmax= false;isKernel= true};{production= ["T";"T";"*";"F"];leftside= "T";body= ["T";"*";"F"];dot= 3;backwards= ["F";"*";"T"];forwards= [];dotmax= true;isKernel= true}]
let kernels = set [set [{production= ["";"E"];dot= 0}];set [{production= ["";"E"];dot= 1};{production= ["E";"E";"+";"T"];dot= 1}];set [{production= ["E";"E";"+";"T"];dot= 1};{production= ["F";"(";"E";")"];dot= 2}];set [{production= ["E";"E";"+";"T"];dot= 2}];set [{production= ["E";"E";"+";"T"];dot= 3};{production= ["T";"T";"*";"F"];dot= 1}];set [{production= ["E";"T"];dot= 1};{production= ["T";"T";"*";"F"];dot= 1}];set [{production= ["F";"(";"E";")"];dot= 1}];set [{production= ["F";"(";"E";")"];dot= 3}];set [{production= ["F";"id"];dot= 1}];set [{production= ["T";"F"];dot= 1}];set [{production= ["T";"T";"*";"F"];dot= 2}];set [{production= ["T";"T";"*";"F"];dot= 3}]]
let closures = Map [0,set ["(",{production= ["F";"(";"E";")"];dot= 0};"E",{production= ["";"E"];dot= 0};"E",{production= ["E";"E";"+";"T"];dot= 0};"F",{production= ["T";"F"];dot= 0};"T",{production= ["E";"T"];dot= 0};"T",{production= ["T";"T";"*";"F"];dot= 0};"id",{production= ["F";"id"];dot= 0}];1,set ["",{production= ["";"E"];dot= 1};"+",{production= ["E";"E";"+";"T"];dot= 1}];2,set [")",{production= ["F";"(";"E";")"];dot= 2};"+",{production= ["E";"E";"+";"T"];dot= 1}];3,set ["(",{production= ["F";"(";"E";")"];dot= 0};"F",{production= ["T";"F"];dot= 0};"T",{production= ["E";"E";"+";"T"];dot= 2};"T",{production= ["T";"T";"*";"F"];dot= 0};"id",{production= ["F";"id"];dot= 0}];4,set ["",{production= ["E";"E";"+";"T"];dot= 3};")",{production= ["E";"E";"+";"T"];dot= 3};"*",{production= ["T";"T";"*";"F"];dot= 1};"+",{production= ["E";"E";"+";"T"];dot= 3}];5,set ["",{production= ["E";"T"];dot= 1};")",{production= ["E";"T"];dot= 1};"*",{production= ["T";"T";"*";"F"];dot= 1};"+",{production= ["E";"T"];dot= 1}];6,set ["(",{production= ["F";"(";"E";")"];dot= 0};"E",{production= ["E";"E";"+";"T"];dot= 0};"E",{production= ["F";"(";"E";")"];dot= 1};"F",{production= ["T";"F"];dot= 0};"T",{production= ["E";"T"];dot= 0};"T",{production= ["T";"T";"*";"F"];dot= 0};"id",{production= ["F";"id"];dot= 0}];7,set ["",{production= ["F";"(";"E";")"];dot= 3};")",{production= ["F";"(";"E";")"];dot= 3};"*",{production= ["F";"(";"E";")"];dot= 3};"+",{production= ["F";"(";"E";")"];dot= 3}];8,set ["",{production= ["F";"id"];dot= 1};")",{production= ["F";"id"];dot= 1};"*",{production= ["F";"id"];dot= 1};"+",{production= ["F";"id"];dot= 1}];9,set ["",{production= ["T";"F"];dot= 1};")",{production= ["T";"F"];dot= 1};"*",{production= ["T";"F"];dot= 1};"+",{production= ["T";"F"];dot= 1}];10,set ["(",{production= ["F";"(";"E";")"];dot= 0};"F",{production= ["T";"T";"*";"F"];dot= 2};"id",{production= ["F";"id"];dot= 0}];11,set ["",{production= ["T";"T";"*";"F"];dot= 3};")",{production= ["T";"T";"*";"F"];dot= 3};"*",{production= ["T";"T";"*";"F"];dot= 3};"+",{production= ["T";"T";"*";"F"];dot= 3}]]
let GOTOs = Map [0,Map ["(",set [{production= ["F";"(";"E";")"];dot= 1}];"E",set [{production= ["";"E"];dot= 1};{production= ["E";"E";"+";"T"];dot= 1}];"F",set [{production= ["T";"F"];dot= 1}];"T",set [{production= ["E";"T"];dot= 1};{production= ["T";"T";"*";"F"];dot= 1}];"id",set [{production= ["F";"id"];dot= 1}]];1,Map ["+",set [{production= ["E";"E";"+";"T"];dot= 2}]];2,Map [")",set [{production= ["F";"(";"E";")"];dot= 3}];"+",set [{production= ["E";"E";"+";"T"];dot= 2}]];3,Map ["(",set [{production= ["F";"(";"E";")"];dot= 1}];"F",set [{production= ["T";"F"];dot= 1}];"T",set [{production= ["E";"E";"+";"T"];dot= 3};{production= ["T";"T";"*";"F"];dot= 1}];"id",set [{production= ["F";"id"];dot= 1}]];4,Map ["*",set [{production= ["T";"T";"*";"F"];dot= 2}]];5,Map ["*",set [{production= ["T";"T";"*";"F"];dot= 2}]];6,Map ["(",set [{production= ["F";"(";"E";")"];dot= 1}];"E",set [{production= ["E";"E";"+";"T"];dot= 1};{production= ["F";"(";"E";")"];dot= 2}];"F",set [{production= ["T";"F"];dot= 1}];"T",set [{production= ["E";"T"];dot= 1};{production= ["T";"T";"*";"F"];dot= 1}];"id",set [{production= ["F";"id"];dot= 1}]];7,Map.empty;8,Map.empty;9,Map.empty;10,Map ["(",set [{production= ["F";"(";"E";")"];dot= 1}];"F",set [{production= ["T";"T";"*";"F"];dot= 3}];"id",set [{production= ["F";"id"];dot= 1}]];11,Map.empty]
let conflictedItemCores = Map [0,Map ["(",set [{production= ["F";"(";"E";")"];dot= 0}];"E",set [{production= ["";"E"];dot= 0};{production= ["E";"E";"+";"T"];dot= 0}];"F",set [{production= ["T";"F"];dot= 0}];"T",set [{production= ["E";"T"];dot= 0};{production= ["T";"T";"*";"F"];dot= 0}];"id",set [{production= ["F";"id"];dot= 0}]];1,Map ["",set [{production= ["";"E"];dot= 1}];"+",set [{production= ["E";"E";"+";"T"];dot= 1}]];2,Map [")",set [{production= ["F";"(";"E";")"];dot= 2}];"+",set [{production= ["E";"E";"+";"T"];dot= 1}]];3,Map ["(",set [{production= ["F";"(";"E";")"];dot= 0}];"F",set [{production= ["T";"F"];dot= 0}];"T",set [{production= ["E";"E";"+";"T"];dot= 2};{production= ["T";"T";"*";"F"];dot= 0}];"id",set [{production= ["F";"id"];dot= 0}]];4,Map ["",set [{production= ["E";"E";"+";"T"];dot= 3}];")",set [{production= ["E";"E";"+";"T"];dot= 3}];"*",set [{production= ["T";"T";"*";"F"];dot= 1}];"+",set [{production= ["E";"E";"+";"T"];dot= 3}]];5,Map ["",set [{production= ["E";"T"];dot= 1}];")",set [{production= ["E";"T"];dot= 1}];"*",set [{production= ["T";"T";"*";"F"];dot= 1}];"+",set [{production= ["E";"T"];dot= 1}]];6,Map ["(",set [{production= ["F";"(";"E";")"];dot= 0}];"E",set [{production= ["E";"E";"+";"T"];dot= 0};{production= ["F";"(";"E";")"];dot= 1}];"F",set [{production= ["T";"F"];dot= 0}];"T",set [{production= ["E";"T"];dot= 0};{production= ["T";"T";"*";"F"];dot= 0}];"id",set [{production= ["F";"id"];dot= 0}]];7,Map ["",set [{production= ["F";"(";"E";")"];dot= 3}];")",set [{production= ["F";"(";"E";")"];dot= 3}];"*",set [{production= ["F";"(";"E";")"];dot= 3}];"+",set [{production= ["F";"(";"E";")"];dot= 3}]];8,Map ["",set [{production= ["F";"id"];dot= 1}];")",set [{production= ["F";"id"];dot= 1}];"*",set [{production= ["F";"id"];dot= 1}];"+",set [{production= ["F";"id"];dot= 1}]];9,Map ["",set [{production= ["T";"F"];dot= 1}];")",set [{production= ["T";"F"];dot= 1}];"*",set [{production= ["T";"F"];dot= 1}];"+",set [{production= ["T";"F"];dot= 1}]];10,Map ["(",set [{production= ["F";"(";"E";")"];dot= 0}];"F",set [{production= ["T";"T";"*";"F"];dot= 2}];"id",set [{production= ["F";"id"];dot= 0}]];11,Map ["",set [{production= ["T";"T";"*";"F"];dot= 3}];")",set [{production= ["T";"T";"*";"F"];dot= 3}];"*",set [{production= ["T";"T";"*";"F"];dot= 3}];"+",set [{production= ["T";"T";"*";"F"];dot= 3}]]]
let dummyTokens = Map.empty
let precedences = Map.empty
let unambiguousItemCores = Map [0,Map ["(",set [{production= ["F";"(";"E";")"];dot= 0}];"E",set [{production= ["";"E"];dot= 0};{production= ["E";"E";"+";"T"];dot= 0}];"F",set [{production= ["T";"F"];dot= 0}];"T",set [{production= ["E";"T"];dot= 0};{production= ["T";"T";"*";"F"];dot= 0}];"id",set [{production= ["F";"id"];dot= 0}]];1,Map ["",set [{production= ["";"E"];dot= 1}];"+",set [{production= ["E";"E";"+";"T"];dot= 1}]];2,Map [")",set [{production= ["F";"(";"E";")"];dot= 2}];"+",set [{production= ["E";"E";"+";"T"];dot= 1}]];3,Map ["(",set [{production= ["F";"(";"E";")"];dot= 0}];"F",set [{production= ["T";"F"];dot= 0}];"T",set [{production= ["E";"E";"+";"T"];dot= 2};{production= ["T";"T";"*";"F"];dot= 0}];"id",set [{production= ["F";"id"];dot= 0}]];4,Map ["",set [{production= ["E";"E";"+";"T"];dot= 3}];")",set [{production= ["E";"E";"+";"T"];dot= 3}];"*",set [{production= ["T";"T";"*";"F"];dot= 1}];"+",set [{production= ["E";"E";"+";"T"];dot= 3}]];5,Map ["",set [{production= ["E";"T"];dot= 1}];")",set [{production= ["E";"T"];dot= 1}];"*",set [{production= ["T";"T";"*";"F"];dot= 1}];"+",set [{production= ["E";"T"];dot= 1}]];6,Map ["(",set [{production= ["F";"(";"E";")"];dot= 0}];"E",set [{production= ["E";"E";"+";"T"];dot= 0};{production= ["F";"(";"E";")"];dot= 1}];"F",set [{production= ["T";"F"];dot= 0}];"T",set [{production= ["E";"T"];dot= 0};{production= ["T";"T";"*";"F"];dot= 0}];"id",set [{production= ["F";"id"];dot= 0}]];7,Map ["",set [{production= ["F";"(";"E";")"];dot= 3}];")",set [{production= ["F";"(";"E";")"];dot= 3}];"*",set [{production= ["F";"(";"E";")"];dot= 3}];"+",set [{production= ["F";"(";"E";")"];dot= 3}]];8,Map ["",set [{production= ["F";"id"];dot= 1}];")",set [{production= ["F";"id"];dot= 1}];"*",set [{production= ["F";"id"];dot= 1}];"+",set [{production= ["F";"id"];dot= 1}]];9,Map ["",set [{production= ["T";"F"];dot= 1}];")",set [{production= ["T";"F"];dot= 1}];"*",set [{production= ["T";"F"];dot= 1}];"+",set [{production= ["T";"F"];dot= 1}]];10,Map ["(",set [{production= ["F";"(";"E";")"];dot= 0}];"F",set [{production= ["T";"T";"*";"F"];dot= 2}];"id",set [{production= ["F";"id"];dot= 0}]];11,Map ["",set [{production= ["T";"T";"*";"F"];dot= 3}];")",set [{production= ["T";"T";"*";"F"];dot= 3}];"*",set [{production= ["T";"T";"*";"F"];dot= 3}];"+",set [{production= ["T";"T";"*";"F"];dot= 3}]]]
let actions = Map [0,Map ["(",Shift(set [{production= ["F";"(";"E";")"];dot= 1}]);"E",Shift(set [{production= ["";"E"];dot= 1};{production= ["E";"E";"+";"T"];dot= 1}]);"F",Shift(set [{production= ["T";"F"];dot= 1}]);"T",Shift(set [{production= ["E";"T"];dot= 1};{production= ["T";"T";"*";"F"];dot= 1}]);"id",Shift(set [{production= ["F";"id"];dot= 1}])];1,Map ["",Reduce ["";"E"];"+",Shift(set [{production= ["E";"E";"+";"T"];dot= 2}])];2,Map [")",Shift(set [{production= ["F";"(";"E";")"];dot= 3}]);"+",Shift(set [{production= ["E";"E";"+";"T"];dot= 2}])];3,Map ["(",Shift(set [{production= ["F";"(";"E";")"];dot= 1}]);"F",Shift(set [{production= ["T";"F"];dot= 1}]);"T",Shift(set [{production= ["E";"E";"+";"T"];dot= 3};{production= ["T";"T";"*";"F"];dot= 1}]);"id",Shift(set [{production= ["F";"id"];dot= 1}])];4,Map ["",Reduce ["E";"E";"+";"T"];")",Reduce ["E";"E";"+";"T"];"*",Shift(set [{production= ["T";"T";"*";"F"];dot= 2}]);"+",Reduce ["E";"E";"+";"T"]];5,Map ["",Reduce ["E";"T"];")",Reduce ["E";"T"];"*",Shift(set [{production= ["T";"T";"*";"F"];dot= 2}]);"+",Reduce ["E";"T"]];6,Map ["(",Shift(set [{production= ["F";"(";"E";")"];dot= 1}]);"E",Shift(set [{production= ["E";"E";"+";"T"];dot= 1};{production= ["F";"(";"E";")"];dot= 2}]);"F",Shift(set [{production= ["T";"F"];dot= 1}]);"T",Shift(set [{production= ["E";"T"];dot= 1};{production= ["T";"T";"*";"F"];dot= 1}]);"id",Shift(set [{production= ["F";"id"];dot= 1}])];7,Map ["",Reduce ["F";"(";"E";")"];")",Reduce ["F";"(";"E";")"];"*",Reduce ["F";"(";"E";")"];"+",Reduce ["F";"(";"E";")"]];8,Map ["",Reduce ["F";"id"];")",Reduce ["F";"id"];"*",Reduce ["F";"id"];"+",Reduce ["F";"id"]];9,Map ["",Reduce ["T";"F"];")",Reduce ["T";"F"];"*",Reduce ["T";"F"];"+",Reduce ["T";"F"]];10,Map ["(",Shift(set [{production= ["F";"(";"E";")"];dot= 1}]);"F",Shift(set [{production= ["T";"T";"*";"F"];dot= 3}]);"id",Shift(set [{production= ["F";"id"];dot= 1}])];11,Map ["",Reduce ["T";"T";"*";"F"];")",Reduce ["T";"T";"*";"F"];"*",Reduce ["T";"T";"*";"F"];"+",Reduce ["T";"T";"*";"F"]]]
let resolvedClosures = Map [0,Map [{production= ["";"E"];dot= 0},Set.empty;{production= ["E";"E";"+";"T"];dot= 0},Set.empty;{production= ["E";"T"];dot= 0},Set.empty;{production= ["F";"(";"E";")"];dot= 0},Set.empty;{production= ["F";"id"];dot= 0},Set.empty;{production= ["T";"F"];dot= 0},Set.empty;{production= ["T";"T";"*";"F"];dot= 0},Set.empty];1,Map [{production= ["";"E"];dot= 1},set [""];{production= ["E";"E";"+";"T"];dot= 1},Set.empty];2,Map [{production= ["E";"E";"+";"T"];dot= 1},Set.empty;{production= ["F";"(";"E";")"];dot= 2},Set.empty];3,Map [{production= ["E";"E";"+";"T"];dot= 2},Set.empty;{production= ["F";"(";"E";")"];dot= 0},Set.empty;{production= ["F";"id"];dot= 0},Set.empty;{production= ["T";"F"];dot= 0},Set.empty;{production= ["T";"T";"*";"F"];dot= 0},Set.empty];4,Map [{production= ["E";"E";"+";"T"];dot= 3},set ["";")";"+"];{production= ["T";"T";"*";"F"];dot= 1},Set.empty];5,Map [{production= ["E";"T"];dot= 1},set ["";")";"+"];{production= ["T";"T";"*";"F"];dot= 1},Set.empty];6,Map [{production= ["E";"E";"+";"T"];dot= 0},Set.empty;{production= ["E";"T"];dot= 0},Set.empty;{production= ["F";"(";"E";")"];dot= 0},Set.empty;{production= ["F";"(";"E";")"];dot= 1},Set.empty;{production= ["F";"id"];dot= 0},Set.empty;{production= ["T";"F"];dot= 0},Set.empty;{production= ["T";"T";"*";"F"];dot= 0},Set.empty];7,Map [{production= ["F";"(";"E";")"];dot= 3},set ["";")";"*";"+"]];8,Map [{production= ["F";"id"];dot= 1},set ["";")";"*";"+"]];9,Map [{production= ["T";"F"];dot= 1},set ["";")";"*";"+"]];10,Map [{production= ["F";"(";"E";")"];dot= 0},Set.empty;{production= ["F";"id"];dot= 0},Set.empty;{production= ["T";"T";"*";"F"];dot= 2},Set.empty];11,Map [{production= ["T";"T";"*";"F"];dot= 3},set ["";")";"*";"+"]]]
let encodedActions = [["(",6;"E",1;"F",9;"T",5;"id",8];["",0;"+",3];[")",7;"+",3];["(",6;"F",9;"T",4;"id",8];["",-1;")",-1;"*",10;"+",-1];["",-2;")",-2;"*",10;"+",-2];["(",6;"E",2;"F",9;"T",5;"id",8];["",-3;")",-3;"*",-3;"+",-3];["",-4;")",-4;"*",-4;"+",-4];["",-5;")",-5;"*",-5;"+",-5];["(",6;"F",11;"id",8];["",-6;")",-6;"*",-6;"+",-6]]
let encodedClosures = [[0,0,[];-1,0,[];-2,0,[];-3,0,[];-4,0,[];-5,0,[];-6,0,[]];[0,1,[""];-1,1,[]];[-1,1,[];-3,2,[]];[-1,2,[];-3,0,[];-4,0,[];-5,0,[];-6,0,[]];[-1,3,["";")";"+"];-6,1,[]];[-2,1,["";")";"+"];-6,1,[]];[-1,0,[];-2,0,[];-3,0,[];-3,1,[];-4,0,[];-5,0,[];-6,0,[]];[-3,3,["";")";"*";"+"]];[-4,1,["";")";"*";"+"]];[-5,1,["";")";"*";"+"]];[-3,0,[];-4,0,[];-6,2,[]];[-6,3,["";")";"*";"+"]]]
