<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:old.nabble.com,2006:forum-13492</id>
	<title>Nabble - java.net - JavaCC</title>
	<updated>2009-12-17T08:07:44Z</updated>
	<link rel="self" type="application/atom+xml" href="http://old.nabble.com/java.net---JavaCC-f13492.xml" />
	<link rel="alternate" type="text/html" href="http://old.nabble.com/java.net---JavaCC-f13492.html" />
	<subtitle type="html">JavaCC is a parser/scanner generator for java java.net - JavaCC home is &lt;a href=&quot;http://javacc.dev.java.net/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;here&lt;/a&gt;.</subtitle>
	
<entry>
	<id>tag:old.nabble.com,2006:post-26830429</id>
	<title>Re: Example for .properties parser</title>
	<published>2009-12-17T08:07:44Z</published>
	<updated>2009-12-17T08:07:44Z</updated>
	<author>
		<name>agharta</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;The problem is that the extra iso8859-1 chars are written in unicode format (see java.util.properties load &amp; store).
&lt;br&gt;Because the file that i will edit is similar &amp;quot;but not identical&amp;quot; to .properties files, i need to save the file (from ide) without converting extra utf chars.
&lt;br&gt;From that, the needs to do not edit the file in .properties format.
&lt;br&gt;&lt;br&gt;Thanks a lot!
&lt;br&gt;&lt;br&gt;Agharta
&lt;br&gt;&lt;br&gt;&lt;blockquote class=&quot;quote light-black dark-border-color&quot;&gt;&lt;div class=&quot;quote light-border-color&quot;&gt;
&lt;div class=&quot;quote-author&quot; style=&quot;font-weight: bold;&quot;&gt;darose wrote:&lt;/div&gt;
&lt;div class=&quot;quote-message shrinkable-quote&quot;&gt;agharta wrote:
&lt;br&gt;&amp;gt; Hi all, 
&lt;br&gt;&amp;gt; I'm new in javacc, but i don't have found any example about a simple
&lt;br&gt;&amp;gt; .properties parser.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; The parser should be simple: Like .properties syntax, it should catch
&lt;br&gt;&amp;gt; &amp;quot;key=value&amp;quot; expression (respectively: key, equal sign and value). See
&lt;br&gt;&amp;gt; Netbeans or eclipse .properties editor for example.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Any idea? I've tired to implement it by myself but wihout success....sorry.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Thanks in advice,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Agharta
&lt;br&gt;&lt;br&gt;Just curious: &amp;nbsp;any reason why you can just use 
&lt;br&gt;java.util.Properties.load() for this?
&lt;br&gt;&lt;br&gt;DR
&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: users-unsubscribe@javacc.dev.java.net
&lt;br&gt;For additional commands, e-mail: users-help@javacc.dev.java.net
&lt;br&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Example-for-.properties-parser-tp26824955p26830429.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26830338</id>
	<title>Re: Example for .properties parser</title>
	<published>2009-12-17T08:03:27Z</published>
	<updated>2009-12-17T08:03:27Z</updated>
	<author>
		<name>agharta</name>
	</author>
	<content type="html">Nice!
&lt;br&gt;Thanks a lot!!!!!!!!!!
&lt;br&gt;&lt;br&gt;Regards, 
&lt;br&gt;&lt;br&gt;agharta
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;blockquote class=&quot;quote light-black dark-border-color&quot;&gt;&lt;div class=&quot;quote light-border-color&quot;&gt;
&lt;div class=&quot;quote-author&quot; style=&quot;font-weight: bold;&quot;&gt;Dale Anson wrote:&lt;/div&gt;
&lt;div class=&quot;quote-message shrinkable-quote&quot;&gt;&lt;a href=&quot;http://jedit.svn.sourceforge.net/viewvc/jedit/plugins/JavaSideKick/trunk/src/sidekick/property/parser/property/PropertyParser.jj&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://jedit.svn.sourceforge.net/viewvc/jedit/plugins/JavaSideKick/trunk/src/sidekick/property/parser/property/PropertyParser.jj&lt;/a&gt;&lt;br&gt;&lt;br&gt;On Thu, Dec 17, 2009 at 1:52 AM, agharta &amp;lt;agharta@interfree.it&amp;gt; wrote:
&lt;br&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Hi all,
&lt;br&gt;&amp;gt; I'm new in javacc, but i don't have found any example about a simple
&lt;br&gt;&amp;gt; .properties parser.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The parser should be simple: Like .properties syntax, it should catch
&lt;br&gt;&amp;gt; &amp;quot;key=value&amp;quot; expression (respectively: key, equal sign and value). See
&lt;br&gt;&amp;gt; Netbeans or eclipse .properties editor for example.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Any idea? I've tired to implement it by myself but wihout success....sorry.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks in advice,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Agharta
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt; View this message in context:
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/Example-for-.properties-parser-tp26824955p26824955.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/Example-for-.properties-parser-tp26824955p26824955.html&lt;/a&gt;&lt;br&gt;&amp;gt; Sent from the java.net - javacc users mailing list archive at Nabble.com.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ---------------------------------------------------------------------
&lt;br&gt;&amp;gt; To unsubscribe, e-mail: users-unsubscribe@javacc.dev.java.net
&lt;br&gt;&amp;gt; For additional commands, e-mail: users-help@javacc.dev.java.net
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Example-for-.properties-parser-tp26824955p26830338.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26829908</id>
	<title>Re: Example for .properties parser</title>
	<published>2009-12-17T07:38:00Z</published>
	<updated>2009-12-17T07:38:00Z</updated>
	<author>
		<name>Dale Anson</name>
	</author>
	<content type="html">&lt;a href=&quot;http://jedit.svn.sourceforge.net/viewvc/jedit/plugins/JavaSideKick/trunk/src/sidekick/property/parser/property/PropertyParser.jj&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://jedit.svn.sourceforge.net/viewvc/jedit/plugins/JavaSideKick/trunk/src/sidekick/property/parser/property/PropertyParser.jj&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Thu, Dec 17, 2009 at 1:52 AM, agharta &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26829908&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;agharta@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
&lt;br&gt;
Hi all,&lt;br&gt;
I&amp;#39;m new in javacc, but i don&amp;#39;t have found any example about a simple&lt;br&gt;
.properties parser.&lt;br&gt;
&lt;br&gt;
The parser should be simple: Like .properties syntax, it should catch&lt;br&gt;
&amp;quot;key=value&amp;quot; expression (respectively: key, equal sign and value). See&lt;br&gt;
Netbeans or eclipse .properties editor for example.&lt;br&gt;
&lt;br&gt;
Any idea? I&amp;#39;ve tired to implement it by myself but wihout success....sorry.&lt;br&gt;
&lt;br&gt;
Thanks in advice,&lt;br&gt;
&lt;br&gt;
Agharta&lt;br&gt;
&lt;font color=&quot;#888888&quot;&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
--&lt;br&gt;
View this message in context: &lt;a href=&quot;http://old.nabble.com/Example-for-.properties-parser-tp26824955p26824955.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/Example-for-.properties-parser-tp26824955p26824955.html&lt;/a&gt;&lt;br&gt;
Sent from the &lt;a href=&quot;http://java.net&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;java.net&lt;/a&gt; - javacc users mailing list archive at Nabble.com.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
---------------------------------------------------------------------&lt;br&gt;
To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26829908&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;&lt;br&gt;
For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26829908&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;/font&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;div style=&quot;visibility: hidden;&quot; title=&quot;1261064224151&quot; id=&quot;_booktextmark_tab_id_&quot;&gt;&lt;/div&gt;&lt;div style=&quot;visibility: hidden;&quot; title=&quot;1261064224153&quot; id=&quot;_booktextmark_tab_id_&quot;&gt;&lt;/div&gt;&lt;div style=&quot;visibility: hidden;&quot; title=&quot;1261064224155&quot; id=&quot;_booktextmark_tab_id_&quot;&gt;
&lt;/div&gt;&lt;div style=&quot;visibility: hidden;&quot; title=&quot;1261064224157&quot; id=&quot;_booktextmark_tab_id_&quot;&gt;&lt;/div&gt;&lt;div style=&quot;visibility: hidden;&quot; title=&quot;1261064224393&quot; id=&quot;_booktextmark_tab_id_&quot;&gt;&lt;/div&gt;&lt;div style=&quot;visibility: hidden;&quot; title=&quot;1261064261030&quot; id=&quot;_booktextmark_tab_id_&quot;&gt;
&lt;/div&gt;
&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Example-for-.properties-parser-tp26824955p26829908.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26829398</id>
	<title>Re: Example for .properties parser</title>
	<published>2009-12-17T07:07:59Z</published>
	<updated>2009-12-17T07:07:59Z</updated>
	<author>
		<name>darose</name>
	</author>
	<content type="html">agharta wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi all, 
&lt;br&gt;&amp;gt; I'm new in javacc, but i don't have found any example about a simple
&lt;br&gt;&amp;gt; .properties parser.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; The parser should be simple: Like .properties syntax, it should catch
&lt;br&gt;&amp;gt; &amp;quot;key=value&amp;quot; expression (respectively: key, equal sign and value). See
&lt;br&gt;&amp;gt; Netbeans or eclipse .properties editor for example.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Any idea? I've tired to implement it by myself but wihout success....sorry.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Thanks in advice,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Agharta
&lt;/div&gt;&lt;br&gt;Just curious: &amp;nbsp;any reason why you can just use 
&lt;br&gt;java.util.Properties.load() for this?
&lt;br&gt;&lt;br&gt;DR
&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26829398&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26829398&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Example-for-.properties-parser-tp26824955p26829398.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26824955</id>
	<title>Example for .properties parser</title>
	<published>2009-12-17T00:52:19Z</published>
	<updated>2009-12-17T00:52:19Z</updated>
	<author>
		<name>agharta</name>
	</author>
	<content type="html">Hi all, 
&lt;br&gt;I'm new in javacc, but i don't have found any example about a simple .properties parser.
&lt;br&gt;&lt;br&gt;The parser should be simple: Like .properties syntax, it should catch &amp;quot;key=value&amp;quot; expression (respectively: key, equal sign and value). See Netbeans or eclipse .properties editor for example.
&lt;br&gt;&lt;br&gt;Any idea? I've tired to implement it by myself but wihout success....sorry.
&lt;br&gt;&lt;br&gt;Thanks in advice,
&lt;br&gt;&lt;br&gt;Agharta
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Example-for-.properties-parser-tp26824955p26824955.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26765835</id>
	<title>Re: Using a dictionary for tokens</title>
	<published>2009-12-13T04:52:47Z</published>
	<updated>2009-12-13T04:52:47Z</updated>
	<author>
		<name>Xue-Feng Yang</name>
	</author>
	<content type="html">Thanks, Marc. Your suggestion works. However, in my system, there are many internationalized grammars so that too many Java files will be generated from different &amp;nbsp;templates and languages. I still think to extend JavaCC to fit this may be a better solution.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;----- Original Message ----
&lt;br&gt;From: Mazas Marc &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26765835&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;mmazas@...&lt;/a&gt;&amp;gt;
&lt;br&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26765835&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users@...&lt;/a&gt;
&lt;br&gt;Sent: Sun, December 13, 2009 5:14:44 PM
&lt;br&gt;Subject: RE: [JavaCC] Using a dictionary for tokens
&lt;br&gt;&lt;br&gt;Hi
&lt;br&gt;For this I would think about using a template engine that would generate one grammar for each language from the grammar skeleton and the property files.
&lt;br&gt;Marc
&lt;br&gt;&lt;br&gt;-----Message d'origine-----
&lt;br&gt;De : Xue-Feng Yang [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26765835&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;just4look@...&lt;/a&gt;] 
&lt;br&gt;Envoyé : dimanche 13 décembre 2009 07:35
&lt;br&gt;À : &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26765835&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users@...&lt;/a&gt;
&lt;br&gt;Objet : Re: [JavaCC] Using a dictionary for tokens
&lt;br&gt;&lt;br&gt;Hi,
&lt;br&gt;&lt;br&gt;Is it easy to extend JavaCC so that all tokens could be imported with Properties? &amp;nbsp;I need to define internationalized grammars?
&lt;br&gt;&lt;br&gt;&lt;br&gt;Xue-Feng
&lt;br&gt;&lt;br&gt;&lt;br&gt;----- Original Message ----
&lt;br&gt;From: &amp;quot;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26765835&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;sreeni@...&lt;/a&gt;&amp;quot; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26765835&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;sreeni@...&lt;/a&gt;&amp;gt;
&lt;br&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26765835&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users@...&lt;/a&gt;
&lt;br&gt;Cc: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26765835&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users@...&lt;/a&gt;
&lt;br&gt;Sent: Sun, December 13, 2009 1:08:24 AM
&lt;br&gt;Subject: Re: [JavaCC] Using a dictionary for tokens
&lt;br&gt;&lt;br&gt;&lt;br&gt;No, you cannot do that. Anyway, why do you need keywords? This is not a formal language. So I suggest you use USER_TOKEN_MANAGER and generate your tokens there. For example, you might want tokens like NOUN, PRONOUN, VERB etc. that you can do more efficiently looking up a dictionary. And then you can probably use the BNF part to parse them.
&lt;br&gt;&lt;br&gt;BTW, a technical issue with your specific example - never use a | or string literals. That generates horrible lexers. Use separate tokens for each of the strings e.g., CATS: &amp;quot;cats&amp;quot; | DOGS: &amp;quot;dogs&amp;quot; etc. and have a production for WORD that is just a choice between these tokens.
&lt;br&gt;&lt;br&gt;Hope that helps.
&lt;br&gt;&lt;br&gt;Sreeni.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hello,
&lt;br&gt;&amp;gt; I am using javaCC for morphological parsing of Marathi language.
&lt;br&gt;&amp;gt; Some of the regular expressions are of the form:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; WORD: &amp;quot;dogs&amp;quot; | &amp;quot;cats&amp;quot; | &amp;quot;mice&amp;quot; | ...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; If I hard-code these words, my parser works fine.
&lt;br&gt;&amp;gt; But, this is not what I desire,
&lt;br&gt;&amp;gt; There is one module which will generate canonical forms given the 
&lt;br&gt;&amp;gt; root, and these canonical forms will be there within the above 
&lt;br&gt;&amp;gt; specified regular expression.
&lt;br&gt;&amp;gt; E.g. Root Canonical Form
&lt;br&gt;&amp;gt; भक्त भक्ता
&lt;br&gt;&amp;gt; माळा माळ्या
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Canonical forms are genrated run-time. And then my regular expression 
&lt;br&gt;&amp;gt; should look like:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; WORD: &amp;lt;&amp;quot;भक्त&amp;quot; | &amp;quot; भक्ता&amp;quot; | &amp;quot;माळा&amp;quot; | &amp;quot;माळ्या&amp;quot;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Is there anyway to include variables within the regular expression in 
&lt;br&gt;&amp;gt; javacc?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -Mugdha
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ---------------------------------------------------------------------
&lt;br&gt;&amp;gt; To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26765835&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;&amp;gt; For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26765835&amp;i=9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26765835&amp;i=10&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26765835&amp;i=11&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; __________________________________________________________________
&lt;br&gt;Yahoo! Canada Toolbar: Search from anywhere on the web, and bookmark your favourite sites. Download it now &lt;a href=&quot;http://ca.toolbar.yahoo.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://ca.toolbar.yahoo.com&lt;/a&gt;. 
&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26765835&amp;i=12&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26765835&amp;i=13&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; __________________________________________________________________
&lt;br&gt;Yahoo! Canada Toolbar: Search from anywhere on the web, and bookmark your favourite sites. Download it now
&lt;br&gt;&lt;a href=&quot;http://ca.toolbar.yahoo.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://ca.toolbar.yahoo.com&lt;/a&gt;.
&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26765835&amp;i=14&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26765835&amp;i=15&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Using-a-dictionary-for-tokens-tp26757581p26765835.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26764543</id>
	<title>RE: Using a dictionary for tokens</title>
	<published>2009-12-13T01:14:44Z</published>
	<updated>2009-12-13T01:14:44Z</updated>
	<author>
		<name>Mazas Marc</name>
	</author>
	<content type="html">Hi
&lt;br&gt;For this I would think about using a template engine that would generate one grammar for each language from the grammar skeleton and the property files.
&lt;br&gt;Marc
&lt;br&gt;&lt;br&gt;-----Message d'origine-----
&lt;br&gt;De : Xue-Feng Yang [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26764543&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;just4look@...&lt;/a&gt;] 
&lt;br&gt;Envoyé : dimanche 13 décembre 2009 07:35
&lt;br&gt;À : &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26764543&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users@...&lt;/a&gt;
&lt;br&gt;Objet : Re: [JavaCC] Using a dictionary for tokens
&lt;br&gt;&lt;br&gt;Hi,
&lt;br&gt;&lt;br&gt;Is it easy to extend JavaCC so that all tokens could be imported with Properties? &amp;nbsp;I need to define internationalized grammars?
&lt;br&gt;&lt;br&gt;&lt;br&gt;Xue-Feng
&lt;br&gt;&lt;br&gt;&lt;br&gt;----- Original Message ----
&lt;br&gt;From: &amp;quot;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26764543&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;sreeni@...&lt;/a&gt;&amp;quot; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26764543&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;sreeni@...&lt;/a&gt;&amp;gt;
&lt;br&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26764543&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users@...&lt;/a&gt;
&lt;br&gt;Cc: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26764543&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users@...&lt;/a&gt;
&lt;br&gt;Sent: Sun, December 13, 2009 1:08:24 AM
&lt;br&gt;Subject: Re: [JavaCC] Using a dictionary for tokens
&lt;br&gt;&lt;br&gt;&lt;br&gt;No, you cannot do that. Anyway, why do you need keywords? This is not a formal language. So I suggest you use USER_TOKEN_MANAGER and generate your tokens there. For example, you might want tokens like NOUN, PRONOUN, VERB etc. that you can do more efficiently looking up a dictionary. And then you can probably use the BNF part to parse them.
&lt;br&gt;&lt;br&gt;BTW, a technical issue with your specific example - never use a | or string literals. That generates horrible lexers. Use separate tokens for each of the strings e.g., CATS: &amp;quot;cats&amp;quot; | DOGS: &amp;quot;dogs&amp;quot; etc. and have a production for WORD that is just a choice between these tokens.
&lt;br&gt;&lt;br&gt;Hope that helps.
&lt;br&gt;&lt;br&gt;Sreeni.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hello,
&lt;br&gt;&amp;gt; I am using javaCC for morphological parsing of Marathi language.
&lt;br&gt;&amp;gt; Some of the regular expressions are of the form:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; WORD: &amp;quot;dogs&amp;quot; | &amp;quot;cats&amp;quot; | &amp;quot;mice&amp;quot; | ...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; If I hard-code these words, my parser works fine.
&lt;br&gt;&amp;gt; But, this is not what I desire,
&lt;br&gt;&amp;gt; There is one module which will generate canonical forms given the 
&lt;br&gt;&amp;gt; root, and these canonical forms will be there within the above 
&lt;br&gt;&amp;gt; specified regular expression.
&lt;br&gt;&amp;gt; E.g. Root Canonical Form
&lt;br&gt;&amp;gt; भक्त भक्ता
&lt;br&gt;&amp;gt; माळा माळ्या
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Canonical forms are genrated run-time. And then my regular expression 
&lt;br&gt;&amp;gt; should look like:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; WORD: &amp;lt;&amp;quot;भक्त&amp;quot; | &amp;quot; भक्ता&amp;quot; | &amp;quot;माळा&amp;quot; | &amp;quot;माळ्या&amp;quot;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Is there anyway to include variables within the regular expression in 
&lt;br&gt;&amp;gt; javacc?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -Mugdha
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ---------------------------------------------------------------------
&lt;br&gt;&amp;gt; To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26764543&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;&amp;gt; For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26764543&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26764543&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26764543&amp;i=9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; __________________________________________________________________
&lt;br&gt;Yahoo! Canada Toolbar: Search from anywhere on the web, and bookmark your favourite sites. Download it now &lt;a href=&quot;http://ca.toolbar.yahoo.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://ca.toolbar.yahoo.com&lt;/a&gt;.
&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26764543&amp;i=10&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26764543&amp;i=11&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Using-a-dictionary-for-tokens-tp26757581p26764543.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26763999</id>
	<title>Re: Using a dictionary for tokens</title>
	<published>2009-12-12T22:34:46Z</published>
	<updated>2009-12-12T22:34:46Z</updated>
	<author>
		<name>Xue-Feng Yang</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;Is it easy to extend JavaCC so that all tokens could be imported with Properties? &amp;nbsp;I need to define internationalized grammars?
&lt;br&gt;&lt;br&gt;&lt;br&gt;Xue-Feng
&lt;br&gt;&lt;br&gt;&lt;br&gt;----- Original Message ----
&lt;br&gt;From: &amp;quot;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26763999&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;sreeni@...&lt;/a&gt;&amp;quot; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26763999&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;sreeni@...&lt;/a&gt;&amp;gt;
&lt;br&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26763999&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users@...&lt;/a&gt;
&lt;br&gt;Cc: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26763999&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users@...&lt;/a&gt;
&lt;br&gt;Sent: Sun, December 13, 2009 1:08:24 AM
&lt;br&gt;Subject: Re: [JavaCC] Using a dictionary for tokens
&lt;br&gt;&lt;br&gt;&lt;br&gt;No, you cannot do that. Anyway, why do you need keywords? This is not a
&lt;br&gt;formal language. So I suggest you use USER_TOKEN_MANAGER and generate your
&lt;br&gt;tokens there. For example, you might want tokens like NOUN, PRONOUN, VERB
&lt;br&gt;etc. that you can do more efficiently looking up a dictionary. And then
&lt;br&gt;you can probably use the BNF part to parse them.
&lt;br&gt;&lt;br&gt;BTW, a technical issue with your specific example - never use a | or
&lt;br&gt;string literals. That generates horrible lexers. Use separate tokens for
&lt;br&gt;each of the strings e.g., CATS: &amp;quot;cats&amp;quot; | DOGS: &amp;quot;dogs&amp;quot; etc. and have a
&lt;br&gt;production for WORD that is just a choice between these tokens.
&lt;br&gt;&lt;br&gt;Hope that helps.
&lt;br&gt;&lt;br&gt;Sreeni.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hello,
&lt;br&gt;&amp;gt; I am using javaCC for morphological parsing of Marathi language.
&lt;br&gt;&amp;gt; Some of the regular expressions are of the form:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; WORD: &amp;quot;dogs&amp;quot; | &amp;quot;cats&amp;quot; | &amp;quot;mice&amp;quot; | ...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; If I hard-code these words, my parser works fine.
&lt;br&gt;&amp;gt; But, this is not what I desire,
&lt;br&gt;&amp;gt; There is one module which will generate canonical forms given the root,
&lt;br&gt;&amp;gt; and these canonical forms will be there within the above specified
&lt;br&gt;&amp;gt; regular expression.
&lt;br&gt;&amp;gt; E.g. Root Canonical Form
&lt;br&gt;&amp;gt; भक्त भक्ता
&lt;br&gt;&amp;gt; माळा माळ्या
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Canonical forms are genrated run-time. And then my regular expression
&lt;br&gt;&amp;gt; should look like:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; WORD: &amp;lt;&amp;quot;भक्त&amp;quot; | &amp;quot; भक्ता&amp;quot; | &amp;quot;माळा&amp;quot; | &amp;quot;माळ्या&amp;quot;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Is there anyway to include variables within the regular expression in
&lt;br&gt;&amp;gt; javacc?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -Mugdha
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ---------------------------------------------------------------------
&lt;br&gt;&amp;gt; To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26763999&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;&amp;gt; For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26763999&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26763999&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26763999&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; __________________________________________________________________
&lt;br&gt;Yahoo! Canada Toolbar: Search from anywhere on the web, and bookmark your favourite sites. Download it now
&lt;br&gt;&lt;a href=&quot;http://ca.toolbar.yahoo.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://ca.toolbar.yahoo.com&lt;/a&gt;.
&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26763999&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26763999&amp;i=9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Using-a-dictionary-for-tokens-tp26757581p26763999.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26759356</id>
	<title>Re: Using a dictionary for tokens</title>
	<published>2009-12-12T09:08:24Z</published>
	<updated>2009-12-12T09:08:24Z</updated>
	<author>
		<name>Sreenivasa Viswanadha</name>
	</author>
	<content type="html">&lt;br&gt;No, you cannot do that. Anyway, why do you need keywords? This is not a
&lt;br&gt;formal language. So I suggest you use USER_TOKEN_MANAGER and generate your
&lt;br&gt;tokens there. For example, you might want tokens like NOUN, PRONOUN, VERB
&lt;br&gt;etc. that you can do more efficiently looking up a dictionary. And then
&lt;br&gt;you can probably use the BNF part to parse them.
&lt;br&gt;&lt;br&gt;BTW, a technical issue with your specific example - never use a | or
&lt;br&gt;string literals. That generates horrible lexers. Use separate tokens for
&lt;br&gt;each of the strings e.g., CATS: &amp;quot;cats&amp;quot; | DOGS: &amp;quot;dogs&amp;quot; etc. and have a
&lt;br&gt;production for WORD that is just a choice between these tokens.
&lt;br&gt;&lt;br&gt;Hope that helps.
&lt;br&gt;&lt;br&gt;Sreeni.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hello,
&lt;br&gt;&amp;gt; I am using javaCC for morphological parsing of Marathi language.
&lt;br&gt;&amp;gt; Some of the regular expressions are of the form:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; WORD: &amp;quot;dogs&amp;quot; | &amp;quot;cats&amp;quot; | &amp;quot;mice&amp;quot; | ...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; If I hard-code these words, my parser works fine.
&lt;br&gt;&amp;gt; But, this is not what I desire,
&lt;br&gt;&amp;gt; There is one module which will generate canonical forms given the root,
&lt;br&gt;&amp;gt; and these canonical forms will be there within the above specified
&lt;br&gt;&amp;gt; regular expression.
&lt;br&gt;&amp;gt; E.g. Root Canonical Form
&lt;br&gt;&amp;gt; भक्त भक्ता
&lt;br&gt;&amp;gt; माळा माळ्या
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Canonical forms are genrated run-time. And then my regular expression
&lt;br&gt;&amp;gt; should look like:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; WORD: &amp;lt;&amp;quot;भक्त&amp;quot; | &amp;quot; भक्ता&amp;quot; | &amp;quot;माळा&amp;quot; | &amp;quot;माळ्या&amp;quot;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Is there anyway to include variables within the regular expression in
&lt;br&gt;&amp;gt; javacc?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -Mugdha
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ---------------------------------------------------------------------
&lt;br&gt;&amp;gt; To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26759356&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;&amp;gt; For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26759356&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26759356&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26759356&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Using-a-dictionary-for-tokens-tp26757581p26759356.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26757581</id>
	<title>Using a dictionary for tokens</title>
	<published>2009-12-11T22:34:15Z</published>
	<updated>2009-12-11T22:34:15Z</updated>
	<author>
		<name>Mugdha BApat</name>
	</author>
	<content type="html">Hello,
&lt;br&gt;I am using javaCC for morphological parsing of Marathi language.
&lt;br&gt;Some of the regular expressions are of the form:
&lt;br&gt;&lt;br&gt;WORD: &amp;quot;dogs&amp;quot; | &amp;quot;cats&amp;quot; | &amp;quot;mice&amp;quot; | ...
&lt;br&gt;&lt;br&gt;If I hard-code these words, my parser works fine.
&lt;br&gt;But, this is not what I desire,
&lt;br&gt;There is one module which will generate canonical forms given the root, 
&lt;br&gt;and these canonical forms will be there within the above specified 
&lt;br&gt;regular expression.
&lt;br&gt;E.g. Root Canonical Form
&lt;br&gt;भक्त भक्ता
&lt;br&gt;माळा माळ्या
&lt;br&gt;&lt;br&gt;Canonical forms are genrated run-time. And then my regular expression 
&lt;br&gt;should look like:
&lt;br&gt;&lt;br&gt;WORD: &amp;lt;&amp;quot;भक्त&amp;quot; | &amp;quot; भक्ता&amp;quot; | &amp;quot;माळा&amp;quot; | &amp;quot;माळ्या&amp;quot;&amp;gt;
&lt;br&gt;&lt;br&gt;Is there anyway to include variables within the regular expression in 
&lt;br&gt;javacc?
&lt;br&gt;&lt;br&gt;-Mugdha
&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26757581&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26757581&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Using-a-dictionary-for-tokens-tp26757581p26757581.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26724872</id>
	<title>RE: Left Recursion Newbie Problem</title>
	<published>2009-12-10T02:15:29Z</published>
	<updated>2009-12-10T02:15:29Z</updated>
	<author>
		<name>Mazas Marc</name>
	</author>
	<content type="html">You can look at the Java or the JavaCC grammars themselves to see how these kind of constructs are handled :
&lt;br&gt;Expression / ConditionalExpression / ConditionalOrExpression / ConditionalAndExpression / InclusiveOrExpression / ... 
&lt;br&gt;&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;-----Message d'origine-----
&lt;br&gt;De : happYboi [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26724872&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ber_lim25@...&lt;/a&gt;] 
&lt;br&gt;Envoyé : jeudi 10 décembre 2009 11:03
&lt;br&gt;À : &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26724872&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users@...&lt;/a&gt;
&lt;br&gt;Objet : [JavaCC] Left Recursion Newbie Problem
&lt;br&gt;&lt;br&gt;&lt;br&gt;Hey guys,
&lt;br&gt;&lt;br&gt;I have a lack of practice with left-recursion so here's the problem:
&lt;br&gt;&lt;br&gt;Here is a snippet of my specification:
&lt;br&gt;&lt;br&gt;void Exp():
&lt;br&gt;{}
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Plus()
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;void Plus():
&lt;br&gt;{}
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Exp() &amp;quot;+&amp;quot; Exp()
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;Of course the above would result in a left recursion problem. Any ideas how should I solve such an issue?
&lt;br&gt;--
&lt;br&gt;View this message in context: &lt;a href=&quot;http://old.nabble.com/Left-Recursion-Newbie-Problem-tp26724684p26724684.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/Left-Recursion-Newbie-Problem-tp26724684p26724684.html&lt;/a&gt;&lt;br&gt;Sent from the java.net - javacc users mailing list archive at Nabble.com.
&lt;br&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26724872&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26724872&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26724872&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26724872&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Left-Recursion-Newbie-Problem-tp26724684p26724872.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26724684</id>
	<title>Left Recursion Newbie Problem</title>
	<published>2009-12-10T02:02:44Z</published>
	<updated>2009-12-10T02:02:44Z</updated>
	<author>
		<name>happYboi</name>
	</author>
	<content type="html">Hey guys,
&lt;br&gt;&lt;br&gt;I have a lack of practice with left-recursion so here's the problem:
&lt;br&gt;&lt;br&gt;Here is a snippet of my specification:
&lt;br&gt;&lt;br&gt;void Exp():
&lt;br&gt;{}
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Plus()
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;void Plus():
&lt;br&gt;{}
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Exp() &amp;quot;+&amp;quot; Exp()
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;Of course the above would result in a left recursion problem. Any ideas how should I solve such an issue?&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Left-Recursion-Newbie-Problem-tp26724684p26724684.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26623604</id>
	<title>convert file into another</title>
	<published>2009-12-03T02:06:36Z</published>
	<updated>2009-12-03T02:06:36Z</updated>
	<author>
		<name>Michel Erard-6</name>
	</author>
	<content type="html">&lt;html xmlns:v=&quot;urn:schemas-microsoft-com:vml&quot; xmlns:o=&quot;urn:schemas-microsoft-com:office:office&quot; xmlns:w=&quot;urn:schemas-microsoft-com:office:word&quot; xmlns:m=&quot;http://schemas.microsoft.com/office/2004/12/omml&quot; xmlns=&quot;http://www.w3.org/TR/REC-html40&quot;&gt;

&lt;head&gt;
&lt;META HTTP-EQUIV=&quot;Content-Type&quot; CONTENT=&quot;text/html; charset=us-ascii&quot;&gt;
&lt;meta name=Generator content=&quot;Microsoft Word 12 (filtered medium)&quot;&gt;

&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:shapedefaults v:ext=&quot;edit&quot; spidmax=&quot;1026&quot; /&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:shapelayout v:ext=&quot;edit&quot;&gt;
  &lt;o:idmap v:ext=&quot;edit&quot; data=&quot;1&quot; /&gt;
 &lt;/o:shapelayout&gt;&lt;/xml&gt;&lt;![endif]--&gt;
&lt;/head&gt;

&lt;body lang=DE-CH link=blue vlink=purple&gt;

&lt;div class=Section1&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;Hello,
&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;thanks
for the code snipplet. This does more or less exactly what I was looking for.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;In
real world my records are a bit more complex. I&amp;#8217;ve nearly 10 record types
with up to 30 fields each&amp;nbsp;&lt;/span&gt;&lt;span lang=FR-CH style='font-size:10.0pt;
font-family:Wingdings'&gt;L&lt;/span&gt;&lt;span lang=FR-CH style='font-size:10.0pt;
font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;To
define them field by field as Token is not possible when they cannot be
described distinct&amp;nbsp;? Because I know the exact order they arrive in a
record.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;This
would make the jj file a bit more readable.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;Thanks,
&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;Mike&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;PS&amp;nbsp;:
Sorry, if it arrives two times. &lt;/span&gt;&lt;span style='font-size:10.0pt;
font-family:&quot;Courier New&quot;'&gt;I&amp;#8217;m not sure if I had some problems the first
time.;-)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
Note that defining TEST_A and TEST_B as the same thing without using lexical&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
states will trip you up later.&amp;nbsp; When javacc sees a string of digits, it
will&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
assign it the tokenID of TEST_A every time as that is the first longest&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
match found.&amp;nbsp; Better to define general things like numbers using a single&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
NUMBER token to prevent such issues, and to make the productions later&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
easier to read anyway.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
On Thu, Dec 3, 2009 at 12:02 AM, Michel Erard &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26623604&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michel.erard@...&lt;/a&gt;&amp;gt;wrote:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
hello,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
I'm an absolutely beginner with javaCC, what you'll see in my question;-)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
But it would be nice, if someone could give me some hints.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
I've to read in a file with different types of records and these records&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
has to be converted and written out to a second file. Every field in another&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
way. The file can contain different types of records, so line for line&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
shoult be read in, decided which type of record it is and then be converted&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
in an specific way.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
Im testing with these dummy data in my file:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
123;TYPE_A;123&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
456;TYPE_B;456&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
the jj file, I've made linke this:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
options {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
STATIC = false;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
LOOKAHEAD = 1;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
IGNORE_CASE = true;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
PARSER_BEGIN(PersoConverter)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
import java.io.File;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
import java.io.FileInputStream;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
import java.io.FileOutputStream;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
import java.io.FileNotFoundException;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
public class PersoConverter {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;
private File outputFile;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;
public PersoConverter(File input, File output) throws&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
FileNotFoundException {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
this(new FileInputStream(input), null);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
this.outputFile = output;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;
}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
PARSER_END(PersoConverter)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
// lexical analyser&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
SKIP : {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;
&amp;quot;\t&amp;quot; | &amp;quot; &amp;quot; | &amp;quot;\n&amp;quot; | &amp;quot;\r&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
SPECIAL_TOKEN :&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;
&amp;lt; FILLER : &amp;quot;;&amp;quot; &amp;gt; |&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;
&amp;lt; #EOL : ( &amp;quot;\r\n&amp;quot; | &amp;quot;\n&amp;quot; | &amp;quot;\r&amp;quot; ) &amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
TOKEN :&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt; RECORD_A : &amp;lt; SEQUENCE_NUMBER &amp;gt; &amp;lt; FILLER &amp;gt; &amp;lt; TYPE_A &amp;gt;
&amp;lt; FILLER &amp;gt; &amp;lt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
TEST_A &amp;gt; &amp;lt; EOL &amp;gt; &amp;gt; |&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt; RECORD_B : &amp;lt; SEQUENCE_NUMBER &amp;gt; &amp;lt; FILLER &amp;gt; &amp;lt; TYPE_B &amp;gt;
&amp;lt; FILLER &amp;gt; &amp;lt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
TEST_B &amp;gt; &amp;lt; EOL &amp;gt; &amp;gt; |&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt; SEQUENCE_NUMBER : ([ &amp;quot;0&amp;quot;-&amp;quot;9&amp;quot; ])+ &amp;gt; |&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;lt; TYPE_A : &amp;quot;TYPE_A&amp;quot; &amp;gt; |&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt; TYPE_B : &amp;quot;TYPE_B&amp;quot; &amp;gt; |&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt; TEST_A : ([ &amp;quot;0&amp;quot;-&amp;quot;9&amp;quot; ])+ &amp;gt; |&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt; TEST_B : ([ &amp;quot;0&amp;quot;-&amp;quot;9&amp;quot; ])+ &amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
public void convert() :&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
{}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
( &amp;lt;RECORD_A&amp;gt; | &amp;lt; RECORD_B &amp;gt; )* &amp;lt;EOF&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
I'm happy, this does work. &lt;/span&gt;&lt;span lang=FR-CH style='font-size:10.0pt;
font-family:&quot;Courier New&quot;'&gt;The file can be parsed. But what now? What do I&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
have to do, to write each file of a Record into the output file calling a&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
conversion-method before?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
Can someone give me a hint?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
Thanks,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
Mike&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;-- &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;-
J.Chris Findlay&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;nbsp;
(c:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;/body&gt;

&lt;/html&gt;
&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/convert-file-into-another-tp26623604p26623604.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26626144</id>
	<title>convert file into another</title>
	<published>2009-12-02T23:42:54Z</published>
	<updated>2009-12-02T23:42:54Z</updated>
	<author>
		<name>Michel Erard-5</name>
	</author>
	<content type="html">&lt;html xmlns:v=&quot;urn:schemas-microsoft-com:vml&quot; xmlns:o=&quot;urn:schemas-microsoft-com:office:office&quot; xmlns:w=&quot;urn:schemas-microsoft-com:office:word&quot; xmlns:m=&quot;http://schemas.microsoft.com/office/2004/12/omml&quot; xmlns=&quot;http://www.w3.org/TR/REC-html40&quot;&gt;

&lt;head&gt;
&lt;meta http-equiv=Content-Type content=&quot;text/html; charset=us-ascii&quot;&gt;
&lt;meta name=Generator content=&quot;Microsoft Word 12 (filtered medium)&quot;&gt;

&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:shapedefaults v:ext=&quot;edit&quot; spidmax=&quot;1026&quot; /&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:shapelayout v:ext=&quot;edit&quot;&gt;
  &lt;o:idmap v:ext=&quot;edit&quot; data=&quot;1&quot; /&gt;
 &lt;/o:shapelayout&gt;&lt;/xml&gt;&lt;![endif]--&gt;
&lt;/head&gt;

&lt;body lang=DE-CH link=blue vlink=purple&gt;

&lt;div class=Section1&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;Hello,
&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;thanks
for the code snipplet. This does more or less exactly what I was looking for.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;In
real world my records are a bit more complex. I&amp;#8217;ve nearly 10 record types
with up to 30 fields each&amp;nbsp;&lt;/span&gt;&lt;span lang=FR-CH style='font-size:10.0pt;
font-family:Wingdings'&gt;L&lt;/span&gt;&lt;span lang=FR-CH style='font-size:10.0pt;
font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;To
define them field by field as Token is not possible when they cannot be
described distinct&amp;nbsp;? Because I know the exact order they arrive in a
record.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;This
would make the jj file a bit more readable.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;Thanks,
&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;Mike&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
Note that defining TEST_A and TEST_B as the same thing without using lexical&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
states will trip you up later.&amp;nbsp; When javacc sees a string of digits, it
will&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
assign it the tokenID of TEST_A every time as that is the first longest&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
match found.&amp;nbsp; Better to define general things like numbers using a single&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
NUMBER token to prevent such issues, and to make the productions later&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
easier to read anyway.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
On Thu, Dec 3, 2009 at 12:02 AM, Michel Erard
&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26626144&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michel.erard@...&lt;/a&gt;&amp;gt;wrote:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
hello,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
I'm an absolutely beginner with javaCC, what you'll see in my question;-)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
But it would be nice, if someone could give me some hints.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
I've to read in a file with different types of records and these records&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
has to be converted and written out to a second file. Every field in another&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
way. The file can contain different types of records, so line for line&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
shoult be read in, decided which type of record it is and then be converted&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
in an specific way.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
Im testing with these dummy data in my file:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
123;TYPE_A;123&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
456;TYPE_B;456&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
the jj file, I've made linke this:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
options {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
STATIC = false;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
LOOKAHEAD = 1;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
IGNORE_CASE = true;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
PARSER_BEGIN(PersoConverter)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
import java.io.File;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
import java.io.FileInputStream;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
import java.io.FileOutputStream;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
import java.io.FileNotFoundException;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
public class PersoConverter {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;
private File outputFile;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;
public PersoConverter(File input, File output) throws&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
FileNotFoundException {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
this(new FileInputStream(input), null);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
this.outputFile = output;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;
}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
PARSER_END(PersoConverter)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
// lexical analyser&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
SKIP : {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;
&amp;quot;\t&amp;quot; | &amp;quot; &amp;quot; | &amp;quot;\n&amp;quot; | &amp;quot;\r&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
SPECIAL_TOKEN :&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;
&amp;lt; FILLER : &amp;quot;;&amp;quot; &amp;gt; |&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;
&amp;lt; #EOL : ( &amp;quot;\r\n&amp;quot; | &amp;quot;\n&amp;quot; | &amp;quot;\r&amp;quot; ) &amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
TOKEN :&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt; RECORD_A : &amp;lt; SEQUENCE_NUMBER &amp;gt; &amp;lt; FILLER &amp;gt; &amp;lt; TYPE_A &amp;gt;
&amp;lt; FILLER &amp;gt; &amp;lt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
TEST_A &amp;gt; &amp;lt; EOL &amp;gt; &amp;gt; |&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt; RECORD_B : &amp;lt; SEQUENCE_NUMBER &amp;gt; &amp;lt; FILLER &amp;gt; &amp;lt; TYPE_B &amp;gt;
&amp;lt; FILLER &amp;gt; &amp;lt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
TEST_B &amp;gt; &amp;lt; EOL &amp;gt; &amp;gt; |&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt; SEQUENCE_NUMBER : ([ &amp;quot;0&amp;quot;-&amp;quot;9&amp;quot; ])+ &amp;gt; |&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;lt; TYPE_A : &amp;quot;TYPE_A&amp;quot; &amp;gt; |&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt; TYPE_B : &amp;quot;TYPE_B&amp;quot; &amp;gt; |&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt; TEST_A : ([ &amp;quot;0&amp;quot;-&amp;quot;9&amp;quot; ])+ &amp;gt; |&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt; TEST_B : ([ &amp;quot;0&amp;quot;-&amp;quot;9&amp;quot; ])+ &amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
public void convert() :&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
{}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
( &amp;lt;RECORD_A&amp;gt; | &amp;lt; RECORD_B &amp;gt; )* &amp;lt;EOF&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
I'm happy, this does work. &lt;/span&gt;&lt;span lang=FR-CH style='font-size:10.0pt;
font-family:&quot;Courier New&quot;'&gt;The file can be parsed. But what now? What do I&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
have to do, to write each file of a Record into the output file calling a&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
conversion-method before?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=FR-CH style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
Can someone give me a hint?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
Thanks,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;
Mike&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;-- &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;-
J.Chris Findlay&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&amp;nbsp;
(c:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;/body&gt;

&lt;/html&gt;
&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/convert-file-into-another-tp26608585p26626144.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26615001</id>
	<title>Re: convert file into another</title>
	<published>2009-12-02T11:36:31Z</published>
	<updated>2009-12-02T11:36:31Z</updated>
	<author>
		<name>J.Chris Findlay</name>
	</author>
	<content type="html">Note that defining TEST_A and TEST_B as the same thing without using lexical states will trip you up later.  When javacc sees a string of digits, it will assign it the tokenID of TEST_A every time as that is the first longest match found.  Better to define general things like numbers using a single NUMBER token to prevent such issues, and to make the productions later easier to read anyway.&lt;br&gt;
&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Thu, Dec 3, 2009 at 12:02 AM, Michel Erard &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26615001&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michel.erard@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
hello, &lt;br&gt;&lt;br&gt;I&amp;#39;m an absolutely beginner with javaCC, what you&amp;#39;ll see in my question;-) But it would be nice, if someone could give me some hints.&lt;br&gt;&lt;br&gt;I&amp;#39;ve to read in a file with different types of records and these records has to be converted and written out to a second file. Every field in another way. The file can contain different types of records, so line for line shoult be read in, decided which type of record it is and then be converted in an specific way.&lt;br&gt;

&lt;br&gt;Im testing with these dummy data in my file:&lt;br&gt;&lt;br&gt;123;TYPE_A;123&lt;br&gt;456;TYPE_B;456&lt;br&gt;&lt;br&gt;the jj file, I&amp;#39;ve made linke this:&lt;br&gt;&lt;br&gt;options {&lt;br&gt;    STATIC = false;&lt;br&gt;    LOOKAHEAD = 1;&lt;br&gt;    IGNORE_CASE = true;&lt;br&gt;

}&lt;br&gt;&lt;br&gt;PARSER_BEGIN(PersoConverter)&lt;br&gt;&lt;br&gt;import java.io.File;&lt;br&gt;import java.io.FileInputStream;&lt;br&gt;import java.io.FileOutputStream;&lt;br&gt;import java.io.FileNotFoundException;&lt;br&gt;&lt;br&gt;public class PersoConverter {&lt;br&gt;&lt;br&gt;

  private File outputFile;&lt;br&gt;&lt;br&gt;  public PersoConverter(File input, File output) throws FileNotFoundException {&lt;br&gt;    this(new FileInputStream(input), null);&lt;br&gt;    this.outputFile = output;&lt;br&gt;  }&lt;br&gt;&lt;br&gt;}&lt;br&gt;&lt;br&gt;PARSER_END(PersoConverter)&lt;br&gt;

&lt;br&gt;// lexical analyser&lt;br&gt;SKIP : {&lt;br&gt;  &amp;quot;\t&amp;quot; | &amp;quot; &amp;quot; | &amp;quot;\n&amp;quot; | &amp;quot;\r&amp;quot;&lt;br&gt;}&lt;br&gt; &lt;br&gt;SPECIAL_TOKEN :&lt;br&gt;{&lt;br&gt;  &amp;lt; FILLER : &amp;quot;;&amp;quot; &amp;gt; |&lt;br&gt;  &amp;lt; #EOL : ( &amp;quot;\r\n&amp;quot; | &amp;quot;\n&amp;quot; | &amp;quot;\r&amp;quot; ) &amp;gt;&lt;br&gt;

}&lt;br&gt;&lt;br&gt;TOKEN :&lt;br&gt;{&lt;br&gt;    &amp;lt; RECORD_A : &amp;lt; SEQUENCE_NUMBER &amp;gt; &amp;lt; FILLER &amp;gt; &amp;lt; TYPE_A &amp;gt; &amp;lt; FILLER &amp;gt; &amp;lt; TEST_A &amp;gt; &amp;lt; EOL &amp;gt; &amp;gt; |&lt;br&gt;    &amp;lt; RECORD_B : &amp;lt; SEQUENCE_NUMBER &amp;gt; &amp;lt; FILLER &amp;gt; &amp;lt; TYPE_B &amp;gt; &amp;lt; FILLER &amp;gt; &amp;lt; TEST_B &amp;gt; &amp;lt; EOL &amp;gt; &amp;gt; |&lt;br&gt;

    &amp;lt; SEQUENCE_NUMBER : ([ &amp;quot;0&amp;quot;-&amp;quot;9&amp;quot; ])+ &amp;gt; |&lt;br&gt;    &amp;lt; TYPE_A : &amp;quot;TYPE_A&amp;quot; &amp;gt; |&lt;br&gt;    &amp;lt; TYPE_B : &amp;quot;TYPE_B&amp;quot; &amp;gt; |&lt;br&gt;    &amp;lt; TEST_A : ([ &amp;quot;0&amp;quot;-&amp;quot;9&amp;quot; ])+ &amp;gt; |&lt;br&gt;

    &amp;lt; TEST_B : ([ &amp;quot;0&amp;quot;-&amp;quot;9&amp;quot; ])+ &amp;gt; &lt;br&gt;}&lt;br&gt;&lt;br&gt;public void convert() :&lt;br&gt;{}&lt;br&gt;{ &lt;br&gt;      ( &amp;lt;RECORD_A&amp;gt; | &amp;lt; RECORD_B &amp;gt; )* &amp;lt;EOF&amp;gt;&lt;br&gt;}&lt;br&gt;&lt;br&gt;I&amp;#39;m happy, this does work. The file can be parsed. But what now? What do I have to do, to write each file of a Record into the output file calling a conversion-method before?&lt;br&gt;

&lt;br&gt;Can someone give me a hint?&lt;br&gt;&lt;br&gt;Thanks, &lt;br&gt;&lt;br&gt;Mike&lt;br&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;br clear=&quot;all&quot;&gt;&lt;br&gt;-- &lt;br&gt; - J.Chris Findlay&lt;br&gt;   (c:&lt;br&gt;
&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/convert-file-into-another-tp26608585p26615001.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26611750</id>
	<title>RE: convert file into another</title>
	<published>2009-12-02T08:24:13Z</published>
	<updated>2009-12-02T08:24:13Z</updated>
	<author>
		<name>Mazas Marc</name>
	</author>
	<content type="html">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;HEAD&gt;
&lt;META http-equiv=Content-Type content=&quot;text/html; charset=iso-8859-1&quot;&gt;
&lt;META content=&quot;MSHTML 6.00.6000.16825&quot; name=GENERATOR&gt;&lt;/HEAD&gt;
&lt;BODY&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=115421816-02122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Hi Mike&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=115421816-02122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;
&lt;DIV&gt;&lt;SPAN class=115421816-02122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;You 
can use&amp;nbsp;use syntactic actions (within bnf productions)&amp;nbsp;working on the 
token image.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;Here below is an example of what you need 
(without any file management harness, and with a simplified grammar&amp;nbsp;to make 
it&amp;nbsp;work on the example)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=115421816-02122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=115421816-02122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;SPAN class=115421816-02122009&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;
&lt;DIV align=left&gt;options&lt;/DIV&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;{&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;STATIC&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; = &lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;false&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;DEBUG_TOKEN_MANAGER&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; = &lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;false&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;LOOKAHEAD&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;= 3;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;IGNORE_CASE&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; = &lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;true&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;PARSER_BEGIN&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;(Michel)&lt;/FONT&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;&lt;FONT color=#800000 size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;package&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt; foo.erard;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;&lt;FONT color=#800000 size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;import&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt; 
java.io.BufferedReader;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;&lt;FONT color=#800000 size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;import&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt; java.io.File;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;&lt;FONT color=#800000 size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;import&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt; 
java.io.FileInputStream;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;&lt;FONT color=#800000 size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;import&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt; 
java.io.FileOutputStream;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;&lt;FONT color=#800000 size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;import&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt; 
java.io.FileNotFoundException;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;&lt;FONT color=#800000 size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;import&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt; java.io.Reader;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;&lt;FONT color=#800000 size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;import&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt; java.io.StringReader;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;&lt;FONT color=#800000 size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;public&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;class&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt; Michel&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;{&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;/FONT&gt;&lt;FONT color=#000080 size=2&gt;&lt;FONT color=#000080 size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;/** ouput buffer 
*/&lt;/FONT&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;StringBuilder sb = 
&lt;/FONT&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;new&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt; StringBuilder(256);&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;public&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;static&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;void&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; main(String args []) &lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;throws&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt; ParseException&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;{&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;// input buffer (2 
lines)&lt;/FONT&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;String someInput = 
&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&quot;123;TYPE_A;123\n&quot;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; + &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&quot;456;TYPE_B;456\n&quot;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;StringReader sr = 
&lt;/FONT&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;new&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt; StringReader(someInput);&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;Reader r = &lt;/FONT&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;new&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt; BufferedReader(sr);&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;// create 
parser&lt;/FONT&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;Michel parser = 
&lt;/FONT&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;new&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt; Michel(r);&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;// parse 
input&lt;/FONT&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;parser.input();&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;// display 
output&lt;/FONT&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;System.out.println(&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&quot;input read :\n&quot;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt; + someInput);&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;System.out.println(&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&quot;output produced :\n&quot;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt; + parser.sb.toString());&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;/FONT&gt;&lt;FONT color=#000080 size=2&gt;&lt;FONT color=#000080 size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;/** converts a record test field 
*/&lt;/FONT&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;DIV align=left&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;static&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; String convert_a(&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;final&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt; String aStr)&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;{&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;return&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&quot;'&quot;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; + aStr + &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&quot;'&quot;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;/FONT&gt;&lt;FONT color=#000080 size=2&gt;&lt;FONT color=#000080 size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;/** converts b record test field 
*/&lt;/FONT&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;DIV align=left&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;static&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; String convert_b(&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;final&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt; String aStr)&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;{&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;return&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt; String.valueOf(aStr.length());&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;PARSER_END&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;(Michel)&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;SKIP&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; : { &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&quot;\t&quot;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; | &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&quot; 
&quot;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt; 
}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#008000 size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;TOKEN&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt; :&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;{&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;FILLER&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;:&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&quot;;&quot;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT color=#ff00ff size=2&gt;&lt;FONT color=#ff00ff size=2&gt;&amp;gt;&lt;/DIV&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;| &lt;/FONT&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;EOL&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;:&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;(&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&quot;\r\n&quot;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; | &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&quot;\n&quot;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; | &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&quot;\r&quot;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;)&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT color=#ff00ff size=2&gt;&lt;FONT color=#ff00ff size=2&gt;&amp;gt;&lt;/DIV&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;| &lt;/FONT&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;NUMBER&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;:&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;(&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;[ &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&quot;0&quot;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;-&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&quot;9&quot;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; ]&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;)+&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT color=#ff00ff size=2&gt;&lt;FONT color=#ff00ff size=2&gt;&amp;gt;&lt;/DIV&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;| &lt;/FONT&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;TYPE_A&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;:&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&quot;TYPE_A&quot;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT color=#ff00ff size=2&gt;&lt;FONT color=#ff00ff size=2&gt;&amp;gt;&lt;/DIV&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;| &lt;/FONT&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;TYPE_B&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;:&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&quot;TYPE_B&quot;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT color=#ff00ff size=2&gt;&lt;FONT color=#ff00ff size=2&gt;&amp;gt;&lt;/DIV&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;&lt;FONT color=#800000 size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;public&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;void&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt; record_a() :&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;{ Token t;}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;{&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;t = &lt;/FONT&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;NUMBER&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT color=#ff00ff size=2&gt;&lt;FONT color=#ff00ff size=2&gt;&amp;gt;&lt;/DIV&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;{ sb.append(t.image); 
}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;FILLER&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT color=#ff00ff size=2&gt;&lt;FONT color=#ff00ff size=2&gt;&amp;gt;&lt;/DIV&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;{ sb.append(&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&quot;\t&quot;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;); }&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;t = &lt;/FONT&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;TYPE_A&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT color=#ff00ff size=2&gt;&lt;FONT color=#ff00ff size=2&gt;&amp;gt;&lt;/DIV&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;{ 
sb.append(t.image.toLowerCase()); }&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;FILLER&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT color=#ff00ff size=2&gt;&lt;FONT color=#ff00ff size=2&gt;&amp;gt;&lt;/DIV&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;{ sb.append(&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&quot;\t&quot;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;); }&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;t = &lt;/FONT&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;NUMBER&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT color=#ff00ff size=2&gt;&lt;FONT color=#ff00ff size=2&gt;&amp;gt;&lt;/DIV&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;{ sb.append(convert_a(t.image)); 
}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;EOL&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT color=#ff00ff size=2&gt;&lt;FONT color=#ff00ff size=2&gt;&amp;gt;&lt;/DIV&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;{ sb.append(&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&quot;\n&quot;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;); }&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;&lt;FONT color=#800000 size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;public&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;void&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt; record_b() :&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;{ Token t;}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;{&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;t = &lt;/FONT&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;NUMBER&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT color=#ff00ff size=2&gt;&lt;FONT color=#ff00ff size=2&gt;&amp;gt;&lt;/DIV&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;{ sb.append(t.image); 
}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;FILLER&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT color=#ff00ff size=2&gt;&lt;FONT color=#ff00ff size=2&gt;&amp;gt;&lt;/DIV&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;{ sb.append(&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&quot;,&quot;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;); }&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;t = &lt;/FONT&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;TYPE_B&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT color=#ff00ff size=2&gt;&lt;FONT color=#ff00ff size=2&gt;&amp;gt;&lt;/DIV&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;{ sb.append(t.image); 
}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;FILLER&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT color=#ff00ff size=2&gt;&lt;FONT color=#ff00ff size=2&gt;&amp;gt;&lt;/DIV&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;{ sb.append(&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&quot;,&quot;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;); }&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;t = &lt;/FONT&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;NUMBER&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT color=#ff00ff size=2&gt;&lt;FONT color=#ff00ff size=2&gt;&amp;gt;&lt;/DIV&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;{ sb.append(convert_b(t.image)); 
}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;EOL&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT color=#ff00ff size=2&gt;&lt;FONT color=#ff00ff size=2&gt;&amp;gt;&lt;/DIV&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;{ sb.append(&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&quot;\n&quot;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;); }&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;&lt;FONT color=#800000 size=2&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;public&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;void&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt; input() :&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;{}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff&gt;{&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial color=#0000ff&gt;(&lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; record_a() | record_b() &lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;)*&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&amp;lt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;EOF&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;B&gt;&lt;FONT color=#ff00ff size=2&gt;&lt;FONT color=#ff00ff size=2&gt;&amp;gt;&lt;/DIV&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;
&lt;DIV align=left&gt;}&lt;/DIV&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;DIV class=MsoNormal align=left&gt;&lt;?xml:namespace prefix = o ns = 
&quot;urn:schemas-microsoft-com:office:office&quot; /&gt;&lt;o:p&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;BR&gt;
&lt;BLOCKQUOTE style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
  &lt;DIV class=OutlookMessageHeader lang=fr dir=ltr align=left&gt;
  &lt;HR tabIndex=-1&gt;
  &lt;FONT face=Tahoma size=2&gt;&lt;B&gt;De&amp;nbsp;:&lt;/B&gt; Michel Erard 
  [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26611750&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;michel.erard@...&lt;/a&gt;] &lt;BR&gt;&lt;B&gt;Envoyé&amp;nbsp;:&lt;/B&gt; mercredi 2 décembre 
  2009 12:02&lt;BR&gt;&lt;B&gt;À&amp;nbsp;:&lt;/B&gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26611750&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Objet&amp;nbsp;:&lt;/B&gt; 
  [JavaCC] convert file into another&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
  &lt;DIV&gt;&lt;/DIV&gt;hello, &lt;BR&gt;&lt;BR&gt;I'm an absolutely beginner with javaCC, what you'll 
  see in my question;-) But it would be nice, if someone could give me some 
  hints.&lt;BR&gt;&lt;BR&gt;I've to read in a file with different types of records and these 
  records has to be converted and written out to a second file. Every field in 
  another way. The file can contain different types of records, so line for line 
  shoult be read in, decided which type of record it is and then be converted in 
  an specific way.&lt;BR&gt;&lt;BR&gt;Im testing with these dummy data in my 
  file:&lt;BR&gt;&lt;BR&gt;123;TYPE_A;123&lt;BR&gt;456;TYPE_B;456&lt;BR&gt;&lt;BR&gt;the jj file, I've made 
  linke this:&lt;BR&gt;&lt;BR&gt;options {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; STATIC = 
  false;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOOKAHEAD = 1;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IGNORE_CASE 
  = true;&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;PARSER_BEGIN(PersoConverter)&lt;BR&gt;&lt;BR&gt;import 
  java.io.File;&lt;BR&gt;import java.io.FileInputStream;&lt;BR&gt;import 
  java.io.FileOutputStream;&lt;BR&gt;import 
  java.io.FileNotFoundException;&lt;BR&gt;&lt;BR&gt;public class PersoConverter 
  {&lt;BR&gt;&lt;BR&gt;&amp;nbsp; private File outputFile;&lt;BR&gt;&lt;BR&gt;&amp;nbsp; public 
  PersoConverter(File input, File output) throws FileNotFoundException 
  {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this(new FileInputStream(input), 
  null);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.outputFile = output;&lt;BR&gt;&amp;nbsp; 
  }&lt;BR&gt;&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;PARSER_END(PersoConverter)&lt;BR&gt;&lt;BR&gt;// lexical 
  analyser&lt;BR&gt;SKIP : {&lt;BR&gt;&amp;nbsp; &quot;\t&quot; | &quot; &quot; | &quot;\n&quot; | 
  &quot;\r&quot;&lt;BR&gt;}&lt;BR&gt;&amp;nbsp;&lt;BR&gt;SPECIAL_TOKEN :&lt;BR&gt;{&lt;BR&gt;&amp;nbsp; &amp;lt; FILLER : &quot;;&quot; &amp;gt; 
  |&lt;BR&gt;&amp;nbsp; &amp;lt; #EOL : ( &quot;\r\n&quot; | &quot;\n&quot; | &quot;\r&quot; ) &amp;gt;&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;TOKEN 
  :&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; RECORD_A : &amp;lt; SEQUENCE_NUMBER &amp;gt; &amp;lt; 
  FILLER &amp;gt; &amp;lt; TYPE_A &amp;gt; &amp;lt; FILLER &amp;gt; &amp;lt; TEST_A &amp;gt; &amp;lt; EOL &amp;gt; 
  &amp;gt; |&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; RECORD_B : &amp;lt; SEQUENCE_NUMBER &amp;gt; &amp;lt; 
  FILLER &amp;gt; &amp;lt; TYPE_B &amp;gt; &amp;lt; FILLER &amp;gt; &amp;lt; TEST_B &amp;gt; &amp;lt; EOL &amp;gt; 
  &amp;gt; |&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; SEQUENCE_NUMBER : ([ &quot;0&quot;-&quot;9&quot; ])+ &amp;gt; 
  |&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; TYPE_A : &quot;TYPE_A&quot; &amp;gt; |&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
  &amp;lt; TYPE_B : &quot;TYPE_B&quot; &amp;gt; |&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; TEST_A : ([ &quot;0&quot;-&quot;9&quot; 
  ])+ &amp;gt; |&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; TEST_B : ([ &quot;0&quot;-&quot;9&quot; ])+ &amp;gt; 
  &lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;public void convert() :&lt;BR&gt;{}&lt;BR&gt;{ &lt;BR&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
  ( &amp;lt;RECORD_A&amp;gt; | &amp;lt; RECORD_B &amp;gt; )* &amp;lt;EOF&amp;gt;&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;I'm happy, 
  this does work. The file can be parsed. But what now? What do I have to do, to 
  write each file of a Record into the output file calling a conversion-method 
  before?&lt;BR&gt;&lt;BR&gt;Can someone give me a hint?&lt;BR&gt;&lt;BR&gt;Thanks, 
&lt;BR&gt;&lt;BR&gt;Mike&lt;BR&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;
&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/convert-file-into-another-tp26608585p26611750.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26610080</id>
	<title>Re: convert file into another</title>
	<published>2009-12-02T06:46:57Z</published>
	<updated>2009-12-02T06:46:57Z</updated>
	<author>
		<name>Farrukh Najmi</name>
	</author>
	<content type="html">Tom Copeland wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Dec 2, 2009, at 6:02 AM, Michel Erard wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;br&gt;&amp;gt;&amp;gt; hello, 
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I'm an absolutely beginner with javaCC, what you'll see in my question;-) But it would be nice, if someone could give me some hints.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I've to read in a file with different types of records and these records has to be converted and written out to a second file. Every field in another way. The file can contain different types of records, so line for line shoult be read in, decided which type of record it is and then be converted in an specific way.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Hi Michael -
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; One solution would be to collect the data into a List as you parse it, then iterate over the List and convert each record as appropriate. &amp;nbsp;You can collect the data using a syntactic action. &amp;nbsp;Does that help?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;/div&gt;&lt;br&gt;There are two basic approaches I have used. One is to translate/convert 
&lt;br&gt;as I process the input. This is simpler but does not work in more comlex 
&lt;br&gt;cases where multiple passes over the input is required. In the more 
&lt;br&gt;complex case you can build a data structure in memory called an Abstract 
&lt;br&gt;Syntax Tree (AST) using JavaCC's JJTree feature. The token of the tree 
&lt;br&gt;represent your input tokens. You can traverse the tree as many times as 
&lt;br&gt;needed for your translation
&lt;br&gt;&lt;br&gt;Tom's suggestion above is somewhere in the middle where you are creating 
&lt;br&gt;some in-memory representation but without using JJTree and that may be a 
&lt;br&gt;fine option for you as I belive you your situation is relatively simpler.
&lt;br&gt;&lt;br&gt;ps: And just in case on the off chance that the input format is XML then 
&lt;br&gt;you consider XSLT instead of javacc.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Regards,
&lt;br&gt;Farrukh
&lt;br&gt;&lt;br&gt;Web: &lt;a href=&quot;http://www.wellfleetsoftware.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.wellfleetsoftware.com&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26610080&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26610080&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/convert-file-into-another-tp26608585p26610080.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26609831</id>
	<title>Re: convert file into another</title>
	<published>2009-12-02T06:30:44Z</published>
	<updated>2009-12-02T06:30:44Z</updated>
	<author>
		<name>Tom Copeland</name>
	</author>
	<content type="html">&lt;br&gt;On Dec 2, 2009, at 6:02 AM, Michel Erard wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; hello, 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I'm an absolutely beginner with javaCC, what you'll see in my question;-) But it would be nice, if someone could give me some hints.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I've to read in a file with different types of records and these records has to be converted and written out to a second file. Every field in another way. The file can contain different types of records, so line for line shoult be read in, decided which type of record it is and then be converted in an specific way.
&lt;br&gt;&lt;br&gt;Hi Michael -
&lt;br&gt;&lt;br&gt;One solution would be to collect the data into a List as you parse it, then iterate over the List and convert each record as appropriate. &amp;nbsp;You can collect the data using a syntactic action. &amp;nbsp;Does that help?
&lt;br&gt;&lt;br&gt;Yours,
&lt;br&gt;&lt;br&gt;Tom
&lt;br&gt;&lt;a href=&quot;http://generatingparserswithjavacc.com/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://generatingparserswithjavacc.com/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26609831&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26609831&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/convert-file-into-another-tp26608585p26609831.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26608585</id>
	<title>convert file into another</title>
	<published>2009-12-02T03:02:01Z</published>
	<updated>2009-12-02T03:02:01Z</updated>
	<author>
		<name>Michel Erard-6</name>
	</author>
	<content type="html">hello, &lt;br&gt;&lt;br&gt;I&amp;#39;m an absolutely beginner with javaCC, what you&amp;#39;ll see in my question;-) But it would be nice, if someone could give me some hints.&lt;br&gt;&lt;br&gt;I&amp;#39;ve to read in a file with different types of records and these records has to be converted and written out to a second file. Every field in another way. The file can contain different types of records, so line for line shoult be read in, decided which type of record it is and then be converted in an specific way.&lt;br&gt;
&lt;br&gt;Im testing with these dummy data in my file:&lt;br&gt;&lt;br&gt;123;TYPE_A;123&lt;br&gt;456;TYPE_B;456&lt;br&gt;&lt;br&gt;the jj file, I&amp;#39;ve made linke this:&lt;br&gt;&lt;br&gt;options {&lt;br&gt;    STATIC = false;&lt;br&gt;    LOOKAHEAD = 1;&lt;br&gt;    IGNORE_CASE = true;&lt;br&gt;
}&lt;br&gt;&lt;br&gt;PARSER_BEGIN(PersoConverter)&lt;br&gt;&lt;br&gt;import java.io.File;&lt;br&gt;import java.io.FileInputStream;&lt;br&gt;import java.io.FileOutputStream;&lt;br&gt;import java.io.FileNotFoundException;&lt;br&gt;&lt;br&gt;public class PersoConverter {&lt;br&gt;&lt;br&gt;
  private File outputFile;&lt;br&gt;&lt;br&gt;  public PersoConverter(File input, File output) throws FileNotFoundException {&lt;br&gt;    this(new FileInputStream(input), null);&lt;br&gt;    this.outputFile = output;&lt;br&gt;  }&lt;br&gt;&lt;br&gt;}&lt;br&gt;&lt;br&gt;PARSER_END(PersoConverter)&lt;br&gt;
&lt;br&gt;// lexical analyser&lt;br&gt;SKIP : {&lt;br&gt;  &amp;quot;\t&amp;quot; | &amp;quot; &amp;quot; | &amp;quot;\n&amp;quot; | &amp;quot;\r&amp;quot;&lt;br&gt;}&lt;br&gt; &lt;br&gt;SPECIAL_TOKEN :&lt;br&gt;{&lt;br&gt;  &amp;lt; FILLER : &amp;quot;;&amp;quot; &amp;gt; |&lt;br&gt;  &amp;lt; #EOL : ( &amp;quot;\r\n&amp;quot; | &amp;quot;\n&amp;quot; | &amp;quot;\r&amp;quot; ) &amp;gt;&lt;br&gt;
}&lt;br&gt;&lt;br&gt;TOKEN :&lt;br&gt;{&lt;br&gt;    &amp;lt; RECORD_A : &amp;lt; SEQUENCE_NUMBER &amp;gt; &amp;lt; FILLER &amp;gt; &amp;lt; TYPE_A &amp;gt; &amp;lt; FILLER &amp;gt; &amp;lt; TEST_A &amp;gt; &amp;lt; EOL &amp;gt; &amp;gt; |&lt;br&gt;    &amp;lt; RECORD_B : &amp;lt; SEQUENCE_NUMBER &amp;gt; &amp;lt; FILLER &amp;gt; &amp;lt; TYPE_B &amp;gt; &amp;lt; FILLER &amp;gt; &amp;lt; TEST_B &amp;gt; &amp;lt; EOL &amp;gt; &amp;gt; |&lt;br&gt;
    &amp;lt; SEQUENCE_NUMBER : ([ &amp;quot;0&amp;quot;-&amp;quot;9&amp;quot; ])+ &amp;gt; |&lt;br&gt;    &amp;lt; TYPE_A : &amp;quot;TYPE_A&amp;quot; &amp;gt; |&lt;br&gt;    &amp;lt; TYPE_B : &amp;quot;TYPE_B&amp;quot; &amp;gt; |&lt;br&gt;    &amp;lt; TEST_A : ([ &amp;quot;0&amp;quot;-&amp;quot;9&amp;quot; ])+ &amp;gt; |&lt;br&gt;
    &amp;lt; TEST_B : ([ &amp;quot;0&amp;quot;-&amp;quot;9&amp;quot; ])+ &amp;gt; &lt;br&gt;}&lt;br&gt;&lt;br&gt;public void convert() :&lt;br&gt;{}&lt;br&gt;{ &lt;br&gt;      ( &amp;lt;RECORD_A&amp;gt; | &amp;lt; RECORD_B &amp;gt; )* &amp;lt;EOF&amp;gt;&lt;br&gt;}&lt;br&gt;&lt;br&gt;I&amp;#39;m happy, this does work. The file can be parsed. But what now? What do I have to do, to write each file of a Record into the output file calling a conversion-method before?&lt;br&gt;
&lt;br&gt;Can someone give me a hint?&lt;br&gt;&lt;br&gt;Thanks, &lt;br&gt;&lt;br&gt;Mike&lt;br&gt;
&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/convert-file-into-another-tp26608585p26608585.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26592424</id>
	<title>Re: JavaCC questions :</title>
	<published>2009-12-01T06:12:31Z</published>
	<updated>2009-12-01T06:12:31Z</updated>
	<author>
		<name>Tom Copeland</name>
	</author>
	<content type="html">&lt;br&gt;On Nov 18, 2009, at 4:55 AM, Andrew A wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; Hey everyone, I am new to javaCC and have looked into it and have some questions if anyone would be so kind to help answer. I couldn't locate the information in question myself.
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; 1. Can the parser that javaCC creates be incorporated into a project as a normal class. That way we can invoke the class without the main method when necessary. I am abit confused as to why javaCC requires a main, unless to demonstrate it working by itself.
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; 2. I would like to not only parse text, but either build an object or add additional notes to the parsed text. JavaCC appears to be able to do this, is there any good examples or tutorials that someone could suggest related to this area.
&lt;br&gt;&lt;br&gt;Hi Andrew -
&lt;br&gt;&lt;br&gt;As Farrukh said, JJTree is a good way to do this. &amp;nbsp;This tutorial has some good information:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://www.softwaresecretweapons.com/jspwiki/jjtree-tutorial-for-advanced-java-parsing&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.softwaresecretweapons.com/jspwiki/jjtree-tutorial-for-advanced-java-parsing&lt;/a&gt;&lt;br&gt;&lt;br&gt;Yours,
&lt;br&gt;&lt;br&gt;Tom
&lt;br&gt;&lt;a href=&quot;http://generatingparserswithjavacc.com/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://generatingparserswithjavacc.com/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26592424&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26592424&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/JavaCC-questions-%3A-tp26407680p26592424.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26408213</id>
	<title>Re: JavaCC questions :</title>
	<published>2009-11-18T05:56:38Z</published>
	<updated>2009-11-18T05:56:38Z</updated>
	<author>
		<name>Farrukh Najmi</name>
	</author>
	<content type="html">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&gt;
&lt;html&gt;
&lt;head&gt;
  &lt;meta content=&quot;text/html;charset=ISO-8859-1&quot; http-equiv=&quot;Content-Type&quot;&gt;
&lt;/head&gt;
&lt;body bgcolor=&quot;#ffffff&quot; text=&quot;#000000&quot;&gt;
Andrew A wrote:
&lt;blockquote cite=&quot;mid:BLU143-W21A58FC6C76C798B77C32CC7A30@phx.gbl&quot; type=&quot;cite&quot;&gt;
  Hey
everyone, I am new to javaCC and have looked&amp;nbsp;into it and have some
questions if anyone would be so kind to help answer. I couldn't locate
the information in question myself.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
1. Can the parser that javaCC creates be incorporated into a project as
a normal class. That way we can invoke the class without the main
method when necessary. I am abit confused as to why javaCC requires a
main, unless to demonstrate it working by itself.&lt;br&gt;
&lt;/blockquote&gt;
&lt;br&gt;
Yes it can. I use it without main method like a normal class routinely:&lt;br&gt;
&lt;br&gt;
See methods like the following in generated parser main class
MyParser.java (assuming parser is called MyParser):&lt;br&gt;
&lt;br&gt;
&amp;nbsp; /** Constructor with InputStream. */&lt;br&gt;
&amp;nbsp; public MyParser(java.io.InputStream stream) {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this(stream, null);&lt;br&gt;
&amp;nbsp; }&lt;br&gt;
&amp;nbsp; /** Constructor with InputStream and supplied encoding */&lt;br&gt;
&amp;nbsp; public MyParser(java.io.InputStream stream, String encoding) {&lt;br&gt;
&amp;nbsp; ...&lt;br&gt;
&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
Create parser using above methods and then call the method
corresponding to your start production to do the parsing of the stream.&lt;br&gt;
&lt;br&gt;
My only issue is that needed a non-arg constructor and a set method to
set the stream. So I had to use some ugly kludges to do that.&lt;br&gt;
If any one know a decent way to address my need please share. Otherwise
I hope the dev team would consider this as as RFE.&lt;br&gt;
&lt;br&gt;
Thanks.&lt;br&gt;
&lt;blockquote cite=&quot;mid:BLU143-W21A58FC6C76C798B77C32CC7A30@phx.gbl&quot; type=&quot;cite&quot;&gt;&amp;nbsp;&lt;br&gt;
2. I would like to not only parse text, but either build an object or
add additional notes to the parsed text. JavaCC appears to be able to
do this, is there any good examples or tutorials that someone could
suggest related to this area.&lt;br&gt;
&lt;/blockquote&gt;
&lt;br&gt;
The jjtree program generates an Abstract SYntax Tree (AST) that can be
decorated with arbitrary info. I have not used it in a while but it was
not to hard to get that working based on available docs as I recall.
Perhaps someone more experienced can guide better on this.&lt;br&gt;
&lt;br&gt;
Best of luck.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;pre class=&quot;moz-signature&quot; cols=&quot;72&quot;&gt;-- 
Regards,
Farrukh

Web: &lt;a class=&quot;moz-txt-link-freetext&quot; href=&quot;http://www.wellfleetsoftware.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.wellfleetsoftware.com&lt;/a&gt;

&lt;/pre&gt;
&lt;/body&gt;
&lt;/html&gt;

---------------------------------------------------------------------
To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26408213&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26408213&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;

&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/JavaCC-questions-%3A-tp26407680p26408213.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26407680</id>
	<title>JavaCC questions :</title>
	<published>2009-11-18T01:55:02Z</published>
	<updated>2009-11-18T01:55:02Z</updated>
	<author>
		<name>Melanie_Green</name>
	</author>
	<content type="html">&lt;html&gt;
&lt;head&gt;

&lt;/head&gt;
&lt;body class='hmmessage'&gt;
Hey everyone, I am new to javaCC and have looked&amp;nbsp;into it and have some questions if anyone would be so kind to help answer. I couldn't locate the information in question myself.&lt;BR&gt;
&amp;nbsp;&lt;BR&gt;
1. Can the parser that javaCC creates be incorporated into a project as a normal class. That way we can invoke the class without the main method when necessary. I am abit confused as to why javaCC requires a main, unless to demonstrate it working by itself.&lt;BR&gt;
&amp;nbsp;&lt;BR&gt;
2. I would like to not only parse text, but either build an object or add additional notes to the parsed text. JavaCC appears to be able to do this, is there any good examples or tutorials that someone could suggest related to this area.&lt;BR&gt;
&amp;nbsp;&lt;BR&gt;
Thank You&lt;BR&gt; 		 	   		  &lt;br /&gt;&lt;hr /&gt;New Windows 7: Find the right PC for you. &lt;a href='http://windows.microsoft.com/shop' target='_new' rel=&quot;nofollow&quot;&gt;Learn more.&lt;/a&gt;&lt;/body&gt;
&lt;/html&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/JavaCC-questions-%3A-tp26407680p26407680.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26361104</id>
	<title>Re: We are trying to create an off-side rule parser, but have problems  with multiple UNINDENT.</title>
	<published>2009-11-15T09:13:15Z</published>
	<updated>2009-11-15T09:13:15Z</updated>
	<author>
		<name>Sreenivasa Viswanadha</name>
	</author>
	<content type="html">&lt;br&gt;I don't remember now why I did it, but I had to abandon this. So instead,
&lt;br&gt;we did it using semantic lookahead. Basically, just ignore all white space
&lt;br&gt;as you normally do, setTabSize(1) and then do something like the
&lt;br&gt;following.
&lt;br&gt;&lt;br&gt;Hope that helps,
&lt;br&gt;Sreeni.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;try
&lt;br&gt;&amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; LOOKAHEAD({getToken(0).beginLine == getToken(1).beginLine})
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; stmt_list() /*&amp;lt;NEWLINE&amp;gt;*/ // multiple statements on the same line
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{ indent = getToken(1).beginColumn; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LOOKAHEAD({ getToken(1).kind != EOF &amp;&amp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; indent == getToken(1).beginColumn })
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; statement()
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;) +
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;)
&lt;br&gt;&amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp;finally
&lt;br&gt;&amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; indent = oldIndent;
&lt;br&gt;&amp;nbsp; &amp;nbsp;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; We are trying to create an off-side rule parser that uses indentation
&lt;br&gt;&amp;gt; (whitespace) rather than braces to delimit blocks in the abstract syntax.
&lt;br&gt;&amp;gt; Ultimately, we'll simplify the concrete syntax to be more like
&lt;br&gt;&amp;gt; python/haskell, but right now we are using a concrete syntax similar to
&lt;br&gt;&amp;gt; that
&lt;br&gt;&amp;gt; of C, with the exception of INDENT and UNINDENT tokens to delimit blocks
&lt;br&gt;&amp;gt; rather than brace tokens.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; In the token manager declarations, we setup a stack to keep track of
&lt;br&gt;&amp;gt; indentation. &amp;nbsp;The stack stores the length of the whitespace comprising
&lt;br&gt;&amp;gt; indentation as ints, and corresponding peek, pop and push methods are
&lt;br&gt;&amp;gt; defined.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; We define a DEFAULT lexical state in which the lexar begins, and we also
&lt;br&gt;&amp;gt; switch back to the DEFAULT state from the IN_LINE state whenever we
&lt;br&gt;&amp;gt; encounter an end of line in the latter state. &amp;nbsp;In the DEFAULT state, we
&lt;br&gt;&amp;gt; skip
&lt;br&gt;&amp;gt; empty lines, and we use MORE to capture all the whitespace comprising the
&lt;br&gt;&amp;gt; indentation.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; After matching all the spaces or tabs in the current indentation, we have
&lt;br&gt;&amp;gt; an
&lt;br&gt;&amp;gt; action associated with an empty string match that determines if the
&lt;br&gt;&amp;gt; current
&lt;br&gt;&amp;gt; line is indented, unindented or the same indentation as the previous line.
&lt;br&gt;&amp;gt; We compare the length of the whitespace of the current line to the value
&lt;br&gt;&amp;gt; at
&lt;br&gt;&amp;gt; the top of the stack.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; If the length of the whitespace of the current line is greater than the
&lt;br&gt;&amp;gt; value on the top of the stack, then an indent occurred, and we push the
&lt;br&gt;&amp;gt; length on the stack, and we switch to the INDENTING lexar state. &amp;nbsp;In this
&lt;br&gt;&amp;gt; state, an empty string match causes the lexar to send an INDENT token to
&lt;br&gt;&amp;gt; the
&lt;br&gt;&amp;gt; parser, and this works in our tests.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; If the length of the whitespace of the current line is less than the value
&lt;br&gt;&amp;gt; on the top of the stack, then an unindent occurred, and we pop the stack
&lt;br&gt;&amp;gt; until the value on the top of the stack is the same as the length of the
&lt;br&gt;&amp;gt; current whitespace. &amp;nbsp;Each time we pop, our goal is to send an UNINDENT
&lt;br&gt;&amp;gt; token
&lt;br&gt;&amp;gt; to the parser, but we are presently unable to send more than one UNINDENT
&lt;br&gt;&amp;gt; token. &amp;nbsp;Strangely, an UNINDENT token is sent only after the last pop,
&lt;br&gt;&amp;gt; whereas it would seem that this would happen after the first pop.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The second problem is that the parser becomes stuck in an infinite loop of
&lt;br&gt;&amp;gt; empty string matches in this state. &amp;nbsp;This is also strange because the
&lt;br&gt;&amp;gt; UNINDENT token is only matched after the last pop, but also because after
&lt;br&gt;&amp;gt; the last pop, the length of the whitespace of the current line is equal to
&lt;br&gt;&amp;gt; the value on the top of the stack, so the lexar should break out of the
&lt;br&gt;&amp;gt; while loop in the action, and the last else clause in the action should
&lt;br&gt;&amp;gt; switch back to the IN_LINE lexar state.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -------------------------------------------------------------------------------
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Excerpt from Parser.jj:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; TOKEN_MGR_DECLS:
&lt;br&gt;&amp;gt; {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; Integer[] init_array = new Integer[] {new Integer(0)};
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; java.util.ArrayList&amp;lt;Integer&amp;gt; stack =
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new
&lt;br&gt;&amp;gt; java.util.ArrayList&amp;lt;Integer&amp;gt;(java.util.Arrays.asList(init_array));
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; int peek() { return stack.get(stack.size() - 1); }
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; int pop() { return stack.remove(stack.size() - 1); }
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; void push(int i) { stack.add(i);}
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;lt;DEFAULT&amp;gt;
&lt;br&gt;&amp;gt; SKIP:
&lt;br&gt;&amp;gt; {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;quot;\r&amp;quot; // { System.out.print(&amp;quot;(DEFAULT STATE - SKIP: CR)&amp;quot;); }
&lt;br&gt;&amp;gt; &amp;nbsp; | &amp;quot;\n&amp;quot; // { System.out.print(&amp;quot;(DEFAULT STATE - SKIP: NL)&amp;quot;); }
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;lt;DEFAULT&amp;gt;
&lt;br&gt;&amp;gt; MORE:
&lt;br&gt;&amp;gt; {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;quot; &amp;quot; // { System.out.print(&amp;quot;(DEFAULT STATE - MORE: S)&amp;quot;); }
&lt;br&gt;&amp;gt; &amp;nbsp; | &amp;quot;\t&amp;quot; // { System.out.print(&amp;quot;(DEFAULT STATE - MORE: T)&amp;quot;); }
&lt;br&gt;&amp;gt; &amp;nbsp; | &amp;quot;&amp;quot;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (image.length() &amp;gt; peek())
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; push(image.length());
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.print(&amp;quot;(push &amp;quot; + stack + &amp;quot;)&amp;quot;);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SwitchTo(INDENTING);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else if (image.length() &amp;lt; peek())
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; while (image.length() &amp;lt; peek())
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pop();
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.print(&amp;quot;(pop &amp;quot; + stack +&amp;quot;)&amp;quot;);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SwitchTo(UNINDENTING);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (image.length() != peek())
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //throw new TokenMgrError(&amp;quot;Improper unindent.&amp;quot;,
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //TokenMgrError.LEXICAL_ERROR);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.print(&amp;quot;Error: Improper unindent.&amp;quot;);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SwitchTo(IN_LINE);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;lt;INDENTING&amp;gt;
&lt;br&gt;&amp;gt; TOKEN:
&lt;br&gt;&amp;gt; {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;lt;INDENT: &amp;quot;&amp;quot;&amp;gt; { System.out.print(&amp;quot;&amp;lt;INDENT&amp;gt;&amp;quot;); } : IN_LINE
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;lt;UNINDENTING&amp;gt;
&lt;br&gt;&amp;gt; TOKEN:
&lt;br&gt;&amp;gt; {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;lt;UNINDENT: &amp;quot;&amp;quot;&amp;gt; { System.out.print(&amp;quot;&amp;lt;UNINDENT&amp;gt;&amp;quot;); } : DEFAULT
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;lt;IN_LINE&amp;gt;
&lt;br&gt;&amp;gt; SKIP:
&lt;br&gt;&amp;gt; {
&lt;br&gt;&amp;gt; &amp;nbsp; | &amp;quot; &amp;quot;
&lt;br&gt;&amp;gt; &amp;nbsp; | &amp;quot;\t&amp;quot;
&lt;br&gt;&amp;gt; &amp;nbsp; | &amp;quot;\r&amp;quot;
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;lt;IN_LINE&amp;gt;
&lt;br&gt;&amp;gt; TOKEN:
&lt;br&gt;&amp;gt; {
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; /* ALL THE REGULAR TOKENS */
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; | &amp;lt;EOL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;\n&amp;quot;&amp;gt; { System.out.print(&amp;quot;&amp;lt;EOL&amp;gt;\n&amp;quot;); } : DEFAULT
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -------------------------------------------------------------------------------
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Sample input:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; int main ()
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; if (true)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return 1;
&lt;br&gt;&amp;gt; int i;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -------------------------------------------------------------------------------
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Sample output:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; bash-3.2$ ant &amp;&amp; java -cp bin proj.Hmm test1.py
&lt;br&gt;&amp;gt; Buildfile: build.xml
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; printJavaVersion:
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;[echo] &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;YOU ARE USING JAVA 1.6.0_11
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;[echo]
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;[echo] &amp;nbsp; Java located at: /lusr/opt/jdk1.6.0_11/jre
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; all:
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;[javacc] Java Compiler Compiler Version 4.1 (Parser Generator)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;[javacc] (type &amp;quot;javacc&amp;quot; with no arguments for help)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;[javacc] Reading from file
&lt;br&gt;&amp;gt; /v/filer4b/v38q001/cjh/cs345/project/proj/src/proj/parser/Parser.jj . . .
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;[javacc] Warning: Line 43, Column 5: Regular expression can be matched
&lt;br&gt;&amp;gt; by
&lt;br&gt;&amp;gt; the empty string (&amp;quot;&amp;quot;) in lexical state DEFAULT. This can result in an
&lt;br&gt;&amp;gt; endless loop of empty string matches.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;[javacc] Warning: Line 86, Column 5: Regular expression for UNINDENT
&lt;br&gt;&amp;gt; can
&lt;br&gt;&amp;gt; be matched by the empty string (&amp;quot;&amp;quot;) in lexical state UNINDENTING. This
&lt;br&gt;&amp;gt; regular expression along with the regular expressions at line 43, column 5
&lt;br&gt;&amp;gt; forms the cycle
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;[javacc] &amp;nbsp; &amp;nbsp;UNINDENTING--&amp;gt;DEFAULT--&amp;gt;DEFAULT
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;[javacc] containing regular expressions with empty matches. This can
&lt;br&gt;&amp;gt; result in an endless loop of empty string matches.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;[javacc] File &amp;quot;TokenMgrError.java&amp;quot; is being rebuilt.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;[javacc] File &amp;quot;ParseException.java&amp;quot; is being rebuilt.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;[javacc] File &amp;quot;Token.java&amp;quot; is being rebuilt.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;[javacc] File &amp;quot;SimpleCharStream.java&amp;quot; is being rebuilt.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;[javacc] Parser generated with 0 errors and 2 warnings.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; [javac] Compiling 7 source files to
&lt;br&gt;&amp;gt; /v/filer4b/v38q001/cjh/cs345/project/proj/bin
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; [javac] Note:
&lt;br&gt;&amp;gt; /v/filer4b/v38q001/cjh/cs345/project/proj/src/proj/parser/Parser.java uses
&lt;br&gt;&amp;gt; unchecked or unsafe operations.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; [javac] Note: Recompile with -Xlint:unchecked for details.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; BUILD SUCCESSFUL
&lt;br&gt;&amp;gt; Total time: 3 seconds
&lt;br&gt;&amp;gt; (program - start)&amp;lt;INT&amp;gt;&amp;lt;IDENTIFIER&amp;gt;&amp;lt;LPAREN&amp;gt;&amp;lt;RPAREN&amp;gt;&amp;lt;EOL&amp;gt;
&lt;br&gt;&amp;gt; (block - start)(push [0, 4])&amp;lt;INDENT&amp;gt;&amp;lt;IF&amp;gt;&amp;lt;LPAREN&amp;gt;&amp;lt;RPAREN&amp;gt;&amp;lt;EOL&amp;gt;
&lt;br&gt;&amp;gt; (block - start)(push [0, 4, 8])&amp;lt;INDENT&amp;gt;&amp;lt;RETURN&amp;gt;&amp;lt;INTEGER&amp;gt;&amp;lt;SEMI&amp;gt;(return -
&lt;br&gt;&amp;gt; end)&amp;lt;EOL&amp;gt;
&lt;br&gt;&amp;gt; (pop [0, 4])(pop [0])&amp;lt;UNINDENT&amp;gt;(block - end)Exception in thread &amp;quot;main&amp;quot;
&lt;br&gt;&amp;gt; proj.parser.TokenMgrError: Error: Bailing out of infinite loop caused by
&lt;br&gt;&amp;gt; repeated empty string matches at line 4, column 1.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at proj.parser.ParserTokenManager.MoreLexicalActions(Unknown
&lt;br&gt;&amp;gt; Source)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at proj.parser.ParserTokenManager.getNextToken(Unknown Source)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at proj.parser.Parser.jj_ntk(Unknown Source)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at proj.parser.Parser.ifStatement(Unknown Source)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at proj.parser.Parser.statement(Unknown Source)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at proj.parser.Parser.statements(Unknown Source)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at proj.parser.Parser.block(Unknown Source)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at proj.parser.Parser.restOfFunction(Unknown Source)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at proj.parser.Parser.Program(Unknown Source)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at proj.Hmm.main(Unknown Source)
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26361104&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26361104&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/We-are-trying-to-create-an-off-side-rule-parser%2C-but-have-problems--with-multiple-UNINDENT.-tp26355155p26361104.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26355155</id>
	<title>We are trying to create an off-side rule parser, but have problems  with multiple UNINDENT.</title>
	<published>2009-11-14T15:30:22Z</published>
	<updated>2009-11-14T15:30:22Z</updated>
	<author>
		<name>chris heathcott</name>
	</author>
	<content type="html">We are trying to create an off-side rule parser that uses indentation
(whitespace) rather than braces to delimit blocks in the abstract
syntax.  Ultimately, we&amp;#39;ll simplify the concrete syntax to be more like
python/haskell, but right now we are using a concrete syntax similar to that of C, with the
exception of INDENT and UNINDENT tokens to delimit blocks rather than
brace tokens. &lt;br&gt;
&lt;br&gt;In the token manager declarations, we setup a stack to keep track
of indentation.  The stack stores the length of the whitespace
comprising indentation as ints, and corresponding peek, pop and push
methods are defined.&lt;br&gt;
&lt;br&gt;We define a DEFAULT lexical state in which the lexar begins, and we
also switch back to the DEFAULT state from the IN_LINE state whenever
we encounter an end of line in the latter state.  In the DEFAULT state,
we skip empty lines, and we use MORE to capture all the whitespace
comprising the indentation.&lt;br&gt;
&lt;br&gt;After matching all the spaces or tabs in the current indentation,
we have an action associated with an empty string match that determines
if the current line is indented, unindented or the same indentation as
the previous line.  We compare the length of the whitespace of the
current line to the value at the top of the stack.&lt;br&gt;
 &lt;br&gt;If the
length of the whitespace of the current line is greater than the value
on the top of the stack, then an indent occurred, and we push the
length on the stack, and we switch to the INDENTING lexar state.  In
this state, an empty string match causes the lexar to send an INDENT
token to the parser, and this works in our tests.&lt;br&gt;
&lt;br&gt;If the length of the whitespace of the current line is less than
the value on the top of the stack, then an unindent occurred, and we
pop the stack until the value on the top of the stack is the same as
the length of the current whitespace.  Each time we pop, our goal is to
send an UNINDENT token to the parser, but we are presently unable to
send more than one UNINDENT token.  Strangely, an UNINDENT token is
sent only after the last pop, whereas it would seem that this would
happen after the first pop.&lt;br&gt;
&lt;br&gt;The second problem is that the parser becomes stuck in an infinite
loop of empty string matches in this state.  This is also strange
because the UNINDENT token is only matched after the last pop, but also
because after the last pop, the length of the whitespace of the current
line is equal to the value on the top of the stack, so the lexar should
break out of the while loop in the action, and the last else clause in
the action should switch back to the IN_LINE lexar state.&lt;br&gt;
&lt;br&gt;-------------------------------------------------------------------------------&lt;br&gt;&lt;div id=&quot;:35&quot; class=&quot;ii gt&quot;&gt;&lt;br&gt;Excerpt from Parser.jj:&lt;br&gt;&lt;br&gt;TOKEN_MGR_DECLS:&lt;br&gt;{&lt;br&gt;    Integer[] init_array = new Integer[] {new Integer(0)};&lt;br&gt;
    java.util.ArrayList&amp;lt;Integer&amp;gt; stack =&lt;br&gt;
        new java.util.ArrayList&amp;lt;Integer&amp;gt;(java.util.Arrays.asList(init_array));&lt;br&gt;    int peek() { return stack.get(stack.size() - 1); }&lt;br&gt;    int pop() { return stack.remove(stack.size() - 1); }&lt;br&gt;    void push(int i) { stack.add(i);}&lt;br&gt;

}&lt;br&gt;&lt;br&gt;&amp;lt;DEFAULT&amp;gt;&lt;br&gt;SKIP:&lt;br&gt;{&lt;br&gt;    &amp;quot;\r&amp;quot; // { System.out.print(&amp;quot;(DEFAULT STATE - SKIP: CR)&amp;quot;); }&lt;br&gt;  | &amp;quot;\n&amp;quot; // { System.out.print(&amp;quot;(DEFAULT STATE - SKIP: NL)&amp;quot;); }&lt;br&gt;}&lt;br&gt;

&lt;br&gt;&amp;lt;DEFAULT&amp;gt;&lt;br&gt;MORE:&lt;br&gt;{&lt;br&gt;    &amp;quot; &amp;quot; // { System.out.print(&amp;quot;(DEFAULT STATE - MORE: S)&amp;quot;); }&lt;br&gt;  | &amp;quot;\t&amp;quot; // { System.out.print(&amp;quot;(DEFAULT STATE - MORE: T)&amp;quot;); }&lt;br&gt;  | &amp;quot;&amp;quot;&lt;br&gt;

    {&lt;br&gt;        if (image.length() &amp;gt; peek())&lt;br&gt;        {&lt;br&gt;            push(image.length());&lt;br&gt;            System.out.print(&amp;quot;(push &amp;quot; + stack + &amp;quot;)&amp;quot;);&lt;br&gt;            SwitchTo(INDENTING);&lt;br&gt;        }&lt;br&gt;

        else if (image.length() &amp;lt; peek())&lt;br&gt;        {&lt;br&gt;            while (image.length() &amp;lt; peek())&lt;br&gt;            {&lt;br&gt;                pop();&lt;br&gt;                System.out.print(&amp;quot;(pop &amp;quot; + stack +&amp;quot;)&amp;quot;);&lt;br&gt;

                SwitchTo(UNINDENTING);&lt;br&gt;            }&lt;br&gt;            if (image.length() != peek())&lt;br&gt;            {&lt;br&gt;                //throw new TokenMgrError(&amp;quot;Improper unindent.&amp;quot;,&lt;br&gt;                //TokenMgrError.LEXICAL_ERROR);&lt;br&gt;

                System.out.print(&amp;quot;Error: Improper unindent.&amp;quot;);&lt;br&gt;            }&lt;br&gt;        }&lt;br&gt;        else&lt;br&gt;        {&lt;br&gt;            SwitchTo(IN_LINE);&lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;}&lt;br&gt;&lt;br&gt;&amp;lt;INDENTING&amp;gt;&lt;br&gt;

TOKEN:&lt;br&gt;{&lt;br&gt;    &amp;lt;INDENT: &amp;quot;&amp;quot;&amp;gt; { System.out.print(&amp;quot;&amp;lt;INDENT&amp;gt;&amp;quot;); } : IN_LINE&lt;br&gt;}&lt;br&gt;&lt;br&gt;&amp;lt;UNINDENTING&amp;gt;&lt;br&gt;TOKEN:&lt;br&gt;{&lt;br&gt;    &amp;lt;UNINDENT: &amp;quot;&amp;quot;&amp;gt; { System.out.print(&amp;quot;&amp;lt;UNINDENT&amp;gt;&amp;quot;); } : DEFAULT&lt;br&gt;

}&lt;br&gt;&lt;br&gt;&amp;lt;IN_LINE&amp;gt;&lt;br&gt;SKIP:&lt;br&gt;{&lt;br&gt;  | &amp;quot; &amp;quot;&lt;br&gt;  | &amp;quot;\t&amp;quot;&lt;br&gt;  | &amp;quot;\r&amp;quot;&lt;br&gt;}&lt;br&gt;&lt;br&gt;&amp;lt;IN_LINE&amp;gt;&lt;br&gt;TOKEN:&lt;br&gt;{&lt;br&gt;  &lt;br&gt;  /* ALL THE REGULAR TOKENS */&lt;br&gt;&lt;br&gt;  | &amp;lt;EOL:       &amp;quot;\n&amp;quot;&amp;gt; { System.out.print(&amp;quot;&amp;lt;EOL&amp;gt;\n&amp;quot;); } : DEFAULT&lt;br&gt;

}&lt;br&gt;&lt;br&gt;-------------------------------------------------------------------------------&lt;br&gt;&lt;br&gt;Sample input:&lt;br&gt;&lt;br&gt;int main ()&lt;br&gt;    if (true)&lt;br&gt;        return 1;&lt;br&gt;int i;&lt;br&gt;&lt;br&gt;-------------------------------------------------------------------------------&lt;br&gt;

&lt;br&gt;Sample output:&lt;br&gt;&lt;br&gt;bash-3.2$ ant &amp;amp;&amp;amp; java -cp bin proj.Hmm test1.py&lt;br&gt;Buildfile: build.xml&lt;br&gt;&lt;br&gt;printJavaVersion:&lt;br&gt;     [echo]        YOU ARE USING JAVA 1.6.0_11&lt;br&gt;     [echo] &lt;br&gt;     [echo]   Java located at: /lusr/opt/jdk1.6.0_11/jre&lt;br&gt;

&lt;br&gt;all:&lt;br&gt;   [javacc] Java Compiler Compiler Version 4.1 (Parser Generator)&lt;br&gt;   [javacc] (type &amp;quot;javacc&amp;quot; with no arguments for help)&lt;br&gt;   [javacc] Reading from file /v/filer4b/v38q001/cjh/cs345/project/proj/src/proj/parser/Parser.jj . . .&lt;br&gt;

   [javacc] Warning: Line 43, Column 5: Regular expression can be
matched by the empty string (&amp;quot;&amp;quot;) in lexical state DEFAULT. This can
result in an endless loop of empty string matches.&lt;br&gt;  
[javacc] Warning: Line 86, Column 5: Regular expression for UNINDENT
can be matched by the empty string (&amp;quot;&amp;quot;) in lexical state UNINDENTING.
This regular expression along with the regular expressions at line 43,
column 5 forms the cycle &lt;br&gt;
   [javacc]    UNINDENTING--&amp;gt;DEFAULT--&amp;gt;DEFAULT&lt;br&gt;   [javacc] containing regular expressions with empty matches. This can result in an endless loop of empty string matches.&lt;br&gt;   [javacc] File &amp;quot;TokenMgrError.java&amp;quot; is being rebuilt.&lt;br&gt;

   [javacc] File &amp;quot;ParseException.java&amp;quot; is being rebuilt.&lt;br&gt;   [javacc] File &amp;quot;Token.java&amp;quot; is being rebuilt.&lt;br&gt;   [javacc] File &amp;quot;SimpleCharStream.java&amp;quot; is being rebuilt.&lt;br&gt;   [javacc] Parser generated with 0 errors and 2 warnings.&lt;br&gt;

    [javac] Compiling 7 source files to /v/filer4b/v38q001/cjh/cs345/project/proj/bin&lt;br&gt;    [javac] Note: /v/filer4b/v38q001/cjh/cs345/project/proj/src/proj/parser/Parser.java uses unchecked or unsafe operations.&lt;br&gt;    [javac] Note: Recompile with -Xlint:unchecked for details.&lt;br&gt;

&lt;br&gt;BUILD SUCCESSFUL&lt;br&gt;Total time: 3 seconds&lt;br&gt;(program - start)&amp;lt;INT&amp;gt;&amp;lt;IDENTIFIER&amp;gt;&amp;lt;LPAREN&amp;gt;&amp;lt;RPAREN&amp;gt;&amp;lt;EOL&amp;gt;&lt;br&gt;(block - start)(push [0, 4])&amp;lt;INDENT&amp;gt;&amp;lt;IF&amp;gt;&amp;lt;LPAREN&amp;gt;&amp;lt;RPAREN&amp;gt;&amp;lt;EOL&amp;gt;&lt;br&gt;

(block - start)(push [0, 4, 8])&amp;lt;INDENT&amp;gt;&amp;lt;RETURN&amp;gt;&amp;lt;INTEGER&amp;gt;&amp;lt;SEMI&amp;gt;(return - end)&amp;lt;EOL&amp;gt;&lt;br&gt;(pop
[0, 4])(pop [0])&amp;lt;UNINDENT&amp;gt;(block - end)Exception in thread &amp;quot;main&amp;quot;
proj.parser.TokenMgrError: Error: Bailing out of infinite loop caused
by repeated empty string matches at line 4, column 1.&lt;br&gt;
        at proj.parser.ParserTokenManager.MoreLexicalActions(Unknown Source)&lt;br&gt;        at proj.parser.ParserTokenManager.getNextToken(Unknown Source)&lt;br&gt;        at proj.parser.Parser.jj_ntk(Unknown Source)&lt;br&gt;        at proj.parser.Parser.ifStatement(Unknown Source)&lt;br&gt;

        at proj.parser.Parser.statement(Unknown Source)&lt;br&gt;        at proj.parser.Parser.statements(Unknown Source)&lt;br&gt;        at proj.parser.Parser.block(Unknown Source)&lt;br&gt;        at proj.parser.Parser.restOfFunction(Unknown Source)&lt;br&gt;

        at proj.parser.Parser.Program(Unknown Source)&lt;br&gt;        at proj.Hmm.main(Unknown Source)&lt;br&gt;&lt;/div&gt;
&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/We-are-trying-to-create-an-off-side-rule-parser%2C-but-have-problems--with-multiple-UNINDENT.-tp26355155p26355155.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26295286</id>
	<title>Re: Use Longs for Line Numbers</title>
	<published>2009-11-10T18:57:07Z</published>
	<updated>2009-11-10T18:57:07Z</updated>
	<author>
		<name>Tom Copeland</name>
	</author>
	<content type="html">&lt;br&gt;On Nov 9, 2009, at 3:46 PM, &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26295286&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;sreeni@...&lt;/a&gt; wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Yes, we should fix it. But for now, you can simply edit the generated
&lt;br&gt;&amp;gt; files - Token.java and SimpleCharStream.java to make the line numbers
&lt;br&gt;&amp;gt; long. There might be some issues with error reporting, but it should work.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Tom, I'm not sure I understand what you are saying. The line number stuff
&lt;br&gt;&amp;gt; is rather straightforward. It's used purely for reporting. It doesn't
&lt;br&gt;&amp;gt; affect the generated code at all.
&lt;br&gt;&lt;br&gt;Hm, maybe I misunderstood... I was thinking that Kurt was saying that there were more than Integer.MAX_INT tokens... so that all those int[] arrays of tokens and such would need to be long[] instead. &amp;nbsp;But maybe I'm misrepresenting his question...
&lt;br&gt;&lt;br&gt;Yours,
&lt;br&gt;&lt;br&gt;Tom
&lt;br&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26295286&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26295286&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Use-Longs-for-Line-Numbers-tp25778044p26295286.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26282907</id>
	<title>[Issue 233] New - Enable back up of one token/ensure next token at certain grammar points</title>
	<published>2009-11-10T04:55:22Z</published>
	<updated>2009-11-10T04:55:22Z</updated>
	<author>
		<name>arataj-2</name>
	</author>
	<content type="html">&lt;a href=&quot;https://javacc.dev.java.net/issues/show_bug.cgi?id=233&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://javacc.dev.java.net/issues/show_bug.cgi?id=233&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Issue #|233
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Summary|Enable back up of one token/ensure next token at certa
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |in grammar points
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Component|javacc
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Version|5.0
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Platform|All
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; OS/Version|All
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;URL|
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Status|NEW
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Status whiteboard|
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Keywords|
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Resolution|
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Issue type|ENHANCEMENT
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Priority|P3
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Subcomponent|general
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Assigned to|sreeni
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Reported by|arataj
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;------- Additional comments from &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26282907&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;arataj@...&lt;/a&gt; Tue Nov 10 12:55:22 +0000 2009 -------
&lt;br&gt;What about a way to ensure that, at certain points of the grammar, backing up a
&lt;br&gt;single token is safe and, that a next token exists?
&lt;br&gt;&lt;br&gt;I use the former for error recovery, but I do not know if it won't cause weird
&lt;br&gt;lexer/parser behavior in some cases.
&lt;br&gt;&lt;br&gt;I can ensure the latter by adding artificial choices to the grammar, but I still
&lt;br&gt;do not know if it works in all cases.
&lt;br&gt;&lt;br&gt;Such features might add a bit of flexibility that one has with hand--made parsers.
&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26282907&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;issues-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26282907&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;issues-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-issues-f13494.html&quot; embed=&quot;fixTarget[13494]&quot; target=&quot;_top&quot; &gt;java.net - javacc issues&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-Issue-233--New---Enable-back-up-of-one-token-ensure-next-token-at-certain-grammar-points-tp26282907p26282907.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26273407</id>
	<title>Re: Use Longs for Line Numbers</title>
	<published>2009-11-09T12:46:22Z</published>
	<updated>2009-11-09T12:46:22Z</updated>
	<author>
		<name>Sreenivasa Viswanadha</name>
	</author>
	<content type="html">&lt;br&gt;Yes, we should fix it. But for now, you can simply edit the generated
&lt;br&gt;files - Token.java and SimpleCharStream.java to make the line numbers
&lt;br&gt;long. There might be some issues with error reporting, but it should work.
&lt;br&gt;&lt;br&gt;Tom, I'm not sure I understand what you are saying. The line number stuff
&lt;br&gt;is rather straightforward. It's used purely for reporting. It doesn't
&lt;br&gt;affect the generated code at all.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Oct 6, 2009, at 6:57 PM, Kurt Guenther wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I'm currently parsing an 8 GB file with 241,000,000 lines which is
&lt;br&gt;&amp;gt;&amp;gt; about 12.5% &amp;nbsp;of the 2^31 -1 max value of int. &amp;nbsp; I'm supposed to
&lt;br&gt;&amp;gt;&amp;gt; support files up to 200 GB, so is there a way to generate the token
&lt;br&gt;&amp;gt;&amp;gt; manager with longs instead of ints?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I keep thinking about this one. &amp;nbsp;We can't do just a search and replace
&lt;br&gt;&amp;gt; on the generated code since other stuff uses ints as well - e.g., the
&lt;br&gt;&amp;gt; lexical states are contained in an array of integers. &amp;nbsp;I think it'd
&lt;br&gt;&amp;gt; also affect the parser generating code, since we'd need to make jj_gen
&lt;br&gt;&amp;gt; and jj_ntk and others into longs as well.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; At the end of the day, it might be easier to preprocess your input
&lt;br&gt;&amp;gt; data to chunk it into smaller files.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Yours,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Tom
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ---------------------------------------------------------------------
&lt;br&gt;&amp;gt; To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26273407&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;&amp;gt; For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26273407&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26273407&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26273407&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Use-Longs-for-Line-Numbers-tp25778044p26273407.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26268776</id>
	<title>Re: Dynamic tokenizing</title>
	<published>2009-11-09T07:56:47Z</published>
	<updated>2009-11-09T07:56:47Z</updated>
	<author>
		<name>Bill Fenlason-2</name>
	</author>
	<content type="html">Can't you just use a symbol table? &amp;nbsp;Macro processors often do this kind 
&lt;br&gt;of thing. Another similar example is &amp;quot;typedef&amp;quot; in C. 
&lt;br&gt;&lt;br&gt;I haven't used COMMON_TOKEN_ACTION since I use USER_TOKEN_MANAGER, but I 
&lt;br&gt;would think that you can update a symbol table as the &amp;quot;UserKeywords&amp;quot; 
&lt;br&gt;statement is parsed. &amp;nbsp;Then in the common action code you can check 
&lt;br&gt;generic word tokens in the symbol table, and if found, change the &amp;quot;kind&amp;quot; 
&lt;br&gt;field in the token to a different token type (e.g. USER_KW). &amp;nbsp;The actual 
&lt;br&gt;keyword text is in the &amp;quot;image&amp;quot; field. &amp;nbsp;In the grammar you can specify 
&lt;br&gt;the &amp;lt;USER_KW&amp;gt; &amp;quot;{&amp;quot; ... &amp;quot;}&amp;quot; sequence anywhere it may occur and process it 
&lt;br&gt;as necessary as it is parsed. 
&lt;br&gt;&lt;br&gt;Depending on what you are doing with the content within the braces, you 
&lt;br&gt;may have to do some additional processing in the common action code. &amp;nbsp;If 
&lt;br&gt;you were trying to do text substitution or macro processing (i.e. 
&lt;br&gt;replacing the USER_KW {...} sequence with a different string of tokens 
&lt;br&gt;to be parsed), that would be a whole different ballgame.
&lt;br&gt;&lt;br&gt;Bill
&lt;br&gt;&lt;br&gt;Bachelier, Georges wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi!
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I have been searching a solution for three days to the following problem:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I am building a JavaCC parser for a language having an original feature: the language allows you to define user key words which may be found anywhere in the input file after their declaration.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; User key words are declared with the following statement : UserKeywords &amp;lt;my_user_kw1&amp;gt; ... &amp;lt;my_user_kwn&amp;gt; ;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Once keywords have been declared, they may be used like this :
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;lt;my_user_kw1&amp;gt; {
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;lt;any_sequence_of_characters&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;lt;my_user_kwn&amp;gt; {
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;&amp;lt;any_sequence_of_characters&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The sequences of characters do not matter; we do not use them, but they are surrounded by braces.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I have written a parser production in order to get the user key words and I have tried to play with the tokenizer CommonTokenAction function, but without success.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Could someone help me on this issue, please?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Georges 
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;/div&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26268776&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26268776&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Dynamic-tokenizing-tp26238194p26268776.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26267178</id>
	<title>Re: Use Longs for Line Numbers</title>
	<published>2009-11-09T06:19:53Z</published>
	<updated>2009-11-09T06:19:53Z</updated>
	<author>
		<name>Tom Copeland</name>
	</author>
	<content type="html">&lt;br&gt;On Oct 6, 2009, at 6:57 PM, Kurt Guenther wrote:
&lt;br&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I'm currently parsing an 8 GB file with 241,000,000 lines which is &amp;nbsp;
&lt;br&gt;&amp;gt; about 12.5% &amp;nbsp;of the 2^31 -1 max value of int. &amp;nbsp; I'm supposed to &amp;nbsp;
&lt;br&gt;&amp;gt; support files up to 200 GB, so is there a way to generate the token &amp;nbsp;
&lt;br&gt;&amp;gt; manager with longs instead of ints?
&lt;br&gt;&lt;br&gt;I keep thinking about this one. &amp;nbsp;We can't do just a search and replace &amp;nbsp;
&lt;br&gt;on the generated code since other stuff uses ints as well - e.g., the &amp;nbsp;
&lt;br&gt;lexical states are contained in an array of integers. &amp;nbsp;I think it'd &amp;nbsp;
&lt;br&gt;also affect the parser generating code, since we'd need to make jj_gen &amp;nbsp;
&lt;br&gt;and jj_ntk and others into longs as well.
&lt;br&gt;&lt;br&gt;At the end of the day, it might be easier to preprocess your input &amp;nbsp;
&lt;br&gt;data to chunk it into smaller files.
&lt;br&gt;&lt;br&gt;Yours,
&lt;br&gt;&lt;br&gt;Tom
&lt;br&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26267178&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26267178&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Use-Longs-for-Line-Numbers-tp25778044p26267178.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26267024</id>
	<title>Re: JavaCC Version 5.0 released.</title>
	<published>2009-11-09T06:09:45Z</published>
	<updated>2009-11-09T06:09:45Z</updated>
	<author>
		<name>Tom Copeland</name>
	</author>
	<content type="html">That's an interesting idea.... you might want to file an issue here:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;https://javacc.dev.java.net/servlets/ProjectIssues&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://javacc.dev.java.net/servlets/ProjectIssues&lt;/a&gt;&lt;br&gt;&lt;br&gt;Just to keep it on the radar.
&lt;br&gt;&lt;br&gt;Yours,
&lt;br&gt;&lt;br&gt;tom
&lt;br&gt;&lt;br&gt;On Sep 1, 2009, at 5:02 AM, Artur Rataj wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hello.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; What about a way to ensure that, at certain points of the grammar, &amp;nbsp;
&lt;br&gt;&amp;gt; backing up a single token is safe and, that a next token exists?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I use the former for error recovery, but I do not know if it won't &amp;nbsp;
&lt;br&gt;&amp;gt; cause weird lexer/parser behavior in some cases.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I can ensure the latter by adding artificial choices to the grammar, &amp;nbsp;
&lt;br&gt;&amp;gt; but I still do not know if it works in all cases.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; As of me, such features would add a bit of flexibility that one has &amp;nbsp;
&lt;br&gt;&amp;gt; with hand--made parsers.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; But, perhaps there is virtually no demand for the features among &amp;nbsp;
&lt;br&gt;&amp;gt; JavaCC users.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Best regards,
&lt;br&gt;&amp;gt; Artur
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26267024&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26267024&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/JavaCC-Version-5.0-released.-tp25231778p26267024.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26262700</id>
	<title>RE: Dynamic tokenizing</title>
	<published>2009-11-09T00:25:59Z</published>
	<updated>2009-11-09T00:25:59Z</updated>
	<author>
		<name>Mazas Marc</name>
	</author>
	<content type="html">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML xmlns=&quot;http://www.w3.org/TR/REC-html40&quot; xmlns:o=&quot;urn:schemas-microsoft-com:office:office&quot; xmlns:w=&quot;urn:schemas-microsoft-com:office:word&quot;&gt;&lt;HEAD&gt;
&lt;META http-equiv=Content-Type content=&quot;text/html; charset=iso-8859-1&quot;&gt;
&lt;META content=&quot;MSHTML 6.00.6000.16825&quot; name=GENERATOR&gt;

&lt;/HEAD&gt;
&lt;BODY lang=EN-US vLink=purple link=blue&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=094012108-09112009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I do not believe you can do dynamic tokenizing directly in 
JavaCC.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=094012108-09112009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=094012108-09112009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I would think about &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=094012108-09112009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;writing a first 
parser that recognizes your UserKeywords syntax, and in the corresponding 
production a) generates a second parser (through println() statements, or a 
through a template engine) which will contain all the keywords token 
definitions, b) compile it, and c) execute it on the remaining of the input 
file.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=094012108-09112009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=094012108-09112009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Marc&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
  &lt;DIV class=OutlookMessageHeader lang=fr dir=ltr align=left&gt;
  &lt;HR tabIndex=-1&gt;
  &lt;FONT face=Tahoma size=2&gt;&lt;B&gt;De&amp;nbsp;:&lt;/B&gt; Bachelier, Georges 
  [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26262700&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;georges.bachelier@...&lt;/a&gt;] &lt;BR&gt;&lt;B&gt;Envoyé&amp;nbsp;:&lt;/B&gt; vendredi 6 
  novembre 2009 20:14&lt;BR&gt;&lt;B&gt;À&amp;nbsp;:&lt;/B&gt; 
  &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26262700&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Objet&amp;nbsp;:&lt;/B&gt; [JavaCC] Dynamic 
  tokenizing&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
  &lt;DIV&gt;&lt;/DIV&gt;
  &lt;DIV class=Section1&gt;
  &lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;Hi!&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
  &lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
  &lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;I have been searching a solution 
  for three days to the following problem:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
  &lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
  &lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;I am building a JavaCC parser for 
  a language having an original feature: the language allows you to define user 
  key words which may be found anywhere in the input file after their 
  declaration.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
  &lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
  &lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;User key words are declared with 
  the following statement : UserKeywords &amp;lt;my_user_kw1&amp;gt;  
  &amp;lt;my_user_kwn&amp;gt; ;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
  &lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
  &lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;Once keywords have been declared, 
  they may be used like this :&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
  &lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
  &lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;&amp;lt;my_user_kw1&amp;gt; 
  {&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
  &lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;&amp;nbsp;&amp;nbsp; 
  &amp;lt;any_sequence_of_characters&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
  &lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
  &lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
  &lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;&amp;lt;my_user_kwn&amp;gt; 
  {&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
  &lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;&amp;nbsp;&amp;nbsp; 
  &amp;lt;any_sequence_of_characters&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
  &lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
  &lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
  &lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;The sequences of characters do not 
  matter; we do not use them, but they are surrounded by 
  braces.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
  &lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
  &lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;I have written a parser production 
  in order to get the user key words and I have tried to play with the tokenizer 
  &lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=&quot;Courier New&quot; color=black size=1&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt; BACKGROUND: lime; COLOR: black; FONT-FAMILY: 'Courier New'&quot;&gt;CommonTokenAction&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=&quot;Courier New&quot; color=black size=1&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'&quot;&gt; function, 
  but without success.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
  &lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
  &lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;Could someone help me on this 
  issue, please?&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
  &lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
  &lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial&quot;&gt;Georges 
  &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;
&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Dynamic-tokenizing-tp26238194p26262700.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26251905</id>
	<title>Re: (jjtree) Problem with TRACK_TOKENS - firstToken is  wrong</title>
	<published>2009-11-08T01:08:06Z</published>
	<updated>2009-11-08T01:08:06Z</updated>
	<author>
		<name>Carsten Lohmann</name>
	</author>
	<content type="html">Hi Paul,
&lt;br&gt;&lt;br&gt;I created issue 232 for it
&lt;br&gt;&lt;a href=&quot;https://javacc.dev.java.net/issues/show_bug.cgi?id=232&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://javacc.dev.java.net/issues/show_bug.cgi?id=232&lt;/a&gt;&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;Carsten
&lt;br&gt;&lt;br&gt;Paul Cager wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I have issues concerning TRACK_TOKENS in jjtree as it sets the wrong
&lt;br&gt;&amp;gt;&amp;gt; &amp;quot;firstToken&amp;quot; on some nodes in my case.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; .....
&lt;br&gt;&amp;gt;&amp;gt; Is this all a problem with the grammar or a bug in JJTree?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; TIA
&lt;br&gt;&amp;gt;&amp;gt; Carsten
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Hi Carsten,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; That sounds like a bug in jjtree (I've not checked the details, but using
&lt;br&gt;&amp;gt; getToken(1) doesn't sound right).
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Would you mind creating an issue
&lt;br&gt;&amp;gt; (&lt;a href=&quot;https://javacc.dev.java.net/servlets/ProjectIssues&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://javacc.dev.java.net/servlets/ProjectIssues&lt;/a&gt;) so that we remember
&lt;br&gt;&amp;gt; to fix it in the next release?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Cheers.
&lt;br&gt;&amp;gt; Paul
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; ---------------------------------------------------------------------
&lt;br&gt;&amp;gt; To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26251905&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;&amp;gt; For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26251905&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26251905&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26251905&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%28jjtree%29-Problem-with-TRACK_TOKENS---firstToken-is-wrong-tp25841495p26251905.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26251867</id>
	<title>[Issue 232] New - Problem with TRACK_TOKENS - firstToken is wrong</title>
	<published>2009-11-08T00:59:58Z</published>
	<updated>2009-11-08T00:59:58Z</updated>
	<author>
		<name>carstensis</name>
	</author>
	<content type="html">&lt;a href=&quot;https://javacc.dev.java.net/issues/show_bug.cgi?id=232&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://javacc.dev.java.net/issues/show_bug.cgi?id=232&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Issue #|232
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Summary|Problem with TRACK_TOKENS - firstToken is wrong
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Component|javacc
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Version|5.0
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Platform|All
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; OS/Version|All
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;URL|
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Status|NEW
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Status whiteboard|
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Keywords|
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Resolution|
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Issue type|DEFECT
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Priority|P3
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Subcomponent|jjtree
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Assigned to|sreeni
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Reported by|carstensis
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;------- Additional comments from &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26251867&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;carstensis@...&lt;/a&gt; Sun Nov &amp;nbsp;8 08:59:58 +0000 2009 -------
&lt;br&gt;I have an issue concerning TRACK_TOKENS in jjtree as it sets the wrong
&lt;br&gt;&amp;quot;firstToken&amp;quot; on some nodes in my case.
&lt;br&gt;&lt;br&gt;I'am using the XPath grammar from
&lt;br&gt;&lt;a href=&quot;http://www.w3.org/2007/01/applets/xpathApplet.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.w3.org/2007/01/applets/xpathApplet.html&lt;/a&gt;&lt;br&gt;and added the TRACK_TOKENS option and an UnparseVisitor just as in the
&lt;br&gt;&amp;quot;VTransformer&amp;quot; javacc example.
&lt;br&gt;&lt;br&gt;When I parse the XPath expression &amp;quot;1+2&amp;quot;, I get this result as a dump of the
&lt;br&gt;created SimpleNode:
&lt;br&gt;&lt;br&gt;|XPath2 &amp;nbsp; &amp;nbsp;(firstToken '1', lastToken EOF)
&lt;br&gt;| &amp;nbsp; XPath &amp;nbsp; &amp;nbsp;(firstToken '1', lastToken '2')
&lt;br&gt;| &amp;nbsp; &amp;nbsp; &amp;nbsp;Expr &amp;nbsp; &amp;nbsp;(firstToken '1', lastToken '2')
&lt;br&gt;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AdditiveExpr &amp;nbsp; &amp;nbsp;(firstToken EOF, lastToken '2') +
&lt;br&gt;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;IntegerLiteral &amp;nbsp; &amp;nbsp;(firstToken '+', lastToken '1') 1
&lt;br&gt;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;IntegerLiteral &amp;nbsp; &amp;nbsp;(firstToken EOF, lastToken '2') 2
&lt;br&gt;&lt;br&gt;Two things are wrong here:
&lt;br&gt;# firstToken on Literals is wrong (should be the same as lastToken)
&lt;br&gt;# firstToken on &amp;quot;Expr&amp;quot; subnode is wrong (ie. &amp;quot;AdditiveExpr&amp;quot; should have '1' as
&lt;br&gt;firstToken)
&lt;br&gt;&lt;br&gt;When parsing an &amp;quot;Expr&amp;quot; (deciding if it's a &amp;quot;AdditiveExpr&amp;quot; or
&lt;br&gt;&amp;quot;MultiplicativeExpr&amp;quot;, etc.), the parser creates the corresponding &amp;quot;AdditiveExpr&amp;quot;
&lt;br&gt;node only when it has already reached the end of the expression. And at that point
&lt;br&gt;jjtn001.jjtSetFirstToken(getToken(1));
&lt;br&gt;is already the token *after the end* of the &amp;quot;AdditiveExpr&amp;quot;.
&lt;br&gt;&lt;br&gt;&lt;br&gt;When looking at the code, I see that 2 &amp;quot;AdditiveExpr&amp;quot; nodes are created, the
&lt;br&gt;first has the right firstToken and the second (the one that survives) has the
&lt;br&gt;wrong one.
&lt;br&gt;----------------------------
&lt;br&gt;&amp;nbsp; final public void AdditiveExpr() throws ParseException {
&lt;br&gt;&amp;nbsp;/*@bgen(jjtree) #AdditiveExpr(&amp;gt; 1) */
&lt;br&gt;// *1st*
&lt;br&gt;&amp;nbsp; SimpleNode jjtn000 = new SimpleNode(this, JJTADDITIVEEXPR);
&lt;br&gt;&amp;nbsp; boolean jjtc000 = true;
&lt;br&gt;&amp;nbsp; jjtree.openNodeScope(jjtn000);
&lt;br&gt;&amp;nbsp; jjtn000.jjtSetFirstToken(getToken(1));
&lt;br&gt;&amp;nbsp; &amp;nbsp; try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; MultiplicativeExpr();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; label_6:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; while (true) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case Minus:
&lt;br&gt;[..]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case Plus:
&lt;br&gt;[..]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; MultiplicativeExpr();
&lt;br&gt;// *2nd*
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SimpleNode jjtn001 = new SimpleNode(this, JJTADDITIVEEXPR);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; boolean jjtc001 = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; jjtree.openNodeScope(jjtn001);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;// =&amp;gt; *wrong token here*, should use the token &amp;quot;jjtn000.jjtgetFirstToken()&amp;quot;
&lt;br&gt;instead of &amp;quot;getToken(1)&amp;quot;???
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; jjtn001.jjtSetFirstToken(getToken(1));
&lt;br&gt;----------------------------
&lt;br&gt;&lt;br&gt;Here's how I changed the created XPath parser code as a workaround:
&lt;br&gt;- for terminal symbols I replaced 
&lt;br&gt;jjtn00x.jjtSetFirstToken(getToken(1));
&lt;br&gt;with
&lt;br&gt;jjtn00x.jjtSetFirstToken(getToken(0));
&lt;br&gt;(the last token was always correct, and for a terminal symbol lastToken ==
&lt;br&gt;firstToken)
&lt;br&gt;&lt;br&gt;- replaced the remaining occurences of jjtn00x.jjtSetFirstToken(getToken(1))
&lt;br&gt;with 
&lt;br&gt;jjtn00x.jjtSetFirstToken(jjtn000FirstToken);
&lt;br&gt;and put 
&lt;br&gt;Token jjtn000FirstToken = getToken(1);
&lt;br&gt;at the beginning of the method like this:
&lt;br&gt;----
&lt;br&gt;&amp;nbsp; final public void RelativePathExpr() throws ParseException {
&lt;br&gt;&amp;nbsp; &amp;nbsp; StepExpr();
&lt;br&gt;&amp;nbsp; &amp;nbsp; Token jjtn000FirstToken = getToken(1);
&lt;br&gt;&amp;nbsp; &amp;nbsp; label_11:
&lt;br&gt;&amp;nbsp; &amp;nbsp; while (true) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
&lt;br&gt;----
&lt;br&gt;According to my tests, this fixes the problem for the XPath parser, but of
&lt;br&gt;course I'd be happy to abandon this workaround once the issue has been solved in
&lt;br&gt;JJTree :)
&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26251867&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;issues-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26251867&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;issues-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-issues-f13494.html&quot; embed=&quot;fixTarget[13494]&quot; target=&quot;_top&quot; &gt;java.net - javacc issues&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-Issue-232--New---Problem-with-TRACK_TOKENS---firstToken-is-wrong-tp26251867p26251867.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26238408</id>
	<title>Re: Dynamic tokenizing</title>
	<published>2009-11-06T12:55:05Z</published>
	<updated>2009-11-06T12:55:05Z</updated>
	<author>
		<name>Farrukh Najmi</name>
	</author>
	<content type="html">&lt;br&gt;This sounds doable. You can probably use LOOKAHEAD with a function call 
&lt;br&gt;as parameter instead of a constant value.
&lt;br&gt;See an example here:
&lt;br&gt;&lt;br&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/Problem:-semantic-lookahead-calling-boolean-functions-td23087841.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/Problem:-semantic-lookahead-calling-boolean-functions-td23087841.html&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;Bachelier, Georges wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Hi!
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I have been searching a solution for three days to the following problem:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I am building a JavaCC parser for a language having an original 
&lt;br&gt;&amp;gt; feature: the language allows you to define user key words which may be 
&lt;br&gt;&amp;gt; found anywhere in the input file after their declaration.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; User key words are declared with the following statement : 
&lt;br&gt;&amp;gt; UserKeywords &amp;lt;my_user_kw1&amp;gt; … &amp;lt;my_user_kwn&amp;gt; ;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Once keywords have been declared, they may be used like this :
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;lt;my_user_kw1&amp;gt; {
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;lt;any_sequence_of_characters&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;lt;my_user_kwn&amp;gt; {
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;lt;any_sequence_of_characters&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The sequences of characters do not matter; we do not use them, but 
&lt;br&gt;&amp;gt; they are surrounded by braces.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I have written a parser production in order to get the user key words 
&lt;br&gt;&amp;gt; and I have tried to play with the tokenizer CommonTokenAction 
&lt;br&gt;&amp;gt; function, but without success.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Could someone help me on this issue, please?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Georges
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Regards,
&lt;br&gt;Farrukh
&lt;br&gt;&lt;br&gt;Web: &lt;a href=&quot;http://www.wellfleetsoftware.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.wellfleetsoftware.com&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26238408&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26238408&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Dynamic-tokenizing-tp26238194p26238408.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26238194</id>
	<title>Dynamic tokenizing</title>
	<published>2009-11-06T11:13:50Z</published>
	<updated>2009-11-06T11:13:50Z</updated>
	<author>
		<name>Bachelier, Georges</name>
	</author>
	<content type="html">&lt;html xmlns:o=&quot;urn:schemas-microsoft-com:office:office&quot; xmlns:w=&quot;urn:schemas-microsoft-com:office:word&quot; xmlns=&quot;http://www.w3.org/TR/REC-html40&quot;&gt;

&lt;head&gt;
&lt;meta http-equiv=Content-Type content=&quot;text/html; charset=us-ascii&quot;&gt;
&lt;meta name=Generator content=&quot;Microsoft Word 11 (filtered medium)&quot;&gt;


&lt;/head&gt;

&lt;body lang=EN-US link=blue vlink=purple&gt;

&lt;div class=Section1&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;Hi!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;I have been searching a solution for three days to the
following problem:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;I am building a JavaCC parser for a language having an
original feature: the language allows you to define user key words which may be
found anywhere in the input file after their declaration.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;User key words are declared with the following statement :
UserKeywords &amp;lt;my_user_kw1&amp;gt; &amp;#8230; &amp;lt;my_user_kwn&amp;gt; ;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;Once keywords have been declared, they may be used like this
:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;&amp;lt;my_user_kw1&amp;gt; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;&amp;nbsp;&amp;nbsp; &amp;lt;any_sequence_of_characters&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;&amp;lt;my_user_kwn&amp;gt; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;&amp;nbsp;&amp;nbsp; &amp;lt;any_sequence_of_characters&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;The sequences of characters do not matter; we do not use
them, but they are surrounded by braces.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;I have written a parser production in order to get the user
key words and I have tried to play with the tokenizer &lt;/span&gt;&lt;/font&gt;&lt;font size=1 color=black face=&quot;Courier New&quot;&gt;&lt;span style='font-size:9.0pt;font-family:
&quot;Courier New&quot;;color:black;background:lime'&gt;CommonTokenAction&lt;/span&gt;&lt;/font&gt;&lt;font size=1 color=black face=&quot;Courier New&quot;&gt;&lt;span style='font-size:9.0pt;font-family:
&quot;Courier New&quot;;color:black'&gt; function, but without success.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;Could someone help me on this issue, please?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;Georges &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;/body&gt;

&lt;/html&gt;
&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/java.net---javacc-users-f13495.html&quot; embed=&quot;fixTarget[13495]&quot; target=&quot;_top&quot; &gt;java.net - javacc users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Dynamic-tokenizing-tp26238194p26238194.html" />
</entry>

</feed>
