//F# Parser generated by Rustlr for grammar test1 module Test1 open System; open System.Collections.Generic; open Fussless; open Fussless.RuntimeParser; let private SYMBOLS = [|"_WILDCARD_TOKEN_";"E";"T";"F";"+";"*";"number";"LPAREN";"RPAREN";"START";"EOF"|]; let private TABLE:uint64 [] = [|12884967425UL;25770065920UL;30064902144UL;8590131201UL;4295294977UL;281496451743746UL;281517926580226UL;281509336645634UL;281492156776450UL;562975723487232UL;562954248781825UL;562958543552513UL;562962838388737UL;562980018323456UL;844459289935874UL;844442110066690UL;844467879870466UL;844446405427200UL;1125934266908674UL;1125942856843266UL;1125917087039490UL;1125921382006786UL;1407392063946752UL;1407417833226243UL;1688867040657408UL;1688884220592128UL;1970337722531841UL;1970350607040512UL;1970354901876736UL;2251829878587392UL;2251808404340737UL;2251812698652673UL;2251825583751168UL;2533296265494530UL;2533317740331010UL;2533291970527234UL;2533309150396418UL;2814766947106818UL;2814784126976002UL;2814771242074114UL;2814792716910594UL;3096267693490178UL;3096246219112448UL;3096241923686402UL;3096259103555586UL; |]; //Enum for return values type FLTypeDUnion = | Enumvariant_1 of unit | Enumvariant_2 of int*int | Enumvariant_0 of int ;; let _rrsemaction_0_(parser:RTParser, e:int, _item1_:int, t:int) = e + t let _rrsemaction_1_(parser:RTParser, t:int) = t let _rrsemaction_2_(parser:RTParser, t:int, _item1_:int, f:int) = t*f let _rrsemaction_3_(parser:RTParser, f:int) = f let _rrsemaction_4_(parser:RTParser, _item0_:int, e:int, _item2_:int) = e let _rrsemaction_5_(parser:RTParser, n:int) = n let _rrsemaction_6_(parser:RTParser, _item0_:int) = Unchecked.defaultof let make_parser() : RTParser = let parser1 = skeleton_parser(Unchecked.defaultof,7,12) let mutable rule = skeleton_production("") rule <- skeleton_production("E") rule.action <- fun parser -> (let t = (match parser.Pop().svalue with | FLTypeDUnion.Enumvariant_0(_rr_0) -> _rr_0 | _ -> Unchecked.defaultof) in let _item1_ = (match parser.Pop().svalue with | FLTypeDUnion.Enumvariant_0(_rr_0) -> _rr_0 | _ -> Unchecked.defaultof) in let e = (match parser.Pop().svalue with | FLTypeDUnion.Enumvariant_0(_rr_0) -> _rr_0 | _ -> Unchecked.defaultof) in FLTypeDUnion.Enumvariant_0(_rrsemaction_0_(parser,e,_item1_,t))); parser1.Rules.[0] <- rule; rule <- skeleton_production("E") rule.action <- fun parser -> (let t = (match parser.Pop().svalue with | FLTypeDUnion.Enumvariant_0(_rr_0) -> _rr_0 | _ -> Unchecked.defaultof) in FLTypeDUnion.Enumvariant_0(_rrsemaction_1_(parser,t))); parser1.Rules.[1] <- rule; rule <- skeleton_production("T") rule.action <- fun parser -> (let f = (match parser.Pop().svalue with | FLTypeDUnion.Enumvariant_0(_rr_0) -> _rr_0 | _ -> Unchecked.defaultof) in let _item1_ = (match parser.Pop().svalue with | FLTypeDUnion.Enumvariant_0(_rr_0) -> _rr_0 | _ -> Unchecked.defaultof) in let t = (match parser.Pop().svalue with | FLTypeDUnion.Enumvariant_0(_rr_0) -> _rr_0 | _ -> Unchecked.defaultof) in FLTypeDUnion.Enumvariant_0(_rrsemaction_2_(parser,t,_item1_,f))); parser1.Rules.[2] <- rule; rule <- skeleton_production("T") rule.action <- fun parser -> (let f = (match parser.Pop().svalue with | FLTypeDUnion.Enumvariant_0(_rr_0) -> _rr_0 | _ -> Unchecked.defaultof) in FLTypeDUnion.Enumvariant_0(_rrsemaction_3_(parser,f))); parser1.Rules.[3] <- rule; rule <- skeleton_production("F") rule.action <- fun parser -> (let _item2_ = (match parser.Pop().svalue with | FLTypeDUnion.Enumvariant_0(_rr_0) -> _rr_0 | _ -> Unchecked.defaultof) in let e = (match parser.Pop().svalue with | FLTypeDUnion.Enumvariant_0(_rr_0) -> _rr_0 | _ -> Unchecked.defaultof) in let _item0_ = (match parser.Pop().svalue with | FLTypeDUnion.Enumvariant_0(_rr_0) -> _rr_0 | _ -> Unchecked.defaultof) in FLTypeDUnion.Enumvariant_0(_rrsemaction_4_(parser,_item0_,e,_item2_))); parser1.Rules.[4] <- rule; rule <- skeleton_production("F") rule.action <- fun parser -> (let n = (match parser.Pop().svalue with | FLTypeDUnion.Enumvariant_0(_rr_0) -> _rr_0 | _ -> Unchecked.defaultof) in FLTypeDUnion.Enumvariant_0(_rrsemaction_5_(parser,n))); parser1.Rules.[5] <- rule; rule <- skeleton_production("START") rule.action <- fun parser -> (let _item0_ = (match parser.Pop().svalue with | FLTypeDUnion.Enumvariant_0(_rr_0) -> _rr_0 | _ -> Unchecked.defaultof) in FLTypeDUnion.Enumvariant_0(_rrsemaction_6_(parser,_item0_))); parser1.Rules.[6] <- rule; for i in 0..44 do let (sti,symi,action) = decode_action(TABLE.[i]) parser1.RSM.[sti].Add(SYMBOLS.[symi],action) for s in SYMBOLS do ignore (parser1.Symset.Add(s)); parser1;; let convert_token (lt:RawToken) = if lt=null then None else let (uval,utype) = match lt.token_name with | "Num" -> (FLTypeDUnion.Enumvariant_0((fun x->int x)(lt.token_text)),"number") | "(" -> (FLTypeDUnion.Enumvariant_0(Unchecked.defaultof),"LPAREN") | ")" -> (FLTypeDUnion.Enumvariant_0(Unchecked.defaultof),"RPAREN") | "+" -> (FLTypeDUnion.Enumvariant_0(Unchecked.defaultof),"+") | "*" -> (FLTypeDUnion.Enumvariant_0(Unchecked.defaultof),"*") | "EOF" -> (FLTypeDUnion.Enumvariant_0(Unchecked.defaultof),"EOF") | _ -> (FLTypeDUnion.Enumvariant_0(Unchecked.defaultof),"LexError") Some({TerminalToken.sym=utype; svalue=uval; line=lt.line; column=lt.column;});; let parse_with(parser:RTParser, lexer:AbstractLexer) : int option = lexer.set_shared(parser.exstate) parser.NextToken <- fun () -> convert_token(lexer.next_lt()) match parser.parse_core() with | Some(FLTypeDUnion.Enumvariant_0(_yyxres_)) -> Some(_yyxres_) | _ -> None;;