10 #include "../clib/compilerspecifics.h" 25 #include "../clib/maputil.h" 26 #include "../clib/refptr.h" 43 class EScriptProgramCheckpoint;
44 class FunctionalityModule;
90 mutable bool used =
false;
91 mutable bool unused =
false;
100 void popblock(
bool varsOnly );
101 void addvar(
const std::string& varname,
const CompilerContext& ctx,
bool warn_on_notused =
true,
102 bool unused =
false );
104 bool inblock()
const {
return !blockdescs_.empty(); }
107 bool varexists(
const std::string& varname,
unsigned& idx )
const;
108 bool varexists(
const std::string& varname )
const;
109 unsigned int numVariables()
const {
return static_cast<unsigned int>( variables_.size() ); }
145 typedef std::set<std::string, Clib::ci_cmp_pred>
INCLUDES;
151 typedef std::map<std::string, UserFunction, Clib::ci_cmp_pred>
UserFunctions;
154 int findLabel(
Token& tok,
unsigned& posn );
155 int enterLabel(
Token& tok );
170 bool globalexists(
const std::string& varname,
unsigned& idx,
175 bool varexists(
const std::string& varname )
const;
189 BTokenId* last_statement_id = NULL,
Token* block_end = NULL );
190 void leaveblock(
unsigned breakPC,
unsigned continuePC );
191 void emit_leaveblock();
192 void patchblock_continues(
unsigned continuePC );
193 void patchblock_breaks(
unsigned breakPC );
196 bool substitute_constant(
Token* tkn )
const;
197 void substitute_constants(
Expression& expr )
const;
198 void convert_variables(
Expression& expr )
const;
202 int insertBreak(
const std::string& label );
208 void dump( std::ostream& os );
211 int useModule(
const char* modulename );
212 int includeModule(
const std::string& modulename );
216 void patchoffset(
unsigned instruc,
unsigned newoffset );
217 void addToken(
Token& tok );
231 int getExpr(
CompilerContext& ctx,
unsigned expr_flags,
size_t* exprlen = NULL,
272 void savesourceline();
277 int getFileContents(
const char* filename,
char** contents );
278 int compileFile(
const char* fname );
282 int write(
const char* fname );
283 int write_dbg(
const char* fname,
bool generate_txtfile );
284 void writeIncludedFilenames(
const char* fname )
const;
291 bool read_function_declarations_in_included_file(
const char* modulename );
295 int handleBracketedFunction2(
CompilerContext& ctx,
int level,
int tokentype );
300 int emit_functions();
308 #endif // H_COMPILER_H
static bool check_filecase_
unsigned numVarsInBlock() const
std::set< std::string, Clib::ci_cmp_pred > INCLUDES
std::vector< BlockDesc > blockdescs_
TokenAddrs continue_tokens
std::map< std::string, UserFunction, Clib::ci_cmp_pred > UserFunctions
void setIncludeCompileMode()
std::vector< unsigned > TokenAddrs
std::vector< std::string > referencedPathnames
UserFunctions userFunctions
static int verbosity_level_
void checkpoint(const char *msg, unsigned short minlvl)
unsigned int numVariables() const
std::vector< char * > delete_these_arrays
static void setVerbosityLevel(int vlev)
std::map< std::string, Token > Constants
static void setCheckFileCase(bool check)
std::string current_file_path
bool inGlobalScope() const
eb_continue_ok continue_ok
CompilerContext program_ctx
ref_ptr< EScriptProgram > program
const BlockDesc & blockdesc() const
std::vector< Variable > Variables