Re: Generating C++ code

Discussion in 'Python' started by Stefan Behnel, Oct 10, 2012.

  1. Jean-Michel Pichavant, 10.10.2012 11:59:
    > Well, the C++ code will end up running on a MIPS on a SOC,
    > unfortunately, python is not an option here. The xml to C++ makes a lot
    > of sense, because only a small part of the code is generated that way
    > (everything related to log & fatal events). Everything else is written
    > directly in C++.
    > To answer Andrea's question, the files are regenerated for every
    > compilation (well, unless the xml didn't change, but the xml is highly
    > subject to changes, that's actually its purpose)
    > Currently we already have a python script that translate this xml file
    > to C++, but it's done in a way that is difficult to maintain. Basically,
    > when parsing the xml file, it writes the generated C++ code. Something
    > like:
    > if 'blabla' in xml:
    > h_file.write("#define blabla 55", append="top")
    > c_file.write("someglobal = blabla", append="bottom")
    > This is working, but the python code is quite difficult to maintain,
    > there's a lot of escaping going on, it's almost impossible to see the
    > structure of the c files unless generating one and hopping it's
    > successful. It's also quite difficult to insert code exactly where you
    > want, because you do not know the order in which the xml trees are
    > defined then parsed.
    > I was just wondering if a template engine would help. Maybe not.

    Depends. Template engines are great for injecting small data snippets into
    large static code blocks. They are less good for finely structured code
    with conditional insertions and varying code order all over the place.

    In Cython, we use a combination of both: a template engine for large code
    blocks with small adaptations and line-by-line generated C code for highly
    varying code. Works nicely.

    As for a template engine, we use Tempita for the more complex stuff
    (because the implementation is small and can be embedded) and
    string.Template for the simple stuff. If you need something more advanced
    straight away, I'd say go for Cheetah.

    In case you decide not to use a template engine at all, given that your
    input format is XML, consider using lxml to build up your code tree for you
    by using custom element classes. Then, generate the code recursively top-down.

    Might or might not be a suitable approach, depending on the complexity of
    your mapping from XML to code.

    Stefan Behnel, Oct 10, 2012
    1. Advertisements

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Nevyn Twyll
    Nevyn Twyll
    Mar 6, 2004
  2. =?Utf-8?B?Y25pY2ts?=

    Generating HTML code

    =?Utf-8?B?Y25pY2ts?=, Mar 22, 2005, in forum: ASP .Net
    Kevin Spencer
    Mar 22, 2005
  3. Naveen K Kohli

    td tag generating faulty code

    Naveen K Kohli, May 13, 2005, in forum: ASP .Net
    David Lloyd
    May 13, 2005
  4. Generating HTML code in the code-behind

    , Aug 25, 2005, in forum: ASP .Net Building Controls
    Sep 25, 2005
  5. Generating HTML code in the code-behind

    , Aug 25, 2005, in forum: ASP .Net Web Controls
    Sep 25, 2005

Share This Page