diff options
Diffstat (limited to 'neb/parser.py')
| -rw-r--r-- | neb/parser.py | 8 |
1 files changed, 5 insertions, 3 deletions
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: |
