# whitespace
(SKIP, r'[ \t\f\r\n\v]+', False),
+ # comments
+ (SKIP, r'//[^\r\n]*', False),
+
# Alphanumeric IDs
(ID, r'[a-zA-Z_][a-zA-Z0-9_]*(?:::[a-zA-Z_][a-zA-Z0-9_]*)?', True),
def parse_opt_pair(self):
'''Parse an optional `name = value` pair.'''
if self.match(ID):
- name = self.consume(ID).text
+ token = self.consume(ID)
if self.match(EQUAL):
self.consume(EQUAL)
+ name = token.text
value = self.parse_value()
else:
- value = name
name = None
+ value = self.handleID(token.text)
else:
name = None
value = self.parse_value()
return self.handleString(value)
elif self.match(NUMBER):
token = self.consume()
- if '.' in token.text:
+ try:
+ value = int(token.text)
+ except ValueError:
value = float(token.text)
return self.handleFloat(value)
else:
- value = int(token.text)
return self.handleInt(value)
elif self.match(HEXNUM):
token = self.consume()