mojoshader_assembler.c
changeset 587 202354e004fc
parent 586 321a19a62989
child 598 decc32dc03a7
--- 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