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; }
|
||||
pass { return yy::parser::token::TOK_KW_PASS; }
|
||||
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_NE; }
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
%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 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
|
||||
|
||||
|
||||
|
|
|
|||
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