aboutsummaryrefslogtreecommitdiff
path: root/neb/parser.py
diff options
context:
space:
mode:
Diffstat (limited to 'neb/parser.py')
-rw-r--r--neb/parser.py8
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: