absyntax_utils/debug_ast.hh
changeset 725 bfbe4aca6b77
parent 678 01e33dc2a255
child 979 f8f1d89ff7d5
equal deleted inserted replaced
724:d19877568878 725:bfbe4aca6b77
    39 
    39 
    40 
    40 
    41 
    41 
    42 
    42 
    43 
    43 
    44 #include "../absyntax/visitor.hh"
    44 #include "../absyntax/absyntax.hh"
    45 
    45 
    46 
    46 
    47 
    47 class debug_c { 
    48 class print_symbol_c: public fcall_visitor_c { 
       
    49   public:
    48   public:
    50     static void print(symbol_c *symbol);
    49     static void print(symbol_c *symbol);
    51     
    50     static void print(const char *str);
    52   protected:
       
    53     void fcall(symbol_c *symbol);  
       
    54     /* AST symbols with extra data have their own specialised methods for printing that data */
       
    55     void *visit(il_instruction_c *symbol);
       
    56 
    51 
    57   private:
    52     /* print the AST from this point downwards */
    58     static print_symbol_c *singleton;
    53     static void print_ast(symbol_c *root_symbol);
    59     
       
    60     void dump_symbol(symbol_c* symbol);
       
    61 };
       
    62 
       
    63 
       
    64 
       
    65 
       
    66 
       
    67 
       
    68 class print_ast_c: public fcall_iterator_visitor_c { 
       
    69   public:
       
    70     static void print(symbol_c *symbol);
       
    71     
       
    72   protected:
       
    73   void prefix_fcall(symbol_c *symbol);
       
    74   void suffix_fcall(symbol_c *symbol);  
       
    75   
       
    76   private:
       
    77     static print_ast_c *singleton;    
       
    78 };
    54 };
    79 
    55 
    80 
    56 
    81 
    57 
    82 
    58 
    90 
    66 
    91 
    67 
    92 
    68 
    93 
    69 
    94 
    70 
       
    71 
       
    72