Hi,

when I posted a patch around Christmas which showed how genparse 
could generate the parser code for the ping command of the inetutils
Alfred Szmidt replied that in that example there are 2 loops (see
http://lists.gnu.org/archive/html/bug-inetutils/2007-12/msg00007.html):

1. The switch statement which sets the arg_t struct with the 
   results of getopt_long in ping-clp.c

2. A list of if-clauses which sets the already existing variables
   in ping.c from the arg_t struct

I now released a new version of genparse (0.7.6) which allows to put
the generated parser code inline of existing code, replacing almost
exactly the existing C code. This version has 2 extensions:

1. A __CODE__(statements) directive which allows to let the user define 
   the code which is executed in the switch statement which evaluates
   the results of getopt_long.

2. A global directive #no_struct. If specified in the genparse file 
   then no arg_t struct struct is generated. 

I uploaded a patch which shows how this works for the ls command of 
the coreutils. It transforms ls.c.in which has the genparse file inline
into ls.c which has almost exactly the same command line parser code 
inline as the present version of ls.c. The patch is targeted to today's 
git version of the coreutils. I verified that it passes make distcheck.

Please use the following links:

patch:   
http://genparse.sourceforge.net/coreutils/genparse-ls-inline-git-01-19-2008.patch
ls.c.in: http://genparse.sourceforge.net/coreutils/ls.c.in (included in the 
patch)
ls.c     http://genparse.sourceforge.net/coreutils/ls.c    (included in the 
patch)

How do you think about it?

Michael


_______________________________________________
Bug-coreutils mailing list
Bug-coreutils@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-coreutils

Reply via email to