Add initial parser
This commit is contained in:
parent
31de8c902f
commit
b7ed17742e
3
Makefile
3
Makefile
|
@ -6,5 +6,8 @@ scan: main.cpp scanner.cpp
|
||||||
scanner.cpp: scanner.l
|
scanner.cpp: scanner.l
|
||||||
flex -o scanner.cpp scanner.l
|
flex -o scanner.cpp scanner.l
|
||||||
|
|
||||||
|
parser.tab.cpp: parser.y
|
||||||
|
bison -d parser.y
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f scan scanner.cpp
|
rm -f scan scanner.cpp
|
||||||
|
|
58
parser.y
Normal file
58
parser.y
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
%{
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
%}
|
||||||
|
|
||||||
|
%token INDENT
|
||||||
|
%token DEDENT
|
||||||
|
%token NEWLINE
|
||||||
|
%token AND
|
||||||
|
%token BREAK
|
||||||
|
%token DEF
|
||||||
|
%token ELIF
|
||||||
|
%token ELSE
|
||||||
|
%token FOR
|
||||||
|
%token IF
|
||||||
|
%token NOT
|
||||||
|
%token OR
|
||||||
|
%token RETURN
|
||||||
|
%token WHILE
|
||||||
|
%token BOOLEAN
|
||||||
|
%token IDENTIFIER
|
||||||
|
%token ASSIGN
|
||||||
|
%token PLUS
|
||||||
|
%token MINUS
|
||||||
|
%token TIMES
|
||||||
|
%token DIVIDEDBY
|
||||||
|
%token EQ
|
||||||
|
%token NEQ
|
||||||
|
%token GT
|
||||||
|
%token GTE
|
||||||
|
%token LT
|
||||||
|
%token LTE
|
||||||
|
%token LPAREN
|
||||||
|
%token RPAREN
|
||||||
|
%token COMMA
|
||||||
|
%token COLON
|
||||||
|
|
||||||
|
%define api.value.type { std::string }
|
||||||
|
%define api.pure full
|
||||||
|
%define api.push-pull push
|
||||||
|
|
||||||
|
%%
|
||||||
|
|
||||||
|
program
|
||||||
|
: statements {}
|
||||||
|
;
|
||||||
|
|
||||||
|
statements
|
||||||
|
: statement statements {}
|
||||||
|
| statement {}
|
||||||
|
;
|
||||||
|
|
||||||
|
statement
|
||||||
|
: PLUS {}
|
||||||
|
;
|
||||||
|
|
||||||
|
%%
|
Loading…
Reference in New Issue
Block a user