fix Makefile
This commit is contained in:
parent
29b5b6c1f3
commit
8973390b2a
2 changed files with 70 additions and 57 deletions
19
Makefile
19
Makefile
|
|
@ -1,6 +1,6 @@
|
|||
CC = zig cc -O2
|
||||
CC = gcc
|
||||
|
||||
all: parser.tab.o lex.yy.o node.o main.o
|
||||
program: parser.tab.o lex.yy.o node.o main.o
|
||||
$(CC) ./parser.tab.o ./lex.yy.o ./node.o ./main.o -o program -lfl
|
||||
|
||||
main.o: main.c
|
||||
|
|
@ -21,6 +21,19 @@ lex.yy.o: lex.yy.c
|
|||
lex.yy.c: ./scanner.l
|
||||
flex scanner.l
|
||||
|
||||
.PHONY: clean
|
||||
.PHONY: clean test
|
||||
clean:
|
||||
rm parser.tab.c parser.tab.h parser.tab.o lex.yy.o lex.yy.c program main.o node.o
|
||||
|
||||
test: program
|
||||
@echo Test test1:
|
||||
./program test1
|
||||
@read
|
||||
@echo Test test2:
|
||||
./program test2
|
||||
@read
|
||||
@echo Test test3:
|
||||
./program test3
|
||||
@read
|
||||
@echo Test test4:
|
||||
./program test4
|
||||
|
|
|
|||
108
parser.y
108
parser.y
|
|
@ -22,14 +22,14 @@
|
|||
Program:
|
||||
ExtDefList {
|
||||
pNode children[1] = { $1 };
|
||||
$$ = newNode(Program, yylineno, 1, children, nullValue());
|
||||
$$ = newNode(Program, $1->line, 1, children, nullValue());
|
||||
root = $$;
|
||||
}
|
||||
;
|
||||
ExtDefList:
|
||||
ExtDef ExtDefList {
|
||||
pNode children[2] = { $1, $2 };
|
||||
$$ = newNode(ExtDefList, yylineno, 2, children, nullValue());
|
||||
$$ = newNode(ExtDefList, $1->line, 2, children, nullValue());
|
||||
}
|
||||
| {
|
||||
$$ = newNode(ExtDefList, -1, 0, NULL, nullValue());
|
||||
|
|
@ -38,25 +38,25 @@ ExtDefList:
|
|||
ExtDef:
|
||||
Specifier ExtDecList SEMI {
|
||||
pNode children[3] = { $1, $2, $3 };
|
||||
$$ = newNode(ExtDef, yylineno, 3, children, nullValue());
|
||||
$$ = newNode(ExtDef, $1->line, 3, children, nullValue());
|
||||
}
|
||||
| Specifier SEMI {
|
||||
pNode children[2] = { $1, $2 };
|
||||
$$ = newNode(ExtDef, yylineno, 2, children, nullValue());
|
||||
$$ = newNode(ExtDef, $1->line, 2, children, nullValue());
|
||||
}
|
||||
| Specifier FunDec CompSt {
|
||||
pNode children[3] = { $1, $2, $3 };
|
||||
$$ = newNode(ExtDef, yylineno, 3, children, nullValue());
|
||||
$$ = newNode(ExtDef, $1->line, 3, children, nullValue());
|
||||
}
|
||||
;
|
||||
ExtDecList:
|
||||
VarDec {
|
||||
pNode children[1] = { $1 };
|
||||
$$ = newNode(ExtDecList, yylineno, 1, children, nullValue());
|
||||
$$ = newNode(ExtDecList, $1->line, 1, children, nullValue());
|
||||
}
|
||||
| VarDec COMMA ExtDecList {
|
||||
pNode children[3] = { $1, $2, $3 };
|
||||
$$ = newNode(ExtDecList, yylineno, 3, children, nullValue());
|
||||
$$ = newNode(ExtDecList, $1->line, 3, children, nullValue());
|
||||
}
|
||||
;
|
||||
|
||||
|
|
@ -64,31 +64,31 @@ ExtDecList:
|
|||
Specifier:
|
||||
TYPE_INT {
|
||||
pNode children[1] = { $1 };
|
||||
$$ = newNode(Specifier, yylineno, 1, children, nullValue());
|
||||
$$ = newNode(Specifier, $1->line, 1, children, nullValue());
|
||||
}
|
||||
| TYPE_FLOAT {
|
||||
pNode children[1] = { $1 };
|
||||
$$ = newNode(Specifier, yylineno, 1, children, nullValue());
|
||||
$$ = newNode(Specifier, $1->line, 1, children, nullValue());
|
||||
}
|
||||
| StructSpecifier {
|
||||
pNode children[1] = { $1 };
|
||||
$$ = newNode(Specifier, yylineno, 1, children, nullValue());
|
||||
$$ = newNode(Specifier, $1->line, 1, children, nullValue());
|
||||
}
|
||||
;
|
||||
StructSpecifier:
|
||||
STRUCT OptTag LC DefList RC {
|
||||
pNode children[5] = { $1, $2, $3, $4, $5 };
|
||||
$$ = newNode(StructSpecifier, yylineno, 5, children, nullValue());
|
||||
$$ = newNode(StructSpecifier, $1->line, 5, children, nullValue());
|
||||
}
|
||||
| STRUCT Tag {
|
||||
pNode children[2] = { $1, $2 };
|
||||
$$ = newNode(StructSpecifier, yylineno, 2, children, nullValue());
|
||||
$$ = newNode(StructSpecifier, $1->line, 2, children, nullValue());
|
||||
}
|
||||
;
|
||||
OptTag:
|
||||
ID {
|
||||
pNode children[1] = { $1 };
|
||||
$$ = newNode(OptTag, yylineno, 1, children, nullValue());
|
||||
$$ = newNode(OptTag, $1->line, 1, children, nullValue());
|
||||
}
|
||||
| {
|
||||
$$ = newNode(OptTag, -1, 0, NULL, nullValue());
|
||||
|
|
@ -97,7 +97,7 @@ OptTag:
|
|||
Tag:
|
||||
ID {
|
||||
pNode children[1] = { $1 };
|
||||
$$ = newNode(Tag, yylineno, 1, children, nullValue());
|
||||
$$ = newNode(Tag, $1->line, 1, children, nullValue());
|
||||
}
|
||||
;
|
||||
|
||||
|
|
@ -105,37 +105,37 @@ Tag:
|
|||
VarDec:
|
||||
ID {
|
||||
pNode children[1] = { $1 };
|
||||
$$ = newNode(VarDec, yylineno, 1, children, nullValue());
|
||||
$$ = newNode(VarDec, $1->line, 1, children, nullValue());
|
||||
}
|
||||
| VarDec LB INTEGER RB {
|
||||
pNode children[4] = { $1, $2, $3, $4 };
|
||||
$$ = newNode(VarDec, yylineno, 4, children, nullValue());
|
||||
$$ = newNode(VarDec, $1->line, 4, children, nullValue());
|
||||
}
|
||||
;
|
||||
FunDec:
|
||||
ID LP VarList RP {
|
||||
pNode children[4] = { $1, $2, $3, $4 };
|
||||
$$ = newNode(FunDec, yylineno, 4, children, nullValue());
|
||||
$$ = newNode(FunDec, $1->line, 4, children, nullValue());
|
||||
}
|
||||
| ID LP RP {
|
||||
pNode children[3] = { $1, $2, $3 };
|
||||
$$ = newNode(FunDec, yylineno, 3, children, nullValue());
|
||||
$$ = newNode(FunDec, $1->line, 3, children, nullValue());
|
||||
}
|
||||
;
|
||||
VarList:
|
||||
ParamDec COMMA VarList {
|
||||
pNode children[3] = { $1, $2, $3 };
|
||||
$$ = newNode(VarList, yylineno, 3, children, nullValue());
|
||||
$$ = newNode(VarList, $1->line, 3, children, nullValue());
|
||||
}
|
||||
| ParamDec {
|
||||
pNode children[1] = { $1 };
|
||||
$$ = newNode(VarList, yylineno, 1, children, nullValue());
|
||||
$$ = newNode(VarList, $1->line, 1, children, nullValue());
|
||||
}
|
||||
;
|
||||
ParamDec:
|
||||
Specifier VarDec {
|
||||
pNode children[1] = { $1 };
|
||||
$$ = newNode(ParamDec, yylineno, 1, children, nullValue());
|
||||
$$ = newNode(ParamDec, $1->line, 1, children, nullValue());
|
||||
}
|
||||
;
|
||||
|
||||
|
|
@ -143,13 +143,13 @@ ParamDec:
|
|||
CompSt:
|
||||
LC DefList StmtList RC {
|
||||
pNode children[4] = { $1, $2, $3, $4 };
|
||||
$$ = newNode(CompSt, yylineno, 4, children, nullValue());
|
||||
$$ = newNode(CompSt, $1->line, 4, children, nullValue());
|
||||
}
|
||||
;
|
||||
StmtList:
|
||||
Stmt StmtList {
|
||||
pNode children[2] = { $1, $2 };
|
||||
$$ = newNode(StmtList, yylineno, 2, children, nullValue());
|
||||
$$ = newNode(StmtList, $1->line, 2, children, nullValue());
|
||||
}
|
||||
| {
|
||||
$$ = newNode(StmtList, -1, 0, NULL, nullValue());
|
||||
|
|
@ -158,27 +158,27 @@ StmtList:
|
|||
Stmt:
|
||||
Exp SEMI {
|
||||
pNode children[2] = { $1, $2 };
|
||||
$$ = newNode(Stmt, yylineno, 2, children, nullValue());
|
||||
$$ = newNode(Stmt, $1->line, 2, children, nullValue());
|
||||
}
|
||||
| CompSt {
|
||||
pNode children[1] = { $1 };
|
||||
$$ = newNode(Stmt, yylineno, 1, children, nullValue());
|
||||
$$ = newNode(Stmt, $1->line, 1, children, nullValue());
|
||||
}
|
||||
| RETURN Exp SEMI {
|
||||
pNode children[3] = { $1, $2, $3 };
|
||||
$$ = newNode(Stmt, yylineno, 3, children, nullValue());
|
||||
$$ = newNode(Stmt, $1->line, 3, children, nullValue());
|
||||
}
|
||||
| IF LP Exp RP Stmt {
|
||||
pNode children[5] = { $1, $2, $3, $4, $5 };
|
||||
$$ = newNode(Stmt, yylineno, 5, children, nullValue());
|
||||
$$ = newNode(Stmt, $1->line, 5, children, nullValue());
|
||||
}
|
||||
| IF LP Exp RP Stmt ELSE Stmt {
|
||||
pNode children[7] = { $1, $2, $3, $4, $5, $6, $7 };
|
||||
$$ = newNode(Stmt, yylineno, 7, children, nullValue());
|
||||
$$ = newNode(Stmt, $1->line, 7, children, nullValue());
|
||||
}
|
||||
| WHILE LP Exp RP Stmt {
|
||||
pNode children[5] = { $1, $2, $3, $4, $5 };
|
||||
$$ = newNode(Stmt, yylineno, 5, children, nullValue());
|
||||
$$ = newNode(Stmt, $1->line, 5, children, nullValue());
|
||||
}
|
||||
| error SEMI
|
||||
;
|
||||
|
|
@ -187,7 +187,7 @@ Stmt:
|
|||
DefList:
|
||||
Def DefList {
|
||||
pNode children[2] = { $1, $2 };
|
||||
$$ = newNode(DefList, yylineno, 2, children, nullValue());
|
||||
$$ = newNode(DefList, $1->line, 2, children, nullValue());
|
||||
}
|
||||
| {
|
||||
$$ = newNode(DefList, -1, 0, NULL, nullValue());
|
||||
|
|
@ -196,27 +196,27 @@ DefList:
|
|||
Def:
|
||||
Specifier DecList SEMI {
|
||||
pNode children[3] = { $1, $2, $3 };
|
||||
$$ = newNode(Def, yylineno, 3, children, nullValue());
|
||||
$$ = newNode(Def, $1->line, 3, children, nullValue());
|
||||
}
|
||||
;
|
||||
DecList:
|
||||
Dec {
|
||||
pNode children[1] = { $1 };
|
||||
$$ = newNode(DecList, yylineno, 1, children, nullValue());
|
||||
$$ = newNode(DecList, $1->line, 1, children, nullValue());
|
||||
}
|
||||
| Dec COMMA DecList {
|
||||
pNode children[3] = { $1, $2, $3 };
|
||||
$$ = newNode(DecList, yylineno, 3, children, nullValue());
|
||||
$$ = newNode(DecList, $1->line, 3, children, nullValue());
|
||||
}
|
||||
;
|
||||
Dec:
|
||||
VarDec {
|
||||
pNode children[1] = { $1 };
|
||||
$$ = newNode(Dec, yylineno, 1, children, nullValue());
|
||||
$$ = newNode(Dec, $1->line, 1, children, nullValue());
|
||||
}
|
||||
| VarDec ASSIGNOP Exp {
|
||||
pNode children[3] = { $1, $2, $3 };
|
||||
$$ = newNode(Dec, yylineno, 3, children, nullValue());
|
||||
$$ = newNode(Dec, $1->line, 3, children, nullValue());
|
||||
}
|
||||
;
|
||||
|
||||
|
|
@ -224,82 +224,82 @@ Dec:
|
|||
Exp:
|
||||
Exp ASSIGNOP Exp {
|
||||
pNode children[3] = { $1, $2, $3 };
|
||||
$$ = newNode(Exp, yylineno, 3, children, nullValue());
|
||||
$$ = newNode(Exp, $1->line, 3, children, nullValue());
|
||||
}
|
||||
| Exp AND Exp {
|
||||
pNode children[3] = { $1, $2, $3 };
|
||||
$$ = newNode(Exp, yylineno, 3, children, nullValue());
|
||||
$$ = newNode(Exp, $1->line, 3, children, nullValue());
|
||||
}
|
||||
| Exp OR Exp {
|
||||
pNode children[3] = { $1, $2, $3 };
|
||||
$$ = newNode(Exp, yylineno, 3, children, nullValue());
|
||||
$$ = newNode(Exp, $1->line, 3, children, nullValue());
|
||||
}
|
||||
| Exp PLUS Exp {
|
||||
pNode children[3] = { $1, $2, $3 };
|
||||
$$ = newNode(Exp, yylineno, 3, children, nullValue());
|
||||
$$ = newNode(Exp, $1->line, 3, children, nullValue());
|
||||
}
|
||||
| Exp MINUS Exp {
|
||||
pNode children[3] = { $1, $2, $3 };
|
||||
$$ = newNode(Exp, yylineno, 3, children, nullValue());
|
||||
$$ = newNode(Exp, $1->line, 3, children, nullValue());
|
||||
}
|
||||
| Exp TIMES Exp {
|
||||
pNode children[3] = { $1, $2, $3 };
|
||||
$$ = newNode(Exp, yylineno, 3, children, nullValue());
|
||||
$$ = newNode(Exp, $1->line, 3, children, nullValue());
|
||||
}
|
||||
| Exp DIV Exp {
|
||||
pNode children[3] = { $1, $2, $3 };
|
||||
$$ = newNode(Exp, yylineno, 3, children, nullValue());
|
||||
$$ = newNode(Exp, $1->line, 3, children, nullValue());
|
||||
}
|
||||
| LP Exp RP {
|
||||
pNode children[3] = { $1, $2, $3 };
|
||||
$$ = newNode(Exp, yylineno, 3, children, nullValue());
|
||||
$$ = newNode(Exp, $1->line, 3, children, nullValue());
|
||||
}
|
||||
| MINUS Exp {
|
||||
pNode children[2] = { $1, $2 };
|
||||
$$ = newNode(Exp, yylineno, 2, children, nullValue());
|
||||
$$ = newNode(Exp, $1->line, 2, children, nullValue());
|
||||
}
|
||||
| NOT Exp {
|
||||
pNode children[2] = { $1, $2 };
|
||||
$$ = newNode(Exp, yylineno, 2, children, nullValue());
|
||||
$$ = newNode(Exp, $1->line, 2, children, nullValue());
|
||||
}
|
||||
| ID LP Args RP {
|
||||
pNode children[4] = { $1, $2, $3, $4 };
|
||||
$$ = newNode(Exp, yylineno, 4, children, nullValue());
|
||||
$$ = newNode(Exp, $1->line, 4, children, nullValue());
|
||||
}
|
||||
| ID LP RP {
|
||||
pNode children[3] = { $1, $2, $3 };
|
||||
$$ = newNode(Exp, yylineno, 3, children, nullValue());
|
||||
$$ = newNode(Exp, $1->line, 3, children, nullValue());
|
||||
}
|
||||
| Exp LB Exp RB {
|
||||
pNode children[4] = { $1, $2, $3, $4 };
|
||||
$$ = newNode(Exp, yylineno, 4, children, nullValue());
|
||||
$$ = newNode(Exp, $1->line, 4, children, nullValue());
|
||||
}
|
||||
| Exp DOT ID {
|
||||
pNode children[3] = { $1, $2, $3 };
|
||||
$$ = newNode(Exp, yylineno, 3, children, nullValue());
|
||||
$$ = newNode(Exp, $1->line, 3, children, nullValue());
|
||||
}
|
||||
| ID {
|
||||
pNode children[1] = { $1 };
|
||||
$$ = newNode(Exp, yylineno, 1, children, nullValue());
|
||||
$$ = newNode(Exp, $1->line, 1, children, nullValue());
|
||||
}
|
||||
| INTEGER {
|
||||
pNode children[1] = { $1 };
|
||||
$$ = newNode(Exp, yylineno, 1, children, nullValue());
|
||||
$$ = newNode(Exp, $1->line, 1, children, nullValue());
|
||||
}
|
||||
| FLOAT {
|
||||
pNode children[1] = { $1 };
|
||||
$$ = newNode(Exp, yylineno, 1, children, nullValue());
|
||||
$$ = newNode(Exp, $1->line, 1, children, nullValue());
|
||||
}
|
||||
;
|
||||
|
||||
Args:
|
||||
Exp COMMA Args {
|
||||
pNode children[3] = { $1, $2, $3 };
|
||||
$$ = newNode(Args, yylineno, 3, children, nullValue());
|
||||
$$ = newNode(Args, $1->line, 3, children, nullValue());
|
||||
}
|
||||
| Exp {
|
||||
pNode children[1] = { $1 };
|
||||
$$ = newNode(Exp, yylineno, 1, children, nullValue());
|
||||
$$ = newNode(Exp, $1->line, 1, children, nullValue());
|
||||
}
|
||||
;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue