ref: 7f4177cf55af62d6ed0d29db6bb545d640eba4ac
parent: b95cc0c19c628ad8cf1f0e99548dadaff35a786f
author: Roberto E. Vargas Caballero <k0ga@shike2.com>
date: Sun Jun 10 05:44:05 EDT 2012
Removed debug information about gramatic In this point the parser is enough robust how remove this information, because begins to hide other useful information.
--- a/decl.c
+++ b/decl.c
@@ -17,7 +17,6 @@
static void dirdcl(void)
{- puts("dirdecl"); if (accept('(')) {declarator();
expect(')');@@ -47,7 +46,6 @@
/* TODO: specify size of array */;
continue;
} else {- puts("leaving dirdcl");return;
}
}
@@ -86,7 +84,6 @@
auto unsigned char sign, sclass, tqlf, nt;
auto struct type *t;
- puts("especifier");t = NULL;
tqlf = sign = sclass = 0;
for (;; next()) {@@ -197,7 +194,6 @@
{unsigned char qlf[PTRLEVEL_MAX], *bp, *lim;
- puts("declarator");lim = qlf + PTRLEVEL_MAX;
for (bp = qlf; yytoken == '*' && bp != lim; ++bp) {*bp = 0;
@@ -232,7 +228,6 @@
pushtype(PTR);
}
- puts("leaving dcl");return;
duplicated:
@@ -244,7 +239,6 @@
auto struct type *tp, *tbase;
auto unsigned char nd = 0;
- puts("decl");if (!(tbase = specifier()))
return 0;
if (yytoken != ';') {@@ -253,7 +247,7 @@
tp = decl_type(tbase);
if (isfunction(tp) && yytoken == '{') {compound();
- goto leaving;
+ return 1;
}
++nd;
} while (accept(','));@@ -264,8 +258,6 @@
warning_error(user_opt.useless_typename,
"useless type name in empty declaration");
}
-leaving:
- puts("leaving decl");return 1;
}
--- a/expr.c
+++ b/expr.c
@@ -11,7 +11,6 @@
static void primary(void)
{- puts("primary"); switch (yytoken) {case IDENTIFIER:
if (!yyval.sym)
@@ -26,12 +25,10 @@
expect(')');break;
}
- puts("leaving primary");}
static void postfix(void)
{- puts("postfix");primary();
for (;;) { switch (yytoken) {@@ -55,7 +52,6 @@
next();
break;
default:
- puts("leaving postfix");return;
}
}
@@ -65,7 +61,6 @@
static void unary(void)
{- puts("unary"); for (;;) { switch (yytoken) {case SIZEOF:
@@ -73,7 +68,7 @@
if (accept('(')) {type_name();
expect(')');- goto leaving;
+ return;
}
break;
case INC_OP:
@@ -83,120 +78,95 @@
case '&': case '*': case '-': case '~': case '!': case '+':
next();
cast();
- goto leaving;
+ return;
default:
postfix();
- goto leaving;
+ return;
}
}
-leaving:
- puts("leaving unary");}
static void cast(void)
{- puts("cast"); while (accept('(')) {type_name(); /* check if it really is a type name */
expect(')');}
unary();
- puts("leaving cast");}
static void mul(void)
{- puts("mul");do
cast();
while(accept('*') || accept('/') || accept('%'));- puts("leaving mul");}
static void add(void)
{- puts("add");do
mul();
while (accept('+') || accept('-'));- puts("leaving add");}
static void shift(void)
{- puts("shift");do
add();
while (accept(LSHIFT_OP) || accept(RSHIFT_OP));
- puts("leaving shift");}
static void relational(void)
{- puts("relational");do
shift();
while (accept('<') || accept('>') || accept(GE_OP) || accept(LE_OP));- puts("leaving relational");}
static void equality(void)
{- puts("equality");do
relational();
while (accept(EQ_OP) || accept(NE_OP));
- puts("leaving equality");}
static void bit_and(void)
{- puts("bit_and");do
equality();
while (accept('&'));- puts("leaving bit_and");}
static void bit_exor(void)
{- puts("bit_exor");do
bit_and();
while (accept('^'));- puts("leaving bit_exor");}
static void bit_or(void)
{- puts("bit_or");do
bit_exor();
while (accept('|'));- puts("leaving bit_or");}
static void and(void)
{- puts("and");do
bit_or();
while (accept(AND_OP));
- puts("leaving and");}
static void or(void)
{- puts("or");do
and();
while (accept(OR_OP));
- puts("leaving or");}
static void conditional(void)
{- puts("conditional");or();
if (accept('?')) {expr();
@@ -203,12 +173,10 @@
expect(':');conditional();
}
- puts("leaving conditional");}
static void assign(void)
{- puts("assign");unary();
switch (yytoken) {case '=':
@@ -229,14 +197,11 @@
conditional();
break;
}
- puts("leaving assign");}
void expr(void)
{- puts("expr");do
assign();
while (yytoken == ',');
- puts("leaving expr");}
--- a/flow.c
+++ b/flow.c
@@ -9,26 +9,21 @@
static void do_goto(void)
{- puts("void do_goto");expect(GOTO);
expect(IDENTIFIER);
- puts("leaving void do_goto");}
static void do_while(void)
{- puts("void do_while");expect(WHILE);
expect('(');expr();
expect(')');stmt();
- puts("leaving void do_while");}
static void do_do(void)
{- puts("void do_do");expect(DO);
stmt();
expect(WHILE);
@@ -35,12 +30,10 @@
expect('(');expr();
expect(')');- puts("leaving void do_do");}
static void do_for(void)
{- puts("void do_for");expect(FOR);
expect('(');if (yytoken != ';')
@@ -53,12 +46,10 @@
expr();
expect(')');stmt();
- puts("leaving void do_for");}
static void do_if(void)
{- puts("void do_if");expect(IF);
expect('(');expr();
@@ -67,23 +58,19 @@
if (accept(ELSE))
stmt();
- puts("leaving void do_if");}
static void do_switch(void)
{- puts("do_switch");expect(SWITCH);
expect('(');expr();
expect(')');stmt();
- puts("leaving do_switch");}
void stmt(void)
{- puts("stmt"); switch (yytoken) { case '{':@@ -122,12 +109,10 @@
expect(';');break;
}
- puts("leaving stmt");}
void compound(void)
{- puts("compound"); if (accept('{')) {struct symctx ctx;
@@ -138,5 +123,4 @@
stmt();
del_ctx();
}
- puts("leaving compound");}
--- a/lex.c
+++ b/lex.c
@@ -73,76 +73,6 @@
return h;
}
-#ifndef NDEBUG
-static char *toknames[] = {- [INT] = "INT",
- [CHAR] = "CHAR",
- [FLOAT] = "FLOAT",
- [LONG] = "LONG",
- [LLONG] = "LLONG",
- [SHORT] = "SHORT",
- [VOID] = "VOID",
- [DOUBLE] = "DOUBLE",
- [LDOUBLE] = "LDOUBLE",
- [STRUCT] = "STRUCT",
- [UNION] = "UNION",
- [ENUM] = "ENUM",
- [UTYPE] = "UTYPE",
- [BOOL] = "BOOL",
- [TYPEDEF] = "TYPEDEF",
- [EXTERN] = "EXTERN",
- [STATIC] = "STATIC",
- [AUTO] = "AUTO",
- [REGISTER] = "REGISTER",
- [VOLATILE] = "VOLATILE",
- [CONST] = "CONST",
- [RESTRICTED] = "RESTRICTED",
- [UNSIGNED] = "UNSIGNED",
- [SIGNED] = "SIGNED",
- [IDENTIFIER] = "IDENTIFIER",
- [CONSTANT] = "CONSTANT",
- [STRING_LITERAL] = "STRING_LITERAL",
- [SIZEOF] = "SIZEOF",
- [PTR_OP] = "PTR_OP",
- [INC_OP] = "INC_OP",
- [DEC_OP] = "DEC_OP",
- [LSHIFT_OP] = "LEFT_OP",
- [RSHIFT_OP] = "RIGHT_OP",
- [LE_OP] = "LE_OP",
- [GE_OP] = "GE_OP",
- [EQ_OP] = "EQ_OP",
- [NE_OP] = "NE_OP",
- [AND_OP] = "AND_OP",
- [OR_OP] = "OR_OP",
- [MUL_ASSIGN] = "MUL_ASSIGN",
- [DIV_ASSIGN] = "DIV_ASSIGN",
- [MOD_ASSIGN] = "MOD_ASSIGN",
- [ADD_ASSIGN] = "ADD_ASSIGN",
- [SUB_ASSIGN] = "SUB_ASSIGN",
- [LSHIFT_ASSIGN] = "LSHIFT_ASSIGN",
- [RSHIFT_ASSIGN] = "RSHIFT_ASSIGN",
- [AND_ASSIGN] = "AND_ASSIGN",
- [XOR_ASSIGN] = "XOR_ASSIGN",
- [OR_ASSIGN] = "OR_ASSIGN",
- [TYPE_NAME] = "TYPE_NAME",
- [ELLIPSIS] = "ELLIPSIS",
- [CASE] = "CASE",
- [DEFAULT] = "DEFAULT",
- [IF] = "IF",
- [ELSE] = "ELSE",
- [SWITCH] = "SWITCH",
- [WHILE] = "WHILE",
- [DO] = "DO",
- [FOR] = "FOR",
- [GOTO] = "GOTO",
- [CONTINUE] = "CONTINUE",
- [BREAK] = "BREAK",
- [RETURN] = "RETURN",
- [EOFTOK] = "EOFTOK"
-};
-
-#endif
-
void init_lex(void)
{register struct keyword *bp;
@@ -312,12 +242,6 @@
}
return_token:
-#ifndef NDEBUG
- printf(!toknames[ch] ?
- "Token = (%u, '%s')\n" :
- "Token = (%u, '%s' %s)\n",
- (unsigned) ch, yytext, toknames[ch]);
-#endif
return yytoken = ch;
}
--
⑨