COLON = auto()
SEMICOLON = auto()
DOT = auto()
+ HASH = auto()
LEFT_SQUARE_BRACE = auto()
RIGHT_SQUARE_BRACE = auto()
TokenType.COLON : "Colon",
TokenType.SEMICOLON : "Semicolon",
TokenType.DOT : "Dot",
+ TokenType.HASH : "Hash",
TokenType.LEFT_SQUARE_BRACE : "Left Square Brace",
TokenType.RIGHT_SQUARE_BRACE : "Right Square Brace",
TokenType.NUMBER : "Number"
elif c == '.':
loc = Loc(self.filename, self.line, self.row())
return Token(TokenType.DOT, self.consume_char(), loc)
+ elif c == '#':
+ loc = Loc(self.filename, self.line, self.row())
+ return Token(TokenType.HASH, self.consume_char(), loc)
elif c.isdigit():
num, loc = self.consume_number()
return Token(TokenType.NUMBER, num, loc)
tokens: [Token] = []
token = parser.next_token()
- tokens.append(token)
while token != None:
- token = parser.next_token()
tokens.append(token)
+ token = parser.next_token()
for t in tokens:
pprint.pp(str(t))
"Token (Ident, 'foo', ./tests/05-multiple-identifiers.momo:1:3)"
"Token (Ident, 'bar', ./tests/05-multiple-identifiers.momo:2:1)"
"Token (Ident, 'baz', ./tests/05-multiple-identifiers.momo:2:5)"
-'None'
"Token (Colon, ':', ./tests/06-single-char-symbols.momo:5:2)"
"Token (Semicolon, ';', ./tests/06-single-char-symbols.momo:5:4)"
"Token (Dot, '.', ./tests/06-single-char-symbols.momo:5:6)"
-'None'
"Token (Number, '69.0', ./tests/08-floating-point-numbers.momo:1:1)"
"Token (Number, '100.15134324', ./tests/08-floating-point-numbers.momo:2:1)"
"Token (Number, '420.11', ./tests/08-floating-point-numbers.momo:3:1)"
-'None'