I use annotation macros in C to generate new C code from the AST.

For example in C, where the X macro uses the GNU annotate attribute, I do the 
following:
    
    
    // Type definition (can access fields from script)
    X(script) typedef struct {
      int value;
    } something_t; // yes I know it violates POSIX to use _t
    
    // Forward declaration (only the interface is needed to generate script 
bindings)
    X(script) X(inc_op) something_t something_inc(const something_t something);
    

Then I wrote a code generator using libclang that reads the AST and generates 
script bindings in C for every AST node that is annotated with "script".

I also use annotations to automatically generate transparent networking code, 
save/load functionality etc.

The generated code may contain new structures and functions based on the 
annotated ones which can be used from other C code afterwards.

Is something like this possible in Nim as well?

Reply via email to