--- a/mojoshader_assembler.c Thu Feb 12 17:12:46 2009 -0500
+++ b/mojoshader_assembler.c Thu Feb 12 17:25:49 2009 -0500
@@ -10,7 +10,13 @@
#define __MOJOSHADER_INTERNAL__ 1
#include "mojoshader_internal.h"
-#define DEBUG_ASSEMBLY_PARSER 0
+#if DEBUG_ASSEMBLY_PARSER
+ #define print_debug_token(token, len, val) \
+ MOJOSHADER_print_debug_token("ASSEMBLER", token, len, val)
+#else
+ #define print_debug_token(token, len, val)
+#endif
+
// Simple linked list to cache source filenames, so we don't have to copy
// the same string over and over for each opcode.
@@ -224,82 +230,11 @@
} // _nexttoken
-// !!! FIXME: cut-and-paste from preprocessor.
-#if !DEBUG_ASSEMBLY_PARSER
-#define print_debug_token(ctx)
-#else
-static void print_debug_token(Context *ctx)
-{
- printf("ASSEMBLER TOKEN: \"");
- unsigned int i;
- for (i = 0; i < ctx->tokenlen; i++)
- {
- if (ctx->token[i] == '\n')
- printf("\\n");
- else
- printf("%c", ctx->token[i]);
- } // for
- printf("\" (");
- switch (ctx->tokenval)
- {
- #define TOKENCASE(x) case x: printf("%s", #x); break
- TOKENCASE(TOKEN_UNKNOWN);
- TOKENCASE(TOKEN_IDENTIFIER);
- TOKENCASE(TOKEN_INT_LITERAL);
- TOKENCASE(TOKEN_FLOAT_LITERAL);
- TOKENCASE(TOKEN_STRING_LITERAL);
- TOKENCASE(TOKEN_ADDASSIGN);
- TOKENCASE(TOKEN_SUBASSIGN);
- TOKENCASE(TOKEN_MULTASSIGN);
- TOKENCASE(TOKEN_DIVASSIGN);
- TOKENCASE(TOKEN_MODASSIGN);
- TOKENCASE(TOKEN_XORASSIGN);
- TOKENCASE(TOKEN_ANDASSIGN);
- TOKENCASE(TOKEN_ORASSIGN);
- TOKENCASE(TOKEN_INCREMENT);
- TOKENCASE(TOKEN_DECREMENT);
- TOKENCASE(TOKEN_RSHIFT);
- TOKENCASE(TOKEN_LSHIFT);
- TOKENCASE(TOKEN_ANDAND);
- TOKENCASE(TOKEN_OROR);
- TOKENCASE(TOKEN_LEQ);
- TOKENCASE(TOKEN_GEQ);
- TOKENCASE(TOKEN_EQL);
- TOKENCASE(TOKEN_NEQ);
- TOKENCASE(TOKEN_HASHHASH);
- TOKENCASE(TOKEN_PP_INCLUDE);
- TOKENCASE(TOKEN_PP_LINE);
- TOKENCASE(TOKEN_PP_DEFINE);
- TOKENCASE(TOKEN_PP_UNDEF);
- TOKENCASE(TOKEN_PP_IF);
- TOKENCASE(TOKEN_PP_IFDEF);
- TOKENCASE(TOKEN_PP_IFNDEF);
- TOKENCASE(TOKEN_PP_ELSE);
- TOKENCASE(TOKEN_PP_ELIF);
- TOKENCASE(TOKEN_PP_ENDIF);
- TOKENCASE(TOKEN_PP_ERROR);
- TOKENCASE(TOKEN_PP_INCOMPLETE_COMMENT);
- TOKENCASE(TOKEN_EOI);
- #undef TOKENCASE
-
- case ((Token) '\n'):
- printf("'\\n'");
- break;
-
- default:
- assert(((int)ctx->tokenval) < 256);
- printf("'%c'", (char) ctx->tokenval);
- break;
- } // switch
- printf(")\n");
-}
-#endif
-
static Token nexttoken(Context *ctx)
{
if (ctx->pushedback)
{
- print_debug_token(ctx);
+ print_debug_token(ctx->token, ctx->tokenlen, ctx->tokenval);
ctx->pushedback = 0;
return ctx->tokenval;
} // if
@@ -320,7 +255,7 @@
token = _nexttoken(ctx); // skip endlines.
} // if
- print_debug_token(ctx);
+ print_debug_token(ctx->token, ctx->tokenlen, ctx->tokenval);
return token;
} // nexttoken