]> git.sur5r.net Git - cc65/commitdiff
Allow dumping of symbol expressions
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 11 Nov 2003 13:58:00 +0000 (13:58 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 11 Nov 2003 13:58:00 +0000 (13:58 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@2639 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/common/exprdefs.c
src/common/exprdefs.h

index 754c45c76ee7a0931cfd6f2826d7345e96720705..48258be4983eed14df9556d6ab53191b98424ce3 100644 (file)
 
 
 
-static void InternalDumpExpr (const ExprNode* Expr)
+static void InternalDumpExpr (const ExprNode* Expr, const ExprNode* (*ResolveSym) (const struct SymEntry*))
 /* Dump an expression in RPN to stdout */
 {
     if (Expr == 0) {
        return;
     }
-    InternalDumpExpr (Expr->Left);
-    InternalDumpExpr (Expr->Right);
+    InternalDumpExpr (Expr->Left, ResolveSym);
+    InternalDumpExpr (Expr->Right, ResolveSym);
 
     switch (Expr->Op) {
 
@@ -63,7 +63,13 @@ static void InternalDumpExpr (const ExprNode* Expr)
            break;
 
        case EXPR_SYMBOL:
-                   printf (" SYM");
+            if (ResolveSym && (Expr = ResolveSym (Expr->V.Sym)) != 0) {
+                       printf (" SYM (");
+                InternalDumpExpr (Expr, ResolveSym);
+                printf (") ");
+            } else {
+                printf ("SYM ");
+            }
            break;
 
        case EXPR_SECTION:
@@ -206,10 +212,10 @@ static void InternalDumpExpr (const ExprNode* Expr)
 
 
 
-void DumpExpr (const ExprNode* Expr)
+void DumpExpr (const ExprNode* Expr, const ExprNode* (*ResolveSym) (const struct SymEntry*))
 /* Dump an expression tree to stdout */
 {
-    InternalDumpExpr (Expr);
+    InternalDumpExpr (Expr, ResolveSym);
     printf ("\n");
 }
 
index 1e911a874ab99e7dbff54c0811b298a99be3ea70..8f9bc56f277132755b83edf966fafb72c866a36b 100644 (file)
@@ -132,7 +132,7 @@ struct ExprNode {
 
 
 
-void DumpExpr (const ExprNode* Expr);
+void DumpExpr (const ExprNode* Expr, const ExprNode* (*ResolveSym) (const struct SymEntry*));
 /* Dump an expression tree to stdout */