diff options
| author | mryouse | 2022-06-30 03:08:39 +0000 | 
|---|---|---|
| committer | mryouse | 2022-06-30 03:08:39 +0000 | 
| commit | 5274edb5484f75266304d21840f8e854f2a1d3c5 (patch) | |
| tree | 5e2c9e808ccf5963e55598b5eb6e2903b126d08e /neb/parser.py | |
| parent | 35a2c0413a383a6291de71a94752cd08bdfb16f0 (diff) | |
refactor: types are not natively lexed
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: | 
