pike.git / src / lex.c

version» Context lines:

pike.git/src/lex.c:1:   /*   || 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.113 2003/03/20 17:44:54 mast Exp $ + || $Id: lex.c,v 1.114 2003/08/06 18:05:27 mast Exp $   */      #include "global.h" - RCSID("$Id: lex.c,v 1.113 2003/03/20 17:44:54 mast Exp $"); + RCSID("$Id: lex.c,v 1.114 2003/08/06 18:05:27 mast Exp $");   #include "language.h"   #include "array.h"   #include "lex.h"   #include "stralloc.h"   #include "dynamic_buffer.h"   #include "constants.h"   #include "hashtable.h"   #include "stuff.h"   #include "pike_memory.h"   #include "interpret.h"
pike.git/src/lex.c:153:   #define ALIASADDR(X) , (void *)(X)      #define OPCODE0(OP,DESC,FLAGS) void PIKE_CONCAT(opcode_,OP)(void);   #define OPCODE1(OP,DESC,FLAGS) void PIKE_CONCAT(opcode_,OP)(INT32);   #define OPCODE2(OP,DESC,FLAGS) void PIKE_CONCAT(opcode_,OP)(INT32,INT32);      #define OPCODE0_TAIL(OP,DESC,FLAGS) void PIKE_CONCAT(opcode_,OP)(void);   #define OPCODE1_TAIL(OP,DESC,FLAGS) void PIKE_CONCAT(opcode_,OP)(INT32);   #define OPCODE2_TAIL(OP,DESC,FLAGS) void PIKE_CONCAT(opcode_,OP)(INT32,INT32);    - #define OPCODE0_JUMP(OP,DESC,FLAGS) void PIKE_CONCAT(opcode_,OP)(void); - #define OPCODE1_JUMP(OP,DESC,FLAGS) void PIKE_CONCAT(opcode_,OP)(INT32); - #define OPCODE2_JUMP(OP,DESC,FLAGS) void PIKE_CONCAT(opcode_,OP)(INT32,INT32); + #ifdef OPCODE_RETURN_JUMPADDR + #define OPCODE0_JUMP(OP,DESC,FLAGS) void *PIKE_CONCAT(jump_opcode_,OP)(void); + #define OPCODE1_JUMP(OP,DESC,FLAGS) void *PIKE_CONCAT(jump_opcode_,OP)(INT32); + #define OPCODE2_JUMP(OP,DESC,FLAGS) void *PIKE_CONCAT(jump_opcode_,OP)(INT32,INT32); + #define OPCODE0_TAILJUMP(OP,DESC,FLAGS) void *PIKE_CONCAT(jump_opcode_,OP)(void); + #define OPCODE1_TAILJUMP(OP,DESC,FLAGS) void *PIKE_CONCAT(jump_opcode_,OP)(INT32); + #define OPCODE2_TAILJUMP(OP,DESC,FLAGS) void *PIKE_CONCAT(jump_opcode_,OP)(INT32,INT32); + #define JUMPADDR(X) , (void *)PIKE_CONCAT(jump_opcode_,X) + #else /* !OPCODE_RETURN_JUMPADDR */ + #define OPCODE0_JUMP(OP, DESC, FLAGS) OPCODE0(OP, DESC, FLAGS) + #define OPCODE1_JUMP(OP, DESC, FLAGS) OPCODE1(OP, DESC, FLAGS) + #define OPCODE2_JUMP(OP, DESC, FLAGS) OPCODE2(OP, DESC, FLAGS) + #define OPCODE0_TAILJUMP(OP, DESC, FLAGS) OPCODE0_TAIL(OP, DESC, FLAGS) + #define OPCODE1_TAILJUMP(OP, DESC, FLAGS) OPCODE1_TAIL(OP, DESC, FLAGS) + #define OPCODE2_TAILJUMP(OP, DESC, FLAGS) OPCODE2_TAIL(OP, DESC, FLAGS) + #define JUMPADDR(X) ADDR(X) + #endif /* !OPCODE_RETURN_JUMPADDR */    - #define OPCODE0_TAILJUMP(OP,DESC,FLAGS) void PIKE_CONCAT(opcode_,OP)(void); - #define OPCODE1_TAILJUMP(OP,DESC,FLAGS) void PIKE_CONCAT(opcode_,OP)(INT32); - #define OPCODE2_TAILJUMP(OP,DESC,FLAGS) void PIKE_CONCAT(opcode_,OP)(INT32,INT32); + #define OPCODE0_PTRJUMP(OP,DESC,FLAGS) OPCODE0_JUMP(OP, DESC, FLAGS) + #define OPCODE1_PTRJUMP(OP,DESC,FLAGS) OPCODE1_JUMP(OP, DESC, FLAGS) + #define OPCODE2_PTRJUMP(OP,DESC,FLAGS) OPCODE2_JUMP(OP, DESC, FLAGS) + #define OPCODE0_TAILPTRJUMP(OP,DESC,FLAGS) OPCODE0_TAILJUMP(OP, DESC, FLAGS) + #define OPCODE1_TAILPTRJUMP(OP,DESC,FLAGS) OPCODE1_TAILJUMP(OP, DESC, FLAGS) + #define OPCODE2_TAILPTRJUMP(OP,DESC,FLAGS) OPCODE2_TAILJUMP(OP, DESC, FLAGS)    - #define OPCODE0_RETURN(OP, DESC, FLAGS) OPCODE0(OP, DESC, FLAGS) - #define OPCODE1_RETURN(OP, DESC, FLAGS) OPCODE1(OP, DESC, FLAGS) - #define OPCODE2_RETURN(OP, DESC, FLAGS) OPCODE2(OP, DESC, FLAGS) - #define OPCODE0_TAILRETURN(OP, DESC, FLAGS) OPCODE0_TAIL(OP, DESC, FLAGS) - #define OPCODE1_TAILRETURN(OP, DESC, FLAGS) OPCODE1_TAIL(OP, DESC, FLAGS) - #define OPCODE2_TAILRETURN(OP, DESC, FLAGS) OPCODE2_TAIL(OP, DESC, FLAGS) + #define OPCODE0_RETURN(OP,DESC,FLAGS) OPCODE0_JUMP(OP, DESC, FLAGS) + #define OPCODE1_RETURN(OP,DESC,FLAGS) OPCODE1_JUMP(OP, DESC, FLAGS) + #define OPCODE2_RETURN(OP,DESC,FLAGS) OPCODE2_JUMP(OP, DESC, FLAGS) + #define OPCODE0_TAILRETURN(OP,DESC,FLAGS) OPCODE0_TAILJUMP(OP, DESC, FLAGS) + #define OPCODE1_TAILRETURN(OP,DESC,FLAGS) OPCODE1_TAILJUMP(OP, DESC, FLAGS) + #define OPCODE2_TAILRETURN(OP,DESC,FLAGS) OPCODE2_TAILJUMP(OP, DESC, FLAGS)      #define OPCODE0_ALIAS(OP, DESC, FLAGS, ADDR)   #define OPCODE1_ALIAS(OP, DESC, FLAGS, ADDR)   #define OPCODE2_ALIAS(OP, DESC, FLAGS, ADDR)      #ifdef OPCODE_INLINE_BRANCH   #define OPCODE0_BRANCH(OP,DESC,FLAGS) int PIKE_CONCAT(test_opcode_,OP)(void);   #define OPCODE1_BRANCH(OP,DESC,FLAGS) int PIKE_CONCAT(test_opcode_,OP)(INT32);   #define OPCODE2_BRANCH(OP,DESC,FLAGS) int PIKE_CONCAT(test_opcode_,OP)(INT32,INT32);   #define OPCODE0_TAILBRANCH(OP,DESC,FLAGS) int PIKE_CONCAT(test_opcode_,OP)(void);   #define OPCODE1_TAILBRANCH(OP,DESC,FLAGS) int PIKE_CONCAT(test_opcode_,OP)(INT32);   #define OPCODE2_TAILBRANCH(OP,DESC,FLAGS) int PIKE_CONCAT(test_opcode_,OP)(INT32,INT32);   #define BRANCHADDR(X) , (void *)PIKE_CONCAT(test_opcode_,X)   #else /* !OPCODE_INLINE_BRANCH */ - #define OPCODE0_BRANCH OPCODE0_JUMP - #define OPCODE1_BRANCH OPCODE1_JUMP - #define OPCODE2_BRANCH OPCODE2_JUMP - #define OPCODE0_TAILBRANCH OPCODE0_TAILJUMP - #define OPCODE1_TAILBRANCH OPCODE1_TAILJUMP - #define OPCODE2_TAILBRANCH OPCODE2_TAILJUMP - #define BRANCHADDR(X) , (void *)PIKE_CONCAT(opcode_,X) + #define OPCODE0_BRANCH OPCODE0_PTRJUMP + #define OPCODE1_BRANCH OPCODE1_PTRJUMP + #define OPCODE2_BRANCH OPCODE2_PTRJUMP + #define OPCODE0_TAILBRANCH OPCODE0_TAILPTRJUMP + #define OPCODE1_TAILBRANCH OPCODE1_TAILPTRJUMP + #define OPCODE2_TAILBRANCH OPCODE2_TAILPTRJUMP + #define BRANCHADDR(X) JUMPADDR(X)   #endif /* OPCODE_INLINE_BRANCH */      #include "interpret_protos.h"      #undef OPCODE0   #undef OPCODE1   #undef OPCODE2 -  +    #undef OPCODE0_TAIL   #undef OPCODE1_TAIL   #undef OPCODE2_TAIL      #undef OPCODE0_JUMP   #undef OPCODE1_JUMP   #undef OPCODE2_JUMP -  +    #undef OPCODE0_TAILJUMP   #undef OPCODE1_TAILJUMP   #undef OPCODE2_TAILJUMP    -  + #undef OPCODE0_PTRJUMP + #undef OPCODE1_PTRJUMP + #undef OPCODE2_PTRJUMP + #undef OPCODE0_TAILPTRJUMP + #undef OPCODE1_TAILPTRJUMP + #undef OPCODE2_TAILPTRJUMP +    #undef OPCODE0_RETURN   #undef OPCODE1_RETURN   #undef OPCODE2_RETURN   #undef OPCODE0_TAILRETURN   #undef OPCODE1_TAILRETURN   #undef OPCODE2_TAILRETURN      #undef OPCODE0_ALIAS   #undef OPCODE1_ALIAS   #undef OPCODE2_ALIAS
pike.git/src/lex.c:229:   #undef OPCODE0_BRANCH   #undef OPCODE1_BRANCH   #undef OPCODE2_BRANCH   #undef OPCODE0_TAILBRANCH   #undef OPCODE1_TAILBRANCH   #undef OPCODE2_TAILBRANCH      #else   #define ADDR(X)   #define BRANCHADDR(X) + #define JUMPADDR(X)   #define NULLADDR   #define ALIASADDR(X)   #endif      #define OPCODE0(OP,DESC,FLAGS) { DESC, OP, FLAGS ADDR(OP) },   #define OPCODE1(OP,DESC,FLAGS) { DESC, OP, FLAGS | I_HASARG ADDR(OP) },   #define OPCODE2(OP,DESC,FLAGS) { DESC, OP, FLAGS | I_TWO_ARGS ADDR(OP) }, -  + #define OPCODE0_TAIL(OP,DESC,FLAGS) OPCODE0(OP,DESC,FLAGS) + #define OPCODE1_TAIL(OP,DESC,FLAGS) OPCODE1(OP,DESC,FLAGS) + #define OPCODE2_TAIL(OP,DESC,FLAGS) OPCODE2(OP,DESC,FLAGS)    - #define OPCODE0_TAIL(OP,DESC,FLAGS) { DESC, OP, FLAGS ADDR(OP) }, - #define OPCODE1_TAIL(OP,DESC,FLAGS) { DESC, OP, FLAGS | I_HASARG ADDR(OP) }, - #define OPCODE2_TAIL(OP,DESC,FLAGS) { DESC, OP, FLAGS | I_TWO_ARGS ADDR(OP) }, + #define OPCODE0_PTRJUMP(OP,DESC,FLAGS) { DESC, OP, FLAGS | I_ISPTRJUMP JUMPADDR(OP) }, + #define OPCODE1_PTRJUMP(OP,DESC,FLAGS) { DESC, OP, FLAGS | I_ISPTRJUMPARG JUMPADDR(OP) }, + #define OPCODE2_PTRJUMP(OP,DESC,FLAGS) { DESC, OP, FLAGS | I_ISPTRJUMPARGS JUMPADDR(OP) }, + #define OPCODE0_TAILPTRJUMP(OP,DESC,FLAGS) OPCODE0_PTRJUMP(OP,DESC,FLAGS) + #define OPCODE1_TAILPTRJUMP(OP,DESC,FLAGS) OPCODE1_PTRJUMP(OP,DESC,FLAGS) + #define OPCODE2_TAILPTRJUMP(OP,DESC,FLAGS) OPCODE2_PTRJUMP(OP,DESC,FLAGS)    - #define OPCODE0_JUMP(OP,DESC,FLAGS) { DESC, OP, FLAGS | I_ISJUMP ADDR(OP) }, - #define OPCODE1_JUMP(OP,DESC,FLAGS) { DESC, OP, FLAGS | I_ISJUMPARG ADDR(OP) }, - #define OPCODE2_JUMP(OP,DESC,FLAGS) { DESC, OP, FLAGS | I_ISJUMPARGS ADDR(OP) }, - #define OPCODE0_TAILJUMP(OP,DESC,FLAGS) { DESC, OP, FLAGS | I_ISJUMP ADDR(OP) }, - #define OPCODE1_TAILJUMP(OP,DESC,FLAGS) { DESC, OP, FLAGS | I_ISJUMPARG ADDR(OP) }, - #define OPCODE2_TAILJUMP(OP,DESC,FLAGS) { DESC, OP, FLAGS | I_ISJUMPARGS ADDR(OP) }, + #define OPCODE0_JUMP(OP,DESC,FLAGS) { DESC, OP, FLAGS | I_ISJUMP JUMPADDR(OP) }, + #define OPCODE1_JUMP(OP,DESC,FLAGS) { DESC, OP, FLAGS | I_ISJUMPARG JUMPADDR(OP) }, + #define OPCODE2_JUMP(OP,DESC,FLAGS) { DESC, OP, FLAGS | I_ISJUMPARGS JUMPADDR(OP) }, + #define OPCODE0_TAILJUMP(OP, DESC, FLAGS) OPCODE0_JUMP(OP,DESC,FLAGS) + #define OPCODE1_TAILJUMP(OP, DESC, FLAGS) OPCODE1_JUMP(OP,DESC,FLAGS) + #define OPCODE2_TAILJUMP(OP, DESC, FLAGS) OPCODE2_JUMP(OP,DESC,FLAGS)    - #define OPCODE0_RETURN(OP, DESC, FLAGS) OPCODE0(OP, DESC, FLAGS) - #define OPCODE1_RETURN(OP, DESC, FLAGS) OPCODE1(OP, DESC, FLAGS) - #define OPCODE2_RETURN(OP, DESC, FLAGS) OPCODE2(OP, DESC, FLAGS) - #define OPCODE0_TAILRETURN(OP, DESC, FLAGS) OPCODE0_TAIL(OP, DESC, FLAGS) - #define OPCODE1_TAILRETURN(OP, DESC, FLAGS) OPCODE1_TAIL(OP, DESC, FLAGS) - #define OPCODE2_TAILRETURN(OP, DESC, FLAGS) OPCODE2_TAIL(OP, DESC, FLAGS) + #define OPCODE0_RETURN(OP, DESC, FLAGS) OPCODE0_JUMP(OP,DESC,FLAGS) + #define OPCODE1_RETURN(OP, DESC, FLAGS) OPCODE1_JUMP(OP,DESC,FLAGS) + #define OPCODE2_RETURN(OP, DESC, FLAGS) OPCODE2_JUMP(OP,DESC,FLAGS) + #define OPCODE0_TAILRETURN(OP, DESC, FLAGS) OPCODE0_RETURN(OP,DESC,FLAGS) + #define OPCODE1_TAILRETURN(OP, DESC, FLAGS) OPCODE1_RETURN(OP,DESC,FLAGS) + #define OPCODE2_TAILRETURN(OP, DESC, FLAGS) OPCODE2_RETURN(OP,DESC,FLAGS)      #define OPCODE0_ALIAS(OP, DESC, FLAGS, A) { DESC, OP, FLAGS ALIASADDR(A) },   #define OPCODE1_ALIAS(OP, DESC, FLAGS, A) { DESC, OP, FLAGS | I_HASARG ALIASADDR(A) },   #define OPCODE2_ALIAS(OP, DESC, FLAGS, A) { DESC, OP, FLAGS | I_TWO_ARGS ALIASADDR(A) },      #define OPCODE0_BRANCH(OP,DESC,FLAGS) { DESC, OP, FLAGS | I_ISBRANCH BRANCHADDR(OP) },   #define OPCODE1_BRANCH(OP,DESC,FLAGS) { DESC, OP, FLAGS | I_ISBRANCHARG BRANCHADDR(OP) },   #define OPCODE2_BRANCH(OP,DESC,FLAGS) { DESC, OP, FLAGS | I_ISBRANCHARGS BRANCHADDR(OP) }, - #define OPCODE0_TAILBRANCH(OP,DESC,FLAGS) { DESC, OP, FLAGS | I_ISBRANCH BRANCHADDR(OP) }, - #define OPCODE1_TAILBRANCH(OP,DESC,FLAGS) { DESC, OP, FLAGS | I_ISBRANCHARG BRANCHADDR(OP) }, - #define OPCODE2_TAILBRANCH(OP,DESC,FLAGS) { DESC, OP, FLAGS | I_ISBRANCHARGS BRANCHADDR(OP) }, + #define OPCODE0_TAILBRANCH(OP,DESC,FLAGS) OPCODE0_BRANCH(OP,DESC,FLAGS) + #define OPCODE1_TAILBRANCH(OP,DESC,FLAGS) OPCODE1_BRANCH(OP,DESC,FLAGS) + #define OPCODE2_TAILBRANCH(OP,DESC,FLAGS) OPCODE2_BRANCH(OP,DESC,FLAGS)      #define LEXER      struct keyword instr_names[]=   {   #ifndef PIKE_PRECOMPILER   #include "interpret_protos.h"   #endif /* !PIKE_PRECOMPILER */   { "%=", F_MOD_EQ,0 NULLADDR },   { "&=", F_AND_EQ,0 NULLADDR },