From 5274edb5484f75266304d21840f8e854f2a1d3c5 Mon Sep 17 00:00:00 2001 From: mryouse Date: Thu, 30 Jun 2022 03:08:39 +0000 Subject: refactor: types are not natively lexed --- neb/parser.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'neb/parser.py') diff --git a/neb/parser.py b/neb/parser.py index 08ab0be..bbaf7a8 100644 --- a/neb/parser.py +++ b/neb/parser.py @@ -17,7 +17,7 @@ def parseExpression(token, prev, tokens): elif token.type_ in (TokenType.STRING, TokenType.TRUE, TokenType.FALSE, TokenType.INT, TokenType.FLOAT): expr, inc = parseLiteral(token, prev, tokens[idx+1:]) args.append(expr) - elif token.type_ in (TokenType.INT_TYPE, TokenType.FLOAT_TYPE, TokenType.STRING_TYPE, TokenType.ANY_TYPE, TokenType.LIST_TYPE, TokenType.NUMBER_TYPE, TokenType.BOOL_TYPE, TokenType.LITERAL_TYPE, TokenType.USER_TYPE): + elif token.type_ == TokenType.COLON: expr, inc = parseType(token, prev, tokens[idx+1:]) args.append(expr) else: @@ -44,7 +44,9 @@ def parseLiteral(token, prev, tokens): return Literal(token.value), 1 def parseType(token, prev, tokens): - return Type(token.text), 1 + # if the next token is a symbol, combine for a type + if len(tokens) > 0 and tokens[0].type_ == TokenType.SYMBOL: + return Type(f":{tokens[0].text}"), 2 def parse(tokens): idx = 0 @@ -61,7 +63,7 @@ def parse(tokens): elif token.type_ in (TokenType.FALSE, TokenType.TRUE, TokenType.STRING, TokenType.INT, TokenType.FLOAT): lit, counter = parseLiteral(token, prev, tokens[idx+1:]) exprs.append(lit) - elif token.type_ in (TokenType.INT_TYPE, TokenType.FLOAT_TYPE, TokenType.STRING_TYPE, TokenType.ANY_TYPE, TokenType.LIST_TYPE, TokenType.NUMBER_TYPE, TokenType.BOOL_TYPE, TokenType.LITERAL_TYPE, TokenType.USER_TYPE): + elif token.type_ == TokenType.COLON: typ, counter = parseType(token, prev, tokens[idx+1:]) exprs.append(typ) else: -- cgit v1.2.3