Document last modified:
<!ELEMENT exp ( (exp, plus, exp) | (exp, times, exp) | (lparen, exp, rparen) | a | b | c )>
i. a + b
| <exp>
<exp><a/></exp> <plus/> <exp><b/></exp> </exp> |
<exp>
/ | \ <exp><plus/><exp> | | <a/> <b/> |
ii. a * b + c
| <exp> <exp> <exp><a/></exp> <times/> <exp><b/></exp> </exp> <plus/> <exp><c/></exp> </exp> |
<exp> / | \ <exp> <plus/> <exp> / | \ | <exp><times/><exp> <c/> | | <a/> <b/> |
iii. (a + b) * c
| <exp> <exp> <lparen/> <exp> <exp><a/></exp> <plus/> <exp><b/></exp> </exp> <rparen/> </exp> <times/> <exp><c/></exp> </exp> |
<exp> / | \ <exp><times/><exp> / | \ | <lparen/><exp> <rparen> <c/> / | \ <exp><plus/><exp> | | <a/> <b/> |
| <exp> <exp><a/></exp> <times/> <exp> <lparen/> <exp> <exp><b/></exp> <plus/> <exp><c/></exp> </exp> <rparen/> </exp> </exp> |
<exp>
<exp>
<lparen/>
<exp>
<exp><a/></exp>
<plus/>
<exp><b/></exp>
</exp>
<rparen/>
</exp>
<times/>
<exp>
<lparen/>
<exp>
<exp><b/></exp>
<plus/>
<exp><c/></exp>
</exp>
<rparen/>
</exp>
</exp>
<!ELEMENT digit (zero | one | two | three)>
<!ELEMENT unsigned (digit+)>
Iterative
<!ELEMENT unsigned (digit | (unsigned, digit))>
Recursive
<!ELEMENT signed ((plus, unsigned) | (minus, unsigned))>
<!ELEMENT plus EMPTY>
<!ELEMENT minus EMPTY>
<!ELEMENT zero EMPTY>
<!ELEMENT one EMPTY>
<!ELEMENT two EMPTY>
<!ELEMENT three EMPTY>
<!ELEMENT integer (signed | unsigned)>
<!ELEMENT decimal (integer, period, unsigned?)>
<!ELEMENT period EMPTY>
<!ELEMENT twoorthreedigits (digit, digit, digit?)>
<!DOCTYPE unsigned
SYSTEM "ex9.dtd">
Using iterative
<unsigned>
<digit>
<one/>
</digit>
<digit>
<two/>
</digit>
<digit>
<three/>
</digit>
</unsigned>
<!DOCTYPE unsigned SYSTEM "ex9.dtd">
Using Recursive
<unsigned>
<unsigned>
<unsigned>
<digit><one/></digit>
</unsigned>
<digit><two/></digit>
</unsigned>
<digit><three/></digit>
</unsigned>
<!DOCTYPE signed SYSTEM "ex9.dtd">
<signed>
<plus/>
<unsigned>
<digit>
<one/>
</digit>
<digit>
<two/>
</digit>
<digit>
<three/>
</digit>
</unsigned>
</signed>
<!DOCTYPE signed SYSTEM "ex9.dtd">
<decimal>
<integer>
<signed>
<minus/>
<unsigned>
<digit>
<one/>
</digit>
<digit>
<two/>
</digit>
</unsigned>
</signed>
</integer>
<period/>
<unsigned>
<digit>
<four/>
</digit>
</unsigned>
</decimal>