Branch: Tag:

2008-04-14

2008-04-14 10:14:41 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Pike compiler mega patch.
Added predef::CompilerEnvironment, which is a wrapper for struct compilation.
Moved the definition of struct compilation to the new header file "pike_compiler.h".
The compilation struct is now contained in the current context in the current_object during compilation.
The global variable lex is no more, it has moved into the compilation struct.
Added enter_compiler() and exit_compiler().
predef::compile() is now shorthand for predef::CompilerContext()->compile().

Rev: src/builtin_functions.c:1.652
Rev: src/compilation.h:1.35
Rev: src/docode.c:1.197
Rev: src/docode.h:1.20
Rev: src/dynamic_load.c:1.90
Rev: src/encode.c:1.263
Rev: src/language.yacc:1.411
Rev: src/las.c:1.406
Rev: src/lex.c:1.121
Rev: src/lex.h:1.36
Rev: src/lexer.h:1.66
Rev: src/module.c:1.52
Rev: src/object.c:1.284
Rev: src/operators.c:1.230
Rev: src/pike_compiler.h:1.1
Rev: src/pike_types.c:1.321
Rev: src/program.c:1.660
Rev: src/program.h:1.237

2:   || This file is part of Pike. For copyright information see COPYRIGHT.   || Pike is distributed under GPL, LGPL and MPL. See the file COPYING   || for more information. - || $Id: lex.c,v 1.120 2004/11/01 01:33:30 mast Exp $ + || $Id: lex.c,v 1.121 2008/04/14 10:14:40 grubba Exp $   */      #include "global.h"   #include "lex.h"   #include "stuff.h"   #include "bignum.h" -  + #include "pike_compiler.h" + #include "interpret.h"      #include <ctype.h>      #define LEXDEBUG 0    - struct lex lex; -  +    /* Must do like this since at least gcc is a little too keen on    * optimizing INT_TYPE_MUL_OVERFLOW otherwise. */   static unsigned INT32 eight = 8, sixteen = 16, ten = 10;
34:      int yylex(YYSTYPE *yylval)   { +  struct lex *lex; +  CHECK_COMPILER(); +  lex = &THIS_COMPILATION->lex;   #if LEXDEBUG>8    fprintf(stderr, "YYLEX: Calling lexer at 0x%08lx\n", -  (long)lex.current_lexer); +  (long)lex->current_lexer);   #endif /* LEXDEBUG > 8 */ -  return(lex.current_lexer(yylval)); +  return(lex->current_lexer(lex, yylval));   }