# HG changeset patch # User mjsousa # Date 1404565828 -3600 # Node ID 38dca2e264b65777dc0dcb611f19c0a7c19c2b3e # Parent 6a3964be6a2992f580c0429e23b367815e44eb31# Parent 39086e324665fa818168f527dbd99d014cd4b8de merge diff -r 6a3964be6a29 -r 38dca2e264b6 stage1_2/Makefile.am --- a/stage1_2/Makefile.am Sat Jul 05 13:57:39 2014 +0100 +++ b/stage1_2/Makefile.am Sat Jul 05 14:10:28 2014 +0100 @@ -5,12 +5,15 @@ # Make sure this header file is generated first (by bison), as it is included # by other C++ code that will also be compiled. -BUILT_SOURCES = iec_bison.h +BUILT_SOURCES = iec_bison.hh + +%.hh: %.h + cp $< $@ CLEANFILES = \ iec_flex.cc \ iec_bison.cc \ - iec_bison.h + iec_bison.hh lib_LIBRARIES = libstage1_2.a libstage1_2_a_SOURCES = \ @@ -19,5 +22,5 @@ create_enumtype_conversion_functions.cc \ stage1_2.cc -libstage1_2_a_CPPFLAGS = -DDEFAULT_LIBDIR='"lib"' -I../../absyntax -DYY_BUF_SIZE=65536 +libstage1_2_a_CPPFLAGS = -DDEFAULT_LIBDIR='"lib"' -I../../absyntax -DYY_BUF_SIZE=65536 -fpermissive diff -r 6a3964be6a29 -r 38dca2e264b6 stage1_2/iec_bison.yy --- a/stage1_2/iec_bison.yy Sat Jul 05 13:57:39 2014 +0100 +++ b/stage1_2/iec_bison.yy Sat Jul 05 14:10:28 2014 +0100 @@ -96,7 +96,7 @@ #include "../absyntax/absyntax.hh" /* file with declaration of token constants. Generated by bison! */ -#include "iec_bison.h" +#include "iec_bison.hh" /* The interface through which bison and flex interact. */ #include "stage1_2_priv.hh" @@ -169,10 +169,10 @@ /* global variables... */ /*************************/ /* NOTE: For some strange reason bison ver 2.3 is including these declarations - * in the iec_bison.h file, which is in turn included by flex. + * in the iec_bison.hh file, which is in turn included by flex. * We cannot therefore define any variables over here, but merely declare * their existance (otherwise we get errors when linking the code, since we - * would get a new variable defined each time iec_bison.h is included!). + * would get a new variable defined each time iec_bison.hh is included!). * Even though the variables are declared 'extern' over here, they will in * fact be defined towards the end of this same file (i.e. in the prologue) */ @@ -250,14 +250,14 @@ /* The following definitions need to be inside a '%code requires' * so that they are also included in the header files. If this were not the case, * YYLTYPE would be delcared as something in the iec.cc file, and another thing - * (actually the default value of YYLTYPE) in the iec_bison.h heder file. + * (actually the default value of YYLTYPE) in the iec_bison.hh heder file. */ %code requires { /* define a new data type to store the locations, so we can also store * the filename in which the token is expressed. */ -/* NOTE: since this code will be placed in the iec_bison.h header file, - * as well as the iec.cc file that also includes the iec_bison.h header file, +/* NOTE: since this code will be placed in the iec_bison.hh header file, + * as well as the iec.cc file that also includes the iec_bison.hh header file, * declaring the typedef struct yyltype__local here would result in a * compilation error when compiling iec.cc, as this struct would be * declared twice. diff -r 6a3964be6a29 -r 38dca2e264b6 stage1_2/iec_flex.ll --- a/stage1_2/iec_flex.ll Sat Jul 05 13:57:39 2014 +0100 +++ b/stage1_2/iec_flex.ll Sat Jul 05 14:10:28 2014 +0100 @@ -124,17 +124,17 @@ /* Required only for the declaration of abstract syntax classes * (class symbol_c; class token_c; class list_c;) * These will not be used in flex, but the token type union defined - * in iec_bison.h contains pointers to these classes, so we must include + * in iec_bison.hh contains pointers to these classes, so we must include * it here. */ #include "../absyntax/absyntax.hh" -/* iec_bison.h is generated by bison. +/* iec_bison.hh is generated by bison. * Contains the definition of the token constants, and the * token value type YYSTYPE (in our case, a 'const char *') */ -#include "iec_bison.h" +#include "iec_bison.hh" #include "stage1_2_priv.hh" diff -r 6a3964be6a29 -r 38dca2e264b6 stage1_2/stage1_2.cc --- a/stage1_2/stage1_2.cc Sat Jul 05 13:57:39 2014 +0100 +++ b/stage1_2/stage1_2.cc Sat Jul 05 14:10:28 2014 +0100 @@ -44,7 +44,7 @@ #include "stage1_2.hh" -#include "iec_bison.h" +#include "iec_bison.hh" #include "stage1_2_priv.hh" #include "create_enumtype_conversion_functions.hh" @@ -135,14 +135,14 @@ /* NOTE: only accessed indirectly by the lexical parser (flex) * through the function get_identifier_token() */ -/* NOTE: BOGUS_TOKEN_ID is defined in the bison generated file iec_bison.h. +/* NOTE: BOGUS_TOKEN_ID is defined in the bison generated file iec_bison.hh. * We need this constant defined before we can declare the symbol tables. - * However, we cannot #include "iec_bison.h" in this file (stage1_2_priv.hh) directly + * However, we cannot #include "iec_bison.hh" in this file (stage1_2_priv.hh) directly * because of the way bison ver. 3.2 is copying all declarations in the prologue - * of iec.y to the iec_bison.h file (including an #include stage1_2_priv.hh). - * So, if we were to include "iec_bison.h" here, we would get a circular include. + * of iec.y to the iec_bison.hh file (including an #include stage1_2_priv.hh). + * So, if we were to include "iec_bison.hh" here, we would get a circular include. * All this means that whoever includes this file (stage1_2_priv.hh) will need - * to take care to first inlcude iec_bison.h !! + * to take care to first inlcude iec_bison.hh !! */ /* A symbol table to store all the library elements */ /* e.g.: diff -r 6a3964be6a29 -r 38dca2e264b6 stage1_2/stage1_2_priv.hh --- a/stage1_2/stage1_2_priv.hh Sat Jul 05 13:57:39 2014 +0100 +++ b/stage1_2/stage1_2_priv.hh Sat Jul 05 14:10:28 2014 +0100 @@ -40,10 +40,10 @@ /* !!! WARNING !!! * * Whoever includes this file (stage1_2_priv.hh) will need - * to first inlcude iec_bison.h !! + * to first inlcude iec_bison.hh !! * * Read other comments further down to understand why we don't - * include iec_bison.h in this file. + * include iec_bison.hh in this file. */ @@ -194,14 +194,14 @@ * * In essence, they are a data passing mechanism between Bison and Flex. */ -/* NOTE: BOGUS_TOKEN_ID is defined in the bison generated file iec_bison.h. +/* NOTE: BOGUS_TOKEN_ID is defined in the bison generated file iec_bison.hh. * We need this constant defined before we can declare the symbol tables. - * However, we cannot #include "iec_bison.h" in this file (stage1_2_priv.hh) directly + * However, we cannot #include "iec_bison.hh" in this file (stage1_2_priv.hh) directly * because of the way bison ver. 2.3 is copying all declarations in the prologue - * of iec.y to the iec_bison.h file (including an #include stage1_2_priv.hh). - * So, if we were to include "iec_bison.h" here, we would get a circular include. + * of iec.y to the iec_bison.hh file (including an #include stage1_2_priv.hh). + * So, if we were to include "iec_bison.hh" here, we would get a circular include. * All this means that whoever includes this file (stage1_2_priv.hh) will need - * to take care to first inlcude iec_bison.h !! + * to take care to first inlcude iec_bison.hh !! */ /* A symbol table to store all the library elements */ /* e.g.: diff -r 6a3964be6a29 -r 38dca2e264b6 stage4/generate_c/generate_c.cc --- a/stage4/generate_c/generate_c.cc Sat Jul 05 13:57:39 2014 +0100 +++ b/stage4/generate_c/generate_c.cc Sat Jul 05 14:10:28 2014 +0100 @@ -170,11 +170,12 @@ /***********************************************************************/ /***********************************************************************/ + +static int generate_line_directives__ = 0; + +#ifdef __unix__ /* Parse command line options passed from main.c !! */ #include // for getsybopt() - -static int generate_line_directives__ = 0; - int stage4_parse_options(char *options) { enum { LINE_OPT = 0 /*, SOME_OTHER_OPT, YET_ANOTHER_OPT */}; char *const token[] = { /*[LINE_OPT]=*/(char *)"l" /*, SOME_OTHER_OPT, ... */, NULL }; @@ -198,7 +199,12 @@ printf(" (options must be separated by commas. Example: 'l,w,x')\n"); printf(" l : insert '#line' directives in generated C code.\n"); } - +#else /* not __unix__ */ +/* getsubopt isn't supported with mingw, + * then stage4 options aren't available on windows*/ +void stage4_print_options(void) {} +int stage4_parse_options(char *options) {} +#endif /***********************************************************************/ /***********************************************************************/