comments yay
This commit is contained in:
13
lexer.v
13
lexer.v
@@ -116,8 +116,8 @@ fn toktype_from_kw(kw string) TokenType {
|
||||
|
||||
fn is_delimiter(c u8, is_inside_number bool) bool {
|
||||
valid_chars := match is_inside_number {
|
||||
true {" +-*/,;:%<>()[]{}=\n\""}
|
||||
false {". +-*/,;:%<>()[]{}=\n\""}
|
||||
true {" #+-*/,;:%<>()[]{}=\n\""}
|
||||
false {". #+-*/,;:%<>()[]{}=\n\""}
|
||||
}
|
||||
return valid_chars.contains(c.ascii_str())
|
||||
}
|
||||
@@ -150,8 +150,16 @@ fn lex(input string) ?[]Token {
|
||||
mut tokens := []Token{}
|
||||
mut is_inside_number := false
|
||||
mut is_inside_string := false
|
||||
mut is_inside_comment := false
|
||||
|
||||
for (right < input.len && left <= right) {
|
||||
for is_inside_comment {
|
||||
right++
|
||||
if ['#', '\n'].contains(input[right].ascii_str()) {
|
||||
is_inside_comment = false
|
||||
}
|
||||
left = right
|
||||
}
|
||||
for is_inside_string {
|
||||
right++
|
||||
if input[right].ascii_str() == '\"' {
|
||||
@@ -174,6 +182,7 @@ fn lex(input string) ?[]Token {
|
||||
if is_delimiter(input[right], is_inside_number) && left == right {
|
||||
if !input[right].is_space() {
|
||||
if input[right].ascii_str() == '\"' {is_inside_string = true; continue}
|
||||
if input[right].ascii_str() == '#' {is_inside_comment = true; continue}
|
||||
mut tok_str := input[right].ascii_str()
|
||||
if right + 1 < input.len {
|
||||
combined := input.substr(right, right + 2)
|
||||
|
||||
Reference in New Issue
Block a user