please kill me
This commit is contained in:
parent
269b932a3b
commit
712c903849
10 changed files with 260 additions and 1 deletions
|
|
@ -47,6 +47,8 @@ and { return yy::parser::token::TOK_KW_AND; }
|
||||||
or { return yy::parser::token::TOK_KW_OR; }
|
or { return yy::parser::token::TOK_KW_OR; }
|
||||||
pass { return yy::parser::token::TOK_KW_PASS; }
|
pass { return yy::parser::token::TOK_KW_PASS; }
|
||||||
else { return yy::parser::token::TOK_KW_ELSE; }
|
else { return yy::parser::token::TOK_KW_ELSE; }
|
||||||
|
elif { return yy::parser::token::TOK_KW_ELIF; }
|
||||||
|
class { return yy::parser::token::TOK_KW_CLASS; }
|
||||||
|
|
||||||
\=\= { return yy::parser::token::TOK_EQ; }
|
\=\= { return yy::parser::token::TOK_EQ; }
|
||||||
\!\= { return yy::parser::token::TOK_NE; }
|
\!\= { return yy::parser::token::TOK_NE; }
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@
|
||||||
%token <std::string> STRING
|
%token <std::string> STRING
|
||||||
%token <int> NUMBER
|
%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 PLUS_ASSIGN MINUS_ASSIGN MULTIPLY_ASSIGN DIVIDE_ASSIGN MODULO_ASSIGN BIT_AND_ASSIGN BIT_OR_ASSIGN BIT_XOR_ASSIGN LSHIFT_ASSIGN RSHIFT_ASSIGN
|
%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 KW_DEF KW_IF KW_RETURN KW_FOR KW_IN KW_NOT KW_AND KW_OR KW_PASS KW_ELSE KW_ELIF KW_CLASS
|
||||||
%token EOF NEWLINE INDENT DEDENT
|
%token EOF NEWLINE INDENT DEDENT
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
1
test/lexer/16.in
Normal file
1
test/lexer/16.in
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
x = 1<<2>>3&4|5^6
|
||||||
15
test/lexer/16.out
Normal file
15
test/lexer/16.out
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
IDENTIFIER x
|
||||||
|
ASSIGN
|
||||||
|
NUMBER 1
|
||||||
|
LSHIFT
|
||||||
|
NUMBER 2
|
||||||
|
RSHIFT
|
||||||
|
NUMBER 3
|
||||||
|
BIT_AND
|
||||||
|
NUMBER 4
|
||||||
|
BIT_OR
|
||||||
|
NUMBER 5
|
||||||
|
BIT_XOR
|
||||||
|
NUMBER 6
|
||||||
|
NEWLINE
|
||||||
|
EOF
|
||||||
3
test/lexer/17.in
Normal file
3
test/lexer/17.in
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
s1 = '"double inside"'
|
||||||
|
s2 = "'single inside'"
|
||||||
|
s3 = "mixed 'quotes' \"inside\""
|
||||||
13
test/lexer/17.out
Normal file
13
test/lexer/17.out
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
IDENTIFIER s1
|
||||||
|
ASSIGN
|
||||||
|
STRING '"double inside"'
|
||||||
|
NEWLINE
|
||||||
|
IDENTIFIER s2
|
||||||
|
ASSIGN
|
||||||
|
STRING "'single inside'"
|
||||||
|
NEWLINE
|
||||||
|
IDENTIFIER s3
|
||||||
|
ASSIGN
|
||||||
|
STRING "mixed 'quotes' \"inside\""
|
||||||
|
NEWLINE
|
||||||
|
EOF
|
||||||
1
test/lexer/18.in
Normal file
1
test/lexer/18.in
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
data = [{"a": [1, 2, 3]}, (4, 5), {6, 7}]
|
||||||
29
test/lexer/18.out
Normal file
29
test/lexer/18.out
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
IDENTIFIER data
|
||||||
|
ASSIGN
|
||||||
|
L_BRACKET
|
||||||
|
L_BRACE
|
||||||
|
STRING "a"
|
||||||
|
COLON
|
||||||
|
L_BRACKET
|
||||||
|
NUMBER 1
|
||||||
|
COMMA
|
||||||
|
NUMBER 2
|
||||||
|
COMMA
|
||||||
|
NUMBER 3
|
||||||
|
R_BRACKET
|
||||||
|
R_BRACE
|
||||||
|
COMMA
|
||||||
|
L_PAREN
|
||||||
|
NUMBER 4
|
||||||
|
COMMA
|
||||||
|
NUMBER 5
|
||||||
|
R_PAREN
|
||||||
|
COMMA
|
||||||
|
L_BRACE
|
||||||
|
NUMBER 6
|
||||||
|
COMMA
|
||||||
|
NUMBER 7
|
||||||
|
R_BRACE
|
||||||
|
R_BRACKET
|
||||||
|
NEWLINE
|
||||||
|
EOF
|
||||||
25
test/lexer/19.in
Normal file
25
test/lexer/19.in
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
def process(items):
|
||||||
|
result = []
|
||||||
|
for i, item in enumerate(items):
|
||||||
|
if item > 0:
|
||||||
|
result.append(item * 2)
|
||||||
|
elif item < 0:
|
||||||
|
result.append(-item)
|
||||||
|
else:
|
||||||
|
pass
|
||||||
|
total = sum(result)
|
||||||
|
return total
|
||||||
|
|
||||||
|
class Calculator:
|
||||||
|
def __init__(self, base=10):
|
||||||
|
self.base = base
|
||||||
|
|
||||||
|
def add(self, x, y):
|
||||||
|
return x + y
|
||||||
|
|
||||||
|
def multiply(self, x, y):
|
||||||
|
return x * y
|
||||||
|
|
||||||
|
x = process([1, -2, 0])
|
||||||
|
calc = Calculator()
|
||||||
|
sum_result = calc.add(5, 15)
|
||||||
170
test/lexer/19.out
Normal file
170
test/lexer/19.out
Normal file
|
|
@ -0,0 +1,170 @@
|
||||||
|
KW_DEF
|
||||||
|
IDENTIFIER process
|
||||||
|
L_PAREN
|
||||||
|
IDENTIFIER items
|
||||||
|
R_PAREN
|
||||||
|
COLON
|
||||||
|
NEWLINE
|
||||||
|
INDENT
|
||||||
|
IDENTIFIER result
|
||||||
|
ASSIGN
|
||||||
|
L_BRACKET
|
||||||
|
R_BRACKET
|
||||||
|
NEWLINE
|
||||||
|
KW_FOR
|
||||||
|
IDENTIFIER i
|
||||||
|
COMMA
|
||||||
|
IDENTIFIER item
|
||||||
|
KW_IN
|
||||||
|
IDENTIFIER enumerate
|
||||||
|
L_PAREN
|
||||||
|
IDENTIFIER items
|
||||||
|
R_PAREN
|
||||||
|
COLON
|
||||||
|
NEWLINE
|
||||||
|
INDENT
|
||||||
|
KW_IF
|
||||||
|
IDENTIFIER item
|
||||||
|
GT
|
||||||
|
NUMBER 0
|
||||||
|
COLON
|
||||||
|
NEWLINE
|
||||||
|
INDENT
|
||||||
|
IDENTIFIER result
|
||||||
|
DOT
|
||||||
|
IDENTIFIER append
|
||||||
|
L_PAREN
|
||||||
|
IDENTIFIER item
|
||||||
|
MULTIPLY
|
||||||
|
NUMBER 2
|
||||||
|
R_PAREN
|
||||||
|
NEWLINE
|
||||||
|
DEDENT
|
||||||
|
KW_ELIF
|
||||||
|
IDENTIFIER item
|
||||||
|
LT
|
||||||
|
NUMBER 0
|
||||||
|
COLON
|
||||||
|
NEWLINE
|
||||||
|
INDENT
|
||||||
|
IDENTIFIER result
|
||||||
|
DOT
|
||||||
|
IDENTIFIER append
|
||||||
|
L_PAREN
|
||||||
|
MINUS
|
||||||
|
IDENTIFIER item
|
||||||
|
R_PAREN
|
||||||
|
NEWLINE
|
||||||
|
DEDENT
|
||||||
|
KW_ELSE
|
||||||
|
COLON
|
||||||
|
NEWLINE
|
||||||
|
INDENT
|
||||||
|
KW_PASS
|
||||||
|
NEWLINE
|
||||||
|
DEDENT
|
||||||
|
DEDENT
|
||||||
|
IDENTIFIER total
|
||||||
|
ASSIGN
|
||||||
|
IDENTIFIER sum
|
||||||
|
L_PAREN
|
||||||
|
IDENTIFIER result
|
||||||
|
R_PAREN
|
||||||
|
NEWLINE
|
||||||
|
KW_RETURN
|
||||||
|
IDENTIFIER total
|
||||||
|
NEWLINE
|
||||||
|
DEDENT
|
||||||
|
KW_CLASS
|
||||||
|
IDENTIFIER Calculator
|
||||||
|
COLON
|
||||||
|
NEWLINE
|
||||||
|
INDENT
|
||||||
|
KW_DEF
|
||||||
|
IDENTIFIER __init__
|
||||||
|
L_PAREN
|
||||||
|
IDENTIFIER self
|
||||||
|
COMMA
|
||||||
|
IDENTIFIER base
|
||||||
|
ASSIGN
|
||||||
|
NUMBER 10
|
||||||
|
R_PAREN
|
||||||
|
COLON
|
||||||
|
NEWLINE
|
||||||
|
INDENT
|
||||||
|
IDENTIFIER self
|
||||||
|
DOT
|
||||||
|
IDENTIFIER base
|
||||||
|
ASSIGN
|
||||||
|
IDENTIFIER base
|
||||||
|
NEWLINE
|
||||||
|
DEDENT
|
||||||
|
KW_DEF
|
||||||
|
IDENTIFIER add
|
||||||
|
L_PAREN
|
||||||
|
IDENTIFIER self
|
||||||
|
COMMA
|
||||||
|
IDENTIFIER x
|
||||||
|
COMMA
|
||||||
|
IDENTIFIER y
|
||||||
|
R_PAREN
|
||||||
|
COLON
|
||||||
|
NEWLINE
|
||||||
|
INDENT
|
||||||
|
KW_RETURN
|
||||||
|
IDENTIFIER x
|
||||||
|
PLUS
|
||||||
|
IDENTIFIER y
|
||||||
|
NEWLINE
|
||||||
|
DEDENT
|
||||||
|
KW_DEF
|
||||||
|
IDENTIFIER multiply
|
||||||
|
L_PAREN
|
||||||
|
IDENTIFIER self
|
||||||
|
COMMA
|
||||||
|
IDENTIFIER x
|
||||||
|
COMMA
|
||||||
|
IDENTIFIER y
|
||||||
|
R_PAREN
|
||||||
|
COLON
|
||||||
|
NEWLINE
|
||||||
|
INDENT
|
||||||
|
KW_RETURN
|
||||||
|
IDENTIFIER x
|
||||||
|
MULTIPLY
|
||||||
|
IDENTIFIER y
|
||||||
|
NEWLINE
|
||||||
|
DEDENT
|
||||||
|
DEDENT
|
||||||
|
IDENTIFIER x
|
||||||
|
ASSIGN
|
||||||
|
IDENTIFIER process
|
||||||
|
L_PAREN
|
||||||
|
L_BRACKET
|
||||||
|
NUMBER 1
|
||||||
|
COMMA
|
||||||
|
MINUS
|
||||||
|
NUMBER 2
|
||||||
|
COMMA
|
||||||
|
NUMBER 0
|
||||||
|
R_BRACKET
|
||||||
|
R_PAREN
|
||||||
|
NEWLINE
|
||||||
|
IDENTIFIER calc
|
||||||
|
ASSIGN
|
||||||
|
IDENTIFIER Calculator
|
||||||
|
L_PAREN
|
||||||
|
R_PAREN
|
||||||
|
NEWLINE
|
||||||
|
IDENTIFIER sum_result
|
||||||
|
ASSIGN
|
||||||
|
IDENTIFIER calc
|
||||||
|
DOT
|
||||||
|
IDENTIFIER add
|
||||||
|
L_PAREN
|
||||||
|
NUMBER 5
|
||||||
|
COMMA
|
||||||
|
NUMBER 15
|
||||||
|
R_PAREN
|
||||||
|
NEWLINE
|
||||||
|
EOF
|
||||||
Loading…
Add table
Add a link
Reference in a new issue