> Can't macros and preprocessor directives be represented as just another nodes
> in the AST?
In some cases yes, in some other no. The preprocessor allows you to completely
change the syntax of C. This makes it very hard to parse. Consider the
following valid C program:
#define LEFTPARENT (
#define RIGHTPARENT )
int main LEFTPARENT void RIGHTPARENT {
return 0;
}
Cheers,
Alexandre
>
>
> On 7 Apr 2011, at 23:53, Javier Pimás wrote:
>
> > by the way, the grammar is based on
> >
> > http://www.quut.com/c/ANSI-C-grammar-l-1998.html
> >
> > and
> >
> > http://www.quut.com/c/ANSI-C-grammar-y.html
> >
> > I'd be very grateful if you contribute to cover the full extent of it!
> >
> >
> > On Fri, Apr 8, 2011 at 12:37 AM, Javier Pimás <[email protected]>
> > wrote:
> > Hi,
> > I took some time to start developing a C parser with PetitParser. I
> > used the slides of the smalltalk school, they were pretty useful, and after
> > some hours I have a very basic tokens scanner. The idea of this work is to
> > be able to feed the parser with C headers and automagically get the C
> > bindings done in smalltalk.
> >
> > Now I have to actually start doing something with the scanned code. How
> > should I do that, all in the same class? What if I want to generate
> > bindings for different kinds of FFIs? Other question, how should I handle
> > preprocessing? (now there isn't any kind of preprocessing)
> >
> > You can see the code, download it and commit improvements to the repo at
> > www.squeaksource.com/Bindings
> >
> > Anybody who is interested is welcomed to help in the development!
> >
> > Regards,
> > Javier.
> >
> > --
> > Javier Pimás
> > Ciudad de Buenos Aires
> >
> >
> >
> > --
> > Javier Pimás
> > Ciudad de Buenos Aires
>
> --
> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> Alexandre Bergel http://www.bergel.eu
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>
>
>
>
>
>
>
>
>
> --
> Javier Pimás
> Ciudad de Buenos Aires
>
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.