summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTing-Wei Lan <lantw44@gmail.com>2015-11-30 02:22:06 +0800
committerTing-Wei Lan <lantw44@gmail.com>2015-11-30 02:28:14 +0800
commit91f04bf7a454171f1c37d2a42deada3af82fba55 (patch)
treecb0cd267e287a9651fbfb463dfa663fa2f091614
parent60a45efca23c7b1339b4fd9f1673f5d1812dc132 (diff)
downloadcompiler2015-91f04bf7a454171f1c37d2a42deada3af82fba55.tar
compiler2015-91f04bf7a454171f1c37d2a42deada3af82fba55.tar.gz
compiler2015-91f04bf7a454171f1c37d2a42deada3af82fba55.tar.bz2
compiler2015-91f04bf7a454171f1c37d2a42deada3af82fba55.tar.lz
compiler2015-91f04bf7a454171f1c37d2a42deada3af82fba55.tar.xz
compiler2015-91f04bf7a454171f1c37d2a42deada3af82fba55.tar.zst
compiler2015-91f04bf7a454171f1c37d2a42deada3af82fba55.zip
Don't include lexer.c and move yyerror to the end of file
-rw-r--r--Makefile.am8
-rw-r--r--src/lexer.l2
-rw-r--r--src/parser.y22
3 files changed, 17 insertions, 15 deletions
diff --git a/Makefile.am b/Makefile.am
index 974582d..adb07ca 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -28,10 +28,10 @@ libparser_a_SOURCES = \
src/parser.y \
$(NULL)
-src/lexer.o:
- @touch src/lexer.o
-
-BUILT_SOURCES = src/lexer.c src/libparser_a-parser.h
+BUILT_SOURCES = \
+ src/lexer.c \
+ src/libparser_a-parser.h \
+ $(NULL)
submit_dir_name = hw
submit_tarball_prefix = b01902054_b01902062
diff --git a/src/lexer.l b/src/lexer.l
index 207b65e..9d0b9ee 100644
--- a/src/lexer.l
+++ b/src/lexer.l
@@ -3,7 +3,9 @@
#include <assert.h>
#include <stdlib.h>
#include <string.h>
+#include "ast.h"
#include "symbol-table.h"
+#include "src/libparser_a-parser.h"
#define SIZE_OF_ARR(x) (sizeof(x)/sizeof(x[0]))
diff --git a/src/parser.y b/src/parser.y
index 128788d..c705907 100644
--- a/src/parser.y
+++ b/src/parser.y
@@ -8,8 +8,13 @@
#include <string.h>
#include "ast.h"
+extern int yylex(void);
+static void yyerror(const char *mesg);
+
AST_NODE *prog;
+extern char *yytext;
+extern int line_number;
extern int g_anyErrorOccur;
%}
@@ -57,17 +62,6 @@ extern int g_anyErrorOccur;
%right DL_RPAREN ELSE
-%{
-#include "lexer.c"
-
-int yyerror (char *mesg)
-{
- fprintf(stderr, "Error found in Line \t%d\tnext token: \t%s\n",
- line_number, yytext);
- exit(1);
-}
-%}
-
%type <node> program global_decl_list global_decl function_decl block stmt_list
%type <node> decl_list decl var_decl type init_id_list init_id stmt relop_expr
%type <node> relop_term relop_factor expr term factor var_ref param_list param
@@ -693,3 +687,9 @@ dim_list : dim_list DL_LBRACK expr DL_RBRACK
%%
+static void yyerror(const char *mesg)
+{
+ fprintf(stderr, "Error found in Line \t%d\tnext token: \t%s\n",
+ line_number, yytext);
+ exit(1);
+}