LL(1) Parsing
| > | varSet := {Sre,Tre,Pre,Fre}:
termSet := {"+",".","*","(",")",t1,t2,t3}: startSymbol := Sre: prodTable := table([Sre={[Sre,"+",Tre],[Tre]}, Tre={[Tre,".",Pre],[Pre]}, Pre={[Fre,"*"],[Fre]}, Fre={["(",Sre,")"],[t1],[t2],[t3],[lambda]}]): cfg:=CFG(varSet,termSet,startSymbol,op(prodTable)); fs:=firstSetLL1(cfg); followSetLL1(cfg,fs); parsingTableLL1(cfg); |
| (10.10.1) |
| (10.10.1) |
| (10.10.1) |
| (10.10.1) |
| > | type(cfg,LL1); |
| (10.10.2) |
| > | #parseLL1(cfg,[t1,"+",t2]); ###Will never terminate |
| > | varSet := {E, T, E1,T1,F}:
termSet := {plus,star,l_pen,r_pen,id}: startSymbol := E: prodTable := table([ E={[T,E1]},E1={[plus,T,E1],[lambda]},T={[F,T1]},T1={[star,F,T1],[lambda]},F={[l_pen,E,r_pen],[id]}]): cfg2:=CFG(varSet,termSet,startSymbol,op(prodTable)); parsingTableLL1(cfg2); |
| (10.10.3) |
| (10.10.3) |
| > | type(cfg2,LL1); |
| (10.10.4) |
| > | varSet:= {exp,expp,term,termp,factor,addop,mulop}:
termSet:= {"+","-","*","(",")",number}: startSymbol:= exp: prodTable:= table([exp={[term, expp]},expp={[addop,term,expp],[lambda]}, addop={["+"],["-"]},term={[factor,termp]}, termp={[mulop,factor,termp],[lambda]},mulop={["*"]}, factor={["(",exp,")"],[number]}]): cfg4_4:=CFG(varSet,termSet,startSymbol,op(prodTable)); parsingTableLL1(cfg4_4); |
| (10.10.5) |
| (10.10.5) |
| > | type(cfg4_4,LL1); |
| (10.10.6) |
| > | printlevel:=0:parseLL1(cfg4_4,[number,"-",number,"*","(",number,")"]); |
| (10.10.7) |
| > | parseLL1(cfg4_4,[number,"+","(",number,"*",number,")"],derivation=true); |
| (10.10.8) |
| > | parseLL1(cfg4_4,["(",number,")"],tree=true); |
![]() |
| > | parseLL1(cfg4_4,["(",")"]); |
| Error, (in fola:-parseLL1) Cannot parse! Something is wrong with the grammar or the string.
|
| > | varSet:= {statement,if_stmt,else_part,exp}:
termSet:= {"other", "if", "(", ")", "else",0,1}: startSymbol:= statement: prodTable:= table([statement={[if_stmt],["other"]},if_stmt={["if","(",exp,")",statement,else_part]},else_part={["else", statement],[lambda]},exp={[0],[1]}]): cfg4_3:=CFG(varSet,termSet,startSymbol,op(prodTable)); parsingTableLL1(cfg4_3); |
| (10.10.9) |
| (10.10.9) |
| > | type(cfg4_3,LL1); |
| (10.10.10) |
| > | varSet:= {stmt_sequence,stmt_seq_p,stmt}:
termSet:= {";",s}: startSymbol:= stmt_sequence: prodTable:= table([stmt_sequence={[stmt,stmt_seq_p]},stmt_seq_p={[";",stmt_sequence],[lambda]},stmt={[s]}]): cfg4_17:=CFG(varSet,termSet,startSymbol,op(prodTable)); parsingTableLL1(cfg4_17); |
| (10.10.11) |
| (10.10.11) |
| > | type(cfg4_17,LL1); |
| (10.10.12) |