comparison expr.py @ 9:421e26c0299f

add a string token
author Jeff Hammel <jhammel@mozilla.com>
date Fri, 03 Jun 2011 08:36:55 -0700
parents 9b2bf000aeed
children 15fb1081784f
comparison
equal deleted inserted replaced
8:9b2bf000aeed 9:421e26c0299f
91 91
92 class int_token(literal_token): 92 class int_token(literal_token):
93 def __init__(self, value): 93 def __init__(self, value):
94 literal_token.__init__(self, int(value)) 94 literal_token.__init__(self, int(value))
95 95
96 class string_token(literal_token):
97 def __init__(self, value):
98 literal_token.__init__(self, value[1:-1])
99
96 precedence = [(end_token, rparen_token), 100 precedence = [(end_token, rparen_token),
97 (or_op_token,), 101 (or_op_token,),
98 (and_op_token,), 102 (and_op_token,),
99 (eq_op_token, neq_op_token), 103 (eq_op_token, neq_op_token),
100 (lparen_token,), 104 (lparen_token,),
124 def neq(scanner, t): return neq_op_token() 128 def neq(scanner, t): return neq_op_token()
125 def or_(scanner, t): return or_op_token() 129 def or_(scanner, t): return or_op_token()
126 def and_(scanner, t): return and_op_token() 130 def and_(scanner, t): return and_op_token()
127 def lparen(scanner, t): return lparen_token() 131 def lparen(scanner, t): return lparen_token()
128 def rparen(scanner, t): return rparen_token() 132 def rparen(scanner, t): return rparen_token()
129 def string_(scanner, t): return literal_token(t[1:-1]) 133 def string_(scanner, t): return string_token(t)
130 134
131 scanner = re.Scanner([ 135 scanner = re.Scanner([
132 (r"true|false", bool_), 136 (r"true|false", bool_),
133 (r"[a-zA-Z_]\w*", identifier), 137 (r"[a-zA-Z_]\w*", identifier),
134 (r"[0-9]+", integer), 138 (r"[0-9]+", integer),