On Sat, 05 May 2012, tobi wrote:
> On Sat, 05 May 2012, Benoît Minisini wrote:
> > Le 05/05/2012 08:51, tobi a écrit :
> > >
> > > Concerning the preprocessor... What about utilising the cpp just as a 
> > > command that runs over each
> > > class and module file before seen by the compiler code? It's already 
> > > powerful enough or is that
> > > too much for gambas? (It would break existing code due to character case 
> > > in the gambas preprocessor
> > > directives...)
> > >
> > 
> > Yes, it will slow down the compiler and break everything (because the 
> > code becomes impossible to analyze)
> > 
> > Regards,
> > 
> > -- 
> > Benoît Minisini
> > 
> > ------------------------------------------------------------------------------
> > Live Security Virtual Conference
> > Exclusive live event will cover all the ways today's security and 
> > threat landscape has changed and how IT managers can respond. Discussions 
> > will include endpoint security, mobile security and the latest in malware 
> > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
> > _______________________________________________
> > Gambas-user mailing list
> > Gambas-user@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/gambas-user
> 
> OK.
> But just for interest, what do you mean by "impossible to analyze"? Excuse 
> me, but I haven't read
> anything from the compiler yet. (When you say "analyze", I think of line 
> numbers and stuff
> (optimisation can be done later, too, right?), but line numbers would be 
> possible, I'm almost a bit
> certain, to report to the IDE, if that is what you mean)
> I just tested it and found that cpp warns at ['] the gambas comment character 
> which, of course, may
> not ahve any closing ['] one and thus confuses the program but it fearlessly 
> ignores that and
> continues as expected.
> 
> As an example, consider these actions:
> $ ls -AR
> .:
> .gambas  .project  .src  .startup
> 
> ./.gambas:
> 
> ./.src:
> MMain.module  myfunc.function
> $ cp .src/MMain.module .src/MMain.module.old
> $ cat .src/MMain.module
> ' Gambas module file
> 
> #ifndef NOPREPROC
> #define PREPROC
> #endif
> 
> #include "myfunc.function"
> 
> Public Sub Main()
> 
> #ifdef PREPROC
>   /*
>    * I can use these comments when c-preprocessed, of course!
>    */
>   Print "This is cool"
>   myfunc()
> #endif
>   Print "This is normal"
> 
> End
> $ cpp .src/MMain.module.old | sed 's/^#.*$//' > .src/MMain.module
> .src/MMain.module:1:1: warning: missing terminating ' character [enabled by 
> default]
> $ gbc3 -ga
> OK
> $ cp .src/MMain.module.old .src/MMain.module
> $ gbx3
> This is cool
> preprocessing
> This is normal
> $ cpp -DNOPREPROC .src/MMain.module.old | sed 's/^#.*$//' > .src/MMain.module
> $ gbc3 -ga
> OK
> $ gbx3
> This is normal
> 
> It works!
> Used by people at least a bit familiar with the basics of the cpp won't have 
> any problems, the only
> thing is the translation of the cpp line control which I have discarded 
> gracefully using sed because
> I don't make any mistakes ;)
> 
> It's clear that it would slow down the compiler and that most people won't 
> need those fancy tricks
> as gambas is basic and has advanced enough compiling mechanisms, I'm 
> convinced, but: a simple line
> on the top of a file to enable the cpp for the rest of people that may 
> utilise it wouldn't hurt?:
> ' Gambas class file
> ' :use cpp
> Please, explain your worries.
> 
> A more intrusive "feature" would be the ability of using that c-/c++-style 
> comments /**/, // within
> gambas when cpp'ed...
> 
> I have no reason to write this post (never needed to used conditional 
> compilation or something from
> within gambas) except to save you work.
> 
> Reagards,
> Tobi

Oh, you should know:

$ cat .src/myfunc.function
#ifdef PREPROC
Private Sub myfunc()
  Print "preprocessing"
End
#endif

And forget that

$ cp .src/MMain.module.old .src/MMain.module

above, it is useless.

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Gambas-user mailing list
Gambas-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gambas-user

Reply via email to