|
|
@@ -0,0 +1,75 @@
|
|
|
+From rse@en1.engelschall.com Wed Jul 3 10:25:57 2002
|
|
|
+Date: Wed, 3 Jul 2002 10:25:57 +0200
|
|
|
+From: "Ralf S. Engelschall" <rse@en1.engelschall.com>
|
|
|
+To: help-flex@gnu.org
|
|
|
+Cc: john43@astro.temple.edu
|
|
|
+Subject: [PATCH] YYLTYPE, yy[gs]et_lloc, -P
|
|
|
+Message-ID: <20020703082557.GA68291@engelschall.com>
|
|
|
+Reply-To: rse@engelschall.com
|
|
|
+References: <20011106161709.A67206@engelschall.com>
|
|
|
+Mime-Version: 1.0
|
|
|
+Content-Type: text/plain; charset=us-ascii
|
|
|
+Content-Disposition: inline
|
|
|
+In-Reply-To: <20011106161709.A67206@engelschall.com>
|
|
|
+User-Agent: Mutt/1.4i
|
|
|
+Organization: Engelschall, Germany.
|
|
|
+X-Web-Homepage: http://www.engelschall.com/
|
|
|
+X-PGP-Public-Key: http://www.engelschall.com/ho/rse/pgprse.asc
|
|
|
+X-PGP-Fingerprint: 00 C9 21 8E D1 AB 70 37 DD 67 A2 3A 0A 6F 8D A5
|
|
|
+Status: RO
|
|
|
+Content-Length: 2064
|
|
|
+Lines: 52
|
|
|
+
|
|
|
+[the following was already reported in November 2001 for Flex
|
|
|
+2.5.6-developer-2001-11-01, but the bug is still present in Flex 2.5.8]
|
|
|
+
|
|
|
+Just a little thing I've recognized while hacking on a scanner which is
|
|
|
+generated by flex-2.5.8: Although I used "flex ... -Pl2_spec_ ..." the
|
|
|
+generated object file still has two "yy"-prefixed symbols:
|
|
|
+
|
|
|
+| :> nm -g l2_spec_scan.o | grep yy
|
|
|
+| 00000c04 T yyget_lloc
|
|
|
+| 00000c10 T yyset_lloc
|
|
|
+
|
|
|
+This is because at the top of the generated l2_spec_scan.c there is:
|
|
|
+
|
|
|
+| #ifdef YYLTYPE
|
|
|
+| #define yyget_lloc l2_spec_get_lloc
|
|
|
+| #define yyset_lloc l2_spec_set_lloc
|
|
|
+| #endif
|
|
|
+
|
|
|
+Unfortunately the YYLTYPE will _never_ be defined at this point, because
|
|
|
+it is defined by the parser and the parsers' include file can be included
|
|
|
+only in %{ ..%} sections, which in turn are inserted in the generated
|
|
|
+code always _after_ the above sequence.
|
|
|
+
|
|
|
+It certainly is not correct to change the position of inserting
|
|
|
+the %{...%} sections, of course. But we can just leave out the
|
|
|
+#ifdef..#endif, because even if YYLTYPE is not used (no location
|
|
|
+tracking is used) or not defined, the extra namespace-preserving
|
|
|
+definitions of yy[gs]et_lloc will not hurt.
|
|
|
+
|
|
|
+So, I recommend to apply the following patch to Flex 2.5.8 and hope it
|
|
|
+is finally considered for inclusion into forthcoming versions:
|
|
|
+
|
|
|
+=================================================================
|
|
|
+--- main.c.orig Wed Jun 19 15:26:44 2002
|
|
|
++++ main.c Wed Jul 3 10:12:43 2002
|
|
|
+@@ -384,10 +384,8 @@
|
|
|
+ outn( "#ifdef YY_REENTRANT_BISON_PURE" );
|
|
|
+ GEN_PREFIX( "get_lval" );
|
|
|
+ GEN_PREFIX( "set_lval" );
|
|
|
+- outn( "#ifdef YYLTYPE" );
|
|
|
+ GEN_PREFIX( "get_lloc" );
|
|
|
+ GEN_PREFIX( "set_lloc" );
|
|
|
+- outn( "#endif" );
|
|
|
+ outn( "#endif" );
|
|
|
+
|
|
|
+ if ( do_yylineno && reentrant)
|
|
|
+=================================================================
|
|
|
+
|
|
|
+Yours,
|
|
|
+ Ralf S. Engelschall
|
|
|
+ rse@engelschall.com
|
|
|
+ www.engelschall.com
|
|
|
+
|