Animation
| > | dfa:=randomDFA(5,4,2); |
| (3.1) |
| > | op(dfa); |
| (3.2) |
| > | animateDFA(dfa,[a1,a2,a1,a3,a1,a4]); |
![]() |
| > | 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:=mkCFG(varSet,termSet,startSymbol,op(prodTable)): |
| > | type(cfg4_4,LL1); |
| (3.3) |
| > | parseLL1(cfg4_4,["(",number,")"],tree=true); |
![]() |
| > | gram:=[{A,B1,B2,C1,C3},{c2,d1,d2,d3,d4},A,{}]:
deri:=[[A]=[B1,B2],[[[B1]=[C1,c2],[[[C1,c2]=[d1,d2,d3],[]]]],[[B2]=[C3],[[[C3]=[d4],[]]]]]]; |
| (3.4) |
| > | derivationTree(gram,deri); |
![]() |
| > | Q:={q0,q1,q2,q3}:
Sig:={a,b,c}: Gam:=Sig union {\Delta}: F:={q2,q3}: delta:=table(): delta[(q0,a)]:=[q0,b,R]: delta[(q0,b)]:=[q1,a,U]: ## Move up delta[(q1,a)]:=[q1,b,U]: ## delta[(q1,b)]:=[q2,a,L]: ## delta[(q2,a)]:=[q2,b,L]: ## delta[(q2,b)]:=[q3,c,L]: ## delta[(q3,a)]:=[q2,b,L]: ## delta[(q3,b)]:=[q1,c,L]: ## delta[(q0,\Delta)]:=[q1,\Delta,L]: tm:=TM2D(Q,Sig,Gam,op(delta),q0,\Delta,F); |
| (3.5) |
| > | ## Randomly generated tape
xRange:=20: yRange:=20: noSymbols:=nops(Sig): tape:=table(): for i from -floor(xRange/2) to floor(xRange/2) do for j from -floor(yRange/2) to floor(yRange/2) do tmp:=rand(noSymbols)()+1: tape[(i,j)]:=op(tmp,Sig): od: od: |
| > | animateTM(tm,tape,[3,2]); |
![]() |
| > |