indention start

This commit is contained in:
bronku 2025-11-25 13:53:50 +01:00
parent 1c21aede4b
commit 5062a9b588
12 changed files with 268 additions and 48 deletions

View file

@ -4,28 +4,28 @@ L_PAREN
R_PAREN
COLON
NEWLINE
INDENT_UP
INDENT
KW_IF
IDENTIFIER condition
COLON
NEWLINE
INDENT_UP
INDENT
KW_RETURN
IDENTIFIER value
NEWLINE
INDENT_DOWN
DEDENT
KW_FOR
IDENTIFIER item
KW_IN
IDENTIFIER list
COLON
NEWLINE
INDENT_UP
INDENT
IDENTIFIER print
L_PAREN
IDENTIFIER item
R_PAREN
NEWLINE
INDENT_DOWN
INDENT_DOWN
DEDENT
DEDENT
EOF

View file

@ -1,3 +1,12 @@
x == y != z < > <= >=
a + b - c * d / e % f
( ) [ ] { } , : . ;
def outer():
def inner1():
if cond1:
action1()
if cond2:
action2()
def inner2():
for i in range(3):
if cond3:
action3()
action4()
return result

73
test/lexer/3.out Normal file
View file

@ -0,0 +1,73 @@
KW_DEF
IDENTIFIER outer
L_PAREN
R_PAREN
COLON
NEWLINE
INDENT
KW_DEF
IDENTIFIER inner1
L_PAREN
R_PAREN
COLON
NEWLINE
INDENT
KW_IF
IDENTIFIER cond1
COLON
NEWLINE
INDENT
IDENTIFIER action1
L_PAREN
R_PAREN
NEWLINE
DEDENT
KW_IF
IDENTIFIER cond2
COLON
NEWLINE
INDENT
IDENTIFIER action2
L_PAREN
R_PAREN
NEWLINE
DEDENT
DEDENT
KW_DEF
IDENTIFIER inner2
L_PAREN
R_PAREN
COLON
NEWLINE
INDENT
KW_FOR
IDENTIFIER i
KW_IN
IDENTIFIER range
L_PAREN
NUMBER 3
R_PAREN
COLON
NEWLINE
INDENT
KW_IF
IDENTIFIER cond3
COLON
NEWLINE
INDENT
IDENTIFIER action3
L_PAREN
R_PAREN
NEWLINE
DEDENT
IDENTIFIER action4
L_PAREN
R_PAREN
NEWLINE
DEDENT
DEDENT
KW_RETURN
IDENTIFIER result
NEWLINE
DEDENT
EOF

View file

@ -1,3 +1,3 @@
42 3.14 0xFF 0b1010
"hello" 'world' """multiline"""
'test' "escaped\"quote"
x == y != z < > <= >=
a + b - c * d / e % f
( ) [ ] { } , : . ;

34
test/lexer/4.out Normal file
View file

@ -0,0 +1,34 @@
IDENTIFIER x
EQ
IDENTIFIER y
NE
IDENTIFIER z
LT
GT
LTE
GTE
NEWLINE
IDENTIFIER a
PLUS
IDENTIFIER b
MINUS
IDENTIFIER c
MULTIPLY
IDENTIFIER d
DIVIDE
IDENTIFIER e
MODULO
IDENTIFIER f
NEWLINE
L_PAREN
R_PAREN
L_BRACKET
R_BRACKET
L_BRACE
R_BRACE
COMMA
COLON
DOT
SEMICOLON
NEWLINE
EOF

View file

@ -1,8 +1,3 @@
def calculate(a, b=10):
result = (a + b) * 2
if result > 100:
print("Large result:", result)
return result
# This is a comment
x = calculate(5, 15)
42 3.14 0xFF 0b1010
"hello" 'world' """multiline"""
'test' "escaped\"quote"

View file

@ -1,5 +1,8 @@
_private = "valid"
var123 = 456
CamelCase = True
snake_case = False
very_long_variable_name_123 = "test"
def calculate(a, b=10):
result = (a + b) * 2
if result > 100:
print("Large result:", result)
return result
# This is a comment
x = calculate(5, 15)

5
test/lexer/7.in Normal file
View file

@ -0,0 +1,5 @@
_private = "valid"
var123 = 456
CamelCase = True
snake_case = False
very_long_variable_name_123 = "test"