# HG changeset patch # User Ted Mielczarek # Date 1307015253 14400 # Node ID 5ac8eed856841ed5e7325c3d3b6a0b2952f4bad7 # Parent 94a293b914af82c93db4d623f799c55368dee596 consolidate token classes diff -r 94a293b914af -r 5ac8eed85684 expr.py --- a/expr.py Thu Jun 02 07:44:25 2011 -0400 +++ b/expr.py Thu Jun 02 07:47:33 2011 -0400 @@ -34,15 +34,9 @@ # to the parser return parser.value(self.value) -class int_token: +class literal_token: def __init__(self, value): - self.value = int(value) - def nud(self, parser): - return self.value - -class bool_token: - def __init__(self, value): - self.value = {'true':True, 'false':False}[value] + self.value = value def nud(self, parser): return self.value @@ -84,12 +78,6 @@ ")" lbp = 0 -class string_token: - def __init__(self, value): - self.value = value - def nud(self, parser): - return self.value - class end_token: # lowest left binding power, always ends parsing lbp = 0 @@ -111,16 +99,16 @@ Lex the input text into tokens and yield them in sequence. """ # scanner callbacks - def bool_(scanner, t): return bool_token(t) + def bool_(scanner, t): return literal_token({'true':True, 'false':False}[t]) def identifier(scanner, t): return ident_token(t) - def integer(scanner, t): return int_token(t) + def integer(scanner, t): return literal_token(int(t)) def eq(scanner, t): return eq_op_token() def neq(scanner, t): return neq_op_token() def or_(scanner, t): return or_op_token() def and_(scanner, t): return and_op_token() def lparen(scanner, t): return lparen_token() def rparen(scanner, t): return rparen_token() - def string_(scanner, t): return string_token(t[1:-1]) + def string_(scanner, t): return literal_token(t[1:-1]) scanner = re.Scanner([ (r"true|false", bool_),