Source code generation using Python

2008-12-06 Thread ats
Hello,

This is my first posting to a Python group (and I'm starting with
Python seriously only now) , so bear with me if I make some mistakes.

I want to generate 3 different versions of a C++ source code,
basically injecting different flavours of inline assembler depending
on target compiler/CPU.

Code generation should be integrated into a 'master source file' which
is the processed and generates the right code for GCC / MSVC or other
cases. Something like:

  int FastAdd( int t1, int t2 ){
int r;
##if USE_INLINE_ASM
  #ARG( eax, t1)
  #ARG( ebx, t2)
  #ASM( add, ebx, eax )
  #RES( eax, r )
##else
  r = t1+t2;
##endif
return r;
  }

On processing, given constant USE_INLINE_ASM (or not) the right code
is generated to a target file, which goes into the build process.

I was looking for packages that can do this and came up with some
candidates:

 - empy - http://www.alcyone.com/pyos/empy/ - It looks like it could
do the job, but appears non-maintained since 2003.
- Cheetah - Looks like more of a tool to do fix replacements of code
snippets.

There is some logic going on in the ARG, ASM and RES sections,
so I need to link code generation with true Python functions.

The situation is really quite similar to HTML/PHP except, here we
would have C++/Python.

Any suggestions?

Thanks,
//Arne S.
--
http://mail.python.org/mailman/listinfo/python-list


Re: Source code generation using Python

2008-12-06 Thread ats
On Dec 6, 11:19 pm, Philip Semanchuk [EMAIL PROTECTED] wrote:
 On Dec 6, 2008, at 4:47 PM, ats wrote:



  Hello,

  This is my first posting to a Python group (and I'm starting with
  Python seriously only now) , so bear with me if I make some mistakes.

  I want to generate 3 different versions of a C++ source code,
  basically injecting different flavours of inline assembler depending
  on target compiler/CPU.

  Code generation should be integrated into a 'master source file' which
  is the processed and generates the right code for GCC / MSVC or other
  cases. Something like:

   int FastAdd( int t1, int t2 ){
     int r;
     ##if USE_INLINE_ASM
       #ARG( eax, t1)
       #ARG( ebx, t2)
       #ASM( add, ebx, eax )
       #RES( eax, r )
     ##else
       r = t1+t2;
     ##endif
     return r;
   }

  On processing, given constant USE_INLINE_ASM (or not) the right code
  is generated to a target file, which goes into the build process.

  I was looking for packages that can do this and came up with some
  candidates:

  - empy -http://www.alcyone.com/pyos/empy/- It looks like it could
  do the job, but appears non-maintained since 2003.
  - Cheetah - Looks like more of a tool to do fix replacements of code
  snippets.

  There is some logic going on in the ARG, ASM and RES sections,
  so I need to link code generation with true Python functions.

 Hi Arne,
 There are *lots* of packages for Python that replace chunks of  
 predefined templates. Most are HTML-focused, some more so than others.  
 I've used Mako (http://www.makotemplates.org/) to generate both HTML  
 and Apache config files. It could certainly do C++. Some alternatives  
 to Mako are mentioned in the documentation -- Kid, Genshi and Cheetah.

 Rather than invite a flame war as to which is a better templating  
 engine, I'll just say that I'm happy with how Mako addresses *my*  
 needs. =) Good luck finding something that addresses yours.

 Cheers
 Philip



  The situation is really quite similar to HTML/PHP except, here we
  would have C++/Python.

  Any suggestions?

  Thanks,
  //Arne S.
  --
 http://mail.python.org/mailman/listinfo/python-list



Thanks, Mako looks neat.

Regards
// Arne S.
--
http://mail.python.org/mailman/listinfo/python-list