diff -r 2f6d8866ec8d -r 0a1204bcc9af stage4/stage4.hh --- a/stage4/stage4.hh Fri Apr 01 12:19:32 2011 +0100 +++ b/stage4/stage4.hh Mon Apr 04 10:42:03 2011 +0100 @@ -1,21 +1,28 @@ /* - * (c) 2003 Mario de Sousa + * matiec - a compiler for the programming languages defined in IEC 61131-3 * - * Offered to the public under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. + * Copyright (C) 2003-2011 Mario de Sousa (msousa@fe.up.pt) * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General - * Public License for more details. + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * * * This code is made available on the understanding that it will not be * used in safety-critical situations without a full and competent review. */ /* - * An IEC 61131-3 IL and ST compiler. + * An IEC 61131-3 compiler. * * Based on the * FINAL DRAFT - IEC 61131-3, 2nd Ed. (2001-12-10) @@ -41,6 +48,9 @@ stage4out_c(const char *dir, const char *radix, const char *extension, std::string indent_level = " "); ~stage4out_c(void); + void enable_output(void); + void disable_output(void); + void indent_right(void); void indent_left(void); @@ -62,6 +72,13 @@ protected: std::ostream *out; std::fstream *m_file; + + /* A flag to tell whether to really print to the file, or to ignore any request to print to the file */ + /* This is used to implement the no_code_generation pragmas, that lets the user tell the compiler + * when to switch on and off the code generation, without stoping the lexical, syntatical, and + * semantic analysers from analysing the code. + */ + bool allow_output; };