Pseudocode for tree traversal
visit(n) {
for each child c of node n from left to right do {
visit(c)
}
}
visit(root)
.This corresponds to a depth-first search of the tree, starting from root
.
95+3-
productions semantic rules
expr → expr1 + term expr.t = expr1.t || term.1 || '+'
expr → expr1 - term expr.t = expr1.t || term.1 || '-'
expr → term expr.t = term.t
term → 0 term.t = '0'
term → 1 term.t = '1'
term → 2 term.t = '2'
term → 3 term.t = '3'
term → 4 term.t = '4'
term → 5 term.t = '5'
term → 6 term.t = '6'
term → 7 term.t = '7'
term → 8 term.t = '8'
term → 9 term.t = '9'
Example translation scheme:
expr → expr + term { print('+') }
expr → expr - term { print('-') }
expr → term
term → 0 { print('0') }
term → 1 { print('1') }
term → 2 { print('2') }
term → 3 { print('3') }
term → 4 { print('4') }
term → 5 { print('5') }
term → 6 { print('6') }
term → 7 { print('7') }
term → 8 { print('8') }
term → 9 { print('9') }
Draw the parse tree for a translation scheme of 9-5+2
and demonstrate how it gets translated to 95-2+
.