Script started on Fri Mar 14 03:09:59 2003
]0;marcel@flapjack:~/scrimclean/scrim[01;32mmarcel@flapjack [01;34mscrim $ [00m./script.sh
scrim% cat script.sh
#!/bin/sh

echo "scrim% cat script.sh"
cat script.sh ff
echo "scrim% ls"
ls
cat ff
echo "scrim% rm lex.yy.c y.tab.c"
rm lex.yy.c y.tab.c
cat ff
echo "scrim% make test_parser"
make test_parser
cat ff

for i in 1 2 3
do
echo "scrim% cat test_code/t$i.c"
cat test_code/t$i.c ff
echo "scrim% ./test_parser -f test_code/t$i.c"
./test_parser -f test_code/t$i.c ff
echo "scrim% ./test_parser -dl -ds -f test_code/t$i.c"
./test_parser -dl -ds -f test_code/t$i.c ff
echo "scrim% cat debug/lex.scrim.debug"
cat debug/lex.scrim.debug ff
echo "scrim% cat debug/st.scrim.xml"
cat debug/st.scrim.xml ff
done

for i in 1 2 3 4 5 6
do
echo "scrim% cat test_code/t$i.c"
cat test_code/t$i.c ff
echo "scrim% ./test_parser -dy -f test_code/t$i.c"
./test_parser -dy -f test_code/t$i.c
echo "scrim% cat debug/t1.list"
cat debug/t1.list ff
done
scrim% ls
CVS		      bst.cpp	 scanner.l	string.cpp	      symbolobjecttest.h   test.c	 vector.h
C_grammar.tab.h       bst.h	 script.sh	string.h	      symboltable.cpp	   test_code	 vectortest.cpp
C_grammar.y	      debug	 stack.cpp	stripreturn.pl	      symboltable.h	   test_drivers  vectortest.h
Makefile	      docs	 stack.h	symbolobject.cpp      symboltabletest.cpp  typescript	 y.tab.h
balancedtreetest.cpp  docxx.sty  stacktest.cpp	symbolobject.h	      symboltabletest.h    unitmain.cpp
balancedtreetest.h    ff	 stacktest.h	symbolobjecttest.cpp  symenum.h		   vector.cpp

scrim% rm lex.yy.c y.tab.c
rm: cannot remove `lex.yy.c': No such file or directory
rm: cannot remove `y.tab.c': No such file or directory

scrim% make test_parser
bison -dv -t C_grammar.y
C_grammar.y contains 1 shift/reduce conflict.
g++ -g -Wno-deprecated -c C_grammar.tab.c
g++ -g -Wno-deprecated -c test_drivers/test_parser_driver.cpp
flex scanner.l
g++ -g -Wno-deprecated -c lex.yy.c
g++ -g -Wno-deprecated -o stack.o -c stack.cpp
g++ -g -Wno-deprecated -o bst.o -c bst.cpp
g++ -g -Wno-deprecated -o string.o -c string.cpp
g++ -g -Wno-deprecated -o symbolobject.o -c symbolobject.cpp
g++ -g -Wno-deprecated -o symboltable.o -c symboltable.cpp
g++ -g -Wno-deprecated -o vector.o -c vector.cpp
g++ -g -Wno-deprecated -o test_parser C_grammar.tab.o lex.yy.o test_parser_driver.o stack.o bst.o string.o symbolobject.o symboltable.o vector.o

scrim% cat test_code/t1.c
int main()
{
     int i;
     char j;
     int l = 0xaaff;
     int k = 7L;
     unsigned long long b = ull;
     i = i + j;
     i = i * 2;
     i = 0723415;     
     i = 2147483648; // just right
     i = 429496729688; // way too big
     i = -589294967296;  // too small
     
     i = 0x8fffffff; // hex just right
     i = 0x100000000; // hex slightly too large
     i = 0x8eeeeeeeu; // with the u
     i = 0x4444l; //with the l
     i = 0xabcdef01890u; //way too big
}



scrim% ./test_parser -f test_code/t1.c
input file is test_code/t1.c
test_code/t1.c:12:9: token may not fit in int variable '429496729688'
test_code/t1.c:13:10: token may not fit in int variable '589294967296'
test_code/t1.c:16:9: token may not fit in int variable '0x100000000'
test_code/t1.c:17:9: token may not fit in int variable '0x8eeeeeeeu'
test_code/t1.c:19:9: token may not fit in int variable '0xabcdef01890u'
scrim% ./test_parser -dl -ds -f test_code/t1.c
input file is test_code/t1.c
lex debugging info will be dumped to  debug/lex.scrim.debug
symbol table XML will be dumped to debug/st.scrim.xml
test_code/t1.c:12:9: token may not fit in int variable '429496729688'
test_code/t1.c:13:10: token may not fit in int variable '589294967296'
test_code/t1.c:16:9: token may not fit in int variable '0x100000000'
test_code/t1.c:17:9: token may not fit in int variable '0x8eeeeeeeu'
test_code/t1.c:19:9: token may not fit in int variable '0xabcdef01890u'
scrim% cat debug/lex.scrim.debug
##################################################################
#
#
# This file has been generated by the scrim scanner.
#
# The format of the file is:
#
# line <line number>) token <token value> yytext <matched token>.
#
# Comments have been turned off by user.
#
#
##################################################################

line 1) token 293	yytext = "int"
line 1) token 257	yytext = "main"
line 1) token 40	yytext = "("
line 1) token 41	yytext = ")"
line 2) token 123	yytext = "{"
line 3) token 293	yytext = "int"
line 3) token 257	yytext = "i"
line 3) token 59	yytext = ";"
line 4) token 291	yytext = "char"
line 4) token 257	yytext = "j"
line 4) token 59	yytext = ";"
line 5) token 293	yytext = "int"
line 5) token 257	yytext = "l"
line 5) token 61	yytext = "="
line 5) token 258	yytext = "0xaaff"
line 5) token 59	yytext = ";"
line 6) token 293	yytext = "int"
line 6) token 257	yytext = "k"
line 6) token 61	yytext = "="
line 6) token 258	yytext = "7L"
line 6) token 59	yytext = ";"
line 7) token 296	yytext = "unsigned"
line 7) token 294	yytext = "long"
line 7) token 294	yytext = "long"
line 7) token 257	yytext = "b"
line 7) token 61	yytext = "="
line 7) token 257	yytext = "ull"
line 7) token 59	yytext = ";"
line 8) token 257	yytext = "i"
line 8) token 61	yytext = "="
line 8) token 257	yytext = "i"
line 8) token 43	yytext = "+"
line 8) token 257	yytext = "j"
line 8) token 59	yytext = ";"
line 9) token 257	yytext = "i"
line 9) token 61	yytext = "="
line 9) token 257	yytext = "i"
line 9) token 42	yytext = "*"
line 9) token 258	yytext = "2"
line 9) token 59	yytext = ";"
line 10) token 257	yytext = "i"
line 10) token 61	yytext = "="
line 10) token 258	yytext = "0723415"
line 10) token 59	yytext = ";"
line 11) token 257	yytext = "i"
line 11) token 61	yytext = "="
line 11) token 258	yytext = "2147483648"
line 11) token 59	yytext = ";"
line 12) token 257	yytext = "i"
line 12) token 61	yytext = "="
line 12) token 258	yytext = "429496729688"
line 12) token 59	yytext = ";"
line 13) token 257	yytext = "i"
line 13) token 61	yytext = "="
line 13) token 45	yytext = "-"
line 13) token 258	yytext = "589294967296"
line 13) token 59	yytext = ";"
line 15) token 257	yytext = "i"
line 15) token 61	yytext = "="
line 15) token 258	yytext = "0x8fffffff"
line 15) token 59	yytext = ";"
line 16) token 257	yytext = "i"
line 16) token 61	yytext = "="
line 16) token 258	yytext = "0x100000000"
line 16) token 59	yytext = ";"
line 17) token 257	yytext = "i"
line 17) token 61	yytext = "="
line 17) token 258	yytext = "0x8eeeeeeeu"
line 17) token 59	yytext = ";"
line 18) token 257	yytext = "i"
line 18) token 61	yytext = "="
line 18) token 258	yytext = "0x4444l"
line 18) token 59	yytext = ";"
line 19) token 257	yytext = "i"
line 19) token 61	yytext = "="
line 19) token 258	yytext = "0xabcdef01890u"
line 19) token 59	yytext = ";"
line 20) token 125	yytext = "}"

scrim% cat debug/st.scrim.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<scrim_symbol_table>
<symboltable>
<scope level="0">
<node key="main" type="root">
<symbol id="main" line="1" col="8" type="int"></symbol>
</node>
</scope>
</symboltable>
<symboltable>
<scope level="1">
<node key="j" type="root">
<symbol id="j" line="4" col="11" type="char"></symbol>
<node key="i" type="left">
<symbol id="i" line="3" col="10" type="int"></symbol>
<node key="b" type="left">
<symbol id="b" line="7" col="25" type="long"></symbol>
</node>
</node>
<node key="l" type="right">
<symbol id="l" line="5" col="10" type="int"></symbol>
<node key="k" type="left">
<symbol id="k" line="6" col="10" type="int"></symbol>
</node>
<node key="ull" type="right">
<symbol id="ull" line="7" col="31" type="long"></symbol>
</node>
</node>
</node>
</scope>
<scope level="0">
<node key="main" type="root">
<symbol id="main" line="1" col="8" type="int"></symbol>
</node>
</scope>
</symboltable>
</scrim_symbol_table>

scrim% cat test_code/t2.c
extern char *yytext;


/* --------------------------------
-----------------------------------------*/
enum {
    ONE,
    NO_IM_ONE,
    SO_AM_I_ONE_OR_TWO
};
int main (int argc,char **argv)
{
    int i;
    float j;
    char k;
    
`
    i = 0x4 + 0x5;
    i = 4L + 01l;
    j = 4.05;
    j = 4.06e90;
    j = L7e8;
    L"Hello World";
    k = ONE + 1;
    k += SO_AM_I_ONE_OR_TWO;
    !!S
}

/* -------------------------------------------------------------------------*/
void display_lex_debug_file_header (char *ptr, char * input_file_name)
{
    if (ptr)
    {
        fprintf(ptr, "###################################################\n");
        fprintf(ptr, "#\n");
        fprintf(ptr, "# This file has been generated by the scrim lexical\n");
        fprintf(ptr, "# anaylizer on the file <%s>.\n", input_file_name);  
        fprintf(ptr, "#\n");
        fprintf(ptr, "# The format of the file is:\n");
        fprintf(ptr, "#\n");
        fprintf(ptr, "# - # line number) Original source code.\n");
        fprintf(ptr, "# -   List of matched tokens on that line of source code.\n");
        fprintf(ptr, "#\n");
        fprintf(ptr, "# All comments are parsed, but their token values are\n");
        fprintf(ptr, "# not displayed.\n");
        fprintf(ptr, "#\n");
        fprintf(ptr, "###################################################\n");
        fprintf(ptr, "\n");
        fprintf(ptr, "# %d)\t", line_number);
    }
}
int test_func(int i)
{
    i = i+7-3*9;
    return i;
}

scrim% ./test_parser -f test_code/t2.c
input file is test_code/t2.c
test_code/t2.c:17:1: error before '`' token
test_code/t2.c:22:9: undeclared variable 'L7e8'
test_code/t2.c:37:57: undeclared variable 'input_file_name'
test_code/t2.c:49:33: undeclared variable 'line_number'
scrim% ./test_parser -dl -ds -f test_code/t2.c
input file is test_code/t2.c
lex debugging info will be dumped to  debug/lex.scrim.debug
symbol table XML will be dumped to debug/st.scrim.xml
test_code/t2.c:17:1: error before '`' token
test_code/t2.c:22:9: undeclared variable 'L7e8'
test_code/t2.c:37:57: undeclared variable 'input_file_name'
test_code/t2.c:49:33: undeclared variable 'line_number'
scrim% cat debug/lex.scrim.debug
##################################################################
#
#
# This file has been generated by the scrim scanner.
#
# The format of the file is:
#
# line <line number>) token <token value> yytext <matched token>.
#
# Comments have been turned off by user.
#
#
##################################################################

line 1) token 287	yytext = "extern"
line 1) token 291	yytext = "char"
line 1) token 42	yytext = "*"
line 1) token 257	yytext = "yytext"
line 1) token 59	yytext = ";"
line 6) token 304	yytext = "enum"
line 6) token 123	yytext = "{"
line 7) token 257	yytext = "ONE"
line 7) token 44	yytext = ","
line 8) token 257	yytext = "NO_IM_ONE"
line 8) token 44	yytext = ","
line 9) token 257	yytext = "SO_AM_I_ONE_OR_TWO"
line 10) token 125	yytext = "}"
line 10) token 59	yytext = ";"
line 11) token 293	yytext = "int"
line 11) token 257	yytext = "main"
line 11) token 40	yytext = "("
line 11) token 293	yytext = "int"
line 11) token 257	yytext = "argc"
line 11) token 44	yytext = ","
line 11) token 291	yytext = "char"
line 11) token 42	yytext = "*"
line 11) token 42	yytext = "*"
line 11) token 257	yytext = "argv"
line 11) token 41	yytext = ")"
line 12) token 123	yytext = "{"
line 13) token 293	yytext = "int"
line 13) token 257	yytext = "i"
line 13) token 59	yytext = ";"
line 14) token 297	yytext = "float"
line 14) token 257	yytext = "j"
line 14) token 59	yytext = ";"
line 15) token 291	yytext = "char"
line 15) token 257	yytext = "k"
line 15) token 59	yytext = ";"
line 17) ERROR		yytext = "`"
line 18) token 257	yytext = "i"
line 18) token 61	yytext = "="
line 18) token 258	yytext = "0x4"
line 18) token 43	yytext = "+"
line 18) token 258	yytext = "0x5"
line 18) token 59	yytext = ";"
line 19) token 257	yytext = "i"
line 19) token 61	yytext = "="
line 19) token 258	yytext = "4L"
line 19) token 43	yytext = "+"
line 19) token 258	yytext = "01l"
line 19) token 59	yytext = ";"
line 20) token 257	yytext = "j"
line 20) token 61	yytext = "="
line 20) token 259	yytext = "4.05"
line 20) token 59	yytext = ";"
line 21) token 257	yytext = "j"
line 21) token 61	yytext = "="
line 21) token 259	yytext = "4.06e90"
line 21) token 59	yytext = ";"
line 22) token 257	yytext = "j"
line 22) token 61	yytext = "="
line 22) token 257	yytext = "L7e8"
line 22) token 59	yytext = ";"
line 23) token 262	yytext = "L"Hello World""
line 23) token 59	yytext = ";"
line 24) token 257	yytext = "k"
line 24) token 61	yytext = "="
line 24) token 257	yytext = "ONE"
line 24) token 43	yytext = "+"
line 24) token 258	yytext = "1"
line 24) token 59	yytext = ";"
line 25) token 257	yytext = "k"
line 25) token 278	yytext = "+="
line 25) token 257	yytext = "SO_AM_I_ONE_OR_TWO"
line 25) token 59	yytext = ";"
line 26) DUMP_ST	yytext = "!!S"
line 27) token 125	yytext = "}"
line 30) token 301	yytext = "void"
line 30) token 257	yytext = "display_lex_debug_file_header"
line 30) token 40	yytext = "("
line 30) token 291	yytext = "char"
line 30) token 42	yytext = "*"
line 30) token 257	yytext = "ptr"
line 30) token 44	yytext = ","
line 30) token 291	yytext = "char"
line 30) token 42	yytext = "*"
line 30) token 257	yytext = "input_file_name"
line 30) token 41	yytext = ")"
line 31) token 123	yytext = "{"
line 32) token 309	yytext = "if"
line 32) token 40	yytext = "("
line 32) token 257	yytext = "ptr"
line 32) token 41	yytext = ")"
line 33) token 123	yytext = "{"
line 34) token 257	yytext = "fprintf"
line 34) token 40	yytext = "("
line 34) token 257	yytext = "ptr"
line 34) token 44	yytext = ","
line 34) token 262	yytext = ""###################################################\n""
line 34) token 41	yytext = ")"
line 34) token 59	yytext = ";"
line 35) token 257	yytext = "fprintf"
line 35) token 40	yytext = "("
line 35) token 257	yytext = "ptr"
line 35) token 44	yytext = ","
line 35) token 262	yytext = ""#\n""
line 35) token 41	yytext = ")"
line 35) token 59	yytext = ";"
line 36) token 257	yytext = "fprintf"
line 36) token 40	yytext = "("
line 36) token 257	yytext = "ptr"
line 36) token 44	yytext = ","
line 36) token 262	yytext = ""# This file has been generated by the scrim lexical\n""
line 36) token 41	yytext = ")"
line 36) token 59	yytext = ";"
line 37) token 257	yytext = "fprintf"
line 37) token 40	yytext = "("
line 37) token 257	yytext = "ptr"
line 37) token 44	yytext = ","
line 37) token 262	yytext = ""# anaylizer on the file <%s>.\n""
line 37) token 44	yytext = ","
line 37) token 257	yytext = "input_file_name"
line 37) token 41	yytext = ")"
line 37) token 59	yytext = ";"
line 38) token 257	yytext = "fprintf"
line 38) token 40	yytext = "("
line 38) token 257	yytext = "ptr"
line 38) token 44	yytext = ","
line 38) token 262	yytext = ""#\n""
line 38) token 41	yytext = ")"
line 38) token 59	yytext = ";"
line 39) token 257	yytext = "fprintf"
line 39) token 40	yytext = "("
line 39) token 257	yytext = "ptr"
line 39) token 44	yytext = ","
line 39) token 262	yytext = ""# The format of the file is:\n""
line 39) token 41	yytext = ")"
line 39) token 59	yytext = ";"
line 40) token 257	yytext = "fprintf"
line 40) token 40	yytext = "("
line 40) token 257	yytext = "ptr"
line 40) token 44	yytext = ","
line 40) token 262	yytext = ""#\n""
line 40) token 41	yytext = ")"
line 40) token 59	yytext = ";"
line 41) token 257	yytext = "fprintf"
line 41) token 40	yytext = "("
line 41) token 257	yytext = "ptr"
line 41) token 44	yytext = ","
line 41) token 262	yytext = ""# - # line number) Original source code.\n""
line 41) token 41	yytext = ")"
line 41) token 59	yytext = ";"
line 42) token 257	yytext = "fprintf"
line 42) token 40	yytext = "("
line 42) token 257	yytext = "ptr"
line 42) token 44	yytext = ","
line 42) token 262	yytext = ""# -   List of matched tokens on that line of source code.\n""
line 42) token 41	yytext = ")"
line 42) token 59	yytext = ";"
line 43) token 257	yytext = "fprintf"
line 43) token 40	yytext = "("
line 43) token 257	yytext = "ptr"
line 43) token 44	yytext = ","
line 43) token 262	yytext = ""#\n""
line 43) token 41	yytext = ")"
line 43) token 59	yytext = ";"
line 44) token 257	yytext = "fprintf"
line 44) token 40	yytext = "("
line 44) token 257	yytext = "ptr"
line 44) token 44	yytext = ","
line 44) token 262	yytext = ""# All comments are parsed, but their token values are\n""
line 44) token 41	yytext = ")"
line 44) token 59	yytext = ";"
line 45) token 257	yytext = "fprintf"
line 45) token 40	yytext = "("
line 45) token 257	yytext = "ptr"
line 45) token 44	yytext = ","
line 45) token 262	yytext = ""# not displayed.\n""
line 45) token 41	yytext = ")"
line 45) token 59	yytext = ";"
line 46) token 257	yytext = "fprintf"
line 46) token 40	yytext = "("
line 46) token 257	yytext = "ptr"
line 46) token 44	yytext = ","
line 46) token 262	yytext = ""#\n""
line 46) token 41	yytext = ")"
line 46) token 59	yytext = ";"
line 47) token 257	yytext = "fprintf"
line 47) token 40	yytext = "("
line 47) token 257	yytext = "ptr"
line 47) token 44	yytext = ","
line 47) token 262	yytext = ""###################################################\n""
line 47) token 41	yytext = ")"
line 47) token 59	yytext = ";"
line 48) token 257	yytext = "fprintf"
line 48) token 40	yytext = "("
line 48) token 257	yytext = "ptr"
line 48) token 44	yytext = ","
line 48) token 262	yytext = ""\n""
line 48) token 41	yytext = ")"
line 48) token 59	yytext = ";"
line 49) token 257	yytext = "fprintf"
line 49) token 40	yytext = "("
line 49) token 257	yytext = "ptr"
line 49) token 44	yytext = ","
line 49) token 262	yytext = ""# %d)\t""
line 49) token 44	yytext = ","
line 49) token 257	yytext = "line_number"
line 49) token 41	yytext = ")"
line 49) token 59	yytext = ";"
line 50) token 125	yytext = "}"
line 51) token 125	yytext = "}"
line 52) token 293	yytext = "int"
line 52) token 257	yytext = "test_func"
line 52) token 40	yytext = "("
line 52) token 293	yytext = "int"
line 52) token 257	yytext = "i"
line 52) token 41	yytext = ")"
line 53) token 123	yytext = "{"
line 54) token 257	yytext = "i"
line 54) token 61	yytext = "="
line 54) token 257	yytext = "i"
line 54) token 43	yytext = "+"
line 54) token 258	yytext = "7"
line 54) token 45	yytext = "-"
line 54) token 258	yytext = "3"
line 54) token 42	yytext = "*"
line 54) token 258	yytext = "9"
line 54) token 59	yytext = ";"
line 55) token 318	yytext = "return"
line 55) token 257	yytext = "i"
line 55) token 59	yytext = ";"
line 56) token 125	yytext = "}"

scrim% cat debug/st.scrim.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<scrim_symbol_table>
<symboltable>
<scope level="0">
<node key="ONE" type="root">
<symbol id="ONE" line="7" col="7" type="enum"></symbol>
<node key="NO_IM_ONE" type="left">
<symbol id="NO_IM_ONE" line="8" col="13" type="enum"></symbol>
</node>
<node key="main" type="right">
<symbol id="main" line="11" col="8" type="int"></symbol>
<node key="argc" type="left">
<symbol id="argc" line="11" col="18" type="int"></symbol>
<node key="SO_AM_I_ONE_OR_TWO" type="left">
<symbol id="SO_AM_I_ONE_OR_TWO" line="9" col="22" type="enum"></symbol>
</node>
<node key="argv" type="right">
<symbol id="argv" line="11" col="30" type="char"></symbol>
</node>
</node>
<node key="yytext" type="right">
<symbol id="yytext" line="1" col="19" type="char"></symbol>
</node>
</node>
</node>
</scope>
</symboltable>
<symboltable>
<scope level="1">
<node key="j" type="root">
<symbol id="j" line="14" col="11" type="float"></symbol>
<node key="i" type="left">
<symbol id="i" line="13" col="9" type="int"></symbol>
<node key="L7e8" type="left">
<symbol id="L7e8" line="22" col="12" type=""></symbol>
</node>
</node>
<node key="k" type="right">
<symbol id="k" line="15" col="10" type="char"></symbol>
</node>
</node>
</scope>
<scope level="0">
<node key="ONE" type="root">
<symbol id="ONE" line="7" col="7" type="enum"></symbol>
<node key="NO_IM_ONE" type="left">
<symbol id="NO_IM_ONE" line="8" col="13" type="enum"></symbol>
</node>
<node key="main" type="right">
<symbol id="main" line="11" col="8" type="int"></symbol>
<node key="argc" type="left">
<symbol id="argc" line="11" col="18" type="int"></symbol>
<node key="SO_AM_I_ONE_OR_TWO" type="left">
<symbol id="SO_AM_I_ONE_OR_TWO" line="9" col="22" type="enum"></symbol>
</node>
<node key="argv" type="right">
<symbol id="argv" line="11" col="30" type="char"></symbol>
</node>
</node>
<node key="yytext" type="right">
<symbol id="yytext" line="1" col="19" type="char"></symbol>
</node>
</node>
</node>
</scope>
</symboltable>
<symboltable>
<scope level="1">
<node key="j" type="root">
<symbol id="j" line="14" col="11" type="float"></symbol>
<node key="i" type="left">
<symbol id="i" line="13" col="9" type="int"></symbol>
<node key="L7e8" type="left">
<symbol id="L7e8" line="22" col="12" type=""></symbol>
</node>
</node>
<node key="k" type="right">
<symbol id="k" line="15" col="10" type="char"></symbol>
</node>
</node>
</scope>
<scope level="0">
<node key="ONE" type="root">
<symbol id="ONE" line="7" col="7" type="enum"></symbol>
<node key="NO_IM_ONE" type="left">
<symbol id="NO_IM_ONE" line="8" col="13" type="enum"></symbol>
</node>
<node key="main" type="right">
<symbol id="main" line="11" col="8" type="int"></symbol>
<node key="argc" type="left">
<symbol id="argc" line="11" col="18" type="int"></symbol>
<node key="SO_AM_I_ONE_OR_TWO" type="left">
<symbol id="SO_AM_I_ONE_OR_TWO" line="9" col="22" type="enum"></symbol>
</node>
<node key="argv" type="right">
<symbol id="argv" line="11" col="30" type="char"></symbol>
</node>
</node>
<node key="yytext" type="right">
<symbol id="yytext" line="1" col="19" type="char"></symbol>
</node>
</node>
</node>
</scope>
</symboltable>
<symboltable>
<scope level="0">
<node key="ONE" type="root">
<symbol id="ONE" line="7" col="7" type="enum"></symbol>
<node key="NO_IM_ONE" type="left">
<symbol id="NO_IM_ONE" line="8" col="13" type="enum"></symbol>
</node>
<node key="main" type="right">
<symbol id="main" line="11" col="8" type="int"></symbol>
<node key="argc" type="left">
<symbol id="argc" line="11" col="18" type="int"></symbol>
<node key="SO_AM_I_ONE_OR_TWO" type="left">
<symbol id="SO_AM_I_ONE_OR_TWO" line="9" col="22" type="enum"></symbol>
</node>
<node key="argv" type="right">
<symbol id="argv" line="11" col="30" type="char"></symbol>
</node>
</node>
<node key="yytext" type="right">
<symbol id="yytext" line="1" col="19" type="char"></symbol>
</node>
</node>
</node>
</scope>
</symboltable>
<symboltable>
<scope level="1">
<node key="ptr" type="root">
<symbol id="ptr" line="32" col="11" type="char"></symbol>
</node>
</scope>
<scope level="0">
<node key="ONE" type="root">
<symbol id="ONE" line="7" col="7" type="enum"></symbol>
<node key="NO_IM_ONE" type="left">
<symbol id="NO_IM_ONE" line="8" col="13" type="enum"></symbol>
</node>
<node key="main" type="right">
<symbol id="main" line="11" col="8" type="int"></symbol>
<node key="argc" type="left">
<symbol id="argc" line="11" col="18" type="int"></symbol>
<node key="SO_AM_I_ONE_OR_TWO" type="left">
<symbol id="SO_AM_I_ONE_OR_TWO" line="9" col="22" type="enum"></symbol>
</node>
<node key="argv" type="right">
<symbol id="argv" line="11" col="30" type="char"></symbol>
</node>
</node>
<node key="yytext" type="right">
<symbol id="yytext" line="1" col="19" type="char"></symbol>
</node>
</node>
</node>
</scope>
</symboltable>
<symboltable>
<scope level="2">
<node key="input_file_name" type="root">
<symbol id="input_file_name" line="37" col="71" type=""></symbol>
<node key="fprintf" type="left">
<symbol id="fprintf" line="34" col="15" type="char"></symbol>
</node>
<node key="line_number" type="right">
<symbol id="line_number" line="49" col="43" type=""></symbol>
</node>
</node>
</scope>
<scope level="1">
<node key="ptr" type="root">
<symbol id="ptr" line="32" col="11" type="char"></symbol>
</node>
</scope>
<scope level="0">
<node key="ONE" type="root">
<symbol id="ONE" line="7" col="7" type="enum"></symbol>
<node key="NO_IM_ONE" type="left">
<symbol id="NO_IM_ONE" line="8" col="13" type="enum"></symbol>
</node>
<node key="main" type="right">
<symbol id="main" line="11" col="8" type="int"></symbol>
<node key="argc" type="left">
<symbol id="argc" line="11" col="18" type="int"></symbol>
<node key="SO_AM_I_ONE_OR_TWO" type="left">
<symbol id="SO_AM_I_ONE_OR_TWO" line="9" col="22" type="enum"></symbol>
</node>
<node key="argv" type="right">
<symbol id="argv" line="11" col="30" type="char"></symbol>
</node>
</node>
<node key="yytext" type="right">
<symbol id="yytext" line="1" col="19" type="char"></symbol>
</node>
</node>
</node>
</scope>
</symboltable>
<symboltable>
<scope level="1">
<node key="ptr" type="root">
<symbol id="ptr" line="32" col="11" type="char"></symbol>
</node>
</scope>
<scope level="0">
<node key="ONE" type="root">
<symbol id="ONE" line="7" col="7" type="enum"></symbol>
<node key="NO_IM_ONE" type="left">
<symbol id="NO_IM_ONE" line="8" col="13" type="enum"></symbol>
</node>
<node key="main" type="right">
<symbol id="main" line="11" col="8" type="int"></symbol>
<node key="argc" type="left">
<symbol id="argc" line="11" col="18" type="int"></symbol>
<node key="SO_AM_I_ONE_OR_TWO" type="left">
<symbol id="SO_AM_I_ONE_OR_TWO" line="9" col="22" type="enum"></symbol>
</node>
<node key="argv" type="right">
<symbol id="argv" line="11" col="30" type="char"></symbol>
</node>
</node>
<node key="yytext" type="right">
<symbol id="yytext" line="1" col="19" type="char"></symbol>
</node>
</node>
</node>
</scope>
</symboltable>
<symboltable>
<scope level="0">
<node key="ONE" type="root">
<symbol id="ONE" line="7" col="7" type="enum"></symbol>
<node key="NO_IM_ONE" type="left">
<symbol id="NO_IM_ONE" line="8" col="13" type="enum"></symbol>
</node>
<node key="main" type="right">
<symbol id="main" line="11" col="8" type="int"></symbol>
<node key="argc" type="left">
<symbol id="argc" line="11" col="18" type="int"></symbol>
<node key="SO_AM_I_ONE_OR_TWO" type="left">
<symbol id="SO_AM_I_ONE_OR_TWO" line="9" col="22" type="enum"></symbol>
</node>
<node key="argv" type="right">
<symbol id="argv" line="11" col="30" type="char"></symbol>
</node>
</node>
<node key="yytext" type="right">
<symbol id="yytext" line="1" col="19" type="char"></symbol>
</node>
</node>
</node>
</scope>
</symboltable>
<symboltable>
<scope level="1">
<node key="i" type="root">
<symbol id="i" line="54" col="5" type="int"></symbol>
</node>
</scope>
<scope level="0">
<node key="ONE" type="root">
<symbol id="ONE" line="7" col="7" type="enum"></symbol>
<node key="NO_IM_ONE" type="left">
<symbol id="NO_IM_ONE" line="8" col="13" type="enum"></symbol>
</node>
<node key="main" type="right">
<symbol id="main" line="11" col="8" type="int"></symbol>
<node key="argc" type="left">
<symbol id="argc" line="11" col="18" type="int"></symbol>
<node key="SO_AM_I_ONE_OR_TWO" type="left">
<symbol id="SO_AM_I_ONE_OR_TWO" line="9" col="22" type="enum"></symbol>
</node>
<node key="argv" type="right">
<symbol id="argv" line="11" col="30" type="char"></symbol>
</node>
</node>
<node key="yytext" type="right">
<symbol id="yytext" line="1" col="19" type="char"></symbol>
</node>
</node>
</node>
</scope>
</symboltable>
</scrim_symbol_table>

scrim% cat test_code/t3.c
static char daytab[2][13] = {
  {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
  {0, 31,
!!S
   28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};

struct point {
  int x;
  int y;
}
!!S
struct rect {
  struct point pt1;
  struct point pt2;
}

struct key {
  char *word;
  int count
} keytab[] = {
  "auto", 0,
  !!S
  "break", 0,
  "case", 0
};

'Z
main()
{
  int (*daytab)[13];
}
  

scrim% ./test_parser -f test_code/t3.c
input file is test_code/t3.c
test_code/t3.c:21:1: parse error 
:} keytab[] = {
:^
scrim% ./test_parser -dl -ds -f test_code/t3.c
input file is test_code/t3.c
lex debugging info will be dumped to  debug/lex.scrim.debug
symbol table XML will be dumped to debug/st.scrim.xml
test_code/t3.c:21:1: parse error 
:} keytab[] = {
:^
scrim% cat debug/lex.scrim.debug
##################################################################
#
#
# This file has been generated by the scrim scanner.
#
# The format of the file is:
#
# line <line number>) token <token value> yytext <matched token>.
#
# Comments have been turned off by user.
#
#
##################################################################

line 1) token 288	yytext = "static"
line 1) token 291	yytext = "char"
line 1) token 257	yytext = "daytab"
line 1) token 91	yytext = "["
line 1) token 258	yytext = "2"
line 1) token 93	yytext = "]"
line 1) token 91	yytext = "["
line 1) token 258	yytext = "13"
line 1) token 93	yytext = "]"
line 1) token 61	yytext = "="
line 1) token 123	yytext = "{"
line 2) token 123	yytext = "{"
line 2) token 258	yytext = "0"
line 2) token 44	yytext = ","
line 2) token 258	yytext = "31"
line 2) token 44	yytext = ","
line 2) token 258	yytext = "28"
line 2) token 44	yytext = ","
line 2) token 258	yytext = "31"
line 2) token 44	yytext = ","
line 2) token 258	yytext = "30"
line 2) token 44	yytext = ","
line 2) token 258	yytext = "31"
line 2) token 44	yytext = ","
line 2) token 258	yytext = "30"
line 2) token 44	yytext = ","
line 2) token 258	yytext = "31"
line 2) token 44	yytext = ","
line 2) token 258	yytext = "31"
line 2) token 44	yytext = ","
line 2) token 258	yytext = "30"
line 2) token 44	yytext = ","
line 2) token 258	yytext = "31"
line 2) token 44	yytext = ","
line 2) token 258	yytext = "30"
line 2) token 44	yytext = ","
line 2) token 258	yytext = "31"
line 2) token 125	yytext = "}"
line 2) token 44	yytext = ","
line 3) token 123	yytext = "{"
line 3) token 258	yytext = "0"
line 3) token 44	yytext = ","
line 3) token 258	yytext = "31"
line 3) token 44	yytext = ","
line 4) DUMP_ST	yytext = "!!S"
line 5) token 258	yytext = "28"
line 5) token 44	yytext = ","
line 5) token 258	yytext = "31"
line 5) token 44	yytext = ","
line 5) token 258	yytext = "30"
line 5) token 44	yytext = ","
line 5) token 258	yytext = "31"
line 5) token 44	yytext = ","
line 5) token 258	yytext = "30"
line 5) token 44	yytext = ","
line 5) token 258	yytext = "31"
line 5) token 44	yytext = ","
line 5) token 258	yytext = "31"
line 5) token 44	yytext = ","
line 5) token 258	yytext = "30"
line 5) token 44	yytext = ","
line 5) token 258	yytext = "31"
line 5) token 44	yytext = ","
line 5) token 258	yytext = "30"
line 5) token 44	yytext = ","
line 5) token 258	yytext = "31"
line 5) token 125	yytext = "}"
line 6) token 125	yytext = "}"
line 6) token 59	yytext = ";"
line 8) token 302	yytext = "struct"
line 8) token 257	yytext = "point"
line 8) token 123	yytext = "{"
line 9) token 293	yytext = "int"
line 9) token 257	yytext = "x"
line 9) token 59	yytext = ";"
line 10) token 293	yytext = "int"
line 10) token 257	yytext = "y"
line 10) token 59	yytext = ";"
line 11) token 125	yytext = "}"
line 12) DUMP_ST	yytext = "!!S"
line 13) token 302	yytext = "struct"
line 13) token 257	yytext = "rect"
line 13) token 123	yytext = "{"
line 14) token 302	yytext = "struct"
line 14) token 257	yytext = "point"
line 14) token 257	yytext = "pt1"
line 14) token 59	yytext = ";"
line 15) token 302	yytext = "struct"
line 15) token 257	yytext = "point"
line 15) token 257	yytext = "pt2"
line 15) token 59	yytext = ";"
line 16) token 125	yytext = "}"
line 18) token 302	yytext = "struct"
line 18) token 257	yytext = "key"
line 18) token 123	yytext = "{"
line 19) token 291	yytext = "char"
line 19) token 42	yytext = "*"
line 19) token 257	yytext = "word"
line 19) token 59	yytext = ";"
line 20) token 293	yytext = "int"
line 20) token 257	yytext = "count"
line 21) token 125	yytext = "}"

scrim% cat debug/st.scrim.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<scrim_symbol_table>
<symboltable>
<scope level="0">
<node key="daytab" type="root">
<symbol id="daytab" line="1" col="18" type="char"></symbol>
</node>
</scope>
</symboltable>
<symboltable>
<scope level="1">
</scope>
<scope level="0">
<node key="daytab" type="root">
<symbol id="daytab" line="1" col="18" type="char"></symbol>
</node>
</scope>
</symboltable>
<symboltable>
<scope level="2">
</scope>
<scope level="1">
</scope>
<scope level="0">
<node key="daytab" type="root">
<symbol id="daytab" line="1" col="18" type="char"></symbol>
</node>
</scope>
</symboltable>
<symboltable>
<scope level="1">
</scope>
<scope level="0">
<node key="daytab" type="root">
<symbol id="daytab" line="1" col="18" type="char"></symbol>
</node>
</scope>
</symboltable>
<symboltable>
<scope level="2">
</scope>
<scope level="1">
</scope>
<scope level="0">
<node key="daytab" type="root">
<symbol id="daytab" line="1" col="18" type="char"></symbol>
</node>
</scope>
</symboltable>
<symboltable>
<scope level="2">
</scope>
<scope level="1">
</scope>
<scope level="0">
<node key="daytab" type="root">
<symbol id="daytab" line="1" col="18" type="char"></symbol>
</node>
</scope>
</symboltable>
<symboltable>
<scope level="1">
</scope>
<scope level="0">
<node key="daytab" type="root">
<symbol id="daytab" line="1" col="18" type="char"></symbol>
</node>
</scope>
</symboltable>
<symboltable>
<scope level="0">
<node key="daytab" type="root">
<symbol id="daytab" line="1" col="18" type="char"></symbol>
</node>
</scope>
</symboltable>
<symboltable>
<scope level="1">
<node key="x" type="root">
<symbol id="x" line="9" col="7" type="int"></symbol>
<node key="y" type="right">
<symbol id="y" line="10" col="7" type="int"></symbol>
</node>
</node>
</scope>
<scope level="0">
<node key="daytab" type="root">
<symbol id="daytab" line="1" col="18" type="char"></symbol>
</node>
</scope>
</symboltable>
<symboltable>
<scope level="0">
<node key="daytab" type="root">
<symbol id="daytab" line="1" col="18" type="char"></symbol>
</node>
</scope>
</symboltable>
<symboltable>
<scope level="0">
<node key="daytab" type="root">
<symbol id="daytab" line="1" col="18" type="char"></symbol>
</node>
</scope>
</symboltable>
<symboltable>
<scope level="1">
<node key="pt1" type="root">
<symbol id="pt1" line="14" col="18" type="struct"></symbol>
<node key="point" type="left">
<symbol id="point" line="14" col="14" type="struct"></symbol>
</node>
<node key="pt2" type="right">
<symbol id="pt2" line="15" col="18" type="struct"></symbol>
</node>
</node>
</scope>
<scope level="0">
<node key="daytab" type="root">
<symbol id="daytab" line="1" col="18" type="char"></symbol>
</node>
</scope>
</symboltable>
<symboltable>
<scope level="0">
<node key="daytab" type="root">
<symbol id="daytab" line="1" col="18" type="char"></symbol>
</node>
</scope>
</symboltable>
<symboltable>
<scope level="1">
<node key="word" type="root">
<symbol id="word" line="19" col="12" type="char"></symbol>
<node key="count" type="left">
<symbol id="count" line="20" col="11" type="int"></symbol>
</node>
</node>
</scope>
<scope level="0">
<node key="daytab" type="root">
<symbol id="daytab" line="1" col="18" type="char"></symbol>
</node>
</scope>
</symboltable>
</scrim_symbol_table>

scrim% cat test_code/t1.c
int main()
{
     int i;
     char j;
     int l = 0xaaff;
     int k = 7L;
     unsigned long long b = ull;
     i = i + j;
     i = i * 2;
     i = 0723415;     
     i = 2147483648; // just right
     i = 429496729688; // way too big
     i = -589294967296;  // too small
     
     i = 0x8fffffff; // hex just right
     i = 0x100000000; // hex slightly too large
     i = 0x8eeeeeeeu; // with the u
     i = 0x4444l; //with the l
     i = 0xabcdef01890u; //way too big
}



scrim% ./test_parser -dy -f test_code/t1.c
input file is test_code/t1.c
source code and reductions will be dumped to  debug/t1.list
test_code/t1.c:12:9: token may not fit in int variable '429496729688'
test_code/t1.c:13:10: token may not fit in int variable '589294967296'
test_code/t1.c:16:9: token may not fit in int variable '0x100000000'
test_code/t1.c:17:9: token may not fit in int variable '0x8eeeeeeeu'
test_code/t1.c:19:9: token may not fit in int variable '0xabcdef01890u'
scrim% cat debug/t1.list
###################################################        
#                                                          
# This file has been generated by the scrim parser         
# on the file debug/t1.list.                       
#                                                          
# The format of the file is:                               
#   reductions                                             
#   <left hand side>  <------- <right hand side>           
# - # line number) Original line of source code.           
#     a line of source code is output each time a new line 
#     is reached by the scanner                            
# -   List of matched tokens on that line of source code.  
#                                                          
# All comments are parsed, but their token values are      
# not displayed.                                           
#                                                          
###################################################        
                                                           
               type_specifier <------- INT_tok
       declaration_specifiers <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
            direct_declarator <------- direct_declarator '(' ')'
# 1) int main()

                   declarator <------- direct_declarator
# 2) {

               type_specifier <------- INT_tok
       declaration_specifiers <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- direct_declarator
              init_declarator <------- declarator
         init_declarator_list <------- init_declarator
                  declaration <------- declaration_specifiers init_declarator_list ';'
             declaration_list <------- declaration ';'
# 3)      int i;

               type_specifier <------- CHAR_tok
       declaration_specifiers <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- direct_declarator
              init_declarator <------- declarator
         init_declarator_list <------- init_declarator
                  declaration <------- declaration_specifiers init_declarator_list ';'
             declaration_list <------- declaration_list declaration ';'
# 4)      char j;

               type_specifier <------- INT_tok
       declaration_specifiers <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- direct_declarator
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
              init_declarator <------- declarator '=' initializer
         init_declarator_list <------- init_declarator
                  declaration <------- declaration_specifiers init_declarator_list ';'
             declaration_list <------- declaration_list declaration ';'
# 5)      int l = 0xaaff;

               type_specifier <------- INT_tok
       declaration_specifiers <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- direct_declarator
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
              init_declarator <------- declarator '=' initializer
         init_declarator_list <------- init_declarator
                  declaration <------- declaration_specifiers init_declarator_list ';'
             declaration_list <------- declaration_list declaration ';'
# 6)      int k = 7L;

               type_specifier <------- UNSIGNED_tok
               type_specifier <------- LONG_tok
               type_specifier <------- LONG_tok
       declaration_specifiers <------- type_specifier
       declaration_specifiers <------- type_specifier declaration_specifiers
       declaration_specifiers <------- type_specifier declaration_specifiers
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- direct_declarator
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
              init_declarator <------- declarator '=' initializer
         init_declarator_list <------- init_declarator
                  declaration <------- declaration_specifiers init_declarator_list ';'
             declaration_list <------- declaration_list declaration ';'
# 7)      unsigned long long b = ull;

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
          assignment_operator <------- '='
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- additive_expression '+' multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
        assignment_expression <------- unary_expression assignment_operator assignment_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement
# 8)      i = i + j;

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
          assignment_operator <------- '='
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- multiplicative_expression '*' cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
        assignment_expression <------- unary_expression assignment_operator assignment_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 9)      i = i * 2;

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
          assignment_operator <------- '='
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
        assignment_expression <------- unary_expression assignment_operator assignment_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 10)      i = 0723415;     

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
          assignment_operator <------- '='
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
        assignment_expression <------- unary_expression assignment_operator assignment_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 11)      i = 2147483648; // just right

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
          assignment_operator <------- '='
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
        assignment_expression <------- unary_expression assignment_operator assignment_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 12)      i = 429496729688; // way too big

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
          assignment_operator <------- '='
               unary_operator <------- '-'
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
             unary_expression <------- unary_operator cast_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
        assignment_expression <------- unary_expression assignment_operator assignment_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 13)      i = -589294967296;  // too small

# 14)      

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
          assignment_operator <------- '='
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
        assignment_expression <------- unary_expression assignment_operator assignment_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 15)      i = 0x8fffffff; // hex just right

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
          assignment_operator <------- '='
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
        assignment_expression <------- unary_expression assignment_operator assignment_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 16)      i = 0x100000000; // hex slightly too large

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
          assignment_operator <------- '='
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
        assignment_expression <------- unary_expression assignment_operator assignment_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 17)      i = 0x8eeeeeeeu; // with the u

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
          assignment_operator <------- '='
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
        assignment_expression <------- unary_expression assignment_operator assignment_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 18)      i = 0x4444l; //with the l

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
          assignment_operator <------- '='
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
        assignment_expression <------- unary_expression assignment_operator assignment_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 19)      i = 0xabcdef01890u; //way too big

           compound_statement <------- '{' declaration_list statement_list '}'
          function_definition <------- declaration_specifiers declarator compound_statement
             translation_unit <------- translation_unit external_declaration
             translation_unit <------- external_declaration
# 20) }


scrim% cat test_code/t2.c
extern char *yytext;


/* --------------------------------
-----------------------------------------*/
enum {
    ONE,
    NO_IM_ONE,
    SO_AM_I_ONE_OR_TWO
};
int main (int argc,char **argv)
{
    int i;
    float j;
    char k;
    
`
    i = 0x4 + 0x5;
    i = 4L + 01l;
    j = 4.05;
    j = 4.06e90;
    j = L7e8;
    L"Hello World";
    k = ONE + 1;
    k += SO_AM_I_ONE_OR_TWO;
    !!S
}

/* -------------------------------------------------------------------------*/
void display_lex_debug_file_header (char *ptr, char * input_file_name)
{
    if (ptr)
    {
        fprintf(ptr, "###################################################\n");
        fprintf(ptr, "#\n");
        fprintf(ptr, "# This file has been generated by the scrim lexical\n");
        fprintf(ptr, "# anaylizer on the file <%s>.\n", input_file_name);  
        fprintf(ptr, "#\n");
        fprintf(ptr, "# The format of the file is:\n");
        fprintf(ptr, "#\n");
        fprintf(ptr, "# - # line number) Original source code.\n");
        fprintf(ptr, "# -   List of matched tokens on that line of source code.\n");
        fprintf(ptr, "#\n");
        fprintf(ptr, "# All comments are parsed, but their token values are\n");
        fprintf(ptr, "# not displayed.\n");
        fprintf(ptr, "#\n");
        fprintf(ptr, "###################################################\n");
        fprintf(ptr, "\n");
        fprintf(ptr, "# %d)\t", line_number);
    }
}
int test_func(int i)
{
    i = i+7-3*9;
    return i;
}

scrim% ./test_parser -dy -f test_code/t2.c
input file is test_code/t2.c
source code and reductions will be dumped to  debug/t1.list
test_code/t2.c:17:1: error before '`' token
test_code/t2.c:22:9: undeclared variable 'L7e8'
test_code/t2.c:37:57: undeclared variable 'input_file_name'
test_code/t2.c:49:33: undeclared variable 'line_number'
scrim% cat debug/t1.list
###################################################        
#                                                          
# This file has been generated by the scrim parser         
# on the file debug/t1.list.                       
#                                                          
# The format of the file is:                               
#   reductions                                             
#   <left hand side>  <------- <right hand side>           
# - # line number) Original line of source code.           
#     a line of source code is output each time a new line 
#     is reached by the scanner                            
# -   List of matched tokens on that line of source code.  
#                                                          
# All comments are parsed, but their token values are      
# not displayed.                                           
#                                                          
###################################################        
                                                           
      storage_class_specifier <------- EXTERN_tok
               type_specifier <------- CHAR_tok
       declaration_specifiers <------- type_specifier
       declaration_specifiers <------- storage_class_specifier declaration_specifiers
                      pointer <------- '*'
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- pointer direct_declarator
              init_declarator <------- declarator
         init_declarator_list <------- init_declarator
                  declaration <------- declaration_specifiers init_declarator_list ';'
         external_declaration <------- declaration
             translation_unit <------- external_declaration
# 1) extern char *yytext;

# 6) enum {

                   identifier <------- IDENTIFIER_tok
                   enumerator <------- identifier
              enumerator_list <------- enumerator
# 7)     ONE,

                   identifier <------- IDENTIFIER_tok
                   enumerator <------- identifier
              enumerator_list <------- enumerator_list ',' enumerator
# 8)     NO_IM_ONE,

                   identifier <------- IDENTIFIER_tok
# 9)     SO_AM_I_ONE_OR_TWO

                   enumerator <------- identifier
              enumerator_list <------- enumerator_list ',' enumerator
               enum_specifier <------- ENUM_tok '{' enumerator_list '}'
               type_specifier <------- enum_specifier
       declaration_specifiers <------- type_specifier
                  declaration <------- declaration_specifiers ';'
         external_declaration <------- declaration
             translation_unit <------- translation_unit external_declaration
# 10) };

               type_specifier <------- INT_tok
       declaration_specifiers <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
               type_specifier <------- INT_tok
       declaration_specifiers <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- direct_declarator
        parameter_declaration <------- declaration_specifiers declarator
               parameter_list <------- parameter_declaration
               type_specifier <------- CHAR_tok
       declaration_specifiers <------- type_specifier
                      pointer <------- '*'
                      pointer <------- '*' pointer
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- pointer direct_declarator
        parameter_declaration <------- declaration_specifiers declarator
               parameter_list <------- parameter_list ',' parameter_declaration
          parameter_type_list <------- parameter_list
            direct_declarator <------- direct_declarator '(' parameter_type_list ')'
# 11) int main (int argc,char **argv)

                   declarator <------- direct_declarator
# 12) {

               type_specifier <------- INT_tok
       declaration_specifiers <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- direct_declarator
              init_declarator <------- declarator
         init_declarator_list <------- init_declarator
                  declaration <------- declaration_specifiers init_declarator_list ';'
             declaration_list <------- declaration ';'
# 13)     int i;

               type_specifier <------- FLOAT_tok
       declaration_specifiers <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- direct_declarator
              init_declarator <------- declarator
         init_declarator_list <------- init_declarator
                  declaration <------- declaration_specifiers init_declarator_list ';'
             declaration_list <------- declaration_list declaration ';'
# 14)     float j;

               type_specifier <------- CHAR_tok
       declaration_specifiers <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- direct_declarator
              init_declarator <------- declarator
         init_declarator_list <------- init_declarator
                  declaration <------- declaration_specifiers init_declarator_list ';'
             declaration_list <------- declaration_list declaration ';'
# 15)     char k;

# 16)     

# 17) `

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
          assignment_operator <------- '='
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- additive_expression '+' multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
        assignment_expression <------- unary_expression assignment_operator assignment_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement
# 18)     i = 0x4 + 0x5;

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
          assignment_operator <------- '='
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- additive_expression '+' multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
        assignment_expression <------- unary_expression assignment_operator assignment_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 19)     i = 4L + 01l;

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
          assignment_operator <------- '='
                     constant <------- FLOATING_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
        assignment_expression <------- unary_expression assignment_operator assignment_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 20)     j = 4.05;

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
          assignment_operator <------- '='
                     constant <------- FLOATING_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
        assignment_expression <------- unary_expression assignment_operator assignment_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 21)     j = 4.06e90;

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
          assignment_operator <------- '='
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
        assignment_expression <------- unary_expression assignment_operator assignment_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 22)     j = L7e8;

                       string <------- STRING_LITERAL_tok
           primary_expression <------- string
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 23)     L"Hello World";

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
          assignment_operator <------- '='
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- additive_expression '+' multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
        assignment_expression <------- unary_expression assignment_operator assignment_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 24)     k = ONE + 1;

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
          assignment_operator <------- ADD_ASSIGN_tok
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
        assignment_expression <------- unary_expression assignment_operator assignment_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 25)     k += SO_AM_I_ONE_OR_TWO;

# 26)     !!S

           compound_statement <------- '{' declaration_list statement_list '}'
          function_definition <------- declaration_specifiers declarator compound_statement
             translation_unit <------- translation_unit external_declaration
             translation_unit <------- translation_unit external_declaration
# 27) }

# 29) /* -------------------------------------------------------------------------*/

               type_specifier <------- VOID_tok
       declaration_specifiers <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
               type_specifier <------- CHAR_tok
       declaration_specifiers <------- type_specifier
                      pointer <------- '*'
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- pointer direct_declarator
        parameter_declaration <------- declaration_specifiers declarator
               parameter_list <------- parameter_declaration
               type_specifier <------- CHAR_tok
       declaration_specifiers <------- type_specifier
                      pointer <------- '*'
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- pointer direct_declarator
        parameter_declaration <------- declaration_specifiers declarator
               parameter_list <------- parameter_list ',' parameter_declaration
          parameter_type_list <------- parameter_list
            direct_declarator <------- direct_declarator '(' parameter_type_list ')'
# 30) void display_lex_debug_file_header (char *ptr, char * input_file_name)

                   declarator <------- direct_declarator
# 31) {

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
# 32)     if (ptr)

# 33)     {

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- assignment_expression
                       string <------- STRING_LITERAL_tok
           primary_expression <------- string
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- argument_expression_list ',' assignment_expression
           postfix_expression <------- postfix_expression '(' argument_expression_list ')'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement
# 34)         fprintf(ptr, "###################################################\n");

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- assignment_expression
                       string <------- STRING_LITERAL_tok
           primary_expression <------- string
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- argument_expression_list ',' assignment_expression
           postfix_expression <------- postfix_expression '(' argument_expression_list ')'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 35)         fprintf(ptr, "#\n");

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- assignment_expression
                       string <------- STRING_LITERAL_tok
           primary_expression <------- string
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- argument_expression_list ',' assignment_expression
           postfix_expression <------- postfix_expression '(' argument_expression_list ')'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 36)         fprintf(ptr, "# This file has been generated by the scrim lexical\n");

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- assignment_expression
                       string <------- STRING_LITERAL_tok
           primary_expression <------- string
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- argument_expression_list ',' assignment_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- argument_expression_list ',' assignment_expression
           postfix_expression <------- postfix_expression '(' argument_expression_list ')'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 37)         fprintf(ptr, "# anaylizer on the file <%s>.\n", input_file_name);  

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- assignment_expression
                       string <------- STRING_LITERAL_tok
           primary_expression <------- string
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- argument_expression_list ',' assignment_expression
           postfix_expression <------- postfix_expression '(' argument_expression_list ')'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 38)         fprintf(ptr, "#\n");

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- assignment_expression
                       string <------- STRING_LITERAL_tok
           primary_expression <------- string
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- argument_expression_list ',' assignment_expression
           postfix_expression <------- postfix_expression '(' argument_expression_list ')'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 39)         fprintf(ptr, "# The format of the file is:\n");

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- assignment_expression
                       string <------- STRING_LITERAL_tok
           primary_expression <------- string
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- argument_expression_list ',' assignment_expression
           postfix_expression <------- postfix_expression '(' argument_expression_list ')'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 40)         fprintf(ptr, "#\n");

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- assignment_expression
                       string <------- STRING_LITERAL_tok
           primary_expression <------- string
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- argument_expression_list ',' assignment_expression
           postfix_expression <------- postfix_expression '(' argument_expression_list ')'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 41)         fprintf(ptr, "# - # line number) Original source code.\n");

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- assignment_expression
                       string <------- STRING_LITERAL_tok
           primary_expression <------- string
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- argument_expression_list ',' assignment_expression
           postfix_expression <------- postfix_expression '(' argument_expression_list ')'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 42)         fprintf(ptr, "# -   List of matched tokens on that line of source code.\n");

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- assignment_expression
                       string <------- STRING_LITERAL_tok
           primary_expression <------- string
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- argument_expression_list ',' assignment_expression
           postfix_expression <------- postfix_expression '(' argument_expression_list ')'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 43)         fprintf(ptr, "#\n");

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- assignment_expression
                       string <------- STRING_LITERAL_tok
           primary_expression <------- string
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- argument_expression_list ',' assignment_expression
           postfix_expression <------- postfix_expression '(' argument_expression_list ')'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 44)         fprintf(ptr, "# All comments are parsed, but their token values are\n");

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- assignment_expression
                       string <------- STRING_LITERAL_tok
           primary_expression <------- string
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- argument_expression_list ',' assignment_expression
           postfix_expression <------- postfix_expression '(' argument_expression_list ')'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 45)         fprintf(ptr, "# not displayed.\n");

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- assignment_expression
                       string <------- STRING_LITERAL_tok
           primary_expression <------- string
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- argument_expression_list ',' assignment_expression
           postfix_expression <------- postfix_expression '(' argument_expression_list ')'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 46)         fprintf(ptr, "#\n");

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- assignment_expression
                       string <------- STRING_LITERAL_tok
           primary_expression <------- string
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- argument_expression_list ',' assignment_expression
           postfix_expression <------- postfix_expression '(' argument_expression_list ')'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 47)         fprintf(ptr, "###################################################\n");

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- assignment_expression
                       string <------- STRING_LITERAL_tok
           primary_expression <------- string
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- argument_expression_list ',' assignment_expression
           postfix_expression <------- postfix_expression '(' argument_expression_list ')'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 48)         fprintf(ptr, "\n");

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- assignment_expression
                       string <------- STRING_LITERAL_tok
           primary_expression <------- string
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- argument_expression_list ',' assignment_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- argument_expression_list ',' assignment_expression
           postfix_expression <------- postfix_expression '(' argument_expression_list ')'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement_list statement
# 49)         fprintf(ptr, "# %d)\t", line_number);

           compound_statement <------- '{' statement_list '}'
                    statement <------- compound_statement
# 50)     }

          selection_statement <------- IF_tok '(' expression ')' statement
                    statement <------- selection_statement
               statement_list <------- statement
           compound_statement <------- '{' statement_list '}'
          function_definition <------- declaration_specifiers declarator compound_statement
             translation_unit <------- translation_unit external_declaration
             translation_unit <------- translation_unit external_declaration
# 51) }

               type_specifier <------- INT_tok
       declaration_specifiers <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
               type_specifier <------- INT_tok
       declaration_specifiers <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- direct_declarator
        parameter_declaration <------- declaration_specifiers declarator
               parameter_list <------- parameter_declaration
          parameter_type_list <------- parameter_list
            direct_declarator <------- direct_declarator '(' parameter_type_list ')'
# 52) int test_func(int i)

                   declarator <------- direct_declarator
# 53) {

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
          assignment_operator <------- '='
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- additive_expression '+' multiplicative_expression
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- multiplicative_expression '*' cast_expression
          additive_expression <------- additive_expression '-' multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
        assignment_expression <------- unary_expression assignment_operator assignment_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement
# 54)     i = i+7-3*9;

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
               jump_statement <------- RETURN_tok expression ';'
                    statement <------- jump_statement
               statement_list <------- statement_list statement
# 55)     return i;

           compound_statement <------- '{' statement_list '}'
          function_definition <------- declaration_specifiers declarator compound_statement
             translation_unit <------- translation_unit external_declaration
             translation_unit <------- translation_unit external_declaration
# 56) }


scrim% cat test_code/t3.c
static char daytab[2][13] = {
  {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
  {0, 31,
!!S
   28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};

struct point {
  int x;
  int y;
}
!!S
struct rect {
  struct point pt1;
  struct point pt2;
}

struct key {
  char *word;
  int count
} keytab[] = {
  "auto", 0,
  !!S
  "break", 0,
  "case", 0
};

'Z
main()
{
  int (*daytab)[13];
}
  

scrim% ./test_parser -dy -f test_code/t3.c
input file is test_code/t3.c
source code and reductions will be dumped to  debug/t1.list
test_code/t3.c:21:1: parse error 
:} keytab[] = {
:^
scrim% cat debug/t1.list
###################################################        
#                                                          
# This file has been generated by the scrim parser         
# on the file debug/t1.list.                       
#                                                          
# The format of the file is:                               
#   reductions                                             
#   <left hand side>  <------- <right hand side>           
# - # line number) Original line of source code.           
#     a line of source code is output each time a new line 
#     is reached by the scanner                            
# -   List of matched tokens on that line of source code.  
#                                                          
# All comments are parsed, but their token values are      
# not displayed.                                           
#                                                          
###################################################        
                                                           
      storage_class_specifier <------- STATIC_tok
               type_specifier <------- CHAR_tok
       declaration_specifiers <------- type_specifier
       declaration_specifiers <------- storage_class_specifier declaration_specifiers
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
          constant_expression <------- conditional_expression
            direct_declarator <------- direct_declarator '[' constant_expression ']'
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
          constant_expression <------- conditional_expression
            direct_declarator <------- direct_declarator '[' constant_expression ']'
                   declarator <------- direct_declarator
# 1) static char daytab[2][13] = {

                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
             initializer_list <------- initializer
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
             initializer_list <------- initializer_list ',' initializer
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
             initializer_list <------- initializer_list ',' initializer
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
             initializer_list <------- initializer_list ',' initializer
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
             initializer_list <------- initializer_list ',' initializer
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
             initializer_list <------- initializer_list ',' initializer
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
             initializer_list <------- initializer_list ',' initializer
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
             initializer_list <------- initializer_list ',' initializer
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
             initializer_list <------- initializer_list ',' initializer
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
             initializer_list <------- initializer_list ',' initializer
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
             initializer_list <------- initializer_list ',' initializer
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
             initializer_list <------- initializer_list ',' initializer
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
             initializer_list <------- initializer_list ',' initializer
                  initializer <------- '{' initializer_list '}'
             initializer_list <------- initializer
# 2)   {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},

                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
             initializer_list <------- initializer
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
             initializer_list <------- initializer_list ',' initializer
# 3)   {0, 31,

# 4) !!S

                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
             initializer_list <------- initializer_list ',' initializer
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
             initializer_list <------- initializer_list ',' initializer
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
             initializer_list <------- initializer_list ',' initializer
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
             initializer_list <------- initializer_list ',' initializer
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
             initializer_list <------- initializer_list ',' initializer
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
             initializer_list <------- initializer_list ',' initializer
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
             initializer_list <------- initializer_list ',' initializer
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
             initializer_list <------- initializer_list ',' initializer
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
             initializer_list <------- initializer_list ',' initializer
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
             initializer_list <------- initializer_list ',' initializer
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
             initializer_list <------- initializer_list ',' initializer
                  initializer <------- '{' initializer_list '}'
             initializer_list <------- initializer_list ',' initializer
# 5)    28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}

                  initializer <------- '{' initializer_list '}'
              init_declarator <------- declarator '=' initializer
         init_declarator_list <------- init_declarator
                  declaration <------- declaration_specifiers init_declarator_list ';'
         external_declaration <------- declaration
             translation_unit <------- external_declaration
# 6) };

              struct_or_union <------- STRUCT_tok
                   identifier <------- IDENTIFIER_tok
# 8) struct point {

               type_specifier <------- INT_tok
     specifier_qualifier_list <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- direct_declarator
            struct_declarator <------- declarator
       struct_declarator_list <------- struct_declarator
           struct_declaration <------- specifier_qualifier_list struct_declarator_list ';'
      struct_declaration_list <------- struct_declaration
# 9)   int x;

               type_specifier <------- INT_tok
     specifier_qualifier_list <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- direct_declarator
            struct_declarator <------- declarator
       struct_declarator_list <------- struct_declarator
           struct_declaration <------- specifier_qualifier_list struct_declarator_list ';'
      struct_declaration_list <------- struct_declaration_list struct_declaration
# 10)   int y;

    struct_or_union_specifier <------- struct_or_union identifier '{' struct_declaration_list '}'
               type_specifier <------- struct_or_union_specifier
# 11) }

# 12) !!S

              struct_or_union <------- STRUCT_tok
                   identifier <------- IDENTIFIER_tok
# 13) struct rect {

              struct_or_union <------- STRUCT_tok
                   identifier <------- IDENTIFIER_tok
    struct_or_union_specifier <------- struct_or_union identifier
               type_specifier <------- struct_or_union_specifier
     specifier_qualifier_list <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- direct_declarator
            struct_declarator <------- declarator
       struct_declarator_list <------- struct_declarator
           struct_declaration <------- specifier_qualifier_list struct_declarator_list ';'
      struct_declaration_list <------- struct_declaration
# 14)   struct point pt1;

              struct_or_union <------- STRUCT_tok
                   identifier <------- IDENTIFIER_tok
    struct_or_union_specifier <------- struct_or_union identifier
               type_specifier <------- struct_or_union_specifier
     specifier_qualifier_list <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- direct_declarator
            struct_declarator <------- declarator
       struct_declarator_list <------- struct_declarator
           struct_declaration <------- specifier_qualifier_list struct_declarator_list ';'
      struct_declaration_list <------- struct_declaration_list struct_declaration
# 15)   struct point pt2;

    struct_or_union_specifier <------- struct_or_union identifier '{' struct_declaration_list '}'
               type_specifier <------- struct_or_union_specifier
# 16) }

              struct_or_union <------- STRUCT_tok
                   identifier <------- IDENTIFIER_tok
# 18) struct key {

               type_specifier <------- CHAR_tok
     specifier_qualifier_list <------- type_specifier
                      pointer <------- '*'
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- pointer direct_declarator
            struct_declarator <------- declarator
       struct_declarator_list <------- struct_declarator
           struct_declaration <------- specifier_qualifier_list struct_declarator_list ';'
      struct_declaration_list <------- struct_declaration
# 19)   char *word;

               type_specifier <------- INT_tok
     specifier_qualifier_list <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
# 20)   int count

                   declarator <------- direct_declarator
            struct_declarator <------- declarator
       struct_declarator_list <------- struct_declarator

scrim% cat test_code/t4.c
int getword(char *, int);
struct key *binsearch(char *, struct key *, int);

/* count C keywords; pointer version */
int main()
{
  char word[100];
  struct key *p;
  while (getword(word, 100) != EOF)
    if (isalpha(word[0]))
      if ((p = binsearch(word, keytab, NKEYS)) != NULL)
        p->count++;
  for (p=keytab; p < keytab + NKEYS; p++)
    if (p->count > 0)
      printf("%4d %s\n", p->count, p->word);
  return 0;
}

/* binsearch: find word in tab[0]...tab[n-1] */
struct key *binsearch(char *word, struct key *tab, int n)
{
  int cond;
  struct key *low = &tab[0];
  struct key *high = &tab[n];
  struct key *mid;

  while (low < high) {
    mid = low + (high-low) / 2;
    if ((cond = strcmp(word, mid->word)) < 0)
      high = mid;
    else if (cond > 0)
      low = mid + 1;
    else
      return mid;
  }
  return NULL;
}

scrim% ./test_parser -dy -f test_code/t4.c
input file is test_code/t4.c
source code and reductions will be dumped to  debug/t1.list
test_code/t4.c:9:32: undeclared variable 'EOF'
test_code/t4.c:10:9: undeclared variable 'isalpha'
test_code/t4.c:11:32: undeclared variable 'keytab'
test_code/t4.c:11:40: undeclared variable 'NKEYS'
test_code/t4.c:11:51: undeclared variable 'NULL'
test_code/t4.c:12:12: undeclared variable 'count'
test_code/t4.c:15:7: undeclared variable 'printf'
test_code/t4.c:29:17: undeclared variable 'strcmp'
test_code/t4.c:29:24: undeclared variable 'word'
test_code/t4.c:36:10: undeclared variable 'NULL'
scrim% cat debug/t1.list
###################################################        
#                                                          
# This file has been generated by the scrim parser         
# on the file debug/t1.list.                       
#                                                          
# The format of the file is:                               
#   reductions                                             
#   <left hand side>  <------- <right hand side>           
# - # line number) Original line of source code.           
#     a line of source code is output each time a new line 
#     is reached by the scanner                            
# -   List of matched tokens on that line of source code.  
#                                                          
# All comments are parsed, but their token values are      
# not displayed.                                           
#                                                          
###################################################        
                                                           
               type_specifier <------- INT_tok
       declaration_specifiers <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
               type_specifier <------- CHAR_tok
       declaration_specifiers <------- type_specifier
                      pointer <------- '*'
          abstract_declarator <------- pointer
        parameter_declaration <------- declaration_specifiers abstract_declarator
               parameter_list <------- parameter_declaration
               type_specifier <------- INT_tok
       declaration_specifiers <------- type_specifier
        parameter_declaration <------- declaration_specifiers
               parameter_list <------- parameter_list ',' parameter_declaration
          parameter_type_list <------- parameter_list
            direct_declarator <------- direct_declarator '(' parameter_type_list ')'
                   declarator <------- direct_declarator
              init_declarator <------- declarator
         init_declarator_list <------- init_declarator
                  declaration <------- declaration_specifiers init_declarator_list ';'
         external_declaration <------- declaration
             translation_unit <------- external_declaration
# 1) int getword(char *, int);

              struct_or_union <------- STRUCT_tok
                   identifier <------- IDENTIFIER_tok
    struct_or_union_specifier <------- struct_or_union identifier
               type_specifier <------- struct_or_union_specifier
       declaration_specifiers <------- type_specifier
                      pointer <------- '*'
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
               type_specifier <------- CHAR_tok
       declaration_specifiers <------- type_specifier
                      pointer <------- '*'
          abstract_declarator <------- pointer
        parameter_declaration <------- declaration_specifiers abstract_declarator
               parameter_list <------- parameter_declaration
              struct_or_union <------- STRUCT_tok
                   identifier <------- IDENTIFIER_tok
    struct_or_union_specifier <------- struct_or_union identifier
               type_specifier <------- struct_or_union_specifier
       declaration_specifiers <------- type_specifier
                      pointer <------- '*'
          abstract_declarator <------- pointer
        parameter_declaration <------- declaration_specifiers abstract_declarator
               parameter_list <------- parameter_list ',' parameter_declaration
               type_specifier <------- INT_tok
       declaration_specifiers <------- type_specifier
        parameter_declaration <------- declaration_specifiers
               parameter_list <------- parameter_list ',' parameter_declaration
          parameter_type_list <------- parameter_list
            direct_declarator <------- direct_declarator '(' parameter_type_list ')'
                   declarator <------- pointer direct_declarator
              init_declarator <------- declarator
         init_declarator_list <------- init_declarator
                  declaration <------- declaration_specifiers init_declarator_list ';'
         external_declaration <------- declaration
             translation_unit <------- translation_unit external_declaration
# 2) struct key *binsearch(char *, struct key *, int);

# 4) /* count C keywords; pointer version */

               type_specifier <------- INT_tok
       declaration_specifiers <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
            direct_declarator <------- direct_declarator '(' ')'
# 5) int main()

                   declarator <------- direct_declarator
# 6) {

               type_specifier <------- CHAR_tok
       declaration_specifiers <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
          constant_expression <------- conditional_expression
            direct_declarator <------- direct_declarator '[' constant_expression ']'
                   declarator <------- direct_declarator
              init_declarator <------- declarator
         init_declarator_list <------- init_declarator
                  declaration <------- declaration_specifiers init_declarator_list ';'
             declaration_list <------- declaration ';'
# 7)   char word[100];

              struct_or_union <------- STRUCT_tok
                   identifier <------- IDENTIFIER_tok
    struct_or_union_specifier <------- struct_or_union identifier
               type_specifier <------- struct_or_union_specifier
       declaration_specifiers <------- type_specifier
                      pointer <------- '*'
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- pointer direct_declarator
              init_declarator <------- declarator
         init_declarator_list <------- init_declarator
                  declaration <------- declaration_specifiers init_declarator_list ';'
             declaration_list <------- declaration_list declaration ';'
# 8)   struct key *p;

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- assignment_expression
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- argument_expression_list ',' assignment_expression
           postfix_expression <------- postfix_expression '(' argument_expression_list ')'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- equality_expression NE_OP_tok relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
# 9)   while (getword(word, 100) != EOF)

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
           postfix_expression <------- postfix_expression '[' expression ']'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- assignment_expression
           postfix_expression <------- postfix_expression '(' argument_expression_list ')'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
# 10)     if (isalpha(word[0]))

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
          assignment_operator <------- '='
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- assignment_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- argument_expression_list ',' assignment_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- argument_expression_list ',' assignment_expression
           postfix_expression <------- postfix_expression '(' argument_expression_list ')'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
        assignment_expression <------- unary_expression assignment_operator assignment_expression
                   expression <------- assignment_expression
           primary_expression <------- '(' expression ')'
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- equality_expression NE_OP_tok relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
# 11)       if ((p = binsearch(word, keytab, NKEYS)) != NULL)

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           postfix_expression <------- postfix_expression PTR_OP_tok identifier
           postfix_expression <------- postfix_expression INC_OP_tok
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
# 12)         p->count++;

          selection_statement <------- IF_tok '(' expression ')' statement
                    statement <------- selection_statement
          selection_statement <------- IF_tok '(' expression ')' statement
                    statement <------- selection_statement
          iteration_statement <------- WHILE_tok '(' expression ')' statement
                    statement <------- iteration_statement
               statement_list <------- statement
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
          assignment_operator <------- '='
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
        assignment_expression <------- unary_expression assignment_operator assignment_expression
                   expression <------- assignment_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- additive_expression '+' multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- relational_expression '<' shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
           postfix_expression <------- postfix_expression INC_OP_tok
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
# 13)   for (p=keytab; p < keytab + NKEYS; p++)

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           postfix_expression <------- postfix_expression PTR_OP_tok identifier
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- relational_expression '>' shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
# 14)     if (p->count > 0)

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                       string <------- STRING_LITERAL_tok
           primary_expression <------- string
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- assignment_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           postfix_expression <------- postfix_expression PTR_OP_tok identifier
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- argument_expression_list ',' assignment_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           postfix_expression <------- postfix_expression PTR_OP_tok identifier
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- argument_expression_list ',' assignment_expression
           postfix_expression <------- postfix_expression '(' argument_expression_list ')'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
# 15)       printf("%4d %s\n", p->count, p->word);

          selection_statement <------- IF_tok '(' expression ')' statement
                    statement <------- selection_statement
          iteration_statement <------- FOR_tok '(' expression ';' expression ';' expression ')' statement
                    statement <------- iteration_statement
               statement_list <------- statement_list statement
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
               jump_statement <------- RETURN_tok expression ';'
                    statement <------- jump_statement
               statement_list <------- statement_list statement
# 16)   return 0;

           compound_statement <------- '{' declaration_list statement_list '}'
          function_definition <------- declaration_specifiers declarator compound_statement
             translation_unit <------- translation_unit external_declaration
             translation_unit <------- translation_unit external_declaration
# 17) }

# 19) /* binsearch: find word in tab[0]...tab[n-1] */

              struct_or_union <------- STRUCT_tok
                   identifier <------- IDENTIFIER_tok
    struct_or_union_specifier <------- struct_or_union identifier
               type_specifier <------- struct_or_union_specifier
       declaration_specifiers <------- type_specifier
                      pointer <------- '*'
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
               type_specifier <------- CHAR_tok
       declaration_specifiers <------- type_specifier
                      pointer <------- '*'
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- pointer direct_declarator
        parameter_declaration <------- declaration_specifiers declarator
               parameter_list <------- parameter_declaration
              struct_or_union <------- STRUCT_tok
                   identifier <------- IDENTIFIER_tok
    struct_or_union_specifier <------- struct_or_union identifier
               type_specifier <------- struct_or_union_specifier
       declaration_specifiers <------- type_specifier
                      pointer <------- '*'
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- pointer direct_declarator
        parameter_declaration <------- declaration_specifiers declarator
               parameter_list <------- parameter_list ',' parameter_declaration
               type_specifier <------- INT_tok
       declaration_specifiers <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- direct_declarator
        parameter_declaration <------- declaration_specifiers declarator
               parameter_list <------- parameter_list ',' parameter_declaration
          parameter_type_list <------- parameter_list
            direct_declarator <------- direct_declarator '(' parameter_type_list ')'
# 20) struct key *binsearch(char *word, struct key *tab, int n)

                   declarator <------- pointer direct_declarator
# 21) {

               type_specifier <------- INT_tok
       declaration_specifiers <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- direct_declarator
              init_declarator <------- declarator
         init_declarator_list <------- init_declarator
                  declaration <------- declaration_specifiers init_declarator_list ';'
             declaration_list <------- declaration ';'
# 22)   int cond;

              struct_or_union <------- STRUCT_tok
                   identifier <------- IDENTIFIER_tok
    struct_or_union_specifier <------- struct_or_union identifier
               type_specifier <------- struct_or_union_specifier
       declaration_specifiers <------- type_specifier
                      pointer <------- '*'
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- pointer direct_declarator
               unary_operator <------- '&'
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
           postfix_expression <------- postfix_expression '[' expression ']'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
             unary_expression <------- unary_operator cast_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
              init_declarator <------- declarator '=' initializer
         init_declarator_list <------- init_declarator
                  declaration <------- declaration_specifiers init_declarator_list ';'
             declaration_list <------- declaration_list declaration ';'
# 23)   struct key *low = &tab[0];

              struct_or_union <------- STRUCT_tok
                   identifier <------- IDENTIFIER_tok
    struct_or_union_specifier <------- struct_or_union identifier
               type_specifier <------- struct_or_union_specifier
       declaration_specifiers <------- type_specifier
                      pointer <------- '*'
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- pointer direct_declarator
               unary_operator <------- '&'
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
           postfix_expression <------- postfix_expression '[' expression ']'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
             unary_expression <------- unary_operator cast_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
              init_declarator <------- declarator '=' initializer
         init_declarator_list <------- init_declarator
                  declaration <------- declaration_specifiers init_declarator_list ';'
             declaration_list <------- declaration_list declaration ';'
# 24)   struct key *high = &tab[n];

              struct_or_union <------- STRUCT_tok
                   identifier <------- IDENTIFIER_tok
    struct_or_union_specifier <------- struct_or_union identifier
               type_specifier <------- struct_or_union_specifier
       declaration_specifiers <------- type_specifier
                      pointer <------- '*'
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- pointer direct_declarator
              init_declarator <------- declarator
         init_declarator_list <------- init_declarator
                  declaration <------- declaration_specifiers init_declarator_list ';'
             declaration_list <------- declaration_list declaration ';'
# 25)   struct key *mid;

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- relational_expression '<' shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
# 27)   while (low < high) {

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
          assignment_operator <------- '='
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- additive_expression '-' multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
           primary_expression <------- '(' expression ')'
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- multiplicative_expression '/' cast_expression
          additive_expression <------- additive_expression '+' multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
        assignment_expression <------- unary_expression assignment_operator assignment_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement
# 28)     mid = low + (high-low) / 2;

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
          assignment_operator <------- '='
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- assignment_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           postfix_expression <------- postfix_expression PTR_OP_tok identifier
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- argument_expression_list ',' assignment_expression
           postfix_expression <------- postfix_expression '(' argument_expression_list ')'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
        assignment_expression <------- unary_expression assignment_operator assignment_expression
                   expression <------- assignment_expression
           primary_expression <------- '(' expression ')'
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- relational_expression '<' shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
# 29)     if ((cond = strcmp(word, mid->word)) < 0)

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
          assignment_operator <------- '='
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
        assignment_expression <------- unary_expression assignment_operator assignment_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
# 30)       high = mid;

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- relational_expression '>' shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
# 31)     else if (cond > 0)

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
          assignment_operator <------- '='
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- additive_expression '+' multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
        assignment_expression <------- unary_expression assignment_operator assignment_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
# 32)       low = mid + 1;

# 33)     else

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
               jump_statement <------- RETURN_tok expression ';'
                    statement <------- jump_statement
          selection_statement <------- IF_tok '(' expression ')' statement ELSE_tok statement
                    statement <------- selection_statement
          selection_statement <------- IF_tok '(' expression ')' statement ELSE_tok statement
                    statement <------- selection_statement
               statement_list <------- statement_list statement
# 34)       return mid;

           compound_statement <------- '{' statement_list '}'
                    statement <------- compound_statement
          iteration_statement <------- WHILE_tok '(' expression ')' statement
                    statement <------- iteration_statement
               statement_list <------- statement
# 35)   }

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
               jump_statement <------- RETURN_tok expression ';'
                    statement <------- jump_statement
               statement_list <------- statement_list statement
# 36)   return NULL;

           compound_statement <------- '{' declaration_list statement_list '}'
          function_definition <------- declaration_specifiers declarator compound_statement
             translation_unit <------- translation_unit external_declaration
             translation_unit <------- translation_unit external_declaration
# 37) }


scrim% cat test_code/t5.c
main(int c,char**v){return!m(v[1],v[2]);}m(char*s,char*t){return*t-42?*s?63==*t|*s==*t&&m(s+1,t+1):!*t:m(s,t+1)||*s&&m(s+1,t);}

scrim% ./test_parser -dy -f test_code/t5.c
input file is test_code/t5.c
source code and reductions will be dumped to  debug/t1.list
test_code/t5.c:1:1: undeclared variable 'main'
test_code/t5.c:1:42: undeclared variable 'm'
scrim% cat debug/t1.list
###################################################        
#                                                          
# This file has been generated by the scrim parser         
# on the file debug/t1.list.                       
#                                                          
# The format of the file is:                               
#   reductions                                             
#   <left hand side>  <------- <right hand side>           
# - # line number) Original line of source code.           
#     a line of source code is output each time a new line 
#     is reached by the scanner                            
# -   List of matched tokens on that line of source code.  
#                                                          
# All comments are parsed, but their token values are      
# not displayed.                                           
#                                                          
###################################################        
                                                           
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
               type_specifier <------- INT_tok
       declaration_specifiers <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- direct_declarator
        parameter_declaration <------- declaration_specifiers declarator
               parameter_list <------- parameter_declaration
               type_specifier <------- CHAR_tok
       declaration_specifiers <------- type_specifier
                      pointer <------- '*'
                      pointer <------- '*' pointer
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- pointer direct_declarator
        parameter_declaration <------- declaration_specifiers declarator
               parameter_list <------- parameter_list ',' parameter_declaration
          parameter_type_list <------- parameter_list
            direct_declarator <------- direct_declarator '(' parameter_type_list ')'
                   declarator <------- direct_declarator
               unary_operator <------- '!'
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
           postfix_expression <------- postfix_expression '[' expression ']'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- assignment_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
           postfix_expression <------- postfix_expression '[' expression ']'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- argument_expression_list ',' assignment_expression
           postfix_expression <------- postfix_expression '(' argument_expression_list ')'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
             unary_expression <------- unary_operator cast_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
               jump_statement <------- RETURN_tok expression ';'
                    statement <------- jump_statement
               statement_list <------- statement
           compound_statement <------- '{' statement_list '}'
          function_definition <------- declarator compound_statement
             translation_unit <------- translation_unit external_declaration
             translation_unit <------- external_declaration
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
               type_specifier <------- CHAR_tok
       declaration_specifiers <------- type_specifier
                      pointer <------- '*'
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- pointer direct_declarator
        parameter_declaration <------- declaration_specifiers declarator
               parameter_list <------- parameter_declaration
               type_specifier <------- CHAR_tok
       declaration_specifiers <------- type_specifier
                      pointer <------- '*'
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- pointer direct_declarator
        parameter_declaration <------- declaration_specifiers declarator
               parameter_list <------- parameter_list ',' parameter_declaration
          parameter_type_list <------- parameter_list
            direct_declarator <------- direct_declarator '(' parameter_type_list ')'
                   declarator <------- direct_declarator
               unary_operator <------- '*'
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
             unary_expression <------- unary_operator cast_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- additive_expression '-' multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
               unary_operator <------- '*'
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
             unary_expression <------- unary_operator cast_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               unary_operator <------- '*'
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
             unary_expression <------- unary_operator cast_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- equality_expression EQ_OP_tok relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
               unary_operator <------- '*'
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
             unary_expression <------- unary_operator cast_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               unary_operator <------- '*'
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
             unary_expression <------- unary_operator cast_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- equality_expression EQ_OP_tok relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- inclusive_or_expression '|' exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- additive_expression '+' multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- assignment_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- additive_expression '+' multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- argument_expression_list ',' assignment_expression
           postfix_expression <------- postfix_expression '(' argument_expression_list ')'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- logical_and_expression AND_OP_tok inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
               unary_operator <------- '!'
               unary_operator <------- '*'
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
             unary_expression <------- unary_operator cast_expression
              cast_expression <------- unary_expression
             unary_expression <------- unary_operator cast_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
       conditional_expression <------- logical_or_expression '?' expression ':' conditional_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- assignment_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- additive_expression '+' multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- argument_expression_list ',' assignment_expression
           postfix_expression <------- postfix_expression '(' argument_expression_list ')'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
               unary_operator <------- '*'
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
             unary_expression <------- unary_operator cast_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- additive_expression '+' multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- assignment_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- argument_expression_list ',' assignment_expression
           postfix_expression <------- postfix_expression '(' argument_expression_list ')'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- logical_and_expression AND_OP_tok inclusive_or_expression
        logical_or_expression <------- logical_or_expression OR_OP_tok logical_and_expression
       conditional_expression <------- logical_or_expression
       conditional_expression <------- logical_or_expression '?' expression ':' conditional_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
               jump_statement <------- RETURN_tok expression ';'
                    statement <------- jump_statement
               statement_list <------- statement
           compound_statement <------- '{' statement_list '}'
          function_definition <------- declarator compound_statement
             translation_unit <------- translation_unit external_declaration
             translation_unit <------- translation_unit external_declaration
# 1) main(int c,char**v){return!m(v[1],v[2]);}m(char*s,char*t){return*t-42?*s?63==*t|*s==*t&&m(s+1,t+1):!*t:m(s,t+1)||*s&&m(s+1,t);}


scrim% cat test_code/t6.c


int switchtest (int in)
{
  switch (in) {
  case 0:
    return 1;
    break;
  case 1:
    return 3;
    break;
  default:
    return 2;
    break;
  }
}

int iftest(int in)
{
  if (in > 0)
    return 10;
  else
    return 0;
}


main()
{
  int i;
  int top = iftest(switchtest(1));
  for (i=0; i < top; i++) {
    top--;
  }
}

scrim% ./test_parser -dy -f test_code/t6.c
input file is test_code/t6.c
source code and reductions will be dumped to  debug/t1.list
test_code/t6.c:27:1: undeclared variable 'main'
scrim% cat debug/t1.list
###################################################        
#                                                          
# This file has been generated by the scrim parser         
# on the file debug/t1.list.                       
#                                                          
# The format of the file is:                               
#   reductions                                             
#   <left hand side>  <------- <right hand side>           
# - # line number) Original line of source code.           
#     a line of source code is output each time a new line 
#     is reached by the scanner                            
# -   List of matched tokens on that line of source code.  
#                                                          
# All comments are parsed, but their token values are      
# not displayed.                                           
#                                                          
###################################################        
                                                           
               type_specifier <------- INT_tok
       declaration_specifiers <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
               type_specifier <------- INT_tok
       declaration_specifiers <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- direct_declarator
        parameter_declaration <------- declaration_specifiers declarator
               parameter_list <------- parameter_declaration
          parameter_type_list <------- parameter_list
            direct_declarator <------- direct_declarator '(' parameter_type_list ')'
# 3) 

                   declarator <------- direct_declarator
# 4) 

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
# 5) int switchtest (int in)

                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
          constant_expression <------- conditional_expression
# 6) {

                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
               jump_statement <------- RETURN_tok expression ';'
                    statement <------- jump_statement
            labeled_statement <------- CASE_tok constant_expression ':' statement
                    statement <------- labeled_statement
               statement_list <------- statement
# 7)   switch (in) {

               jump_statement <------- BREAK_tok ';'
                    statement <------- jump_statement
               statement_list <------- statement_list statement
# 8)   case 0:

                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
          constant_expression <------- conditional_expression
# 9)     return 1;

                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
               jump_statement <------- RETURN_tok expression ';'
                    statement <------- jump_statement
            labeled_statement <------- CASE_tok constant_expression ':' statement
                    statement <------- labeled_statement
               statement_list <------- statement_list statement
# 10)     break;

               jump_statement <------- BREAK_tok ';'
                    statement <------- jump_statement
               statement_list <------- statement_list statement
# 11)   case 1:

# 12)     return 3;

                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
               jump_statement <------- RETURN_tok expression ';'
                    statement <------- jump_statement
            labeled_statement <------- DEFAULT_tok ':' statement
                    statement <------- labeled_statement
               statement_list <------- statement_list statement
# 13)     break;

               jump_statement <------- BREAK_tok ';'
                    statement <------- jump_statement
               statement_list <------- statement_list statement
# 14)   default:

           compound_statement <------- '{' statement_list '}'
                    statement <------- compound_statement
          selection_statement <------- SWITCH_tok '(' expression ')' statement
                    statement <------- selection_statement
               statement_list <------- statement
# 15)     return 2;

           compound_statement <------- '{' statement_list '}'
          function_definition <------- declaration_specifiers declarator compound_statement
             translation_unit <------- translation_unit external_declaration
             translation_unit <------- external_declaration
# 16)     break;

               type_specifier <------- INT_tok
       declaration_specifiers <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
               type_specifier <------- INT_tok
       declaration_specifiers <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- direct_declarator
        parameter_declaration <------- declaration_specifiers declarator
               parameter_list <------- parameter_declaration
          parameter_type_list <------- parameter_list
            direct_declarator <------- direct_declarator '(' parameter_type_list ')'
# 18) }

                   declarator <------- direct_declarator
# 19) 

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- relational_expression '>' shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
# 20) int iftest(int in)

                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
               jump_statement <------- RETURN_tok expression ';'
                    statement <------- jump_statement
# 21) {

# 22)   if (in > 0)

                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
               jump_statement <------- RETURN_tok expression ';'
                    statement <------- jump_statement
          selection_statement <------- IF_tok '(' expression ')' statement ELSE_tok statement
                    statement <------- selection_statement
               statement_list <------- statement
# 23)     return 10;

           compound_statement <------- '{' statement_list '}'
          function_definition <------- declaration_specifiers declarator compound_statement
             translation_unit <------- translation_unit external_declaration
             translation_unit <------- translation_unit external_declaration
# 24)   else

                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
            direct_declarator <------- direct_declarator '(' ')'
# 27) 

                   declarator <------- direct_declarator
# 28) 

               type_specifier <------- INT_tok
       declaration_specifiers <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- direct_declarator
              init_declarator <------- declarator
         init_declarator_list <------- init_declarator
                  declaration <------- declaration_specifiers init_declarator_list ';'
             declaration_list <------- declaration ';'
# 29) main()

               type_specifier <------- INT_tok
       declaration_specifiers <------- type_specifier
                   identifier <------- IDENTIFIER_tok
            direct_declarator <------- identifier
                   declarator <------- direct_declarator
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- assignment_expression
           postfix_expression <------- postfix_expression '(' argument_expression_list ')'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
     argument_expression_list <------- assignment_expression
           postfix_expression <------- postfix_expression '(' argument_expression_list ')'
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                  initializer <------- assignment_expression
              init_declarator <------- declarator '=' initializer
         init_declarator_list <------- init_declarator
                  declaration <------- declaration_specifiers init_declarator_list ';'
             declaration_list <------- declaration_list declaration ';'
# 30) {

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
          assignment_operator <------- '='
                     constant <------- INTEGER_CONSTANT_tok
           primary_expression <------- constant
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
        assignment_expression <------- unary_expression assignment_operator assignment_expression
                   expression <------- assignment_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- relational_expression '<' shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
           postfix_expression <------- postfix_expression INC_OP_tok
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
# 31)   int i;

                   identifier <------- IDENTIFIER_tok
           primary_expression <------- identifier
           postfix_expression <------- primary_expression
           postfix_expression <------- postfix_expression DEC_OP_tok
             unary_expression <------- postfix_expression
              cast_expression <------- unary_expression
    multiplicative_expression <------- cast_expression
          additive_expression <------- multiplicative_expression
             shift_expression <------- additive_expression
        relational_expression <------- shift_expression
          equality_expression <------- relational_expression
               and_expression <------- equality_expression
      exclusive_or_expression <------- and_expression
      inclusive_or_expression <------- exclusive_or_expression
       logical_and_expression <------- inclusive_or_expression
        logical_or_expression <------- logical_and_expression
       conditional_expression <------- logical_or_expression
        assignment_expression <------- conditional_expression
                   expression <------- assignment_expression
         expression_statement <------- expression ';'
                    statement <------- expression_statement
               statement_list <------- statement
# 32)   int top = iftest(switchtest(1));

           compound_statement <------- '{' statement_list '}'
                    statement <------- compound_statement
          iteration_statement <------- FOR_tok '(' expression ';' expression ';' expression ')' statement
                    statement <------- iteration_statement
               statement_list <------- statement
# 33)   for (i=0; i < top; i++) {

           compound_statement <------- '{' declaration_list statement_list '}'
          function_definition <------- declarator compound_statement
             translation_unit <------- translation_unit external_declaration
             translation_unit <------- translation_unit external_declaration
# 34)     top--;


]0;marcel@flapjack:~/scrimclean/scrim[01;32mmarcel@flapjack [01;34mscrim $ [00mls
[00m[01;34mCVS[00m                   [00mbst.cpp[00m    [01;32mscanner.l[00m      [00mstring.o[00m              [00msymboltable.o[00m         [00mtypescript[00m
[00mC_grammar.output[00m      [00mbst.h[00m      [01;32mscript.sh[00m      [00mstripreturn.pl[00m        [00msymboltabletest.cpp[00m   [00munitmain.cpp[00m
[00mC_grammar.tab.c[00m       [00mbst.o[00m      [00mstack.cpp[00m      [00msymbolobject.cpp[00m      [00msymboltabletest.h[00m     [00mvector.cpp[00m
[00mC_grammar.tab.h[00m       [01;34mdebug[00m      [00mstack.h[00m        [00msymbolobject.h[00m        [00msymenum.h[00m             [00mvector.h[00m
[00mC_grammar.tab.o[00m       [01;34mdocs[00m       [00mstack.o[00m        [00msymbolobject.o[00m        [01;32mtest.c[00m                [00mvector.o[00m
[01;32mC_grammar.y[00m           [00mdocxx.sty[00m  [00mstacktest.cpp[00m  [00msymbolobjecttest.cpp[00m  [01;34mtest_code[00m             [00mvectortest.cpp[00m
[00mMakefile[00m              [00mff[00m         [00mstacktest.h[00m    [00msymbolobjecttest.h[00m    [01;34mtest_drivers[00m          [00mvectortest.h[00m
[00mbalancedtreetest.cpp[00m  [00mlex.yy.c[00m   [00mstring.cpp[00m     [00msymboltable.cpp[00m       [01;32mtest_parser[00m           [01;32my.tab.h[00m
[00mbalancedtreetest.h[00m    [00mlex.yy.o[00m   [00mstring.h[00m       [00msymboltable.h[00m         [00mtest_parser_driver.o[00m
[m]0;marcel@flapjack:~/scrimclean/scrim[01;32mmarcel@flapjack [01;34mscrim $ [00mle s -l
[00mtotal 3055
drwxr-xr-x    2 marcel   users         160 Mar 14 03:09 [01;34mCVS[00m
-rw-r--r--    1 marcel   users      238414 Mar 14 03:10 [00mC_grammar.output[00m
-rw-r--r--    1 marcel   users      113652 Mar 14 03:10 [00mC_grammar.tab.c[00m
-rw-r--r--    1 marcel   users        1824 Mar 14 03:10 [00mC_grammar.tab.h[00m
-rw-r--r--    1 marcel   users      229472 Mar 14 03:10 [00mC_grammar.tab.o[00m
-rwxr-xr-x    1 marcel   users       39708 Mar 14 02:18 [01;32mC_grammar.y[00m
-rw-r--r--    1 marcel   users        2821 Mar 14 00:11 [00mMakefile[00m
-rw-r--r--    1 marcel   users        2489 Mar 11 22:32 [00mbalancedtreetest.cpp[00m
-rw-r--r--    1 marcel   users        1696 Mar  2 22:29 [00mbalancedtreetest.h[00m
-rw-r--r--    1 marcel   users        7843 Mar 13 23:36 [00mbst.cpp[00m
-rw-r--r--    1 marcel   users        3181 Mar 13 23:36 [00mbst.h[00m
-rw-r--r--    1 marcel   users      160328 Mar 14 03:10 [00mbst.o[00m
drwxr-xr-x    3 marcel   users         160 Mar 14 03:10 [01;34mdebug[00m
drwxr-xr-x    4 marcel   users         280 Mar 14 02:38 [01;34mdocs[00m
-rw-r--r--    1 marcel   users       30195 Mar 13 09:21 [00mdocxx.sty[00m
-rw-r--r--    1 marcel   users           2 Mar 14 00:46 [00mff[00m
-rw-r--r--    1 marcel   users       84423 Mar 14 03:10 [00mlex.yy.c[00m
-rw-r--r--    1 marcel   users      196312 Mar 14 03:10 [00mlex.yy.o[00m
-rwxr-xr-x    1 marcel   users       35351 Mar 14 03:09 [01;32mscanner.l[00m
-rwxr-xr-x    1 marcel   users         821 Mar 14 00:46 [01;32mscript.sh[00m
-rw-r--r--    1 marcel   users        2125 Mar 13 23:36 [00mstack.cpp[00m
-rw-r--r--    1 marcel   users        1668 Mar 13 23:36 [00mstack.h[00m
-rw-r--r--    1 marcel   users      157744 Mar 14 03:10 [00mstack.o[00m
-rw-r--r--    1 marcel   users        2758 Mar 11 00:18 [00mstacktest.cpp[00m
-rw-r--r--    1 marcel   users         698 Mar 12 22:21 [00mstacktest.h[00m
-rw-r--r--    1 marcel   users        2133 Mar 13 23:36 [00mstring.cpp[00m
-rw-r--r--    1 marcel   users        1562 Mar 13 23:36 [00mstring.h[00m
-rw-r--r--    1 marcel   users      148264 Mar 14 03:10 [00mstring.o[00m
-rw-r--r--    1 marcel   users         341 Mar 10 14:42 [00mstripreturn.pl[00m
-rw-r--r--    1 marcel   users        8234 Mar 14 02:37 [00msymbolobject.cpp[00m
-rw-r--r--    1 marcel   users        4353 Mar 13 23:36 [00msymbolobject.h[00m
-rw-r--r--    1 marcel   users      165860 Mar 14 03:10 [00msymbolobject.o[00m
-rw-r--r--    1 marcel   users        4097 Mar 12 19:41 [00msymbolobjecttest.cpp[00m
-rw-r--r--    1 marcel   users        1749 Mar  3 23:27 [00msymbolobjecttest.h[00m
-rw-r--r--    1 marcel   users        3871 Mar 13 23:36 [00msymboltable.cpp[00m
-rw-r--r--    1 marcel   users        2029 Mar 13 23:36 [00msymboltable.h[00m
-rw-r--r--    1 marcel   users      160720 Mar 14 03:10 [00msymboltable.o[00m
-rw-r--r--    1 marcel   users        4227 Mar 12 20:22 [00msymboltabletest.cpp[00m
-rw-r--r--    1 marcel   users        1607 Mar 11 22:32 [00msymboltabletest.h[00m
-rw-r--r--    1 marcel   users        1737 Mar 13 23:36 [00msymenum.h[00m
-rwxr-xr-x    1 marcel   users        1617 Mar 14 02:18 [01;32mtest.c[00m
drwxr-xr-x    3 marcel   users         216 Mar 14 02:38 [01;34mtest_code[00m
drwxr-xr-x    3 marcel   users         152 Mar 14 03:09 [01;34mtest_drivers[00m
-rwxr-xr-x    1 marcel   users      693445 Mar 14 03:10 [01;32mtest_parser[00m
-rw-r--r--    1 marcel   users      156948 Mar 14 03:10 [00mtest_parser_driver.o[00m
-rw-r--r--    1 marcel   users      319488 Mar 14 03:10 [00mtypescript[00m
-rw-r--r--    1 marcel   users        1566 Mar  2 22:29 [00munitmain.cpp[00m
-rw-r--r--    1 marcel   users        1733 Mar 13 23:36 [00mvector.cpp[00m
-rw-r--r--    1 marcel   users        1202 Mar 13 23:36 [00mvector.h[00m
-rw-r--r--    1 marcel   users        5740 Mar 14 03:10 [00mvector.o[00m
-rw-r--r--    1 marcel   users        2042 Mar 12 22:23 [00mvectortest.cpp[00m
-rw-r--r--    1 marcel   users         495 Mar 12 22:23 [00mvectortest.h[00m
-rwxr-xr-x    1 marcel   users        1671 Mar  9 23:49 [01;32my.tab.h[00m
[m]0;marcel@flapjack:~/scrimclean/scrim[01;32mmarcel@flapjack [01;34mscrim $ [00mennsc   scrit pt -2Cr    r -C --margins: =72::: typescript [4h-[4l[4hp[4l[4h [4lt[4ht[4l[4hy[4l[4hp[4l[4he[4l[4hs[4l[4hc[4l[4hr[4l[4hi[4l[4hp[4lt[4ht[4l[1P[1P[1P[1P[1P[1P[1P[1P[1P[4he[4l[4hs[4lt[4ht[4l[4hr[4l[4hu[4l[4hn[4l[4h.[4l[4hp[4l[4hs[4l[4h [4l
[ 62 pages * 1 copy ] left in testrun.ps
280 lines were wrapped
2 non-printable characters
]0;marcel@flapjack:~/scrimclean/scrim[01;32mmarcel@flapjack [01;34mscrim $ [00m[Kps2pdf typescript            testrun.ps 
]0;marcel@flapjack:~/scrimclean/scrim[01;32mmarcel@flapjack [01;34mscrim $ [00mxpdf teest   strun.pdf 
Warning: Color name "#e6dedc                                                     " is not defined
Warning: 
    Name: scroll
    Class: XmScrolledWindow
    DeAssocNavigator requires a navigator trait

]0;marcel@flapjack:~/scrimclean/scrim[01;32mmarcel@flapjack [01;34mscrim $ [00ml
bash: l: command not found
]0;marcel@flapjack:~/scrimclean/scrim[01;32mmarcel@flapjack [01;34mscrim $ [00mls
[00m[01;34mCVS[00m                   [00mbst.h[00m      [00mstack.cpp[00m         [00msymbolobject.h[00m        [01;32mtest.c[00m                [00mvector.h[00m
[00mC_grammar.output[00m      [00mbst.o[00m      [00mstack.h[00m           [00msymbolobject.o[00m        [01;34mtest_code[00m             [00mvector.o[00m
[00mC_grammar.tab.c[00m       [01;34mdebug[00m      [00mstack.o[00m           [00msymbolobjecttest.cpp[00m  [01;34mtest_drivers[00m          [00mvectortest.cpp[00m
[00mC_grammar.tab.h[00m       [01;34mdocs[00m       [00mstacktest.cpp[00m     [00msymbolobjecttest.h[00m    [01;32mtest_parser[00m           [00mvectortest.h[00m
[00mC_grammar.tab.o[00m       [00mdocxx.sty[00m  [00mstacktest.h[00m       [00msymboltable.cpp[00m       [00mtest_parser_driver.o[00m  [01;32my.tab.h[00m
[01;32mC_grammar.y[00m           [00mff[00m         [00mstring.cpp[00m        [00msymboltable.h[00m         [00mtestrun.pdf[00m
[00mMakefile[00m              [00mlex.yy.c[00m   [00mstring.h[00m          [00msymboltable.o[00m         [00mtestrun.ps[00m
[00mbalancedtreetest.cpp[00m  [00mlex.yy.o[00m   [00mstring.o[00m          [00msymboltabletest.cpp[00m   [00mtypescript[00m
[00mbalancedtreetest.h[00m    [01;32mscanner.l[00m  [00mstripreturn.pl[00m    [00msymboltabletest.h[00m     [00munitmain.cpp[00m
[00mbst.cpp[00m               [01;32mscript.sh[00m  [00msymbolobject.cpp[00m  [00msymenum.h[00m             [00mvector.cpp[00m
[m]0;marcel@flapjack:~/scrimclean/scrim[01;32mmarcel@flapjack [01;34mscrim $ [00mlpdr    r testrun.pdf 
]0;marcel@flapjack:~/scrimclean/scrim[01;32mmarcel@flapjack [01;34mscrim $ [00mcd ..
]0;marcel@flapjack:~/scrimclean[01;32mmarcel@flapjack [01;34mscrimclean $ [00mls
[00m[01;34mscrim[00m  [01;31mscrim.tgz[00m
[m]0;marcel@flapjack:~/scrimclean[01;32mmarcel@flapjack [01;34mscrimclean $ [00mdtp     ftp so  upload.sourceforge.net
Connected to osdn.dl.sourceforge.net.
220 ProFTPD 1.2.0pre10 Server (ftp1.sourceforge.net) [66.35.250.221]
Name (upload.sourceforge.net:marcel): anonm ymous
500 AUTH not understood.
SSL not available
331 Anonymous login ok, send your complete e-mail address as password.
Password:
230-********************************************************************
 SourceForge.net FTP server - San Jose (osdn.dl.sourceforge.net)
 Additional access is at http://osdn.dl.sourceforge.net/pub/mirrors/
 Mirrors, try 'rsync osdn.dl.sourceforge.net::'
 
 Got a fat pipe and something to prove? Host a SourceForge download
   server! Email ftpadmin@sourceforge.net for opportunities.
 
 On This Site:
 /pub/sourceforge/          SourceForge.net Project File Archive
 *********************************************************************
230 Anonymous access granted, restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pit  ut scrim.tgz
local: scrim.tgz remote: scrim.tgz
200 PORT command successful.
550 scrim.tgz: Permissio