UnaryExpr and fix type check for BynaryExpr
This commit is contained in:
52
lexer.v
52
lexer.v
@@ -26,6 +26,12 @@ enum TokenType as u8 {
|
||||
greater_eq
|
||||
less_eq
|
||||
not_eq
|
||||
plus_eq
|
||||
minus_eq
|
||||
star_eq
|
||||
slash_eq
|
||||
increment
|
||||
decrement
|
||||
lparen
|
||||
rparen
|
||||
lsqparen
|
||||
@@ -46,43 +52,7 @@ struct Token {
|
||||
}
|
||||
|
||||
fn str_from_toktype(type TokenType) string {
|
||||
return match type {
|
||||
.integer {'integer'}
|
||||
.real {'real'}
|
||||
.boolean {'boolean'}
|
||||
.kw_let {'let'}
|
||||
.type {'type'}
|
||||
.kw_if {'if'}
|
||||
.kw_else {'else'}
|
||||
.kw_for {'for'}
|
||||
.kw_break {'break'}
|
||||
.kw_fn {'fn'}
|
||||
.kw_return {'return'}
|
||||
.identifier {'identifier'}
|
||||
.eof {'EOF'}
|
||||
.unknown {'unknown'}
|
||||
.plus {'plus'}
|
||||
.minus {'minus'}
|
||||
.star {'star'}
|
||||
.slash {'slash'}
|
||||
.equals {'equals'}
|
||||
.less {'less'}
|
||||
.greater {'greater'}
|
||||
.lparen {'lparen'}
|
||||
.rparen {'rparen'}
|
||||
.lsqparen {'lsqparen'}
|
||||
.rsqparen {'rsqparen'}
|
||||
.lbracket {'lbracket'}
|
||||
.rbracket {'rbracket'}
|
||||
.dot {'dot'}
|
||||
.comma {'comma'}
|
||||
.semicolon {'semicolon'}
|
||||
.colon {'colon'}
|
||||
.eq_eq {'eq eq'}
|
||||
.greater_eq {'greater eq'}
|
||||
.less_eq {'less eq'}
|
||||
.not_eq {'not eq'}
|
||||
}
|
||||
return type.str()
|
||||
}
|
||||
|
||||
fn toktype_from_delimiter(delimiter string) TokenType {
|
||||
@@ -108,6 +78,12 @@ fn toktype_from_delimiter(delimiter string) TokenType {
|
||||
'>=' {.greater_eq}
|
||||
'<=' {.less_eq}
|
||||
'!=' {.not_eq}
|
||||
'+=' {.plus_eq}
|
||||
'-=' {.minus_eq}
|
||||
'*=' {.star_eq}
|
||||
'/=' {.slash_eq}
|
||||
'++' {.increment}
|
||||
'--' {.decrement}
|
||||
else {.unknown}
|
||||
}
|
||||
}
|
||||
@@ -175,7 +151,7 @@ fn lex(input string) ?[]Token {
|
||||
mut tok_str := input[right].ascii_str()
|
||||
if right + 1 < input.len {
|
||||
combined := input.substr(right, right + 2)
|
||||
if combined in ['==', '>=', '<=', '!='] {
|
||||
if combined in ['==', '>=', '<=', '!=', '+=', '-=', '*=', '/=', '++', '--'] {
|
||||
tok_str = combined
|
||||
right++
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user