This commit is contained in:
bronku 2025-11-25 17:51:42 +01:00
parent 7d5787c84c
commit 619ea2c03f
8 changed files with 23 additions and 9 deletions

View file

@ -14,7 +14,7 @@
^[ \t]*#.*\n { /* Ignore comment-only lines */ }
^[ \t]* {
^[ \t]+ {
int col = indent_stack.calculateColumn(yytext, yyleng);
auto action = indent_stack.updateIndentation(col);
@ -39,6 +39,8 @@ in { return yy::parser::token::TOK_KW_IN; }
not { return yy::parser::token::TOK_KW_NOT; }
and { return yy::parser::token::TOK_KW_AND; }
or { return yy::parser::token::TOK_KW_OR; }
pass { return yy::parser::token::TOK_KW_PASS; }
else { return yy::parser::token::TOK_KW_ELSE; }
\=\= { return yy::parser::token::TOK_EQ; }
\!\= { return yy::parser::token::TOK_NE; }
@ -47,6 +49,16 @@ or { return yy::parser::token::TOK_KW_OR; }
\<\= { return yy::parser::token::TOK_LTE; }
\>\= { return yy::parser::token::TOK_GTE; }
\= { return yy::parser::token::TOK_ASSIGN; }
\+\= { return yy::parser::token::TOK_PLUS_ASSIGN; }
\-\= { return yy::parser::token::TOK_MINUS_ASSIGN; }
\*\= { return yy::parser::token::TOK_MULTIPLY_ASSIGN; }
\/\= { return yy::parser::token::TOK_DIVIDE_ASSIGN; }
\%\= { return yy::parser::token::TOK_MODULO_ASSIGN; }
\&\= { return yy::parser::token::TOK_BIT_AND_ASSIGN; }
\|\= { return yy::parser::token::TOK_BIT_OR_ASSIGN; }
\^\= { return yy::parser::token::TOK_BIT_XOR_ASSIGN; }
\<\<\= { return yy::parser::token::TOK_LSHIFT_ASSIGN; }
\>\>\= { return yy::parser::token::TOK_RSHIFT_ASSIGN; }
\+ { return yy::parser::token::TOK_PLUS; }
\- { return yy::parser::token::TOK_MINUS; }
\* { return yy::parser::token::TOK_MULTIPLY; }

View file

@ -27,8 +27,8 @@
%token <std::string> IDENTIFIER
%token <std::string> STRING
%token <int> NUMBER
%token ASSIGN PLUS MINUS L_PAREN R_PAREN COLON EQ NE LT GT LTE GTE MULTIPLY DIVIDE MODULO L_BRACKET L_BRACE R_BRACKET R_BRACE DOT SEMICOLON COMMA BIT_NOT BIT_AND BIT_OR BIT_XOR LSHIFT RSHIFT
%token KW_DEF KW_IF KW_RETURN KW_FOR KW_IN KW_NOT KW_AND KW_OR
%token ASSIGN PLUS MINUS L_PAREN R_PAREN COLON EQ NE LT GT LTE GTE MULTIPLY DIVIDE MODULO L_BRACKET L_BRACE R_BRACKET R_BRACE DOT SEMICOLON COMMA BIT_NOT BIT_AND BIT_OR BIT_XOR LSHIFT RSHIFT PLUS_ASSIGN MINUS_ASSIGN MULTIPLY_ASSIGN DIVIDE_ASSIGN MODULO_ASSIGN BIT_AND_ASSIGN BIT_OR_ASSIGN BIT_XOR_ASSIGN LSHIFT_ASSIGN RSHIFT_ASSIGN
%token KW_DEF KW_IF KW_RETURN KW_FOR KW_IN KW_NOT KW_AND KW_OR KW_PASS KW_ELSE
%token EOF NEWLINE INDENT DEDENT

View file

@ -7,7 +7,7 @@ IDENTIFIER c
COLON
NEWLINE
INDENT
IDENTIFIER pass
KW_PASS
NEWLINE
DEDENT
EOF

View file

@ -38,4 +38,4 @@ IDENTIFIER g
RSHIFT_ASSIGN
NUMBER 10
NEWLINE
EOF
EOF

View file

@ -16,4 +16,4 @@ L_BRACKET
IDENTIFIER index
R_BRACKET
NEWLINE
EOF
EOF

View file

@ -38,4 +38,4 @@ COMMA
NUMBER 3
R_BRACE
NEWLINE
EOF
EOF

View file

@ -1,5 +1,7 @@
STRING "line\nbreak"
NEWLINE
STRING 'quote\'test'
NEWLINE
STRING "unicode ☃ snowman"
NEWLINE
EOF
EOF

View file

@ -13,4 +13,4 @@ INDENT
KW_PASS
NEWLINE
DEDENT
EOF
EOF