61A Lecture 27
November 2, 2011
Wednesday, November 2, 2011
61A Lecture 27 November 2, 2011 Wednesday, November 2, 2011 - - PowerPoint PPT Presentation
61A Lecture 27 November 2, 2011 Wednesday, November 2, 2011 Parsing A Parser takes as input a string that contains an expression and returns an expression tree expression parser Evaluator string value tree 'add(2, 2)' Exp ('add', [2, 2])
Wednesday, November 2, 2011
2
'add(2, 2)' Exp('add', [2, 2]) 4
Wednesday, November 2, 2011
3
Wednesday, November 2, 2011
4
Wednesday, November 2, 2011
5
Wednesday, November 2, 2011
6
Wednesday, November 2, 2011
7
Wednesday, November 2, 2011
8
Wednesday, November 2, 2011
9
Wednesday, November 2, 2011
Pass 2 Pass 1
10
def analyze(tokens): token = analyze_token(tokens.pop(0)) if type(token) in (int, float): return token else: tokens.pop(0) # Remove ( return Exp(token, analyze_operands(tokens)) def analyze_operands(tokens):
while tokens[0] != ')': if operands: tokens.pop(0) # Remove ,
tokens.pop(0) # Remove ) return operands ['add','(','2',',','3',')'] ['(','2',',','3',')'] ['2',',','3',')'] ['2',',','3',')'] [',','3',')'] [')'] ['3',')'] []
Wednesday, November 2, 2011
11
Wednesday, November 2, 2011
12
Wednesday, November 2, 2011
13
Wednesday, November 2, 2011
14 Wednesday, November 2, 2011