/** true for strict language checking. */
bool strict_mode = false;
+/* to switch on printing of implicit casts */
+extern bool print_implicit_casts;
+
+/* to switch on printing of srenthesis to indicate operator precedence */
+extern bool print_parenthesis;
+
static int verbose;
static struct obstack cppflags_obst, ldflags_obst;
static FILE* preprocess(FILE* in, const char *fname)
{
char buf[4096];
+ obstack_1grow(&cppflags_obst, '\0');
const char *flags = obstack_finish(&cppflags_obst);
if(in != stdin) {
static void do_link(const char *out, const char *in)
{
char buf[4096];
+ obstack_1grow(&ldflags_obst, '\0');
const char *flags = obstack_finish(&ldflags_obst);
snprintf(buf, sizeof(buf), LINKER " %s -o %s %s", flags, out, in);
}
typedef enum compile_mode_t {
+ BenchmarkParser,
ParseOnly,
Compile,
CompileDump,
strict_mode = true;
} else if(strcmp(option, "lextest") == 0) {
mode = LexTest;
+ } else if(strcmp(option, "benchmark") == 0) {
+ mode = BenchmarkParser;
} else if(strcmp(option, "print-ast") == 0) {
mode = PrintAst;
+ } else if(strcmp(option, "print-implicit-cast") == 0) {
+ print_implicit_casts = true;
+ } else if(strcmp(option, "print-parenthesis") == 0) {
+ print_parenthesis = true;
} else if(strcmp(option, "print-fluffy") == 0) {
mode = PrintFluffy;
} else if(strcmp(option, "version") == 0) {
char outnamebuf[4096];
if(outname == NULL) {
switch(mode) {
+ case BenchmarkParser:
case PrintAst:
case PrintFluffy:
case LexTest:
fprintf(stderr, "%u warning(s)\n", warning_count);
}
+ if(mode == BenchmarkParser) {
+ return 0;
+ }
+
if(mode == PrintAst) {
type_set_output(out);
ast_set_output(out);