aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTeddy <ted.sybil@gmail.com>2014-03-26 03:46:54 +0800
committerTeddy <ted.sybil@gmail.com>2014-03-26 03:46:54 +0800
commitb5977b972befa8b81cae58deb5a19fc1a5f623fe (patch)
tree07ba564ec6ac120afd06e7ce72d336f0d215b5ed
parenteebe59a7e3a8ff255ebde71b0aa89e9ade58d4aa (diff)
...
-rw-r--r--README.rst11
-rw-r--r--ast.c5
-rw-r--r--ast.h2
-rw-r--r--cibic.l4
4 files changed, 18 insertions, 4 deletions
diff --git a/README.rst b/README.rst
index 7e7a79d..f3d7714 100644
--- a/README.rst
+++ b/README.rst
@@ -1,3 +1,14 @@
CBIC -- C Implemented Bare and Ingenuous Compiler
=================================================
+Build Requirements
+------------------
+- flex >= 2.5.37
+- bison >= 2.4.3
+- gcc >= 4.7.3
+
+Features
+---------
+- User-friendly AST printing
+- More sophisticated error reporting
+- Small memory footprint
diff --git a/ast.c b/ast.c
index 538b386..6bbc176 100644
--- a/ast.c
+++ b/ast.c
@@ -221,7 +221,8 @@ CNode *cnode_list_wrap(int type, CNode *list) {
}
char *cnode_debug_type_repr(CNode *ast) {
- static char buffer[1024], abuff[1024];
+ static char buffer[MAX_DEBUG_PRINT_BUFF],
+ abuff[MAX_DEBUG_PRINT_BUFF];
char *type, *aptr = abuff;
switch (ast->type)
{
@@ -388,7 +389,7 @@ void cnode_debug_print_plain(CNode *ast) {
}
void cnode_debug_print_fancy(CNode *ast, int lvl) {
- static int show[1024];
+ static int show[MAX_DEBUG_PRINT_LVL];
int i;
show[lvl] = 1;
for (i = 0; i < lvl - 1; i++)
diff --git a/ast.h b/ast.h
index 77d2c9b..a6c5c4a 100644
--- a/ast.h
+++ b/ast.h
@@ -23,6 +23,8 @@
#define STMT_RET 1041
#define MAX_CHDN 1024
+#define MAX_DEBUG_PRINT_BUFF 1024
+#define MAX_DEBUG_PRINT_LVL 1024
typedef struct CNode {
enum {
diff --git a/cibic.l b/cibic.l
index 9c88be2..e6e449b 100644
--- a/cibic.l
+++ b/cibic.l
@@ -1,8 +1,8 @@
%{
#include "cibic.tab.h"
-
+#define MAX_LINEBUFF 1024
int yycolumn = 1;
-char linebuff[1024], *lptr = linebuff;
+char linebuff[MAX_LINEBUFF], *lptr = linebuff;
#define YY_USER_ACTION \
do { \