Automated merge with http://hg.netbeans.org/main/contrib
authorMarek Fukala <mfukala@netbeans.org>
Fri, 11 Jan 2013 15:06:14 +0100
changeset 179153cdba0929c4e
parent 17913 fd77892bda2b
parent 17914 c0214d6fb395
child 17917 41056598da26
child 17918 4b94799b0c17
Automated merge with http://hg.netbeans.org/main/contrib
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/o.n.antlr.editor/build.xml	Fri Jan 11 15:06:14 2013 +0100
     1.3 @@ -0,0 +1,23 @@
     1.4 +<?xml version="1.0" encoding="UTF-8"?>
     1.5 +<project basedir="." default="netbeans" name="contrib/o.n.antlr.editor">
     1.6 +    <description>Builds, tests, and runs the project org.netbeans.antlr.editor</description>
     1.7 +    <import file="../../nbbuild/templates/projectized.xml"/>
     1.8 +    
     1.9 +     <target name="generate-antlr-parser">
    1.10 +        <fail unless="antlr.jar">You must set antlr.jar property pointing to the antlr-x.x-complete.jar</fail>
    1.11 +        
    1.12 +        <java classname="org.antlr.Tool" fork="true" failonerror="true">
    1.13 +            <!-- use -debug option so the generated parser allows to register an DebugEventListener and hence allow to build a parse tree -->
    1.14 +            <arg value="-debug"/> 
    1.15 +            <arg value="-verbose"/>
    1.16 +            <arg value="-o"/>
    1.17 +            <arg path="src/org/netbeans/modules/antlr/editor/gen"/>
    1.18 +            <arg path="src/org/netbeans/modules/antlr/editor/ANTLRv3.g"/>                
    1.19 +            <classpath>
    1.20 +                <pathelement path="${classpath}"/>
    1.21 +                <pathelement location="${antlr.jar}"/>
    1.22 +            </classpath>
    1.23 +        </java>
    1.24 +    </target>
    1.25 +    
    1.26 +</project>
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/o.n.antlr.editor/manifest.mf	Fri Jan 11 15:06:14 2013 +0100
     2.3 @@ -0,0 +1,6 @@
     2.4 +Manifest-Version: 1.0
     2.5 +OpenIDE-Module: org.netbeans.antlr.editor
     2.6 +OpenIDE-Module-Layer: org/netbeans/antlr/editor/layer.xml
     2.7 +OpenIDE-Module-Localizing-Bundle: org/netbeans/antlr/editor/Bundle.properties
     2.8 +OpenIDE-Module-Specification-Version: 0.1
     2.9 +
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/o.n.antlr.editor/nbproject/project.properties	Fri Jan 11 15:06:14 2013 +0100
     3.3 @@ -0,0 +1,2 @@
     3.4 +javac.source=1.6
     3.5 +javac.compilerargs=-Xlint -Xlint:-serial
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/o.n.antlr.editor/nbproject/project.xml	Fri Jan 11 15:06:14 2013 +0100
     4.3 @@ -0,0 +1,128 @@
     4.4 +<?xml version="1.0" encoding="UTF-8"?>
     4.5 +<project xmlns="http://www.netbeans.org/ns/project/1">
     4.6 +    <type>org.netbeans.modules.apisupport.project</type>
     4.7 +    <configuration>
     4.8 +        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
     4.9 +            <code-name-base>org.netbeans.antlr.editor</code-name-base>
    4.10 +            <module-dependencies>
    4.11 +                <dependency>
    4.12 +                    <code-name-base>org.netbeans.core.multiview</code-name-base>
    4.13 +                    <build-prerequisite/>
    4.14 +                    <compile-dependency/>
    4.15 +                    <run-dependency>
    4.16 +                        <release-version>1</release-version>
    4.17 +                        <specification-version>1.32</specification-version>
    4.18 +                    </run-dependency>
    4.19 +                </dependency>
    4.20 +                <dependency>
    4.21 +                    <code-name-base>org.netbeans.libs.antlr3.runtime</code-name-base>
    4.22 +                    <build-prerequisite/>
    4.23 +                    <compile-dependency/>
    4.24 +                    <run-dependency>
    4.25 +                        <specification-version>1.12</specification-version>
    4.26 +                    </run-dependency>
    4.27 +                </dependency>
    4.28 +                <dependency>
    4.29 +                    <code-name-base>org.netbeans.modules.csl.api</code-name-base>
    4.30 +                    <build-prerequisite/>
    4.31 +                    <compile-dependency/>
    4.32 +                    <run-dependency>
    4.33 +                        <release-version>2</release-version>
    4.34 +                        <specification-version>2.33</specification-version>
    4.35 +                    </run-dependency>
    4.36 +                </dependency>
    4.37 +                <dependency>
    4.38 +                    <code-name-base>org.netbeans.modules.lexer</code-name-base>
    4.39 +                    <build-prerequisite/>
    4.40 +                    <compile-dependency/>
    4.41 +                    <run-dependency>
    4.42 +                        <release-version>2</release-version>
    4.43 +                        <specification-version>1.49</specification-version>
    4.44 +                    </run-dependency>
    4.45 +                </dependency>
    4.46 +                <dependency>
    4.47 +                    <code-name-base>org.netbeans.modules.parsing.api</code-name-base>
    4.48 +                    <build-prerequisite/>
    4.49 +                    <compile-dependency/>
    4.50 +                    <run-dependency>
    4.51 +                        <release-version>1</release-version>
    4.52 +                        <specification-version>1.62</specification-version>
    4.53 +                    </run-dependency>
    4.54 +                </dependency>
    4.55 +                <dependency>
    4.56 +                    <code-name-base>org.openide.awt</code-name-base>
    4.57 +                    <build-prerequisite/>
    4.58 +                    <compile-dependency/>
    4.59 +                    <run-dependency>
    4.60 +                        <specification-version>7.55</specification-version>
    4.61 +                    </run-dependency>
    4.62 +                </dependency>
    4.63 +                <dependency>
    4.64 +                    <code-name-base>org.openide.dialogs</code-name-base>
    4.65 +                    <build-prerequisite/>
    4.66 +                    <compile-dependency/>
    4.67 +                    <run-dependency>
    4.68 +                        <specification-version>7.28</specification-version>
    4.69 +                    </run-dependency>
    4.70 +                </dependency>
    4.71 +                <dependency>
    4.72 +                    <code-name-base>org.openide.filesystems</code-name-base>
    4.73 +                    <build-prerequisite/>
    4.74 +                    <compile-dependency/>
    4.75 +                    <run-dependency>
    4.76 +                        <specification-version>8.5</specification-version>
    4.77 +                    </run-dependency>
    4.78 +                </dependency>
    4.79 +                <dependency>
    4.80 +                    <code-name-base>org.openide.loaders</code-name-base>
    4.81 +                    <build-prerequisite/>
    4.82 +                    <compile-dependency/>
    4.83 +                    <run-dependency>
    4.84 +                        <specification-version>7.44</specification-version>
    4.85 +                    </run-dependency>
    4.86 +                </dependency>
    4.87 +                <dependency>
    4.88 +                    <code-name-base>org.openide.nodes</code-name-base>
    4.89 +                    <build-prerequisite/>
    4.90 +                    <compile-dependency/>
    4.91 +                    <run-dependency>
    4.92 +                        <specification-version>7.33</specification-version>
    4.93 +                    </run-dependency>
    4.94 +                </dependency>
    4.95 +                <dependency>
    4.96 +                    <code-name-base>org.openide.text</code-name-base>
    4.97 +                    <build-prerequisite/>
    4.98 +                    <compile-dependency/>
    4.99 +                    <run-dependency>
   4.100 +                        <specification-version>6.54</specification-version>
   4.101 +                    </run-dependency>
   4.102 +                </dependency>
   4.103 +                <dependency>
   4.104 +                    <code-name-base>org.openide.util</code-name-base>
   4.105 +                    <build-prerequisite/>
   4.106 +                    <compile-dependency/>
   4.107 +                    <run-dependency>
   4.108 +                        <specification-version>8.29</specification-version>
   4.109 +                    </run-dependency>
   4.110 +                </dependency>
   4.111 +                <dependency>
   4.112 +                    <code-name-base>org.openide.util.lookup</code-name-base>
   4.113 +                    <build-prerequisite/>
   4.114 +                    <compile-dependency/>
   4.115 +                    <run-dependency>
   4.116 +                        <specification-version>8.19</specification-version>
   4.117 +                    </run-dependency>
   4.118 +                </dependency>
   4.119 +                <dependency>
   4.120 +                    <code-name-base>org.openide.windows</code-name-base>
   4.121 +                    <build-prerequisite/>
   4.122 +                    <compile-dependency/>
   4.123 +                    <run-dependency>
   4.124 +                        <specification-version>6.60</specification-version>
   4.125 +                    </run-dependency>
   4.126 +                </dependency>
   4.127 +            </module-dependencies>
   4.128 +            <public-packages/>
   4.129 +        </data>
   4.130 +    </configuration>
   4.131 +</project>
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g	Fri Jan 11 15:06:14 2013 +0100
     5.3 @@ -0,0 +1,610 @@
     5.4 +/*
     5.5 + [The "BSD licence"]
     5.6 + Copyright (c) 2005-2007 Terence Parr
     5.7 + All rights reserved.
     5.8 +
     5.9 + Redistribution and use in source and binary forms, with or without
    5.10 + modification, are permitted provided that the following conditions
    5.11 + are met:
    5.12 + 1. Redistributions of source code must retain the above copyright
    5.13 +    notice, this list of conditions and the following disclaimer.
    5.14 + 2. Redistributions in binary form must reproduce the above copyright
    5.15 +    notice, this list of conditions and the following disclaimer in the
    5.16 +    documentation and/or other materials provided with the distribution.
    5.17 + 3. The name of the author may not be used to endorse or promote products
    5.18 +    derived from this software without specific prior written permission.
    5.19 +
    5.20 + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
    5.21 + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
    5.22 + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
    5.23 + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
    5.24 + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
    5.25 + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    5.26 + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    5.27 + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    5.28 + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
    5.29 + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    5.30 +*/
    5.31 +
    5.32 +/** ANTLR v3 grammar written in ANTLR v3 with AST construction */
    5.33 +grammar ANTLRv3;
    5.34 +
    5.35 +
    5.36 +options {
    5.37 +	output=AST;
    5.38 +	ASTLabelType=CommonTree;
    5.39 +}
    5.40 +
    5.41 +tokens {
    5.42 +	DOC_COMMENT;
    5.43 +	PARSER;	
    5.44 +    LEXER;
    5.45 +    RULE;
    5.46 +    BLOCK;
    5.47 +    OPTIONAL;
    5.48 +    CLOSURE;
    5.49 +    POSITIVE_CLOSURE;
    5.50 +    SYNPRED;
    5.51 +    RANGE;
    5.52 +    CHAR_RANGE;
    5.53 +    EPSILON;
    5.54 +    ALT;
    5.55 +    EOR;
    5.56 +    EOB;
    5.57 +    EOA; // end of alt
    5.58 +    ID;
    5.59 +    ARG;
    5.60 +    ARGLIST;
    5.61 +    RET;
    5.62 +    LEXER_GRAMMAR;
    5.63 +    PARSER_GRAMMAR;
    5.64 +    TREE_GRAMMAR;
    5.65 +    COMBINED_GRAMMAR;
    5.66 +    INITACTION;
    5.67 +    LABEL; // $x used in rewrite rules
    5.68 +    TEMPLATE;
    5.69 +    SCOPE='scope';
    5.70 +    SEMPRED;
    5.71 +    GATED_SEMPRED; // {p}? =>
    5.72 +    SYN_SEMPRED; // (...) =>   it's a manually-specified synpred converted to sempred
    5.73 +    BACKTRACK_SEMPRED; // auto backtracking mode syn pred converted to sempred
    5.74 +    FRAGMENT='fragment';
    5.75 +    TREE_BEGIN='^(';
    5.76 +    ROOT='^';
    5.77 +    BANG='!';
    5.78 +    RANGE='..';
    5.79 +    REWRITE='->';
    5.80 +}
    5.81 +
    5.82 +@lexer::header {
    5.83 +package org.netbeans.antlr.editor.gen;
    5.84 +}
    5.85 +@header {
    5.86 +package org.netbeans.antlr.editor.gen;
    5.87 +}
    5.88 +@members {
    5.89 +	int gtype;
    5.90 +}
    5.91 +
    5.92 +grammarDef
    5.93 +    :   DOC_COMMENT?
    5.94 +    	(	'lexer'  {gtype=LEXER_GRAMMAR;}    // pure lexer
    5.95 +    	|   'parser' {gtype=PARSER_GRAMMAR;}   // pure parser
    5.96 +    	|   'tree'   {gtype=TREE_GRAMMAR;}     // a tree parser
    5.97 +    	|		     {gtype=COMBINED_GRAMMAR;} // merged parser/lexer
    5.98 +    	)
    5.99 +    	g='grammar' id ';' optionsSpec? tokensSpec? attrScope* action*
   5.100 +    	rule+
   5.101 +    	EOF
   5.102 +    	-> ^( {adaptor.create(gtype,$g)}
   5.103 +    		  id DOC_COMMENT? optionsSpec? tokensSpec? attrScope* action* rule+
   5.104 +    		)
   5.105 +    ;
   5.106 +
   5.107 +tokensSpec
   5.108 +	:	TOKENS tokenSpec+ '}' -> ^(TOKENS tokenSpec+)
   5.109 +	;
   5.110 +
   5.111 +tokenSpec
   5.112 +	:	TOKEN_REF
   5.113 +		(	'=' (lit=STRING_LITERAL|lit=CHAR_LITERAL)	-> ^('=' TOKEN_REF $lit)
   5.114 +		|												-> TOKEN_REF
   5.115 +		)
   5.116 +		';'
   5.117 +	;
   5.118 +
   5.119 +attrScope
   5.120 +	:	'scope' id ACTION -> ^('scope' id ACTION)
   5.121 +	;
   5.122 +
   5.123 +/** Match stuff like @parser::members {int i;} */
   5.124 +action
   5.125 +	:	'@' (actionScopeName '::')? id ACTION -> ^('@' actionScopeName? id ACTION)
   5.126 +	;
   5.127 +
   5.128 +/** Sometimes the scope names will collide with keywords; allow them as
   5.129 + *  ids for action scopes.
   5.130 + */
   5.131 +actionScopeName
   5.132 +	:	id
   5.133 +	|	l='lexer'	-> ID[$l]
   5.134 +    |   p='parser'	-> ID[$p]
   5.135 +	;
   5.136 +
   5.137 +optionsSpec
   5.138 +	:	OPTIONS (option ';')+ '}' -> ^(OPTIONS option+)
   5.139 +	;
   5.140 +
   5.141 +option
   5.142 +    :   id '=' optionValue -> ^('=' id optionValue)
   5.143 + 	;
   5.144 + 	
   5.145 +optionValue
   5.146 +    :   id
   5.147 +    |   STRING_LITERAL
   5.148 +    |   CHAR_LITERAL
   5.149 +    |   INT
   5.150 +    |	s='*' -> STRING_LITERAL[$s]  // used for k=*
   5.151 +    ;
   5.152 +
   5.153 +rule
   5.154 +scope {
   5.155 +	String name;
   5.156 +}
   5.157 +	:	DOC_COMMENT?
   5.158 +		( modifier=('protected'|'public'|'private'|'fragment') )?
   5.159 +		id {$rule::name = $id.text;}
   5.160 +		'!'?
   5.161 +		( arg=ARG_ACTION )?
   5.162 +		( 'returns' rt=ARG_ACTION  )?
   5.163 +		throwsSpec? optionsSpec? ruleScopeSpec? ruleAction*
   5.164 +		':'	altList	';'
   5.165 +		exceptionGroup?
   5.166 +	    -> ^( RULE id {modifier!=null?adaptor.create(modifier):null} ^(ARG $arg)? ^(RET $rt)?
   5.167 +	    	  optionsSpec? ruleScopeSpec? ruleAction*
   5.168 +	    	  altList
   5.169 +	    	  exceptionGroup?
   5.170 +	    	  EOR["EOR"]
   5.171 +	    	)
   5.172 +	;
   5.173 +
   5.174 +/** Match stuff like @init {int i;} */
   5.175 +ruleAction
   5.176 +	:	'@' id ACTION -> ^('@' id ACTION)
   5.177 +	;
   5.178 +
   5.179 +throwsSpec
   5.180 +	:	'throws' id ( ',' id )* -> ^('throws' id+)
   5.181 +	;
   5.182 +
   5.183 +ruleScopeSpec
   5.184 +	:	'scope' ACTION -> ^('scope' ACTION)
   5.185 +	|	'scope' id (',' id)* ';' -> ^('scope' id+)
   5.186 +	|	'scope' ACTION
   5.187 +		'scope' id (',' id)* ';'
   5.188 +		-> ^('scope' ACTION id+ )
   5.189 +	;
   5.190 +
   5.191 +block
   5.192 +    :   lp='('
   5.193 +		( (opts=optionsSpec)? ':' )?
   5.194 +		a1=alternative rewrite ( '|' a2=alternative rewrite )*
   5.195 +        rp=')'
   5.196 +        -> ^( BLOCK[$lp,"BLOCK"] optionsSpec? (alternative rewrite?)+ EOB[$rp,"EOB"] )
   5.197 +    ;
   5.198 +
   5.199 +altList
   5.200 +@init {
   5.201 +	// must create root manually as it's used by invoked rules in real antlr tool.
   5.202 +	// leave here to demonstrate use of {...} in rewrite rule
   5.203 +	// it's really BLOCK[firstToken,"BLOCK"]; set line/col to previous ( or : token.
   5.204 +    CommonTree blkRoot = (CommonTree)adaptor.create(BLOCK,input.LT(-1),"BLOCK");
   5.205 +}
   5.206 +    :   a1=alternative rewrite ( '|' a2=alternative rewrite )*
   5.207 +		-> ^( {blkRoot} (alternative rewrite?)+ EOB["EOB"] )
   5.208 +    ;
   5.209 +
   5.210 +alternative
   5.211 +@init {
   5.212 +	Token firstToken = input.LT(1);
   5.213 +	Token prevToken = input.LT(-1); // either : or | I think
   5.214 +}
   5.215 +    :   element+ -> ^(ALT[firstToken,"ALT"] element+ EOA["EOA"])
   5.216 +    |   -> ^(ALT[prevToken,"ALT"] EPSILON[prevToken,"EPSILON"] EOA["EOA"])
   5.217 +    ;
   5.218 +
   5.219 +exceptionGroup
   5.220 +	:	( exceptionHandler )+ ( finallyClause )?
   5.221 +	|	finallyClause
   5.222 +    ;
   5.223 +
   5.224 +exceptionHandler
   5.225 +    :    'catch' ARG_ACTION ACTION -> ^('catch' ARG_ACTION ACTION)
   5.226 +    ;
   5.227 +
   5.228 +finallyClause
   5.229 +    :    'finally' ACTION -> ^('finally' ACTION)
   5.230 +    ;
   5.231 +
   5.232 +element
   5.233 +	:	elementNoOptionSpec
   5.234 +	;
   5.235 +
   5.236 +elementNoOptionSpec
   5.237 +	:	id (labelOp='='|labelOp='+=') atom
   5.238 +		(	ebnfSuffix	-> ^( ebnfSuffix ^(BLOCK["BLOCK"] ^(ALT["ALT"] ^($labelOp id atom) EOA["EOA"]) EOB["EOB"]))
   5.239 +		|				-> ^($labelOp id atom)
   5.240 +		)
   5.241 +	|	id (labelOp='='|labelOp='+=') block
   5.242 +		(	ebnfSuffix	-> ^( ebnfSuffix ^(BLOCK["BLOCK"] ^(ALT["ALT"] ^($labelOp id block) EOA["EOA"]) EOB["EOB"]))
   5.243 +		|				-> ^($labelOp id block)
   5.244 +		)
   5.245 +	|	atom
   5.246 +		(	ebnfSuffix	-> ^( ebnfSuffix ^(BLOCK["BLOCK"] ^(ALT["ALT"] atom EOA["EOA"]) EOB["EOB"]) )
   5.247 +		|				-> atom
   5.248 +		)
   5.249 +	|	ebnf
   5.250 +	|   ACTION
   5.251 +	|   SEMPRED ( '=>' -> GATED_SEMPRED | -> SEMPRED )
   5.252 +	|   treeSpec
   5.253 +		(	ebnfSuffix	-> ^( ebnfSuffix ^(BLOCK["BLOCK"] ^(ALT["ALT"] treeSpec EOA["EOA"]) EOB["EOB"]) )
   5.254 +		|				-> treeSpec
   5.255 +		)
   5.256 +	;
   5.257 +
   5.258 +atom:   range ( (op='^'|op='!') -> ^($op range) | -> range )
   5.259 +    |   terminal
   5.260 +    |	notSet ( (op='^'|op='!') -> ^($op notSet) | -> notSet )
   5.261 +    |   RULE_REF ( arg=ARG_ACTION )? ( (op='^'|op='!') )?
   5.262 +    	-> {$arg!=null&&op!=null}?	^($op RULE_REF $arg)
   5.263 +    	-> {$arg!=null}?			^(RULE_REF $arg)
   5.264 +    	-> {$op!=null}?				^($op RULE_REF)
   5.265 +    	-> RULE_REF
   5.266 +    ;
   5.267 +
   5.268 +notSet
   5.269 +	:	'~'
   5.270 +		(	notTerminal	-> ^('~' notTerminal)
   5.271 +		|	block		-> ^('~' block)
   5.272 +		)
   5.273 +	;
   5.274 +
   5.275 +treeSpec
   5.276 +	:	'^(' element ( element )+ ')' -> ^(TREE_BEGIN element+)
   5.277 +	;
   5.278 +
   5.279 +/** Matches ENBF blocks (and token sets via block rule) */
   5.280 +ebnf
   5.281 +@init {
   5.282 +    Token firstToken = input.LT(1);
   5.283 +}
   5.284 +@after {
   5.285 +	$ebnf.tree.getToken().setLine(firstToken.getLine());
   5.286 +	$ebnf.tree.getToken().setCharPositionInLine(firstToken.getCharPositionInLine());
   5.287 +}
   5.288 +	:	block
   5.289 +		(	op='?'	-> ^(OPTIONAL[op] block)
   5.290 +		|	op='*'	-> ^(CLOSURE[op] block)
   5.291 +		|	op='+'	-> ^(POSITIVE_CLOSURE[op] block)
   5.292 +		|   '=>'	// syntactic predicate
   5.293 +					-> {gtype==COMBINED_GRAMMAR &&
   5.294 +					    Character.isUpperCase($rule::name.charAt(0))}?
   5.295 +					   // if lexer rule in combined, leave as pred for lexer
   5.296 +					   ^(SYNPRED["=>"] block)
   5.297 +					// in real antlr tool, text for SYN_SEMPRED is predname
   5.298 +					-> SYN_SEMPRED
   5.299 +        |			-> block
   5.300 +		)
   5.301 +	;
   5.302 +
   5.303 +range!
   5.304 +	:	c1=CHAR_LITERAL RANGE c2=CHAR_LITERAL -> ^(CHAR_RANGE[$c1,".."] $c1 $c2)
   5.305 +	;
   5.306 +
   5.307 +terminal
   5.308 +    :   (	CHAR_LITERAL				-> CHAR_LITERAL
   5.309 +    		// Args are only valid for lexer rules
   5.310 +		|   TOKEN_REF
   5.311 +			( ARG_ACTION				-> ^(TOKEN_REF ARG_ACTION)
   5.312 +			|							-> TOKEN_REF
   5.313 +			)
   5.314 +		|   STRING_LITERAL				-> STRING_LITERAL
   5.315 +		|   '.'							-> '.'
   5.316 +		)	
   5.317 +		(	'^'							-> ^('^' $terminal)
   5.318 +		|	'!' 						-> ^('!' $terminal)
   5.319 +		)?
   5.320 +	;
   5.321 +
   5.322 +notTerminal
   5.323 +	:   CHAR_LITERAL
   5.324 +	|	TOKEN_REF
   5.325 +	|	STRING_LITERAL
   5.326 +	;
   5.327 +	
   5.328 +ebnfSuffix
   5.329 +@init {
   5.330 +	Token op = input.LT(1);
   5.331 +}
   5.332 +	:	'?'	-> OPTIONAL[op]
   5.333 +  	|	'*' -> CLOSURE[op]
   5.334 +   	|	'+' -> POSITIVE_CLOSURE[op]
   5.335 +	;
   5.336 +	
   5.337 +
   5.338 +
   5.339 +// R E W R I T E  S Y N T A X
   5.340 +
   5.341 +rewrite
   5.342 +@init {
   5.343 +	Token firstToken = input.LT(1);
   5.344 +}
   5.345 +	:	(rew+='->' preds+=SEMPRED predicated+=rewrite_alternative)*
   5.346 +		rew2='->' last=rewrite_alternative
   5.347 +        -> ^($rew $preds $predicated)* ^($rew2 $last)
   5.348 +	|
   5.349 +	;
   5.350 +
   5.351 +rewrite_alternative
   5.352 +options {backtrack=true;}
   5.353 +	:	rewrite_template
   5.354 +	|	rewrite_tree_alternative
   5.355 +   	|   /* empty rewrite */ -> ^(ALT["ALT"] EPSILON["EPSILON"] EOA["EOA"])
   5.356 +	;
   5.357 +	
   5.358 +rewrite_tree_block
   5.359 +    :   lp='(' rewrite_tree_alternative ')'
   5.360 +    	-> ^(BLOCK[$lp,"BLOCK"] rewrite_tree_alternative EOB[$lp,"EOB"])
   5.361 +    ;
   5.362 +
   5.363 +rewrite_tree_alternative
   5.364 +    :	rewrite_tree_element+ -> ^(ALT["ALT"] rewrite_tree_element+ EOA["EOA"])
   5.365 +    ;
   5.366 +
   5.367 +rewrite_tree_element
   5.368 +	:	rewrite_tree_atom
   5.369 +	|	rewrite_tree_atom ebnfSuffix
   5.370 +		-> ^( ebnfSuffix ^(BLOCK["BLOCK"] ^(ALT["ALT"] rewrite_tree_atom EOA["EOA"]) EOB["EOB"]))
   5.371 +	|   rewrite_tree
   5.372 +		(	ebnfSuffix
   5.373 +			-> ^(ebnfSuffix ^(BLOCK["BLOCK"] ^(ALT["ALT"] rewrite_tree EOA["EOA"]) EOB["EOB"]))
   5.374 +		|	-> rewrite_tree
   5.375 +		)
   5.376 +	|   rewrite_tree_ebnf
   5.377 +	;
   5.378 +
   5.379 +rewrite_tree_atom
   5.380 +    :   CHAR_LITERAL
   5.381 +	|   TOKEN_REF ARG_ACTION? -> ^(TOKEN_REF ARG_ACTION?) // for imaginary nodes
   5.382 +    |   RULE_REF
   5.383 +	|   STRING_LITERAL
   5.384 +	|   d='$' id -> LABEL[$d,$id.text] // reference to a label in a rewrite rule
   5.385 +	|	ACTION
   5.386 +	;
   5.387 +
   5.388 +rewrite_tree_ebnf
   5.389 +@init {
   5.390 +    Token firstToken = input.LT(1);
   5.391 +}
   5.392 +@after {
   5.393 +	$rewrite_tree_ebnf.tree.getToken().setLine(firstToken.getLine());
   5.394 +	$rewrite_tree_ebnf.tree.getToken().setCharPositionInLine(firstToken.getCharPositionInLine());
   5.395 +}
   5.396 +	:	rewrite_tree_block ebnfSuffix -> ^(ebnfSuffix rewrite_tree_block)
   5.397 +	;
   5.398 +	
   5.399 +rewrite_tree
   5.400 +	:	'^(' rewrite_tree_atom rewrite_tree_element* ')'
   5.401 +		-> ^(TREE_BEGIN rewrite_tree_atom rewrite_tree_element* )
   5.402 +	;
   5.403 +
   5.404 +/** Build a tree for a template rewrite:
   5.405 +      ^(TEMPLATE (ID|ACTION) ^(ARGLIST ^(ARG ID ACTION) ...) )
   5.406 +    where ARGLIST is always there even if no args exist.
   5.407 +    ID can be "template" keyword.  If first child is ACTION then it's
   5.408 +    an indirect template ref
   5.409 +
   5.410 +    -> foo(a={...}, b={...})
   5.411 +    -> ({string-e})(a={...}, b={...})  // e evaluates to template name
   5.412 +    -> {%{$ID.text}} // create literal template from string (done in ActionTranslator)
   5.413 +	-> {st-expr} // st-expr evaluates to ST
   5.414 + */
   5.415 +rewrite_template
   5.416 +	:   // -> template(a={...},...) "..."    inline template
   5.417 +		id lp='(' rewrite_template_args	')'
   5.418 +		( str=DOUBLE_QUOTE_STRING_LITERAL | str=DOUBLE_ANGLE_STRING_LITERAL )
   5.419 +		-> ^(TEMPLATE[$lp,"TEMPLATE"] id rewrite_template_args $str)
   5.420 +
   5.421 +	|	// -> foo(a={...}, ...)
   5.422 +		rewrite_template_ref
   5.423 +
   5.424 +	|	// -> ({expr})(a={...}, ...)
   5.425 +		rewrite_indirect_template_head
   5.426 +
   5.427 +	|	// -> {...}
   5.428 +		ACTION
   5.429 +	;
   5.430 +
   5.431 +/** -> foo(a={...}, ...) */
   5.432 +rewrite_template_ref
   5.433 +	:	id lp='(' rewrite_template_args	')'
   5.434 +		-> ^(TEMPLATE[$lp,"TEMPLATE"] id rewrite_template_args)
   5.435 +	;
   5.436 +
   5.437 +/** -> ({expr})(a={...}, ...) */
   5.438 +rewrite_indirect_template_head
   5.439 +	:	lp='(' ACTION ')' '(' rewrite_template_args ')'
   5.440 +		-> ^(TEMPLATE[$lp,"TEMPLATE"] ACTION rewrite_template_args)
   5.441 +	;
   5.442 +
   5.443 +rewrite_template_args
   5.444 +	:	rewrite_template_arg (',' rewrite_template_arg)*
   5.445 +		-> ^(ARGLIST rewrite_template_arg+)
   5.446 +	|	-> ARGLIST
   5.447 +	;
   5.448 +
   5.449 +rewrite_template_arg
   5.450 +	:   id '=' ACTION -> ^(ARG[$id.start] id ACTION)
   5.451 +	;
   5.452 +
   5.453 +id	:	TOKEN_REF -> ID[$TOKEN_REF]
   5.454 +	|	RULE_REF  -> ID[$RULE_REF]
   5.455 +	;
   5.456 +
   5.457 +// L E X I C A L   R U L E S
   5.458 +
   5.459 +SL_COMMENT
   5.460 + 	:	'//'
   5.461 + 	 	(	' $ANTLR ' SRC // src directive
   5.462 + 		|	~('\r'|'\n')*
   5.463 +		)
   5.464 +		'\r'? '\n'
   5.465 +		{$channel=HIDDEN;}
   5.466 +	;
   5.467 +
   5.468 +ML_COMMENT
   5.469 +	:	'/*' {if (input.LA(1)=='*') $type=DOC_COMMENT; else $channel=HIDDEN;} .* '*/'
   5.470 +	;
   5.471 +
   5.472 +CHAR_LITERAL
   5.473 +	:	'\'' LITERAL_CHAR '\''
   5.474 +	;
   5.475 +
   5.476 +STRING_LITERAL
   5.477 +	:	'\'' LITERAL_CHAR LITERAL_CHAR* '\''
   5.478 +	;
   5.479 +
   5.480 +fragment
   5.481 +LITERAL_CHAR
   5.482 +	:	ESC
   5.483 +	|	~('\''|'\\')
   5.484 +	;
   5.485 +
   5.486 +DOUBLE_QUOTE_STRING_LITERAL
   5.487 +	:	'"' (ESC | ~('\\'|'"'))* '"'
   5.488 +	;
   5.489 +
   5.490 +DOUBLE_ANGLE_STRING_LITERAL
   5.491 +	:	'<<' .* '>>'
   5.492 +	;
   5.493 +
   5.494 +fragment
   5.495 +ESC	:	'\\'
   5.496 +		(	'n'
   5.497 +		|	'r'
   5.498 +		|	't'
   5.499 +		|	'b'
   5.500 +		|	'f'
   5.501 +		|	'"'
   5.502 +		|	'\''
   5.503 +		|	'\\'
   5.504 +		|	'>'
   5.505 +		|	'u' XDIGIT XDIGIT XDIGIT XDIGIT
   5.506 +		|	. // unknown, leave as it is
   5.507 +		)
   5.508 +	;
   5.509 +
   5.510 +fragment
   5.511 +XDIGIT :
   5.512 +		'0' .. '9'
   5.513 +	|	'a' .. 'f'
   5.514 +	|	'A' .. 'F'
   5.515 +	;
   5.516 +
   5.517 +INT	:	'0'..'9'+
   5.518 +	;
   5.519 +
   5.520 +ARG_ACTION
   5.521 +	:	NESTED_ARG_ACTION
   5.522 +	;
   5.523 +
   5.524 +fragment
   5.525 +NESTED_ARG_ACTION :
   5.526 +	'['
   5.527 +	(	options {greedy=false; k=1;}
   5.528 +	:	NESTED_ARG_ACTION
   5.529 +	|	ACTION_STRING_LITERAL
   5.530 +	|	ACTION_CHAR_LITERAL
   5.531 +	|	.
   5.532 +	)*
   5.533 +	']'
   5.534 +	{setText(getText().substring(1, getText().length()-1));}
   5.535 +	;
   5.536 +
   5.537 +ACTION
   5.538 +	:	NESTED_ACTION ( '?' {$type = SEMPRED;} )?
   5.539 +	;
   5.540 +
   5.541 +fragment
   5.542 +NESTED_ACTION :
   5.543 +	'{'
   5.544 +	(	options {greedy=false; k=2;}
   5.545 +	:	NESTED_ACTION
   5.546 +	|	SL_COMMENT
   5.547 +	|	ML_COMMENT
   5.548 +	|	ACTION_STRING_LITERAL
   5.549 +	|	ACTION_CHAR_LITERAL
   5.550 +	|	.
   5.551 +	)*
   5.552 +	'}'
   5.553 +   ;
   5.554 +
   5.555 +fragment
   5.556 +ACTION_CHAR_LITERAL
   5.557 +	:	'\'' (ACTION_ESC|~('\\'|'\'')) '\''
   5.558 +	;
   5.559 +
   5.560 +fragment
   5.561 +ACTION_STRING_LITERAL
   5.562 +	:	'"' (ACTION_ESC|~('\\'|'"'))* '"'
   5.563 +	;
   5.564 +
   5.565 +fragment
   5.566 +ACTION_ESC
   5.567 +	:	'\\\''
   5.568 +	|	'\\' '"' // ANTLR doesn't like: '\\"'
   5.569 +	|	'\\' ~('\''|'"')
   5.570 +	;
   5.571 +
   5.572 +TOKEN_REF
   5.573 +	:	'A'..'Z' ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*
   5.574 +	;
   5.575 +
   5.576 +RULE_REF
   5.577 +	:	'a'..'z' ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*
   5.578 +	;
   5.579 +
   5.580 +/** Match the start of an options section.  Don't allow normal
   5.581 + *  action processing on the {...} as it's not a action.
   5.582 + */
   5.583 +OPTIONS
   5.584 +	:	'options' WS_LOOP '{'
   5.585 +	;
   5.586 +	
   5.587 +TOKENS
   5.588 +	:	'tokens' WS_LOOP '{'
   5.589 +	;
   5.590 +
   5.591 +/** Reset the file and line information; useful when the grammar
   5.592 + *  has been generated so that errors are shown relative to the
   5.593 + *  original file like the old C preprocessor used to do.
   5.594 + */
   5.595 +fragment
   5.596 +SRC	:	'src' ' ' file=ACTION_STRING_LITERAL ' ' line=INT
   5.597 +	;
   5.598 +
   5.599 +WS	:	(	' '
   5.600 +		|	'\t'
   5.601 +		|	'\r'? '\n'
   5.602 +		)+
   5.603 +		{$channel=HIDDEN;}
   5.604 +	;
   5.605 +
   5.606 +fragment
   5.607 +WS_LOOP
   5.608 +	:	(	WS
   5.609 +		|	SL_COMMENT
   5.610 +		|	ML_COMMENT
   5.611 +		)*
   5.612 +	;
   5.613 +
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/AnlrTemplate.g	Fri Jan 11 15:06:14 2013 +0100
     6.3 @@ -0,0 +1,1 @@
     6.4 +sample content
     6.5 \ No newline at end of file
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/AntlrCslLanguage.java	Fri Jan 11 15:06:14 2013 +0100
     7.3 @@ -0,0 +1,89 @@
     7.4 +/*
     7.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
     7.6 + *
     7.7 + * Copyright 2013 Oracle and/or its affiliates. All rights reserved.
     7.8 + *
     7.9 + * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
    7.10 + * Other names may be trademarks of their respective owners.
    7.11 + *
    7.12 + * The contents of this file are subject to the terms of either the GNU
    7.13 + * General Public License Version 2 only ("GPL") or the Common
    7.14 + * Development and Distribution License("CDDL") (collectively, the
    7.15 + * "License"). You may not use this file except in compliance with the
    7.16 + * License. You can obtain a copy of the License at
    7.17 + * http://www.netbeans.org/cddl-gplv2.html
    7.18 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
    7.19 + * specific language governing permissions and limitations under the
    7.20 + * License.  When distributing the software, include this License Header
    7.21 + * Notice in each file and include the License file at
    7.22 + * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
    7.23 + * particular file as subject to the "Classpath" exception as provided
    7.24 + * by Oracle in the GPL Version 2 section of the License file that
    7.25 + * accompanied this code. If applicable, add the following below the
    7.26 + * License Header, with the fields enclosed by brackets [] replaced by
    7.27 + * your own identifying information:
    7.28 + * "Portions Copyrighted [year] [name of copyright owner]"
    7.29 + *
    7.30 + * If you wish your version of this file to be governed by only the CDDL
    7.31 + * or only the GPL Version 2, indicate your decision by adding
    7.32 + * "[Contributor] elects to include this software in this distribution
    7.33 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
    7.34 + * single choice of license, a recipient has the option to distribute
    7.35 + * your version of this file under either the CDDL, the GPL Version 2 or
    7.36 + * to extend the choice of license to its licensees as provided above.
    7.37 + * However, if you add GPL Version 2 code and therefore, elected the GPL
    7.38 + * Version 2 license, then the option applies only if the new code is
    7.39 + * made subject to such option by the copyright holder.
    7.40 + *
    7.41 + * Contributor(s):
    7.42 + *
    7.43 + * Portions Copyrighted 2013 Sun Microsystems, Inc.
    7.44 + */
    7.45 +package org.netbeans.modules.antlr.editor;
    7.46 +
    7.47 +import org.netbeans.core.spi.multiview.MultiViewElement;
    7.48 +import org.netbeans.core.spi.multiview.text.MultiViewEditorElement;
    7.49 +import org.netbeans.modules.csl.spi.DefaultLanguageConfig;
    7.50 +import org.netbeans.modules.csl.spi.LanguageRegistration;
    7.51 +import org.netbeans.modules.parsing.spi.indexing.PathRecognizerRegistration;
    7.52 +import org.openide.util.Lookup;
    7.53 +import org.openide.util.NbBundle;
    7.54 +import org.openide.windows.TopComponent;
    7.55 +
    7.56 +/**
    7.57 + *
    7.58 + * @author marekfukala
    7.59 + */
    7.60 +@NbBundle.Messages({
    7.61 +    "language.displaname=ANTLR Editor"
    7.62 +    }) 
    7.63 +@LanguageRegistration(mimeType = "text/antlr", useMultiview = true)
    7.64 +@PathRecognizerRegistration(mimeTypes = "text/antlr", libraryPathIds = {}, binaryLibraryPathIds = {}) //NOI18N
    7.65 +public class AntlrCslLanguage extends DefaultLanguageConfig {
    7.66 + 
    7.67 +     @MultiViewElement.Registration(displayName = "#LBL_AntlrEditorTab",
    7.68 +        iconBase = "org/netbeans/modules/antlr/editor/build.png",
    7.69 +        persistenceType = TopComponent.PERSISTENCE_ONLY_OPENED,
    7.70 +        preferredID = "antlr.source",
    7.71 +        mimeType = "text/antlr",
    7.72 +        position = 1)
    7.73 +    public static MultiViewEditorElement createMultiViewEditorElement(Lookup context) {
    7.74 +        return new MultiViewEditorElement(context);
    7.75 +    }
    7.76 +   
    7.77 +    @Override
    7.78 +    public org.netbeans.api.lexer.Language getLexerLanguage() {
    7.79 +        return AntlrTokenId.language();
    7.80 +    }
    7.81 +
    7.82 +    @Override
    7.83 +    public String getPreferredExtension() {
    7.84 +        return "g";
    7.85 +    }
    7.86 +   
    7.87 +    @Override
    7.88 +    public String getDisplayName() {
    7.89 +        return Bundle.language_displaname();
    7.90 +    }
    7.91 +    
    7.92 +}
     8.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2 +++ b/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/AntlrLanguageHierarchy.java	Fri Jan 11 15:06:14 2013 +0100
     8.3 @@ -0,0 +1,71 @@
     8.4 +/*
     8.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
     8.6 + *
     8.7 + * Copyright 2011 Oracle and/or its affiliates. All rights reserved.
     8.8 + *
     8.9 + * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
    8.10 + * Other names may be trademarks of their respective owners.
    8.11 + *
    8.12 + * The contents of this file are subject to the terms of either the GNU
    8.13 + * General Public License Version 2 only ("GPL") or the Common
    8.14 + * Development and Distribution License("CDDL") (collectively, the
    8.15 + * "License"). You may not use this file except in compliance with the
    8.16 + * License. You can obtain a copy of the License at
    8.17 + * http://www.netbeans.org/cddl-gplv2.html
    8.18 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
    8.19 + * specific language governing permissions and limitations under the
    8.20 + * License.  When distributing the software, include this License Header
    8.21 + * Notice in each file and include the License file at
    8.22 + * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
    8.23 + * particular file as subject to the "Classpath" exception as provided
    8.24 + * by Oracle in the GPL Version 2 section of the License file that
    8.25 + * accompanied this code. If applicable, add the following below the
    8.26 + * License Header, with the fields enclosed by brackets [] replaced by
    8.27 + * your own identifying information:
    8.28 + * "Portions Copyrighted [year] [name of copyright owner]"
    8.29 + *
    8.30 + * If you wish your version of this file to be governed by only the CDDL
    8.31 + * or only the GPL Version 2, indicate your decision by adding
    8.32 + * "[Contributor] elects to include this software in this distribution
    8.33 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
    8.34 + * single choice of license, a recipient has the option to distribute
    8.35 + * your version of this file under either the CDDL, the GPL Version 2 or
    8.36 + * to extend the choice of license to its licensees as provided above.
    8.37 + * However, if you add GPL Version 2 code and therefore, elected the GPL
    8.38 + * Version 2 license, then the option applies only if the new code is
    8.39 + * made subject to such option by the copyright holder.
    8.40 + *
    8.41 + * Contributor(s):
    8.42 + *
    8.43 + * Portions Copyrighted 2011 Sun Microsystems, Inc.
    8.44 + */
    8.45 +package org.netbeans.modules.antlr.editor;
    8.46 +
    8.47 +import java.util.Collection;
    8.48 +import java.util.EnumSet;
    8.49 +import org.netbeans.spi.lexer.LanguageHierarchy;
    8.50 +import org.netbeans.spi.lexer.Lexer;
    8.51 +import org.netbeans.spi.lexer.LexerRestartInfo;
    8.52 +
    8.53 +/**
    8.54 + *
    8.55 + * @author marekfukala
    8.56 + */
    8.57 +public class AntlrLanguageHierarchy extends LanguageHierarchy<AntlrTokenId> {
    8.58 +
    8.59 +    @Override
    8.60 +    protected Collection<AntlrTokenId> createTokenIds() {
    8.61 +        return EnumSet.allOf(AntlrTokenId.class);
    8.62 +    }
    8.63 +
    8.64 +    @Override
    8.65 +    protected Lexer<AntlrTokenId> createLexer(LexerRestartInfo<AntlrTokenId> info) {
    8.66 +        return new NbAntlrLexer(info);
    8.67 +    }
    8.68 +
    8.69 +    @Override
    8.70 +    protected String mimeType() {
    8.71 +        return "text/antlr";
    8.72 +    }
    8.73 +    
    8.74 +}
     9.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2 +++ b/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/AntlrTokenId.java	Fri Jan 11 15:06:14 2013 +0100
     9.3 @@ -0,0 +1,196 @@
     9.4 +/*
     9.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
     9.6 + *
     9.7 + * Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
     9.8 + *
     9.9 + * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
    9.10 + * Other names may be trademarks of their respective owners.
    9.11 + *
    9.12 + * The contents of this file are subject to the terms of either the GNU
    9.13 + * General Public License Version 2 only ("GPL") or the Common
    9.14 + * Development and Distribution License("CDDL") (collectively, the
    9.15 + * "License"). You may not use this file except in compliance with the
    9.16 + * License. You can obtain a copy of the License at
    9.17 + * http://www.netbeans.org/cddl-gplv2.html
    9.18 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
    9.19 + * specific language governing permissions and limitations under the
    9.20 + * License.  When distributing the software, include this License Header
    9.21 + * Notice in each file and include the License file at
    9.22 + * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
    9.23 + * particular file as subject to the "Classpath" exception as provided
    9.24 + * by Oracle in the GPL Version 2 section of the License file that
    9.25 + * accompanied this code. If applicable, add the following below the
    9.26 + * License Header, with the fields enclosed by brackets [] replaced by
    9.27 + * your own identifying information:
    9.28 + * "Portions Copyrighted [year] [name of copyright owner]"
    9.29 + *
    9.30 + * Contributor(s):
    9.31 + *
    9.32 + * The Original Software is NetBeans. The Initial Developer of the Original
    9.33 + * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
    9.34 + * Microsystems, Inc. All Rights Reserved.
    9.35 + *
    9.36 + * If you wish your version of this file to be governed by only the CDDL
    9.37 + * or only the GPL Version , indicate your decision by adding
    9.38 + * "[Contributor] elects to include this software in this distribution
    9.39 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
    9.40 + * single choice of license, a recipient has the option to distribute
    9.41 + * your version of this file under either the CDDL, the GPL Version 2 or
    9.42 + * to extend the choice of license to its licensees as provided above.
    9.43 + * However, if you add GPL Version 2 code and therefore, elected the GPL
    9.44 + * Version 2 license, then the option applies only if the new code is
    9.45 + * made subject to such option by the copyright holder.
    9.46 + */
    9.47 +package org.netbeans.modules.antlr.editor;
    9.48 +
    9.49 +import java.util.HashMap;
    9.50 +import java.util.Map;
    9.51 +import org.netbeans.api.lexer.Language;
    9.52 +import org.netbeans.api.lexer.TokenHierarchy;
    9.53 +import org.netbeans.api.lexer.TokenId;
    9.54 +import org.netbeans.api.lexer.TokenSequence;
    9.55 +import static org.netbeans.modules.antlr.editor.AntlrTokenIdCategory.*;
    9.56 +import org.netbeans.antlr.editor.gen.ANTLRv3Lexer;
    9.57 +
    9.58 +/**
    9.59 + * Token ids of CSS language
    9.60 + *
    9.61 + * @author Marek Fukala
    9.62 + */
    9.63 +public enum AntlrTokenId implements TokenId {
    9.64 +
    9.65 +    EOF(ANTLRv3Lexer.EOF, OTHERS),
    9.66 +    DOC_COMMENT(ANTLRv3Lexer.DOC_COMMENT, COMMENTS),
    9.67 +    PARSER(ANTLRv3Lexer.PARSER, KEYWORDS),
    9.68 +    LEXER(ANTLRv3Lexer.LEXER, KEYWORDS),
    9.69 +    RULE(ANTLRv3Lexer.RULE, OTHERS),
    9.70 +    BLOCK(ANTLRv3Lexer.BLOCK, OTHERS),
    9.71 +    OPTIONAL(ANTLRv3Lexer.OPTIONAL, OTHERS),
    9.72 +    CLOSURE(ANTLRv3Lexer.CLOSURE, OTHERS),
    9.73 +    POSITIVE_CLOSURE(ANTLRv3Lexer.POSITIVE_CLOSURE, OTHERS),
    9.74 +    SYNPRED(ANTLRv3Lexer.SYNPRED, OTHERS),
    9.75 +    RANGE(ANTLRv3Lexer.RANGE, OTHERS),
    9.76 +    CHAR_RANGE(ANTLRv3Lexer.CHAR_RANGE, OTHERS),
    9.77 +    EPSILON(ANTLRv3Lexer.EPSILON, OTHERS),
    9.78 +    ALT(ANTLRv3Lexer.ALT, OTHERS),
    9.79 +    EOR(ANTLRv3Lexer.EOR, OTHERS),
    9.80 +    EOB(ANTLRv3Lexer.EOB, OTHERS),
    9.81 +    EOA(ANTLRv3Lexer.EOA, OTHERS),
    9.82 +    ID(ANTLRv3Lexer.ID, OTHERS),
    9.83 +    ARG(ANTLRv3Lexer.ARG, OTHERS),
    9.84 +    ARGLIST(ANTLRv3Lexer.ARGLIST, OTHERS),
    9.85 +    RET(ANTLRv3Lexer.RET, OTHERS),
    9.86 +    LEXER_GRAMMAR(ANTLRv3Lexer.LEXER_GRAMMAR, OTHERS),
    9.87 +    PARSER_GRAMMAR(ANTLRv3Lexer.PARSER_GRAMMAR, OTHERS),
    9.88 +    TREE_GRAMMAR(ANTLRv3Lexer.TREE_GRAMMAR, OTHERS),
    9.89 +    COMBINED_GRAMMAR(ANTLRv3Lexer.COMBINED_GRAMMAR, OTHERS),
    9.90 +    INITACTION(ANTLRv3Lexer.INITACTION, OTHERS),
    9.91 +    LABEL(ANTLRv3Lexer.LABEL, OTHERS),
    9.92 +    TEMPLATE(ANTLRv3Lexer.TEMPLATE, OTHERS),
    9.93 +    SCOPE(ANTLRv3Lexer.SCOPE, OTHERS),
    9.94 +    SEMPRED(ANTLRv3Lexer.SEMPRED, OTHERS),
    9.95 +    GATED_SEMPRED(ANTLRv3Lexer.GATED_SEMPRED, OTHERS),
    9.96 +    SYN_SEMPRED(ANTLRv3Lexer.SYN_SEMPRED, OTHERS),
    9.97 +    BACKTRACK_SEMPRED(ANTLRv3Lexer.BACKTRACK_SEMPRED, OTHERS),
    9.98 +    FRAGMENT(ANTLRv3Lexer.FRAGMENT, OTHERS),
    9.99 +    TREE_BEGIN(ANTLRv3Lexer.TREE_BEGIN, OTHERS),
   9.100 +    ROOT(ANTLRv3Lexer.ROOT, OTHERS),
   9.101 +    BANG(ANTLRv3Lexer.BANG, OTHERS),
   9.102 +    REWRITE(ANTLRv3Lexer.REWRITE, OTHERS),
   9.103 +    TOKENS(ANTLRv3Lexer.TOKENS, OTHERS),
   9.104 +    TOKEN_REF(ANTLRv3Lexer.TOKEN_REF, OTHERS),
   9.105 +    STRING_LITERAL(ANTLRv3Lexer.STRING_LITERAL, OTHERS),
   9.106 +    CHAR_LITERAL(ANTLRv3Lexer.CHAR_LITERAL, OTHERS),
   9.107 +    ACTION(ANTLRv3Lexer.ACTION, OTHERS),
   9.108 +    OPTIONS(ANTLRv3Lexer.OPTIONS, OTHERS),
   9.109 +    INT(ANTLRv3Lexer.INT, OTHERS),
   9.110 +    ARG_ACTION(ANTLRv3Lexer.ARG_ACTION, OTHERS),
   9.111 +    RULE_REF(ANTLRv3Lexer.RULE_REF, OTHERS),
   9.112 +    DOUBLE_QUOTE_STRING_LITERAL(ANTLRv3Lexer.DOUBLE_QUOTE_STRING_LITERAL, OTHERS),
   9.113 +    DOUBLE_ANGLE_STRING_LITERAL(ANTLRv3Lexer.DOUBLE_ANGLE_STRING_LITERAL, OTHERS),
   9.114 +    SRC(ANTLRv3Lexer.SRC, OTHERS),
   9.115 +    SL_COMMENT(ANTLRv3Lexer.SL_COMMENT, OTHERS),
   9.116 +    ML_COMMENT(ANTLRv3Lexer.ML_COMMENT, OTHERS),
   9.117 +    LITERAL_CHAR(ANTLRv3Lexer.LITERAL_CHAR, OTHERS),
   9.118 +    ESC(ANTLRv3Lexer.ESC, OTHERS),
   9.119 +    XDIGIT(ANTLRv3Lexer.XDIGIT, OTHERS),
   9.120 +    NESTED_ARG_ACTION(ANTLRv3Lexer.NESTED_ARG_ACTION, OTHERS),
   9.121 +    ACTION_STRING_LITERAL(ANTLRv3Lexer.ACTION_STRING_LITERAL, OTHERS),
   9.122 +    ACTION_CHAR_LITERAL(ANTLRv3Lexer.ACTION_CHAR_LITERAL, OTHERS),
   9.123 +    NESTED_ACTION(ANTLRv3Lexer.NESTED_ACTION, OTHERS),
   9.124 +    ACTION_ESC(ANTLRv3Lexer.ACTION_ESC, OTHERS),
   9.125 +    WS_LOOP(ANTLRv3Lexer.WS_LOOP, OTHERS),
   9.126 +    WS(ANTLRv3Lexer.WS, OTHERS);
   9.127 +    
   9.128 +    private static final Map<Integer, AntlrTokenId> codesMap = new HashMap<Integer, AntlrTokenId>();
   9.129 +
   9.130 +    static {
   9.131 +        for (AntlrTokenId id : values()) {
   9.132 +            codesMap.put(id.code, id);
   9.133 +        }
   9.134 +    }
   9.135 +
   9.136 +    public static AntlrTokenId forTokenTypeCode(int tokenTypeCode) {
   9.137 +        return codesMap.get(tokenTypeCode);
   9.138 +    }
   9.139 +    private final AntlrTokenIdCategory primaryCategory;
   9.140 +    private final int code;
   9.141 +    private static final Language<AntlrTokenId> language = new AntlrLanguageHierarchy().language();
   9.142 +
   9.143 +    AntlrTokenId(int code, AntlrTokenIdCategory primaryCategory) {
   9.144 +        this.primaryCategory = primaryCategory;
   9.145 +        this.code = code;
   9.146 +    }
   9.147 +
   9.148 +    /**
   9.149 +     * Gets a LanguageDescription describing a set of token ids that comprise
   9.150 +     * the given language.
   9.151 +     *
   9.152 +     * @return non-null LanguageDescription
   9.153 +     */
   9.154 +    public static Language<AntlrTokenId> language() {
   9.155 +        return language;
   9.156 +    }
   9.157 +
   9.158 +    /**
   9.159 +     * Get name of primary token category into which this token belongs.
   9.160 +     * <br/>
   9.161 +     * Other token categories for this id can be defined in the language
   9.162 +     * hierarchy.
   9.163 +     *
   9.164 +     * @return name of the primary token category into which this token belongs
   9.165 +     * or null if there is no primary category for this token.
   9.166 +     */
   9.167 +    @Override
   9.168 +    public String primaryCategory() {
   9.169 +        return primaryCategory.name().toLowerCase();
   9.170 +    }
   9.171 +
   9.172 +    /**
   9.173 +     * same as primaryCategory() but returns CssTokenIdCategory enum member
   9.174 +     */
   9.175 +    public AntlrTokenIdCategory getTokenCategory() {
   9.176 +        return primaryCategory;
   9.177 +    }
   9.178 +
   9.179 +    /**
   9.180 +     * Verifies whether the given input text is lexed as on token of this type.
   9.181 +     *
   9.182 +     * If some part of the input text is not matched by the css token the method
   9.183 +     * returns false.
   9.184 +     *
   9.185 +     * @since 1.12
   9.186 +     * @param input source code to be lexed
   9.187 +     * @return true if the whole source code is lexed as a token of this type.
   9.188 +     */
   9.189 +    public boolean matchesInput(CharSequence input) {
   9.190 +        TokenHierarchy<CharSequence> th = TokenHierarchy.create(input, AntlrTokenId.language());
   9.191 +        TokenSequence<AntlrTokenId> ts = th.tokenSequence(AntlrTokenId.language());
   9.192 +        ts.moveStart();
   9.193 +        if (!ts.moveNext()) {
   9.194 +            return false;
   9.195 +        }
   9.196 +        org.netbeans.api.lexer.Token<AntlrTokenId> t = ts.token();
   9.197 +        return !ts.moveNext() && t.id() == this;
   9.198 +    }
   9.199 +}
    10.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.2 +++ b/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/AntlrTokenIdCategory.java	Fri Jan 11 15:06:14 2013 +0100
    10.3 @@ -0,0 +1,53 @@
    10.4 +/*
    10.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    10.6 + *
    10.7 + * Copyright 2011 Oracle and/or its affiliates. All rights reserved.
    10.8 + *
    10.9 + * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
   10.10 + * Other names may be trademarks of their respective owners.
   10.11 + *
   10.12 + * The contents of this file are subject to the terms of either the GNU
   10.13 + * General Public License Version 2 only ("GPL") or the Common
   10.14 + * Development and Distribution License("CDDL") (collectively, the
   10.15 + * "License"). You may not use this file except in compliance with the
   10.16 + * License. You can obtain a copy of the License at
   10.17 + * http://www.netbeans.org/cddl-gplv2.html
   10.18 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   10.19 + * specific language governing permissions and limitations under the
   10.20 + * License.  When distributing the software, include this License Header
   10.21 + * Notice in each file and include the License file at
   10.22 + * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
   10.23 + * particular file as subject to the "Classpath" exception as provided
   10.24 + * by Oracle in the GPL Version 2 section of the License file that
   10.25 + * accompanied this code. If applicable, add the following below the
   10.26 + * License Header, with the fields enclosed by brackets [] replaced by
   10.27 + * your own identifying information:
   10.28 + * "Portions Copyrighted [year] [name of copyright owner]"
   10.29 + *
   10.30 + * If you wish your version of this file to be governed by only the CDDL
   10.31 + * or only the GPL Version 2, indicate your decision by adding
   10.32 + * "[Contributor] elects to include this software in this distribution
   10.33 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   10.34 + * single choice of license, a recipient has the option to distribute
   10.35 + * your version of this file under either the CDDL, the GPL Version 2 or
   10.36 + * to extend the choice of license to its licensees as provided above.
   10.37 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   10.38 + * Version 2 license, then the option applies only if the new code is
   10.39 + * made subject to such option by the copyright holder.
   10.40 + *
   10.41 + * Contributor(s):
   10.42 + *
   10.43 + * Portions Copyrighted 2011 Sun Microsystems, Inc.
   10.44 + */
   10.45 +package org.netbeans.modules.antlr.editor;
   10.46 +
   10.47 +/**
   10.48 + *
   10.49 + * @author marekfukala
   10.50 + */
   10.51 +public enum AntlrTokenIdCategory {
   10.52 +    
   10.53 +    KEYWORDS, ERRORS, OTHERS, NUMBERS, WHITESPACES, BRACES, IDENTIFIERS, STRINGS, 
   10.54 +    SEPARATORS, OPERATORS, COMMENTS;
   10.55 +    
   10.56 +}
    11.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.2 +++ b/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/Bundle.properties	Fri Jan 11 15:06:14 2013 +0100
    11.3 @@ -0,0 +1,2 @@
    11.4 +OpenIDE-Module-Name=ANTLR Editor
    11.5 +LBL_AntlrEditorTab=ANTLR
    11.6 \ No newline at end of file
    12.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.2 +++ b/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ExtANTLRv3Lexer.java	Fri Jan 11 15:06:14 2013 +0100
    12.3 @@ -0,0 +1,170 @@
    12.4 +/*
    12.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    12.6 + *
    12.7 + * Copyright 2011 Oracle and/or its affiliates. All rights reserved.
    12.8 + *
    12.9 + * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
   12.10 + * Other names may be trademarks of their respective owners.
   12.11 + *
   12.12 + * The contents of this file are subject to the terms of either the GNU
   12.13 + * General Public License Version 2 only ("GPL") or the Common
   12.14 + * Development and Distribution License("CDDL") (collectively, the
   12.15 + * "License"). You may not use this file except in compliance with the
   12.16 + * License. You can obtain a copy of the License at
   12.17 + * http://www.netbeans.org/cddl-gplv2.html
   12.18 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   12.19 + * specific language governing permissions and limitations under the
   12.20 + * License.  When distributing the software, include this License Header
   12.21 + * Notice in each file and include the License file at
   12.22 + * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
   12.23 + * particular file as subject to the "Classpath" exception as provided
   12.24 + * by Oracle in the GPL Version 2 section of the License file that
   12.25 + * accompanied this code. If applicable, add the following below the
   12.26 + * License Header, with the fields enclosed by brackets [] replaced by
   12.27 + * your own identifying information:
   12.28 + * "Portions Copyrighted [year] [name of copyright owner]"
   12.29 + *
   12.30 + * If you wish your version of this file to be governed by only the CDDL
   12.31 + * or only the GPL Version 2, indicate your decision by adding
   12.32 + * "[Contributor] elects to include this software in this distribution
   12.33 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   12.34 + * single choice of license, a recipient has the option to distribute
   12.35 + * your version of this file under either the CDDL, the GPL Version 2 or
   12.36 + * to extend the choice of license to its licensees as provided above.
   12.37 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   12.38 + * Version 2 license, then the option applies only if the new code is
   12.39 + * made subject to such option by the copyright holder.
   12.40 + *
   12.41 + * Contributor(s):
   12.42 + *
   12.43 + * Portions Copyrighted 2011 Sun Microsystems, Inc.
   12.44 + */
   12.45 +package org.netbeans.modules.antlr.editor;
   12.46 +
   12.47 +import java.util.ArrayList;
   12.48 +import java.util.List;
   12.49 +import org.antlr.runtime.*;
   12.50 +import org.openide.util.NbBundle;
   12.51 +import org.netbeans.antlr.editor.gen.*;
   12.52 +
   12.53 +/**
   12.54 + * Note: Funny aspect of the ANTLR lexer is that it doesn't create any kind of
   12.55 + * error tokens. So if there's a character in the input which cannot be properly
   12.56 + * made a part of a token it is simply skipped. The result is that the sequence
   12.57 + * of tokens is not continuous and there might be "holes".
   12.58 + *
   12.59 + * @author marekfukala
   12.60 + */
   12.61 +public class ExtANTLRv3Lexer extends ANTLRv3Lexer {
   12.62 +
   12.63 +//    private List<ProblemDescription> problems = new ArrayList<ProblemDescription>();
   12.64 +
   12.65 +    public ExtANTLRv3Lexer(CharStream input, RecognizerSharedState state) {
   12.66 +        super(input, state);
   12.67 +    }
   12.68 +
   12.69 +    public ExtANTLRv3Lexer(CharStream input) {
   12.70 +        super(input);
   12.71 +    }
   12.72 +
   12.73 +    /**
   12.74 +     * Preferred constructor.
   12.75 +     * 
   12.76 +     * Make the Css3Lexer case insensitive by default - the characters passed to
   12.77 +     * the lexer are converted to upper case. The token images are in the
   12.78 +     * original case though.
   12.79 +     */
   12.80 +    public ExtANTLRv3Lexer(CharSequence charSequence) {
   12.81 +
   12.82 +        this(new ANTLRStringStream(charSequence.toString()) {
   12.83 +            @Override
   12.84 +            public int LA(int i) {
   12.85 +                if (i == 0) {
   12.86 +                    return 0; // undefined
   12.87 +                }
   12.88 +                if (i < 0) {
   12.89 +                    i++; // e.g., translate LA(-1) to use offset 0
   12.90 +                }
   12.91 +
   12.92 +                if ((p + i - 1) >= n) {
   12.93 +
   12.94 +                    return CharStream.EOF;
   12.95 +                }
   12.96 +                return Character.toUpperCase(data[p + i - 1]);
   12.97 +            }
   12.98 +        });
   12.99 +
  12.100 +    }
  12.101 +
  12.102 +    @Override
  12.103 +    //overridden since we need to produce error tokens for unrecognized input,
  12.104 +    //by default such content is only skipped and the resulting token sequence
  12.105 +    //contains "holes".
  12.106 +    //
  12.107 +    //this way of solving the proble seems to be the official one:
  12.108 +    //http://www.antlr.org/wiki/pages/viewpage.action?pageId=5341230
  12.109 +    public Token nextToken() {
  12.110 +        while (true) {
  12.111 +            state.token = null;
  12.112 +            state.channel = Token.DEFAULT_CHANNEL;
  12.113 +            state.tokenStartCharIndex = input.index();
  12.114 +            state.tokenStartCharPositionInLine = input.getCharPositionInLine();
  12.115 +            state.tokenStartLine = input.getLine();
  12.116 +            state.text = null;
  12.117 +            if (input.LA(1) == CharStream.EOF) {
  12.118 +                Token eof = new CommonToken(input, Token.EOF,
  12.119 +                        Token.DEFAULT_CHANNEL,
  12.120 +                        input.index(), input.index());
  12.121 +                eof.setLine(getLine());
  12.122 +                eof.setCharPositionInLine(getCharPositionInLine());
  12.123 +                return eof;
  12.124 +            }
  12.125 +            try {
  12.126 +                mTokens();
  12.127 +                if (state.token == null) {
  12.128 +                    emit();
  12.129 +                } else if (state.token == Token.SKIP_TOKEN) {
  12.130 +                    continue;
  12.131 +                }
  12.132 +                return state.token;
  12.133 +            } catch (RecognitionException re) {
  12.134 +                reportError(re);
  12.135 +                if (re instanceof NoViableAltException) {
  12.136 +                    recover(re);
  12.137 +                }
  12.138 +                // create token that holds mismatched char
  12.139 +                Token t = new CommonToken(input, Token.INVALID_TOKEN_TYPE,
  12.140 +                        Token.DEFAULT_CHANNEL,
  12.141 +                        state.tokenStartCharIndex,
  12.142 +                        getCharIndex() - 1);
  12.143 +                t.setLine(state.tokenStartLine);
  12.144 +                t.setCharPositionInLine(state.tokenStartCharPositionInLine);
  12.145 +                emit(t);
  12.146 +                return state.token;
  12.147 +            }
  12.148 +        }
  12.149 +    }
  12.150 +
  12.151 +    @Override
  12.152 +    public void displayRecognitionError(String[] tokenNames, RecognitionException e) {
  12.153 +        StringBuilder b = new StringBuilder();
  12.154 +        b.append(getErrorHeader(e));
  12.155 +        b.append(' ');
  12.156 +
  12.157 +        if (e instanceof NoViableAltException) {
  12.158 +            //lexing error - unexpected character in the char stream
  12.159 +//            char unexpectedChar = (char) input.LA(1);
  12.160 +//            b.append(NbBundle.getMessage(ExtCss3Lexer.class, "MSG_Error_Unexpected_Char", unexpectedChar));
  12.161 +//            ProblemDescription pp = new ProblemDescription(e.input.index(), e.input.index() + 1, b.toString(), ProblemDescription.Keys.LEXING.name(), Type.ERROR);
  12.162 +//            problems.add(pp);
  12.163 +        } else {
  12.164 +            b.append(getErrorHeader(e));
  12.165 +            b.append(getErrorMessage(e, tokenNames));
  12.166 +        }
  12.167 +
  12.168 +    }
  12.169 +
  12.170 +//    public List<ProblemDescription> getProblems() {
  12.171 +//        return problems;
  12.172 +//    }
  12.173 +}
    13.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.2 +++ b/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/NbAntlrLexer.java	Fri Jan 11 15:06:14 2013 +0100
    13.3 @@ -0,0 +1,90 @@
    13.4 +/*
    13.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    13.6 + *
    13.7 + * Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
    13.8 + *
    13.9 + * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
   13.10 + * Other names may be trademarks of their respective owners.
   13.11 + *
   13.12 + * The contents of this file are subject to the terms of either the GNU
   13.13 + * General Public License Version 2 only ("GPL") or the Common
   13.14 + * Development and Distribution License("CDDL") (collectively, the
   13.15 + * "License"). You may not use this file except in compliance with the
   13.16 + * License. You can obtain a copy of the License at
   13.17 + * http://www.netbeans.org/cddl-gplv2.html
   13.18 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   13.19 + * specific language governing permissions and limitations under the
   13.20 + * License.  When distributing the software, include this License Header
   13.21 + * Notice in each file and include the License file at
   13.22 + * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
   13.23 + * particular file as subject to the "Classpath" exception as provided
   13.24 + * by Oracle in the GPL Version 2 section of the License file that
   13.25 + * accompanied this code. If applicable, add the following below the
   13.26 + * License Header, with the fields enclosed by brackets [] replaced by
   13.27 + * your own identifying information:
   13.28 + * "Portions Copyrighted [year] [name of copyright owner]"
   13.29 + *
   13.30 + * Contributor(s):
   13.31 + *
   13.32 + * The Original Software is NetBeans. The Initial Developer of the Original
   13.33 + * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
   13.34 + * Microsystems, Inc. All Rights Reserved.
   13.35 + *
   13.36 + * If you wish your version of this file to be governed by only the CDDL
   13.37 + * or only the GPL Version 2, indicate your decision by adding
   13.38 + * "[Contributor] elects to include this software in this distribution
   13.39 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   13.40 + * single choice of license, a recipient has the option to distribute
   13.41 + * your version of this file under either the CDDL, the GPL Version 2 or
   13.42 + * to extend the choice of license to its licensees as provided above.
   13.43 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   13.44 + * Version 2 license, then the option applies only if the new code is
   13.45 + * made subject to such option by the copyright holder.
   13.46 + */
   13.47 +package org.netbeans.modules.antlr.editor;
   13.48 +
   13.49 +import org.netbeans.api.lexer.Token;
   13.50 +import org.netbeans.spi.lexer.Lexer;
   13.51 +import org.netbeans.spi.lexer.LexerRestartInfo;
   13.52 +import org.netbeans.spi.lexer.TokenFactory;
   13.53 +import org.netbeans.antlr.editor.gen.ANTLRv3Lexer;
   13.54 +
   13.55 +/**
   13.56 + * antlr lexer
   13.57 + *
   13.58 + * @author Marek Fukala
   13.59 + * @version 1.00
   13.60 + */
   13.61 +public class NbAntlrLexer implements Lexer<AntlrTokenId> {
   13.62 +
   13.63 +    private final TokenFactory<AntlrTokenId> tokenFactory;
   13.64 +    private ANTLRv3Lexer antlrLexer;
   13.65 +
   13.66 +    @Override
   13.67 +    public Object state() {
   13.68 +        return null; //stateless
   13.69 +    }
   13.70 +
   13.71 +    public NbAntlrLexer(LexerRestartInfo<AntlrTokenId> info) {
   13.72 +        tokenFactory = info.tokenFactory();
   13.73 +        antlrLexer = new ExtANTLRv3Lexer(new NbLexerCharStream(info));
   13.74 +    }
   13.75 +
   13.76 +    @Override
   13.77 +    public Token<AntlrTokenId> nextToken() {
   13.78 +        org.antlr.runtime.Token token = antlrLexer.nextToken();
   13.79 +        int tokenTypeCode = token.getType();
   13.80 +        AntlrTokenId tokenId = AntlrTokenId.forTokenTypeCode(tokenTypeCode);
   13.81 +        
   13.82 +        if(tokenId == AntlrTokenId.EOF) {
   13.83 +            return null; //end of input
   13.84 +        } else {
   13.85 +            return tokenFactory.createToken(tokenId);
   13.86 +        }
   13.87 +    }
   13.88 +
   13.89 +    @Override
   13.90 +    public void release() {
   13.91 +        antlrLexer = null;
   13.92 +    }
   13.93 +}
    14.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.2 +++ b/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/NbLexerCharStream.java	Fri Jan 11 15:06:14 2013 +0100
    14.3 @@ -0,0 +1,195 @@
    14.4 +/*
    14.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    14.6 + *
    14.7 + * Copyright 2011 Oracle and/or its affiliates. All rights reserved.
    14.8 + *
    14.9 + * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
   14.10 + * Other names may be trademarks of their respective owners.
   14.11 + *
   14.12 + * The contents of this file are subject to the terms of either the GNU
   14.13 + * General Public License Version 2 only ("GPL") or the Common
   14.14 + * Development and Distribution License("CDDL") (collectively, the
   14.15 + * "License"). You may not use this file except in compliance with the
   14.16 + * License. You can obtain a copy of the License at
   14.17 + * http://www.netbeans.org/cddl-gplv2.html
   14.18 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   14.19 + * specific language governing permissions and limitations under the
   14.20 + * License.  When distributing the software, include this License Header
   14.21 + * Notice in each file and include the License file at
   14.22 + * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
   14.23 + * particular file as subject to the "Classpath" exception as provided
   14.24 + * by Oracle in the GPL Version 2 section of the License file that
   14.25 + * accompanied this code. If applicable, add the following below the
   14.26 + * License Header, with the fields enclosed by brackets [] replaced by
   14.27 + * your own identifying information:
   14.28 + * "Portions Copyrighted [year] [name of copyright owner]"
   14.29 + *
   14.30 + * If you wish your version of this file to be governed by only the CDDL
   14.31 + * or only the GPL Version 2, indicate your decision by adding
   14.32 + * "[Contributor] elects to include this software in this distribution
   14.33 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   14.34 + * single choice of license, a recipient has the option to distribute
   14.35 + * your version of this file under either the CDDL, the GPL Version 2 or
   14.36 + * to extend the choice of license to its licensees as provided above.
   14.37 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   14.38 + * Version 2 license, then the option applies only if the new code is
   14.39 + * made subject to such option by the copyright holder.
   14.40 + *
   14.41 + * Contributor(s):
   14.42 + *
   14.43 + * Portions Copyrighted 2011 Sun Microsystems, Inc.
   14.44 + */
   14.45 +package org.netbeans.modules.antlr.editor;
   14.46 +
   14.47 +import java.util.Stack;
   14.48 +import org.antlr.runtime.CharStream;
   14.49 +import org.netbeans.spi.lexer.LexerInput;
   14.50 +import org.netbeans.spi.lexer.LexerRestartInfo;
   14.51 +
   14.52 +/**
   14.53 + *
   14.54 + * @author marekfukala
   14.55 + */
   14.56 +public class NbLexerCharStream implements CharStream {
   14.57 +
   14.58 +    private static final String STREAM_NAME = "NbLexerCharStream"; //NOI18N
   14.59 +    private LexerInput li;
   14.60 +    private Stack<Integer> markers = new Stack<Integer>();
   14.61 +//    private int index;
   14.62 +
   14.63 +    public NbLexerCharStream(LexerRestartInfo lri) {
   14.64 +        this.li = lri.input();
   14.65 +
   14.66 +    }
   14.67 +
   14.68 +    @Override
   14.69 +    public String substring(int i, int i1) {
   14.70 +        return li.readText(i, i1).toString();
   14.71 +    }
   14.72 +
   14.73 +    @Override
   14.74 +    public int LT(int i) {
   14.75 +        return LA(i);
   14.76 +    }
   14.77 +
   14.78 +    @Override
   14.79 +    public int getLine() {
   14.80 +        return -1;
   14.81 +    }
   14.82 +
   14.83 +    @Override
   14.84 +    public void setLine(int i) {
   14.85 +        //no-op
   14.86 +    }
   14.87 +
   14.88 +    @Override
   14.89 +    public void setCharPositionInLine(int i) {
   14.90 +        //no-op
   14.91 +    }
   14.92 +
   14.93 +    @Override
   14.94 +    public int getCharPositionInLine() {
   14.95 +        return -1;
   14.96 +    }
   14.97 +
   14.98 +    @Override
   14.99 +    public void consume() {
  14.100 +        read();
  14.101 +//        index++;
  14.102 +    }
  14.103 +
  14.104 +    @Override
  14.105 +    public int LA(int lookahead) {
  14.106 +        if (lookahead == 0) {
  14.107 +            return 0; //the behaviour is not defined
  14.108 +        }
  14.109 +
  14.110 +        int c = 0;
  14.111 +        for (int i = 0; i < lookahead; i++) {
  14.112 +            c = read();
  14.113 +        }
  14.114 +        li.backup(lookahead);
  14.115 +        return c;
  14.116 +    }
  14.117 +
  14.118 +    @Override
  14.119 +    public int mark() {
  14.120 +        markers.push(index());
  14.121 +        return markers.size() - 1;
  14.122 +    }
  14.123 +
  14.124 +    @Override
  14.125 +    public int index() {
  14.126 +        return li.readLengthEOF();
  14.127 +    }
  14.128 +
  14.129 +    @Override
  14.130 +    public void rewind(int marker) {
  14.131 +        if(markers.size() < marker) {
  14.132 +            return ; //report?
  14.133 +        }
  14.134 +        int markedIndex = markers.get(marker);
  14.135 +        
  14.136 +        //remove all markers after the given one, keep the requested one
  14.137 +        for(int i = marker + 1; i < markers.size(); i++) {
  14.138 +            markers.remove(i);
  14.139 +        }
  14.140 +        
  14.141 +        //seek to the marked index
  14.142 +        seek(markedIndex);
  14.143 +    }
  14.144 +
  14.145 +    @Override
  14.146 +    public void rewind() {
  14.147 +        if(markers.isEmpty()) { 
  14.148 +            return ;
  14.149 +        }
  14.150 +        
  14.151 +        rewind(markers.size() - 1);
  14.152 +    }
  14.153 +
  14.154 +    @Override
  14.155 +    public void release(int marker) {
  14.156 +        if(markers.size() < marker) {
  14.157 +            return ; //report?
  14.158 +        }
  14.159 +        
  14.160 +        //remove all markers from the given one, including the requested one
  14.161 +        for(int i = marker; i < markers.size(); i++) {
  14.162 +            markers.remove(i);
  14.163 +        }
  14.164 +    }
  14.165 +
  14.166 +    @Override
  14.167 +    public void seek(int i) {
  14.168 +        if (i < index()) {
  14.169 +            //go backward
  14.170 +            li.backup(index() - i);
  14.171 +//            index = i;
  14.172 +        } else {
  14.173 +            // go forward
  14.174 +            while (index() < i) {
  14.175 +                consume();
  14.176 +            }
  14.177 +        }
  14.178 +    }
  14.179 +
  14.180 +    @Override
  14.181 +    public int size() {
  14.182 +        return -1; //not supported
  14.183 +    }
  14.184 +
  14.185 +    @Override
  14.186 +    public String getSourceName() {
  14.187 +        return STREAM_NAME;
  14.188 +    }
  14.189 +    
  14.190 +     private int read() {
  14.191 +        int result = li.read();
  14.192 +        if (result == LexerInput.EOF) {
  14.193 +            result = CharStream.EOF;
  14.194 +        }
  14.195 +
  14.196 +        return result;
  14.197 +    }
  14.198 +}
    15.1 Binary file o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/build.png has changed
    16.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.2 +++ b/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/fontsColors.xml	Fri Jan 11 15:06:14 2013 +0100
    16.3 @@ -0,0 +1,53 @@
    16.4 +<?xml version="1.0" encoding="UTF-8"?>
    16.5 +<!--
    16.6 +DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    16.7 +
    16.8 +Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
    16.9 +
   16.10 +Oracle and Java are registered trademarks of Oracle and/or its affiliates.
   16.11 +Other names may be trademarks of their respective owners.
   16.12 +
   16.13 +
   16.14 +The contents of this file are subject to the terms of either the GNU
   16.15 +General Public License Version 2 only ("GPL") or the Common
   16.16 +Development and Distribution License("CDDL") (collectively, the
   16.17 +"License"). You may not use this file except in compliance with the
   16.18 +License. You can obtain a copy of the License at
   16.19 +http://www.netbeans.org/cddl-gplv2.html
   16.20 +or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   16.21 +specific language governing permissions and limitations under the
   16.22 +License.  When distributing the software, include this License Header
   16.23 +Notice in each file and include the License file at
   16.24 +nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
   16.25 +particular file as subject to the "Classpath" exception as provided
   16.26 +by Oracle in the GPL Version 2 section of the License file that
   16.27 +accompanied this code. If applicable, add the following below the
   16.28 +License Header, with the fields enclosed by brackets [] replaced by
   16.29 +your own identifying information:
   16.30 +"Portions Copyrighted [year] [name of copyright owner]"
   16.31 +
   16.32 +Contributor(s):
   16.33 +
   16.34 +The Original Software is NetBeans. The Initial Developer of the Original
   16.35 +Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
   16.36 +Microsystems, Inc. All Rights Reserved.
   16.37 +
   16.38 +If you wish your version of this file to be governed by only the CDDL
   16.39 +or only the GPL Version 2, indicate your decision by adding
   16.40 +"[Contributor] elects to include this software in this distribution
   16.41 +under the [CDDL or GPL Version 2] license." If you do not indicate a
   16.42 +single choice of license, a recipient has the option to distribute
   16.43 +your version of this file under either the CDDL, the GPL Version 2 or
   16.44 +to extend the choice of license to its licensees as provided above.
   16.45 +However, if you add GPL Version 2 code and therefore, elected the GPL
   16.46 +Version 2 license, then the option applies only if the new code is
   16.47 +made subject to such option by the copyright holder.
   16.48 +-->
   16.49 +<!DOCTYPE fontscolors PUBLIC "-//NetBeans//DTD Editor Fonts and Colors settings 1.1//EN" "http://www.netbeans.org/dtds/EditorFontsColors-1_1.dtd">
   16.50 +
   16.51 +<fontscolors>
   16.52 +    
   16.53 +    
   16.54 +    
   16.55 +    
   16.56 +</fontscolors>
    17.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    17.2 +++ b/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/gen/ANTLRv3.tokens	Fri Jan 11 15:06:14 2013 +0100
    17.3 @@ -0,0 +1,126 @@
    17.4 +T__65=65
    17.5 +T__66=66
    17.6 +T__67=67
    17.7 +T__68=68
    17.8 +T__69=69
    17.9 +T__70=70
   17.10 +T__71=71
   17.11 +T__72=72
   17.12 +T__73=73
   17.13 +T__74=74
   17.14 +T__75=75
   17.15 +T__76=76
   17.16 +T__77=77
   17.17 +T__78=78
   17.18 +T__79=79
   17.19 +T__80=80
   17.20 +T__81=81
   17.21 +T__82=82
   17.22 +T__83=83
   17.23 +T__84=84
   17.24 +T__85=85
   17.25 +T__86=86
   17.26 +T__87=87
   17.27 +T__88=88
   17.28 +T__89=89
   17.29 +T__90=90
   17.30 +T__91=91
   17.31 +T__92=92
   17.32 +T__93=93
   17.33 +DOC_COMMENT=4
   17.34 +PARSER=5
   17.35 +LEXER=6
   17.36 +RULE=7
   17.37 +BLOCK=8
   17.38 +OPTIONAL=9
   17.39 +CLOSURE=10
   17.40 +POSITIVE_CLOSURE=11
   17.41 +SYNPRED=12
   17.42 +RANGE=13
   17.43 +CHAR_RANGE=14
   17.44 +EPSILON=15
   17.45 +ALT=16
   17.46 +EOR=17
   17.47 +EOB=18
   17.48 +EOA=19
   17.49 +ID=20
   17.50 +ARG=21
   17.51 +ARGLIST=22
   17.52 +RET=23
   17.53 +LEXER_GRAMMAR=24
   17.54 +PARSER_GRAMMAR=25
   17.55 +TREE_GRAMMAR=26
   17.56 +COMBINED_GRAMMAR=27
   17.57 +INITACTION=28
   17.58 +LABEL=29
   17.59 +TEMPLATE=30
   17.60 +SCOPE=31
   17.61 +SEMPRED=32
   17.62 +GATED_SEMPRED=33
   17.63 +SYN_SEMPRED=34
   17.64 +BACKTRACK_SEMPRED=35
   17.65 +FRAGMENT=36
   17.66 +TREE_BEGIN=37
   17.67 +ROOT=38
   17.68 +BANG=39
   17.69 +REWRITE=40
   17.70 +TOKENS=41
   17.71 +TOKEN_REF=42
   17.72 +STRING_LITERAL=43
   17.73 +CHAR_LITERAL=44
   17.74 +ACTION=45
   17.75 +OPTIONS=46
   17.76 +INT=47
   17.77 +ARG_ACTION=48
   17.78 +RULE_REF=49
   17.79 +DOUBLE_QUOTE_STRING_LITERAL=50
   17.80 +DOUBLE_ANGLE_STRING_LITERAL=51
   17.81 +SRC=52
   17.82 +SL_COMMENT=53
   17.83 +ML_COMMENT=54
   17.84 +LITERAL_CHAR=55
   17.85 +ESC=56
   17.86 +XDIGIT=57
   17.87 +NESTED_ARG_ACTION=58
   17.88 +ACTION_STRING_LITERAL=59
   17.89 +ACTION_CHAR_LITERAL=60
   17.90 +NESTED_ACTION=61
   17.91 +ACTION_ESC=62
   17.92 +WS_LOOP=63
   17.93 +WS=64
   17.94 +'scope'=31
   17.95 +'fragment'=36
   17.96 +'^('=37
   17.97 +'^'=38
   17.98 +'!'=39
   17.99 +'..'=13
  17.100 +'->'=40
  17.101 +'lexer'=65
  17.102 +'parser'=66
  17.103 +'tree'=67
  17.104 +'grammar'=68
  17.105 +';'=69
  17.106 +'}'=70
  17.107 +'='=71
  17.108 +'@'=72
  17.109 +'::'=73
  17.110 +'*'=74
  17.111 +'protected'=75
  17.112 +'public'=76
  17.113 +'private'=77
  17.114 +'returns'=78
  17.115 +':'=79
  17.116 +'throws'=80
  17.117 +','=81
  17.118 +'('=82
  17.119 +'|'=83
  17.120 +')'=84
  17.121 +'catch'=85
  17.122 +'finally'=86
  17.123 +'+='=87
  17.124 +'=>'=88
  17.125 +'~'=89
  17.126 +'?'=90
  17.127 +'+'=91
  17.128 +'.'=92
  17.129 +'$'=93
    18.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    18.2 +++ b/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/gen/ANTLRv3Lexer.java	Fri Jan 11 15:06:14 2013 +0100
    18.3 @@ -0,0 +1,3646 @@
    18.4 +// $ANTLR 3.3 Nov 30, 2010 12:50:56 /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g 2013-01-11 15:01:27
    18.5 +
    18.6 +package org.netbeans.antlr.editor.gen;
    18.7 +
    18.8 +
    18.9 +import org.antlr.runtime.*;
   18.10 +import java.util.Stack;
   18.11 +import java.util.List;
   18.12 +import java.util.ArrayList;
   18.13 +
   18.14 +public class ANTLRv3Lexer extends Lexer {
   18.15 +    public static final int EOF=-1;
   18.16 +    public static final int T__65=65;
   18.17 +    public static final int T__66=66;
   18.18 +    public static final int T__67=67;
   18.19 +    public static final int T__68=68;
   18.20 +    public static final int T__69=69;
   18.21 +    public static final int T__70=70;
   18.22 +    public static final int T__71=71;
   18.23 +    public static final int T__72=72;
   18.24 +    public static final int T__73=73;
   18.25 +    public static final int T__74=74;
   18.26 +    public static final int T__75=75;
   18.27 +    public static final int T__76=76;
   18.28 +    public static final int T__77=77;
   18.29 +    public static final int T__78=78;
   18.30 +    public static final int T__79=79;
   18.31 +    public static final int T__80=80;
   18.32 +    public static final int T__81=81;
   18.33 +    public static final int T__82=82;
   18.34 +    public static final int T__83=83;
   18.35 +    public static final int T__84=84;
   18.36 +    public static final int T__85=85;
   18.37 +    public static final int T__86=86;
   18.38 +    public static final int T__87=87;
   18.39 +    public static final int T__88=88;
   18.40 +    public static final int T__89=89;
   18.41 +    public static final int T__90=90;
   18.42 +    public static final int T__91=91;
   18.43 +    public static final int T__92=92;
   18.44 +    public static final int T__93=93;
   18.45 +    public static final int DOC_COMMENT=4;
   18.46 +    public static final int PARSER=5;
   18.47 +    public static final int LEXER=6;
   18.48 +    public static final int RULE=7;
   18.49 +    public static final int BLOCK=8;
   18.50 +    public static final int OPTIONAL=9;
   18.51 +    public static final int CLOSURE=10;
   18.52 +    public static final int POSITIVE_CLOSURE=11;
   18.53 +    public static final int SYNPRED=12;
   18.54 +    public static final int RANGE=13;
   18.55 +    public static final int CHAR_RANGE=14;
   18.56 +    public static final int EPSILON=15;
   18.57 +    public static final int ALT=16;
   18.58 +    public static final int EOR=17;
   18.59 +    public static final int EOB=18;
   18.60 +    public static final int EOA=19;
   18.61 +    public static final int ID=20;
   18.62 +    public static final int ARG=21;
   18.63 +    public static final int ARGLIST=22;
   18.64 +    public static final int RET=23;
   18.65 +    public static final int LEXER_GRAMMAR=24;
   18.66 +    public static final int PARSER_GRAMMAR=25;
   18.67 +    public static final int TREE_GRAMMAR=26;
   18.68 +    public static final int COMBINED_GRAMMAR=27;
   18.69 +    public static final int INITACTION=28;
   18.70 +    public static final int LABEL=29;
   18.71 +    public static final int TEMPLATE=30;
   18.72 +    public static final int SCOPE=31;
   18.73 +    public static final int SEMPRED=32;
   18.74 +    public static final int GATED_SEMPRED=33;
   18.75 +    public static final int SYN_SEMPRED=34;
   18.76 +    public static final int BACKTRACK_SEMPRED=35;
   18.77 +    public static final int FRAGMENT=36;
   18.78 +    public static final int TREE_BEGIN=37;
   18.79 +    public static final int ROOT=38;
   18.80 +    public static final int BANG=39;
   18.81 +    public static final int REWRITE=40;
   18.82 +    public static final int TOKENS=41;
   18.83 +    public static final int TOKEN_REF=42;
   18.84 +    public static final int STRING_LITERAL=43;
   18.85 +    public static final int CHAR_LITERAL=44;
   18.86 +    public static final int ACTION=45;
   18.87 +    public static final int OPTIONS=46;
   18.88 +    public static final int INT=47;
   18.89 +    public static final int ARG_ACTION=48;
   18.90 +    public static final int RULE_REF=49;
   18.91 +    public static final int DOUBLE_QUOTE_STRING_LITERAL=50;
   18.92 +    public static final int DOUBLE_ANGLE_STRING_LITERAL=51;
   18.93 +    public static final int SRC=52;
   18.94 +    public static final int SL_COMMENT=53;
   18.95 +    public static final int ML_COMMENT=54;
   18.96 +    public static final int LITERAL_CHAR=55;
   18.97 +    public static final int ESC=56;
   18.98 +    public static final int XDIGIT=57;
   18.99 +    public static final int NESTED_ARG_ACTION=58;
  18.100 +    public static final int ACTION_STRING_LITERAL=59;
  18.101 +    public static final int ACTION_CHAR_LITERAL=60;
  18.102 +    public static final int NESTED_ACTION=61;
  18.103 +    public static final int ACTION_ESC=62;
  18.104 +    public static final int WS_LOOP=63;
  18.105 +    public static final int WS=64;
  18.106 +
  18.107 +    // delegates
  18.108 +    // delegators
  18.109 +
  18.110 +    public ANTLRv3Lexer() {;} 
  18.111 +    public ANTLRv3Lexer(CharStream input) {
  18.112 +        this(input, new RecognizerSharedState());
  18.113 +    }
  18.114 +    public ANTLRv3Lexer(CharStream input, RecognizerSharedState state) {
  18.115 +        super(input,state);
  18.116 +
  18.117 +    }
  18.118 +    public String getGrammarFileName() { return "/Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g"; }
  18.119 +
  18.120 +    // $ANTLR start "SCOPE"
  18.121 +    public final void mSCOPE() throws RecognitionException {
  18.122 +        try {
  18.123 +            int _type = SCOPE;
  18.124 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.125 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:7:7: ( 'scope' )
  18.126 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:7:9: 'scope'
  18.127 +            {
  18.128 +            match("scope"); 
  18.129 +
  18.130 +
  18.131 +            }
  18.132 +
  18.133 +            state.type = _type;
  18.134 +            state.channel = _channel;
  18.135 +        }
  18.136 +        finally {
  18.137 +        }
  18.138 +    }
  18.139 +    // $ANTLR end "SCOPE"
  18.140 +
  18.141 +    // $ANTLR start "FRAGMENT"
  18.142 +    public final void mFRAGMENT() throws RecognitionException {
  18.143 +        try {
  18.144 +            int _type = FRAGMENT;
  18.145 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.146 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:8:10: ( 'fragment' )
  18.147 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:8:12: 'fragment'
  18.148 +            {
  18.149 +            match("fragment"); 
  18.150 +
  18.151 +
  18.152 +            }
  18.153 +
  18.154 +            state.type = _type;
  18.155 +            state.channel = _channel;
  18.156 +        }
  18.157 +        finally {
  18.158 +        }
  18.159 +    }
  18.160 +    // $ANTLR end "FRAGMENT"
  18.161 +
  18.162 +    // $ANTLR start "TREE_BEGIN"
  18.163 +    public final void mTREE_BEGIN() throws RecognitionException {
  18.164 +        try {
  18.165 +            int _type = TREE_BEGIN;
  18.166 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.167 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:9:12: ( '^(' )
  18.168 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:9:14: '^('
  18.169 +            {
  18.170 +            match("^("); 
  18.171 +
  18.172 +
  18.173 +            }
  18.174 +
  18.175 +            state.type = _type;
  18.176 +            state.channel = _channel;
  18.177 +        }
  18.178 +        finally {
  18.179 +        }
  18.180 +    }
  18.181 +    // $ANTLR end "TREE_BEGIN"
  18.182 +
  18.183 +    // $ANTLR start "ROOT"
  18.184 +    public final void mROOT() throws RecognitionException {
  18.185 +        try {
  18.186 +            int _type = ROOT;
  18.187 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.188 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:10:6: ( '^' )
  18.189 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:10:8: '^'
  18.190 +            {
  18.191 +            match('^'); 
  18.192 +
  18.193 +            }
  18.194 +
  18.195 +            state.type = _type;
  18.196 +            state.channel = _channel;
  18.197 +        }
  18.198 +        finally {
  18.199 +        }
  18.200 +    }
  18.201 +    // $ANTLR end "ROOT"
  18.202 +
  18.203 +    // $ANTLR start "BANG"
  18.204 +    public final void mBANG() throws RecognitionException {
  18.205 +        try {
  18.206 +            int _type = BANG;
  18.207 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.208 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:11:6: ( '!' )
  18.209 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:11:8: '!'
  18.210 +            {
  18.211 +            match('!'); 
  18.212 +
  18.213 +            }
  18.214 +
  18.215 +            state.type = _type;
  18.216 +            state.channel = _channel;
  18.217 +        }
  18.218 +        finally {
  18.219 +        }
  18.220 +    }
  18.221 +    // $ANTLR end "BANG"
  18.222 +
  18.223 +    // $ANTLR start "RANGE"
  18.224 +    public final void mRANGE() throws RecognitionException {
  18.225 +        try {
  18.226 +            int _type = RANGE;
  18.227 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.228 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:12:7: ( '..' )
  18.229 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:12:9: '..'
  18.230 +            {
  18.231 +            match(".."); 
  18.232 +
  18.233 +
  18.234 +            }
  18.235 +
  18.236 +            state.type = _type;
  18.237 +            state.channel = _channel;
  18.238 +        }
  18.239 +        finally {
  18.240 +        }
  18.241 +    }
  18.242 +    // $ANTLR end "RANGE"
  18.243 +
  18.244 +    // $ANTLR start "REWRITE"
  18.245 +    public final void mREWRITE() throws RecognitionException {
  18.246 +        try {
  18.247 +            int _type = REWRITE;
  18.248 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.249 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:13:9: ( '->' )
  18.250 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:13:11: '->'
  18.251 +            {
  18.252 +            match("->"); 
  18.253 +
  18.254 +
  18.255 +            }
  18.256 +
  18.257 +            state.type = _type;
  18.258 +            state.channel = _channel;
  18.259 +        }
  18.260 +        finally {
  18.261 +        }
  18.262 +    }
  18.263 +    // $ANTLR end "REWRITE"
  18.264 +
  18.265 +    // $ANTLR start "T__65"
  18.266 +    public final void mT__65() throws RecognitionException {
  18.267 +        try {
  18.268 +            int _type = T__65;
  18.269 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.270 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:14:7: ( 'lexer' )
  18.271 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:14:9: 'lexer'
  18.272 +            {
  18.273 +            match("lexer"); 
  18.274 +
  18.275 +
  18.276 +            }
  18.277 +
  18.278 +            state.type = _type;
  18.279 +            state.channel = _channel;
  18.280 +        }
  18.281 +        finally {
  18.282 +        }
  18.283 +    }
  18.284 +    // $ANTLR end "T__65"
  18.285 +
  18.286 +    // $ANTLR start "T__66"
  18.287 +    public final void mT__66() throws RecognitionException {
  18.288 +        try {
  18.289 +            int _type = T__66;
  18.290 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.291 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:15:7: ( 'parser' )
  18.292 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:15:9: 'parser'
  18.293 +            {
  18.294 +            match("parser"); 
  18.295 +
  18.296 +
  18.297 +            }
  18.298 +
  18.299 +            state.type = _type;
  18.300 +            state.channel = _channel;
  18.301 +        }
  18.302 +        finally {
  18.303 +        }
  18.304 +    }
  18.305 +    // $ANTLR end "T__66"
  18.306 +
  18.307 +    // $ANTLR start "T__67"
  18.308 +    public final void mT__67() throws RecognitionException {
  18.309 +        try {
  18.310 +            int _type = T__67;
  18.311 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.312 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:16:7: ( 'tree' )
  18.313 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:16:9: 'tree'
  18.314 +            {
  18.315 +            match("tree"); 
  18.316 +
  18.317 +
  18.318 +            }
  18.319 +
  18.320 +            state.type = _type;
  18.321 +            state.channel = _channel;
  18.322 +        }
  18.323 +        finally {
  18.324 +        }
  18.325 +    }
  18.326 +    // $ANTLR end "T__67"
  18.327 +
  18.328 +    // $ANTLR start "T__68"
  18.329 +    public final void mT__68() throws RecognitionException {
  18.330 +        try {
  18.331 +            int _type = T__68;
  18.332 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.333 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:17:7: ( 'grammar' )
  18.334 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:17:9: 'grammar'
  18.335 +            {
  18.336 +            match("grammar"); 
  18.337 +
  18.338 +
  18.339 +            }
  18.340 +
  18.341 +            state.type = _type;
  18.342 +            state.channel = _channel;
  18.343 +        }
  18.344 +        finally {
  18.345 +        }
  18.346 +    }
  18.347 +    // $ANTLR end "T__68"
  18.348 +
  18.349 +    // $ANTLR start "T__69"
  18.350 +    public final void mT__69() throws RecognitionException {
  18.351 +        try {
  18.352 +            int _type = T__69;
  18.353 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.354 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:18:7: ( ';' )
  18.355 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:18:9: ';'
  18.356 +            {
  18.357 +            match(';'); 
  18.358 +
  18.359 +            }
  18.360 +
  18.361 +            state.type = _type;
  18.362 +            state.channel = _channel;
  18.363 +        }
  18.364 +        finally {
  18.365 +        }
  18.366 +    }
  18.367 +    // $ANTLR end "T__69"
  18.368 +
  18.369 +    // $ANTLR start "T__70"
  18.370 +    public final void mT__70() throws RecognitionException {
  18.371 +        try {
  18.372 +            int _type = T__70;
  18.373 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.374 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:19:7: ( '}' )
  18.375 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:19:9: '}'
  18.376 +            {
  18.377 +            match('}'); 
  18.378 +
  18.379 +            }
  18.380 +
  18.381 +            state.type = _type;
  18.382 +            state.channel = _channel;
  18.383 +        }
  18.384 +        finally {
  18.385 +        }
  18.386 +    }
  18.387 +    // $ANTLR end "T__70"
  18.388 +
  18.389 +    // $ANTLR start "T__71"
  18.390 +    public final void mT__71() throws RecognitionException {
  18.391 +        try {
  18.392 +            int _type = T__71;
  18.393 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.394 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:20:7: ( '=' )
  18.395 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:20:9: '='
  18.396 +            {
  18.397 +            match('='); 
  18.398 +
  18.399 +            }
  18.400 +
  18.401 +            state.type = _type;
  18.402 +            state.channel = _channel;
  18.403 +        }
  18.404 +        finally {
  18.405 +        }
  18.406 +    }
  18.407 +    // $ANTLR end "T__71"
  18.408 +
  18.409 +    // $ANTLR start "T__72"
  18.410 +    public final void mT__72() throws RecognitionException {
  18.411 +        try {
  18.412 +            int _type = T__72;
  18.413 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.414 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:21:7: ( '@' )
  18.415 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:21:9: '@'
  18.416 +            {
  18.417 +            match('@'); 
  18.418 +
  18.419 +            }
  18.420 +
  18.421 +            state.type = _type;
  18.422 +            state.channel = _channel;
  18.423 +        }
  18.424 +        finally {
  18.425 +        }
  18.426 +    }
  18.427 +    // $ANTLR end "T__72"
  18.428 +
  18.429 +    // $ANTLR start "T__73"
  18.430 +    public final void mT__73() throws RecognitionException {
  18.431 +        try {
  18.432 +            int _type = T__73;
  18.433 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.434 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:22:7: ( '::' )
  18.435 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:22:9: '::'
  18.436 +            {
  18.437 +            match("::"); 
  18.438 +
  18.439 +
  18.440 +            }
  18.441 +
  18.442 +            state.type = _type;
  18.443 +            state.channel = _channel;
  18.444 +        }
  18.445 +        finally {
  18.446 +        }
  18.447 +    }
  18.448 +    // $ANTLR end "T__73"
  18.449 +
  18.450 +    // $ANTLR start "T__74"
  18.451 +    public final void mT__74() throws RecognitionException {
  18.452 +        try {
  18.453 +            int _type = T__74;
  18.454 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.455 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:23:7: ( '*' )
  18.456 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:23:9: '*'
  18.457 +            {
  18.458 +            match('*'); 
  18.459 +
  18.460 +            }
  18.461 +
  18.462 +            state.type = _type;
  18.463 +            state.channel = _channel;
  18.464 +        }
  18.465 +        finally {
  18.466 +        }
  18.467 +    }
  18.468 +    // $ANTLR end "T__74"
  18.469 +
  18.470 +    // $ANTLR start "T__75"
  18.471 +    public final void mT__75() throws RecognitionException {
  18.472 +        try {
  18.473 +            int _type = T__75;
  18.474 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.475 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:24:7: ( 'protected' )
  18.476 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:24:9: 'protected'
  18.477 +            {
  18.478 +            match("protected"); 
  18.479 +
  18.480 +
  18.481 +            }
  18.482 +
  18.483 +            state.type = _type;
  18.484 +            state.channel = _channel;
  18.485 +        }
  18.486 +        finally {
  18.487 +        }
  18.488 +    }
  18.489 +    // $ANTLR end "T__75"
  18.490 +
  18.491 +    // $ANTLR start "T__76"
  18.492 +    public final void mT__76() throws RecognitionException {
  18.493 +        try {
  18.494 +            int _type = T__76;
  18.495 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.496 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:25:7: ( 'public' )
  18.497 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:25:9: 'public'
  18.498 +            {
  18.499 +            match("public"); 
  18.500 +
  18.501 +
  18.502 +            }
  18.503 +
  18.504 +            state.type = _type;
  18.505 +            state.channel = _channel;
  18.506 +        }
  18.507 +        finally {
  18.508 +        }
  18.509 +    }
  18.510 +    // $ANTLR end "T__76"
  18.511 +
  18.512 +    // $ANTLR start "T__77"
  18.513 +    public final void mT__77() throws RecognitionException {
  18.514 +        try {
  18.515 +            int _type = T__77;
  18.516 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.517 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:26:7: ( 'private' )
  18.518 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:26:9: 'private'
  18.519 +            {
  18.520 +            match("private"); 
  18.521 +
  18.522 +
  18.523 +            }
  18.524 +
  18.525 +            state.type = _type;
  18.526 +            state.channel = _channel;
  18.527 +        }
  18.528 +        finally {
  18.529 +        }
  18.530 +    }
  18.531 +    // $ANTLR end "T__77"
  18.532 +
  18.533 +    // $ANTLR start "T__78"
  18.534 +    public final void mT__78() throws RecognitionException {
  18.535 +        try {
  18.536 +            int _type = T__78;
  18.537 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.538 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:27:7: ( 'returns' )
  18.539 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:27:9: 'returns'
  18.540 +            {
  18.541 +            match("returns"); 
  18.542 +
  18.543 +
  18.544 +            }
  18.545 +
  18.546 +            state.type = _type;
  18.547 +            state.channel = _channel;
  18.548 +        }
  18.549 +        finally {
  18.550 +        }
  18.551 +    }
  18.552 +    // $ANTLR end "T__78"
  18.553 +
  18.554 +    // $ANTLR start "T__79"
  18.555 +    public final void mT__79() throws RecognitionException {
  18.556 +        try {
  18.557 +            int _type = T__79;
  18.558 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.559 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:28:7: ( ':' )
  18.560 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:28:9: ':'
  18.561 +            {
  18.562 +            match(':'); 
  18.563 +
  18.564 +            }
  18.565 +
  18.566 +            state.type = _type;
  18.567 +            state.channel = _channel;
  18.568 +        }
  18.569 +        finally {
  18.570 +        }
  18.571 +    }
  18.572 +    // $ANTLR end "T__79"
  18.573 +
  18.574 +    // $ANTLR start "T__80"
  18.575 +    public final void mT__80() throws RecognitionException {
  18.576 +        try {
  18.577 +            int _type = T__80;
  18.578 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.579 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:29:7: ( 'throws' )
  18.580 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:29:9: 'throws'
  18.581 +            {
  18.582 +            match("throws"); 
  18.583 +
  18.584 +
  18.585 +            }
  18.586 +
  18.587 +            state.type = _type;
  18.588 +            state.channel = _channel;
  18.589 +        }
  18.590 +        finally {
  18.591 +        }
  18.592 +    }
  18.593 +    // $ANTLR end "T__80"
  18.594 +
  18.595 +    // $ANTLR start "T__81"
  18.596 +    public final void mT__81() throws RecognitionException {
  18.597 +        try {
  18.598 +            int _type = T__81;
  18.599 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.600 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:30:7: ( ',' )
  18.601 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:30:9: ','
  18.602 +            {
  18.603 +            match(','); 
  18.604 +
  18.605 +            }
  18.606 +
  18.607 +            state.type = _type;
  18.608 +            state.channel = _channel;
  18.609 +        }
  18.610 +        finally {
  18.611 +        }
  18.612 +    }
  18.613 +    // $ANTLR end "T__81"
  18.614 +
  18.615 +    // $ANTLR start "T__82"
  18.616 +    public final void mT__82() throws RecognitionException {
  18.617 +        try {
  18.618 +            int _type = T__82;
  18.619 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.620 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:31:7: ( '(' )
  18.621 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:31:9: '('
  18.622 +            {
  18.623 +            match('('); 
  18.624 +
  18.625 +            }
  18.626 +
  18.627 +            state.type = _type;
  18.628 +            state.channel = _channel;
  18.629 +        }
  18.630 +        finally {
  18.631 +        }
  18.632 +    }
  18.633 +    // $ANTLR end "T__82"
  18.634 +
  18.635 +    // $ANTLR start "T__83"
  18.636 +    public final void mT__83() throws RecognitionException {
  18.637 +        try {
  18.638 +            int _type = T__83;
  18.639 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.640 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:32:7: ( '|' )
  18.641 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:32:9: '|'
  18.642 +            {
  18.643 +            match('|'); 
  18.644 +
  18.645 +            }
  18.646 +
  18.647 +            state.type = _type;
  18.648 +            state.channel = _channel;
  18.649 +        }
  18.650 +        finally {
  18.651 +        }
  18.652 +    }
  18.653 +    // $ANTLR end "T__83"
  18.654 +
  18.655 +    // $ANTLR start "T__84"
  18.656 +    public final void mT__84() throws RecognitionException {
  18.657 +        try {
  18.658 +            int _type = T__84;
  18.659 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.660 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:33:7: ( ')' )
  18.661 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:33:9: ')'
  18.662 +            {
  18.663 +            match(')'); 
  18.664 +
  18.665 +            }
  18.666 +
  18.667 +            state.type = _type;
  18.668 +            state.channel = _channel;
  18.669 +        }
  18.670 +        finally {
  18.671 +        }
  18.672 +    }
  18.673 +    // $ANTLR end "T__84"
  18.674 +
  18.675 +    // $ANTLR start "T__85"
  18.676 +    public final void mT__85() throws RecognitionException {
  18.677 +        try {
  18.678 +            int _type = T__85;
  18.679 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.680 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:34:7: ( 'catch' )
  18.681 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:34:9: 'catch'
  18.682 +            {
  18.683 +            match("catch"); 
  18.684 +
  18.685 +
  18.686 +            }
  18.687 +
  18.688 +            state.type = _type;
  18.689 +            state.channel = _channel;
  18.690 +        }
  18.691 +        finally {
  18.692 +        }
  18.693 +    }
  18.694 +    // $ANTLR end "T__85"
  18.695 +
  18.696 +    // $ANTLR start "T__86"
  18.697 +    public final void mT__86() throws RecognitionException {
  18.698 +        try {
  18.699 +            int _type = T__86;
  18.700 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.701 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:35:7: ( 'finally' )
  18.702 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:35:9: 'finally'
  18.703 +            {
  18.704 +            match("finally"); 
  18.705 +
  18.706 +
  18.707 +            }
  18.708 +
  18.709 +            state.type = _type;
  18.710 +            state.channel = _channel;
  18.711 +        }
  18.712 +        finally {
  18.713 +        }
  18.714 +    }
  18.715 +    // $ANTLR end "T__86"
  18.716 +
  18.717 +    // $ANTLR start "T__87"
  18.718 +    public final void mT__87() throws RecognitionException {
  18.719 +        try {
  18.720 +            int _type = T__87;
  18.721 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.722 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:36:7: ( '+=' )
  18.723 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:36:9: '+='
  18.724 +            {
  18.725 +            match("+="); 
  18.726 +
  18.727 +
  18.728 +            }
  18.729 +
  18.730 +            state.type = _type;
  18.731 +            state.channel = _channel;
  18.732 +        }
  18.733 +        finally {
  18.734 +        }
  18.735 +    }
  18.736 +    // $ANTLR end "T__87"
  18.737 +
  18.738 +    // $ANTLR start "T__88"
  18.739 +    public final void mT__88() throws RecognitionException {
  18.740 +        try {
  18.741 +            int _type = T__88;
  18.742 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.743 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:37:7: ( '=>' )
  18.744 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:37:9: '=>'
  18.745 +            {
  18.746 +            match("=>"); 
  18.747 +
  18.748 +
  18.749 +            }
  18.750 +
  18.751 +            state.type = _type;
  18.752 +            state.channel = _channel;
  18.753 +        }
  18.754 +        finally {
  18.755 +        }
  18.756 +    }
  18.757 +    // $ANTLR end "T__88"
  18.758 +
  18.759 +    // $ANTLR start "T__89"
  18.760 +    public final void mT__89() throws RecognitionException {
  18.761 +        try {
  18.762 +            int _type = T__89;
  18.763 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.764 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:38:7: ( '~' )
  18.765 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:38:9: '~'
  18.766 +            {
  18.767 +            match('~'); 
  18.768 +
  18.769 +            }
  18.770 +
  18.771 +            state.type = _type;
  18.772 +            state.channel = _channel;
  18.773 +        }
  18.774 +        finally {
  18.775 +        }
  18.776 +    }
  18.777 +    // $ANTLR end "T__89"
  18.778 +
  18.779 +    // $ANTLR start "T__90"
  18.780 +    public final void mT__90() throws RecognitionException {
  18.781 +        try {
  18.782 +            int _type = T__90;
  18.783 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.784 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:39:7: ( '?' )
  18.785 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:39:9: '?'
  18.786 +            {
  18.787 +            match('?'); 
  18.788 +
  18.789 +            }
  18.790 +
  18.791 +            state.type = _type;
  18.792 +            state.channel = _channel;
  18.793 +        }
  18.794 +        finally {
  18.795 +        }
  18.796 +    }
  18.797 +    // $ANTLR end "T__90"
  18.798 +
  18.799 +    // $ANTLR start "T__91"
  18.800 +    public final void mT__91() throws RecognitionException {
  18.801 +        try {
  18.802 +            int _type = T__91;
  18.803 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.804 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:40:7: ( '+' )
  18.805 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:40:9: '+'
  18.806 +            {
  18.807 +            match('+'); 
  18.808 +
  18.809 +            }
  18.810 +
  18.811 +            state.type = _type;
  18.812 +            state.channel = _channel;
  18.813 +        }
  18.814 +        finally {
  18.815 +        }
  18.816 +    }
  18.817 +    // $ANTLR end "T__91"
  18.818 +
  18.819 +    // $ANTLR start "T__92"
  18.820 +    public final void mT__92() throws RecognitionException {
  18.821 +        try {
  18.822 +            int _type = T__92;
  18.823 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.824 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:41:7: ( '.' )
  18.825 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:41:9: '.'
  18.826 +            {
  18.827 +            match('.'); 
  18.828 +
  18.829 +            }
  18.830 +
  18.831 +            state.type = _type;
  18.832 +            state.channel = _channel;
  18.833 +        }
  18.834 +        finally {
  18.835 +        }
  18.836 +    }
  18.837 +    // $ANTLR end "T__92"
  18.838 +
  18.839 +    // $ANTLR start "T__93"
  18.840 +    public final void mT__93() throws RecognitionException {
  18.841 +        try {
  18.842 +            int _type = T__93;
  18.843 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.844 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:42:7: ( '$' )
  18.845 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:42:9: '$'
  18.846 +            {
  18.847 +            match('$'); 
  18.848 +
  18.849 +            }
  18.850 +
  18.851 +            state.type = _type;
  18.852 +            state.channel = _channel;
  18.853 +        }
  18.854 +        finally {
  18.855 +        }
  18.856 +    }
  18.857 +    // $ANTLR end "T__93"
  18.858 +
  18.859 +    // $ANTLR start "SL_COMMENT"
  18.860 +    public final void mSL_COMMENT() throws RecognitionException {
  18.861 +        try {
  18.862 +            int _type = SL_COMMENT;
  18.863 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.864 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:457:3: ( '//' ( ' $ANTLR ' SRC | (~ ( '\\r' | '\\n' ) )* ) ( '\\r' )? '\\n' )
  18.865 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:457:5: '//' ( ' $ANTLR ' SRC | (~ ( '\\r' | '\\n' ) )* ) ( '\\r' )? '\\n'
  18.866 +            {
  18.867 +            match("//"); 
  18.868 +
  18.869 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:458:5: ( ' $ANTLR ' SRC | (~ ( '\\r' | '\\n' ) )* )
  18.870 +            int alt2=2;
  18.871 +            alt2 = dfa2.predict(input);
  18.872 +            switch (alt2) {
  18.873 +                case 1 :
  18.874 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:458:7: ' $ANTLR ' SRC
  18.875 +                    {
  18.876 +                    match(" $ANTLR "); 
  18.877 +
  18.878 +                    mSRC(); 
  18.879 +
  18.880 +                    }
  18.881 +                    break;
  18.882 +                case 2 :
  18.883 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:459:6: (~ ( '\\r' | '\\n' ) )*
  18.884 +                    {
  18.885 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:459:6: (~ ( '\\r' | '\\n' ) )*
  18.886 +                    loop1:
  18.887 +                    do {
  18.888 +                        int alt1=2;
  18.889 +                        int LA1_0 = input.LA(1);
  18.890 +
  18.891 +                        if ( ((LA1_0>='\u0000' && LA1_0<='\t')||(LA1_0>='\u000B' && LA1_0<='\f')||(LA1_0>='\u000E' && LA1_0<='\uFFFF')) ) {
  18.892 +                            alt1=1;
  18.893 +                        }
  18.894 +
  18.895 +
  18.896 +                        switch (alt1) {
  18.897 +                    	case 1 :
  18.898 +                    	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:459:6: ~ ( '\\r' | '\\n' )
  18.899 +                    	    {
  18.900 +                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
  18.901 +                    	        input.consume();
  18.902 +
  18.903 +                    	    }
  18.904 +                    	    else {
  18.905 +                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
  18.906 +                    	        recover(mse);
  18.907 +                    	        throw mse;}
  18.908 +
  18.909 +
  18.910 +                    	    }
  18.911 +                    	    break;
  18.912 +
  18.913 +                    	default :
  18.914 +                    	    break loop1;
  18.915 +                        }
  18.916 +                    } while (true);
  18.917 +
  18.918 +
  18.919 +                    }
  18.920 +                    break;
  18.921 +
  18.922 +            }
  18.923 +
  18.924 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:461:3: ( '\\r' )?
  18.925 +            int alt3=2;
  18.926 +            int LA3_0 = input.LA(1);
  18.927 +
  18.928 +            if ( (LA3_0=='\r') ) {
  18.929 +                alt3=1;
  18.930 +            }
  18.931 +            switch (alt3) {
  18.932 +                case 1 :
  18.933 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:461:3: '\\r'
  18.934 +                    {
  18.935 +                    match('\r'); 
  18.936 +
  18.937 +                    }
  18.938 +                    break;
  18.939 +
  18.940 +            }
  18.941 +
  18.942 +            match('\n'); 
  18.943 +            _channel=HIDDEN;
  18.944 +
  18.945 +            }
  18.946 +
  18.947 +            state.type = _type;
  18.948 +            state.channel = _channel;
  18.949 +        }
  18.950 +        finally {
  18.951 +        }
  18.952 +    }
  18.953 +    // $ANTLR end "SL_COMMENT"
  18.954 +
  18.955 +    // $ANTLR start "ML_COMMENT"
  18.956 +    public final void mML_COMMENT() throws RecognitionException {
  18.957 +        try {
  18.958 +            int _type = ML_COMMENT;
  18.959 +            int _channel = DEFAULT_TOKEN_CHANNEL;
  18.960 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:466:2: ( '/*' ( . )* '*/' )
  18.961 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:466:4: '/*' ( . )* '*/'
  18.962 +            {
  18.963 +            match("/*"); 
  18.964 +
  18.965 +            if (input.LA(1)=='*') _type=DOC_COMMENT; else _channel=HIDDEN;
  18.966 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:466:74: ( . )*
  18.967 +            loop4:
  18.968 +            do {
  18.969 +                int alt4=2;
  18.970 +                int LA4_0 = input.LA(1);
  18.971 +
  18.972 +                if ( (LA4_0=='*') ) {
  18.973 +                    int LA4_1 = input.LA(2);
  18.974 +
  18.975 +                    if ( (LA4_1=='/') ) {
  18.976 +                        alt4=2;
  18.977 +                    }
  18.978 +                    else if ( ((LA4_1>='\u0000' && LA4_1<='.')||(LA4_1>='0' && LA4_1<='\uFFFF')) ) {
  18.979 +                        alt4=1;
  18.980 +                    }
  18.981 +
  18.982 +
  18.983 +                }
  18.984 +                else if ( ((LA4_0>='\u0000' && LA4_0<=')')||(LA4_0>='+' && LA4_0<='\uFFFF')) ) {
  18.985 +                    alt4=1;
  18.986 +                }
  18.987 +
  18.988 +
  18.989 +                switch (alt4) {
  18.990 +            	case 1 :
  18.991 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:466:74: .
  18.992 +            	    {
  18.993 +            	    matchAny(); 
  18.994 +
  18.995 +            	    }
  18.996 +            	    break;
  18.997 +
  18.998 +            	default :
  18.999 +            	    break loop4;
 18.1000 +                }
 18.1001 +            } while (true);
 18.1002 +
 18.1003 +            match("*/"); 
 18.1004 +
 18.1005 +
 18.1006 +            }
 18.1007 +
 18.1008 +            state.type = _type;
 18.1009 +            state.channel = _channel;
 18.1010 +        }
 18.1011 +        finally {
 18.1012 +        }
 18.1013 +    }
 18.1014 +    // $ANTLR end "ML_COMMENT"
 18.1015 +
 18.1016 +    // $ANTLR start "CHAR_LITERAL"
 18.1017 +    public final void mCHAR_LITERAL() throws RecognitionException {
 18.1018 +        try {
 18.1019 +            int _type = CHAR_LITERAL;
 18.1020 +            int _channel = DEFAULT_TOKEN_CHANNEL;
 18.1021 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:470:2: ( '\\'' LITERAL_CHAR '\\'' )
 18.1022 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:470:4: '\\'' LITERAL_CHAR '\\''
 18.1023 +            {
 18.1024 +            match('\''); 
 18.1025 +            mLITERAL_CHAR(); 
 18.1026 +            match('\''); 
 18.1027 +
 18.1028 +            }
 18.1029 +
 18.1030 +            state.type = _type;
 18.1031 +            state.channel = _channel;
 18.1032 +        }
 18.1033 +        finally {
 18.1034 +        }
 18.1035 +    }
 18.1036 +    // $ANTLR end "CHAR_LITERAL"
 18.1037 +
 18.1038 +    // $ANTLR start "STRING_LITERAL"
 18.1039 +    public final void mSTRING_LITERAL() throws RecognitionException {
 18.1040 +        try {
 18.1041 +            int _type = STRING_LITERAL;
 18.1042 +            int _channel = DEFAULT_TOKEN_CHANNEL;
 18.1043 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:474:2: ( '\\'' LITERAL_CHAR ( LITERAL_CHAR )* '\\'' )
 18.1044 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:474:4: '\\'' LITERAL_CHAR ( LITERAL_CHAR )* '\\''
 18.1045 +            {
 18.1046 +            match('\''); 
 18.1047 +            mLITERAL_CHAR(); 
 18.1048 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:474:22: ( LITERAL_CHAR )*
 18.1049 +            loop5:
 18.1050 +            do {
 18.1051 +                int alt5=2;
 18.1052 +                int LA5_0 = input.LA(1);
 18.1053 +
 18.1054 +                if ( ((LA5_0>='\u0000' && LA5_0<='&')||(LA5_0>='(' && LA5_0<='\uFFFF')) ) {
 18.1055 +                    alt5=1;
 18.1056 +                }
 18.1057 +
 18.1058 +
 18.1059 +                switch (alt5) {
 18.1060 +            	case 1 :
 18.1061 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:474:22: LITERAL_CHAR
 18.1062 +            	    {
 18.1063 +            	    mLITERAL_CHAR(); 
 18.1064 +
 18.1065 +            	    }
 18.1066 +            	    break;
 18.1067 +
 18.1068 +            	default :
 18.1069 +            	    break loop5;
 18.1070 +                }
 18.1071 +            } while (true);
 18.1072 +
 18.1073 +            match('\''); 
 18.1074 +
 18.1075 +            }
 18.1076 +
 18.1077 +            state.type = _type;
 18.1078 +            state.channel = _channel;
 18.1079 +        }
 18.1080 +        finally {
 18.1081 +        }
 18.1082 +    }
 18.1083 +    // $ANTLR end "STRING_LITERAL"
 18.1084 +
 18.1085 +    // $ANTLR start "LITERAL_CHAR"
 18.1086 +    public final void mLITERAL_CHAR() throws RecognitionException {
 18.1087 +        try {
 18.1088 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:479:2: ( ESC | ~ ( '\\'' | '\\\\' ) )
 18.1089 +            int alt6=2;
 18.1090 +            int LA6_0 = input.LA(1);
 18.1091 +
 18.1092 +            if ( (LA6_0=='\\') ) {
 18.1093 +                alt6=1;
 18.1094 +            }
 18.1095 +            else if ( ((LA6_0>='\u0000' && LA6_0<='&')||(LA6_0>='(' && LA6_0<='[')||(LA6_0>=']' && LA6_0<='\uFFFF')) ) {
 18.1096 +                alt6=2;
 18.1097 +            }
 18.1098 +            else {
 18.1099 +                NoViableAltException nvae =
 18.1100 +                    new NoViableAltException("", 6, 0, input);
 18.1101 +
 18.1102 +                throw nvae;
 18.1103 +            }
 18.1104 +            switch (alt6) {
 18.1105 +                case 1 :
 18.1106 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:479:4: ESC
 18.1107 +                    {
 18.1108 +                    mESC(); 
 18.1109 +
 18.1110 +                    }
 18.1111 +                    break;
 18.1112 +                case 2 :
 18.1113 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:480:4: ~ ( '\\'' | '\\\\' )
 18.1114 +                    {
 18.1115 +                    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
 18.1116 +                        input.consume();
 18.1117 +
 18.1118 +                    }
 18.1119 +                    else {
 18.1120 +                        MismatchedSetException mse = new MismatchedSetException(null,input);
 18.1121 +                        recover(mse);
 18.1122 +                        throw mse;}
 18.1123 +
 18.1124 +
 18.1125 +                    }
 18.1126 +                    break;
 18.1127 +
 18.1128 +            }
 18.1129 +        }
 18.1130 +        finally {
 18.1131 +        }
 18.1132 +    }
 18.1133 +    // $ANTLR end "LITERAL_CHAR"
 18.1134 +
 18.1135 +    // $ANTLR start "DOUBLE_QUOTE_STRING_LITERAL"
 18.1136 +    public final void mDOUBLE_QUOTE_STRING_LITERAL() throws RecognitionException {
 18.1137 +        try {
 18.1138 +            int _type = DOUBLE_QUOTE_STRING_LITERAL;
 18.1139 +            int _channel = DEFAULT_TOKEN_CHANNEL;
 18.1140 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:484:2: ( '\"' ( ESC | ~ ( '\\\\' | '\"' ) )* '\"' )
 18.1141 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:484:4: '\"' ( ESC | ~ ( '\\\\' | '\"' ) )* '\"'
 18.1142 +            {
 18.1143 +            match('\"'); 
 18.1144 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:484:8: ( ESC | ~ ( '\\\\' | '\"' ) )*
 18.1145 +            loop7:
 18.1146 +            do {
 18.1147 +                int alt7=3;
 18.1148 +                int LA7_0 = input.LA(1);
 18.1149 +
 18.1150 +                if ( (LA7_0=='\\') ) {
 18.1151 +                    alt7=1;
 18.1152 +                }
 18.1153 +                else if ( ((LA7_0>='\u0000' && LA7_0<='!')||(LA7_0>='#' && LA7_0<='[')||(LA7_0>=']' && LA7_0<='\uFFFF')) ) {
 18.1154 +                    alt7=2;
 18.1155 +                }
 18.1156 +
 18.1157 +
 18.1158 +                switch (alt7) {
 18.1159 +            	case 1 :
 18.1160 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:484:9: ESC
 18.1161 +            	    {
 18.1162 +            	    mESC(); 
 18.1163 +
 18.1164 +            	    }
 18.1165 +            	    break;
 18.1166 +            	case 2 :
 18.1167 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:484:15: ~ ( '\\\\' | '\"' )
 18.1168 +            	    {
 18.1169 +            	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
 18.1170 +            	        input.consume();
 18.1171 +
 18.1172 +            	    }
 18.1173 +            	    else {
 18.1174 +            	        MismatchedSetException mse = new MismatchedSetException(null,input);
 18.1175 +            	        recover(mse);
 18.1176 +            	        throw mse;}
 18.1177 +
 18.1178 +
 18.1179 +            	    }
 18.1180 +            	    break;
 18.1181 +
 18.1182 +            	default :
 18.1183 +            	    break loop7;
 18.1184 +                }
 18.1185 +            } while (true);
 18.1186 +
 18.1187 +            match('\"'); 
 18.1188 +
 18.1189 +            }
 18.1190 +
 18.1191 +            state.type = _type;
 18.1192 +            state.channel = _channel;
 18.1193 +        }
 18.1194 +        finally {
 18.1195 +        }
 18.1196 +    }
 18.1197 +    // $ANTLR end "DOUBLE_QUOTE_STRING_LITERAL"
 18.1198 +
 18.1199 +    // $ANTLR start "DOUBLE_ANGLE_STRING_LITERAL"
 18.1200 +    public final void mDOUBLE_ANGLE_STRING_LITERAL() throws RecognitionException {
 18.1201 +        try {
 18.1202 +            int _type = DOUBLE_ANGLE_STRING_LITERAL;
 18.1203 +            int _channel = DEFAULT_TOKEN_CHANNEL;
 18.1204 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:488:2: ( '<<' ( . )* '>>' )
 18.1205 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:488:4: '<<' ( . )* '>>'
 18.1206 +            {
 18.1207 +            match("<<"); 
 18.1208 +
 18.1209 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:488:9: ( . )*
 18.1210 +            loop8:
 18.1211 +            do {
 18.1212 +                int alt8=2;
 18.1213 +                int LA8_0 = input.LA(1);
 18.1214 +
 18.1215 +                if ( (LA8_0=='>') ) {
 18.1216 +                    int LA8_1 = input.LA(2);
 18.1217 +
 18.1218 +                    if ( (LA8_1=='>') ) {
 18.1219 +                        alt8=2;
 18.1220 +                    }
 18.1221 +                    else if ( ((LA8_1>='\u0000' && LA8_1<='=')||(LA8_1>='?' && LA8_1<='\uFFFF')) ) {
 18.1222 +                        alt8=1;
 18.1223 +                    }
 18.1224 +
 18.1225 +
 18.1226 +                }
 18.1227 +                else if ( ((LA8_0>='\u0000' && LA8_0<='=')||(LA8_0>='?' && LA8_0<='\uFFFF')) ) {
 18.1228 +                    alt8=1;
 18.1229 +                }
 18.1230 +
 18.1231 +
 18.1232 +                switch (alt8) {
 18.1233 +            	case 1 :
 18.1234 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:488:9: .
 18.1235 +            	    {
 18.1236 +            	    matchAny(); 
 18.1237 +
 18.1238 +            	    }
 18.1239 +            	    break;
 18.1240 +
 18.1241 +            	default :
 18.1242 +            	    break loop8;
 18.1243 +                }
 18.1244 +            } while (true);
 18.1245 +
 18.1246 +            match(">>"); 
 18.1247 +
 18.1248 +
 18.1249 +            }
 18.1250 +
 18.1251 +            state.type = _type;
 18.1252 +            state.channel = _channel;
 18.1253 +        }
 18.1254 +        finally {
 18.1255 +        }
 18.1256 +    }
 18.1257 +    // $ANTLR end "DOUBLE_ANGLE_STRING_LITERAL"
 18.1258 +
 18.1259 +    // $ANTLR start "ESC"
 18.1260 +    public final void mESC() throws RecognitionException {
 18.1261 +        try {
 18.1262 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:492:5: ( '\\\\' ( 'n' | 'r' | 't' | 'b' | 'f' | '\"' | '\\'' | '\\\\' | '>' | 'u' XDIGIT XDIGIT XDIGIT XDIGIT | . ) )
 18.1263 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:492:7: '\\\\' ( 'n' | 'r' | 't' | 'b' | 'f' | '\"' | '\\'' | '\\\\' | '>' | 'u' XDIGIT XDIGIT XDIGIT XDIGIT | . )
 18.1264 +            {
 18.1265 +            match('\\'); 
 18.1266 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:493:3: ( 'n' | 'r' | 't' | 'b' | 'f' | '\"' | '\\'' | '\\\\' | '>' | 'u' XDIGIT XDIGIT XDIGIT XDIGIT | . )
 18.1267 +            int alt9=11;
 18.1268 +            alt9 = dfa9.predict(input);
 18.1269 +            switch (alt9) {
 18.1270 +                case 1 :
 18.1271 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:493:5: 'n'
 18.1272 +                    {
 18.1273 +                    match('n'); 
 18.1274 +
 18.1275 +                    }
 18.1276 +                    break;
 18.1277 +                case 2 :
 18.1278 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:494:5: 'r'
 18.1279 +                    {
 18.1280 +                    match('r'); 
 18.1281 +
 18.1282 +                    }
 18.1283 +                    break;
 18.1284 +                case 3 :
 18.1285 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:495:5: 't'
 18.1286 +                    {
 18.1287 +                    match('t'); 
 18.1288 +
 18.1289 +                    }
 18.1290 +                    break;
 18.1291 +                case 4 :
 18.1292 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:496:5: 'b'
 18.1293 +                    {
 18.1294 +                    match('b'); 
 18.1295 +
 18.1296 +                    }
 18.1297 +                    break;
 18.1298 +                case 5 :
 18.1299 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:497:5: 'f'
 18.1300 +                    {
 18.1301 +                    match('f'); 
 18.1302 +
 18.1303 +                    }
 18.1304 +                    break;
 18.1305 +                case 6 :
 18.1306 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:498:5: '\"'
 18.1307 +                    {
 18.1308 +                    match('\"'); 
 18.1309 +
 18.1310 +                    }
 18.1311 +                    break;
 18.1312 +                case 7 :
 18.1313 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:499:5: '\\''
 18.1314 +                    {
 18.1315 +                    match('\''); 
 18.1316 +
 18.1317 +                    }
 18.1318 +                    break;
 18.1319 +                case 8 :
 18.1320 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:500:5: '\\\\'
 18.1321 +                    {
 18.1322 +                    match('\\'); 
 18.1323 +
 18.1324 +                    }
 18.1325 +                    break;
 18.1326 +                case 9 :
 18.1327 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:501:5: '>'
 18.1328 +                    {
 18.1329 +                    match('>'); 
 18.1330 +
 18.1331 +                    }
 18.1332 +                    break;
 18.1333 +                case 10 :
 18.1334 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:502:5: 'u' XDIGIT XDIGIT XDIGIT XDIGIT
 18.1335 +                    {
 18.1336 +                    match('u'); 
 18.1337 +                    mXDIGIT(); 
 18.1338 +                    mXDIGIT(); 
 18.1339 +                    mXDIGIT(); 
 18.1340 +                    mXDIGIT(); 
 18.1341 +
 18.1342 +                    }
 18.1343 +                    break;
 18.1344 +                case 11 :
 18.1345 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:503:5: .
 18.1346 +                    {
 18.1347 +                    matchAny(); 
 18.1348 +
 18.1349 +                    }
 18.1350 +                    break;
 18.1351 +
 18.1352 +            }
 18.1353 +
 18.1354 +
 18.1355 +            }
 18.1356 +
 18.1357 +        }
 18.1358 +        finally {
 18.1359 +        }
 18.1360 +    }
 18.1361 +    // $ANTLR end "ESC"
 18.1362 +
 18.1363 +    // $ANTLR start "XDIGIT"
 18.1364 +    public final void mXDIGIT() throws RecognitionException {
 18.1365 +        try {
 18.1366 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:508:8: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
 18.1367 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:
 18.1368 +            {
 18.1369 +            if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='F')||(input.LA(1)>='a' && input.LA(1)<='f') ) {
 18.1370 +                input.consume();
 18.1371 +
 18.1372 +            }
 18.1373 +            else {
 18.1374 +                MismatchedSetException mse = new MismatchedSetException(null,input);
 18.1375 +                recover(mse);
 18.1376 +                throw mse;}
 18.1377 +
 18.1378 +
 18.1379 +            }
 18.1380 +
 18.1381 +        }
 18.1382 +        finally {
 18.1383 +        }
 18.1384 +    }
 18.1385 +    // $ANTLR end "XDIGIT"
 18.1386 +
 18.1387 +    // $ANTLR start "INT"
 18.1388 +    public final void mINT() throws RecognitionException {
 18.1389 +        try {
 18.1390 +            int _type = INT;
 18.1391 +            int _channel = DEFAULT_TOKEN_CHANNEL;
 18.1392 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:514:5: ( ( '0' .. '9' )+ )
 18.1393 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:514:7: ( '0' .. '9' )+
 18.1394 +            {
 18.1395 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:514:7: ( '0' .. '9' )+
 18.1396 +            int cnt10=0;
 18.1397 +            loop10:
 18.1398 +            do {
 18.1399 +                int alt10=2;
 18.1400 +                int LA10_0 = input.LA(1);
 18.1401 +
 18.1402 +                if ( ((LA10_0>='0' && LA10_0<='9')) ) {
 18.1403 +                    alt10=1;
 18.1404 +                }
 18.1405 +
 18.1406 +
 18.1407 +                switch (alt10) {
 18.1408 +            	case 1 :
 18.1409 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:514:7: '0' .. '9'
 18.1410 +            	    {
 18.1411 +            	    matchRange('0','9'); 
 18.1412 +
 18.1413 +            	    }
 18.1414 +            	    break;
 18.1415 +
 18.1416 +            	default :
 18.1417 +            	    if ( cnt10 >= 1 ) break loop10;
 18.1418 +                        EarlyExitException eee =
 18.1419 +                            new EarlyExitException(10, input);
 18.1420 +                        throw eee;
 18.1421 +                }
 18.1422 +                cnt10++;
 18.1423 +            } while (true);
 18.1424 +
 18.1425 +
 18.1426 +            }
 18.1427 +
 18.1428 +            state.type = _type;
 18.1429 +            state.channel = _channel;
 18.1430 +        }
 18.1431 +        finally {
 18.1432 +        }
 18.1433 +    }
 18.1434 +    // $ANTLR end "INT"
 18.1435 +
 18.1436 +    // $ANTLR start "ARG_ACTION"
 18.1437 +    public final void mARG_ACTION() throws RecognitionException {
 18.1438 +        try {
 18.1439 +            int _type = ARG_ACTION;
 18.1440 +            int _channel = DEFAULT_TOKEN_CHANNEL;
 18.1441 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:518:2: ( NESTED_ARG_ACTION )
 18.1442 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:518:4: NESTED_ARG_ACTION
 18.1443 +            {
 18.1444 +            mNESTED_ARG_ACTION(); 
 18.1445 +
 18.1446 +            }
 18.1447 +
 18.1448 +            state.type = _type;
 18.1449 +            state.channel = _channel;
 18.1450 +        }
 18.1451 +        finally {
 18.1452 +        }
 18.1453 +    }
 18.1454 +    // $ANTLR end "ARG_ACTION"
 18.1455 +
 18.1456 +    // $ANTLR start "NESTED_ARG_ACTION"
 18.1457 +    public final void mNESTED_ARG_ACTION() throws RecognitionException {
 18.1458 +        try {
 18.1459 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:522:19: ( '[' ( options {greedy=false; k=1; } : NESTED_ARG_ACTION | ACTION_STRING_LITERAL | ACTION_CHAR_LITERAL | . )* ']' )
 18.1460 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:523:2: '[' ( options {greedy=false; k=1; } : NESTED_ARG_ACTION | ACTION_STRING_LITERAL | ACTION_CHAR_LITERAL | . )* ']'
 18.1461 +            {
 18.1462 +            match('['); 
 18.1463 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:524:2: ( options {greedy=false; k=1; } : NESTED_ARG_ACTION | ACTION_STRING_LITERAL | ACTION_CHAR_LITERAL | . )*
 18.1464 +            loop11:
 18.1465 +            do {
 18.1466 +                int alt11=5;
 18.1467 +                int LA11_0 = input.LA(1);
 18.1468 +
 18.1469 +                if ( (LA11_0==']') ) {
 18.1470 +                    alt11=5;
 18.1471 +                }
 18.1472 +                else if ( (LA11_0=='[') ) {
 18.1473 +                    alt11=1;
 18.1474 +                }
 18.1475 +                else if ( (LA11_0=='\"') ) {
 18.1476 +                    alt11=2;
 18.1477 +                }
 18.1478 +                else if ( (LA11_0=='\'') ) {
 18.1479 +                    alt11=3;
 18.1480 +                }
 18.1481 +                else if ( ((LA11_0>='\u0000' && LA11_0<='!')||(LA11_0>='#' && LA11_0<='&')||(LA11_0>='(' && LA11_0<='Z')||LA11_0=='\\'||(LA11_0>='^' && LA11_0<='\uFFFF')) ) {
 18.1482 +                    alt11=4;
 18.1483 +                }
 18.1484 +
 18.1485 +
 18.1486 +                switch (alt11) {
 18.1487 +            	case 1 :
 18.1488 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:525:4: NESTED_ARG_ACTION
 18.1489 +            	    {
 18.1490 +            	    mNESTED_ARG_ACTION(); 
 18.1491 +
 18.1492 +            	    }
 18.1493 +            	    break;
 18.1494 +            	case 2 :
 18.1495 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:526:4: ACTION_STRING_LITERAL
 18.1496 +            	    {
 18.1497 +            	    mACTION_STRING_LITERAL(); 
 18.1498 +
 18.1499 +            	    }
 18.1500 +            	    break;
 18.1501 +            	case 3 :
 18.1502 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:527:4: ACTION_CHAR_LITERAL
 18.1503 +            	    {
 18.1504 +            	    mACTION_CHAR_LITERAL(); 
 18.1505 +
 18.1506 +            	    }
 18.1507 +            	    break;
 18.1508 +            	case 4 :
 18.1509 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:528:4: .
 18.1510 +            	    {
 18.1511 +            	    matchAny(); 
 18.1512 +
 18.1513 +            	    }
 18.1514 +            	    break;
 18.1515 +
 18.1516 +            	default :
 18.1517 +            	    break loop11;
 18.1518 +                }
 18.1519 +            } while (true);
 18.1520 +
 18.1521 +            match(']'); 
 18.1522 +            setText(getText().substring(1, getText().length()-1));
 18.1523 +
 18.1524 +            }
 18.1525 +
 18.1526 +        }
 18.1527 +        finally {
 18.1528 +        }
 18.1529 +    }
 18.1530 +    // $ANTLR end "NESTED_ARG_ACTION"
 18.1531 +
 18.1532 +    // $ANTLR start "ACTION"
 18.1533 +    public final void mACTION() throws RecognitionException {
 18.1534 +        try {
 18.1535 +            int _type = ACTION;
 18.1536 +            int _channel = DEFAULT_TOKEN_CHANNEL;
 18.1537 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:535:2: ( NESTED_ACTION ( '?' )? )
 18.1538 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:535:4: NESTED_ACTION ( '?' )?
 18.1539 +            {
 18.1540 +            mNESTED_ACTION(); 
 18.1541 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:535:18: ( '?' )?
 18.1542 +            int alt12=2;
 18.1543 +            int LA12_0 = input.LA(1);
 18.1544 +
 18.1545 +            if ( (LA12_0=='?') ) {
 18.1546 +                alt12=1;
 18.1547 +            }
 18.1548 +            switch (alt12) {
 18.1549 +                case 1 :
 18.1550 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:535:20: '?'
 18.1551 +                    {
 18.1552 +                    match('?'); 
 18.1553 +                    _type = SEMPRED;
 18.1554 +
 18.1555 +                    }
 18.1556 +                    break;
 18.1557 +
 18.1558 +            }
 18.1559 +
 18.1560 +
 18.1561 +            }
 18.1562 +
 18.1563 +            state.type = _type;
 18.1564 +            state.channel = _channel;
 18.1565 +        }
 18.1566 +        finally {
 18.1567 +        }
 18.1568 +    }
 18.1569 +    // $ANTLR end "ACTION"
 18.1570 +
 18.1571 +    // $ANTLR start "NESTED_ACTION"
 18.1572 +    public final void mNESTED_ACTION() throws RecognitionException {
 18.1573 +        try {
 18.1574 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:539:15: ( '{' ( options {greedy=false; k=2; } : NESTED_ACTION | SL_COMMENT | ML_COMMENT | ACTION_STRING_LITERAL | ACTION_CHAR_LITERAL | . )* '}' )
 18.1575 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:540:2: '{' ( options {greedy=false; k=2; } : NESTED_ACTION | SL_COMMENT | ML_COMMENT | ACTION_STRING_LITERAL | ACTION_CHAR_LITERAL | . )* '}'
 18.1576 +            {
 18.1577 +            match('{'); 
 18.1578 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:541:2: ( options {greedy=false; k=2; } : NESTED_ACTION | SL_COMMENT | ML_COMMENT | ACTION_STRING_LITERAL | ACTION_CHAR_LITERAL | . )*
 18.1579 +            loop13:
 18.1580 +            do {
 18.1581 +                int alt13=7;
 18.1582 +                alt13 = dfa13.predict(input);
 18.1583 +                switch (alt13) {
 18.1584 +            	case 1 :
 18.1585 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:542:4: NESTED_ACTION
 18.1586 +            	    {
 18.1587 +            	    mNESTED_ACTION(); 
 18.1588 +
 18.1589 +            	    }
 18.1590 +            	    break;
 18.1591 +            	case 2 :
 18.1592 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:543:4: SL_COMMENT
 18.1593 +            	    {
 18.1594 +            	    mSL_COMMENT(); 
 18.1595 +
 18.1596 +            	    }
 18.1597 +            	    break;
 18.1598 +            	case 3 :
 18.1599 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:544:4: ML_COMMENT
 18.1600 +            	    {
 18.1601 +            	    mML_COMMENT(); 
 18.1602 +
 18.1603 +            	    }
 18.1604 +            	    break;
 18.1605 +            	case 4 :
 18.1606 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:545:4: ACTION_STRING_LITERAL
 18.1607 +            	    {
 18.1608 +            	    mACTION_STRING_LITERAL(); 
 18.1609 +
 18.1610 +            	    }
 18.1611 +            	    break;
 18.1612 +            	case 5 :
 18.1613 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:546:4: ACTION_CHAR_LITERAL
 18.1614 +            	    {
 18.1615 +            	    mACTION_CHAR_LITERAL(); 
 18.1616 +
 18.1617 +            	    }
 18.1618 +            	    break;
 18.1619 +            	case 6 :
 18.1620 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:547:4: .
 18.1621 +            	    {
 18.1622 +            	    matchAny(); 
 18.1623 +
 18.1624 +            	    }
 18.1625 +            	    break;
 18.1626 +
 18.1627 +            	default :
 18.1628 +            	    break loop13;
 18.1629 +                }
 18.1630 +            } while (true);
 18.1631 +
 18.1632 +            match('}'); 
 18.1633 +
 18.1634 +            }
 18.1635 +
 18.1636 +        }
 18.1637 +        finally {
 18.1638 +        }
 18.1639 +    }
 18.1640 +    // $ANTLR end "NESTED_ACTION"
 18.1641 +
 18.1642 +    // $ANTLR start "ACTION_CHAR_LITERAL"
 18.1643 +    public final void mACTION_CHAR_LITERAL() throws RecognitionException {
 18.1644 +        try {
 18.1645 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:554:2: ( '\\'' ( ACTION_ESC | ~ ( '\\\\' | '\\'' ) ) '\\'' )
 18.1646 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:554:4: '\\'' ( ACTION_ESC | ~ ( '\\\\' | '\\'' ) ) '\\''
 18.1647 +            {
 18.1648 +            match('\''); 
 18.1649 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:554:9: ( ACTION_ESC | ~ ( '\\\\' | '\\'' ) )
 18.1650 +            int alt14=2;
 18.1651 +            int LA14_0 = input.LA(1);
 18.1652 +
 18.1653 +            if ( (LA14_0=='\\') ) {
 18.1654 +                alt14=1;
 18.1655 +            }
 18.1656 +            else if ( ((LA14_0>='\u0000' && LA14_0<='&')||(LA14_0>='(' && LA14_0<='[')||(LA14_0>=']' && LA14_0<='\uFFFF')) ) {
 18.1657 +                alt14=2;
 18.1658 +            }
 18.1659 +            else {
 18.1660 +                NoViableAltException nvae =
 18.1661 +                    new NoViableAltException("", 14, 0, input);
 18.1662 +
 18.1663 +                throw nvae;
 18.1664 +            }
 18.1665 +            switch (alt14) {
 18.1666 +                case 1 :
 18.1667 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:554:10: ACTION_ESC
 18.1668 +                    {
 18.1669 +                    mACTION_ESC(); 
 18.1670 +
 18.1671 +                    }
 18.1672 +                    break;
 18.1673 +                case 2 :
 18.1674 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:554:21: ~ ( '\\\\' | '\\'' )
 18.1675 +                    {
 18.1676 +                    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
 18.1677 +                        input.consume();
 18.1678 +
 18.1679 +                    }
 18.1680 +                    else {
 18.1681 +                        MismatchedSetException mse = new MismatchedSetException(null,input);
 18.1682 +                        recover(mse);
 18.1683 +                        throw mse;}
 18.1684 +
 18.1685 +
 18.1686 +                    }
 18.1687 +                    break;
 18.1688 +
 18.1689 +            }
 18.1690 +
 18.1691 +            match('\''); 
 18.1692 +
 18.1693 +            }
 18.1694 +
 18.1695 +        }
 18.1696 +        finally {
 18.1697 +        }
 18.1698 +    }
 18.1699 +    // $ANTLR end "ACTION_CHAR_LITERAL"
 18.1700 +
 18.1701 +    // $ANTLR start "ACTION_STRING_LITERAL"
 18.1702 +    public final void mACTION_STRING_LITERAL() throws RecognitionException {
 18.1703 +        try {
 18.1704 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:559:2: ( '\"' ( ACTION_ESC | ~ ( '\\\\' | '\"' ) )* '\"' )
 18.1705 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:559:4: '\"' ( ACTION_ESC | ~ ( '\\\\' | '\"' ) )* '\"'
 18.1706 +            {
 18.1707 +            match('\"'); 
 18.1708 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:559:8: ( ACTION_ESC | ~ ( '\\\\' | '\"' ) )*
 18.1709 +            loop15:
 18.1710 +            do {
 18.1711 +                int alt15=3;
 18.1712 +                int LA15_0 = input.LA(1);
 18.1713 +
 18.1714 +                if ( (LA15_0=='\\') ) {
 18.1715 +                    alt15=1;
 18.1716 +                }
 18.1717 +                else if ( ((LA15_0>='\u0000' && LA15_0<='!')||(LA15_0>='#' && LA15_0<='[')||(LA15_0>=']' && LA15_0<='\uFFFF')) ) {
 18.1718 +                    alt15=2;
 18.1719 +                }
 18.1720 +
 18.1721 +
 18.1722 +                switch (alt15) {
 18.1723 +            	case 1 :
 18.1724 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:559:9: ACTION_ESC
 18.1725 +            	    {
 18.1726 +            	    mACTION_ESC(); 
 18.1727 +
 18.1728 +            	    }
 18.1729 +            	    break;
 18.1730 +            	case 2 :
 18.1731 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:559:20: ~ ( '\\\\' | '\"' )
 18.1732 +            	    {
 18.1733 +            	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
 18.1734 +            	        input.consume();
 18.1735 +
 18.1736 +            	    }
 18.1737 +            	    else {
 18.1738 +            	        MismatchedSetException mse = new MismatchedSetException(null,input);
 18.1739 +            	        recover(mse);
 18.1740 +            	        throw mse;}
 18.1741 +
 18.1742 +
 18.1743 +            	    }
 18.1744 +            	    break;
 18.1745 +
 18.1746 +            	default :
 18.1747 +            	    break loop15;
 18.1748 +                }
 18.1749 +            } while (true);
 18.1750 +
 18.1751 +            match('\"'); 
 18.1752 +
 18.1753 +            }
 18.1754 +
 18.1755 +        }
 18.1756 +        finally {
 18.1757 +        }
 18.1758 +    }
 18.1759 +    // $ANTLR end "ACTION_STRING_LITERAL"
 18.1760 +
 18.1761 +    // $ANTLR start "ACTION_ESC"
 18.1762 +    public final void mACTION_ESC() throws RecognitionException {
 18.1763 +        try {
 18.1764 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:564:2: ( '\\\\\\'' | '\\\\' '\"' | '\\\\' ~ ( '\\'' | '\"' ) )
 18.1765 +            int alt16=3;
 18.1766 +            int LA16_0 = input.LA(1);
 18.1767 +
 18.1768 +            if ( (LA16_0=='\\') ) {
 18.1769 +                int LA16_1 = input.LA(2);
 18.1770 +
 18.1771 +                if ( (LA16_1=='\'') ) {
 18.1772 +                    alt16=1;
 18.1773 +                }
 18.1774 +                else if ( (LA16_1=='\"') ) {
 18.1775 +                    alt16=2;
 18.1776 +                }
 18.1777 +                else if ( ((LA16_1>='\u0000' && LA16_1<='!')||(LA16_1>='#' && LA16_1<='&')||(LA16_1>='(' && LA16_1<='\uFFFF')) ) {
 18.1778 +                    alt16=3;
 18.1779 +                }
 18.1780 +                else {
 18.1781 +                    NoViableAltException nvae =
 18.1782 +                        new NoViableAltException("", 16, 1, input);
 18.1783 +
 18.1784 +                    throw nvae;
 18.1785 +                }
 18.1786 +            }
 18.1787 +            else {
 18.1788 +                NoViableAltException nvae =
 18.1789 +                    new NoViableAltException("", 16, 0, input);
 18.1790 +
 18.1791 +                throw nvae;
 18.1792 +            }
 18.1793 +            switch (alt16) {
 18.1794 +                case 1 :
 18.1795 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:564:4: '\\\\\\''
 18.1796 +                    {
 18.1797 +                    match("\\'"); 
 18.1798 +
 18.1799 +
 18.1800 +                    }
 18.1801 +                    break;
 18.1802 +                case 2 :
 18.1803 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:565:4: '\\\\' '\"'
 18.1804 +                    {
 18.1805 +                    match('\\'); 
 18.1806 +                    match('\"'); 
 18.1807 +
 18.1808 +                    }
 18.1809 +                    break;
 18.1810 +                case 3 :
 18.1811 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:566:4: '\\\\' ~ ( '\\'' | '\"' )
 18.1812 +                    {
 18.1813 +                    match('\\'); 
 18.1814 +                    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='\uFFFF') ) {
 18.1815 +                        input.consume();
 18.1816 +
 18.1817 +                    }
 18.1818 +                    else {
 18.1819 +                        MismatchedSetException mse = new MismatchedSetException(null,input);
 18.1820 +                        recover(mse);
 18.1821 +                        throw mse;}
 18.1822 +
 18.1823 +
 18.1824 +                    }
 18.1825 +                    break;
 18.1826 +
 18.1827 +            }
 18.1828 +        }
 18.1829 +        finally {
 18.1830 +        }
 18.1831 +    }
 18.1832 +    // $ANTLR end "ACTION_ESC"
 18.1833 +
 18.1834 +    // $ANTLR start "TOKEN_REF"
 18.1835 +    public final void mTOKEN_REF() throws RecognitionException {
 18.1836 +        try {
 18.1837 +            int _type = TOKEN_REF;
 18.1838 +            int _channel = DEFAULT_TOKEN_CHANNEL;
 18.1839 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:570:2: ( 'A' .. 'Z' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
 18.1840 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:570:4: 'A' .. 'Z' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
 18.1841 +            {
 18.1842 +            matchRange('A','Z'); 
 18.1843 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:570:13: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
 18.1844 +            loop17:
 18.1845 +            do {
 18.1846 +                int alt17=2;
 18.1847 +                int LA17_0 = input.LA(1);
 18.1848 +
 18.1849 +                if ( ((LA17_0>='0' && LA17_0<='9')||(LA17_0>='A' && LA17_0<='Z')||LA17_0=='_'||(LA17_0>='a' && LA17_0<='z')) ) {
 18.1850 +                    alt17=1;
 18.1851 +                }
 18.1852 +
 18.1853 +
 18.1854 +                switch (alt17) {
 18.1855 +            	case 1 :
 18.1856 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:
 18.1857 +            	    {
 18.1858 +            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
 18.1859 +            	        input.consume();
 18.1860 +
 18.1861 +            	    }
 18.1862 +            	    else {
 18.1863 +            	        MismatchedSetException mse = new MismatchedSetException(null,input);
 18.1864 +            	        recover(mse);
 18.1865 +            	        throw mse;}
 18.1866 +
 18.1867 +
 18.1868 +            	    }
 18.1869 +            	    break;
 18.1870 +
 18.1871 +            	default :
 18.1872 +            	    break loop17;
 18.1873 +                }
 18.1874 +            } while (true);
 18.1875 +
 18.1876 +
 18.1877 +            }
 18.1878 +
 18.1879 +            state.type = _type;
 18.1880 +            state.channel = _channel;
 18.1881 +        }
 18.1882 +        finally {
 18.1883 +        }
 18.1884 +    }
 18.1885 +    // $ANTLR end "TOKEN_REF"
 18.1886 +
 18.1887 +    // $ANTLR start "RULE_REF"
 18.1888 +    public final void mRULE_REF() throws RecognitionException {
 18.1889 +        try {
 18.1890 +            int _type = RULE_REF;
 18.1891 +            int _channel = DEFAULT_TOKEN_CHANNEL;
 18.1892 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:574:2: ( 'a' .. 'z' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
 18.1893 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:574:4: 'a' .. 'z' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
 18.1894 +            {
 18.1895 +            matchRange('a','z'); 
 18.1896 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:574:13: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
 18.1897 +            loop18:
 18.1898 +            do {
 18.1899 +                int alt18=2;
 18.1900 +                int LA18_0 = input.LA(1);
 18.1901 +
 18.1902 +                if ( ((LA18_0>='0' && LA18_0<='9')||(LA18_0>='A' && LA18_0<='Z')||LA18_0=='_'||(LA18_0>='a' && LA18_0<='z')) ) {
 18.1903 +                    alt18=1;
 18.1904 +                }
 18.1905 +
 18.1906 +
 18.1907 +                switch (alt18) {
 18.1908 +            	case 1 :
 18.1909 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:
 18.1910 +            	    {
 18.1911 +            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
 18.1912 +            	        input.consume();
 18.1913 +
 18.1914 +            	    }
 18.1915 +            	    else {
 18.1916 +            	        MismatchedSetException mse = new MismatchedSetException(null,input);
 18.1917 +            	        recover(mse);
 18.1918 +            	        throw mse;}
 18.1919 +
 18.1920 +
 18.1921 +            	    }
 18.1922 +            	    break;
 18.1923 +
 18.1924 +            	default :
 18.1925 +            	    break loop18;
 18.1926 +                }
 18.1927 +            } while (true);
 18.1928 +
 18.1929 +
 18.1930 +            }
 18.1931 +
 18.1932 +            state.type = _type;
 18.1933 +            state.channel = _channel;
 18.1934 +        }
 18.1935 +        finally {
 18.1936 +        }
 18.1937 +    }
 18.1938 +    // $ANTLR end "RULE_REF"
 18.1939 +
 18.1940 +    // $ANTLR start "OPTIONS"
 18.1941 +    public final void mOPTIONS() throws RecognitionException {
 18.1942 +        try {
 18.1943 +            int _type = OPTIONS;
 18.1944 +            int _channel = DEFAULT_TOKEN_CHANNEL;
 18.1945 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:581:2: ( 'options' WS_LOOP '{' )
 18.1946 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:581:4: 'options' WS_LOOP '{'
 18.1947 +            {
 18.1948 +            match("options"); 
 18.1949 +
 18.1950 +            mWS_LOOP(); 
 18.1951 +            match('{'); 
 18.1952 +
 18.1953 +            }
 18.1954 +
 18.1955 +            state.type = _type;
 18.1956 +            state.channel = _channel;
 18.1957 +        }
 18.1958 +        finally {
 18.1959 +        }
 18.1960 +    }
 18.1961 +    // $ANTLR end "OPTIONS"
 18.1962 +
 18.1963 +    // $ANTLR start "TOKENS"
 18.1964 +    public final void mTOKENS() throws RecognitionException {
 18.1965 +        try {
 18.1966 +            int _type = TOKENS;
 18.1967 +            int _channel = DEFAULT_TOKEN_CHANNEL;
 18.1968 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:585:2: ( 'tokens' WS_LOOP '{' )
 18.1969 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:585:4: 'tokens' WS_LOOP '{'
 18.1970 +            {
 18.1971 +            match("tokens"); 
 18.1972 +
 18.1973 +            mWS_LOOP(); 
 18.1974 +            match('{'); 
 18.1975 +
 18.1976 +            }
 18.1977 +
 18.1978 +            state.type = _type;
 18.1979 +            state.channel = _channel;
 18.1980 +        }
 18.1981 +        finally {
 18.1982 +        }
 18.1983 +    }
 18.1984 +    // $ANTLR end "TOKENS"
 18.1985 +
 18.1986 +    // $ANTLR start "SRC"
 18.1987 +    public final void mSRC() throws RecognitionException {
 18.1988 +        try {
 18.1989 +            CommonToken file=null;
 18.1990 +            CommonToken line=null;
 18.1991 +
 18.1992 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:593:5: ( 'src' ' ' file= ACTION_STRING_LITERAL ' ' line= INT )
 18.1993 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:593:7: 'src' ' ' file= ACTION_STRING_LITERAL ' ' line= INT
 18.1994 +            {
 18.1995 +            match("src"); 
 18.1996 +
 18.1997 +            match(' '); 
 18.1998 +            int fileStart982 = getCharIndex();
 18.1999 +            int fileStartLine982 = getLine();
 18.2000 +            int fileStartCharPos982 = getCharPositionInLine();
 18.2001 +            mACTION_STRING_LITERAL(); 
 18.2002 +            file = new CommonToken(input, Token.INVALID_TOKEN_TYPE, Token.DEFAULT_CHANNEL, fileStart982, getCharIndex()-1);
 18.2003 +            file.setLine(fileStartLine982);
 18.2004 +            file.setCharPositionInLine(fileStartCharPos982);
 18.2005 +            match(' '); 
 18.2006 +            int lineStart988 = getCharIndex();
 18.2007 +            int lineStartLine988 = getLine();
 18.2008 +            int lineStartCharPos988 = getCharPositionInLine();
 18.2009 +            mINT(); 
 18.2010 +            line = new CommonToken(input, Token.INVALID_TOKEN_TYPE, Token.DEFAULT_CHANNEL, lineStart988, getCharIndex()-1);
 18.2011 +            line.setLine(lineStartLine988);
 18.2012 +            line.setCharPositionInLine(lineStartCharPos988);
 18.2013 +
 18.2014 +            }
 18.2015 +
 18.2016 +        }
 18.2017 +        finally {
 18.2018 +        }
 18.2019 +    }
 18.2020 +    // $ANTLR end "SRC"
 18.2021 +
 18.2022 +    // $ANTLR start "WS"
 18.2023 +    public final void mWS() throws RecognitionException {
 18.2024 +        try {
 18.2025 +            int _type = WS;
 18.2026 +            int _channel = DEFAULT_TOKEN_CHANNEL;
 18.2027 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:596:4: ( ( ' ' | '\\t' | ( '\\r' )? '\\n' )+ )
 18.2028 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:596:6: ( ' ' | '\\t' | ( '\\r' )? '\\n' )+
 18.2029 +            {
 18.2030 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:596:6: ( ' ' | '\\t' | ( '\\r' )? '\\n' )+
 18.2031 +            int cnt20=0;
 18.2032 +            loop20:
 18.2033 +            do {
 18.2034 +                int alt20=4;
 18.2035 +                switch ( input.LA(1) ) {
 18.2036 +                case ' ':
 18.2037 +                    {
 18.2038 +                    alt20=1;
 18.2039 +                    }
 18.2040 +                    break;
 18.2041 +                case '\t':
 18.2042 +                    {
 18.2043 +                    alt20=2;
 18.2044 +                    }
 18.2045 +                    break;
 18.2046 +                case '\n':
 18.2047 +                case '\r':
 18.2048 +                    {
 18.2049 +                    alt20=3;
 18.2050 +                    }
 18.2051 +                    break;
 18.2052 +
 18.2053 +                }
 18.2054 +
 18.2055 +                switch (alt20) {
 18.2056 +            	case 1 :
 18.2057 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:596:8: ' '
 18.2058 +            	    {
 18.2059 +            	    match(' '); 
 18.2060 +
 18.2061 +            	    }
 18.2062 +            	    break;
 18.2063 +            	case 2 :
 18.2064 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:597:5: '\\t'
 18.2065 +            	    {
 18.2066 +            	    match('\t'); 
 18.2067 +
 18.2068 +            	    }
 18.2069 +            	    break;
 18.2070 +            	case 3 :
 18.2071 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:598:5: ( '\\r' )? '\\n'
 18.2072 +            	    {
 18.2073 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:598:5: ( '\\r' )?
 18.2074 +            	    int alt19=2;
 18.2075 +            	    int LA19_0 = input.LA(1);
 18.2076 +
 18.2077 +            	    if ( (LA19_0=='\r') ) {
 18.2078 +            	        alt19=1;
 18.2079 +            	    }
 18.2080 +            	    switch (alt19) {
 18.2081 +            	        case 1 :
 18.2082 +            	            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:598:5: '\\r'
 18.2083 +            	            {
 18.2084 +            	            match('\r'); 
 18.2085 +
 18.2086 +            	            }
 18.2087 +            	            break;
 18.2088 +
 18.2089 +            	    }
 18.2090 +
 18.2091 +            	    match('\n'); 
 18.2092 +
 18.2093 +            	    }
 18.2094 +            	    break;
 18.2095 +
 18.2096 +            	default :
 18.2097 +            	    if ( cnt20 >= 1 ) break loop20;
 18.2098 +                        EarlyExitException eee =
 18.2099 +                            new EarlyExitException(20, input);
 18.2100 +                        throw eee;
 18.2101 +                }
 18.2102 +                cnt20++;
 18.2103 +            } while (true);
 18.2104 +
 18.2105 +            _channel=HIDDEN;
 18.2106 +
 18.2107 +            }
 18.2108 +
 18.2109 +            state.type = _type;
 18.2110 +            state.channel = _channel;
 18.2111 +        }
 18.2112 +        finally {
 18.2113 +        }
 18.2114 +    }
 18.2115 +    // $ANTLR end "WS"
 18.2116 +
 18.2117 +    // $ANTLR start "WS_LOOP"
 18.2118 +    public final void mWS_LOOP() throws RecognitionException {
 18.2119 +        try {
 18.2120 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:605:2: ( ( WS | SL_COMMENT | ML_COMMENT )* )
 18.2121 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:605:4: ( WS | SL_COMMENT | ML_COMMENT )*
 18.2122 +            {
 18.2123 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:605:4: ( WS | SL_COMMENT | ML_COMMENT )*
 18.2124 +            loop21:
 18.2125 +            do {
 18.2126 +                int alt21=4;
 18.2127 +                int LA21_0 = input.LA(1);
 18.2128 +
 18.2129 +                if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {
 18.2130 +                    alt21=1;
 18.2131 +                }
 18.2132 +                else if ( (LA21_0=='/') ) {
 18.2133 +                    int LA21_3 = input.LA(2);
 18.2134 +
 18.2135 +                    if ( (LA21_3=='/') ) {
 18.2136 +                        alt21=2;
 18.2137 +                    }
 18.2138 +                    else if ( (LA21_3=='*') ) {
 18.2139 +                        alt21=3;
 18.2140 +                    }
 18.2141 +
 18.2142 +
 18.2143 +                }
 18.2144 +
 18.2145 +
 18.2146 +                switch (alt21) {
 18.2147 +            	case 1 :
 18.2148 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:605:6: WS
 18.2149 +            	    {
 18.2150 +            	    mWS(); 
 18.2151 +
 18.2152 +            	    }
 18.2153 +            	    break;
 18.2154 +            	case 2 :
 18.2155 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:606:5: SL_COMMENT
 18.2156 +            	    {
 18.2157 +            	    mSL_COMMENT(); 
 18.2158 +
 18.2159 +            	    }
 18.2160 +            	    break;
 18.2161 +            	case 3 :
 18.2162 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:607:5: ML_COMMENT
 18.2163 +            	    {
 18.2164 +            	    mML_COMMENT(); 
 18.2165 +
 18.2166 +            	    }
 18.2167 +            	    break;
 18.2168 +
 18.2169 +            	default :
 18.2170 +            	    break loop21;
 18.2171 +                }
 18.2172 +            } while (true);
 18.2173 +
 18.2174 +
 18.2175 +            }
 18.2176 +
 18.2177 +        }
 18.2178 +        finally {
 18.2179 +        }
 18.2180 +    }
 18.2181 +    // $ANTLR end "WS_LOOP"
 18.2182 +
 18.2183 +    public void mTokens() throws RecognitionException {
 18.2184 +        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:8: ( SCOPE | FRAGMENT | TREE_BEGIN | ROOT | BANG | RANGE | REWRITE | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | SL_COMMENT | ML_COMMENT | CHAR_LITERAL | STRING_LITERAL | DOUBLE_QUOTE_STRING_LITERAL | DOUBLE_ANGLE_STRING_LITERAL | INT | ARG_ACTION | ACTION | TOKEN_REF | RULE_REF | OPTIONS | TOKENS | WS )
 18.2185 +        int alt22=50;
 18.2186 +        alt22 = dfa22.predict(input);
 18.2187 +        switch (alt22) {
 18.2188 +            case 1 :
 18.2189 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:10: SCOPE
 18.2190 +                {
 18.2191 +                mSCOPE(); 
 18.2192 +
 18.2193 +                }
 18.2194 +                break;
 18.2195 +            case 2 :
 18.2196 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:16: FRAGMENT
 18.2197 +                {
 18.2198 +                mFRAGMENT(); 
 18.2199 +
 18.2200 +                }
 18.2201 +                break;
 18.2202 +            case 3 :
 18.2203 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:25: TREE_BEGIN
 18.2204 +                {
 18.2205 +                mTREE_BEGIN(); 
 18.2206 +
 18.2207 +                }
 18.2208 +                break;
 18.2209 +            case 4 :
 18.2210 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:36: ROOT
 18.2211 +                {
 18.2212 +                mROOT(); 
 18.2213 +
 18.2214 +                }
 18.2215 +                break;
 18.2216 +            case 5 :
 18.2217 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:41: BANG
 18.2218 +                {
 18.2219 +                mBANG(); 
 18.2220 +
 18.2221 +                }
 18.2222 +                break;
 18.2223 +            case 6 :
 18.2224 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:46: RANGE
 18.2225 +                {
 18.2226 +                mRANGE(); 
 18.2227 +
 18.2228 +                }
 18.2229 +                break;
 18.2230 +            case 7 :
 18.2231 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:52: REWRITE
 18.2232 +                {
 18.2233 +                mREWRITE(); 
 18.2234 +
 18.2235 +                }
 18.2236 +                break;
 18.2237 +            case 8 :
 18.2238 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:60: T__65
 18.2239 +                {
 18.2240 +                mT__65(); 
 18.2241 +
 18.2242 +                }
 18.2243 +                break;
 18.2244 +            case 9 :
 18.2245 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:66: T__66
 18.2246 +                {
 18.2247 +                mT__66(); 
 18.2248 +
 18.2249 +                }
 18.2250 +                break;
 18.2251 +            case 10 :
 18.2252 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:72: T__67
 18.2253 +                {
 18.2254 +                mT__67(); 
 18.2255 +
 18.2256 +                }
 18.2257 +                break;
 18.2258 +            case 11 :
 18.2259 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:78: T__68
 18.2260 +                {
 18.2261 +                mT__68(); 
 18.2262 +
 18.2263 +                }
 18.2264 +                break;
 18.2265 +            case 12 :
 18.2266 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:84: T__69
 18.2267 +                {
 18.2268 +                mT__69(); 
 18.2269 +
 18.2270 +                }
 18.2271 +                break;
 18.2272 +            case 13 :
 18.2273 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:90: T__70
 18.2274 +                {
 18.2275 +                mT__70(); 
 18.2276 +
 18.2277 +                }
 18.2278 +                break;
 18.2279 +            case 14 :
 18.2280 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:96: T__71
 18.2281 +                {
 18.2282 +                mT__71(); 
 18.2283 +
 18.2284 +                }
 18.2285 +                break;
 18.2286 +            case 15 :
 18.2287 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:102: T__72
 18.2288 +                {
 18.2289 +                mT__72(); 
 18.2290 +
 18.2291 +                }
 18.2292 +                break;
 18.2293 +            case 16 :
 18.2294 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:108: T__73
 18.2295 +                {
 18.2296 +                mT__73(); 
 18.2297 +
 18.2298 +                }
 18.2299 +                break;
 18.2300 +            case 17 :
 18.2301 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:114: T__74
 18.2302 +                {
 18.2303 +                mT__74(); 
 18.2304 +
 18.2305 +                }
 18.2306 +                break;
 18.2307 +            case 18 :
 18.2308 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:120: T__75
 18.2309 +                {
 18.2310 +                mT__75(); 
 18.2311 +
 18.2312 +                }
 18.2313 +                break;
 18.2314 +            case 19 :
 18.2315 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:126: T__76
 18.2316 +                {
 18.2317 +                mT__76(); 
 18.2318 +
 18.2319 +                }
 18.2320 +                break;
 18.2321 +            case 20 :
 18.2322 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:132: T__77
 18.2323 +                {
 18.2324 +                mT__77(); 
 18.2325 +
 18.2326 +                }
 18.2327 +                break;
 18.2328 +            case 21 :
 18.2329 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:138: T__78
 18.2330 +                {
 18.2331 +                mT__78(); 
 18.2332 +
 18.2333 +                }
 18.2334 +                break;
 18.2335 +            case 22 :
 18.2336 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:144: T__79
 18.2337 +                {
 18.2338 +                mT__79(); 
 18.2339 +
 18.2340 +                }
 18.2341 +                break;
 18.2342 +            case 23 :
 18.2343 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:150: T__80
 18.2344 +                {
 18.2345 +                mT__80(); 
 18.2346 +
 18.2347 +                }
 18.2348 +                break;
 18.2349 +            case 24 :
 18.2350 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:156: T__81
 18.2351 +                {
 18.2352 +                mT__81(); 
 18.2353 +
 18.2354 +                }
 18.2355 +                break;
 18.2356 +            case 25 :
 18.2357 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:162: T__82
 18.2358 +                {
 18.2359 +                mT__82(); 
 18.2360 +
 18.2361 +                }
 18.2362 +                break;
 18.2363 +            case 26 :
 18.2364 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:168: T__83
 18.2365 +                {
 18.2366 +                mT__83(); 
 18.2367 +
 18.2368 +                }
 18.2369 +                break;
 18.2370 +            case 27 :
 18.2371 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:174: T__84
 18.2372 +                {
 18.2373 +                mT__84(); 
 18.2374 +
 18.2375 +                }
 18.2376 +                break;
 18.2377 +            case 28 :
 18.2378 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:180: T__85
 18.2379 +                {
 18.2380 +                mT__85(); 
 18.2381 +
 18.2382 +                }
 18.2383 +                break;
 18.2384 +            case 29 :
 18.2385 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:186: T__86
 18.2386 +                {
 18.2387 +                mT__86(); 
 18.2388 +
 18.2389 +                }
 18.2390 +                break;
 18.2391 +            case 30 :
 18.2392 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:192: T__87
 18.2393 +                {
 18.2394 +                mT__87(); 
 18.2395 +
 18.2396 +                }
 18.2397 +                break;
 18.2398 +            case 31 :
 18.2399 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:198: T__88
 18.2400 +                {
 18.2401 +                mT__88(); 
 18.2402 +
 18.2403 +                }
 18.2404 +                break;
 18.2405 +            case 32 :
 18.2406 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:204: T__89
 18.2407 +                {
 18.2408 +                mT__89(); 
 18.2409 +
 18.2410 +                }
 18.2411 +                break;
 18.2412 +            case 33 :
 18.2413 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:210: T__90
 18.2414 +                {
 18.2415 +                mT__90(); 
 18.2416 +
 18.2417 +                }
 18.2418 +                break;
 18.2419 +            case 34 :
 18.2420 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:216: T__91
 18.2421 +                {
 18.2422 +                mT__91(); 
 18.2423 +
 18.2424 +                }
 18.2425 +                break;
 18.2426 +            case 35 :
 18.2427 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:222: T__92
 18.2428 +                {
 18.2429 +                mT__92(); 
 18.2430 +
 18.2431 +                }
 18.2432 +                break;
 18.2433 +            case 36 :
 18.2434 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:228: T__93
 18.2435 +                {
 18.2436 +                mT__93(); 
 18.2437 +
 18.2438 +                }
 18.2439 +                break;
 18.2440 +            case 37 :
 18.2441 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:234: SL_COMMENT
 18.2442 +                {
 18.2443 +                mSL_COMMENT(); 
 18.2444 +
 18.2445 +                }
 18.2446 +                break;
 18.2447 +            case 38 :
 18.2448 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:245: ML_COMMENT
 18.2449 +                {
 18.2450 +                mML_COMMENT(); 
 18.2451 +
 18.2452 +                }
 18.2453 +                break;
 18.2454 +            case 39 :
 18.2455 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:256: CHAR_LITERAL
 18.2456 +                {
 18.2457 +                mCHAR_LITERAL(); 
 18.2458 +
 18.2459 +                }
 18.2460 +                break;
 18.2461 +            case 40 :
 18.2462 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:269: STRING_LITERAL
 18.2463 +                {
 18.2464 +                mSTRING_LITERAL(); 
 18.2465 +
 18.2466 +                }
 18.2467 +                break;
 18.2468 +            case 41 :
 18.2469 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:284: DOUBLE_QUOTE_STRING_LITERAL
 18.2470 +                {
 18.2471 +                mDOUBLE_QUOTE_STRING_LITERAL(); 
 18.2472 +
 18.2473 +                }
 18.2474 +                break;
 18.2475 +            case 42 :
 18.2476 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:312: DOUBLE_ANGLE_STRING_LITERAL
 18.2477 +                {
 18.2478 +                mDOUBLE_ANGLE_STRING_LITERAL(); 
 18.2479 +
 18.2480 +                }
 18.2481 +                break;
 18.2482 +            case 43 :
 18.2483 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:340: INT
 18.2484 +                {
 18.2485 +                mINT(); 
 18.2486 +
 18.2487 +                }
 18.2488 +                break;
 18.2489 +            case 44 :
 18.2490 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:344: ARG_ACTION
 18.2491 +                {
 18.2492 +                mARG_ACTION(); 
 18.2493 +
 18.2494 +                }
 18.2495 +                break;
 18.2496 +            case 45 :
 18.2497 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:355: ACTION
 18.2498 +                {
 18.2499 +                mACTION(); 
 18.2500 +
 18.2501 +                }
 18.2502 +                break;
 18.2503 +            case 46 :
 18.2504 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:362: TOKEN_REF
 18.2505 +                {
 18.2506 +                mTOKEN_REF(); 
 18.2507 +
 18.2508 +                }
 18.2509 +                break;
 18.2510 +            case 47 :
 18.2511 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:372: RULE_REF
 18.2512 +                {
 18.2513 +                mRULE_REF(); 
 18.2514 +
 18.2515 +                }
 18.2516 +                break;
 18.2517 +            case 48 :
 18.2518 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:381: OPTIONS
 18.2519 +                {
 18.2520 +                mOPTIONS(); 
 18.2521 +
 18.2522 +                }
 18.2523 +                break;
 18.2524 +            case 49 :
 18.2525 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:389: TOKENS
 18.2526 +                {
 18.2527 +                mTOKENS(); 
 18.2528 +
 18.2529 +                }
 18.2530 +                break;
 18.2531 +            case 50 :
 18.2532 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:1:396: WS
 18.2533 +                {
 18.2534 +                mWS(); 
 18.2535 +
 18.2536 +                }
 18.2537 +                break;
 18.2538 +
 18.2539 +        }
 18.2540 +
 18.2541 +    }
 18.2542 +
 18.2543 +
 18.2544 +    protected DFA2 dfa2 = new DFA2(this);
 18.2545 +    protected DFA9 dfa9 = new DFA9(this);
 18.2546 +    protected DFA13 dfa13 = new DFA13(this);
 18.2547 +    protected DFA22 dfa22 = new DFA22(this);
 18.2548 +    static final String DFA2_eotS =
 18.2549 +        "\22\uffff\1\2\4\uffff\1\2\4\uffff";
 18.2550 +    static final String DFA2_eofS =
 18.2551 +        "\34\uffff";
 18.2552 +    static final String DFA2_minS =
 18.2553 +        "\2\0\1\uffff\26\0\1\uffff\1\0\1\uffff";
 18.2554 +    static final String DFA2_maxS =
 18.2555 +        "\2\uffff\1\uffff\26\uffff\1\uffff\1\uffff\1\uffff";
 18.2556 +    static final String DFA2_acceptS =
 18.2557 +        "\2\uffff\1\2\26\uffff\1\1\1\uffff\1\1";
 18.2558 +    static final String DFA2_specialS =
 18.2559 +        "\1\21\1\12\1\uffff\1\11\1\14\1\13\1\0\1\2\1\3\1\24\1\25\1\27\1\22"+
 18.2560 +        "\1\5\1\1\1\26\1\7\1\6\1\20\1\10\1\17\1\16\1\23\1\4\1\30\1\uffff"+
 18.2561 +        "\1\15\1\uffff}>";
 18.2562 +    static final String[] DFA2_transitionS = {
 18.2563 +            "\40\2\1\1\uffdf\2",
 18.2564 +            "\44\2\1\3\uffdb\2",
 18.2565 +            "",
 18.2566 +            "\101\2\1\4\uffbe\2",
 18.2567 +            "\116\2\1\5\uffb1\2",
 18.2568 +            "\124\2\1\6\uffab\2",
 18.2569 +            "\114\2\1\7\uffb3\2",
 18.2570 +            "\122\2\1\10\uffad\2",
 18.2571 +            "\40\2\1\11\uffdf\2",
 18.2572 +            "\163\2\1\12\uff8c\2",
 18.2573 +            "\162\2\1\13\uff8d\2",
 18.2574 +            "\143\2\1\14\uff9c\2",
 18.2575 +            "\40\2\1\15\uffdf\2",
 18.2576 +            "\42\2\1\16\uffdd\2",
 18.2577 +            "\12\23\1\22\2\23\1\20\24\23\1\21\71\23\1\17\uffa3\23",
 18.2578 +            "\12\30\1\27\2\30\1\26\24\30\1\25\4\30\1\24\uffd8\30",
 18.2579 +            "\12\31\1\22\ufff5\31",
 18.2580 +            "\40\2\1\32\uffdf\2",
 18.2581 +            "\0\31",
 18.2582 +            "\12\23\1\22\2\23\1\20\24\23\1\21\71\23\1\17\uffa3\23",
 18.2583 +            "\12\23\1\22\2\23\1\20\24\23\1\21\71\23\1\17\uffa3\23",
 18.2584 +            "\12\23\1\22\2\23\1\20\24\23\1\21\71\23\1\17\uffa3\23",
 18.2585 +            "\12\31\1\22\ufff5\31",
 18.2586 +            "\0\31",
 18.2587 +            "\12\23\1\22\2\23\1\20\24\23\1\21\71\23\1\17\uffa3\23",
 18.2588 +            "",
 18.2589 +            "\60\2\12\33\uffc6\2",
 18.2590 +            ""
 18.2591 +    };
 18.2592 +
 18.2593 +    static final short[] DFA2_eot = DFA.unpackEncodedString(DFA2_eotS);
 18.2594 +    static final short[] DFA2_eof = DFA.unpackEncodedString(DFA2_eofS);
 18.2595 +    static final char[] DFA2_min = DFA.unpackEncodedStringToUnsignedChars(DFA2_minS);
 18.2596 +    static final char[] DFA2_max = DFA.unpackEncodedStringToUnsignedChars(DFA2_maxS);
 18.2597 +    static final short[] DFA2_accept = DFA.unpackEncodedString(DFA2_acceptS);
 18.2598 +    static final short[] DFA2_special = DFA.unpackEncodedString(DFA2_specialS);
 18.2599 +    static final short[][] DFA2_transition;
 18.2600 +
 18.2601 +    static {
 18.2602 +        int numStates = DFA2_transitionS.length;
 18.2603 +        DFA2_transition = new short[numStates][];
 18.2604 +        for (int i=0; i<numStates; i++) {
 18.2605 +            DFA2_transition[i] = DFA.unpackEncodedString(DFA2_transitionS[i]);
 18.2606 +        }
 18.2607 +    }
 18.2608 +
 18.2609 +    class DFA2 extends DFA {
 18.2610 +
 18.2611 +        public DFA2(BaseRecognizer recognizer) {
 18.2612 +            this.recognizer = recognizer;
 18.2613 +            this.decisionNumber = 2;
 18.2614 +            this.eot = DFA2_eot;
 18.2615 +            this.eof = DFA2_eof;
 18.2616 +            this.min = DFA2_min;
 18.2617 +            this.max = DFA2_max;
 18.2618 +            this.accept = DFA2_accept;
 18.2619 +            this.special = DFA2_special;
 18.2620 +            this.transition = DFA2_transition;
 18.2621 +        }
 18.2622 +        public String getDescription() {
 18.2623 +            return "458:5: ( ' $ANTLR ' SRC | (~ ( '\\r' | '\\n' ) )* )";
 18.2624 +        }
 18.2625 +        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
 18.2626 +            IntStream input = _input;
 18.2627 +        	int _s = s;
 18.2628 +            switch ( s ) {
 18.2629 +                    case 0 : 
 18.2630 +                        int LA2_6 = input.LA(1);
 18.2631 +
 18.2632 +                        s = -1;
 18.2633 +                        if ( (LA2_6=='L') ) {s = 7;}
 18.2634 +
 18.2635 +                        else if ( ((LA2_6>='\u0000' && LA2_6<='K')||(LA2_6>='M' && LA2_6<='\uFFFF')) ) {s = 2;}
 18.2636 +
 18.2637 +                        if ( s>=0 ) return s;
 18.2638 +                        break;
 18.2639 +                    case 1 : 
 18.2640 +                        int LA2_14 = input.LA(1);
 18.2641 +
 18.2642 +                        s = -1;
 18.2643 +                        if ( (LA2_14=='\\') ) {s = 15;}
 18.2644 +
 18.2645 +                        else if ( (LA2_14=='\r') ) {s = 16;}
 18.2646 +
 18.2647 +                        else if ( (LA2_14=='\"') ) {s = 17;}
 18.2648 +
 18.2649 +                        else if ( (LA2_14=='\n') ) {s = 18;}
 18.2650 +
 18.2651 +                        else if ( ((LA2_14>='\u0000' && LA2_14<='\t')||(LA2_14>='\u000B' && LA2_14<='\f')||(LA2_14>='\u000E' && LA2_14<='!')||(LA2_14>='#' && LA2_14<='[')||(LA2_14>=']' && LA2_14<='\uFFFF')) ) {s = 19;}
 18.2652 +
 18.2653 +                        if ( s>=0 ) return s;
 18.2654 +                        break;
 18.2655 +                    case 2 : 
 18.2656 +                        int LA2_7 = input.LA(1);
 18.2657 +
 18.2658 +                        s = -1;
 18.2659 +                        if ( (LA2_7=='R') ) {s = 8;}
 18.2660 +
 18.2661 +                        else if ( ((LA2_7>='\u0000' && LA2_7<='Q')||(LA2_7>='S' && LA2_7<='\uFFFF')) ) {s = 2;}
 18.2662 +
 18.2663 +                        if ( s>=0 ) return s;
 18.2664 +                        break;
 18.2665 +                    case 3 : 
 18.2666 +                        int LA2_8 = input.LA(1);
 18.2667 +
 18.2668 +                        s = -1;
 18.2669 +                        if ( (LA2_8==' ') ) {s = 9;}
 18.2670 +
 18.2671 +                        else if ( ((LA2_8>='\u0000' && LA2_8<='\u001F')||(LA2_8>='!' && LA2_8<='\uFFFF')) ) {s = 2;}
 18.2672 +
 18.2673 +                        if ( s>=0 ) return s;
 18.2674 +                        break;
 18.2675 +                    case 4 : 
 18.2676 +                        int LA2_23 = input.LA(1);
 18.2677 +
 18.2678 +                        s = -1;
 18.2679 +                        if ( ((LA2_23>='\u0000' && LA2_23<='\uFFFF')) ) {s = 25;}
 18.2680 +
 18.2681 +                        else s = 2;
 18.2682 +
 18.2683 +                        if ( s>=0 ) return s;
 18.2684 +                        break;
 18.2685 +                    case 5 : 
 18.2686 +                        int LA2_13 = input.LA(1);
 18.2687 +
 18.2688 +                        s = -1;
 18.2689 +                        if ( (LA2_13=='\"') ) {s = 14;}
 18.2690 +
 18.2691 +                        else if ( ((LA2_13>='\u0000' && LA2_13<='!')||(LA2_13>='#' && LA2_13<='\uFFFF')) ) {s = 2;}
 18.2692 +
 18.2693 +                        if ( s>=0 ) return s;
 18.2694 +                        break;
 18.2695 +                    case 6 : 
 18.2696 +                        int LA2_17 = input.LA(1);
 18.2697 +
 18.2698 +                        s = -1;
 18.2699 +                        if ( (LA2_17==' ') ) {s = 26;}
 18.2700 +
 18.2701 +                        else if ( ((LA2_17>='\u0000' && LA2_17<='\u001F')||(LA2_17>='!' && LA2_17<='\uFFFF')) ) {s = 2;}
 18.2702 +
 18.2703 +                        if ( s>=0 ) return s;
 18.2704 +                        break;
 18.2705 +                    case 7 : 
 18.2706 +                        int LA2_16 = input.LA(1);
 18.2707 +
 18.2708 +                        s = -1;
 18.2709 +                        if ( ((LA2_16>='\u0000' && LA2_16<='\t')||(LA2_16>='\u000B' && LA2_16<='\uFFFF')) ) {s = 25;}
 18.2710 +
 18.2711 +                        else if ( (LA2_16=='\n') ) {s = 18;}
 18.2712 +
 18.2713 +                        if ( s>=0 ) return s;
 18.2714 +                        break;
 18.2715 +                    case 8 : 
 18.2716 +                        int LA2_19 = input.LA(1);
 18.2717 +
 18.2718 +                        s = -1;
 18.2719 +                        if ( (LA2_19=='\"') ) {s = 17;}
 18.2720 +
 18.2721 +                        else if ( (LA2_19=='\\') ) {s = 15;}
 18.2722 +
 18.2723 +                        else if ( (LA2_19=='\r') ) {s = 16;}
 18.2724 +
 18.2725 +                        else if ( (LA2_19=='\n') ) {s = 18;}
 18.2726 +
 18.2727 +                        else if ( ((LA2_19>='\u0000' && LA2_19<='\t')||(LA2_19>='\u000B' && LA2_19<='\f')||(LA2_19>='\u000E' && LA2_19<='!')||(LA2_19>='#' && LA2_19<='[')||(LA2_19>=']' && LA2_19<='\uFFFF')) ) {s = 19;}
 18.2728 +
 18.2729 +                        if ( s>=0 ) return s;
 18.2730 +                        break;
 18.2731 +                    case 9 : 
 18.2732 +                        int LA2_3 = input.LA(1);
 18.2733 +
 18.2734 +                        s = -1;
 18.2735 +                        if ( (LA2_3=='A') ) {s = 4;}
 18.2736 +
 18.2737 +                        else if ( ((LA2_3>='\u0000' && LA2_3<='@')||(LA2_3>='B' && LA2_3<='\uFFFF')) ) {s = 2;}
 18.2738 +
 18.2739 +                        if ( s>=0 ) return s;
 18.2740 +                        break;
 18.2741 +                    case 10 : 
 18.2742 +                        int LA2_1 = input.LA(1);
 18.2743 +
 18.2744 +                        s = -1;
 18.2745 +                        if ( (LA2_1=='$') ) {s = 3;}
 18.2746 +
 18.2747 +                        else if ( ((LA2_1>='\u0000' && LA2_1<='#')||(LA2_1>='%' && LA2_1<='\uFFFF')) ) {s = 2;}
 18.2748 +
 18.2749 +                        if ( s>=0 ) return s;
 18.2750 +                        break;
 18.2751 +                    case 11 : 
 18.2752 +                        int LA2_5 = input.LA(1);
 18.2753 +
 18.2754 +                        s = -1;
 18.2755 +                        if ( (LA2_5=='T') ) {s = 6;}
 18.2756 +
 18.2757 +                        else if ( ((LA2_5>='\u0000' && LA2_5<='S')||(LA2_5>='U' && LA2_5<='\uFFFF')) ) {s = 2;}
 18.2758 +
 18.2759 +                        if ( s>=0 ) return s;
 18.2760 +                        break;
 18.2761 +                    case 12 : 
 18.2762 +                        int LA2_4 = input.LA(1);
 18.2763 +
 18.2764 +                        s = -1;
 18.2765 +                        if ( (LA2_4=='N') ) {s = 5;}
 18.2766 +
 18.2767 +                        else if ( ((LA2_4>='\u0000' && LA2_4<='M')||(LA2_4>='O' && LA2_4<='\uFFFF')) ) {s = 2;}
 18.2768 +
 18.2769 +                        if ( s>=0 ) return s;
 18.2770 +                        break;
 18.2771 +                    case 13 : 
 18.2772 +                        int LA2_26 = input.LA(1);
 18.2773 +
 18.2774 +                        s = -1;
 18.2775 +                        if ( ((LA2_26>='0' && LA2_26<='9')) ) {s = 27;}
 18.2776 +
 18.2777 +                        else if ( ((LA2_26>='\u0000' && LA2_26<='/')||(LA2_26>=':' && LA2_26<='\uFFFF')) ) {s = 2;}
 18.2778 +
 18.2779 +                        if ( s>=0 ) return s;
 18.2780 +                        break;
 18.2781 +                    case 14 : 
 18.2782 +                        int LA2_21 = input.LA(1);
 18.2783 +
 18.2784 +                        s = -1;
 18.2785 +                        if ( (LA2_21=='\"') ) {s = 17;}
 18.2786 +
 18.2787 +                        else if ( (LA2_21=='\\') ) {s = 15;}
 18.2788 +
 18.2789 +                        else if ( (LA2_21=='\r') ) {s = 16;}
 18.2790 +
 18.2791 +                        else if ( (LA2_21=='\n') ) {s = 18;}
 18.2792 +
 18.2793 +                        else if ( ((LA2_21>='\u0000' && LA2_21<='\t')||(LA2_21>='\u000B' && LA2_21<='\f')||(LA2_21>='\u000E' && LA2_21<='!')||(LA2_21>='#' && LA2_21<='[')||(LA2_21>=']' && LA2_21<='\uFFFF')) ) {s = 19;}
 18.2794 +
 18.2795 +                        if ( s>=0 ) return s;
 18.2796 +                        break;
 18.2797 +                    case 15 : 
 18.2798 +                        int LA2_20 = input.LA(1);
 18.2799 +
 18.2800 +                        s = -1;
 18.2801 +                        if ( (LA2_20=='\"') ) {s = 17;}
 18.2802 +
 18.2803 +                        else if ( (LA2_20=='\\') ) {s = 15;}
 18.2804 +
 18.2805 +                        else if ( (LA2_20=='\r') ) {s = 16;}
 18.2806 +
 18.2807 +                        else if ( (LA2_20=='\n') ) {s = 18;}
 18.2808 +
 18.2809 +                        else if ( ((LA2_20>='\u0000' && LA2_20<='\t')||(LA2_20>='\u000B' && LA2_20<='\f')||(LA2_20>='\u000E' && LA2_20<='!')||(LA2_20>='#' && LA2_20<='[')||(LA2_20>=']' && LA2_20<='\uFFFF')) ) {s = 19;}
 18.2810 +
 18.2811 +                        if ( s>=0 ) return s;
 18.2812 +                        break;
 18.2813 +                    case 16 : 
 18.2814 +                        int LA2_18 = input.LA(1);
 18.2815 +
 18.2816 +                        s = -1;
 18.2817 +                        if ( ((LA2_18>='\u0000' && LA2_18<='\uFFFF')) ) {s = 25;}
 18.2818 +
 18.2819 +                        else s = 2;
 18.2820 +
 18.2821 +                        if ( s>=0 ) return s;
 18.2822 +                        break;
 18.2823 +                    case 17 : 
 18.2824 +                        int LA2_0 = input.LA(1);
 18.2825 +
 18.2826 +                        s = -1;
 18.2827 +                        if ( (LA2_0==' ') ) {s = 1;}
 18.2828 +
 18.2829 +                        else if ( ((LA2_0>='\u0000' && LA2_0<='\u001F')||(LA2_0>='!' && LA2_0<='\uFFFF')) ) {s = 2;}
 18.2830 +
 18.2831 +                        if ( s>=0 ) return s;
 18.2832 +                        break;
 18.2833 +                    case 18 : 
 18.2834 +                        int LA2_12 = input.LA(1);
 18.2835 +
 18.2836 +                        s = -1;
 18.2837 +                        if ( (LA2_12==' ') ) {s = 13;}
 18.2838 +
 18.2839 +                        else if ( ((LA2_12>='\u0000' && LA2_12<='\u001F')||(LA2_12>='!' && LA2_12<='\uFFFF')) ) {s = 2;}
 18.2840 +
 18.2841 +                        if ( s>=0 ) return s;
 18.2842 +                        break;
 18.2843 +                    case 19 : 
 18.2844 +                        int LA2_22 = input.LA(1);
 18.2845 +
 18.2846 +                        s = -1;
 18.2847 +                        if ( ((LA2_22>='\u0000' && LA2_22<='\t')||(LA2_22>='\u000B' && LA2_22<='\uFFFF')) ) {s = 25;}
 18.2848 +
 18.2849 +                        else if ( (LA2_22=='\n') ) {s = 18;}
 18.2850 +
 18.2851 +                        if ( s>=0 ) return s;
 18.2852 +                        break;
 18.2853 +                    case 20 : 
 18.2854 +                        int LA2_9 = input.LA(1);
 18.2855 +
 18.2856 +                        s = -1;
 18.2857 +                        if ( (LA2_9=='s') ) {s = 10;}
 18.2858 +
 18.2859 +                        else if ( ((LA2_9>='\u0000' && LA2_9<='r')||(LA2_9>='t' && LA2_9<='\uFFFF')) ) {s = 2;}
 18.2860 +
 18.2861 +                        if ( s>=0 ) return s;
 18.2862 +                        break;
 18.2863 +                    case 21 : 
 18.2864 +                        int LA2_10 = input.LA(1);
 18.2865 +
 18.2866 +                        s = -1;
 18.2867 +                        if ( (LA2_10=='r') ) {s = 11;}
 18.2868 +
 18.2869 +                        else if ( ((LA2_10>='\u0000' && LA2_10<='q')||(LA2_10>='s' && LA2_10<='\uFFFF')) ) {s = 2;}
 18.2870 +
 18.2871 +                        if ( s>=0 ) return s;
 18.2872 +                        break;
 18.2873 +                    case 22 : 
 18.2874 +                        int LA2_15 = input.LA(1);
 18.2875 +
 18.2876 +                        s = -1;
 18.2877 +                        if ( (LA2_15=='\'') ) {s = 20;}
 18.2878 +
 18.2879 +                        else if ( (LA2_15=='\"') ) {s = 21;}
 18.2880 +
 18.2881 +                        else if ( (LA2_15=='\r') ) {s = 22;}
 18.2882 +
 18.2883 +                        else if ( (LA2_15=='\n') ) {s = 23;}
 18.2884 +
 18.2885 +                        else if ( ((LA2_15>='\u0000' && LA2_15<='\t')||(LA2_15>='\u000B' && LA2_15<='\f')||(LA2_15>='\u000E' && LA2_15<='!')||(LA2_15>='#' && LA2_15<='&')||(LA2_15>='(' && LA2_15<='\uFFFF')) ) {s = 24;}
 18.2886 +
 18.2887 +                        if ( s>=0 ) return s;
 18.2888 +                        break;
 18.2889 +                    case 23 : 
 18.2890 +                        int LA2_11 = input.LA(1);
 18.2891 +
 18.2892 +                        s = -1;
 18.2893 +                        if ( (LA2_11=='c') ) {s = 12;}
 18.2894 +
 18.2895 +                        else if ( ((LA2_11>='\u0000' && LA2_11<='b')||(LA2_11>='d' && LA2_11<='\uFFFF')) ) {s = 2;}
 18.2896 +
 18.2897 +                        if ( s>=0 ) return s;
 18.2898 +                        break;
 18.2899 +                    case 24 : 
 18.2900 +                        int LA2_24 = input.LA(1);
 18.2901 +
 18.2902 +                        s = -1;
 18.2903 +                        if ( (LA2_24=='\"') ) {s = 17;}
 18.2904 +
 18.2905 +                        else if ( (LA2_24=='\\') ) {s = 15;}
 18.2906 +
 18.2907 +                        else if ( (LA2_24=='\r') ) {s = 16;}
 18.2908 +
 18.2909 +                        else if ( (LA2_24=='\n') ) {s = 18;}
 18.2910 +
 18.2911 +                        else if ( ((LA2_24>='\u0000' && LA2_24<='\t')||(LA2_24>='\u000B' && LA2_24<='\f')||(LA2_24>='\u000E' && LA2_24<='!')||(LA2_24>='#' && LA2_24<='[')||(LA2_24>=']' && LA2_24<='\uFFFF')) ) {s = 19;}
 18.2912 +
 18.2913 +                        if ( s>=0 ) return s;
 18.2914 +                        break;
 18.2915 +            }
 18.2916 +            NoViableAltException nvae =
 18.2917 +                new NoViableAltException(getDescription(), 2, _s, input);
 18.2918 +            error(nvae);
 18.2919 +            throw nvae;
 18.2920 +        }
 18.2921 +    }
 18.2922 +    static final String DFA9_eotS =
 18.2923 +        "\12\uffff\1\13\2\uffff";
 18.2924 +    static final String DFA9_eofS =
 18.2925 +        "\15\uffff";
 18.2926 +    static final String DFA9_minS =
 18.2927 +        "\1\0\11\uffff\1\60\2\uffff";
 18.2928 +    static final String DFA9_maxS =
 18.2929 +        "\1\uffff\11\uffff\1\146\2\uffff";
 18.2930 +    static final String DFA9_acceptS =
 18.2931 +        "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\uffff\1\13\1\12";
 18.2932 +    static final String DFA9_specialS =
 18.2933 +        "\1\0\14\uffff}>";
 18.2934 +    static final String[] DFA9_transitionS = {
 18.2935 +            "\42\13\1\6\4\13\1\7\26\13\1\11\35\13\1\10\5\13\1\4\3\13\1\5"+
 18.2936 +            "\7\13\1\1\3\13\1\2\1\13\1\3\1\12\uff8a\13",
 18.2937 +            "",
 18.2938 +            "",
 18.2939 +            "",
 18.2940 +            "",
 18.2941 +            "",
 18.2942 +            "",
 18.2943 +            "",
 18.2944 +            "",
 18.2945 +            "",
 18.2946 +            "\12\14\7\uffff\6\14\32\uffff\6\14",
 18.2947 +            "",
 18.2948 +            ""
 18.2949 +    };
 18.2950 +
 18.2951 +    static final short[] DFA9_eot = DFA.unpackEncodedString(DFA9_eotS);
 18.2952 +    static final short[] DFA9_eof = DFA.unpackEncodedString(DFA9_eofS);
 18.2953 +    static final char[] DFA9_min = DFA.unpackEncodedStringToUnsignedChars(DFA9_minS);
 18.2954 +    static final char[] DFA9_max = DFA.unpackEncodedStringToUnsignedChars(DFA9_maxS);
 18.2955 +    static final short[] DFA9_accept = DFA.unpackEncodedString(DFA9_acceptS);
 18.2956 +    static final short[] DFA9_special = DFA.unpackEncodedString(DFA9_specialS);
 18.2957 +    static final short[][] DFA9_transition;
 18.2958 +
 18.2959 +    static {
 18.2960 +        int numStates = DFA9_transitionS.length;
 18.2961 +        DFA9_transition = new short[numStates][];
 18.2962 +        for (int i=0; i<numStates; i++) {
 18.2963 +            DFA9_transition[i] = DFA.unpackEncodedString(DFA9_transitionS[i]);
 18.2964 +        }
 18.2965 +    }
 18.2966 +
 18.2967 +    class DFA9 extends DFA {
 18.2968 +
 18.2969 +        public DFA9(BaseRecognizer recognizer) {
 18.2970 +            this.recognizer = recognizer;
 18.2971 +            this.decisionNumber = 9;
 18.2972 +            this.eot = DFA9_eot;
 18.2973 +            this.eof = DFA9_eof;
 18.2974 +            this.min = DFA9_min;
 18.2975 +            this.max = DFA9_max;
 18.2976 +            this.accept = DFA9_accept;
 18.2977 +            this.special = DFA9_special;
 18.2978 +            this.transition = DFA9_transition;
 18.2979 +        }
 18.2980 +        public String getDescription() {
 18.2981 +            return "493:3: ( 'n' | 'r' | 't' | 'b' | 'f' | '\"' | '\\'' | '\\\\' | '>' | 'u' XDIGIT XDIGIT XDIGIT XDIGIT | . )";
 18.2982 +        }
 18.2983 +        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
 18.2984 +            IntStream input = _input;
 18.2985 +        	int _s = s;
 18.2986 +            switch ( s ) {
 18.2987 +                    case 0 : 
 18.2988 +                        int LA9_0 = input.LA(1);
 18.2989 +
 18.2990 +                        s = -1;
 18.2991 +                        if ( (LA9_0=='n') ) {s = 1;}
 18.2992 +
 18.2993 +                        else if ( (LA9_0=='r') ) {s = 2;}
 18.2994 +
 18.2995 +                        else if ( (LA9_0=='t') ) {s = 3;}
 18.2996 +
 18.2997 +                        else if ( (LA9_0=='b') ) {s = 4;}
 18.2998 +
 18.2999 +                        else if ( (LA9_0=='f') ) {s = 5;}
 18.3000 +
 18.3001 +                        else if ( (LA9_0=='\"') ) {s = 6;}
 18.3002 +
 18.3003 +                        else if ( (LA9_0=='\'') ) {s = 7;}
 18.3004 +
 18.3005 +                        else if ( (LA9_0=='\\') ) {s = 8;}
 18.3006 +
 18.3007 +                        else if ( (LA9_0=='>') ) {s = 9;}
 18.3008 +
 18.3009 +                        else if ( (LA9_0=='u') ) {s = 10;}
 18.3010 +
 18.3011 +                        else if ( ((LA9_0>='\u0000' && LA9_0<='!')||(LA9_0>='#' && LA9_0<='&')||(LA9_0>='(' && LA9_0<='=')||(LA9_0>='?' && LA9_0<='[')||(LA9_0>=']' && LA9_0<='a')||(LA9_0>='c' && LA9_0<='e')||(LA9_0>='g' && LA9_0<='m')||(LA9_0>='o' && LA9_0<='q')||LA9_0=='s'||(LA9_0>='v' && LA9_0<='\uFFFF')) ) {s = 11;}
 18.3012 +
 18.3013 +                        if ( s>=0 ) return s;
 18.3014 +                        break;
 18.3015 +            }
 18.3016 +            NoViableAltException nvae =
 18.3017 +                new NoViableAltException(getDescription(), 9, _s, input);
 18.3018 +            error(nvae);
 18.3019 +            throw nvae;
 18.3020 +        }
 18.3021 +    }
 18.3022 +    static final String DFA13_eotS =
 18.3023 +        "\34\uffff";
 18.3024 +    static final String DFA13_eofS =
 18.3025 +        "\34\uffff";
 18.3026 +    static final String DFA13_minS =
 18.3027 +        "\1\0\2\uffff\3\0\26\uffff";
 18.3028 +    static final String DFA13_maxS =
 18.3029 +        "\1\uffff\2\uffff\3\uffff\26\uffff";
 18.3030 +    static final String DFA13_acceptS =
 18.3031 +        "\1\uffff\1\7\1\1\3\uffff\1\6\1\2\1\3\5\uffff\7\4\6\5\1\uffff";
 18.3032 +    static final String DFA13_specialS =
 18.3033 +        "\1\0\2\uffff\1\1\1\2\1\3\26\uffff}>";
 18.3034 +    static final String[] DFA13_transitionS = {
 18.3035 +            "\42\6\1\4\4\6\1\5\7\6\1\3\113\6\1\2\1\6\1\1\uff82\6",
 18.3036 +            "",
 18.3037 +            "",
 18.3038 +            "\52\6\1\10\4\6\1\7\uffd0\6",
 18.3039 +            "\42\24\1\20\4\24\1\23\7\24\1\22\54\24\1\16\36\24\1\21\1\24"+
 18.3040 +            "\1\17\uff82\24",
 18.3041 +            "\42\32\1\31\4\32\1\6\7\32\1\30\54\32\1\25\36\32\1\27\1\32\1"+
 18.3042 +            "\26\uff82\32",
 18.3043 +            "",
 18.3044 +            "",
 18.3045 +            "",
 18.3046 +            "",
 18.3047 +            "",
 18.3048 +            "",
 18.3049 +            "",
 18.3050 +            "",
 18.3051 +            "",
 18.3052 +            "",
 18.3053 +            "",
 18.3054 +            "",
 18.3055 +            "",
 18.3056 +            "",
 18.3057 +            "",
 18.3058 +            "",
 18.3059 +            "",
 18.3060 +            "",
 18.3061 +            "",
 18.3062 +            "",
 18.3063 +            "",
 18.3064 +            ""
 18.3065 +    };
 18.3066 +
 18.3067 +    static final short[] DFA13_eot = DFA.unpackEncodedString(DFA13_eotS);
 18.3068 +    static final short[] DFA13_eof = DFA.unpackEncodedString(DFA13_eofS);
 18.3069 +    static final char[] DFA13_min = DFA.unpackEncodedStringToUnsignedChars(DFA13_minS);
 18.3070 +    static final char[] DFA13_max = DFA.unpackEncodedStringToUnsignedChars(DFA13_maxS);
 18.3071 +    static final short[] DFA13_accept = DFA.unpackEncodedString(DFA13_acceptS);
 18.3072 +    static final short[] DFA13_special = DFA.unpackEncodedString(DFA13_specialS);
 18.3073 +    static final short[][] DFA13_transition;
 18.3074 +
 18.3075 +    static {
 18.3076 +        int numStates = DFA13_transitionS.length;
 18.3077 +        DFA13_transition = new short[numStates][];
 18.3078 +        for (int i=0; i<numStates; i++) {
 18.3079 +            DFA13_transition[i] = DFA.unpackEncodedString(DFA13_transitionS[i]);
 18.3080 +        }
 18.3081 +    }
 18.3082 +
 18.3083 +    class DFA13 extends DFA {
 18.3084 +
 18.3085 +        public DFA13(BaseRecognizer recognizer) {
 18.3086 +            this.recognizer = recognizer;
 18.3087 +            this.decisionNumber = 13;
 18.3088 +            this.eot = DFA13_eot;
 18.3089 +            this.eof = DFA13_eof;
 18.3090 +            this.min = DFA13_min;
 18.3091 +            this.max = DFA13_max;
 18.3092 +            this.accept = DFA13_accept;
 18.3093 +            this.special = DFA13_special;
 18.3094 +            this.transition = DFA13_transition;
 18.3095 +        }
 18.3096 +        public String getDescription() {
 18.3097 +            return "()* loopback of 541:2: ( options {greedy=false; k=2; } : NESTED_ACTION | SL_COMMENT | ML_COMMENT | ACTION_STRING_LITERAL | ACTION_CHAR_LITERAL | . )*";
 18.3098 +        }
 18.3099 +        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
 18.3100 +            IntStream input = _input;
 18.3101 +        	int _s = s;
 18.3102 +            switch ( s ) {
 18.3103 +                    case 0 : 
 18.3104 +                        int LA13_0 = input.LA(1);
 18.3105 +
 18.3106 +                        s = -1;
 18.3107 +                        if ( (LA13_0=='}') ) {s = 1;}
 18.3108 +
 18.3109 +                        else if ( (LA13_0=='{') ) {s = 2;}
 18.3110 +
 18.3111 +                        else if ( (LA13_0=='/') ) {s = 3;}
 18.3112 +
 18.3113 +                        else if ( (LA13_0=='\"') ) {s = 4;}
 18.3114 +
 18.3115 +                        else if ( (LA13_0=='\'') ) {s = 5;}
 18.3116 +
 18.3117 +                        else if ( ((LA13_0>='\u0000' && LA13_0<='!')||(LA13_0>='#' && LA13_0<='&')||(LA13_0>='(' && LA13_0<='.')||(LA13_0>='0' && LA13_0<='z')||LA13_0=='|'||(LA13_0>='~' && LA13_0<='\uFFFF')) ) {s = 6;}
 18.3118 +
 18.3119 +                        if ( s>=0 ) return s;
 18.3120 +                        break;
 18.3121 +                    case 1 : 
 18.3122 +                        int LA13_3 = input.LA(1);
 18.3123 +
 18.3124 +                        s = -1;
 18.3125 +                        if ( (LA13_3=='/') ) {s = 7;}
 18.3126 +
 18.3127 +                        else if ( (LA13_3=='*') ) {s = 8;}
 18.3128 +
 18.3129 +                        else if ( ((LA13_3>='\u0000' && LA13_3<=')')||(LA13_3>='+' && LA13_3<='.')||(LA13_3>='0' && LA13_3<='\uFFFF')) ) {s = 6;}
 18.3130 +
 18.3131 +                        if ( s>=0 ) return s;
 18.3132 +                        break;
 18.3133 +                    case 2 : 
 18.3134 +                        int LA13_4 = input.LA(1);
 18.3135 +
 18.3136 +                        s = -1;
 18.3137 +                        if ( (LA13_4=='\\') ) {s = 14;}
 18.3138 +
 18.3139 +                        else if ( (LA13_4=='}') ) {s = 15;}
 18.3140 +
 18.3141 +                        else if ( (LA13_4=='\"') ) {s = 16;}
 18.3142 +
 18.3143 +                        else if ( (LA13_4=='{') ) {s = 17;}
 18.3144 +
 18.3145 +                        else if ( (LA13_4=='/') ) {s = 18;}
 18.3146 +
 18.3147 +                        else if ( (LA13_4=='\'') ) {s = 19;}
 18.3148 +
 18.3149 +                        else if ( ((LA13_4>='\u0000' && LA13_4<='!')||(LA13_4>='#' && LA13_4<='&')||(LA13_4>='(' && LA13_4<='.')||(LA13_4>='0' && LA13_4<='[')||(LA13_4>=']' && LA13_4<='z')||LA13_4=='|'||(LA13_4>='~' && LA13_4<='\uFFFF')) ) {s = 20;}
 18.3150 +
 18.3151 +                        if ( s>=0 ) return s;
 18.3152 +                        break;
 18.3153 +                    case 3 : 
 18.3154 +                        int LA13_5 = input.LA(1);
 18.3155 +
 18.3156 +                        s = -1;
 18.3157 +                        if ( (LA13_5=='\\') ) {s = 21;}
 18.3158 +
 18.3159 +                        else if ( (LA13_5=='}') ) {s = 22;}
 18.3160 +
 18.3161 +                        else if ( (LA13_5=='{') ) {s = 23;}
 18.3162 +
 18.3163 +                        else if ( (LA13_5=='/') ) {s = 24;}
 18.3164 +
 18.3165 +                        else if ( (LA13_5=='\"') ) {s = 25;}
 18.3166 +
 18.3167 +                        else if ( ((LA13_5>='\u0000' && LA13_5<='!')||(LA13_5>='#' && LA13_5<='&')||(LA13_5>='(' && LA13_5<='.')||(LA13_5>='0' && LA13_5<='[')||(LA13_5>=']' && LA13_5<='z')||LA13_5=='|'||(LA13_5>='~' && LA13_5<='\uFFFF')) ) {s = 26;}
 18.3168 +
 18.3169 +                        else if ( (LA13_5=='\'') ) {s = 6;}
 18.3170 +
 18.3171 +                        if ( s>=0 ) return s;
 18.3172 +                        break;
 18.3173 +            }
 18.3174 +            NoViableAltException nvae =
 18.3175 +                new NoViableAltException(getDescription(), 13, _s, input);
 18.3176 +            error(nvae);
 18.3177 +            throw nvae;
 18.3178 +        }
 18.3179 +    }
 18.3180 +    static final String DFA22_eotS =
 18.3181 +        "\1\uffff\2\44\1\52\1\uffff\1\54\1\uffff\4\44\2\uffff\1\66\1\uffff"+
 18.3182 +        "\1\70\1\uffff\1\44\4\uffff\1\44\1\74\13\uffff\1\44\2\uffff\3\44"+
 18.3183 +        "\4\uffff\10\44\4\uffff\2\44\6\uffff\17\44\15\uffff\11\44\1\167\5"+
 18.3184 +        "\44\2\uffff\1\44\1\177\2\44\1\u0082\4\44\1\uffff\4\44\1\u008b\1"+
 18.3185 +        "\uffff\1\44\1\uffff\2\44\1\uffff\1\u0090\2\44\1\u0093\1\u0094\3"+
 18.3186 +        "\44\2\uffff\2\44\1\u009b\1\uffff\1\44\1\u009d\3\uffff\1\u009e\1"+
 18.3187 +        "\u009f\1\uffff\1\44\1\u00a1\1\uffff\1\44\5\uffff\1\u00a3\1\uffff";
 18.3188 +    static final String DFA22_eofS =
 18.3189 +        "\u00a4\uffff";
 18.3190 +    static final String DFA22_minS =
 18.3191 +        "\1\11\1\143\1\151\1\50\1\uffff\1\56\1\uffff\1\145\1\141\1\150\1"+
 18.3192 +        "\162\2\uffff\1\76\1\uffff\1\72\1\uffff\1\145\4\uffff\1\141\1\75"+
 18.3193 +        "\3\uffff\1\52\1\0\6\uffff\1\160\2\uffff\1\157\1\141\1\156\4\uffff"+
 18.3194 +        "\1\170\1\162\1\151\1\142\1\145\1\162\1\153\1\141\4\uffff\2\164\4"+
 18.3195 +        "\uffff\2\0\1\164\1\160\1\147\1\141\1\145\1\163\1\164\1\166\1\154"+
 18.3196 +        "\1\145\1\157\1\145\1\155\1\165\1\143\13\0\2\uffff\1\151\1\145\1"+
 18.3197 +        "\155\1\154\1\162\2\145\1\141\1\151\1\60\1\167\1\156\1\155\1\162"+
 18.3198 +        "\1\150\1\0\1\uffff\1\157\1\60\1\145\1\154\1\60\1\162\1\143\1\164"+
 18.3199 +        "\1\143\1\uffff\2\163\1\141\1\156\1\60\1\0\1\156\1\uffff\1\156\1"+
 18.3200 +        "\171\1\uffff\1\60\1\164\1\145\2\60\1\11\1\162\1\163\1\uffff\1\0"+
 18.3201 +        "\1\163\1\164\1\60\1\uffff\1\145\1\60\3\uffff\2\60\1\0\1\11\1\60"+
 18.3202 +        "\1\uffff\1\144\5\uffff\1\60\1\uffff";
 18.3203 +    static final String DFA22_maxS =
 18.3204 +        "\1\176\1\143\1\162\1\50\1\uffff\1\56\1\uffff\1\145\1\165\2\162\2"+
 18.3205 +        "\uffff\1\76\1\uffff\1\72\1\uffff\1\145\4\uffff\1\141\1\75\3\uffff"+
 18.3206 +        "\1\57\1\uffff\6\uffff\1\160\2\uffff\1\157\1\141\1\156\4\uffff\1"+
 18.3207 +        "\170\1\162\1\157\1\142\1\145\1\162\1\153\1\141\4\uffff\2\164\4\uffff"+
 18.3208 +        "\2\uffff\1\164\1\160\1\147\1\141\1\145\1\163\1\164\1\166\1\154\1"+
 18.3209 +        "\145\1\157\1\145\1\155\1\165\1\143\13\uffff\2\uffff\1\151\1\145"+
 18.3210 +        "\1\155\1\154\1\162\2\145\1\141\1\151\1\172\1\167\1\156\1\155\1\162"+
 18.3211 +        "\1\150\1\uffff\1\uffff\1\157\1\172\1\145\1\154\1\172\1\162\1\143"+
 18.3212 +        "\1\164\1\143\1\uffff\2\163\1\141\1\156\1\172\1\uffff\1\156\1\uffff"+
 18.3213 +        "\1\156\1\171\1\uffff\1\172\1\164\1\145\2\172\1\173\1\162\1\163\1"+
 18.3214 +        "\uffff\1\uffff\1\163\1\164\1\172\1\uffff\1\145\1\172\3\uffff\2\172"+
 18.3215 +        "\1\uffff\1\173\1\172\1\uffff\1\144\5\uffff\1\172\1\uffff";
 18.3216 +    static final String DFA22_acceptS =
 18.3217 +        "\4\uffff\1\5\1\uffff\1\7\4\uffff\1\14\1\15\1\uffff\1\17\1\uffff"+
 18.3218 +        "\1\21\1\uffff\1\30\1\31\1\32\1\33\2\uffff\1\40\1\41\1\44\2\uffff"+
 18.3219 +        "\1\51\1\52\1\53\1\54\1\55\1\56\1\uffff\1\57\1\62\3\uffff\1\3\1\4"+
 18.3220 +        "\1\6\1\43\10\uffff\1\37\1\16\1\20\1\26\2\uffff\1\36\1\42\1\45\1"+
 18.3221 +        "\46\34\uffff\1\47\1\50\20\uffff\1\47\11\uffff\1\12\7\uffff\1\1\2"+
 18.3222 +        "\uffff\1\10\10\uffff\1\34\4\uffff\1\11\2\uffff\1\23\1\27\1\61\5"+
 18.3223 +        "\uffff\1\35\1\uffff\1\24\1\13\1\25\1\60\1\2\1\uffff\1\22";
 18.3224 +    static final String DFA22_specialS =
 18.3225 +        "\34\uffff\1\4\42\uffff\1\0\1\5\17\uffff\1\3\1\2\1\1\1\16\1\14\1"+
 18.3226 +        "\21\1\20\1\12\1\11\1\7\1\6\21\uffff\1\13\20\uffff\1\15\16\uffff"+
 18.3227 +        "\1\17\13\uffff\1\10\13\uffff}>";
 18.3228 +    static final String[] DFA22_transitionS = {
 18.3229 +            "\2\45\2\uffff\1\45\22\uffff\1\45\1\4\1\35\1\uffff\1\32\2\uffff"+
 18.3230 +            "\1\34\1\23\1\25\1\20\1\27\1\22\1\6\1\5\1\33\12\37\1\17\1\13"+
 18.3231 +            "\1\36\1\15\1\uffff\1\31\1\16\32\42\1\40\2\uffff\1\3\2\uffff"+
 18.3232 +            "\2\44\1\26\2\44\1\2\1\12\4\44\1\7\2\44\1\43\1\10\1\44\1\21\1"+
 18.3233 +            "\1\1\11\6\44\1\41\1\24\1\14\1\30",
 18.3234 +            "\1\46",
 18.3235 +            "\1\50\10\uffff\1\47",
 18.3236 +            "\1\51",
 18.3237 +            "",
 18.3238 +            "\1\53",
 18.3239 +            "",
 18.3240 +            "\1\55",
 18.3241 +            "\1\56\20\uffff\1\57\2\uffff\1\60",
 18.3242 +            "\1\62\6\uffff\1\63\2\uffff\1\61",
 18.3243 +            "\1\64",
 18.3244 +            "",
 18.3245 +            "",
 18.3246 +            "\1\65",
 18.3247 +            "",
 18.3248 +            "\1\67",
 18.3249 +            "",
 18.3250 +            "\1\71",
 18.3251 +            "",
 18.3252 +            "",
 18.3253 +            "",
 18.3254 +            "",
 18.3255 +            "\1\72",
 18.3256 +            "\1\73",
 18.3257 +            "",
 18.3258 +            "",
 18.3259 +            "",
 18.3260 +            "\1\76\4\uffff\1\75",
 18.3261 +            "\47\100\1\uffff\64\100\1\77\uffa3\100",
 18.3262 +            "",
 18.3263 +            "",
 18.3264 +            "",
 18.3265 +            "",
 18.3266 +            "",
 18.3267 +            "",
 18.3268 +            "\1\101",
 18.3269 +            "",
 18.3270 +            "",
 18.3271 +            "\1\102",
 18.3272 +            "\1\103",
 18.3273 +            "\1\104",
 18.3274 +            "",
 18.3275 +            "",
 18.3276 +            "",
 18.3277 +            "",
 18.3278 +            "\1\105",
 18.3279 +            "\1\106",
 18.3280 +            "\1\110\5\uffff\1\107",
 18.3281 +            "\1\111",
 18.3282 +            "\1\112",
 18.3283 +            "\1\113",
 18.3284 +            "\1\114",
 18.3285 +            "\1\115",
 18.3286 +            "",
 18.3287 +            "",
 18.3288 +            "",
 18.3289 +            "",
 18.3290 +            "\1\116",
 18.3291 +            "\1\117",
 18.3292 +            "",
 18.3293 +            "",
 18.3294 +            "",
 18.3295 +            "",
 18.3296 +            "\42\132\1\125\4\132\1\126\26\132\1\130\35\132\1\127\5\132\1"+
 18.3297 +            "\123\3\132\1\124\7\132\1\120\3\132\1\121\1\132\1\122\1\131\uff8a"+
 18.3298 +            "\132",
 18.3299 +            "\47\134\1\133\uffd8\134",
 18.3300 +            "\1\135",
 18.3301 +            "\1\136",
 18.3302 +            "\1\137",
 18.3303 +            "\1\140",
 18.3304 +            "\1\141",
 18.3305 +            "\1\142",
 18.3306 +            "\1\143",
 18.3307 +            "\1\144",
 18.3308 +            "\1\145",
 18.3309 +            "\1\146",
 18.3310 +            "\1\147",
 18.3311 +            "\1\150",
 18.3312 +            "\1\151",
 18.3313 +            "\1\152",
 18.3314 +            "\1\153",
 18.3315 +            "\47\134\1\133\uffd8\134",
 18.3316 +            "\47\134\1\133\uffd8\134",
 18.3317 +            "\47\134\1\133\uffd8\134",
 18.3318 +            "\47\134\1\133\uffd8\134",
 18.3319 +            "\47\134\1\133\uffd8\134",
 18.3320 +            "\47\134\1\133\uffd8\134",
 18.3321 +            "\47\134\1\133\uffd8\134",
 18.3322 +            "\47\134\1\133\uffd8\134",
 18.3323 +            "\47\134\1\133\uffd8\134",
 18.3324 +            "\47\134\1\133\10\134\12\154\7\134\6\154\32\134\6\154\uff99"+
 18.3325 +            "\134",
 18.3326 +            "\47\134\1\133\uffd8\134",
 18.3327 +            "",
 18.3328 +            "",
 18.3329 +            "\1\156",
 18.3330 +            "\1\157",
 18.3331 +            "\1\160",
 18.3332 +            "\1\161",
 18.3333 +            "\1\162",
 18.3334 +            "\1\163",
 18.3335 +            "\1\164",
 18.3336 +            "\1\165",
 18.3337 +            "\1\166",
 18.3338 +            "\12\44\7\uffff\32\44\4\uffff\1\44\1\uffff\32\44",
 18.3339 +            "\1\170",
 18.3340 +            "\1\171",
 18.3341 +            "\1\172",
 18.3342 +            "\1\173",
 18.3343 +            "\1\174",
 18.3344 +            "\60\134\12\175\7\134\6\175\32\134\6\175\uff99\134",
 18.3345 +            "",
 18.3346 +            "\1\176",
 18.3347 +            "\12\44\7\uffff\32\44\4\uffff\1\44\1\uffff\32\44",
 18.3348 +            "\1\u0080",
 18.3349 +            "\1\u0081",
 18.3350 +            "\12\44\7\uffff\32\44\4\uffff\1\44\1\uffff\32\44",
 18.3351 +            "\1\u0083",
 18.3352 +            "\1\u0084",
 18.3353 +            "\1\u0085",
 18.3354 +            "\1\u0086",
 18.3355 +            "",
 18.3356 +            "\1\u0087",
 18.3357 +            "\1\u0088",
 18.3358 +            "\1\u0089",
 18.3359 +            "\1\u008a",
 18.3360 +            "\12\44\7\uffff\32\44\4\uffff\1\44\1\uffff\32\44",
 18.3361 +            "\60\134\12\u008c\7\134\6\u008c\32\134\6\u008c\uff99\134",
 18.3362 +            "\1\u008d",
 18.3363 +            "",
 18.3364 +            "\1\u008e",
 18.3365 +            "\1\u008f",
 18.3366 +            "",
 18.3367 +            "\12\44\7\uffff\32\44\4\uffff\1\44\1\uffff\32\44",
 18.3368 +            "\1\u0091",
 18.3369 +            "\1\u0092",
 18.3370 +            "\12\44\7\uffff\32\44\4\uffff\1\44\1\uffff\32\44",
 18.3371 +            "\12\44\7\uffff\32\44\4\uffff\1\44\1\uffff\32\44",
 18.3372 +            "\2\u0095\2\uffff\1\u0095\22\uffff\1\u0095\16\uffff\1\u0095"+
 18.3373 +            "\113\uffff\1\u0095",
 18.3374 +            "\1\u0096",
 18.3375 +            "\1\u0097",
 18.3376 +            "",
 18.3377 +            "\60\134\12\u0098\7\134\6\u0098\32\134\6\u0098\uff99\134",
 18.3378 +            "\1\u0099",
 18.3379 +            "\1\u009a",
 18.3380 +            "\12\44\7\uffff\32\44\4\uffff\1\44\1\uffff\32\44",
 18.3381 +            "",
 18.3382 +            "\1\u009c",
 18.3383 +            "\12\44\7\uffff\32\44\4\uffff\1\44\1\uffff\32\44",
 18.3384 +            "",
 18.3385 +            "",
 18.3386 +            "",
 18.3387 +            "\12\44\7\uffff\32\44\4\uffff\1\44\1\uffff\32\44",
 18.3388 +            "\12\44\7\uffff\32\44\4\uffff\1\44\1\uffff\32\44",
 18.3389 +            "\47\134\1\133\uffd8\134",
 18.3390 +            "\2\u00a0\2\uffff\1\u00a0\22\uffff\1\u00a0\16\uffff\1\u00a0"+
 18.3391 +            "\113\uffff\1\u00a0",
 18.3392 +            "\12\44\7\uffff\32\44\4\uffff\1\44\1\uffff\32\44",
 18.3393 +            "",
 18.3394 +            "\1\u00a2",
 18.3395 +            "",
 18.3396 +            "",
 18.3397 +            "",
 18.3398 +            "",
 18.3399 +            "",
 18.3400 +            "\12\44\7\uffff\32\44\4\uffff\1\44\1\uffff\32\44",
 18.3401 +            ""
 18.3402 +    };
 18.3403 +
 18.3404 +    static final short[] DFA22_eot = DFA.unpackEncodedString(DFA22_eotS);
 18.3405 +    static final short[] DFA22_eof = DFA.unpackEncodedString(DFA22_eofS);
 18.3406 +    static final char[] DFA22_min = DFA.unpackEncodedStringToUnsignedChars(DFA22_minS);
 18.3407 +    static final char[] DFA22_max = DFA.unpackEncodedStringToUnsignedChars(DFA22_maxS);
 18.3408 +    static final short[] DFA22_accept = DFA.unpackEncodedString(DFA22_acceptS);
 18.3409 +    static final short[] DFA22_special = DFA.unpackEncodedString(DFA22_specialS);
 18.3410 +    static final short[][] DFA22_transition;
 18.3411 +
 18.3412 +    static {
 18.3413 +        int numStates = DFA22_transitionS.length;
 18.3414 +        DFA22_transition = new short[numStates][];
 18.3415 +        for (int i=0; i<numStates; i++) {
 18.3416 +            DFA22_transition[i] = DFA.unpackEncodedString(DFA22_transitionS[i]);
 18.3417 +        }
 18.3418 +    }
 18.3419 +
 18.3420 +    class DFA22 extends DFA {
 18.3421 +
 18.3422 +        public DFA22(BaseRecognizer recognizer) {
 18.3423 +            this.recognizer = recognizer;
 18.3424 +            this.decisionNumber = 22;
 18.3425 +            this.eot = DFA22_eot;
 18.3426 +            this.eof = DFA22_eof;
 18.3427 +            this.min = DFA22_min;
 18.3428 +            this.max = DFA22_max;
 18.3429 +            this.accept = DFA22_accept;
 18.3430 +            this.special = DFA22_special;
 18.3431 +            this.transition = DFA22_transition;
 18.3432 +        }
 18.3433 +        public String getDescription() {
 18.3434 +            return "1:1: Tokens : ( SCOPE | FRAGMENT | TREE_BEGIN | ROOT | BANG | RANGE | REWRITE | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | SL_COMMENT | ML_COMMENT | CHAR_LITERAL | STRING_LITERAL | DOUBLE_QUOTE_STRING_LITERAL | DOUBLE_ANGLE_STRING_LITERAL | INT | ARG_ACTION | ACTION | TOKEN_REF | RULE_REF | OPTIONS | TOKENS | WS );";
 18.3435 +        }
 18.3436 +        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
 18.3437 +            IntStream input = _input;
 18.3438 +        	int _s = s;
 18.3439 +            switch ( s ) {
 18.3440 +                    case 0 : 
 18.3441 +                        int LA22_63 = input.LA(1);
 18.3442 +
 18.3443 +                        s = -1;
 18.3444 +                        if ( (LA22_63=='n') ) {s = 80;}
 18.3445 +
 18.3446 +                        else if ( (LA22_63=='r') ) {s = 81;}
 18.3447 +
 18.3448 +                        else if ( (LA22_63=='t') ) {s = 82;}
 18.3449 +
 18.3450 +                        else if ( (LA22_63=='b') ) {s = 83;}
 18.3451 +
 18.3452 +                        else if ( (LA22_63=='f') ) {s = 84;}
 18.3453 +
 18.3454 +                        else if ( (LA22_63=='\"') ) {s = 85;}
 18.3455 +
 18.3456 +                        else if ( (LA22_63=='\'') ) {s = 86;}
 18.3457 +
 18.3458 +                        else if ( (LA22_63=='\\') ) {s = 87;}
 18.3459 +
 18.3460 +                        else if ( (LA22_63=='>') ) {s = 88;}
 18.3461 +
 18.3462 +                        else if ( (LA22_63=='u') ) {s = 89;}
 18.3463 +
 18.3464 +                        else if ( ((LA22_63>='\u0000' && LA22_63<='!')||(LA22_63>='#' && LA22_63<='&')||(LA22_63>='(' && LA22_63<='=')||(LA22_63>='?' && LA22_63<='[')||(LA22_63>=']' && LA22_63<='a')||(LA22_63>='c' && LA22_63<='e')||(LA22_63>='g' && LA22_63<='m')||(LA22_63>='o' && LA22_63<='q')||LA22_63=='s'||(LA22_63>='v' && LA22_63<='\uFFFF')) ) {s = 90;}
 18.3465 +
 18.3466 +                        if ( s>=0 ) return s;
 18.3467 +                        break;
 18.3468 +                    case 1 : 
 18.3469 +                        int LA22_82 = input.LA(1);
 18.3470 +
 18.3471 +                        s = -1;
 18.3472 +                        if ( (LA22_82=='\'') ) {s = 91;}
 18.3473 +
 18.3474 +                        else if ( ((LA22_82>='\u0000' && LA22_82<='&')||(LA22_82>='(' && LA22_82<='\uFFFF')) ) {s = 92;}
 18.3475 +
 18.3476 +                        if ( s>=0 ) return s;
 18.3477 +                        break;
 18.3478 +                    case 2 : 
 18.3479 +                        int LA22_81 = input.LA(1);
 18.3480 +
 18.3481 +                        s = -1;
 18.3482 +                        if ( (LA22_81=='\'') ) {s = 91;}
 18.3483 +
 18.3484 +                        else if ( ((LA22_81>='\u0000' && LA22_81<='&')||(LA22_81>='(' && LA22_81<='\uFFFF')) ) {s = 92;}
 18.3485 +
 18.3486 +                        if ( s>=0 ) return s;
 18.3487 +                        break;
 18.3488 +                    case 3 : 
 18.3489 +                        int LA22_80 = input.LA(1);
 18.3490 +
 18.3491 +                        s = -1;
 18.3492 +                        if ( (LA22_80=='\'') ) {s = 91;}
 18.3493 +
 18.3494 +                        else if ( ((LA22_80>='\u0000' && LA22_80<='&')||(LA22_80>='(' && LA22_80<='\uFFFF')) ) {s = 92;}
 18.3495 +
 18.3496 +                        if ( s>=0 ) return s;
 18.3497 +                        break;
 18.3498 +                    case 4 : 
 18.3499 +                        int LA22_28 = input.LA(1);
 18.3500 +
 18.3501 +                        s = -1;
 18.3502 +                        if ( (LA22_28=='\\') ) {s = 63;}
 18.3503 +
 18.3504 +                        else if ( ((LA22_28>='\u0000' && LA22_28<='&')||(LA22_28>='(' && LA22_28<='[')||(LA22_28>=']' && LA22_28<='\uFFFF')) ) {s = 64;}
 18.3505 +
 18.3506 +                        if ( s>=0 ) return s;
 18.3507 +                        break;
 18.3508 +                    case 5 : 
 18.3509 +                        int LA22_64 = input.LA(1);
 18.3510 +
 18.3511 +                        s = -1;
 18.3512 +                        if ( (LA22_64=='\'') ) {s = 91;}
 18.3513 +
 18.3514 +                        else if ( ((LA22_64>='\u0000' && LA22_64<='&')||(LA22_64>='(' && LA22_64<='\uFFFF')) ) {s = 92;}
 18.3515 +
 18.3516 +                        if ( s>=0 ) return s;
 18.3517 +                        break;
 18.3518 +                    case 6 : 
 18.3519 +                        int LA22_90 = input.LA(1);
 18.3520 +
 18.3521 +                        s = -1;
 18.3522 +                        if ( (LA22_90=='\'') ) {s = 91;}
 18.3523 +
 18.3524 +                        else if ( ((LA22_90>='\u0000' && LA22_90<='&')||(LA22_90>='(' && LA22_90<='\uFFFF')) ) {s = 92;}
 18.3525 +
 18.3526 +                        if ( s>=0 ) return s;
 18.3527 +                        break;
 18.3528 +                    case 7 : 
 18.3529 +                        int LA22_89 = input.LA(1);
 18.3530 +
 18.3531 +                        s = -1;
 18.3532 +                        if ( ((LA22_89>='0' && LA22_89<='9')||(LA22_89>='A' && LA22_89<='F')||(LA22_89>='a' && LA22_89<='f')) ) {s = 108;}
 18.3533 +
 18.3534 +                        else if ( (LA22_89=='\'') ) {s = 91;}
 18.3535 +
 18.3536 +                        else if ( ((LA22_89>='\u0000' && LA22_89<='&')||(LA22_89>='(' && LA22_89<='/')||(LA22_89>=':' && LA22_89<='@')||(LA22_89>='G' && LA22_89<='`')||(LA22_89>='g' && LA22_89<='\uFFFF')) ) {s = 92;}
 18.3537 +
 18.3538 +                        if ( s>=0 ) return s;
 18.3539 +                        break;
 18.3540 +                    case 8 : 
 18.3541 +                        int LA22_152 = input.LA(1);
 18.3542 +
 18.3543 +                        s = -1;
 18.3544 +                        if ( (LA22_152=='\'') ) {s = 91;}
 18.3545 +
 18.3546 +                        else if ( ((LA22_152>='\u0000' && LA22_152<='&')||(LA22_152>='(' && LA22_152<='\uFFFF')) ) {s = 92;}
 18.3547 +
 18.3548 +                        if ( s>=0 ) return s;
 18.3549 +                        break;
 18.3550 +                    case 9 : 
 18.3551 +                        int LA22_88 = input.LA(1);
 18.3552 +
 18.3553 +                        s = -1;
 18.3554 +                        if ( (LA22_88=='\'') ) {s = 91;}
 18.3555 +
 18.3556 +                        else if ( ((LA22_88>='\u0000' && LA22_88<='&')||(LA22_88>='(' && LA22_88<='\uFFFF')) ) {s = 92;}
 18.3557 +
 18.3558 +                        if ( s>=0 ) return s;
 18.3559 +                        break;
 18.3560 +                    case 10 : 
 18.3561 +                        int LA22_87 = input.LA(1);
 18.3562 +
 18.3563 +                        s = -1;
 18.3564 +                        if ( (LA22_87=='\'') ) {s = 91;}
 18.3565 +
 18.3566 +                        else if ( ((LA22_87>='\u0000' && LA22_87<='&')||(LA22_87>='(' && LA22_87<='\uFFFF')) ) {s = 92;}
 18.3567 +
 18.3568 +                        if ( s>=0 ) return s;
 18.3569 +                        break;
 18.3570 +                    case 11 : 
 18.3571 +                        int LA22_108 = input.LA(1);
 18.3572 +
 18.3573 +                        s = -1;
 18.3574 +                        if ( ((LA22_108>='0' && LA22_108<='9')||(LA22_108>='A' && LA22_108<='F')||(LA22_108>='a' && LA22_108<='f')) ) {s = 125;}
 18.3575 +
 18.3576 +                        else if ( ((LA22_108>='\u0000' && LA22_108<='/')||(LA22_108>=':' && LA22_108<='@')||(LA22_108>='G' && LA22_108<='`')||(LA22_108>='g' && LA22_108<='\uFFFF')) ) {s = 92;}
 18.3577 +
 18.3578 +                        if ( s>=0 ) return s;
 18.3579 +                        break;
 18.3580 +                    case 12 : 
 18.3581 +                        int LA22_84 = input.LA(1);
 18.3582 +
 18.3583 +                        s = -1;
 18.3584 +                        if ( (LA22_84=='\'') ) {s = 91;}
 18.3585 +
 18.3586 +                        else if ( ((LA22_84>='\u0000' && LA22_84<='&')||(LA22_84>='(' && LA22_84<='\uFFFF')) ) {s = 92;}
 18.3587 +
 18.3588 +                        if ( s>=0 ) return s;
 18.3589 +                        break;
 18.3590 +                    case 13 : 
 18.3591 +                        int LA22_125 = input.LA(1);
 18.3592 +
 18.3593 +                        s = -1;
 18.3594 +                        if ( ((LA22_125>='0' && LA22_125<='9')||(LA22_125>='A' && LA22_125<='F')||(LA22_125>='a' && LA22_125<='f')) ) {s = 140;}
 18.3595 +
 18.3596 +                        else if ( ((LA22_125>='\u0000' && LA22_125<='/')||(LA22_125>=':' && LA22_125<='@')||(LA22_125>='G' && LA22_125<='`')||(LA22_125>='g' && LA22_125<='\uFFFF')) ) {s = 92;}
 18.3597 +
 18.3598 +                        if ( s>=0 ) return s;
 18.3599 +                        break;
 18.3600 +                    case 14 : 
 18.3601 +                        int LA22_83 = input.LA(1);
 18.3602 +
 18.3603 +                        s = -1;
 18.3604 +                        if ( (LA22_83=='\'') ) {s = 91;}
 18.3605 +
 18.3606 +                        else if ( ((LA22_83>='\u0000' && LA22_83<='&')||(LA22_83>='(' && LA22_83<='\uFFFF')) ) {s = 92;}
 18.3607 +
 18.3608 +                        if ( s>=0 ) return s;
 18.3609 +                        break;
 18.3610 +                    case 15 : 
 18.3611 +                        int LA22_140 = input.LA(1);
 18.3612 +
 18.3613 +                        s = -1;
 18.3614 +                        if ( ((LA22_140>='0' && LA22_140<='9')||(LA22_140>='A' && LA22_140<='F')||(LA22_140>='a' && LA22_140<='f')) ) {s = 152;}
 18.3615 +
 18.3616 +                        else if ( ((LA22_140>='\u0000' && LA22_140<='/')||(LA22_140>=':' && LA22_140<='@')||(LA22_140>='G' && LA22_140<='`')||(LA22_140>='g' && LA22_140<='\uFFFF')) ) {s = 92;}
 18.3617 +
 18.3618 +                        if ( s>=0 ) return s;
 18.3619 +                        break;
 18.3620 +                    case 16 : 
 18.3621 +                        int LA22_86 = input.LA(1);
 18.3622 +
 18.3623 +                        s = -1;
 18.3624 +                        if ( (LA22_86=='\'') ) {s = 91;}
 18.3625 +
 18.3626 +                        else if ( ((LA22_86>='\u0000' && LA22_86<='&')||(LA22_86>='(' && LA22_86<='\uFFFF')) ) {s = 92;}
 18.3627 +
 18.3628 +                        if ( s>=0 ) return s;
 18.3629 +                        break;
 18.3630 +                    case 17 : 
 18.3631 +                        int LA22_85 = input.LA(1);
 18.3632 +
 18.3633 +                        s = -1;
 18.3634 +                        if ( (LA22_85=='\'') ) {s = 91;}
 18.3635 +
 18.3636 +                        else if ( ((LA22_85>='\u0000' && LA22_85<='&')||(LA22_85>='(' && LA22_85<='\uFFFF')) ) {s = 92;}
 18.3637 +
 18.3638 +                        if ( s>=0 ) return s;
 18.3639 +                        break;
 18.3640 +            }
 18.3641 +            NoViableAltException nvae =
 18.3642 +                new NoViableAltException(getDescription(), 22, _s, input);
 18.3643 +            error(nvae);
 18.3644 +            throw nvae;
 18.3645 +        }
 18.3646 +    }
 18.3647 + 
 18.3648 +
 18.3649 +}
 18.3650 \ No newline at end of file
    19.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.2 +++ b/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/gen/ANTLRv3Parser.java	Fri Jan 11 15:06:14 2013 +0100
    19.3 @@ -0,0 +1,10935 @@
    19.4 +// $ANTLR 3.3 Nov 30, 2010 12:50:56 /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g 2013-01-11 15:01:26
    19.5 +
    19.6 +package org.netbeans.antlr.editor.gen;
    19.7 +
    19.8 +
    19.9 +import org.antlr.runtime.*;
   19.10 +import java.util.Stack;
   19.11 +import java.util.List;
   19.12 +import java.util.ArrayList;
   19.13 +import java.util.Map;
   19.14 +import java.util.HashMap;
   19.15 +import org.antlr.runtime.debug.*;
   19.16 +import java.io.IOException;
   19.17 +
   19.18 +import org.antlr.runtime.tree.*;
   19.19 +
   19.20 +/** ANTLR v3 grammar written in ANTLR v3 with AST construction */
   19.21 +public class ANTLRv3Parser extends DebugParser {
   19.22 +    public static final String[] tokenNames = new String[] {
   19.23 +        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "DOC_COMMENT", "PARSER", "LEXER", "RULE", "BLOCK", "OPTIONAL", "CLOSURE", "POSITIVE_CLOSURE", "SYNPRED", "RANGE", "CHAR_RANGE", "EPSILON", "ALT", "EOR", "EOB", "EOA", "ID", "ARG", "ARGLIST", "RET", "LEXER_GRAMMAR", "PARSER_GRAMMAR", "TREE_GRAMMAR", "COMBINED_GRAMMAR", "INITACTION", "LABEL", "TEMPLATE", "SCOPE", "SEMPRED", "GATED_SEMPRED", "SYN_SEMPRED", "BACKTRACK_SEMPRED", "FRAGMENT", "TREE_BEGIN", "ROOT", "BANG", "REWRITE", "TOKENS", "TOKEN_REF", "STRING_LITERAL", "CHAR_LITERAL", "ACTION", "OPTIONS", "INT", "ARG_ACTION", "RULE_REF", "DOUBLE_QUOTE_STRING_LITERAL", "DOUBLE_ANGLE_STRING_LITERAL", "SRC", "SL_COMMENT", "ML_COMMENT", "LITERAL_CHAR", "ESC", "XDIGIT", "NESTED_ARG_ACTION", "ACTION_STRING_LITERAL", "ACTION_CHAR_LITERAL", "NESTED_ACTION", "ACTION_ESC", "WS_LOOP", "WS", "'lexer'", "'parser'", "'tree'", "'grammar'", "';'", "'}'", "'='", "'@'", "'::'", "'*'", "'protected'", "'public'", "'private'", "'returns'", "':'", "'throws'", "','", "'('", "'|'", "')'", "'catch'", "'finally'", "'+='", "'=>'", "'~'", "'?'", "'+'", "'.'", "'$'"
   19.24 +    };
   19.25 +    public static final int EOF=-1;
   19.26 +    public static final int T__65=65;
   19.27 +    public static final int T__66=66;
   19.28 +    public static final int T__67=67;
   19.29 +    public static final int T__68=68;
   19.30 +    public static final int T__69=69;
   19.31 +    public static final int T__70=70;
   19.32 +    public static final int T__71=71;
   19.33 +    public static final int T__72=72;
   19.34 +    public static final int T__73=73;
   19.35 +    public static final int T__74=74;
   19.36 +    public static final int T__75=75;
   19.37 +    public static final int T__76=76;
   19.38 +    public static final int T__77=77;
   19.39 +    public static final int T__78=78;
   19.40 +    public static final int T__79=79;
   19.41 +    public static final int T__80=80;
   19.42 +    public static final int T__81=81;
   19.43 +    public static final int T__82=82;
   19.44 +    public static final int T__83=83;
   19.45 +    public static final int T__84=84;
   19.46 +    public static final int T__85=85;
   19.47 +    public static final int T__86=86;
   19.48 +    public static final int T__87=87;
   19.49 +    public static final int T__88=88;
   19.50 +    public static final int T__89=89;
   19.51 +    public static final int T__90=90;
   19.52 +    public static final int T__91=91;
   19.53 +    public static final int T__92=92;
   19.54 +    public static final int T__93=93;
   19.55 +    public static final int DOC_COMMENT=4;
   19.56 +    public static final int PARSER=5;
   19.57 +    public static final int LEXER=6;
   19.58 +    public static final int RULE=7;
   19.59 +    public static final int BLOCK=8;
   19.60 +    public static final int OPTIONAL=9;
   19.61 +    public static final int CLOSURE=10;
   19.62 +    public static final int POSITIVE_CLOSURE=11;
   19.63 +    public static final int SYNPRED=12;
   19.64 +    public static final int RANGE=13;
   19.65 +    public static final int CHAR_RANGE=14;
   19.66 +    public static final int EPSILON=15;
   19.67 +    public static final int ALT=16;
   19.68 +    public static final int EOR=17;
   19.69 +    public static final int EOB=18;
   19.70 +    public static final int EOA=19;
   19.71 +    public static final int ID=20;
   19.72 +    public static final int ARG=21;
   19.73 +    public static final int ARGLIST=22;
   19.74 +    public static final int RET=23;
   19.75 +    public static final int LEXER_GRAMMAR=24;
   19.76 +    public static final int PARSER_GRAMMAR=25;
   19.77 +    public static final int TREE_GRAMMAR=26;
   19.78 +    public static final int COMBINED_GRAMMAR=27;
   19.79 +    public static final int INITACTION=28;
   19.80 +    public static final int LABEL=29;
   19.81 +    public static final int TEMPLATE=30;
   19.82 +    public static final int SCOPE=31;
   19.83 +    public static final int SEMPRED=32;
   19.84 +    public static final int GATED_SEMPRED=33;
   19.85 +    public static final int SYN_SEMPRED=34;
   19.86 +    public static final int BACKTRACK_SEMPRED=35;
   19.87 +    public static final int FRAGMENT=36;
   19.88 +    public static final int TREE_BEGIN=37;
   19.89 +    public static final int ROOT=38;
   19.90 +    public static final int BANG=39;
   19.91 +    public static final int REWRITE=40;
   19.92 +    public static final int TOKENS=41;
   19.93 +    public static final int TOKEN_REF=42;
   19.94 +    public static final int STRING_LITERAL=43;
   19.95 +    public static final int CHAR_LITERAL=44;
   19.96 +    public static final int ACTION=45;
   19.97 +    public static final int OPTIONS=46;
   19.98 +    public static final int INT=47;
   19.99 +    public static final int ARG_ACTION=48;
  19.100 +    public static final int RULE_REF=49;
  19.101 +    public static final int DOUBLE_QUOTE_STRING_LITERAL=50;
  19.102 +    public static final int DOUBLE_ANGLE_STRING_LITERAL=51;
  19.103 +    public static final int SRC=52;
  19.104 +    public static final int SL_COMMENT=53;
  19.105 +    public static final int ML_COMMENT=54;
  19.106 +    public static final int LITERAL_CHAR=55;
  19.107 +    public static final int ESC=56;
  19.108 +    public static final int XDIGIT=57;
  19.109 +    public static final int NESTED_ARG_ACTION=58;
  19.110 +    public static final int ACTION_STRING_LITERAL=59;
  19.111 +    public static final int ACTION_CHAR_LITERAL=60;
  19.112 +    public static final int NESTED_ACTION=61;
  19.113 +    public static final int ACTION_ESC=62;
  19.114 +    public static final int WS_LOOP=63;
  19.115 +    public static final int WS=64;
  19.116 +
  19.117 +    // delegates
  19.118 +    // delegators
  19.119 +
  19.120 +    public static final String[] ruleNames = new String[] {
  19.121 +        "invalidRule", "elementNoOptionSpec", "ruleAction", "synpred2_ANTLRv3", 
  19.122 +        "rewrite_tree_ebnf", "id", "rule", "treeSpec", "rewrite_template", 
  19.123 +        "tokensSpec", "ebnfSuffix", "alternative", "notTerminal", "terminal", 
  19.124 +        "ruleScopeSpec", "notSet", "range", "ebnf", "rewrite_alternative", 
  19.125 +        "rewrite_template_ref", "rewrite_tree_block", "option", "exceptionHandler", 
  19.126 +        "synpred1_ANTLRv3", "rewrite_template_args", "throwsSpec", "actionScopeName", 
  19.127 +        "finallyClause", "rewrite_tree_element", "rewrite_tree_alternative", 
  19.128 +        "optionsSpec", "rewrite_template_arg", "tokenSpec", "attrScope", 
  19.129 +        "altList", "exceptionGroup", "atom", "rewrite_tree", "element", 
  19.130 +        "rewrite_tree_atom", "rewrite_indirect_template_head", "grammarDef", 
  19.131 +        "block", "rewrite", "optionValue", "action"
  19.132 +    };
  19.133 +    public static final boolean[] decisionCanBacktrack = new boolean[] {
  19.134 +        false, // invalid decision
  19.135 +        false, false, false, false, false, false, false, false, false, false, 
  19.136 +            false, false, false, false, false, false, false, false, false, 
  19.137 +            false, false, false, false, false, false, false, false, false, 
  19.138 +            false, false, false, false, false, false, false, false, false, 
  19.139 +            false, false, false, false, false, false, false, false, false, 
  19.140 +            false, false, false, false, false, false, false, false, false, 
  19.141 +            false, false, false, false, false, false, false, false, true, 
  19.142 +            false, false, false, false, false, false, false, false, false, 
  19.143 +            false, false
  19.144 +    };
  19.145 +
  19.146 +     
  19.147 +        public int ruleLevel = 0;
  19.148 +        public int getRuleLevel() { return ruleLevel; }
  19.149 +        public void incRuleLevel() { ruleLevel++; }
  19.150 +        public void decRuleLevel() { ruleLevel--; }
  19.151 +        public ANTLRv3Parser(TokenStream input) {
  19.152 +            this(input, DebugEventSocketProxy.DEFAULT_DEBUGGER_PORT, new RecognizerSharedState());
  19.153 +        }
  19.154 +        public ANTLRv3Parser(TokenStream input, int port, RecognizerSharedState state) {
  19.155 +            super(input, state);
  19.156 +            DebugEventSocketProxy proxy =
  19.157 +                new DebugEventSocketProxy(this,port,adaptor);
  19.158 +            setDebugListener(proxy);
  19.159 +            setTokenStream(new DebugTokenStream(input,proxy));
  19.160 +            try {
  19.161 +                proxy.handshake();
  19.162 +            }
  19.163 +            catch (IOException ioe) {
  19.164 +                reportError(ioe);
  19.165 +            }
  19.166 +            TreeAdaptor adap = new CommonTreeAdaptor();
  19.167 +            setTreeAdaptor(adap);
  19.168 +            proxy.setTreeAdaptor(adap);
  19.169 +        }
  19.170 +    public ANTLRv3Parser(TokenStream input, DebugEventListener dbg) {
  19.171 +        super(input, dbg);
  19.172 +
  19.173 +         
  19.174 +        TreeAdaptor adap = new CommonTreeAdaptor();
  19.175 +        setTreeAdaptor(adap);
  19.176 +
  19.177 +    }
  19.178 +    protected boolean evalPredicate(boolean result, String predicate) {
  19.179 +        dbg.semanticPredicate(result, predicate);
  19.180 +        return result;
  19.181 +    }
  19.182 +
  19.183 +    protected DebugTreeAdaptor adaptor;
  19.184 +    public void setTreeAdaptor(TreeAdaptor adaptor) {
  19.185 +        this.adaptor = new DebugTreeAdaptor(dbg,adaptor);
  19.186 +
  19.187 +    }
  19.188 +    public TreeAdaptor getTreeAdaptor() {
  19.189 +        return adaptor;
  19.190 +    }
  19.191 +
  19.192 +
  19.193 +    public String[] getTokenNames() { return ANTLRv3Parser.tokenNames; }
  19.194 +    public String getGrammarFileName() { return "/Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g"; }
  19.195 +
  19.196 +
  19.197 +    	int gtype;
  19.198 +
  19.199 +
  19.200 +    public static class grammarDef_return extends ParserRuleReturnScope {
  19.201 +        CommonTree tree;
  19.202 +        public Object getTree() { return tree; }
  19.203 +    };
  19.204 +
  19.205 +    // $ANTLR start "grammarDef"
  19.206 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:89:1: grammarDef : ( DOC_COMMENT )? ( 'lexer' | 'parser' | 'tree' | ) g= 'grammar' id ';' ( optionsSpec )? ( tokensSpec )? ( attrScope )* ( action )* ( rule )+ EOF -> ^( id ( DOC_COMMENT )? ( optionsSpec )? ( tokensSpec )? ( attrScope )* ( action )* ( rule )+ ) ;
  19.207 +    public final ANTLRv3Parser.grammarDef_return grammarDef() throws RecognitionException {
  19.208 +        ANTLRv3Parser.grammarDef_return retval = new ANTLRv3Parser.grammarDef_return();
  19.209 +        retval.start = input.LT(1);
  19.210 +
  19.211 +        CommonTree root_0 = null;
  19.212 +
  19.213 +        Token g=null;
  19.214 +        Token DOC_COMMENT1=null;
  19.215 +        Token string_literal2=null;
  19.216 +        Token string_literal3=null;
  19.217 +        Token string_literal4=null;
  19.218 +        Token char_literal6=null;
  19.219 +        Token EOF12=null;
  19.220 +        ANTLRv3Parser.id_return id5 = null;
  19.221 +
  19.222 +        ANTLRv3Parser.optionsSpec_return optionsSpec7 = null;
  19.223 +
  19.224 +        ANTLRv3Parser.tokensSpec_return tokensSpec8 = null;
  19.225 +
  19.226 +        ANTLRv3Parser.attrScope_return attrScope9 = null;
  19.227 +
  19.228 +        ANTLRv3Parser.action_return action10 = null;
  19.229 +
  19.230 +        ANTLRv3Parser.rule_return rule11 = null;
  19.231 +
  19.232 +
  19.233 +        CommonTree g_tree=null;
  19.234 +        CommonTree DOC_COMMENT1_tree=null;
  19.235 +        CommonTree string_literal2_tree=null;
  19.236 +        CommonTree string_literal3_tree=null;
  19.237 +        CommonTree string_literal4_tree=null;
  19.238 +        CommonTree char_literal6_tree=null;
  19.239 +        CommonTree EOF12_tree=null;
  19.240 +        RewriteRuleTokenStream stream_67=new RewriteRuleTokenStream(adaptor,"token 67");
  19.241 +        RewriteRuleTokenStream stream_DOC_COMMENT=new RewriteRuleTokenStream(adaptor,"token DOC_COMMENT");
  19.242 +        RewriteRuleTokenStream stream_66=new RewriteRuleTokenStream(adaptor,"token 66");
  19.243 +        RewriteRuleTokenStream stream_69=new RewriteRuleTokenStream(adaptor,"token 69");
  19.244 +        RewriteRuleTokenStream stream_68=new RewriteRuleTokenStream(adaptor,"token 68");
  19.245 +        RewriteRuleTokenStream stream_65=new RewriteRuleTokenStream(adaptor,"token 65");
  19.246 +        RewriteRuleTokenStream stream_EOF=new RewriteRuleTokenStream(adaptor,"token EOF");
  19.247 +        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
  19.248 +        RewriteRuleSubtreeStream stream_tokensSpec=new RewriteRuleSubtreeStream(adaptor,"rule tokensSpec");
  19.249 +        RewriteRuleSubtreeStream stream_attrScope=new RewriteRuleSubtreeStream(adaptor,"rule attrScope");
  19.250 +        RewriteRuleSubtreeStream stream_rule=new RewriteRuleSubtreeStream(adaptor,"rule rule");
  19.251 +        RewriteRuleSubtreeStream stream_action=new RewriteRuleSubtreeStream(adaptor,"rule action");
  19.252 +        RewriteRuleSubtreeStream stream_optionsSpec=new RewriteRuleSubtreeStream(adaptor,"rule optionsSpec");
  19.253 +        try { dbg.enterRule(getGrammarFileName(), "grammarDef");
  19.254 +        if ( getRuleLevel()==0 ) {dbg.commence();}
  19.255 +        incRuleLevel();
  19.256 +        dbg.location(89, 1);
  19.257 +
  19.258 +        try {
  19.259 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:90:5: ( ( DOC_COMMENT )? ( 'lexer' | 'parser' | 'tree' | ) g= 'grammar' id ';' ( optionsSpec )? ( tokensSpec )? ( attrScope )* ( action )* ( rule )+ EOF -> ^( id ( DOC_COMMENT )? ( optionsSpec )? ( tokensSpec )? ( attrScope )* ( action )* ( rule )+ ) )
  19.260 +            dbg.enterAlt(1);
  19.261 +
  19.262 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:90:9: ( DOC_COMMENT )? ( 'lexer' | 'parser' | 'tree' | ) g= 'grammar' id ';' ( optionsSpec )? ( tokensSpec )? ( attrScope )* ( action )* ( rule )+ EOF
  19.263 +            {
  19.264 +            dbg.location(90,9);
  19.265 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:90:9: ( DOC_COMMENT )?
  19.266 +            int alt1=2;
  19.267 +            try { dbg.enterSubRule(1);
  19.268 +            try { dbg.enterDecision(1, decisionCanBacktrack[1]);
  19.269 +
  19.270 +            int LA1_0 = input.LA(1);
  19.271 +
  19.272 +            if ( (LA1_0==DOC_COMMENT) ) {
  19.273 +                alt1=1;
  19.274 +            }
  19.275 +            } finally {dbg.exitDecision(1);}
  19.276 +
  19.277 +            switch (alt1) {
  19.278 +                case 1 :
  19.279 +                    dbg.enterAlt(1);
  19.280 +
  19.281 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:90:9: DOC_COMMENT
  19.282 +                    {
  19.283 +                    dbg.location(90,9);
  19.284 +                    DOC_COMMENT1=(Token)match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_grammarDef343); if (state.failed) return retval; 
  19.285 +                    if ( state.backtracking==0 ) stream_DOC_COMMENT.add(DOC_COMMENT1);
  19.286 +
  19.287 +
  19.288 +                    }
  19.289 +                    break;
  19.290 +
  19.291 +            }
  19.292 +            } finally {dbg.exitSubRule(1);}
  19.293 +
  19.294 +            dbg.location(91,6);
  19.295 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:91:6: ( 'lexer' | 'parser' | 'tree' | )
  19.296 +            int alt2=4;
  19.297 +            try { dbg.enterSubRule(2);
  19.298 +            try { dbg.enterDecision(2, decisionCanBacktrack[2]);
  19.299 +
  19.300 +            switch ( input.LA(1) ) {
  19.301 +            case 65:
  19.302 +                {
  19.303 +                alt2=1;
  19.304 +                }
  19.305 +                break;
  19.306 +            case 66:
  19.307 +                {
  19.308 +                alt2=2;
  19.309 +                }
  19.310 +                break;
  19.311 +            case 67:
  19.312 +                {
  19.313 +                alt2=3;
  19.314 +                }
  19.315 +                break;
  19.316 +            case 68:
  19.317 +                {
  19.318 +                alt2=4;
  19.319 +                }
  19.320 +                break;
  19.321 +            default:
  19.322 +                if (state.backtracking>0) {state.failed=true; return retval;}
  19.323 +                NoViableAltException nvae =
  19.324 +                    new NoViableAltException("", 2, 0, input);
  19.325 +
  19.326 +                dbg.recognitionException(nvae);
  19.327 +                throw nvae;
  19.328 +            }
  19.329 +
  19.330 +            } finally {dbg.exitDecision(2);}
  19.331 +
  19.332 +            switch (alt2) {
  19.333 +                case 1 :
  19.334 +                    dbg.enterAlt(1);
  19.335 +
  19.336 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:91:8: 'lexer'
  19.337 +                    {
  19.338 +                    dbg.location(91,8);
  19.339 +                    string_literal2=(Token)match(input,65,FOLLOW_65_in_grammarDef353); if (state.failed) return retval; 
  19.340 +                    if ( state.backtracking==0 ) stream_65.add(string_literal2);
  19.341 +
  19.342 +                    dbg.location(91,17);
  19.343 +                    if ( state.backtracking==0 ) {
  19.344 +                      gtype=LEXER_GRAMMAR;
  19.345 +                    }
  19.346 +
  19.347 +                    }
  19.348 +                    break;
  19.349 +                case 2 :
  19.350 +                    dbg.enterAlt(2);
  19.351 +
  19.352 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:92:10: 'parser'
  19.353 +                    {
  19.354 +                    dbg.location(92,10);
  19.355 +                    string_literal3=(Token)match(input,66,FOLLOW_66_in_grammarDef371); if (state.failed) return retval; 
  19.356 +                    if ( state.backtracking==0 ) stream_66.add(string_literal3);
  19.357 +
  19.358 +                    dbg.location(92,19);
  19.359 +                    if ( state.backtracking==0 ) {
  19.360 +                      gtype=PARSER_GRAMMAR;
  19.361 +                    }
  19.362 +
  19.363 +                    }
  19.364 +                    break;
  19.365 +                case 3 :
  19.366 +                    dbg.enterAlt(3);
  19.367 +
  19.368 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:93:10: 'tree'
  19.369 +                    {
  19.370 +                    dbg.location(93,10);
  19.371 +                    string_literal4=(Token)match(input,67,FOLLOW_67_in_grammarDef387); if (state.failed) return retval; 
  19.372 +                    if ( state.backtracking==0 ) stream_67.add(string_literal4);
  19.373 +
  19.374 +                    dbg.location(93,19);
  19.375 +                    if ( state.backtracking==0 ) {
  19.376 +                      gtype=TREE_GRAMMAR;
  19.377 +                    }
  19.378 +
  19.379 +                    }
  19.380 +                    break;
  19.381 +                case 4 :
  19.382 +                    dbg.enterAlt(4);
  19.383 +
  19.384 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:94:14: 
  19.385 +                    {
  19.386 +                    dbg.location(94,14);
  19.387 +                    if ( state.backtracking==0 ) {
  19.388 +                      gtype=COMBINED_GRAMMAR;
  19.389 +                    }
  19.390 +
  19.391 +                    }
  19.392 +                    break;
  19.393 +
  19.394 +            }
  19.395 +            } finally {dbg.exitSubRule(2);}
  19.396 +
  19.397 +            dbg.location(96,7);
  19.398 +            g=(Token)match(input,68,FOLLOW_68_in_grammarDef428); if (state.failed) return retval; 
  19.399 +            if ( state.backtracking==0 ) stream_68.add(g);
  19.400 +
  19.401 +            dbg.location(96,18);
  19.402 +            pushFollow(FOLLOW_id_in_grammarDef430);
  19.403 +            id5=id();
  19.404 +
  19.405 +            state._fsp--;
  19.406 +            if (state.failed) return retval;
  19.407 +            if ( state.backtracking==0 ) stream_id.add(id5.getTree());
  19.408 +            dbg.location(96,21);
  19.409 +            char_literal6=(Token)match(input,69,FOLLOW_69_in_grammarDef432); if (state.failed) return retval; 
  19.410 +            if ( state.backtracking==0 ) stream_69.add(char_literal6);
  19.411 +
  19.412 +            dbg.location(96,25);
  19.413 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:96:25: ( optionsSpec )?
  19.414 +            int alt3=2;
  19.415 +            try { dbg.enterSubRule(3);
  19.416 +            try { dbg.enterDecision(3, decisionCanBacktrack[3]);
  19.417 +
  19.418 +            int LA3_0 = input.LA(1);
  19.419 +
  19.420 +            if ( (LA3_0==OPTIONS) ) {
  19.421 +                alt3=1;
  19.422 +            }
  19.423 +            } finally {dbg.exitDecision(3);}
  19.424 +
  19.425 +            switch (alt3) {
  19.426 +                case 1 :
  19.427 +                    dbg.enterAlt(1);
  19.428 +
  19.429 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:96:25: optionsSpec
  19.430 +                    {
  19.431 +                    dbg.location(96,25);
  19.432 +                    pushFollow(FOLLOW_optionsSpec_in_grammarDef434);
  19.433 +                    optionsSpec7=optionsSpec();
  19.434 +
  19.435 +                    state._fsp--;
  19.436 +                    if (state.failed) return retval;
  19.437 +                    if ( state.backtracking==0 ) stream_optionsSpec.add(optionsSpec7.getTree());
  19.438 +
  19.439 +                    }
  19.440 +                    break;
  19.441 +
  19.442 +            }
  19.443 +            } finally {dbg.exitSubRule(3);}
  19.444 +
  19.445 +            dbg.location(96,38);
  19.446 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:96:38: ( tokensSpec )?
  19.447 +            int alt4=2;
  19.448 +            try { dbg.enterSubRule(4);
  19.449 +            try { dbg.enterDecision(4, decisionCanBacktrack[4]);
  19.450 +
  19.451 +            int LA4_0 = input.LA(1);
  19.452 +
  19.453 +            if ( (LA4_0==TOKENS) ) {
  19.454 +                alt4=1;
  19.455 +            }
  19.456 +            } finally {dbg.exitDecision(4);}
  19.457 +
  19.458 +            switch (alt4) {
  19.459 +                case 1 :
  19.460 +                    dbg.enterAlt(1);
  19.461 +
  19.462 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:96:38: tokensSpec
  19.463 +                    {
  19.464 +                    dbg.location(96,38);
  19.465 +                    pushFollow(FOLLOW_tokensSpec_in_grammarDef437);
  19.466 +                    tokensSpec8=tokensSpec();
  19.467 +
  19.468 +                    state._fsp--;
  19.469 +                    if (state.failed) return retval;
  19.470 +                    if ( state.backtracking==0 ) stream_tokensSpec.add(tokensSpec8.getTree());
  19.471 +
  19.472 +                    }
  19.473 +                    break;
  19.474 +
  19.475 +            }
  19.476 +            } finally {dbg.exitSubRule(4);}
  19.477 +
  19.478 +            dbg.location(96,50);
  19.479 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:96:50: ( attrScope )*
  19.480 +            try { dbg.enterSubRule(5);
  19.481 +
  19.482 +            loop5:
  19.483 +            do {
  19.484 +                int alt5=2;
  19.485 +                try { dbg.enterDecision(5, decisionCanBacktrack[5]);
  19.486 +
  19.487 +                int LA5_0 = input.LA(1);
  19.488 +
  19.489 +                if ( (LA5_0==SCOPE) ) {
  19.490 +                    alt5=1;
  19.491 +                }
  19.492 +
  19.493 +
  19.494 +                } finally {dbg.exitDecision(5);}
  19.495 +
  19.496 +                switch (alt5) {
  19.497 +            	case 1 :
  19.498 +            	    dbg.enterAlt(1);
  19.499 +
  19.500 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:96:50: attrScope
  19.501 +            	    {
  19.502 +            	    dbg.location(96,50);
  19.503 +            	    pushFollow(FOLLOW_attrScope_in_grammarDef440);
  19.504 +            	    attrScope9=attrScope();
  19.505 +
  19.506 +            	    state._fsp--;
  19.507 +            	    if (state.failed) return retval;
  19.508 +            	    if ( state.backtracking==0 ) stream_attrScope.add(attrScope9.getTree());
  19.509 +
  19.510 +            	    }
  19.511 +            	    break;
  19.512 +
  19.513 +            	default :
  19.514 +            	    break loop5;
  19.515 +                }
  19.516 +            } while (true);
  19.517 +            } finally {dbg.exitSubRule(5);}
  19.518 +
  19.519 +            dbg.location(96,61);
  19.520 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:96:61: ( action )*
  19.521 +            try { dbg.enterSubRule(6);
  19.522 +
  19.523 +            loop6:
  19.524 +            do {
  19.525 +                int alt6=2;
  19.526 +                try { dbg.enterDecision(6, decisionCanBacktrack[6]);
  19.527 +
  19.528 +                int LA6_0 = input.LA(1);
  19.529 +
  19.530 +                if ( (LA6_0==72) ) {
  19.531 +                    alt6=1;
  19.532 +                }
  19.533 +
  19.534 +
  19.535 +                } finally {dbg.exitDecision(6);}
  19.536 +
  19.537 +                switch (alt6) {
  19.538 +            	case 1 :
  19.539 +            	    dbg.enterAlt(1);
  19.540 +
  19.541 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:96:61: action
  19.542 +            	    {
  19.543 +            	    dbg.location(96,61);
  19.544 +            	    pushFollow(FOLLOW_action_in_grammarDef443);
  19.545 +            	    action10=action();
  19.546 +
  19.547 +            	    state._fsp--;
  19.548 +            	    if (state.failed) return retval;
  19.549 +            	    if ( state.backtracking==0 ) stream_action.add(action10.getTree());
  19.550 +
  19.551 +            	    }
  19.552 +            	    break;
  19.553 +
  19.554 +            	default :
  19.555 +            	    break loop6;
  19.556 +                }
  19.557 +            } while (true);
  19.558 +            } finally {dbg.exitSubRule(6);}
  19.559 +
  19.560 +            dbg.location(97,6);
  19.561 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:97:6: ( rule )+
  19.562 +            int cnt7=0;
  19.563 +            try { dbg.enterSubRule(7);
  19.564 +
  19.565 +            loop7:
  19.566 +            do {
  19.567 +                int alt7=2;
  19.568 +                try { dbg.enterDecision(7, decisionCanBacktrack[7]);
  19.569 +
  19.570 +                int LA7_0 = input.LA(1);
  19.571 +
  19.572 +                if ( (LA7_0==DOC_COMMENT||LA7_0==FRAGMENT||LA7_0==TOKEN_REF||LA7_0==RULE_REF||(LA7_0>=75 && LA7_0<=77)) ) {
  19.573 +                    alt7=1;
  19.574 +                }
  19.575 +
  19.576 +
  19.577 +                } finally {dbg.exitDecision(7);}
  19.578 +
  19.579 +                switch (alt7) {
  19.580 +            	case 1 :
  19.581 +            	    dbg.enterAlt(1);
  19.582 +
  19.583 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:97:6: rule
  19.584 +            	    {
  19.585 +            	    dbg.location(97,6);
  19.586 +            	    pushFollow(FOLLOW_rule_in_grammarDef451);
  19.587 +            	    rule11=rule();
  19.588 +
  19.589 +            	    state._fsp--;
  19.590 +            	    if (state.failed) return retval;
  19.591 +            	    if ( state.backtracking==0 ) stream_rule.add(rule11.getTree());
  19.592 +
  19.593 +            	    }
  19.594 +            	    break;
  19.595 +
  19.596 +            	default :
  19.597 +            	    if ( cnt7 >= 1 ) break loop7;
  19.598 +            	    if (state.backtracking>0) {state.failed=true; return retval;}
  19.599 +                        EarlyExitException eee =
  19.600 +                            new EarlyExitException(7, input);
  19.601 +                        dbg.recognitionException(eee);
  19.602 +
  19.603 +                        throw eee;
  19.604 +                }
  19.605 +                cnt7++;
  19.606 +            } while (true);
  19.607 +            } finally {dbg.exitSubRule(7);}
  19.608 +
  19.609 +            dbg.location(98,6);
  19.610 +            EOF12=(Token)match(input,EOF,FOLLOW_EOF_in_grammarDef459); if (state.failed) return retval; 
  19.611 +            if ( state.backtracking==0 ) stream_EOF.add(EOF12);
  19.612 +
  19.613 +
  19.614 +
  19.615 +            // AST REWRITE
  19.616 +            // elements: tokensSpec, DOC_COMMENT, rule, action, optionsSpec, id, attrScope
  19.617 +            // token labels: 
  19.618 +            // rule labels: retval
  19.619 +            // token list labels: 
  19.620 +            // rule list labels: 
  19.621 +            // wildcard labels: 
  19.622 +            if ( state.backtracking==0 ) {
  19.623 +            retval.tree = root_0;
  19.624 +            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
  19.625 +
  19.626 +            root_0 = (CommonTree)adaptor.nil();
  19.627 +            // 99:6: -> ^( id ( DOC_COMMENT )? ( optionsSpec )? ( tokensSpec )? ( attrScope )* ( action )* ( rule )+ )
  19.628 +            {
  19.629 +                dbg.location(99,9);
  19.630 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:99:9: ^( id ( DOC_COMMENT )? ( optionsSpec )? ( tokensSpec )? ( attrScope )* ( action )* ( rule )+ )
  19.631 +                {
  19.632 +                CommonTree root_1 = (CommonTree)adaptor.nil();
  19.633 +                dbg.location(99,12);
  19.634 +                root_1 = (CommonTree)adaptor.becomeRoot(adaptor.create(gtype,g), root_1);
  19.635 +
  19.636 +                dbg.location(100,9);
  19.637 +                adaptor.addChild(root_1, stream_id.nextTree());
  19.638 +                dbg.location(100,12);
  19.639 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:100:12: ( DOC_COMMENT )?
  19.640 +                if ( stream_DOC_COMMENT.hasNext() ) {
  19.641 +                    dbg.location(100,12);
  19.642 +                    adaptor.addChild(root_1, stream_DOC_COMMENT.nextNode());
  19.643 +
  19.644 +                }
  19.645 +                stream_DOC_COMMENT.reset();
  19.646 +                dbg.location(100,25);
  19.647 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:100:25: ( optionsSpec )?
  19.648 +                if ( stream_optionsSpec.hasNext() ) {
  19.649 +                    dbg.location(100,25);
  19.650 +                    adaptor.addChild(root_1, stream_optionsSpec.nextTree());
  19.651 +
  19.652 +                }
  19.653 +                stream_optionsSpec.reset();
  19.654 +                dbg.location(100,38);
  19.655 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:100:38: ( tokensSpec )?
  19.656 +                if ( stream_tokensSpec.hasNext() ) {
  19.657 +                    dbg.location(100,38);
  19.658 +                    adaptor.addChild(root_1, stream_tokensSpec.nextTree());
  19.659 +
  19.660 +                }
  19.661 +                stream_tokensSpec.reset();
  19.662 +                dbg.location(100,50);
  19.663 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:100:50: ( attrScope )*
  19.664 +                while ( stream_attrScope.hasNext() ) {
  19.665 +                    dbg.location(100,50);
  19.666 +                    adaptor.addChild(root_1, stream_attrScope.nextTree());
  19.667 +
  19.668 +                }
  19.669 +                stream_attrScope.reset();
  19.670 +                dbg.location(100,61);
  19.671 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:100:61: ( action )*
  19.672 +                while ( stream_action.hasNext() ) {
  19.673 +                    dbg.location(100,61);
  19.674 +                    adaptor.addChild(root_1, stream_action.nextTree());
  19.675 +
  19.676 +                }
  19.677 +                stream_action.reset();
  19.678 +                dbg.location(100,69);
  19.679 +                if ( !(stream_rule.hasNext()) ) {
  19.680 +                    throw new RewriteEarlyExitException();
  19.681 +                }
  19.682 +                while ( stream_rule.hasNext() ) {
  19.683 +                    dbg.location(100,69);
  19.684 +                    adaptor.addChild(root_1, stream_rule.nextTree());
  19.685 +
  19.686 +                }
  19.687 +                stream_rule.reset();
  19.688 +
  19.689 +                adaptor.addChild(root_0, root_1);
  19.690 +                }
  19.691 +
  19.692 +            }
  19.693 +
  19.694 +            retval.tree = root_0;}
  19.695 +            }
  19.696 +
  19.697 +            retval.stop = input.LT(-1);
  19.698 +
  19.699 +            if ( state.backtracking==0 ) {
  19.700 +
  19.701 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
  19.702 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
  19.703 +            }
  19.704 +        }
  19.705 +        catch (RecognitionException re) {
  19.706 +            reportError(re);
  19.707 +            recover(input,re);
  19.708 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
  19.709 +
  19.710 +        }
  19.711 +        finally {
  19.712 +        }
  19.713 +        dbg.location(102, 5);
  19.714 +
  19.715 +        }
  19.716 +        finally {
  19.717 +            dbg.exitRule(getGrammarFileName(), "grammarDef");
  19.718 +            decRuleLevel();
  19.719 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
  19.720 +        }
  19.721 +
  19.722 +        return retval;
  19.723 +    }
  19.724 +    // $ANTLR end "grammarDef"
  19.725 +
  19.726 +    public static class tokensSpec_return extends ParserRuleReturnScope {
  19.727 +        CommonTree tree;
  19.728 +        public Object getTree() { return tree; }
  19.729 +    };
  19.730 +
  19.731 +    // $ANTLR start "tokensSpec"
  19.732 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:104:1: tokensSpec : TOKENS ( tokenSpec )+ '}' -> ^( TOKENS ( tokenSpec )+ ) ;
  19.733 +    public final ANTLRv3Parser.tokensSpec_return tokensSpec() throws RecognitionException {
  19.734 +        ANTLRv3Parser.tokensSpec_return retval = new ANTLRv3Parser.tokensSpec_return();
  19.735 +        retval.start = input.LT(1);
  19.736 +
  19.737 +        CommonTree root_0 = null;
  19.738 +
  19.739 +        Token TOKENS13=null;
  19.740 +        Token char_literal15=null;
  19.741 +        ANTLRv3Parser.tokenSpec_return tokenSpec14 = null;
  19.742 +
  19.743 +
  19.744 +        CommonTree TOKENS13_tree=null;
  19.745 +        CommonTree char_literal15_tree=null;
  19.746 +        RewriteRuleTokenStream stream_TOKENS=new RewriteRuleTokenStream(adaptor,"token TOKENS");
  19.747 +        RewriteRuleTokenStream stream_70=new RewriteRuleTokenStream(adaptor,"token 70");
  19.748 +        RewriteRuleSubtreeStream stream_tokenSpec=new RewriteRuleSubtreeStream(adaptor,"rule tokenSpec");
  19.749 +        try { dbg.enterRule(getGrammarFileName(), "tokensSpec");
  19.750 +        if ( getRuleLevel()==0 ) {dbg.commence();}
  19.751 +        incRuleLevel();
  19.752 +        dbg.location(104, 1);
  19.753 +
  19.754 +        try {
  19.755 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:105:2: ( TOKENS ( tokenSpec )+ '}' -> ^( TOKENS ( tokenSpec )+ ) )
  19.756 +            dbg.enterAlt(1);
  19.757 +
  19.758 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:105:4: TOKENS ( tokenSpec )+ '}'
  19.759 +            {
  19.760 +            dbg.location(105,4);
  19.761 +            TOKENS13=(Token)match(input,TOKENS,FOLLOW_TOKENS_in_tokensSpec520); if (state.failed) return retval; 
  19.762 +            if ( state.backtracking==0 ) stream_TOKENS.add(TOKENS13);
  19.763 +
  19.764 +            dbg.location(105,11);
  19.765 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:105:11: ( tokenSpec )+
  19.766 +            int cnt8=0;
  19.767 +            try { dbg.enterSubRule(8);
  19.768 +
  19.769 +            loop8:
  19.770 +            do {
  19.771 +                int alt8=2;
  19.772 +                try { dbg.enterDecision(8, decisionCanBacktrack[8]);
  19.773 +
  19.774 +                int LA8_0 = input.LA(1);
  19.775 +
  19.776 +                if ( (LA8_0==TOKEN_REF) ) {
  19.777 +                    alt8=1;
  19.778 +                }
  19.779 +
  19.780 +
  19.781 +                } finally {dbg.exitDecision(8);}
  19.782 +
  19.783 +                switch (alt8) {
  19.784 +            	case 1 :
  19.785 +            	    dbg.enterAlt(1);
  19.786 +
  19.787 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:105:11: tokenSpec
  19.788 +            	    {
  19.789 +            	    dbg.location(105,11);
  19.790 +            	    pushFollow(FOLLOW_tokenSpec_in_tokensSpec522);
  19.791 +            	    tokenSpec14=tokenSpec();
  19.792 +
  19.793 +            	    state._fsp--;
  19.794 +            	    if (state.failed) return retval;
  19.795 +            	    if ( state.backtracking==0 ) stream_tokenSpec.add(tokenSpec14.getTree());
  19.796 +
  19.797 +            	    }
  19.798 +            	    break;
  19.799 +
  19.800 +            	default :
  19.801 +            	    if ( cnt8 >= 1 ) break loop8;
  19.802 +            	    if (state.backtracking>0) {state.failed=true; return retval;}
  19.803 +                        EarlyExitException eee =
  19.804 +                            new EarlyExitException(8, input);
  19.805 +                        dbg.recognitionException(eee);
  19.806 +
  19.807 +                        throw eee;
  19.808 +                }
  19.809 +                cnt8++;
  19.810 +            } while (true);
  19.811 +            } finally {dbg.exitSubRule(8);}
  19.812 +
  19.813 +            dbg.location(105,22);
  19.814 +            char_literal15=(Token)match(input,70,FOLLOW_70_in_tokensSpec525); if (state.failed) return retval; 
  19.815 +            if ( state.backtracking==0 ) stream_70.add(char_literal15);
  19.816 +
  19.817 +
  19.818 +
  19.819 +            // AST REWRITE
  19.820 +            // elements: tokenSpec, TOKENS
  19.821 +            // token labels: 
  19.822 +            // rule labels: retval
  19.823 +            // token list labels: 
  19.824 +            // rule list labels: 
  19.825 +            // wildcard labels: 
  19.826 +            if ( state.backtracking==0 ) {
  19.827 +            retval.tree = root_0;
  19.828 +            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
  19.829 +
  19.830 +            root_0 = (CommonTree)adaptor.nil();
  19.831 +            // 105:26: -> ^( TOKENS ( tokenSpec )+ )
  19.832 +            {
  19.833 +                dbg.location(105,29);
  19.834 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:105:29: ^( TOKENS ( tokenSpec )+ )
  19.835 +                {
  19.836 +                CommonTree root_1 = (CommonTree)adaptor.nil();
  19.837 +                dbg.location(105,31);
  19.838 +                root_1 = (CommonTree)adaptor.becomeRoot(stream_TOKENS.nextNode(), root_1);
  19.839 +
  19.840 +                dbg.location(105,38);
  19.841 +                if ( !(stream_tokenSpec.hasNext()) ) {
  19.842 +                    throw new RewriteEarlyExitException();
  19.843 +                }
  19.844 +                while ( stream_tokenSpec.hasNext() ) {
  19.845 +                    dbg.location(105,38);
  19.846 +                    adaptor.addChild(root_1, stream_tokenSpec.nextTree());
  19.847 +
  19.848 +                }
  19.849 +                stream_tokenSpec.reset();
  19.850 +
  19.851 +                adaptor.addChild(root_0, root_1);
  19.852 +                }
  19.853 +
  19.854 +            }
  19.855 +
  19.856 +            retval.tree = root_0;}
  19.857 +            }
  19.858 +
  19.859 +            retval.stop = input.LT(-1);
  19.860 +
  19.861 +            if ( state.backtracking==0 ) {
  19.862 +
  19.863 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
  19.864 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
  19.865 +            }
  19.866 +        }
  19.867 +        catch (RecognitionException re) {
  19.868 +            reportError(re);
  19.869 +            recover(input,re);
  19.870 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
  19.871 +
  19.872 +        }
  19.873 +        finally {
  19.874 +        }
  19.875 +        dbg.location(106, 2);
  19.876 +
  19.877 +        }
  19.878 +        finally {
  19.879 +            dbg.exitRule(getGrammarFileName(), "tokensSpec");
  19.880 +            decRuleLevel();
  19.881 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
  19.882 +        }
  19.883 +
  19.884 +        return retval;
  19.885 +    }
  19.886 +    // $ANTLR end "tokensSpec"
  19.887 +
  19.888 +    public static class tokenSpec_return extends ParserRuleReturnScope {
  19.889 +        CommonTree tree;
  19.890 +        public Object getTree() { return tree; }
  19.891 +    };
  19.892 +
  19.893 +    // $ANTLR start "tokenSpec"
  19.894 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:108:1: tokenSpec : TOKEN_REF ( '=' (lit= STRING_LITERAL | lit= CHAR_LITERAL ) -> ^( '=' TOKEN_REF $lit) | -> TOKEN_REF ) ';' ;
  19.895 +    public final ANTLRv3Parser.tokenSpec_return tokenSpec() throws RecognitionException {
  19.896 +        ANTLRv3Parser.tokenSpec_return retval = new ANTLRv3Parser.tokenSpec_return();
  19.897 +        retval.start = input.LT(1);
  19.898 +
  19.899 +        CommonTree root_0 = null;
  19.900 +
  19.901 +        Token lit=null;
  19.902 +        Token TOKEN_REF16=null;
  19.903 +        Token char_literal17=null;
  19.904 +        Token char_literal18=null;
  19.905 +
  19.906 +        CommonTree lit_tree=null;
  19.907 +        CommonTree TOKEN_REF16_tree=null;
  19.908 +        CommonTree char_literal17_tree=null;
  19.909 +        CommonTree char_literal18_tree=null;
  19.910 +        RewriteRuleTokenStream stream_69=new RewriteRuleTokenStream(adaptor,"token 69");
  19.911 +        RewriteRuleTokenStream stream_STRING_LITERAL=new RewriteRuleTokenStream(adaptor,"token STRING_LITERAL");
  19.912 +        RewriteRuleTokenStream stream_CHAR_LITERAL=new RewriteRuleTokenStream(adaptor,"token CHAR_LITERAL");
  19.913 +        RewriteRuleTokenStream stream_71=new RewriteRuleTokenStream(adaptor,"token 71");
  19.914 +        RewriteRuleTokenStream stream_TOKEN_REF=new RewriteRuleTokenStream(adaptor,"token TOKEN_REF");
  19.915 +
  19.916 +        try { dbg.enterRule(getGrammarFileName(), "tokenSpec");
  19.917 +        if ( getRuleLevel()==0 ) {dbg.commence();}
  19.918 +        incRuleLevel();
  19.919 +        dbg.location(108, 1);
  19.920 +
  19.921 +        try {
  19.922 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:109:2: ( TOKEN_REF ( '=' (lit= STRING_LITERAL | lit= CHAR_LITERAL ) -> ^( '=' TOKEN_REF $lit) | -> TOKEN_REF ) ';' )
  19.923 +            dbg.enterAlt(1);
  19.924 +
  19.925 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:109:4: TOKEN_REF ( '=' (lit= STRING_LITERAL | lit= CHAR_LITERAL ) -> ^( '=' TOKEN_REF $lit) | -> TOKEN_REF ) ';'
  19.926 +            {
  19.927 +            dbg.location(109,4);
  19.928 +            TOKEN_REF16=(Token)match(input,TOKEN_REF,FOLLOW_TOKEN_REF_in_tokenSpec545); if (state.failed) return retval; 
  19.929 +            if ( state.backtracking==0 ) stream_TOKEN_REF.add(TOKEN_REF16);
  19.930 +
  19.931 +            dbg.location(110,3);
  19.932 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:110:3: ( '=' (lit= STRING_LITERAL | lit= CHAR_LITERAL ) -> ^( '=' TOKEN_REF $lit) | -> TOKEN_REF )
  19.933 +            int alt10=2;
  19.934 +            try { dbg.enterSubRule(10);
  19.935 +            try { dbg.enterDecision(10, decisionCanBacktrack[10]);
  19.936 +
  19.937 +            int LA10_0 = input.LA(1);
  19.938 +
  19.939 +            if ( (LA10_0==71) ) {
  19.940 +                alt10=1;
  19.941 +            }
  19.942 +            else if ( (LA10_0==69) ) {
  19.943 +                alt10=2;
  19.944 +            }
  19.945 +            else {
  19.946 +                if (state.backtracking>0) {state.failed=true; return retval;}
  19.947 +                NoViableAltException nvae =
  19.948 +                    new NoViableAltException("", 10, 0, input);
  19.949 +
  19.950 +                dbg.recognitionException(nvae);
  19.951 +                throw nvae;
  19.952 +            }
  19.953 +            } finally {dbg.exitDecision(10);}
  19.954 +
  19.955 +            switch (alt10) {
  19.956 +                case 1 :
  19.957 +                    dbg.enterAlt(1);
  19.958 +
  19.959 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:110:5: '=' (lit= STRING_LITERAL | lit= CHAR_LITERAL )
  19.960 +                    {
  19.961 +                    dbg.location(110,5);
  19.962 +                    char_literal17=(Token)match(input,71,FOLLOW_71_in_tokenSpec551); if (state.failed) return retval; 
  19.963 +                    if ( state.backtracking==0 ) stream_71.add(char_literal17);
  19.964 +
  19.965 +                    dbg.location(110,9);
  19.966 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:110:9: (lit= STRING_LITERAL | lit= CHAR_LITERAL )
  19.967 +                    int alt9=2;
  19.968 +                    try { dbg.enterSubRule(9);
  19.969 +                    try { dbg.enterDecision(9, decisionCanBacktrack[9]);
  19.970 +
  19.971 +                    int LA9_0 = input.LA(1);
  19.972 +
  19.973 +                    if ( (LA9_0==STRING_LITERAL) ) {
  19.974 +                        alt9=1;
  19.975 +                    }
  19.976 +                    else if ( (LA9_0==CHAR_LITERAL) ) {
  19.977 +                        alt9=2;
  19.978 +                    }
  19.979 +                    else {
  19.980 +                        if (state.backtracking>0) {state.failed=true; return retval;}
  19.981 +                        NoViableAltException nvae =
  19.982 +                            new NoViableAltException("", 9, 0, input);
  19.983 +
  19.984 +                        dbg.recognitionException(nvae);
  19.985 +                        throw nvae;
  19.986 +                    }
  19.987 +                    } finally {dbg.exitDecision(9);}
  19.988 +
  19.989 +                    switch (alt9) {
  19.990 +                        case 1 :
  19.991 +                            dbg.enterAlt(1);
  19.992 +
  19.993 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:110:10: lit= STRING_LITERAL
  19.994 +                            {
  19.995 +                            dbg.location(110,13);
  19.996 +                            lit=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_tokenSpec556); if (state.failed) return retval; 
  19.997 +                            if ( state.backtracking==0 ) stream_STRING_LITERAL.add(lit);
  19.998 +
  19.999 +
 19.1000 +                            }
 19.1001 +                            break;
 19.1002 +                        case 2 :
 19.1003 +                            dbg.enterAlt(2);
 19.1004 +
 19.1005 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:110:29: lit= CHAR_LITERAL
 19.1006 +                            {
 19.1007 +                            dbg.location(110,32);
 19.1008 +                            lit=(Token)match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_tokenSpec560); if (state.failed) return retval; 
 19.1009 +                            if ( state.backtracking==0 ) stream_CHAR_LITERAL.add(lit);
 19.1010 +
 19.1011 +
 19.1012 +                            }
 19.1013 +                            break;
 19.1014 +
 19.1015 +                    }
 19.1016 +                    } finally {dbg.exitSubRule(9);}
 19.1017 +
 19.1018 +
 19.1019 +
 19.1020 +                    // AST REWRITE
 19.1021 +                    // elements: lit, TOKEN_REF, 71
 19.1022 +                    // token labels: lit
 19.1023 +                    // rule labels: retval
 19.1024 +                    // token list labels: 
 19.1025 +                    // rule list labels: 
 19.1026 +                    // wildcard labels: 
 19.1027 +                    if ( state.backtracking==0 ) {
 19.1028 +                    retval.tree = root_0;
 19.1029 +                    RewriteRuleTokenStream stream_lit=new RewriteRuleTokenStream(adaptor,"token lit",lit);
 19.1030 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.1031 +
 19.1032 +                    root_0 = (CommonTree)adaptor.nil();
 19.1033 +                    // 110:47: -> ^( '=' TOKEN_REF $lit)
 19.1034 +                    {
 19.1035 +                        dbg.location(110,50);
 19.1036 +                        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:110:50: ^( '=' TOKEN_REF $lit)
 19.1037 +                        {
 19.1038 +                        CommonTree root_1 = (CommonTree)adaptor.nil();
 19.1039 +                        dbg.location(110,52);
 19.1040 +                        root_1 = (CommonTree)adaptor.becomeRoot(stream_71.nextNode(), root_1);
 19.1041 +
 19.1042 +                        dbg.location(110,56);
 19.1043 +                        adaptor.addChild(root_1, stream_TOKEN_REF.nextNode());
 19.1044 +                        dbg.location(110,66);
 19.1045 +                        adaptor.addChild(root_1, stream_lit.nextNode());
 19.1046 +
 19.1047 +                        adaptor.addChild(root_0, root_1);
 19.1048 +                        }
 19.1049 +
 19.1050 +                    }
 19.1051 +
 19.1052 +                    retval.tree = root_0;}
 19.1053 +                    }
 19.1054 +                    break;
 19.1055 +                case 2 :
 19.1056 +                    dbg.enterAlt(2);
 19.1057 +
 19.1058 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:111:16: 
 19.1059 +                    {
 19.1060 +
 19.1061 +                    // AST REWRITE
 19.1062 +                    // elements: TOKEN_REF
 19.1063 +                    // token labels: 
 19.1064 +                    // rule labels: retval
 19.1065 +                    // token list labels: 
 19.1066 +                    // rule list labels: 
 19.1067 +                    // wildcard labels: 
 19.1068 +                    if ( state.backtracking==0 ) {
 19.1069 +                    retval.tree = root_0;
 19.1070 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.1071 +
 19.1072 +                    root_0 = (CommonTree)adaptor.nil();
 19.1073 +                    // 111:16: -> TOKEN_REF
 19.1074 +                    {
 19.1075 +                        dbg.location(111,19);
 19.1076 +                        adaptor.addChild(root_0, stream_TOKEN_REF.nextNode());
 19.1077 +
 19.1078 +                    }
 19.1079 +
 19.1080 +                    retval.tree = root_0;}
 19.1081 +                    }
 19.1082 +                    break;
 19.1083 +
 19.1084 +            }
 19.1085 +            } finally {dbg.exitSubRule(10);}
 19.1086 +
 19.1087 +            dbg.location(113,3);
 19.1088 +            char_literal18=(Token)match(input,69,FOLLOW_69_in_tokenSpec599); if (state.failed) return retval; 
 19.1089 +            if ( state.backtracking==0 ) stream_69.add(char_literal18);
 19.1090 +
 19.1091 +
 19.1092 +            }
 19.1093 +
 19.1094 +            retval.stop = input.LT(-1);
 19.1095 +
 19.1096 +            if ( state.backtracking==0 ) {
 19.1097 +
 19.1098 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.1099 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.1100 +            }
 19.1101 +        }
 19.1102 +        catch (RecognitionException re) {
 19.1103 +            reportError(re);
 19.1104 +            recover(input,re);
 19.1105 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.1106 +
 19.1107 +        }
 19.1108 +        finally {
 19.1109 +        }
 19.1110 +        dbg.location(114, 2);
 19.1111 +
 19.1112 +        }
 19.1113 +        finally {
 19.1114 +            dbg.exitRule(getGrammarFileName(), "tokenSpec");
 19.1115 +            decRuleLevel();
 19.1116 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.1117 +        }
 19.1118 +
 19.1119 +        return retval;
 19.1120 +    }
 19.1121 +    // $ANTLR end "tokenSpec"
 19.1122 +
 19.1123 +    public static class attrScope_return extends ParserRuleReturnScope {
 19.1124 +        CommonTree tree;
 19.1125 +        public Object getTree() { return tree; }
 19.1126 +    };
 19.1127 +
 19.1128 +    // $ANTLR start "attrScope"
 19.1129 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:116:1: attrScope : 'scope' id ACTION -> ^( 'scope' id ACTION ) ;
 19.1130 +    public final ANTLRv3Parser.attrScope_return attrScope() throws RecognitionException {
 19.1131 +        ANTLRv3Parser.attrScope_return retval = new ANTLRv3Parser.attrScope_return();
 19.1132 +        retval.start = input.LT(1);
 19.1133 +
 19.1134 +        CommonTree root_0 = null;
 19.1135 +
 19.1136 +        Token string_literal19=null;
 19.1137 +        Token ACTION21=null;
 19.1138 +        ANTLRv3Parser.id_return id20 = null;
 19.1139 +
 19.1140 +
 19.1141 +        CommonTree string_literal19_tree=null;
 19.1142 +        CommonTree ACTION21_tree=null;
 19.1143 +        RewriteRuleTokenStream stream_SCOPE=new RewriteRuleTokenStream(adaptor,"token SCOPE");
 19.1144 +        RewriteRuleTokenStream stream_ACTION=new RewriteRuleTokenStream(adaptor,"token ACTION");
 19.1145 +        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
 19.1146 +        try { dbg.enterRule(getGrammarFileName(), "attrScope");
 19.1147 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.1148 +        incRuleLevel();
 19.1149 +        dbg.location(116, 1);
 19.1150 +
 19.1151 +        try {
 19.1152 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:117:2: ( 'scope' id ACTION -> ^( 'scope' id ACTION ) )
 19.1153 +            dbg.enterAlt(1);
 19.1154 +
 19.1155 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:117:4: 'scope' id ACTION
 19.1156 +            {
 19.1157 +            dbg.location(117,4);
 19.1158 +            string_literal19=(Token)match(input,SCOPE,FOLLOW_SCOPE_in_attrScope610); if (state.failed) return retval; 
 19.1159 +            if ( state.backtracking==0 ) stream_SCOPE.add(string_literal19);
 19.1160 +
 19.1161 +            dbg.location(117,12);
 19.1162 +            pushFollow(FOLLOW_id_in_attrScope612);
 19.1163 +            id20=id();
 19.1164 +
 19.1165 +            state._fsp--;
 19.1166 +            if (state.failed) return retval;
 19.1167 +            if ( state.backtracking==0 ) stream_id.add(id20.getTree());
 19.1168 +            dbg.location(117,15);
 19.1169 +            ACTION21=(Token)match(input,ACTION,FOLLOW_ACTION_in_attrScope614); if (state.failed) return retval; 
 19.1170 +            if ( state.backtracking==0 ) stream_ACTION.add(ACTION21);
 19.1171 +
 19.1172 +
 19.1173 +
 19.1174 +            // AST REWRITE
 19.1175 +            // elements: ACTION, SCOPE, id
 19.1176 +            // token labels: 
 19.1177 +            // rule labels: retval
 19.1178 +            // token list labels: 
 19.1179 +            // rule list labels: 
 19.1180 +            // wildcard labels: 
 19.1181 +            if ( state.backtracking==0 ) {
 19.1182 +            retval.tree = root_0;
 19.1183 +            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.1184 +
 19.1185 +            root_0 = (CommonTree)adaptor.nil();
 19.1186 +            // 117:22: -> ^( 'scope' id ACTION )
 19.1187 +            {
 19.1188 +                dbg.location(117,25);
 19.1189 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:117:25: ^( 'scope' id ACTION )
 19.1190 +                {
 19.1191 +                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.1192 +                dbg.location(117,27);
 19.1193 +                root_1 = (CommonTree)adaptor.becomeRoot(stream_SCOPE.nextNode(), root_1);
 19.1194 +
 19.1195 +                dbg.location(117,35);
 19.1196 +                adaptor.addChild(root_1, stream_id.nextTree());
 19.1197 +                dbg.location(117,38);
 19.1198 +                adaptor.addChild(root_1, stream_ACTION.nextNode());
 19.1199 +
 19.1200 +                adaptor.addChild(root_0, root_1);
 19.1201 +                }
 19.1202 +
 19.1203 +            }
 19.1204 +
 19.1205 +            retval.tree = root_0;}
 19.1206 +            }
 19.1207 +
 19.1208 +            retval.stop = input.LT(-1);
 19.1209 +
 19.1210 +            if ( state.backtracking==0 ) {
 19.1211 +
 19.1212 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.1213 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.1214 +            }
 19.1215 +        }
 19.1216 +        catch (RecognitionException re) {
 19.1217 +            reportError(re);
 19.1218 +            recover(input,re);
 19.1219 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.1220 +
 19.1221 +        }
 19.1222 +        finally {
 19.1223 +        }
 19.1224 +        dbg.location(118, 2);
 19.1225 +
 19.1226 +        }
 19.1227 +        finally {
 19.1228 +            dbg.exitRule(getGrammarFileName(), "attrScope");
 19.1229 +            decRuleLevel();
 19.1230 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.1231 +        }
 19.1232 +
 19.1233 +        return retval;
 19.1234 +    }
 19.1235 +    // $ANTLR end "attrScope"
 19.1236 +
 19.1237 +    public static class action_return extends ParserRuleReturnScope {
 19.1238 +        CommonTree tree;
 19.1239 +        public Object getTree() { return tree; }
 19.1240 +    };
 19.1241 +
 19.1242 +    // $ANTLR start "action"
 19.1243 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:120:1: action : '@' ( actionScopeName '::' )? id ACTION -> ^( '@' ( actionScopeName )? id ACTION ) ;
 19.1244 +    public final ANTLRv3Parser.action_return action() throws RecognitionException {
 19.1245 +        ANTLRv3Parser.action_return retval = new ANTLRv3Parser.action_return();
 19.1246 +        retval.start = input.LT(1);
 19.1247 +
 19.1248 +        CommonTree root_0 = null;
 19.1249 +
 19.1250 +        Token char_literal22=null;
 19.1251 +        Token string_literal24=null;
 19.1252 +        Token ACTION26=null;
 19.1253 +        ANTLRv3Parser.actionScopeName_return actionScopeName23 = null;
 19.1254 +
 19.1255 +        ANTLRv3Parser.id_return id25 = null;
 19.1256 +
 19.1257 +
 19.1258 +        CommonTree char_literal22_tree=null;
 19.1259 +        CommonTree string_literal24_tree=null;
 19.1260 +        CommonTree ACTION26_tree=null;
 19.1261 +        RewriteRuleTokenStream stream_72=new RewriteRuleTokenStream(adaptor,"token 72");
 19.1262 +        RewriteRuleTokenStream stream_ACTION=new RewriteRuleTokenStream(adaptor,"token ACTION");
 19.1263 +        RewriteRuleTokenStream stream_73=new RewriteRuleTokenStream(adaptor,"token 73");
 19.1264 +        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
 19.1265 +        RewriteRuleSubtreeStream stream_actionScopeName=new RewriteRuleSubtreeStream(adaptor,"rule actionScopeName");
 19.1266 +        try { dbg.enterRule(getGrammarFileName(), "action");
 19.1267 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.1268 +        incRuleLevel();
 19.1269 +        dbg.location(120, 1);
 19.1270 +
 19.1271 +        try {
 19.1272 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:122:2: ( '@' ( actionScopeName '::' )? id ACTION -> ^( '@' ( actionScopeName )? id ACTION ) )
 19.1273 +            dbg.enterAlt(1);
 19.1274 +
 19.1275 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:122:4: '@' ( actionScopeName '::' )? id ACTION
 19.1276 +            {
 19.1277 +            dbg.location(122,4);
 19.1278 +            char_literal22=(Token)match(input,72,FOLLOW_72_in_action637); if (state.failed) return retval; 
 19.1279 +            if ( state.backtracking==0 ) stream_72.add(char_literal22);
 19.1280 +
 19.1281 +            dbg.location(122,8);
 19.1282 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:122:8: ( actionScopeName '::' )?
 19.1283 +            int alt11=2;
 19.1284 +            try { dbg.enterSubRule(11);
 19.1285 +            try { dbg.enterDecision(11, decisionCanBacktrack[11]);
 19.1286 +
 19.1287 +            switch ( input.LA(1) ) {
 19.1288 +                case TOKEN_REF:
 19.1289 +                    {
 19.1290 +                    int LA11_1 = input.LA(2);
 19.1291 +
 19.1292 +                    if ( (LA11_1==73) ) {
 19.1293 +                        alt11=1;
 19.1294 +                    }
 19.1295 +                    }
 19.1296 +                    break;
 19.1297 +                case RULE_REF:
 19.1298 +                    {
 19.1299 +                    int LA11_2 = input.LA(2);
 19.1300 +
 19.1301 +                    if ( (LA11_2==73) ) {
 19.1302 +                        alt11=1;
 19.1303 +                    }
 19.1304 +                    }
 19.1305 +                    break;
 19.1306 +                case 65:
 19.1307 +                case 66:
 19.1308 +                    {
 19.1309 +                    alt11=1;
 19.1310 +                    }
 19.1311 +                    break;
 19.1312 +            }
 19.1313 +
 19.1314 +            } finally {dbg.exitDecision(11);}
 19.1315 +
 19.1316 +            switch (alt11) {
 19.1317 +                case 1 :
 19.1318 +                    dbg.enterAlt(1);
 19.1319 +
 19.1320 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:122:9: actionScopeName '::'
 19.1321 +                    {
 19.1322 +                    dbg.location(122,9);
 19.1323 +                    pushFollow(FOLLOW_actionScopeName_in_action640);
 19.1324 +                    actionScopeName23=actionScopeName();
 19.1325 +
 19.1326 +                    state._fsp--;
 19.1327 +                    if (state.failed) return retval;
 19.1328 +                    if ( state.backtracking==0 ) stream_actionScopeName.add(actionScopeName23.getTree());
 19.1329 +                    dbg.location(122,25);
 19.1330 +                    string_literal24=(Token)match(input,73,FOLLOW_73_in_action642); if (state.failed) return retval; 
 19.1331 +                    if ( state.backtracking==0 ) stream_73.add(string_literal24);
 19.1332 +
 19.1333 +
 19.1334 +                    }
 19.1335 +                    break;
 19.1336 +
 19.1337 +            }
 19.1338 +            } finally {dbg.exitSubRule(11);}
 19.1339 +
 19.1340 +            dbg.location(122,32);
 19.1341 +            pushFollow(FOLLOW_id_in_action646);
 19.1342 +            id25=id();
 19.1343 +
 19.1344 +            state._fsp--;
 19.1345 +            if (state.failed) return retval;
 19.1346 +            if ( state.backtracking==0 ) stream_id.add(id25.getTree());
 19.1347 +            dbg.location(122,35);
 19.1348 +            ACTION26=(Token)match(input,ACTION,FOLLOW_ACTION_in_action648); if (state.failed) return retval; 
 19.1349 +            if ( state.backtracking==0 ) stream_ACTION.add(ACTION26);
 19.1350 +
 19.1351 +
 19.1352 +
 19.1353 +            // AST REWRITE
 19.1354 +            // elements: ACTION, id, 72, actionScopeName
 19.1355 +            // token labels: 
 19.1356 +            // rule labels: retval
 19.1357 +            // token list labels: 
 19.1358 +            // rule list labels: 
 19.1359 +            // wildcard labels: 
 19.1360 +            if ( state.backtracking==0 ) {
 19.1361 +            retval.tree = root_0;
 19.1362 +            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.1363 +
 19.1364 +            root_0 = (CommonTree)adaptor.nil();
 19.1365 +            // 122:42: -> ^( '@' ( actionScopeName )? id ACTION )
 19.1366 +            {
 19.1367 +                dbg.location(122,45);
 19.1368 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:122:45: ^( '@' ( actionScopeName )? id ACTION )
 19.1369 +                {
 19.1370 +                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.1371 +                dbg.location(122,47);
 19.1372 +                root_1 = (CommonTree)adaptor.becomeRoot(stream_72.nextNode(), root_1);
 19.1373 +
 19.1374 +                dbg.location(122,51);
 19.1375 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:122:51: ( actionScopeName )?
 19.1376 +                if ( stream_actionScopeName.hasNext() ) {
 19.1377 +                    dbg.location(122,51);
 19.1378 +                    adaptor.addChild(root_1, stream_actionScopeName.nextTree());
 19.1379 +
 19.1380 +                }
 19.1381 +                stream_actionScopeName.reset();
 19.1382 +                dbg.location(122,68);
 19.1383 +                adaptor.addChild(root_1, stream_id.nextTree());
 19.1384 +                dbg.location(122,71);
 19.1385 +                adaptor.addChild(root_1, stream_ACTION.nextNode());
 19.1386 +
 19.1387 +                adaptor.addChild(root_0, root_1);
 19.1388 +                }
 19.1389 +
 19.1390 +            }
 19.1391 +
 19.1392 +            retval.tree = root_0;}
 19.1393 +            }
 19.1394 +
 19.1395 +            retval.stop = input.LT(-1);
 19.1396 +
 19.1397 +            if ( state.backtracking==0 ) {
 19.1398 +
 19.1399 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.1400 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.1401 +            }
 19.1402 +        }
 19.1403 +        catch (RecognitionException re) {
 19.1404 +            reportError(re);
 19.1405 +            recover(input,re);
 19.1406 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.1407 +
 19.1408 +        }
 19.1409 +        finally {
 19.1410 +        }
 19.1411 +        dbg.location(123, 2);
 19.1412 +
 19.1413 +        }
 19.1414 +        finally {
 19.1415 +            dbg.exitRule(getGrammarFileName(), "action");
 19.1416 +            decRuleLevel();
 19.1417 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.1418 +        }
 19.1419 +
 19.1420 +        return retval;
 19.1421 +    }
 19.1422 +    // $ANTLR end "action"
 19.1423 +
 19.1424 +    public static class actionScopeName_return extends ParserRuleReturnScope {
 19.1425 +        CommonTree tree;
 19.1426 +        public Object getTree() { return tree; }
 19.1427 +    };
 19.1428 +
 19.1429 +    // $ANTLR start "actionScopeName"
 19.1430 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:125:1: actionScopeName : ( id | l= 'lexer' -> ID[$l] | p= 'parser' -> ID[$p] );
 19.1431 +    public final ANTLRv3Parser.actionScopeName_return actionScopeName() throws RecognitionException {
 19.1432 +        ANTLRv3Parser.actionScopeName_return retval = new ANTLRv3Parser.actionScopeName_return();
 19.1433 +        retval.start = input.LT(1);
 19.1434 +
 19.1435 +        CommonTree root_0 = null;
 19.1436 +
 19.1437 +        Token l=null;
 19.1438 +        Token p=null;
 19.1439 +        ANTLRv3Parser.id_return id27 = null;
 19.1440 +
 19.1441 +
 19.1442 +        CommonTree l_tree=null;
 19.1443 +        CommonTree p_tree=null;
 19.1444 +        RewriteRuleTokenStream stream_66=new RewriteRuleTokenStream(adaptor,"token 66");
 19.1445 +        RewriteRuleTokenStream stream_65=new RewriteRuleTokenStream(adaptor,"token 65");
 19.1446 +
 19.1447 +        try { dbg.enterRule(getGrammarFileName(), "actionScopeName");
 19.1448 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.1449 +        incRuleLevel();
 19.1450 +        dbg.location(125, 1);
 19.1451 +
 19.1452 +        try {
 19.1453 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:129:2: ( id | l= 'lexer' -> ID[$l] | p= 'parser' -> ID[$p] )
 19.1454 +            int alt12=3;
 19.1455 +            try { dbg.enterDecision(12, decisionCanBacktrack[12]);
 19.1456 +
 19.1457 +            switch ( input.LA(1) ) {
 19.1458 +            case TOKEN_REF:
 19.1459 +            case RULE_REF:
 19.1460 +                {
 19.1461 +                alt12=1;
 19.1462 +                }
 19.1463 +                break;
 19.1464 +            case 65:
 19.1465 +                {
 19.1466 +                alt12=2;
 19.1467 +                }
 19.1468 +                break;
 19.1469 +            case 66:
 19.1470 +                {
 19.1471 +                alt12=3;
 19.1472 +                }
 19.1473 +                break;
 19.1474 +            default:
 19.1475 +                if (state.backtracking>0) {state.failed=true; return retval;}
 19.1476 +                NoViableAltException nvae =
 19.1477 +                    new NoViableAltException("", 12, 0, input);
 19.1478 +
 19.1479 +                dbg.recognitionException(nvae);
 19.1480 +                throw nvae;
 19.1481 +            }
 19.1482 +
 19.1483 +            } finally {dbg.exitDecision(12);}
 19.1484 +
 19.1485 +            switch (alt12) {
 19.1486 +                case 1 :
 19.1487 +                    dbg.enterAlt(1);
 19.1488 +
 19.1489 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:129:4: id
 19.1490 +                    {
 19.1491 +                    root_0 = (CommonTree)adaptor.nil();
 19.1492 +
 19.1493 +                    dbg.location(129,4);
 19.1494 +                    pushFollow(FOLLOW_id_in_actionScopeName674);
 19.1495 +                    id27=id();
 19.1496 +
 19.1497 +                    state._fsp--;
 19.1498 +                    if (state.failed) return retval;
 19.1499 +                    if ( state.backtracking==0 ) adaptor.addChild(root_0, id27.getTree());
 19.1500 +
 19.1501 +                    }
 19.1502 +                    break;
 19.1503 +                case 2 :
 19.1504 +                    dbg.enterAlt(2);
 19.1505 +
 19.1506 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:130:4: l= 'lexer'
 19.1507 +                    {
 19.1508 +                    dbg.location(130,5);
 19.1509 +                    l=(Token)match(input,65,FOLLOW_65_in_actionScopeName681); if (state.failed) return retval; 
 19.1510 +                    if ( state.backtracking==0 ) stream_65.add(l);
 19.1511 +
 19.1512 +
 19.1513 +
 19.1514 +                    // AST REWRITE
 19.1515 +                    // elements: 
 19.1516 +                    // token labels: 
 19.1517 +                    // rule labels: retval
 19.1518 +                    // token list labels: 
 19.1519 +                    // rule list labels: 
 19.1520 +                    // wildcard labels: 
 19.1521 +                    if ( state.backtracking==0 ) {
 19.1522 +                    retval.tree = root_0;
 19.1523 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.1524 +
 19.1525 +                    root_0 = (CommonTree)adaptor.nil();
 19.1526 +                    // 130:14: -> ID[$l]
 19.1527 +                    {
 19.1528 +                        dbg.location(130,17);
 19.1529 +                        adaptor.addChild(root_0, (CommonTree)adaptor.create(ID, l));
 19.1530 +
 19.1531 +                    }
 19.1532 +
 19.1533 +                    retval.tree = root_0;}
 19.1534 +                    }
 19.1535 +                    break;
 19.1536 +                case 3 :
 19.1537 +                    dbg.enterAlt(3);
 19.1538 +
 19.1539 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:131:9: p= 'parser'
 19.1540 +                    {
 19.1541 +                    dbg.location(131,10);
 19.1542 +                    p=(Token)match(input,66,FOLLOW_66_in_actionScopeName698); if (state.failed) return retval; 
 19.1543 +                    if ( state.backtracking==0 ) stream_66.add(p);
 19.1544 +
 19.1545 +
 19.1546 +
 19.1547 +                    // AST REWRITE
 19.1548 +                    // elements: 
 19.1549 +                    // token labels: 
 19.1550 +                    // rule labels: retval
 19.1551 +                    // token list labels: 
 19.1552 +                    // rule list labels: 
 19.1553 +                    // wildcard labels: 
 19.1554 +                    if ( state.backtracking==0 ) {
 19.1555 +                    retval.tree = root_0;
 19.1556 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.1557 +
 19.1558 +                    root_0 = (CommonTree)adaptor.nil();
 19.1559 +                    // 131:20: -> ID[$p]
 19.1560 +                    {
 19.1561 +                        dbg.location(131,23);
 19.1562 +                        adaptor.addChild(root_0, (CommonTree)adaptor.create(ID, p));
 19.1563 +
 19.1564 +                    }
 19.1565 +
 19.1566 +                    retval.tree = root_0;}
 19.1567 +                    }
 19.1568 +                    break;
 19.1569 +
 19.1570 +            }
 19.1571 +            retval.stop = input.LT(-1);
 19.1572 +
 19.1573 +            if ( state.backtracking==0 ) {
 19.1574 +
 19.1575 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.1576 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.1577 +            }
 19.1578 +        }
 19.1579 +        catch (RecognitionException re) {
 19.1580 +            reportError(re);
 19.1581 +            recover(input,re);
 19.1582 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.1583 +
 19.1584 +        }
 19.1585 +        finally {
 19.1586 +        }
 19.1587 +        dbg.location(132, 2);
 19.1588 +
 19.1589 +        }
 19.1590 +        finally {
 19.1591 +            dbg.exitRule(getGrammarFileName(), "actionScopeName");
 19.1592 +            decRuleLevel();
 19.1593 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.1594 +        }
 19.1595 +
 19.1596 +        return retval;
 19.1597 +    }
 19.1598 +    // $ANTLR end "actionScopeName"
 19.1599 +
 19.1600 +    public static class optionsSpec_return extends ParserRuleReturnScope {
 19.1601 +        CommonTree tree;
 19.1602 +        public Object getTree() { return tree; }
 19.1603 +    };
 19.1604 +
 19.1605 +    // $ANTLR start "optionsSpec"
 19.1606 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:134:1: optionsSpec : OPTIONS ( option ';' )+ '}' -> ^( OPTIONS ( option )+ ) ;
 19.1607 +    public final ANTLRv3Parser.optionsSpec_return optionsSpec() throws RecognitionException {
 19.1608 +        ANTLRv3Parser.optionsSpec_return retval = new ANTLRv3Parser.optionsSpec_return();
 19.1609 +        retval.start = input.LT(1);
 19.1610 +
 19.1611 +        CommonTree root_0 = null;
 19.1612 +
 19.1613 +        Token OPTIONS28=null;
 19.1614 +        Token char_literal30=null;
 19.1615 +        Token char_literal31=null;
 19.1616 +        ANTLRv3Parser.option_return option29 = null;
 19.1617 +
 19.1618 +
 19.1619 +        CommonTree OPTIONS28_tree=null;
 19.1620 +        CommonTree char_literal30_tree=null;
 19.1621 +        CommonTree char_literal31_tree=null;
 19.1622 +        RewriteRuleTokenStream stream_69=new RewriteRuleTokenStream(adaptor,"token 69");
 19.1623 +        RewriteRuleTokenStream stream_70=new RewriteRuleTokenStream(adaptor,"token 70");
 19.1624 +        RewriteRuleTokenStream stream_OPTIONS=new RewriteRuleTokenStream(adaptor,"token OPTIONS");
 19.1625 +        RewriteRuleSubtreeStream stream_option=new RewriteRuleSubtreeStream(adaptor,"rule option");
 19.1626 +        try { dbg.enterRule(getGrammarFileName(), "optionsSpec");
 19.1627 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.1628 +        incRuleLevel();
 19.1629 +        dbg.location(134, 1);
 19.1630 +
 19.1631 +        try {
 19.1632 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:135:2: ( OPTIONS ( option ';' )+ '}' -> ^( OPTIONS ( option )+ ) )
 19.1633 +            dbg.enterAlt(1);
 19.1634 +
 19.1635 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:135:4: OPTIONS ( option ';' )+ '}'
 19.1636 +            {
 19.1637 +            dbg.location(135,4);
 19.1638 +            OPTIONS28=(Token)match(input,OPTIONS,FOLLOW_OPTIONS_in_optionsSpec714); if (state.failed) return retval; 
 19.1639 +            if ( state.backtracking==0 ) stream_OPTIONS.add(OPTIONS28);
 19.1640 +
 19.1641 +            dbg.location(135,12);
 19.1642 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:135:12: ( option ';' )+
 19.1643 +            int cnt13=0;
 19.1644 +            try { dbg.enterSubRule(13);
 19.1645 +
 19.1646 +            loop13:
 19.1647 +            do {
 19.1648 +                int alt13=2;
 19.1649 +                try { dbg.enterDecision(13, decisionCanBacktrack[13]);
 19.1650 +
 19.1651 +                int LA13_0 = input.LA(1);
 19.1652 +
 19.1653 +                if ( (LA13_0==TOKEN_REF||LA13_0==RULE_REF) ) {
 19.1654 +                    alt13=1;
 19.1655 +                }
 19.1656 +
 19.1657 +
 19.1658 +                } finally {dbg.exitDecision(13);}
 19.1659 +
 19.1660 +                switch (alt13) {
 19.1661 +            	case 1 :
 19.1662 +            	    dbg.enterAlt(1);
 19.1663 +
 19.1664 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:135:13: option ';'
 19.1665 +            	    {
 19.1666 +            	    dbg.location(135,13);
 19.1667 +            	    pushFollow(FOLLOW_option_in_optionsSpec717);
 19.1668 +            	    option29=option();
 19.1669 +
 19.1670 +            	    state._fsp--;
 19.1671 +            	    if (state.failed) return retval;
 19.1672 +            	    if ( state.backtracking==0 ) stream_option.add(option29.getTree());
 19.1673 +            	    dbg.location(135,20);
 19.1674 +            	    char_literal30=(Token)match(input,69,FOLLOW_69_in_optionsSpec719); if (state.failed) return retval; 
 19.1675 +            	    if ( state.backtracking==0 ) stream_69.add(char_literal30);
 19.1676 +
 19.1677 +
 19.1678 +            	    }
 19.1679 +            	    break;
 19.1680 +
 19.1681 +            	default :
 19.1682 +            	    if ( cnt13 >= 1 ) break loop13;
 19.1683 +            	    if (state.backtracking>0) {state.failed=true; return retval;}
 19.1684 +                        EarlyExitException eee =
 19.1685 +                            new EarlyExitException(13, input);
 19.1686 +                        dbg.recognitionException(eee);
 19.1687 +
 19.1688 +                        throw eee;
 19.1689 +                }
 19.1690 +                cnt13++;
 19.1691 +            } while (true);
 19.1692 +            } finally {dbg.exitSubRule(13);}
 19.1693 +
 19.1694 +            dbg.location(135,26);
 19.1695 +            char_literal31=(Token)match(input,70,FOLLOW_70_in_optionsSpec723); if (state.failed) return retval; 
 19.1696 +            if ( state.backtracking==0 ) stream_70.add(char_literal31);
 19.1697 +
 19.1698 +
 19.1699 +
 19.1700 +            // AST REWRITE
 19.1701 +            // elements: OPTIONS, option
 19.1702 +            // token labels: 
 19.1703 +            // rule labels: retval
 19.1704 +            // token list labels: 
 19.1705 +            // rule list labels: 
 19.1706 +            // wildcard labels: 
 19.1707 +            if ( state.backtracking==0 ) {
 19.1708 +            retval.tree = root_0;
 19.1709 +            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.1710 +
 19.1711 +            root_0 = (CommonTree)adaptor.nil();
 19.1712 +            // 135:30: -> ^( OPTIONS ( option )+ )
 19.1713 +            {
 19.1714 +                dbg.location(135,33);
 19.1715 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:135:33: ^( OPTIONS ( option )+ )
 19.1716 +                {
 19.1717 +                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.1718 +                dbg.location(135,35);
 19.1719 +                root_1 = (CommonTree)adaptor.becomeRoot(stream_OPTIONS.nextNode(), root_1);
 19.1720 +
 19.1721 +                dbg.location(135,43);
 19.1722 +                if ( !(stream_option.hasNext()) ) {
 19.1723 +                    throw new RewriteEarlyExitException();
 19.1724 +                }
 19.1725 +                while ( stream_option.hasNext() ) {
 19.1726 +                    dbg.location(135,43);
 19.1727 +                    adaptor.addChild(root_1, stream_option.nextTree());
 19.1728 +
 19.1729 +                }
 19.1730 +                stream_option.reset();
 19.1731 +
 19.1732 +                adaptor.addChild(root_0, root_1);
 19.1733 +                }
 19.1734 +
 19.1735 +            }
 19.1736 +
 19.1737 +            retval.tree = root_0;}
 19.1738 +            }
 19.1739 +
 19.1740 +            retval.stop = input.LT(-1);
 19.1741 +
 19.1742 +            if ( state.backtracking==0 ) {
 19.1743 +
 19.1744 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.1745 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.1746 +            }
 19.1747 +        }
 19.1748 +        catch (RecognitionException re) {
 19.1749 +            reportError(re);
 19.1750 +            recover(input,re);
 19.1751 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.1752 +
 19.1753 +        }
 19.1754 +        finally {
 19.1755 +        }
 19.1756 +        dbg.location(136, 2);
 19.1757 +
 19.1758 +        }
 19.1759 +        finally {
 19.1760 +            dbg.exitRule(getGrammarFileName(), "optionsSpec");
 19.1761 +            decRuleLevel();
 19.1762 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.1763 +        }
 19.1764 +
 19.1765 +        return retval;
 19.1766 +    }
 19.1767 +    // $ANTLR end "optionsSpec"
 19.1768 +
 19.1769 +    public static class option_return extends ParserRuleReturnScope {
 19.1770 +        CommonTree tree;
 19.1771 +        public Object getTree() { return tree; }
 19.1772 +    };
 19.1773 +
 19.1774 +    // $ANTLR start "option"
 19.1775 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:138:1: option : id '=' optionValue -> ^( '=' id optionValue ) ;
 19.1776 +    public final ANTLRv3Parser.option_return option() throws RecognitionException {
 19.1777 +        ANTLRv3Parser.option_return retval = new ANTLRv3Parser.option_return();
 19.1778 +        retval.start = input.LT(1);
 19.1779 +
 19.1780 +        CommonTree root_0 = null;
 19.1781 +
 19.1782 +        Token char_literal33=null;
 19.1783 +        ANTLRv3Parser.id_return id32 = null;
 19.1784 +
 19.1785 +        ANTLRv3Parser.optionValue_return optionValue34 = null;
 19.1786 +
 19.1787 +
 19.1788 +        CommonTree char_literal33_tree=null;
 19.1789 +        RewriteRuleTokenStream stream_71=new RewriteRuleTokenStream(adaptor,"token 71");
 19.1790 +        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
 19.1791 +        RewriteRuleSubtreeStream stream_optionValue=new RewriteRuleSubtreeStream(adaptor,"rule optionValue");
 19.1792 +        try { dbg.enterRule(getGrammarFileName(), "option");
 19.1793 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.1794 +        incRuleLevel();
 19.1795 +        dbg.location(138, 1);
 19.1796 +
 19.1797 +        try {
 19.1798 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:139:5: ( id '=' optionValue -> ^( '=' id optionValue ) )
 19.1799 +            dbg.enterAlt(1);
 19.1800 +
 19.1801 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:139:9: id '=' optionValue
 19.1802 +            {
 19.1803 +            dbg.location(139,9);
 19.1804 +            pushFollow(FOLLOW_id_in_option748);
 19.1805 +            id32=id();
 19.1806 +
 19.1807 +            state._fsp--;
 19.1808 +            if (state.failed) return retval;
 19.1809 +            if ( state.backtracking==0 ) stream_id.add(id32.getTree());
 19.1810 +            dbg.location(139,12);
 19.1811 +            char_literal33=(Token)match(input,71,FOLLOW_71_in_option750); if (state.failed) return retval; 
 19.1812 +            if ( state.backtracking==0 ) stream_71.add(char_literal33);
 19.1813 +
 19.1814 +            dbg.location(139,16);
 19.1815 +            pushFollow(FOLLOW_optionValue_in_option752);
 19.1816 +            optionValue34=optionValue();
 19.1817 +
 19.1818 +            state._fsp--;
 19.1819 +            if (state.failed) return retval;
 19.1820 +            if ( state.backtracking==0 ) stream_optionValue.add(optionValue34.getTree());
 19.1821 +
 19.1822 +
 19.1823 +            // AST REWRITE
 19.1824 +            // elements: 71, optionValue, id
 19.1825 +            // token labels: 
 19.1826 +            // rule labels: retval
 19.1827 +            // token list labels: 
 19.1828 +            // rule list labels: 
 19.1829 +            // wildcard labels: 
 19.1830 +            if ( state.backtracking==0 ) {
 19.1831 +            retval.tree = root_0;
 19.1832 +            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.1833 +
 19.1834 +            root_0 = (CommonTree)adaptor.nil();
 19.1835 +            // 139:28: -> ^( '=' id optionValue )
 19.1836 +            {
 19.1837 +                dbg.location(139,31);
 19.1838 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:139:31: ^( '=' id optionValue )
 19.1839 +                {
 19.1840 +                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.1841 +                dbg.location(139,33);
 19.1842 +                root_1 = (CommonTree)adaptor.becomeRoot(stream_71.nextNode(), root_1);
 19.1843 +
 19.1844 +                dbg.location(139,37);
 19.1845 +                adaptor.addChild(root_1, stream_id.nextTree());
 19.1846 +                dbg.location(139,40);
 19.1847 +                adaptor.addChild(root_1, stream_optionValue.nextTree());
 19.1848 +
 19.1849 +                adaptor.addChild(root_0, root_1);
 19.1850 +                }
 19.1851 +
 19.1852 +            }
 19.1853 +
 19.1854 +            retval.tree = root_0;}
 19.1855 +            }
 19.1856 +
 19.1857 +            retval.stop = input.LT(-1);
 19.1858 +
 19.1859 +            if ( state.backtracking==0 ) {
 19.1860 +
 19.1861 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.1862 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.1863 +            }
 19.1864 +        }
 19.1865 +        catch (RecognitionException re) {
 19.1866 +            reportError(re);
 19.1867 +            recover(input,re);
 19.1868 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.1869 +
 19.1870 +        }
 19.1871 +        finally {
 19.1872 +        }
 19.1873 +        dbg.location(140, 3);
 19.1874 +
 19.1875 +        }
 19.1876 +        finally {
 19.1877 +            dbg.exitRule(getGrammarFileName(), "option");
 19.1878 +            decRuleLevel();
 19.1879 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.1880 +        }
 19.1881 +
 19.1882 +        return retval;
 19.1883 +    }
 19.1884 +    // $ANTLR end "option"
 19.1885 +
 19.1886 +    public static class optionValue_return extends ParserRuleReturnScope {
 19.1887 +        CommonTree tree;
 19.1888 +        public Object getTree() { return tree; }
 19.1889 +    };
 19.1890 +
 19.1891 +    // $ANTLR start "optionValue"
 19.1892 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:142:1: optionValue : ( id | STRING_LITERAL | CHAR_LITERAL | INT | s= '*' -> STRING_LITERAL[$s] );
 19.1893 +    public final ANTLRv3Parser.optionValue_return optionValue() throws RecognitionException {
 19.1894 +        ANTLRv3Parser.optionValue_return retval = new ANTLRv3Parser.optionValue_return();
 19.1895 +        retval.start = input.LT(1);
 19.1896 +
 19.1897 +        CommonTree root_0 = null;
 19.1898 +
 19.1899 +        Token s=null;
 19.1900 +        Token STRING_LITERAL36=null;
 19.1901 +        Token CHAR_LITERAL37=null;
 19.1902 +        Token INT38=null;
 19.1903 +        ANTLRv3Parser.id_return id35 = null;
 19.1904 +
 19.1905 +
 19.1906 +        CommonTree s_tree=null;
 19.1907 +        CommonTree STRING_LITERAL36_tree=null;
 19.1908 +        CommonTree CHAR_LITERAL37_tree=null;
 19.1909 +        CommonTree INT38_tree=null;
 19.1910 +        RewriteRuleTokenStream stream_74=new RewriteRuleTokenStream(adaptor,"token 74");
 19.1911 +
 19.1912 +        try { dbg.enterRule(getGrammarFileName(), "optionValue");
 19.1913 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.1914 +        incRuleLevel();
 19.1915 +        dbg.location(142, 1);
 19.1916 +
 19.1917 +        try {
 19.1918 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:143:5: ( id | STRING_LITERAL | CHAR_LITERAL | INT | s= '*' -> STRING_LITERAL[$s] )
 19.1919 +            int alt14=5;
 19.1920 +            try { dbg.enterDecision(14, decisionCanBacktrack[14]);
 19.1921 +
 19.1922 +            switch ( input.LA(1) ) {
 19.1923 +            case TOKEN_REF:
 19.1924 +            case RULE_REF:
 19.1925 +                {
 19.1926 +                alt14=1;
 19.1927 +                }
 19.1928 +                break;
 19.1929 +            case STRING_LITERAL:
 19.1930 +                {
 19.1931 +                alt14=2;
 19.1932 +                }
 19.1933 +                break;
 19.1934 +            case CHAR_LITERAL:
 19.1935 +                {
 19.1936 +                alt14=3;
 19.1937 +                }
 19.1938 +                break;
 19.1939 +            case INT:
 19.1940 +                {
 19.1941 +                alt14=4;
 19.1942 +                }
 19.1943 +                break;
 19.1944 +            case 74:
 19.1945 +                {
 19.1946 +                alt14=5;
 19.1947 +                }
 19.1948 +                break;
 19.1949 +            default:
 19.1950 +                if (state.backtracking>0) {state.failed=true; return retval;}
 19.1951 +                NoViableAltException nvae =
 19.1952 +                    new NoViableAltException("", 14, 0, input);
 19.1953 +
 19.1954 +                dbg.recognitionException(nvae);
 19.1955 +                throw nvae;
 19.1956 +            }
 19.1957 +
 19.1958 +            } finally {dbg.exitDecision(14);}
 19.1959 +
 19.1960 +            switch (alt14) {
 19.1961 +                case 1 :
 19.1962 +                    dbg.enterAlt(1);
 19.1963 +
 19.1964 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:143:9: id
 19.1965 +                    {
 19.1966 +                    root_0 = (CommonTree)adaptor.nil();
 19.1967 +
 19.1968 +                    dbg.location(143,9);
 19.1969 +                    pushFollow(FOLLOW_id_in_optionValue781);
 19.1970 +                    id35=id();
 19.1971 +
 19.1972 +                    state._fsp--;
 19.1973 +                    if (state.failed) return retval;
 19.1974 +                    if ( state.backtracking==0 ) adaptor.addChild(root_0, id35.getTree());
 19.1975 +
 19.1976 +                    }
 19.1977 +                    break;
 19.1978 +                case 2 :
 19.1979 +                    dbg.enterAlt(2);
 19.1980 +
 19.1981 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:144:9: STRING_LITERAL
 19.1982 +                    {
 19.1983 +                    root_0 = (CommonTree)adaptor.nil();
 19.1984 +
 19.1985 +                    dbg.location(144,9);
 19.1986 +                    STRING_LITERAL36=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_optionValue791); if (state.failed) return retval;
 19.1987 +                    if ( state.backtracking==0 ) {
 19.1988 +                    STRING_LITERAL36_tree = (CommonTree)adaptor.create(STRING_LITERAL36);
 19.1989 +                    adaptor.addChild(root_0, STRING_LITERAL36_tree);
 19.1990 +                    }
 19.1991 +
 19.1992 +                    }
 19.1993 +                    break;
 19.1994 +                case 3 :
 19.1995 +                    dbg.enterAlt(3);
 19.1996 +
 19.1997 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:145:9: CHAR_LITERAL
 19.1998 +                    {
 19.1999 +                    root_0 = (CommonTree)adaptor.nil();
 19.2000 +
 19.2001 +                    dbg.location(145,9);
 19.2002 +                    CHAR_LITERAL37=(Token)match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_optionValue801); if (state.failed) return retval;
 19.2003 +                    if ( state.backtracking==0 ) {
 19.2004 +                    CHAR_LITERAL37_tree = (CommonTree)adaptor.create(CHAR_LITERAL37);
 19.2005 +                    adaptor.addChild(root_0, CHAR_LITERAL37_tree);
 19.2006 +                    }
 19.2007 +
 19.2008 +                    }
 19.2009 +                    break;
 19.2010 +                case 4 :
 19.2011 +                    dbg.enterAlt(4);
 19.2012 +
 19.2013 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:146:9: INT
 19.2014 +                    {
 19.2015 +                    root_0 = (CommonTree)adaptor.nil();
 19.2016 +
 19.2017 +                    dbg.location(146,9);
 19.2018 +                    INT38=(Token)match(input,INT,FOLLOW_INT_in_optionValue811); if (state.failed) return retval;
 19.2019 +                    if ( state.backtracking==0 ) {
 19.2020 +                    INT38_tree = (CommonTree)adaptor.create(INT38);
 19.2021 +                    adaptor.addChild(root_0, INT38_tree);
 19.2022 +                    }
 19.2023 +
 19.2024 +                    }
 19.2025 +                    break;
 19.2026 +                case 5 :
 19.2027 +                    dbg.enterAlt(5);
 19.2028 +
 19.2029 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:147:7: s= '*'
 19.2030 +                    {
 19.2031 +                    dbg.location(147,8);
 19.2032 +                    s=(Token)match(input,74,FOLLOW_74_in_optionValue821); if (state.failed) return retval; 
 19.2033 +                    if ( state.backtracking==0 ) stream_74.add(s);
 19.2034 +
 19.2035 +
 19.2036 +
 19.2037 +                    // AST REWRITE
 19.2038 +                    // elements: 
 19.2039 +                    // token labels: 
 19.2040 +                    // rule labels: retval
 19.2041 +                    // token list labels: 
 19.2042 +                    // rule list labels: 
 19.2043 +                    // wildcard labels: 
 19.2044 +                    if ( state.backtracking==0 ) {
 19.2045 +                    retval.tree = root_0;
 19.2046 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.2047 +
 19.2048 +                    root_0 = (CommonTree)adaptor.nil();
 19.2049 +                    // 147:13: -> STRING_LITERAL[$s]
 19.2050 +                    {
 19.2051 +                        dbg.location(147,16);
 19.2052 +                        adaptor.addChild(root_0, (CommonTree)adaptor.create(STRING_LITERAL, s));
 19.2053 +
 19.2054 +                    }
 19.2055 +
 19.2056 +                    retval.tree = root_0;}
 19.2057 +                    }
 19.2058 +                    break;
 19.2059 +
 19.2060 +            }
 19.2061 +            retval.stop = input.LT(-1);
 19.2062 +
 19.2063 +            if ( state.backtracking==0 ) {
 19.2064 +
 19.2065 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.2066 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.2067 +            }
 19.2068 +        }
 19.2069 +        catch (RecognitionException re) {
 19.2070 +            reportError(re);
 19.2071 +            recover(input,re);
 19.2072 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.2073 +
 19.2074 +        }
 19.2075 +        finally {
 19.2076 +        }
 19.2077 +        dbg.location(148, 5);
 19.2078 +
 19.2079 +        }
 19.2080 +        finally {
 19.2081 +            dbg.exitRule(getGrammarFileName(), "optionValue");
 19.2082 +            decRuleLevel();
 19.2083 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.2084 +        }
 19.2085 +
 19.2086 +        return retval;
 19.2087 +    }
 19.2088 +    // $ANTLR end "optionValue"
 19.2089 +
 19.2090 +    protected static class rule_scope {
 19.2091 +        String name;
 19.2092 +    }
 19.2093 +    protected Stack rule_stack = new Stack();
 19.2094 +
 19.2095 +    public static class rule_return extends ParserRuleReturnScope {
 19.2096 +        CommonTree tree;
 19.2097 +        public Object getTree() { return tree; }
 19.2098 +    };
 19.2099 +
 19.2100 +    // $ANTLR start "rule"
 19.2101 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:150:1: rule : ( DOC_COMMENT )? (modifier= ( 'protected' | 'public' | 'private' | 'fragment' ) )? id ( '!' )? (arg= ARG_ACTION )? ( 'returns' rt= ARG_ACTION )? ( throwsSpec )? ( optionsSpec )? ( ruleScopeSpec )? ( ruleAction )* ':' altList ';' ( exceptionGroup )? -> ^( RULE id ( ^( ARG $arg) )? ( ^( RET $rt) )? ( optionsSpec )? ( ruleScopeSpec )? ( ruleAction )* altList ( exceptionGroup )? EOR[\"EOR\"] ) ;
 19.2102 +    public final ANTLRv3Parser.rule_return rule() throws RecognitionException {
 19.2103 +        rule_stack.push(new rule_scope());
 19.2104 +        ANTLRv3Parser.rule_return retval = new ANTLRv3Parser.rule_return();
 19.2105 +        retval.start = input.LT(1);
 19.2106 +
 19.2107 +        CommonTree root_0 = null;
 19.2108 +
 19.2109 +        Token modifier=null;
 19.2110 +        Token arg=null;
 19.2111 +        Token rt=null;
 19.2112 +        Token DOC_COMMENT39=null;
 19.2113 +        Token string_literal40=null;
 19.2114 +        Token string_literal41=null;
 19.2115 +        Token string_literal42=null;
 19.2116 +        Token string_literal43=null;
 19.2117 +        Token char_literal45=null;
 19.2118 +        Token string_literal46=null;
 19.2119 +        Token char_literal51=null;
 19.2120 +        Token char_literal53=null;
 19.2121 +        ANTLRv3Parser.id_return id44 = null;
 19.2122 +
 19.2123 +        ANTLRv3Parser.throwsSpec_return throwsSpec47 = null;
 19.2124 +
 19.2125 +        ANTLRv3Parser.optionsSpec_return optionsSpec48 = null;
 19.2126 +
 19.2127 +        ANTLRv3Parser.ruleScopeSpec_return ruleScopeSpec49 = null;
 19.2128 +
 19.2129 +        ANTLRv3Parser.ruleAction_return ruleAction50 = null;
 19.2130 +
 19.2131 +        ANTLRv3Parser.altList_return altList52 = null;
 19.2132 +
 19.2133 +        ANTLRv3Parser.exceptionGroup_return exceptionGroup54 = null;
 19.2134 +
 19.2135 +
 19.2136 +        CommonTree modifier_tree=null;
 19.2137 +        CommonTree arg_tree=null;
 19.2138 +        CommonTree rt_tree=null;
 19.2139 +        CommonTree DOC_COMMENT39_tree=null;
 19.2140 +        CommonTree string_literal40_tree=null;
 19.2141 +        CommonTree string_literal41_tree=null;
 19.2142 +        CommonTree string_literal42_tree=null;
 19.2143 +        CommonTree string_literal43_tree=null;
 19.2144 +        CommonTree char_literal45_tree=null;
 19.2145 +        CommonTree string_literal46_tree=null;
 19.2146 +        CommonTree char_literal51_tree=null;
 19.2147 +        CommonTree char_literal53_tree=null;
 19.2148 +        RewriteRuleTokenStream stream_DOC_COMMENT=new RewriteRuleTokenStream(adaptor,"token DOC_COMMENT");
 19.2149 +        RewriteRuleTokenStream stream_79=new RewriteRuleTokenStream(adaptor,"token 79");
 19.2150 +        RewriteRuleTokenStream stream_78=new RewriteRuleTokenStream(adaptor,"token 78");
 19.2151 +        RewriteRuleTokenStream stream_69=new RewriteRuleTokenStream(adaptor,"token 69");
 19.2152 +        RewriteRuleTokenStream stream_77=new RewriteRuleTokenStream(adaptor,"token 77");
 19.2153 +        RewriteRuleTokenStream stream_BANG=new RewriteRuleTokenStream(adaptor,"token BANG");
 19.2154 +        RewriteRuleTokenStream stream_FRAGMENT=new RewriteRuleTokenStream(adaptor,"token FRAGMENT");
 19.2155 +        RewriteRuleTokenStream stream_75=new RewriteRuleTokenStream(adaptor,"token 75");
 19.2156 +        RewriteRuleTokenStream stream_ARG_ACTION=new RewriteRuleTokenStream(adaptor,"token ARG_ACTION");
 19.2157 +        RewriteRuleTokenStream stream_76=new RewriteRuleTokenStream(adaptor,"token 76");
 19.2158 +        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
 19.2159 +        RewriteRuleSubtreeStream stream_exceptionGroup=new RewriteRuleSubtreeStream(adaptor,"rule exceptionGroup");
 19.2160 +        RewriteRuleSubtreeStream stream_throwsSpec=new RewriteRuleSubtreeStream(adaptor,"rule throwsSpec");
 19.2161 +        RewriteRuleSubtreeStream stream_ruleScopeSpec=new RewriteRuleSubtreeStream(adaptor,"rule ruleScopeSpec");
 19.2162 +        RewriteRuleSubtreeStream stream_optionsSpec=new RewriteRuleSubtreeStream(adaptor,"rule optionsSpec");
 19.2163 +        RewriteRuleSubtreeStream stream_altList=new RewriteRuleSubtreeStream(adaptor,"rule altList");
 19.2164 +        RewriteRuleSubtreeStream stream_ruleAction=new RewriteRuleSubtreeStream(adaptor,"rule ruleAction");
 19.2165 +        try { dbg.enterRule(getGrammarFileName(), "rule");
 19.2166 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.2167 +        incRuleLevel();
 19.2168 +        dbg.location(150, 1);
 19.2169 +
 19.2170 +        try {
 19.2171 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:154:2: ( ( DOC_COMMENT )? (modifier= ( 'protected' | 'public' | 'private' | 'fragment' ) )? id ( '!' )? (arg= ARG_ACTION )? ( 'returns' rt= ARG_ACTION )? ( throwsSpec )? ( optionsSpec )? ( ruleScopeSpec )? ( ruleAction )* ':' altList ';' ( exceptionGroup )? -> ^( RULE id ( ^( ARG $arg) )? ( ^( RET $rt) )? ( optionsSpec )? ( ruleScopeSpec )? ( ruleAction )* altList ( exceptionGroup )? EOR[\"EOR\"] ) )
 19.2172 +            dbg.enterAlt(1);
 19.2173 +
 19.2174 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:154:4: ( DOC_COMMENT )? (modifier= ( 'protected' | 'public' | 'private' | 'fragment' ) )? id ( '!' )? (arg= ARG_ACTION )? ( 'returns' rt= ARG_ACTION )? ( throwsSpec )? ( optionsSpec )? ( ruleScopeSpec )? ( ruleAction )* ':' altList ';' ( exceptionGroup )?
 19.2175 +            {
 19.2176 +            dbg.location(154,4);
 19.2177 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:154:4: ( DOC_COMMENT )?
 19.2178 +            int alt15=2;
 19.2179 +            try { dbg.enterSubRule(15);
 19.2180 +            try { dbg.enterDecision(15, decisionCanBacktrack[15]);
 19.2181 +
 19.2182 +            int LA15_0 = input.LA(1);
 19.2183 +
 19.2184 +            if ( (LA15_0==DOC_COMMENT) ) {
 19.2185 +                alt15=1;
 19.2186 +            }
 19.2187 +            } finally {dbg.exitDecision(15);}
 19.2188 +
 19.2189 +            switch (alt15) {
 19.2190 +                case 1 :
 19.2191 +                    dbg.enterAlt(1);
 19.2192 +
 19.2193 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:154:4: DOC_COMMENT
 19.2194 +                    {
 19.2195 +                    dbg.location(154,4);
 19.2196 +                    DOC_COMMENT39=(Token)match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_rule846); if (state.failed) return retval; 
 19.2197 +                    if ( state.backtracking==0 ) stream_DOC_COMMENT.add(DOC_COMMENT39);
 19.2198 +
 19.2199 +
 19.2200 +                    }
 19.2201 +                    break;
 19.2202 +
 19.2203 +            }
 19.2204 +            } finally {dbg.exitSubRule(15);}
 19.2205 +
 19.2206 +            dbg.location(155,3);
 19.2207 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:155:3: (modifier= ( 'protected' | 'public' | 'private' | 'fragment' ) )?
 19.2208 +            int alt17=2;
 19.2209 +            try { dbg.enterSubRule(17);
 19.2210 +            try { dbg.enterDecision(17, decisionCanBacktrack[17]);
 19.2211 +
 19.2212 +            int LA17_0 = input.LA(1);
 19.2213 +
 19.2214 +            if ( (LA17_0==FRAGMENT||(LA17_0>=75 && LA17_0<=77)) ) {
 19.2215 +                alt17=1;
 19.2216 +            }
 19.2217 +            } finally {dbg.exitDecision(17);}
 19.2218 +
 19.2219 +            switch (alt17) {
 19.2220 +                case 1 :
 19.2221 +                    dbg.enterAlt(1);
 19.2222 +
 19.2223 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:155:5: modifier= ( 'protected' | 'public' | 'private' | 'fragment' )
 19.2224 +                    {
 19.2225 +                    dbg.location(155,13);
 19.2226 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:155:14: ( 'protected' | 'public' | 'private' | 'fragment' )
 19.2227 +                    int alt16=4;
 19.2228 +                    try { dbg.enterSubRule(16);
 19.2229 +                    try { dbg.enterDecision(16, decisionCanBacktrack[16]);
 19.2230 +
 19.2231 +                    switch ( input.LA(1) ) {
 19.2232 +                    case 75:
 19.2233 +                        {
 19.2234 +                        alt16=1;
 19.2235 +                        }
 19.2236 +                        break;
 19.2237 +                    case 76:
 19.2238 +                        {
 19.2239 +                        alt16=2;
 19.2240 +                        }
 19.2241 +                        break;
 19.2242 +                    case 77:
 19.2243 +                        {
 19.2244 +                        alt16=3;
 19.2245 +                        }
 19.2246 +                        break;
 19.2247 +                    case FRAGMENT:
 19.2248 +                        {
 19.2249 +                        alt16=4;
 19.2250 +                        }
 19.2251 +                        break;
 19.2252 +                    default:
 19.2253 +                        if (state.backtracking>0) {state.failed=true; return retval;}
 19.2254 +                        NoViableAltException nvae =
 19.2255 +                            new NoViableAltException("", 16, 0, input);
 19.2256 +
 19.2257 +                        dbg.recognitionException(nvae);
 19.2258 +                        throw nvae;
 19.2259 +                    }
 19.2260 +
 19.2261 +                    } finally {dbg.exitDecision(16);}
 19.2262 +
 19.2263 +                    switch (alt16) {
 19.2264 +                        case 1 :
 19.2265 +                            dbg.enterAlt(1);
 19.2266 +
 19.2267 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:155:15: 'protected'
 19.2268 +                            {
 19.2269 +                            dbg.location(155,15);
 19.2270 +                            string_literal40=(Token)match(input,75,FOLLOW_75_in_rule856); if (state.failed) return retval; 
 19.2271 +                            if ( state.backtracking==0 ) stream_75.add(string_literal40);
 19.2272 +
 19.2273 +
 19.2274 +                            }
 19.2275 +                            break;
 19.2276 +                        case 2 :
 19.2277 +                            dbg.enterAlt(2);
 19.2278 +
 19.2279 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:155:27: 'public'
 19.2280 +                            {
 19.2281 +                            dbg.location(155,27);
 19.2282 +                            string_literal41=(Token)match(input,76,FOLLOW_76_in_rule858); if (state.failed) return retval; 
 19.2283 +                            if ( state.backtracking==0 ) stream_76.add(string_literal41);
 19.2284 +
 19.2285 +
 19.2286 +                            }
 19.2287 +                            break;
 19.2288 +                        case 3 :
 19.2289 +                            dbg.enterAlt(3);
 19.2290 +
 19.2291 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:155:36: 'private'
 19.2292 +                            {
 19.2293 +                            dbg.location(155,36);
 19.2294 +                            string_literal42=(Token)match(input,77,FOLLOW_77_in_rule860); if (state.failed) return retval; 
 19.2295 +                            if ( state.backtracking==0 ) stream_77.add(string_literal42);
 19.2296 +
 19.2297 +
 19.2298 +                            }
 19.2299 +                            break;
 19.2300 +                        case 4 :
 19.2301 +                            dbg.enterAlt(4);
 19.2302 +
 19.2303 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:155:46: 'fragment'
 19.2304 +                            {
 19.2305 +                            dbg.location(155,46);
 19.2306 +                            string_literal43=(Token)match(input,FRAGMENT,FOLLOW_FRAGMENT_in_rule862); if (state.failed) return retval; 
 19.2307 +                            if ( state.backtracking==0 ) stream_FRAGMENT.add(string_literal43);
 19.2308 +
 19.2309 +
 19.2310 +                            }
 19.2311 +                            break;
 19.2312 +
 19.2313 +                    }
 19.2314 +                    } finally {dbg.exitSubRule(16);}
 19.2315 +
 19.2316 +
 19.2317 +                    }
 19.2318 +                    break;
 19.2319 +
 19.2320 +            }
 19.2321 +            } finally {dbg.exitSubRule(17);}
 19.2322 +
 19.2323 +            dbg.location(156,3);
 19.2324 +            pushFollow(FOLLOW_id_in_rule870);
 19.2325 +            id44=id();
 19.2326 +
 19.2327 +            state._fsp--;
 19.2328 +            if (state.failed) return retval;
 19.2329 +            if ( state.backtracking==0 ) stream_id.add(id44.getTree());
 19.2330 +            dbg.location(156,6);
 19.2331 +            if ( state.backtracking==0 ) {
 19.2332 +              ((rule_scope)rule_stack.peek()).name = (id44!=null?input.toString(id44.start,id44.stop):null);
 19.2333 +            }
 19.2334 +            dbg.location(157,3);
 19.2335 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:157:3: ( '!' )?
 19.2336 +            int alt18=2;
 19.2337 +            try { dbg.enterSubRule(18);
 19.2338 +            try { dbg.enterDecision(18, decisionCanBacktrack[18]);
 19.2339 +
 19.2340 +            int LA18_0 = input.LA(1);
 19.2341 +
 19.2342 +            if ( (LA18_0==BANG) ) {
 19.2343 +                alt18=1;
 19.2344 +            }
 19.2345 +            } finally {dbg.exitDecision(18);}
 19.2346 +
 19.2347 +            switch (alt18) {
 19.2348 +                case 1 :
 19.2349 +                    dbg.enterAlt(1);
 19.2350 +
 19.2351 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:157:3: '!'
 19.2352 +                    {
 19.2353 +                    dbg.location(157,3);
 19.2354 +                    char_literal45=(Token)match(input,BANG,FOLLOW_BANG_in_rule876); if (state.failed) return retval; 
 19.2355 +                    if ( state.backtracking==0 ) stream_BANG.add(char_literal45);
 19.2356 +
 19.2357 +
 19.2358 +                    }
 19.2359 +                    break;
 19.2360 +
 19.2361 +            }
 19.2362 +            } finally {dbg.exitSubRule(18);}
 19.2363 +
 19.2364 +            dbg.location(158,3);
 19.2365 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:158:3: (arg= ARG_ACTION )?
 19.2366 +            int alt19=2;
 19.2367 +            try { dbg.enterSubRule(19);
 19.2368 +            try { dbg.enterDecision(19, decisionCanBacktrack[19]);
 19.2369 +
 19.2370 +            int LA19_0 = input.LA(1);
 19.2371 +
 19.2372 +            if ( (LA19_0==ARG_ACTION) ) {
 19.2373 +                alt19=1;
 19.2374 +            }
 19.2375 +            } finally {dbg.exitDecision(19);}
 19.2376 +
 19.2377 +            switch (alt19) {
 19.2378 +                case 1 :
 19.2379 +                    dbg.enterAlt(1);
 19.2380 +
 19.2381 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:158:5: arg= ARG_ACTION
 19.2382 +                    {
 19.2383 +                    dbg.location(158,8);
 19.2384 +                    arg=(Token)match(input,ARG_ACTION,FOLLOW_ARG_ACTION_in_rule885); if (state.failed) return retval; 
 19.2385 +                    if ( state.backtracking==0 ) stream_ARG_ACTION.add(arg);
 19.2386 +
 19.2387 +
 19.2388 +                    }
 19.2389 +                    break;
 19.2390 +
 19.2391 +            }
 19.2392 +            } finally {dbg.exitSubRule(19);}
 19.2393 +
 19.2394 +            dbg.location(159,3);
 19.2395 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:159:3: ( 'returns' rt= ARG_ACTION )?
 19.2396 +            int alt20=2;
 19.2397 +            try { dbg.enterSubRule(20);
 19.2398 +            try { dbg.enterDecision(20, decisionCanBacktrack[20]);
 19.2399 +
 19.2400 +            int LA20_0 = input.LA(1);
 19.2401 +
 19.2402 +            if ( (LA20_0==78) ) {
 19.2403 +                alt20=1;
 19.2404 +            }
 19.2405 +            } finally {dbg.exitDecision(20);}
 19.2406 +
 19.2407 +            switch (alt20) {
 19.2408 +                case 1 :
 19.2409 +                    dbg.enterAlt(1);
 19.2410 +
 19.2411 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:159:5: 'returns' rt= ARG_ACTION
 19.2412 +                    {
 19.2413 +                    dbg.location(159,5);
 19.2414 +                    string_literal46=(Token)match(input,78,FOLLOW_78_in_rule894); if (state.failed) return retval; 
 19.2415 +                    if ( state.backtracking==0 ) stream_78.add(string_literal46);
 19.2416 +
 19.2417 +                    dbg.location(159,17);
 19.2418 +                    rt=(Token)match(input,ARG_ACTION,FOLLOW_ARG_ACTION_in_rule898); if (state.failed) return retval; 
 19.2419 +                    if ( state.backtracking==0 ) stream_ARG_ACTION.add(rt);
 19.2420 +
 19.2421 +
 19.2422 +                    }
 19.2423 +                    break;
 19.2424 +
 19.2425 +            }
 19.2426 +            } finally {dbg.exitSubRule(20);}
 19.2427 +
 19.2428 +            dbg.location(160,3);
 19.2429 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:160:3: ( throwsSpec )?
 19.2430 +            int alt21=2;
 19.2431 +            try { dbg.enterSubRule(21);
 19.2432 +            try { dbg.enterDecision(21, decisionCanBacktrack[21]);
 19.2433 +
 19.2434 +            int LA21_0 = input.LA(1);
 19.2435 +
 19.2436 +            if ( (LA21_0==80) ) {
 19.2437 +                alt21=1;
 19.2438 +            }
 19.2439 +            } finally {dbg.exitDecision(21);}
 19.2440 +
 19.2441 +            switch (alt21) {
 19.2442 +                case 1 :
 19.2443 +                    dbg.enterAlt(1);
 19.2444 +
 19.2445 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:160:3: throwsSpec
 19.2446 +                    {
 19.2447 +                    dbg.location(160,3);
 19.2448 +                    pushFollow(FOLLOW_throwsSpec_in_rule906);
 19.2449 +                    throwsSpec47=throwsSpec();
 19.2450 +
 19.2451 +                    state._fsp--;
 19.2452 +                    if (state.failed) return retval;
 19.2453 +                    if ( state.backtracking==0 ) stream_throwsSpec.add(throwsSpec47.getTree());
 19.2454 +
 19.2455 +                    }
 19.2456 +                    break;
 19.2457 +
 19.2458 +            }
 19.2459 +            } finally {dbg.exitSubRule(21);}
 19.2460 +
 19.2461 +            dbg.location(160,15);
 19.2462 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:160:15: ( optionsSpec )?
 19.2463 +            int alt22=2;
 19.2464 +            try { dbg.enterSubRule(22);
 19.2465 +            try { dbg.enterDecision(22, decisionCanBacktrack[22]);
 19.2466 +
 19.2467 +            int LA22_0 = input.LA(1);
 19.2468 +
 19.2469 +            if ( (LA22_0==OPTIONS) ) {
 19.2470 +                alt22=1;
 19.2471 +            }
 19.2472 +            } finally {dbg.exitDecision(22);}
 19.2473 +
 19.2474 +            switch (alt22) {
 19.2475 +                case 1 :
 19.2476 +                    dbg.enterAlt(1);
 19.2477 +
 19.2478 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:160:15: optionsSpec
 19.2479 +                    {
 19.2480 +                    dbg.location(160,15);
 19.2481 +                    pushFollow(FOLLOW_optionsSpec_in_rule909);
 19.2482 +                    optionsSpec48=optionsSpec();
 19.2483 +
 19.2484 +                    state._fsp--;
 19.2485 +                    if (state.failed) return retval;
 19.2486 +                    if ( state.backtracking==0 ) stream_optionsSpec.add(optionsSpec48.getTree());
 19.2487 +
 19.2488 +                    }
 19.2489 +                    break;
 19.2490 +
 19.2491 +            }
 19.2492 +            } finally {dbg.exitSubRule(22);}
 19.2493 +
 19.2494 +            dbg.location(160,28);
 19.2495 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:160:28: ( ruleScopeSpec )?
 19.2496 +            int alt23=2;
 19.2497 +            try { dbg.enterSubRule(23);
 19.2498 +            try { dbg.enterDecision(23, decisionCanBacktrack[23]);
 19.2499 +
 19.2500 +            int LA23_0 = input.LA(1);
 19.2501 +
 19.2502 +            if ( (LA23_0==SCOPE) ) {
 19.2503 +                alt23=1;
 19.2504 +            }
 19.2505 +            } finally {dbg.exitDecision(23);}
 19.2506 +
 19.2507 +            switch (alt23) {
 19.2508 +                case 1 :
 19.2509 +                    dbg.enterAlt(1);
 19.2510 +
 19.2511 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:160:28: ruleScopeSpec
 19.2512 +                    {
 19.2513 +                    dbg.location(160,28);
 19.2514 +                    pushFollow(FOLLOW_ruleScopeSpec_in_rule912);
 19.2515 +                    ruleScopeSpec49=ruleScopeSpec();
 19.2516 +
 19.2517 +                    state._fsp--;
 19.2518 +                    if (state.failed) return retval;
 19.2519 +                    if ( state.backtracking==0 ) stream_ruleScopeSpec.add(ruleScopeSpec49.getTree());
 19.2520 +
 19.2521 +                    }
 19.2522 +                    break;
 19.2523 +
 19.2524 +            }
 19.2525 +            } finally {dbg.exitSubRule(23);}
 19.2526 +
 19.2527 +            dbg.location(160,43);
 19.2528 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:160:43: ( ruleAction )*
 19.2529 +            try { dbg.enterSubRule(24);
 19.2530 +
 19.2531 +            loop24:
 19.2532 +            do {
 19.2533 +                int alt24=2;
 19.2534 +                try { dbg.enterDecision(24, decisionCanBacktrack[24]);
 19.2535 +
 19.2536 +                int LA24_0 = input.LA(1);
 19.2537 +
 19.2538 +                if ( (LA24_0==72) ) {
 19.2539 +                    alt24=1;
 19.2540 +                }
 19.2541 +
 19.2542 +
 19.2543 +                } finally {dbg.exitDecision(24);}
 19.2544 +
 19.2545 +                switch (alt24) {
 19.2546 +            	case 1 :
 19.2547 +            	    dbg.enterAlt(1);
 19.2548 +
 19.2549 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:160:43: ruleAction
 19.2550 +            	    {
 19.2551 +            	    dbg.location(160,43);
 19.2552 +            	    pushFollow(FOLLOW_ruleAction_in_rule915);
 19.2553 +            	    ruleAction50=ruleAction();
 19.2554 +
 19.2555 +            	    state._fsp--;
 19.2556 +            	    if (state.failed) return retval;
 19.2557 +            	    if ( state.backtracking==0 ) stream_ruleAction.add(ruleAction50.getTree());
 19.2558 +
 19.2559 +            	    }
 19.2560 +            	    break;
 19.2561 +
 19.2562 +            	default :
 19.2563 +            	    break loop24;
 19.2564 +                }
 19.2565 +            } while (true);
 19.2566 +            } finally {dbg.exitSubRule(24);}
 19.2567 +
 19.2568 +            dbg.location(161,3);
 19.2569 +            char_literal51=(Token)match(input,79,FOLLOW_79_in_rule920); if (state.failed) return retval; 
 19.2570 +            if ( state.backtracking==0 ) stream_79.add(char_literal51);
 19.2571 +
 19.2572 +            dbg.location(161,7);
 19.2573 +            pushFollow(FOLLOW_altList_in_rule922);
 19.2574 +            altList52=altList();
 19.2575 +
 19.2576 +            state._fsp--;
 19.2577 +            if (state.failed) return retval;
 19.2578 +            if ( state.backtracking==0 ) stream_altList.add(altList52.getTree());
 19.2579 +            dbg.location(161,15);
 19.2580 +            char_literal53=(Token)match(input,69,FOLLOW_69_in_rule924); if (state.failed) return retval; 
 19.2581 +            if ( state.backtracking==0 ) stream_69.add(char_literal53);
 19.2582 +
 19.2583 +            dbg.location(162,3);
 19.2584 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:162:3: ( exceptionGroup )?
 19.2585 +            int alt25=2;
 19.2586 +            try { dbg.enterSubRule(25);
 19.2587 +            try { dbg.enterDecision(25, decisionCanBacktrack[25]);
 19.2588 +
 19.2589 +            int LA25_0 = input.LA(1);
 19.2590 +
 19.2591 +            if ( ((LA25_0>=85 && LA25_0<=86)) ) {
 19.2592 +                alt25=1;
 19.2593 +            }
 19.2594 +            } finally {dbg.exitDecision(25);}
 19.2595 +
 19.2596 +            switch (alt25) {
 19.2597 +                case 1 :
 19.2598 +                    dbg.enterAlt(1);
 19.2599 +
 19.2600 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:162:3: exceptionGroup
 19.2601 +                    {
 19.2602 +                    dbg.location(162,3);
 19.2603 +                    pushFollow(FOLLOW_exceptionGroup_in_rule928);
 19.2604 +                    exceptionGroup54=exceptionGroup();
 19.2605 +
 19.2606 +                    state._fsp--;
 19.2607 +                    if (state.failed) return retval;
 19.2608 +                    if ( state.backtracking==0 ) stream_exceptionGroup.add(exceptionGroup54.getTree());
 19.2609 +
 19.2610 +                    }
 19.2611 +                    break;
 19.2612 +
 19.2613 +            }
 19.2614 +            } finally {dbg.exitSubRule(25);}
 19.2615 +
 19.2616 +
 19.2617 +
 19.2618 +            // AST REWRITE
 19.2619 +            // elements: ruleAction, arg, optionsSpec, ruleScopeSpec, id, altList, exceptionGroup, rt
 19.2620 +            // token labels: arg, rt
 19.2621 +            // rule labels: retval
 19.2622 +            // token list labels: 
 19.2623 +            // rule list labels: 
 19.2624 +            // wildcard labels: 
 19.2625 +            if ( state.backtracking==0 ) {
 19.2626 +            retval.tree = root_0;
 19.2627 +            RewriteRuleTokenStream stream_arg=new RewriteRuleTokenStream(adaptor,"token arg",arg);
 19.2628 +            RewriteRuleTokenStream stream_rt=new RewriteRuleTokenStream(adaptor,"token rt",rt);
 19.2629 +            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.2630 +
 19.2631 +            root_0 = (CommonTree)adaptor.nil();
 19.2632 +            // 163:6: -> ^( RULE id ( ^( ARG $arg) )? ( ^( RET $rt) )? ( optionsSpec )? ( ruleScopeSpec )? ( ruleAction )* altList ( exceptionGroup )? EOR[\"EOR\"] )
 19.2633 +            {
 19.2634 +                dbg.location(163,9);
 19.2635 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:163:9: ^( RULE id ( ^( ARG $arg) )? ( ^( RET $rt) )? ( optionsSpec )? ( ruleScopeSpec )? ( ruleAction )* altList ( exceptionGroup )? EOR[\"EOR\"] )
 19.2636 +                {
 19.2637 +                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.2638 +                dbg.location(163,12);
 19.2639 +                root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(RULE, "RULE"), root_1);
 19.2640 +
 19.2641 +                dbg.location(163,17);
 19.2642 +                adaptor.addChild(root_1, stream_id.nextTree());
 19.2643 +                dbg.location(163,20);
 19.2644 +                adaptor.addChild(root_1, modifier!=null?adaptor.create(modifier):null);
 19.2645 +                dbg.location(163,67);
 19.2646 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:163:67: ( ^( ARG $arg) )?
 19.2647 +                if ( stream_arg.hasNext() ) {
 19.2648 +                    dbg.location(163,67);
 19.2649 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:163:67: ^( ARG $arg)
 19.2650 +                    {
 19.2651 +                    CommonTree root_2 = (CommonTree)adaptor.nil();
 19.2652 +                    dbg.location(163,69);
 19.2653 +                    root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(ARG, "ARG"), root_2);
 19.2654 +
 19.2655 +                    dbg.location(163,73);
 19.2656 +                    adaptor.addChild(root_2, stream_arg.nextNode());
 19.2657 +
 19.2658 +                    adaptor.addChild(root_1, root_2);
 19.2659 +                    }
 19.2660 +
 19.2661 +                }
 19.2662 +                stream_arg.reset();
 19.2663 +                dbg.location(163,80);
 19.2664 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:163:80: ( ^( RET $rt) )?
 19.2665 +                if ( stream_rt.hasNext() ) {
 19.2666 +                    dbg.location(163,80);
 19.2667 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:163:80: ^( RET $rt)
 19.2668 +                    {
 19.2669 +                    CommonTree root_2 = (CommonTree)adaptor.nil();
 19.2670 +                    dbg.location(163,82);
 19.2671 +                    root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(RET, "RET"), root_2);
 19.2672 +
 19.2673 +                    dbg.location(163,86);
 19.2674 +                    adaptor.addChild(root_2, stream_rt.nextNode());
 19.2675 +
 19.2676 +                    adaptor.addChild(root_1, root_2);
 19.2677 +                    }
 19.2678 +
 19.2679 +                }
 19.2680 +                stream_rt.reset();
 19.2681 +                dbg.location(164,9);
 19.2682 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:164:9: ( optionsSpec )?
 19.2683 +                if ( stream_optionsSpec.hasNext() ) {
 19.2684 +                    dbg.location(164,9);
 19.2685 +                    adaptor.addChild(root_1, stream_optionsSpec.nextTree());
 19.2686 +
 19.2687 +                }
 19.2688 +                stream_optionsSpec.reset();
 19.2689 +                dbg.location(164,22);
 19.2690 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:164:22: ( ruleScopeSpec )?
 19.2691 +                if ( stream_ruleScopeSpec.hasNext() ) {
 19.2692 +                    dbg.location(164,22);
 19.2693 +                    adaptor.addChild(root_1, stream_ruleScopeSpec.nextTree());
 19.2694 +
 19.2695 +                }
 19.2696 +                stream_ruleScopeSpec.reset();
 19.2697 +                dbg.location(164,37);
 19.2698 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:164:37: ( ruleAction )*
 19.2699 +                while ( stream_ruleAction.hasNext() ) {
 19.2700 +                    dbg.location(164,37);
 19.2701 +                    adaptor.addChild(root_1, stream_ruleAction.nextTree());
 19.2702 +
 19.2703 +                }
 19.2704 +                stream_ruleAction.reset();
 19.2705 +                dbg.location(165,9);
 19.2706 +                adaptor.addChild(root_1, stream_altList.nextTree());
 19.2707 +                dbg.location(166,9);
 19.2708 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:166:9: ( exceptionGroup )?
 19.2709 +                if ( stream_exceptionGroup.hasNext() ) {
 19.2710 +                    dbg.location(166,9);
 19.2711 +                    adaptor.addChild(root_1, stream_exceptionGroup.nextTree());
 19.2712 +
 19.2713 +                }
 19.2714 +                stream_exceptionGroup.reset();
 19.2715 +                dbg.location(167,9);
 19.2716 +                adaptor.addChild(root_1, (CommonTree)adaptor.create(EOR, "EOR"));
 19.2717 +
 19.2718 +                adaptor.addChild(root_0, root_1);
 19.2719 +                }
 19.2720 +
 19.2721 +            }
 19.2722 +
 19.2723 +            retval.tree = root_0;}
 19.2724 +            }
 19.2725 +
 19.2726 +            retval.stop = input.LT(-1);
 19.2727 +
 19.2728 +            if ( state.backtracking==0 ) {
 19.2729 +
 19.2730 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.2731 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.2732 +            }
 19.2733 +        }
 19.2734 +        catch (RecognitionException re) {
 19.2735 +            reportError(re);
 19.2736 +            recover(input,re);
 19.2737 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.2738 +
 19.2739 +        }
 19.2740 +        finally {
 19.2741 +            rule_stack.pop();
 19.2742 +        }
 19.2743 +        dbg.location(169, 2);
 19.2744 +
 19.2745 +        }
 19.2746 +        finally {
 19.2747 +            dbg.exitRule(getGrammarFileName(), "rule");
 19.2748 +            decRuleLevel();
 19.2749 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.2750 +        }
 19.2751 +
 19.2752 +        return retval;
 19.2753 +    }
 19.2754 +    // $ANTLR end "rule"
 19.2755 +
 19.2756 +    public static class ruleAction_return extends ParserRuleReturnScope {
 19.2757 +        CommonTree tree;
 19.2758 +        public Object getTree() { return tree; }
 19.2759 +    };
 19.2760 +
 19.2761 +    // $ANTLR start "ruleAction"
 19.2762 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:171:1: ruleAction : '@' id ACTION -> ^( '@' id ACTION ) ;
 19.2763 +    public final ANTLRv3Parser.ruleAction_return ruleAction() throws RecognitionException {
 19.2764 +        ANTLRv3Parser.ruleAction_return retval = new ANTLRv3Parser.ruleAction_return();
 19.2765 +        retval.start = input.LT(1);
 19.2766 +
 19.2767 +        CommonTree root_0 = null;
 19.2768 +
 19.2769 +        Token char_literal55=null;
 19.2770 +        Token ACTION57=null;
 19.2771 +        ANTLRv3Parser.id_return id56 = null;
 19.2772 +
 19.2773 +
 19.2774 +        CommonTree char_literal55_tree=null;
 19.2775 +        CommonTree ACTION57_tree=null;
 19.2776 +        RewriteRuleTokenStream stream_72=new RewriteRuleTokenStream(adaptor,"token 72");
 19.2777 +        RewriteRuleTokenStream stream_ACTION=new RewriteRuleTokenStream(adaptor,"token ACTION");
 19.2778 +        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
 19.2779 +        try { dbg.enterRule(getGrammarFileName(), "ruleAction");
 19.2780 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.2781 +        incRuleLevel();
 19.2782 +        dbg.location(171, 1);
 19.2783 +
 19.2784 +        try {
 19.2785 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:173:2: ( '@' id ACTION -> ^( '@' id ACTION ) )
 19.2786 +            dbg.enterAlt(1);
 19.2787 +
 19.2788 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:173:4: '@' id ACTION
 19.2789 +            {
 19.2790 +            dbg.location(173,4);
 19.2791 +            char_literal55=(Token)match(input,72,FOLLOW_72_in_ruleAction1030); if (state.failed) return retval; 
 19.2792 +            if ( state.backtracking==0 ) stream_72.add(char_literal55);
 19.2793 +
 19.2794 +            dbg.location(173,8);
 19.2795 +            pushFollow(FOLLOW_id_in_ruleAction1032);
 19.2796 +            id56=id();
 19.2797 +
 19.2798 +            state._fsp--;
 19.2799 +            if (state.failed) return retval;
 19.2800 +            if ( state.backtracking==0 ) stream_id.add(id56.getTree());
 19.2801 +            dbg.location(173,11);
 19.2802 +            ACTION57=(Token)match(input,ACTION,FOLLOW_ACTION_in_ruleAction1034); if (state.failed) return retval; 
 19.2803 +            if ( state.backtracking==0 ) stream_ACTION.add(ACTION57);
 19.2804 +
 19.2805 +
 19.2806 +
 19.2807 +            // AST REWRITE
 19.2808 +            // elements: id, 72, ACTION
 19.2809 +            // token labels: 
 19.2810 +            // rule labels: retval
 19.2811 +            // token list labels: 
 19.2812 +            // rule list labels: 
 19.2813 +            // wildcard labels: 
 19.2814 +            if ( state.backtracking==0 ) {
 19.2815 +            retval.tree = root_0;
 19.2816 +            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.2817 +
 19.2818 +            root_0 = (CommonTree)adaptor.nil();
 19.2819 +            // 173:18: -> ^( '@' id ACTION )
 19.2820 +            {
 19.2821 +                dbg.location(173,21);
 19.2822 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:173:21: ^( '@' id ACTION )
 19.2823 +                {
 19.2824 +                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.2825 +                dbg.location(173,23);
 19.2826 +                root_1 = (CommonTree)adaptor.becomeRoot(stream_72.nextNode(), root_1);
 19.2827 +
 19.2828 +                dbg.location(173,27);
 19.2829 +                adaptor.addChild(root_1, stream_id.nextTree());
 19.2830 +                dbg.location(173,30);
 19.2831 +                adaptor.addChild(root_1, stream_ACTION.nextNode());
 19.2832 +
 19.2833 +                adaptor.addChild(root_0, root_1);
 19.2834 +                }
 19.2835 +
 19.2836 +            }
 19.2837 +
 19.2838 +            retval.tree = root_0;}
 19.2839 +            }
 19.2840 +
 19.2841 +            retval.stop = input.LT(-1);
 19.2842 +
 19.2843 +            if ( state.backtracking==0 ) {
 19.2844 +
 19.2845 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.2846 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.2847 +            }
 19.2848 +        }
 19.2849 +        catch (RecognitionException re) {
 19.2850 +            reportError(re);
 19.2851 +            recover(input,re);
 19.2852 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.2853 +
 19.2854 +        }
 19.2855 +        finally {
 19.2856 +        }
 19.2857 +        dbg.location(174, 2);
 19.2858 +
 19.2859 +        }
 19.2860 +        finally {
 19.2861 +            dbg.exitRule(getGrammarFileName(), "ruleAction");
 19.2862 +            decRuleLevel();
 19.2863 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.2864 +        }
 19.2865 +
 19.2866 +        return retval;
 19.2867 +    }
 19.2868 +    // $ANTLR end "ruleAction"
 19.2869 +
 19.2870 +    public static class throwsSpec_return extends ParserRuleReturnScope {
 19.2871 +        CommonTree tree;
 19.2872 +        public Object getTree() { return tree; }
 19.2873 +    };
 19.2874 +
 19.2875 +    // $ANTLR start "throwsSpec"
 19.2876 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:176:1: throwsSpec : 'throws' id ( ',' id )* -> ^( 'throws' ( id )+ ) ;
 19.2877 +    public final ANTLRv3Parser.throwsSpec_return throwsSpec() throws RecognitionException {
 19.2878 +        ANTLRv3Parser.throwsSpec_return retval = new ANTLRv3Parser.throwsSpec_return();
 19.2879 +        retval.start = input.LT(1);
 19.2880 +
 19.2881 +        CommonTree root_0 = null;
 19.2882 +
 19.2883 +        Token string_literal58=null;
 19.2884 +        Token char_literal60=null;
 19.2885 +        ANTLRv3Parser.id_return id59 = null;
 19.2886 +
 19.2887 +        ANTLRv3Parser.id_return id61 = null;
 19.2888 +
 19.2889 +
 19.2890 +        CommonTree string_literal58_tree=null;
 19.2891 +        CommonTree char_literal60_tree=null;
 19.2892 +        RewriteRuleTokenStream stream_80=new RewriteRuleTokenStream(adaptor,"token 80");
 19.2893 +        RewriteRuleTokenStream stream_81=new RewriteRuleTokenStream(adaptor,"token 81");
 19.2894 +        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
 19.2895 +        try { dbg.enterRule(getGrammarFileName(), "throwsSpec");
 19.2896 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.2897 +        incRuleLevel();
 19.2898 +        dbg.location(176, 1);
 19.2899 +
 19.2900 +        try {
 19.2901 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:177:2: ( 'throws' id ( ',' id )* -> ^( 'throws' ( id )+ ) )
 19.2902 +            dbg.enterAlt(1);
 19.2903 +
 19.2904 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:177:4: 'throws' id ( ',' id )*
 19.2905 +            {
 19.2906 +            dbg.location(177,4);
 19.2907 +            string_literal58=(Token)match(input,80,FOLLOW_80_in_throwsSpec1055); if (state.failed) return retval; 
 19.2908 +            if ( state.backtracking==0 ) stream_80.add(string_literal58);
 19.2909 +
 19.2910 +            dbg.location(177,13);
 19.2911 +            pushFollow(FOLLOW_id_in_throwsSpec1057);
 19.2912 +            id59=id();
 19.2913 +
 19.2914 +            state._fsp--;
 19.2915 +            if (state.failed) return retval;
 19.2916 +            if ( state.backtracking==0 ) stream_id.add(id59.getTree());
 19.2917 +            dbg.location(177,16);
 19.2918 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:177:16: ( ',' id )*
 19.2919 +            try { dbg.enterSubRule(26);
 19.2920 +
 19.2921 +            loop26:
 19.2922 +            do {
 19.2923 +                int alt26=2;
 19.2924 +                try { dbg.enterDecision(26, decisionCanBacktrack[26]);
 19.2925 +
 19.2926 +                int LA26_0 = input.LA(1);
 19.2927 +
 19.2928 +                if ( (LA26_0==81) ) {
 19.2929 +                    alt26=1;
 19.2930 +                }
 19.2931 +
 19.2932 +
 19.2933 +                } finally {dbg.exitDecision(26);}
 19.2934 +
 19.2935 +                switch (alt26) {
 19.2936 +            	case 1 :
 19.2937 +            	    dbg.enterAlt(1);
 19.2938 +
 19.2939 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:177:18: ',' id
 19.2940 +            	    {
 19.2941 +            	    dbg.location(177,18);
 19.2942 +            	    char_literal60=(Token)match(input,81,FOLLOW_81_in_throwsSpec1061); if (state.failed) return retval; 
 19.2943 +            	    if ( state.backtracking==0 ) stream_81.add(char_literal60);
 19.2944 +
 19.2945 +            	    dbg.location(177,22);
 19.2946 +            	    pushFollow(FOLLOW_id_in_throwsSpec1063);
 19.2947 +            	    id61=id();
 19.2948 +
 19.2949 +            	    state._fsp--;
 19.2950 +            	    if (state.failed) return retval;
 19.2951 +            	    if ( state.backtracking==0 ) stream_id.add(id61.getTree());
 19.2952 +
 19.2953 +            	    }
 19.2954 +            	    break;
 19.2955 +
 19.2956 +            	default :
 19.2957 +            	    break loop26;
 19.2958 +                }
 19.2959 +            } while (true);
 19.2960 +            } finally {dbg.exitSubRule(26);}
 19.2961 +
 19.2962 +
 19.2963 +
 19.2964 +            // AST REWRITE
 19.2965 +            // elements: 80, id
 19.2966 +            // token labels: 
 19.2967 +            // rule labels: retval
 19.2968 +            // token list labels: 
 19.2969 +            // rule list labels: 
 19.2970 +            // wildcard labels: 
 19.2971 +            if ( state.backtracking==0 ) {
 19.2972 +            retval.tree = root_0;
 19.2973 +            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.2974 +
 19.2975 +            root_0 = (CommonTree)adaptor.nil();
 19.2976 +            // 177:28: -> ^( 'throws' ( id )+ )
 19.2977 +            {
 19.2978 +                dbg.location(177,31);
 19.2979 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:177:31: ^( 'throws' ( id )+ )
 19.2980 +                {
 19.2981 +                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.2982 +                dbg.location(177,33);
 19.2983 +                root_1 = (CommonTree)adaptor.becomeRoot(stream_80.nextNode(), root_1);
 19.2984 +
 19.2985 +                dbg.location(177,42);
 19.2986 +                if ( !(stream_id.hasNext()) ) {
 19.2987 +                    throw new RewriteEarlyExitException();
 19.2988 +                }
 19.2989 +                while ( stream_id.hasNext() ) {
 19.2990 +                    dbg.location(177,42);
 19.2991 +                    adaptor.addChild(root_1, stream_id.nextTree());
 19.2992 +
 19.2993 +                }
 19.2994 +                stream_id.reset();
 19.2995 +
 19.2996 +                adaptor.addChild(root_0, root_1);
 19.2997 +                }
 19.2998 +
 19.2999 +            }
 19.3000 +
 19.3001 +            retval.tree = root_0;}
 19.3002 +            }
 19.3003 +
 19.3004 +            retval.stop = input.LT(-1);
 19.3005 +
 19.3006 +            if ( state.backtracking==0 ) {
 19.3007 +
 19.3008 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.3009 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.3010 +            }
 19.3011 +        }
 19.3012 +        catch (RecognitionException re) {
 19.3013 +            reportError(re);
 19.3014 +            recover(input,re);
 19.3015 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.3016 +
 19.3017 +        }
 19.3018 +        finally {
 19.3019 +        }
 19.3020 +        dbg.location(178, 2);
 19.3021 +
 19.3022 +        }
 19.3023 +        finally {
 19.3024 +            dbg.exitRule(getGrammarFileName(), "throwsSpec");
 19.3025 +            decRuleLevel();
 19.3026 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.3027 +        }
 19.3028 +
 19.3029 +        return retval;
 19.3030 +    }
 19.3031 +    // $ANTLR end "throwsSpec"
 19.3032 +
 19.3033 +    public static class ruleScopeSpec_return extends ParserRuleReturnScope {
 19.3034 +        CommonTree tree;
 19.3035 +        public Object getTree() { return tree; }
 19.3036 +    };
 19.3037 +
 19.3038 +    // $ANTLR start "ruleScopeSpec"
 19.3039 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:180:1: ruleScopeSpec : ( 'scope' ACTION -> ^( 'scope' ACTION ) | 'scope' id ( ',' id )* ';' -> ^( 'scope' ( id )+ ) | 'scope' ACTION 'scope' id ( ',' id )* ';' -> ^( 'scope' ACTION ( id )+ ) );
 19.3040 +    public final ANTLRv3Parser.ruleScopeSpec_return ruleScopeSpec() throws RecognitionException {
 19.3041 +        ANTLRv3Parser.ruleScopeSpec_return retval = new ANTLRv3Parser.ruleScopeSpec_return();
 19.3042 +        retval.start = input.LT(1);
 19.3043 +
 19.3044 +        CommonTree root_0 = null;
 19.3045 +
 19.3046 +        Token string_literal62=null;
 19.3047 +        Token ACTION63=null;
 19.3048 +        Token string_literal64=null;
 19.3049 +        Token char_literal66=null;
 19.3050 +        Token char_literal68=null;
 19.3051 +        Token string_literal69=null;
 19.3052 +        Token ACTION70=null;
 19.3053 +        Token string_literal71=null;
 19.3054 +        Token char_literal73=null;
 19.3055 +        Token char_literal75=null;
 19.3056 +        ANTLRv3Parser.id_return id65 = null;
 19.3057 +
 19.3058 +        ANTLRv3Parser.id_return id67 = null;
 19.3059 +
 19.3060 +        ANTLRv3Parser.id_return id72 = null;
 19.3061 +
 19.3062 +        ANTLRv3Parser.id_return id74 = null;
 19.3063 +
 19.3064 +
 19.3065 +        CommonTree string_literal62_tree=null;
 19.3066 +        CommonTree ACTION63_tree=null;
 19.3067 +        CommonTree string_literal64_tree=null;
 19.3068 +        CommonTree char_literal66_tree=null;
 19.3069 +        CommonTree char_literal68_tree=null;
 19.3070 +        CommonTree string_literal69_tree=null;
 19.3071 +        CommonTree ACTION70_tree=null;
 19.3072 +        CommonTree string_literal71_tree=null;
 19.3073 +        CommonTree char_literal73_tree=null;
 19.3074 +        CommonTree char_literal75_tree=null;
 19.3075 +        RewriteRuleTokenStream stream_69=new RewriteRuleTokenStream(adaptor,"token 69");
 19.3076 +        RewriteRuleTokenStream stream_SCOPE=new RewriteRuleTokenStream(adaptor,"token SCOPE");
 19.3077 +        RewriteRuleTokenStream stream_81=new RewriteRuleTokenStream(adaptor,"token 81");
 19.3078 +        RewriteRuleTokenStream stream_ACTION=new RewriteRuleTokenStream(adaptor,"token ACTION");
 19.3079 +        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
 19.3080 +        try { dbg.enterRule(getGrammarFileName(), "ruleScopeSpec");
 19.3081 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.3082 +        incRuleLevel();
 19.3083 +        dbg.location(180, 1);
 19.3084 +
 19.3085 +        try {
 19.3086 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:181:2: ( 'scope' ACTION -> ^( 'scope' ACTION ) | 'scope' id ( ',' id )* ';' -> ^( 'scope' ( id )+ ) | 'scope' ACTION 'scope' id ( ',' id )* ';' -> ^( 'scope' ACTION ( id )+ ) )
 19.3087 +            int alt29=3;
 19.3088 +            try { dbg.enterDecision(29, decisionCanBacktrack[29]);
 19.3089 +
 19.3090 +            int LA29_0 = input.LA(1);
 19.3091 +
 19.3092 +            if ( (LA29_0==SCOPE) ) {
 19.3093 +                int LA29_1 = input.LA(2);
 19.3094 +
 19.3095 +                if ( (LA29_1==ACTION) ) {
 19.3096 +                    int LA29_2 = input.LA(3);
 19.3097 +
 19.3098 +                    if ( (LA29_2==SCOPE) ) {
 19.3099 +                        alt29=3;
 19.3100 +                    }
 19.3101 +                    else if ( (LA29_2==72||LA29_2==79) ) {
 19.3102 +                        alt29=1;
 19.3103 +                    }
 19.3104 +                    else {
 19.3105 +                        if (state.backtracking>0) {state.failed=true; return retval;}
 19.3106 +                        NoViableAltException nvae =
 19.3107 +                            new NoViableAltException("", 29, 2, input);
 19.3108 +
 19.3109 +                        dbg.recognitionException(nvae);
 19.3110 +                        throw nvae;
 19.3111 +                    }
 19.3112 +                }
 19.3113 +                else if ( (LA29_1==TOKEN_REF||LA29_1==RULE_REF) ) {
 19.3114 +                    alt29=2;
 19.3115 +                }
 19.3116 +                else {
 19.3117 +                    if (state.backtracking>0) {state.failed=true; return retval;}
 19.3118 +                    NoViableAltException nvae =
 19.3119 +                        new NoViableAltException("", 29, 1, input);
 19.3120 +
 19.3121 +                    dbg.recognitionException(nvae);
 19.3122 +                    throw nvae;
 19.3123 +                }
 19.3124 +            }
 19.3125 +            else {
 19.3126 +                if (state.backtracking>0) {state.failed=true; return retval;}
 19.3127 +                NoViableAltException nvae =
 19.3128 +                    new NoViableAltException("", 29, 0, input);
 19.3129 +
 19.3130 +                dbg.recognitionException(nvae);
 19.3131 +                throw nvae;
 19.3132 +            }
 19.3133 +            } finally {dbg.exitDecision(29);}
 19.3134 +
 19.3135 +            switch (alt29) {
 19.3136 +                case 1 :
 19.3137 +                    dbg.enterAlt(1);
 19.3138 +
 19.3139 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:181:4: 'scope' ACTION
 19.3140 +                    {
 19.3141 +                    dbg.location(181,4);
 19.3142 +                    string_literal62=(Token)match(input,SCOPE,FOLLOW_SCOPE_in_ruleScopeSpec1086); if (state.failed) return retval; 
 19.3143 +                    if ( state.backtracking==0 ) stream_SCOPE.add(string_literal62);
 19.3144 +
 19.3145 +                    dbg.location(181,12);
 19.3146 +                    ACTION63=(Token)match(input,ACTION,FOLLOW_ACTION_in_ruleScopeSpec1088); if (state.failed) return retval; 
 19.3147 +                    if ( state.backtracking==0 ) stream_ACTION.add(ACTION63);
 19.3148 +
 19.3149 +
 19.3150 +
 19.3151 +                    // AST REWRITE
 19.3152 +                    // elements: SCOPE, ACTION
 19.3153 +                    // token labels: 
 19.3154 +                    // rule labels: retval
 19.3155 +                    // token list labels: 
 19.3156 +                    // rule list labels: 
 19.3157 +                    // wildcard labels: 
 19.3158 +                    if ( state.backtracking==0 ) {
 19.3159 +                    retval.tree = root_0;
 19.3160 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.3161 +
 19.3162 +                    root_0 = (CommonTree)adaptor.nil();
 19.3163 +                    // 181:19: -> ^( 'scope' ACTION )
 19.3164 +                    {
 19.3165 +                        dbg.location(181,22);
 19.3166 +                        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:181:22: ^( 'scope' ACTION )
 19.3167 +                        {
 19.3168 +                        CommonTree root_1 = (CommonTree)adaptor.nil();
 19.3169 +                        dbg.location(181,24);
 19.3170 +                        root_1 = (CommonTree)adaptor.becomeRoot(stream_SCOPE.nextNode(), root_1);
 19.3171 +
 19.3172 +                        dbg.location(181,32);
 19.3173 +                        adaptor.addChild(root_1, stream_ACTION.nextNode());
 19.3174 +
 19.3175 +                        adaptor.addChild(root_0, root_1);
 19.3176 +                        }
 19.3177 +
 19.3178 +                    }
 19.3179 +
 19.3180 +                    retval.tree = root_0;}
 19.3181 +                    }
 19.3182 +                    break;
 19.3183 +                case 2 :
 19.3184 +                    dbg.enterAlt(2);
 19.3185 +
 19.3186 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:182:4: 'scope' id ( ',' id )* ';'
 19.3187 +                    {
 19.3188 +                    dbg.location(182,4);
 19.3189 +                    string_literal64=(Token)match(input,SCOPE,FOLLOW_SCOPE_in_ruleScopeSpec1101); if (state.failed) return retval; 
 19.3190 +                    if ( state.backtracking==0 ) stream_SCOPE.add(string_literal64);
 19.3191 +
 19.3192 +                    dbg.location(182,12);
 19.3193 +                    pushFollow(FOLLOW_id_in_ruleScopeSpec1103);
 19.3194 +                    id65=id();
 19.3195 +
 19.3196 +                    state._fsp--;
 19.3197 +                    if (state.failed) return retval;
 19.3198 +                    if ( state.backtracking==0 ) stream_id.add(id65.getTree());
 19.3199 +                    dbg.location(182,15);
 19.3200 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:182:15: ( ',' id )*
 19.3201 +                    try { dbg.enterSubRule(27);
 19.3202 +
 19.3203 +                    loop27:
 19.3204 +                    do {
 19.3205 +                        int alt27=2;
 19.3206 +                        try { dbg.enterDecision(27, decisionCanBacktrack[27]);
 19.3207 +
 19.3208 +                        int LA27_0 = input.LA(1);
 19.3209 +
 19.3210 +                        if ( (LA27_0==81) ) {
 19.3211 +                            alt27=1;
 19.3212 +                        }
 19.3213 +
 19.3214 +
 19.3215 +                        } finally {dbg.exitDecision(27);}
 19.3216 +
 19.3217 +                        switch (alt27) {
 19.3218 +                    	case 1 :
 19.3219 +                    	    dbg.enterAlt(1);
 19.3220 +
 19.3221 +                    	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:182:16: ',' id
 19.3222 +                    	    {
 19.3223 +                    	    dbg.location(182,16);
 19.3224 +                    	    char_literal66=(Token)match(input,81,FOLLOW_81_in_ruleScopeSpec1106); if (state.failed) return retval; 
 19.3225 +                    	    if ( state.backtracking==0 ) stream_81.add(char_literal66);
 19.3226 +
 19.3227 +                    	    dbg.location(182,20);
 19.3228 +                    	    pushFollow(FOLLOW_id_in_ruleScopeSpec1108);
 19.3229 +                    	    id67=id();
 19.3230 +
 19.3231 +                    	    state._fsp--;
 19.3232 +                    	    if (state.failed) return retval;
 19.3233 +                    	    if ( state.backtracking==0 ) stream_id.add(id67.getTree());
 19.3234 +
 19.3235 +                    	    }
 19.3236 +                    	    break;
 19.3237 +
 19.3238 +                    	default :
 19.3239 +                    	    break loop27;
 19.3240 +                        }
 19.3241 +                    } while (true);
 19.3242 +                    } finally {dbg.exitSubRule(27);}
 19.3243 +
 19.3244 +                    dbg.location(182,25);
 19.3245 +                    char_literal68=(Token)match(input,69,FOLLOW_69_in_ruleScopeSpec1112); if (state.failed) return retval; 
 19.3246 +                    if ( state.backtracking==0 ) stream_69.add(char_literal68);
 19.3247 +
 19.3248 +
 19.3249 +
 19.3250 +                    // AST REWRITE
 19.3251 +                    // elements: SCOPE, id
 19.3252 +                    // token labels: 
 19.3253 +                    // rule labels: retval
 19.3254 +                    // token list labels: 
 19.3255 +                    // rule list labels: 
 19.3256 +                    // wildcard labels: 
 19.3257 +                    if ( state.backtracking==0 ) {
 19.3258 +                    retval.tree = root_0;
 19.3259 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.3260 +
 19.3261 +                    root_0 = (CommonTree)adaptor.nil();
 19.3262 +                    // 182:29: -> ^( 'scope' ( id )+ )
 19.3263 +                    {
 19.3264 +                        dbg.location(182,32);
 19.3265 +                        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:182:32: ^( 'scope' ( id )+ )
 19.3266 +                        {
 19.3267 +                        CommonTree root_1 = (CommonTree)adaptor.nil();
 19.3268 +                        dbg.location(182,34);
 19.3269 +                        root_1 = (CommonTree)adaptor.becomeRoot(stream_SCOPE.nextNode(), root_1);
 19.3270 +
 19.3271 +                        dbg.location(182,42);
 19.3272 +                        if ( !(stream_id.hasNext()) ) {
 19.3273 +                            throw new RewriteEarlyExitException();
 19.3274 +                        }
 19.3275 +                        while ( stream_id.hasNext() ) {
 19.3276 +                            dbg.location(182,42);
 19.3277 +                            adaptor.addChild(root_1, stream_id.nextTree());
 19.3278 +
 19.3279 +                        }
 19.3280 +                        stream_id.reset();
 19.3281 +
 19.3282 +                        adaptor.addChild(root_0, root_1);
 19.3283 +                        }
 19.3284 +
 19.3285 +                    }
 19.3286 +
 19.3287 +                    retval.tree = root_0;}
 19.3288 +                    }
 19.3289 +                    break;
 19.3290 +                case 3 :
 19.3291 +                    dbg.enterAlt(3);
 19.3292 +
 19.3293 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:183:4: 'scope' ACTION 'scope' id ( ',' id )* ';'
 19.3294 +                    {
 19.3295 +                    dbg.location(183,4);
 19.3296 +                    string_literal69=(Token)match(input,SCOPE,FOLLOW_SCOPE_in_ruleScopeSpec1126); if (state.failed) return retval; 
 19.3297 +                    if ( state.backtracking==0 ) stream_SCOPE.add(string_literal69);
 19.3298 +
 19.3299 +                    dbg.location(183,12);
 19.3300 +                    ACTION70=(Token)match(input,ACTION,FOLLOW_ACTION_in_ruleScopeSpec1128); if (state.failed) return retval; 
 19.3301 +                    if ( state.backtracking==0 ) stream_ACTION.add(ACTION70);
 19.3302 +
 19.3303 +                    dbg.location(184,3);
 19.3304 +                    string_literal71=(Token)match(input,SCOPE,FOLLOW_SCOPE_in_ruleScopeSpec1132); if (state.failed) return retval; 
 19.3305 +                    if ( state.backtracking==0 ) stream_SCOPE.add(string_literal71);
 19.3306 +
 19.3307 +                    dbg.location(184,11);
 19.3308 +                    pushFollow(FOLLOW_id_in_ruleScopeSpec1134);
 19.3309 +                    id72=id();
 19.3310 +
 19.3311 +                    state._fsp--;
 19.3312 +                    if (state.failed) return retval;
 19.3313 +                    if ( state.backtracking==0 ) stream_id.add(id72.getTree());
 19.3314 +                    dbg.location(184,14);
 19.3315 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:184:14: ( ',' id )*
 19.3316 +                    try { dbg.enterSubRule(28);
 19.3317 +
 19.3318 +                    loop28:
 19.3319 +                    do {
 19.3320 +                        int alt28=2;
 19.3321 +                        try { dbg.enterDecision(28, decisionCanBacktrack[28]);
 19.3322 +
 19.3323 +                        int LA28_0 = input.LA(1);
 19.3324 +
 19.3325 +                        if ( (LA28_0==81) ) {
 19.3326 +                            alt28=1;
 19.3327 +                        }
 19.3328 +
 19.3329 +
 19.3330 +                        } finally {dbg.exitDecision(28);}
 19.3331 +
 19.3332 +                        switch (alt28) {
 19.3333 +                    	case 1 :
 19.3334 +                    	    dbg.enterAlt(1);
 19.3335 +
 19.3336 +                    	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:184:15: ',' id
 19.3337 +                    	    {
 19.3338 +                    	    dbg.location(184,15);
 19.3339 +                    	    char_literal73=(Token)match(input,81,FOLLOW_81_in_ruleScopeSpec1137); if (state.failed) return retval; 
 19.3340 +                    	    if ( state.backtracking==0 ) stream_81.add(char_literal73);
 19.3341 +
 19.3342 +                    	    dbg.location(184,19);
 19.3343 +                    	    pushFollow(FOLLOW_id_in_ruleScopeSpec1139);
 19.3344 +                    	    id74=id();
 19.3345 +
 19.3346 +                    	    state._fsp--;
 19.3347 +                    	    if (state.failed) return retval;
 19.3348 +                    	    if ( state.backtracking==0 ) stream_id.add(id74.getTree());
 19.3349 +
 19.3350 +                    	    }
 19.3351 +                    	    break;
 19.3352 +
 19.3353 +                    	default :
 19.3354 +                    	    break loop28;
 19.3355 +                        }
 19.3356 +                    } while (true);
 19.3357 +                    } finally {dbg.exitSubRule(28);}
 19.3358 +
 19.3359 +                    dbg.location(184,24);
 19.3360 +                    char_literal75=(Token)match(input,69,FOLLOW_69_in_ruleScopeSpec1143); if (state.failed) return retval; 
 19.3361 +                    if ( state.backtracking==0 ) stream_69.add(char_literal75);
 19.3362 +
 19.3363 +
 19.3364 +
 19.3365 +                    // AST REWRITE
 19.3366 +                    // elements: id, ACTION, SCOPE
 19.3367 +                    // token labels: 
 19.3368 +                    // rule labels: retval
 19.3369 +                    // token list labels: 
 19.3370 +                    // rule list labels: 
 19.3371 +                    // wildcard labels: 
 19.3372 +                    if ( state.backtracking==0 ) {
 19.3373 +                    retval.tree = root_0;
 19.3374 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.3375 +
 19.3376 +                    root_0 = (CommonTree)adaptor.nil();
 19.3377 +                    // 185:3: -> ^( 'scope' ACTION ( id )+ )
 19.3378 +                    {
 19.3379 +                        dbg.location(185,6);
 19.3380 +                        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:185:6: ^( 'scope' ACTION ( id )+ )
 19.3381 +                        {
 19.3382 +                        CommonTree root_1 = (CommonTree)adaptor.nil();
 19.3383 +                        dbg.location(185,8);
 19.3384 +                        root_1 = (CommonTree)adaptor.becomeRoot(stream_SCOPE.nextNode(), root_1);
 19.3385 +
 19.3386 +                        dbg.location(185,16);
 19.3387 +                        adaptor.addChild(root_1, stream_ACTION.nextNode());
 19.3388 +                        dbg.location(185,23);
 19.3389 +                        if ( !(stream_id.hasNext()) ) {
 19.3390 +                            throw new RewriteEarlyExitException();
 19.3391 +                        }
 19.3392 +                        while ( stream_id.hasNext() ) {
 19.3393 +                            dbg.location(185,23);
 19.3394 +                            adaptor.addChild(root_1, stream_id.nextTree());
 19.3395 +
 19.3396 +                        }
 19.3397 +                        stream_id.reset();
 19.3398 +
 19.3399 +                        adaptor.addChild(root_0, root_1);
 19.3400 +                        }
 19.3401 +
 19.3402 +                    }
 19.3403 +
 19.3404 +                    retval.tree = root_0;}
 19.3405 +                    }
 19.3406 +                    break;
 19.3407 +
 19.3408 +            }
 19.3409 +            retval.stop = input.LT(-1);
 19.3410 +
 19.3411 +            if ( state.backtracking==0 ) {
 19.3412 +
 19.3413 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.3414 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.3415 +            }
 19.3416 +        }
 19.3417 +        catch (RecognitionException re) {
 19.3418 +            reportError(re);
 19.3419 +            recover(input,re);
 19.3420 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.3421 +
 19.3422 +        }
 19.3423 +        finally {
 19.3424 +        }
 19.3425 +        dbg.location(186, 2);
 19.3426 +
 19.3427 +        }
 19.3428 +        finally {
 19.3429 +            dbg.exitRule(getGrammarFileName(), "ruleScopeSpec");
 19.3430 +            decRuleLevel();
 19.3431 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.3432 +        }
 19.3433 +
 19.3434 +        return retval;
 19.3435 +    }
 19.3436 +    // $ANTLR end "ruleScopeSpec"
 19.3437 +
 19.3438 +    public static class block_return extends ParserRuleReturnScope {
 19.3439 +        CommonTree tree;
 19.3440 +        public Object getTree() { return tree; }
 19.3441 +    };
 19.3442 +
 19.3443 +    // $ANTLR start "block"
 19.3444 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:188:1: block : lp= '(' ( (opts= optionsSpec )? ':' )? a1= alternative rewrite ( '|' a2= alternative rewrite )* rp= ')' -> ^( BLOCK[$lp,\"BLOCK\"] ( optionsSpec )? ( alternative ( rewrite )? )+ EOB[$rp,\"EOB\"] ) ;
 19.3445 +    public final ANTLRv3Parser.block_return block() throws RecognitionException {
 19.3446 +        ANTLRv3Parser.block_return retval = new ANTLRv3Parser.block_return();
 19.3447 +        retval.start = input.LT(1);
 19.3448 +
 19.3449 +        CommonTree root_0 = null;
 19.3450 +
 19.3451 +        Token lp=null;
 19.3452 +        Token rp=null;
 19.3453 +        Token char_literal76=null;
 19.3454 +        Token char_literal78=null;
 19.3455 +        ANTLRv3Parser.optionsSpec_return opts = null;
 19.3456 +
 19.3457 +        ANTLRv3Parser.alternative_return a1 = null;
 19.3458 +
 19.3459 +        ANTLRv3Parser.alternative_return a2 = null;
 19.3460 +
 19.3461 +        ANTLRv3Parser.rewrite_return rewrite77 = null;
 19.3462 +
 19.3463 +        ANTLRv3Parser.rewrite_return rewrite79 = null;
 19.3464 +
 19.3465 +
 19.3466 +        CommonTree lp_tree=null;
 19.3467 +        CommonTree rp_tree=null;
 19.3468 +        CommonTree char_literal76_tree=null;
 19.3469 +        CommonTree char_literal78_tree=null;
 19.3470 +        RewriteRuleTokenStream stream_79=new RewriteRuleTokenStream(adaptor,"token 79");
 19.3471 +        RewriteRuleTokenStream stream_82=new RewriteRuleTokenStream(adaptor,"token 82");
 19.3472 +        RewriteRuleTokenStream stream_83=new RewriteRuleTokenStream(adaptor,"token 83");
 19.3473 +        RewriteRuleTokenStream stream_84=new RewriteRuleTokenStream(adaptor,"token 84");
 19.3474 +        RewriteRuleSubtreeStream stream_rewrite=new RewriteRuleSubtreeStream(adaptor,"rule rewrite");
 19.3475 +        RewriteRuleSubtreeStream stream_alternative=new RewriteRuleSubtreeStream(adaptor,"rule alternative");
 19.3476 +        RewriteRuleSubtreeStream stream_optionsSpec=new RewriteRuleSubtreeStream(adaptor,"rule optionsSpec");
 19.3477 +        try { dbg.enterRule(getGrammarFileName(), "block");
 19.3478 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.3479 +        incRuleLevel();
 19.3480 +        dbg.location(188, 1);
 19.3481 +
 19.3482 +        try {
 19.3483 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:189:5: (lp= '(' ( (opts= optionsSpec )? ':' )? a1= alternative rewrite ( '|' a2= alternative rewrite )* rp= ')' -> ^( BLOCK[$lp,\"BLOCK\"] ( optionsSpec )? ( alternative ( rewrite )? )+ EOB[$rp,\"EOB\"] ) )
 19.3484 +            dbg.enterAlt(1);
 19.3485 +
 19.3486 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:189:9: lp= '(' ( (opts= optionsSpec )? ':' )? a1= alternative rewrite ( '|' a2= alternative rewrite )* rp= ')'
 19.3487 +            {
 19.3488 +            dbg.location(189,11);
 19.3489 +            lp=(Token)match(input,82,FOLLOW_82_in_block1175); if (state.failed) return retval; 
 19.3490 +            if ( state.backtracking==0 ) stream_82.add(lp);
 19.3491 +
 19.3492 +            dbg.location(190,3);
 19.3493 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:190:3: ( (opts= optionsSpec )? ':' )?
 19.3494 +            int alt31=2;
 19.3495 +            try { dbg.enterSubRule(31);
 19.3496 +            try { dbg.enterDecision(31, decisionCanBacktrack[31]);
 19.3497 +
 19.3498 +            int LA31_0 = input.LA(1);
 19.3499 +
 19.3500 +            if ( (LA31_0==OPTIONS||LA31_0==79) ) {
 19.3501 +                alt31=1;
 19.3502 +            }
 19.3503 +            } finally {dbg.exitDecision(31);}
 19.3504 +
 19.3505 +            switch (alt31) {
 19.3506 +                case 1 :
 19.3507 +                    dbg.enterAlt(1);
 19.3508 +
 19.3509 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:190:5: (opts= optionsSpec )? ':'
 19.3510 +                    {
 19.3511 +                    dbg.location(190,5);
 19.3512 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:190:5: (opts= optionsSpec )?
 19.3513 +                    int alt30=2;
 19.3514 +                    try { dbg.enterSubRule(30);
 19.3515 +                    try { dbg.enterDecision(30, decisionCanBacktrack[30]);
 19.3516 +
 19.3517 +                    int LA30_0 = input.LA(1);
 19.3518 +
 19.3519 +                    if ( (LA30_0==OPTIONS) ) {
 19.3520 +                        alt30=1;
 19.3521 +                    }
 19.3522 +                    } finally {dbg.exitDecision(30);}
 19.3523 +
 19.3524 +                    switch (alt30) {
 19.3525 +                        case 1 :
 19.3526 +                            dbg.enterAlt(1);
 19.3527 +
 19.3528 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:190:6: opts= optionsSpec
 19.3529 +                            {
 19.3530 +                            dbg.location(190,10);
 19.3531 +                            pushFollow(FOLLOW_optionsSpec_in_block1184);
 19.3532 +                            opts=optionsSpec();
 19.3533 +
 19.3534 +                            state._fsp--;
 19.3535 +                            if (state.failed) return retval;
 19.3536 +                            if ( state.backtracking==0 ) stream_optionsSpec.add(opts.getTree());
 19.3537 +
 19.3538 +                            }
 19.3539 +                            break;
 19.3540 +
 19.3541 +                    }
 19.3542 +                    } finally {dbg.exitSubRule(30);}
 19.3543 +
 19.3544 +                    dbg.location(190,25);
 19.3545 +                    char_literal76=(Token)match(input,79,FOLLOW_79_in_block1188); if (state.failed) return retval; 
 19.3546 +                    if ( state.backtracking==0 ) stream_79.add(char_literal76);
 19.3547 +
 19.3548 +
 19.3549 +                    }
 19.3550 +                    break;
 19.3551 +
 19.3552 +            }
 19.3553 +            } finally {dbg.exitSubRule(31);}
 19.3554 +
 19.3555 +            dbg.location(191,5);
 19.3556 +            pushFollow(FOLLOW_alternative_in_block1197);
 19.3557 +            a1=alternative();
 19.3558 +
 19.3559 +            state._fsp--;
 19.3560 +            if (state.failed) return retval;
 19.3561 +            if ( state.backtracking==0 ) stream_alternative.add(a1.getTree());
 19.3562 +            dbg.location(191,18);
 19.3563 +            pushFollow(FOLLOW_rewrite_in_block1199);
 19.3564 +            rewrite77=rewrite();
 19.3565 +
 19.3566 +            state._fsp--;
 19.3567 +            if (state.failed) return retval;
 19.3568 +            if ( state.backtracking==0 ) stream_rewrite.add(rewrite77.getTree());
 19.3569 +            dbg.location(191,26);
 19.3570 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:191:26: ( '|' a2= alternative rewrite )*
 19.3571 +            try { dbg.enterSubRule(32);
 19.3572 +
 19.3573 +            loop32:
 19.3574 +            do {
 19.3575 +                int alt32=2;
 19.3576 +                try { dbg.enterDecision(32, decisionCanBacktrack[32]);
 19.3577 +
 19.3578 +                int LA32_0 = input.LA(1);
 19.3579 +
 19.3580 +                if ( (LA32_0==83) ) {
 19.3581 +                    alt32=1;
 19.3582 +                }
 19.3583 +
 19.3584 +
 19.3585 +                } finally {dbg.exitDecision(32);}
 19.3586 +
 19.3587 +                switch (alt32) {
 19.3588 +            	case 1 :
 19.3589 +            	    dbg.enterAlt(1);
 19.3590 +
 19.3591 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:191:28: '|' a2= alternative rewrite
 19.3592 +            	    {
 19.3593 +            	    dbg.location(191,28);
 19.3594 +            	    char_literal78=(Token)match(input,83,FOLLOW_83_in_block1203); if (state.failed) return retval; 
 19.3595 +            	    if ( state.backtracking==0 ) stream_83.add(char_literal78);
 19.3596 +
 19.3597 +            	    dbg.location(191,34);
 19.3598 +            	    pushFollow(FOLLOW_alternative_in_block1207);
 19.3599 +            	    a2=alternative();
 19.3600 +
 19.3601 +            	    state._fsp--;
 19.3602 +            	    if (state.failed) return retval;
 19.3603 +            	    if ( state.backtracking==0 ) stream_alternative.add(a2.getTree());
 19.3604 +            	    dbg.location(191,47);
 19.3605 +            	    pushFollow(FOLLOW_rewrite_in_block1209);
 19.3606 +            	    rewrite79=rewrite();
 19.3607 +
 19.3608 +            	    state._fsp--;
 19.3609 +            	    if (state.failed) return retval;
 19.3610 +            	    if ( state.backtracking==0 ) stream_rewrite.add(rewrite79.getTree());
 19.3611 +
 19.3612 +            	    }
 19.3613 +            	    break;
 19.3614 +
 19.3615 +            	default :
 19.3616 +            	    break loop32;
 19.3617 +                }
 19.3618 +            } while (true);
 19.3619 +            } finally {dbg.exitSubRule(32);}
 19.3620 +
 19.3621 +            dbg.location(192,11);
 19.3622 +            rp=(Token)match(input,84,FOLLOW_84_in_block1224); if (state.failed) return retval; 
 19.3623 +            if ( state.backtracking==0 ) stream_84.add(rp);
 19.3624 +
 19.3625 +
 19.3626 +
 19.3627 +            // AST REWRITE
 19.3628 +            // elements: rewrite, optionsSpec, alternative
 19.3629 +            // token labels: 
 19.3630 +            // rule labels: retval
 19.3631 +            // token list labels: 
 19.3632 +            // rule list labels: 
 19.3633 +            // wildcard labels: 
 19.3634 +            if ( state.backtracking==0 ) {
 19.3635 +            retval.tree = root_0;
 19.3636 +            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.3637 +
 19.3638 +            root_0 = (CommonTree)adaptor.nil();
 19.3639 +            // 193:9: -> ^( BLOCK[$lp,\"BLOCK\"] ( optionsSpec )? ( alternative ( rewrite )? )+ EOB[$rp,\"EOB\"] )
 19.3640 +            {
 19.3641 +                dbg.location(193,12);
 19.3642 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:193:12: ^( BLOCK[$lp,\"BLOCK\"] ( optionsSpec )? ( alternative ( rewrite )? )+ EOB[$rp,\"EOB\"] )
 19.3643 +                {
 19.3644 +                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.3645 +                dbg.location(193,15);
 19.3646 +                root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(BLOCK, lp, "BLOCK"), root_1);
 19.3647 +
 19.3648 +                dbg.location(193,34);
 19.3649 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:193:34: ( optionsSpec )?
 19.3650 +                if ( stream_optionsSpec.hasNext() ) {
 19.3651 +                    dbg.location(193,34);
 19.3652 +                    adaptor.addChild(root_1, stream_optionsSpec.nextTree());
 19.3653 +
 19.3654 +                }
 19.3655 +                stream_optionsSpec.reset();
 19.3656 +                dbg.location(193,47);
 19.3657 +                if ( !(stream_alternative.hasNext()) ) {
 19.3658 +                    throw new RewriteEarlyExitException();
 19.3659 +                }
 19.3660 +                while ( stream_alternative.hasNext() ) {
 19.3661 +                    dbg.location(193,48);
 19.3662 +                    adaptor.addChild(root_1, stream_alternative.nextTree());
 19.3663 +                    dbg.location(193,60);
 19.3664 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:193:60: ( rewrite )?
 19.3665 +                    if ( stream_rewrite.hasNext() ) {
 19.3666 +                        dbg.location(193,60);
 19.3667 +                        adaptor.addChild(root_1, stream_rewrite.nextTree());
 19.3668 +
 19.3669 +                    }
 19.3670 +                    stream_rewrite.reset();
 19.3671 +
 19.3672 +                }
 19.3673 +                stream_alternative.reset();
 19.3674 +                dbg.location(193,71);
 19.3675 +                adaptor.addChild(root_1, (CommonTree)adaptor.create(EOB, rp, "EOB"));
 19.3676 +
 19.3677 +                adaptor.addChild(root_0, root_1);
 19.3678 +                }
 19.3679 +
 19.3680 +            }
 19.3681 +
 19.3682 +            retval.tree = root_0;}
 19.3683 +            }
 19.3684 +
 19.3685 +            retval.stop = input.LT(-1);
 19.3686 +
 19.3687 +            if ( state.backtracking==0 ) {
 19.3688 +
 19.3689 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.3690 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.3691 +            }
 19.3692 +        }
 19.3693 +        catch (RecognitionException re) {
 19.3694 +            reportError(re);
 19.3695 +            recover(input,re);
 19.3696 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.3697 +
 19.3698 +        }
 19.3699 +        finally {
 19.3700 +        }
 19.3701 +        dbg.location(194, 5);
 19.3702 +
 19.3703 +        }
 19.3704 +        finally {
 19.3705 +            dbg.exitRule(getGrammarFileName(), "block");
 19.3706 +            decRuleLevel();
 19.3707 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.3708 +        }
 19.3709 +
 19.3710 +        return retval;
 19.3711 +    }
 19.3712 +    // $ANTLR end "block"
 19.3713 +
 19.3714 +    public static class altList_return extends ParserRuleReturnScope {
 19.3715 +        CommonTree tree;
 19.3716 +        public Object getTree() { return tree; }
 19.3717 +    };
 19.3718 +
 19.3719 +    // $ANTLR start "altList"
 19.3720 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:196:1: altList : a1= alternative rewrite ( '|' a2= alternative rewrite )* -> ^( ( alternative ( rewrite )? )+ EOB[\"EOB\"] ) ;
 19.3721 +    public final ANTLRv3Parser.altList_return altList() throws RecognitionException {
 19.3722 +        ANTLRv3Parser.altList_return retval = new ANTLRv3Parser.altList_return();
 19.3723 +        retval.start = input.LT(1);
 19.3724 +
 19.3725 +        CommonTree root_0 = null;
 19.3726 +
 19.3727 +        Token char_literal81=null;
 19.3728 +        ANTLRv3Parser.alternative_return a1 = null;
 19.3729 +
 19.3730 +        ANTLRv3Parser.alternative_return a2 = null;
 19.3731 +
 19.3732 +        ANTLRv3Parser.rewrite_return rewrite80 = null;
 19.3733 +
 19.3734 +        ANTLRv3Parser.rewrite_return rewrite82 = null;
 19.3735 +
 19.3736 +
 19.3737 +        CommonTree char_literal81_tree=null;
 19.3738 +        RewriteRuleTokenStream stream_83=new RewriteRuleTokenStream(adaptor,"token 83");
 19.3739 +        RewriteRuleSubtreeStream stream_rewrite=new RewriteRuleSubtreeStream(adaptor,"rule rewrite");
 19.3740 +        RewriteRuleSubtreeStream stream_alternative=new RewriteRuleSubtreeStream(adaptor,"rule alternative");
 19.3741 +
 19.3742 +        	// must create root manually as it's used by invoked rules in real antlr tool.
 19.3743 +        	// leave here to demonstrate use of {...} in rewrite rule
 19.3744 +        	// it's really BLOCK[firstToken,"BLOCK"]; set line/col to previous ( or : token.
 19.3745 +            CommonTree blkRoot = (CommonTree)adaptor.create(BLOCK,input.LT(-1),"BLOCK");
 19.3746 +
 19.3747 +        try { dbg.enterRule(getGrammarFileName(), "altList");
 19.3748 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.3749 +        incRuleLevel();
 19.3750 +        dbg.location(196, 1);
 19.3751 +
 19.3752 +        try {
 19.3753 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:203:5: (a1= alternative rewrite ( '|' a2= alternative rewrite )* -> ^( ( alternative ( rewrite )? )+ EOB[\"EOB\"] ) )
 19.3754 +            dbg.enterAlt(1);
 19.3755 +
 19.3756 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:203:9: a1= alternative rewrite ( '|' a2= alternative rewrite )*
 19.3757 +            {
 19.3758 +            dbg.location(203,11);
 19.3759 +            pushFollow(FOLLOW_alternative_in_altList1281);
 19.3760 +            a1=alternative();
 19.3761 +
 19.3762 +            state._fsp--;
 19.3763 +            if (state.failed) return retval;
 19.3764 +            if ( state.backtracking==0 ) stream_alternative.add(a1.getTree());
 19.3765 +            dbg.location(203,24);
 19.3766 +            pushFollow(FOLLOW_rewrite_in_altList1283);
 19.3767 +            rewrite80=rewrite();
 19.3768 +
 19.3769 +            state._fsp--;
 19.3770 +            if (state.failed) return retval;
 19.3771 +            if ( state.backtracking==0 ) stream_rewrite.add(rewrite80.getTree());
 19.3772 +            dbg.location(203,32);
 19.3773 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:203:32: ( '|' a2= alternative rewrite )*
 19.3774 +            try { dbg.enterSubRule(33);
 19.3775 +
 19.3776 +            loop33:
 19.3777 +            do {
 19.3778 +                int alt33=2;
 19.3779 +                try { dbg.enterDecision(33, decisionCanBacktrack[33]);
 19.3780 +
 19.3781 +                int LA33_0 = input.LA(1);
 19.3782 +
 19.3783 +                if ( (LA33_0==83) ) {
 19.3784 +                    alt33=1;
 19.3785 +                }
 19.3786 +
 19.3787 +
 19.3788 +                } finally {dbg.exitDecision(33);}
 19.3789 +
 19.3790 +                switch (alt33) {
 19.3791 +            	case 1 :
 19.3792 +            	    dbg.enterAlt(1);
 19.3793 +
 19.3794 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:203:34: '|' a2= alternative rewrite
 19.3795 +            	    {
 19.3796 +            	    dbg.location(203,34);
 19.3797 +            	    char_literal81=(Token)match(input,83,FOLLOW_83_in_altList1287); if (state.failed) return retval; 
 19.3798 +            	    if ( state.backtracking==0 ) stream_83.add(char_literal81);
 19.3799 +
 19.3800 +            	    dbg.location(203,40);
 19.3801 +            	    pushFollow(FOLLOW_alternative_in_altList1291);
 19.3802 +            	    a2=alternative();
 19.3803 +
 19.3804 +            	    state._fsp--;
 19.3805 +            	    if (state.failed) return retval;
 19.3806 +            	    if ( state.backtracking==0 ) stream_alternative.add(a2.getTree());
 19.3807 +            	    dbg.location(203,53);
 19.3808 +            	    pushFollow(FOLLOW_rewrite_in_altList1293);
 19.3809 +            	    rewrite82=rewrite();
 19.3810 +
 19.3811 +            	    state._fsp--;
 19.3812 +            	    if (state.failed) return retval;
 19.3813 +            	    if ( state.backtracking==0 ) stream_rewrite.add(rewrite82.getTree());
 19.3814 +
 19.3815 +            	    }
 19.3816 +            	    break;
 19.3817 +
 19.3818 +            	default :
 19.3819 +            	    break loop33;
 19.3820 +                }
 19.3821 +            } while (true);
 19.3822 +            } finally {dbg.exitSubRule(33);}
 19.3823 +
 19.3824 +
 19.3825 +
 19.3826 +            // AST REWRITE
 19.3827 +            // elements: rewrite, alternative
 19.3828 +            // token labels: 
 19.3829 +            // rule labels: retval
 19.3830 +            // token list labels: 
 19.3831 +            // rule list labels: 
 19.3832 +            // wildcard labels: 
 19.3833 +            if ( state.backtracking==0 ) {
 19.3834 +            retval.tree = root_0;
 19.3835 +            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.3836 +
 19.3837 +            root_0 = (CommonTree)adaptor.nil();
 19.3838 +            // 204:3: -> ^( ( alternative ( rewrite )? )+ EOB[\"EOB\"] )
 19.3839 +            {
 19.3840 +                dbg.location(204,6);
 19.3841 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:204:6: ^( ( alternative ( rewrite )? )+ EOB[\"EOB\"] )
 19.3842 +                {
 19.3843 +                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.3844 +                dbg.location(204,9);
 19.3845 +                root_1 = (CommonTree)adaptor.becomeRoot(blkRoot, root_1);
 19.3846 +
 19.3847 +                dbg.location(204,19);
 19.3848 +                if ( !(stream_alternative.hasNext()) ) {
 19.3849 +                    throw new RewriteEarlyExitException();
 19.3850 +                }
 19.3851 +                while ( stream_alternative.hasNext() ) {
 19.3852 +                    dbg.location(204,20);
 19.3853 +                    adaptor.addChild(root_1, stream_alternative.nextTree());
 19.3854 +                    dbg.location(204,32);
 19.3855 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:204:32: ( rewrite )?
 19.3856 +                    if ( stream_rewrite.hasNext() ) {
 19.3857 +                        dbg.location(204,32);
 19.3858 +                        adaptor.addChild(root_1, stream_rewrite.nextTree());
 19.3859 +
 19.3860 +                    }
 19.3861 +                    stream_rewrite.reset();
 19.3862 +
 19.3863 +                }
 19.3864 +                stream_alternative.reset();
 19.3865 +                dbg.location(204,43);
 19.3866 +                adaptor.addChild(root_1, (CommonTree)adaptor.create(EOB, "EOB"));
 19.3867 +
 19.3868 +                adaptor.addChild(root_0, root_1);
 19.3869 +                }
 19.3870 +
 19.3871 +            }
 19.3872 +
 19.3873 +            retval.tree = root_0;}
 19.3874 +            }
 19.3875 +
 19.3876 +            retval.stop = input.LT(-1);
 19.3877 +
 19.3878 +            if ( state.backtracking==0 ) {
 19.3879 +
 19.3880 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.3881 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.3882 +            }
 19.3883 +        }
 19.3884 +        catch (RecognitionException re) {
 19.3885 +            reportError(re);
 19.3886 +            recover(input,re);
 19.3887 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.3888 +
 19.3889 +        }
 19.3890 +        finally {
 19.3891 +        }
 19.3892 +        dbg.location(205, 5);
 19.3893 +
 19.3894 +        }
 19.3895 +        finally {
 19.3896 +            dbg.exitRule(getGrammarFileName(), "altList");
 19.3897 +            decRuleLevel();
 19.3898 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.3899 +        }
 19.3900 +
 19.3901 +        return retval;
 19.3902 +    }
 19.3903 +    // $ANTLR end "altList"
 19.3904 +
 19.3905 +    public static class alternative_return extends ParserRuleReturnScope {
 19.3906 +        CommonTree tree;
 19.3907 +        public Object getTree() { return tree; }
 19.3908 +    };
 19.3909 +
 19.3910 +    // $ANTLR start "alternative"
 19.3911 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:207:1: alternative : ( ( element )+ -> ^( ALT[firstToken,\"ALT\"] ( element )+ EOA[\"EOA\"] ) | -> ^( ALT[prevToken,\"ALT\"] EPSILON[prevToken,\"EPSILON\"] EOA[\"EOA\"] ) );
 19.3912 +    public final ANTLRv3Parser.alternative_return alternative() throws RecognitionException {
 19.3913 +        ANTLRv3Parser.alternative_return retval = new ANTLRv3Parser.alternative_return();
 19.3914 +        retval.start = input.LT(1);
 19.3915 +
 19.3916 +        CommonTree root_0 = null;
 19.3917 +
 19.3918 +        ANTLRv3Parser.element_return element83 = null;
 19.3919 +
 19.3920 +
 19.3921 +        RewriteRuleSubtreeStream stream_element=new RewriteRuleSubtreeStream(adaptor,"rule element");
 19.3922 +
 19.3923 +        	Token firstToken = input.LT(1);
 19.3924 +        	Token prevToken = input.LT(-1); // either : or | I think
 19.3925 +
 19.3926 +        try { dbg.enterRule(getGrammarFileName(), "alternative");
 19.3927 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.3928 +        incRuleLevel();
 19.3929 +        dbg.location(207, 1);
 19.3930 +
 19.3931 +        try {
 19.3932 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:212:5: ( ( element )+ -> ^( ALT[firstToken,\"ALT\"] ( element )+ EOA[\"EOA\"] ) | -> ^( ALT[prevToken,\"ALT\"] EPSILON[prevToken,\"EPSILON\"] EOA[\"EOA\"] ) )
 19.3933 +            int alt35=2;
 19.3934 +            try { dbg.enterDecision(35, decisionCanBacktrack[35]);
 19.3935 +
 19.3936 +            int LA35_0 = input.LA(1);
 19.3937 +
 19.3938 +            if ( (LA35_0==SEMPRED||LA35_0==TREE_BEGIN||(LA35_0>=TOKEN_REF && LA35_0<=ACTION)||LA35_0==RULE_REF||LA35_0==82||LA35_0==89||LA35_0==92) ) {
 19.3939 +                alt35=1;
 19.3940 +            }
 19.3941 +            else if ( (LA35_0==REWRITE||LA35_0==69||(LA35_0>=83 && LA35_0<=84)) ) {
 19.3942 +                alt35=2;
 19.3943 +            }
 19.3944 +            else {
 19.3945 +                if (state.backtracking>0) {state.failed=true; return retval;}
 19.3946 +                NoViableAltException nvae =
 19.3947 +                    new NoViableAltException("", 35, 0, input);
 19.3948 +
 19.3949 +                dbg.recognitionException(nvae);
 19.3950 +                throw nvae;
 19.3951 +            }
 19.3952 +            } finally {dbg.exitDecision(35);}
 19.3953 +
 19.3954 +            switch (alt35) {
 19.3955 +                case 1 :
 19.3956 +                    dbg.enterAlt(1);
 19.3957 +
 19.3958 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:212:9: ( element )+
 19.3959 +                    {
 19.3960 +                    dbg.location(212,9);
 19.3961 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:212:9: ( element )+
 19.3962 +                    int cnt34=0;
 19.3963 +                    try { dbg.enterSubRule(34);
 19.3964 +
 19.3965 +                    loop34:
 19.3966 +                    do {
 19.3967 +                        int alt34=2;
 19.3968 +                        try { dbg.enterDecision(34, decisionCanBacktrack[34]);
 19.3969 +
 19.3970 +                        int LA34_0 = input.LA(1);
 19.3971 +
 19.3972 +                        if ( (LA34_0==SEMPRED||LA34_0==TREE_BEGIN||(LA34_0>=TOKEN_REF && LA34_0<=ACTION)||LA34_0==RULE_REF||LA34_0==82||LA34_0==89||LA34_0==92) ) {
 19.3973 +                            alt34=1;
 19.3974 +                        }
 19.3975 +
 19.3976 +
 19.3977 +                        } finally {dbg.exitDecision(34);}
 19.3978 +
 19.3979 +                        switch (alt34) {
 19.3980 +                    	case 1 :
 19.3981 +                    	    dbg.enterAlt(1);
 19.3982 +
 19.3983 +                    	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:212:9: element
 19.3984 +                    	    {
 19.3985 +                    	    dbg.location(212,9);
 19.3986 +                    	    pushFollow(FOLLOW_element_in_alternative1341);
 19.3987 +                    	    element83=element();
 19.3988 +
 19.3989 +                    	    state._fsp--;
 19.3990 +                    	    if (state.failed) return retval;
 19.3991 +                    	    if ( state.backtracking==0 ) stream_element.add(element83.getTree());
 19.3992 +
 19.3993 +                    	    }
 19.3994 +                    	    break;
 19.3995 +
 19.3996 +                    	default :
 19.3997 +                    	    if ( cnt34 >= 1 ) break loop34;
 19.3998 +                    	    if (state.backtracking>0) {state.failed=true; return retval;}
 19.3999 +                                EarlyExitException eee =
 19.4000 +                                    new EarlyExitException(34, input);
 19.4001 +                                dbg.recognitionException(eee);
 19.4002 +
 19.4003 +                                throw eee;
 19.4004 +                        }
 19.4005 +                        cnt34++;
 19.4006 +                    } while (true);
 19.4007 +                    } finally {dbg.exitSubRule(34);}
 19.4008 +
 19.4009 +
 19.4010 +
 19.4011 +                    // AST REWRITE
 19.4012 +                    // elements: element
 19.4013 +                    // token labels: 
 19.4014 +                    // rule labels: retval
 19.4015 +                    // token list labels: 
 19.4016 +                    // rule list labels: 
 19.4017 +                    // wildcard labels: 
 19.4018 +                    if ( state.backtracking==0 ) {
 19.4019 +                    retval.tree = root_0;
 19.4020 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.4021 +
 19.4022 +                    root_0 = (CommonTree)adaptor.nil();
 19.4023 +                    // 212:18: -> ^( ALT[firstToken,\"ALT\"] ( element )+ EOA[\"EOA\"] )
 19.4024 +                    {
 19.4025 +                        dbg.location(212,21);
 19.4026 +                        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:212:21: ^( ALT[firstToken,\"ALT\"] ( element )+ EOA[\"EOA\"] )
 19.4027 +                        {
 19.4028 +                        CommonTree root_1 = (CommonTree)adaptor.nil();
 19.4029 +                        dbg.location(212,23);
 19.4030 +                        root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(ALT, firstToken, "ALT"), root_1);
 19.4031 +
 19.4032 +                        dbg.location(212,45);
 19.4033 +                        if ( !(stream_element.hasNext()) ) {
 19.4034 +                            throw new RewriteEarlyExitException();
 19.4035 +                        }
 19.4036 +                        while ( stream_element.hasNext() ) {
 19.4037 +                            dbg.location(212,45);
 19.4038 +                            adaptor.addChild(root_1, stream_element.nextTree());
 19.4039 +
 19.4040 +                        }
 19.4041 +                        stream_element.reset();
 19.4042 +                        dbg.location(212,54);
 19.4043 +                        adaptor.addChild(root_1, (CommonTree)adaptor.create(EOA, "EOA"));
 19.4044 +
 19.4045 +                        adaptor.addChild(root_0, root_1);
 19.4046 +                        }
 19.4047 +
 19.4048 +                    }
 19.4049 +
 19.4050 +                    retval.tree = root_0;}
 19.4051 +                    }
 19.4052 +                    break;
 19.4053 +                case 2 :
 19.4054 +                    dbg.enterAlt(2);
 19.4055 +
 19.4056 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:213:9: 
 19.4057 +                    {
 19.4058 +
 19.4059 +                    // AST REWRITE
 19.4060 +                    // elements: 
 19.4061 +                    // token labels: 
 19.4062 +                    // rule labels: retval
 19.4063 +                    // token list labels: 
 19.4064 +                    // rule list labels: 
 19.4065 +                    // wildcard labels: 
 19.4066 +                    if ( state.backtracking==0 ) {
 19.4067 +                    retval.tree = root_0;
 19.4068 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.4069 +
 19.4070 +                    root_0 = (CommonTree)adaptor.nil();
 19.4071 +                    // 213:9: -> ^( ALT[prevToken,\"ALT\"] EPSILON[prevToken,\"EPSILON\"] EOA[\"EOA\"] )
 19.4072 +                    {
 19.4073 +                        dbg.location(213,12);
 19.4074 +                        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:213:12: ^( ALT[prevToken,\"ALT\"] EPSILON[prevToken,\"EPSILON\"] EOA[\"EOA\"] )
 19.4075 +                        {
 19.4076 +                        CommonTree root_1 = (CommonTree)adaptor.nil();
 19.4077 +                        dbg.location(213,14);
 19.4078 +                        root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(ALT, prevToken, "ALT"), root_1);
 19.4079 +
 19.4080 +                        dbg.location(213,35);
 19.4081 +                        adaptor.addChild(root_1, (CommonTree)adaptor.create(EPSILON, prevToken, "EPSILON"));
 19.4082 +                        dbg.location(213,64);
 19.4083 +                        adaptor.addChild(root_1, (CommonTree)adaptor.create(EOA, "EOA"));
 19.4084 +
 19.4085 +                        adaptor.addChild(root_0, root_1);
 19.4086 +                        }
 19.4087 +
 19.4088 +                    }
 19.4089 +
 19.4090 +                    retval.tree = root_0;}
 19.4091 +                    }
 19.4092 +                    break;
 19.4093 +
 19.4094 +            }
 19.4095 +            retval.stop = input.LT(-1);
 19.4096 +
 19.4097 +            if ( state.backtracking==0 ) {
 19.4098 +
 19.4099 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.4100 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.4101 +            }
 19.4102 +        }
 19.4103 +        catch (RecognitionException re) {
 19.4104 +            reportError(re);
 19.4105 +            recover(input,re);
 19.4106 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.4107 +
 19.4108 +        }
 19.4109 +        finally {
 19.4110 +        }
 19.4111 +        dbg.location(214, 5);
 19.4112 +
 19.4113 +        }
 19.4114 +        finally {
 19.4115 +            dbg.exitRule(getGrammarFileName(), "alternative");
 19.4116 +            decRuleLevel();
 19.4117 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.4118 +        }
 19.4119 +
 19.4120 +        return retval;
 19.4121 +    }
 19.4122 +    // $ANTLR end "alternative"
 19.4123 +
 19.4124 +    public static class exceptionGroup_return extends ParserRuleReturnScope {
 19.4125 +        CommonTree tree;
 19.4126 +        public Object getTree() { return tree; }
 19.4127 +    };
 19.4128 +
 19.4129 +    // $ANTLR start "exceptionGroup"
 19.4130 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:216:1: exceptionGroup : ( ( exceptionHandler )+ ( finallyClause )? | finallyClause );
 19.4131 +    public final ANTLRv3Parser.exceptionGroup_return exceptionGroup() throws RecognitionException {
 19.4132 +        ANTLRv3Parser.exceptionGroup_return retval = new ANTLRv3Parser.exceptionGroup_return();
 19.4133 +        retval.start = input.LT(1);
 19.4134 +
 19.4135 +        CommonTree root_0 = null;
 19.4136 +
 19.4137 +        ANTLRv3Parser.exceptionHandler_return exceptionHandler84 = null;
 19.4138 +
 19.4139 +        ANTLRv3Parser.finallyClause_return finallyClause85 = null;
 19.4140 +
 19.4141 +        ANTLRv3Parser.finallyClause_return finallyClause86 = null;
 19.4142 +
 19.4143 +
 19.4144 +
 19.4145 +        try { dbg.enterRule(getGrammarFileName(), "exceptionGroup");
 19.4146 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.4147 +        incRuleLevel();
 19.4148 +        dbg.location(216, 1);
 19.4149 +
 19.4150 +        try {
 19.4151 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:217:2: ( ( exceptionHandler )+ ( finallyClause )? | finallyClause )
 19.4152 +            int alt38=2;
 19.4153 +            try { dbg.enterDecision(38, decisionCanBacktrack[38]);
 19.4154 +
 19.4155 +            int LA38_0 = input.LA(1);
 19.4156 +
 19.4157 +            if ( (LA38_0==85) ) {
 19.4158 +                alt38=1;
 19.4159 +            }
 19.4160 +            else if ( (LA38_0==86) ) {
 19.4161 +                alt38=2;
 19.4162 +            }
 19.4163 +            else {
 19.4164 +                if (state.backtracking>0) {state.failed=true; return retval;}
 19.4165 +                NoViableAltException nvae =
 19.4166 +                    new NoViableAltException("", 38, 0, input);
 19.4167 +
 19.4168 +                dbg.recognitionException(nvae);
 19.4169 +                throw nvae;
 19.4170 +            }
 19.4171 +            } finally {dbg.exitDecision(38);}
 19.4172 +
 19.4173 +            switch (alt38) {
 19.4174 +                case 1 :
 19.4175 +                    dbg.enterAlt(1);
 19.4176 +
 19.4177 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:217:4: ( exceptionHandler )+ ( finallyClause )?
 19.4178 +                    {
 19.4179 +                    root_0 = (CommonTree)adaptor.nil();
 19.4180 +
 19.4181 +                    dbg.location(217,4);
 19.4182 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:217:4: ( exceptionHandler )+
 19.4183 +                    int cnt36=0;
 19.4184 +                    try { dbg.enterSubRule(36);
 19.4185 +
 19.4186 +                    loop36:
 19.4187 +                    do {
 19.4188 +                        int alt36=2;
 19.4189 +                        try { dbg.enterDecision(36, decisionCanBacktrack[36]);
 19.4190 +
 19.4191 +                        int LA36_0 = input.LA(1);
 19.4192 +
 19.4193 +                        if ( (LA36_0==85) ) {
 19.4194 +                            alt36=1;
 19.4195 +                        }
 19.4196 +
 19.4197 +
 19.4198 +                        } finally {dbg.exitDecision(36);}
 19.4199 +
 19.4200 +                        switch (alt36) {
 19.4201 +                    	case 1 :
 19.4202 +                    	    dbg.enterAlt(1);
 19.4203 +
 19.4204 +                    	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:217:6: exceptionHandler
 19.4205 +                    	    {
 19.4206 +                    	    dbg.location(217,6);
 19.4207 +                    	    pushFollow(FOLLOW_exceptionHandler_in_exceptionGroup1392);
 19.4208 +                    	    exceptionHandler84=exceptionHandler();
 19.4209 +
 19.4210 +                    	    state._fsp--;
 19.4211 +                    	    if (state.failed) return retval;
 19.4212 +                    	    if ( state.backtracking==0 ) adaptor.addChild(root_0, exceptionHandler84.getTree());
 19.4213 +
 19.4214 +                    	    }
 19.4215 +                    	    break;
 19.4216 +
 19.4217 +                    	default :
 19.4218 +                    	    if ( cnt36 >= 1 ) break loop36;
 19.4219 +                    	    if (state.backtracking>0) {state.failed=true; return retval;}
 19.4220 +                                EarlyExitException eee =
 19.4221 +                                    new EarlyExitException(36, input);
 19.4222 +                                dbg.recognitionException(eee);
 19.4223 +
 19.4224 +                                throw eee;
 19.4225 +                        }
 19.4226 +                        cnt36++;
 19.4227 +                    } while (true);
 19.4228 +                    } finally {dbg.exitSubRule(36);}
 19.4229 +
 19.4230 +                    dbg.location(217,26);
 19.4231 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:217:26: ( finallyClause )?
 19.4232 +                    int alt37=2;
 19.4233 +                    try { dbg.enterSubRule(37);
 19.4234 +                    try { dbg.enterDecision(37, decisionCanBacktrack[37]);
 19.4235 +
 19.4236 +                    int LA37_0 = input.LA(1);
 19.4237 +
 19.4238 +                    if ( (LA37_0==86) ) {
 19.4239 +                        alt37=1;
 19.4240 +                    }
 19.4241 +                    } finally {dbg.exitDecision(37);}
 19.4242 +
 19.4243 +                    switch (alt37) {
 19.4244 +                        case 1 :
 19.4245 +                            dbg.enterAlt(1);
 19.4246 +
 19.4247 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:217:28: finallyClause
 19.4248 +                            {
 19.4249 +                            dbg.location(217,28);
 19.4250 +                            pushFollow(FOLLOW_finallyClause_in_exceptionGroup1399);
 19.4251 +                            finallyClause85=finallyClause();
 19.4252 +
 19.4253 +                            state._fsp--;
 19.4254 +                            if (state.failed) return retval;
 19.4255 +                            if ( state.backtracking==0 ) adaptor.addChild(root_0, finallyClause85.getTree());
 19.4256 +
 19.4257 +                            }
 19.4258 +                            break;
 19.4259 +
 19.4260 +                    }
 19.4261 +                    } finally {dbg.exitSubRule(37);}
 19.4262 +
 19.4263 +
 19.4264 +                    }
 19.4265 +                    break;
 19.4266 +                case 2 :
 19.4267 +                    dbg.enterAlt(2);
 19.4268 +
 19.4269 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:218:4: finallyClause
 19.4270 +                    {
 19.4271 +                    root_0 = (CommonTree)adaptor.nil();
 19.4272 +
 19.4273 +                    dbg.location(218,4);
 19.4274 +                    pushFollow(FOLLOW_finallyClause_in_exceptionGroup1407);
 19.4275 +                    finallyClause86=finallyClause();
 19.4276 +
 19.4277 +                    state._fsp--;
 19.4278 +                    if (state.failed) return retval;
 19.4279 +                    if ( state.backtracking==0 ) adaptor.addChild(root_0, finallyClause86.getTree());
 19.4280 +
 19.4281 +                    }
 19.4282 +                    break;
 19.4283 +
 19.4284 +            }
 19.4285 +            retval.stop = input.LT(-1);
 19.4286 +
 19.4287 +            if ( state.backtracking==0 ) {
 19.4288 +
 19.4289 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.4290 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.4291 +            }
 19.4292 +        }
 19.4293 +        catch (RecognitionException re) {
 19.4294 +            reportError(re);
 19.4295 +            recover(input,re);
 19.4296 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.4297 +
 19.4298 +        }
 19.4299 +        finally {
 19.4300 +        }
 19.4301 +        dbg.location(219, 5);
 19.4302 +
 19.4303 +        }
 19.4304 +        finally {
 19.4305 +            dbg.exitRule(getGrammarFileName(), "exceptionGroup");
 19.4306 +            decRuleLevel();
 19.4307 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.4308 +        }
 19.4309 +
 19.4310 +        return retval;
 19.4311 +    }
 19.4312 +    // $ANTLR end "exceptionGroup"
 19.4313 +
 19.4314 +    public static class exceptionHandler_return extends ParserRuleReturnScope {
 19.4315 +        CommonTree tree;
 19.4316 +        public Object getTree() { return tree; }
 19.4317 +    };
 19.4318 +
 19.4319 +    // $ANTLR start "exceptionHandler"
 19.4320 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:221:1: exceptionHandler : 'catch' ARG_ACTION ACTION -> ^( 'catch' ARG_ACTION ACTION ) ;
 19.4321 +    public final ANTLRv3Parser.exceptionHandler_return exceptionHandler() throws RecognitionException {
 19.4322 +        ANTLRv3Parser.exceptionHandler_return retval = new ANTLRv3Parser.exceptionHandler_return();
 19.4323 +        retval.start = input.LT(1);
 19.4324 +
 19.4325 +        CommonTree root_0 = null;
 19.4326 +
 19.4327 +        Token string_literal87=null;
 19.4328 +        Token ARG_ACTION88=null;
 19.4329 +        Token ACTION89=null;
 19.4330 +
 19.4331 +        CommonTree string_literal87_tree=null;
 19.4332 +        CommonTree ARG_ACTION88_tree=null;
 19.4333 +        CommonTree ACTION89_tree=null;
 19.4334 +        RewriteRuleTokenStream stream_ACTION=new RewriteRuleTokenStream(adaptor,"token ACTION");
 19.4335 +        RewriteRuleTokenStream stream_ARG_ACTION=new RewriteRuleTokenStream(adaptor,"token ARG_ACTION");
 19.4336 +        RewriteRuleTokenStream stream_85=new RewriteRuleTokenStream(adaptor,"token 85");
 19.4337 +
 19.4338 +        try { dbg.enterRule(getGrammarFileName(), "exceptionHandler");
 19.4339 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.4340 +        incRuleLevel();
 19.4341 +        dbg.location(221, 1);
 19.4342 +
 19.4343 +        try {
 19.4344 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:222:5: ( 'catch' ARG_ACTION ACTION -> ^( 'catch' ARG_ACTION ACTION ) )
 19.4345 +            dbg.enterAlt(1);
 19.4346 +
 19.4347 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:222:10: 'catch' ARG_ACTION ACTION
 19.4348 +            {
 19.4349 +            dbg.location(222,10);
 19.4350 +            string_literal87=(Token)match(input,85,FOLLOW_85_in_exceptionHandler1427); if (state.failed) return retval; 
 19.4351 +            if ( state.backtracking==0 ) stream_85.add(string_literal87);
 19.4352 +
 19.4353 +            dbg.location(222,18);
 19.4354 +            ARG_ACTION88=(Token)match(input,ARG_ACTION,FOLLOW_ARG_ACTION_in_exceptionHandler1429); if (state.failed) return retval; 
 19.4355 +            if ( state.backtracking==0 ) stream_ARG_ACTION.add(ARG_ACTION88);
 19.4356 +
 19.4357 +            dbg.location(222,29);
 19.4358 +            ACTION89=(Token)match(input,ACTION,FOLLOW_ACTION_in_exceptionHandler1431); if (state.failed) return retval; 
 19.4359 +            if ( state.backtracking==0 ) stream_ACTION.add(ACTION89);
 19.4360 +
 19.4361 +
 19.4362 +
 19.4363 +            // AST REWRITE
 19.4364 +            // elements: ARG_ACTION, 85, ACTION
 19.4365 +            // token labels: 
 19.4366 +            // rule labels: retval
 19.4367 +            // token list labels: 
 19.4368 +            // rule list labels: 
 19.4369 +            // wildcard labels: 
 19.4370 +            if ( state.backtracking==0 ) {
 19.4371 +            retval.tree = root_0;
 19.4372 +            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.4373 +
 19.4374 +            root_0 = (CommonTree)adaptor.nil();
 19.4375 +            // 222:36: -> ^( 'catch' ARG_ACTION ACTION )
 19.4376 +            {
 19.4377 +                dbg.location(222,39);
 19.4378 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:222:39: ^( 'catch' ARG_ACTION ACTION )
 19.4379 +                {
 19.4380 +                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.4381 +                dbg.location(222,41);
 19.4382 +                root_1 = (CommonTree)adaptor.becomeRoot(stream_85.nextNode(), root_1);
 19.4383 +
 19.4384 +                dbg.location(222,49);
 19.4385 +                adaptor.addChild(root_1, stream_ARG_ACTION.nextNode());
 19.4386 +                dbg.location(222,60);
 19.4387 +                adaptor.addChild(root_1, stream_ACTION.nextNode());
 19.4388 +
 19.4389 +                adaptor.addChild(root_0, root_1);
 19.4390 +                }
 19.4391 +
 19.4392 +            }
 19.4393 +
 19.4394 +            retval.tree = root_0;}
 19.4395 +            }
 19.4396 +
 19.4397 +            retval.stop = input.LT(-1);
 19.4398 +
 19.4399 +            if ( state.backtracking==0 ) {
 19.4400 +
 19.4401 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.4402 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.4403 +            }
 19.4404 +        }
 19.4405 +        catch (RecognitionException re) {
 19.4406 +            reportError(re);
 19.4407 +            recover(input,re);
 19.4408 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.4409 +
 19.4410 +        }
 19.4411 +        finally {
 19.4412 +        }
 19.4413 +        dbg.location(223, 5);
 19.4414 +
 19.4415 +        }
 19.4416 +        finally {
 19.4417 +            dbg.exitRule(getGrammarFileName(), "exceptionHandler");
 19.4418 +            decRuleLevel();
 19.4419 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.4420 +        }
 19.4421 +
 19.4422 +        return retval;
 19.4423 +    }
 19.4424 +    // $ANTLR end "exceptionHandler"
 19.4425 +
 19.4426 +    public static class finallyClause_return extends ParserRuleReturnScope {
 19.4427 +        CommonTree tree;
 19.4428 +        public Object getTree() { return tree; }
 19.4429 +    };
 19.4430 +
 19.4431 +    // $ANTLR start "finallyClause"
 19.4432 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:225:1: finallyClause : 'finally' ACTION -> ^( 'finally' ACTION ) ;
 19.4433 +    public final ANTLRv3Parser.finallyClause_return finallyClause() throws RecognitionException {
 19.4434 +        ANTLRv3Parser.finallyClause_return retval = new ANTLRv3Parser.finallyClause_return();
 19.4435 +        retval.start = input.LT(1);
 19.4436 +
 19.4437 +        CommonTree root_0 = null;
 19.4438 +
 19.4439 +        Token string_literal90=null;
 19.4440 +        Token ACTION91=null;
 19.4441 +
 19.4442 +        CommonTree string_literal90_tree=null;
 19.4443 +        CommonTree ACTION91_tree=null;
 19.4444 +        RewriteRuleTokenStream stream_ACTION=new RewriteRuleTokenStream(adaptor,"token ACTION");
 19.4445 +        RewriteRuleTokenStream stream_86=new RewriteRuleTokenStream(adaptor,"token 86");
 19.4446 +
 19.4447 +        try { dbg.enterRule(getGrammarFileName(), "finallyClause");
 19.4448 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.4449 +        incRuleLevel();
 19.4450 +        dbg.location(225, 1);
 19.4451 +
 19.4452 +        try {
 19.4453 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:226:5: ( 'finally' ACTION -> ^( 'finally' ACTION ) )
 19.4454 +            dbg.enterAlt(1);
 19.4455 +
 19.4456 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:226:10: 'finally' ACTION
 19.4457 +            {
 19.4458 +            dbg.location(226,10);
 19.4459 +            string_literal90=(Token)match(input,86,FOLLOW_86_in_finallyClause1461); if (state.failed) return retval; 
 19.4460 +            if ( state.backtracking==0 ) stream_86.add(string_literal90);
 19.4461 +
 19.4462 +            dbg.location(226,20);
 19.4463 +            ACTION91=(Token)match(input,ACTION,FOLLOW_ACTION_in_finallyClause1463); if (state.failed) return retval; 
 19.4464 +            if ( state.backtracking==0 ) stream_ACTION.add(ACTION91);
 19.4465 +
 19.4466 +
 19.4467 +
 19.4468 +            // AST REWRITE
 19.4469 +            // elements: 86, ACTION
 19.4470 +            // token labels: 
 19.4471 +            // rule labels: retval
 19.4472 +            // token list labels: 
 19.4473 +            // rule list labels: 
 19.4474 +            // wildcard labels: 
 19.4475 +            if ( state.backtracking==0 ) {
 19.4476 +            retval.tree = root_0;
 19.4477 +            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.4478 +
 19.4479 +            root_0 = (CommonTree)adaptor.nil();
 19.4480 +            // 226:27: -> ^( 'finally' ACTION )
 19.4481 +            {
 19.4482 +                dbg.location(226,30);
 19.4483 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:226:30: ^( 'finally' ACTION )
 19.4484 +                {
 19.4485 +                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.4486 +                dbg.location(226,32);
 19.4487 +                root_1 = (CommonTree)adaptor.becomeRoot(stream_86.nextNode(), root_1);
 19.4488 +
 19.4489 +                dbg.location(226,42);
 19.4490 +                adaptor.addChild(root_1, stream_ACTION.nextNode());
 19.4491 +
 19.4492 +                adaptor.addChild(root_0, root_1);
 19.4493 +                }
 19.4494 +
 19.4495 +            }
 19.4496 +
 19.4497 +            retval.tree = root_0;}
 19.4498 +            }
 19.4499 +
 19.4500 +            retval.stop = input.LT(-1);
 19.4501 +
 19.4502 +            if ( state.backtracking==0 ) {
 19.4503 +
 19.4504 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.4505 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.4506 +            }
 19.4507 +        }
 19.4508 +        catch (RecognitionException re) {
 19.4509 +            reportError(re);
 19.4510 +            recover(input,re);
 19.4511 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.4512 +
 19.4513 +        }
 19.4514 +        finally {
 19.4515 +        }
 19.4516 +        dbg.location(227, 5);
 19.4517 +
 19.4518 +        }
 19.4519 +        finally {
 19.4520 +            dbg.exitRule(getGrammarFileName(), "finallyClause");
 19.4521 +            decRuleLevel();
 19.4522 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.4523 +        }
 19.4524 +
 19.4525 +        return retval;
 19.4526 +    }
 19.4527 +    // $ANTLR end "finallyClause"
 19.4528 +
 19.4529 +    public static class element_return extends ParserRuleReturnScope {
 19.4530 +        CommonTree tree;
 19.4531 +        public Object getTree() { return tree; }
 19.4532 +    };
 19.4533 +
 19.4534 +    // $ANTLR start "element"
 19.4535 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:229:1: element : elementNoOptionSpec ;
 19.4536 +    public final ANTLRv3Parser.element_return element() throws RecognitionException {
 19.4537 +        ANTLRv3Parser.element_return retval = new ANTLRv3Parser.element_return();
 19.4538 +        retval.start = input.LT(1);
 19.4539 +
 19.4540 +        CommonTree root_0 = null;
 19.4541 +
 19.4542 +        ANTLRv3Parser.elementNoOptionSpec_return elementNoOptionSpec92 = null;
 19.4543 +
 19.4544 +
 19.4545 +
 19.4546 +        try { dbg.enterRule(getGrammarFileName(), "element");
 19.4547 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.4548 +        incRuleLevel();
 19.4549 +        dbg.location(229, 1);
 19.4550 +
 19.4551 +        try {
 19.4552 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:230:2: ( elementNoOptionSpec )
 19.4553 +            dbg.enterAlt(1);
 19.4554 +
 19.4555 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:230:4: elementNoOptionSpec
 19.4556 +            {
 19.4557 +            root_0 = (CommonTree)adaptor.nil();
 19.4558 +
 19.4559 +            dbg.location(230,4);
 19.4560 +            pushFollow(FOLLOW_elementNoOptionSpec_in_element1485);
 19.4561 +            elementNoOptionSpec92=elementNoOptionSpec();
 19.4562 +
 19.4563 +            state._fsp--;
 19.4564 +            if (state.failed) return retval;
 19.4565 +            if ( state.backtracking==0 ) adaptor.addChild(root_0, elementNoOptionSpec92.getTree());
 19.4566 +
 19.4567 +            }
 19.4568 +
 19.4569 +            retval.stop = input.LT(-1);
 19.4570 +
 19.4571 +            if ( state.backtracking==0 ) {
 19.4572 +
 19.4573 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.4574 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.4575 +            }
 19.4576 +        }
 19.4577 +        catch (RecognitionException re) {
 19.4578 +            reportError(re);
 19.4579 +            recover(input,re);
 19.4580 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.4581 +
 19.4582 +        }
 19.4583 +        finally {
 19.4584 +        }
 19.4585 +        dbg.location(231, 2);
 19.4586 +
 19.4587 +        }
 19.4588 +        finally {
 19.4589 +            dbg.exitRule(getGrammarFileName(), "element");
 19.4590 +            decRuleLevel();
 19.4591 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.4592 +        }
 19.4593 +
 19.4594 +        return retval;
 19.4595 +    }
 19.4596 +    // $ANTLR end "element"
 19.4597 +
 19.4598 +    public static class elementNoOptionSpec_return extends ParserRuleReturnScope {
 19.4599 +        CommonTree tree;
 19.4600 +        public Object getTree() { return tree; }
 19.4601 +    };
 19.4602 +
 19.4603 +    // $ANTLR start "elementNoOptionSpec"
 19.4604 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:233:1: elementNoOptionSpec : ( id (labelOp= '=' | labelOp= '+=' ) atom ( ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] ^( $labelOp id atom ) EOA[\"EOA\"] ) EOB[\"EOB\"] ) ) | -> ^( $labelOp id atom ) ) | id (labelOp= '=' | labelOp= '+=' ) block ( ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] ^( $labelOp id block ) EOA[\"EOA\"] ) EOB[\"EOB\"] ) ) | -> ^( $labelOp id block ) ) | atom ( ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] atom EOA[\"EOA\"] ) EOB[\"EOB\"] ) ) | -> atom ) | ebnf | ACTION | SEMPRED ( '=>' -> GATED_SEMPRED | -> SEMPRED ) | treeSpec ( ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] treeSpec EOA[\"EOA\"] ) EOB[\"EOB\"] ) ) | -> treeSpec ) );
 19.4605 +    public final ANTLRv3Parser.elementNoOptionSpec_return elementNoOptionSpec() throws RecognitionException {
 19.4606 +        ANTLRv3Parser.elementNoOptionSpec_return retval = new ANTLRv3Parser.elementNoOptionSpec_return();
 19.4607 +        retval.start = input.LT(1);
 19.4608 +
 19.4609 +        CommonTree root_0 = null;
 19.4610 +
 19.4611 +        Token labelOp=null;
 19.4612 +        Token ACTION102=null;
 19.4613 +        Token SEMPRED103=null;
 19.4614 +        Token string_literal104=null;
 19.4615 +        ANTLRv3Parser.id_return id93 = null;
 19.4616 +
 19.4617 +        ANTLRv3Parser.atom_return atom94 = null;
 19.4618 +
 19.4619 +        ANTLRv3Parser.ebnfSuffix_return ebnfSuffix95 = null;
 19.4620 +
 19.4621 +        ANTLRv3Parser.id_return id96 = null;
 19.4622 +
 19.4623 +        ANTLRv3Parser.block_return block97 = null;
 19.4624 +
 19.4625 +        ANTLRv3Parser.ebnfSuffix_return ebnfSuffix98 = null;
 19.4626 +
 19.4627 +        ANTLRv3Parser.atom_return atom99 = null;
 19.4628 +
 19.4629 +        ANTLRv3Parser.ebnfSuffix_return ebnfSuffix100 = null;
 19.4630 +
 19.4631 +        ANTLRv3Parser.ebnf_return ebnf101 = null;
 19.4632 +
 19.4633 +        ANTLRv3Parser.treeSpec_return treeSpec105 = null;
 19.4634 +
 19.4635 +        ANTLRv3Parser.ebnfSuffix_return ebnfSuffix106 = null;
 19.4636 +
 19.4637 +
 19.4638 +        CommonTree labelOp_tree=null;
 19.4639 +        CommonTree ACTION102_tree=null;
 19.4640 +        CommonTree SEMPRED103_tree=null;
 19.4641 +        CommonTree string_literal104_tree=null;
 19.4642 +        RewriteRuleTokenStream stream_SEMPRED=new RewriteRuleTokenStream(adaptor,"token SEMPRED");
 19.4643 +        RewriteRuleTokenStream stream_71=new RewriteRuleTokenStream(adaptor,"token 71");
 19.4644 +        RewriteRuleTokenStream stream_87=new RewriteRuleTokenStream(adaptor,"token 87");
 19.4645 +        RewriteRuleTokenStream stream_88=new RewriteRuleTokenStream(adaptor,"token 88");
 19.4646 +        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
 19.4647 +        RewriteRuleSubtreeStream stream_atom=new RewriteRuleSubtreeStream(adaptor,"rule atom");
 19.4648 +        RewriteRuleSubtreeStream stream_ebnfSuffix=new RewriteRuleSubtreeStream(adaptor,"rule ebnfSuffix");
 19.4649 +        RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");
 19.4650 +        RewriteRuleSubtreeStream stream_treeSpec=new RewriteRuleSubtreeStream(adaptor,"rule treeSpec");
 19.4651 +        try { dbg.enterRule(getGrammarFileName(), "elementNoOptionSpec");
 19.4652 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.4653 +        incRuleLevel();
 19.4654 +        dbg.location(233, 1);
 19.4655 +
 19.4656 +        try {
 19.4657 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:234:2: ( id (labelOp= '=' | labelOp= '+=' ) atom ( ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] ^( $labelOp id atom ) EOA[\"EOA\"] ) EOB[\"EOB\"] ) ) | -> ^( $labelOp id atom ) ) | id (labelOp= '=' | labelOp= '+=' ) block ( ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] ^( $labelOp id block ) EOA[\"EOA\"] ) EOB[\"EOB\"] ) ) | -> ^( $labelOp id block ) ) | atom ( ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] atom EOA[\"EOA\"] ) EOB[\"EOB\"] ) ) | -> atom ) | ebnf | ACTION | SEMPRED ( '=>' -> GATED_SEMPRED | -> SEMPRED ) | treeSpec ( ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] treeSpec EOA[\"EOA\"] ) EOB[\"EOB\"] ) ) | -> treeSpec ) )
 19.4658 +            int alt46=7;
 19.4659 +            try { dbg.enterDecision(46, decisionCanBacktrack[46]);
 19.4660 +
 19.4661 +            try {
 19.4662 +                isCyclicDecision = true;
 19.4663 +                alt46 = dfa46.predict(input);
 19.4664 +            }
 19.4665 +            catch (NoViableAltException nvae) {
 19.4666 +                dbg.recognitionException(nvae);
 19.4667 +                throw nvae;
 19.4668 +            }
 19.4669 +            } finally {dbg.exitDecision(46);}
 19.4670 +
 19.4671 +            switch (alt46) {
 19.4672 +                case 1 :
 19.4673 +                    dbg.enterAlt(1);
 19.4674 +
 19.4675 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:234:4: id (labelOp= '=' | labelOp= '+=' ) atom ( ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] ^( $labelOp id atom ) EOA[\"EOA\"] ) EOB[\"EOB\"] ) ) | -> ^( $labelOp id atom ) )
 19.4676 +                    {
 19.4677 +                    dbg.location(234,4);
 19.4678 +                    pushFollow(FOLLOW_id_in_elementNoOptionSpec1496);
 19.4679 +                    id93=id();
 19.4680 +
 19.4681 +                    state._fsp--;
 19.4682 +                    if (state.failed) return retval;
 19.4683 +                    if ( state.backtracking==0 ) stream_id.add(id93.getTree());
 19.4684 +                    dbg.location(234,7);
 19.4685 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:234:7: (labelOp= '=' | labelOp= '+=' )
 19.4686 +                    int alt39=2;
 19.4687 +                    try { dbg.enterSubRule(39);
 19.4688 +                    try { dbg.enterDecision(39, decisionCanBacktrack[39]);
 19.4689 +
 19.4690 +                    int LA39_0 = input.LA(1);
 19.4691 +
 19.4692 +                    if ( (LA39_0==71) ) {
 19.4693 +                        alt39=1;
 19.4694 +                    }
 19.4695 +                    else if ( (LA39_0==87) ) {
 19.4696 +                        alt39=2;
 19.4697 +                    }
 19.4698 +                    else {
 19.4699 +                        if (state.backtracking>0) {state.failed=true; return retval;}
 19.4700 +                        NoViableAltException nvae =
 19.4701 +                            new NoViableAltException("", 39, 0, input);
 19.4702 +
 19.4703 +                        dbg.recognitionException(nvae);
 19.4704 +                        throw nvae;
 19.4705 +                    }
 19.4706 +                    } finally {dbg.exitDecision(39);}
 19.4707 +
 19.4708 +                    switch (alt39) {
 19.4709 +                        case 1 :
 19.4710 +                            dbg.enterAlt(1);
 19.4711 +
 19.4712 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:234:8: labelOp= '='
 19.4713 +                            {
 19.4714 +                            dbg.location(234,15);
 19.4715 +                            labelOp=(Token)match(input,71,FOLLOW_71_in_elementNoOptionSpec1501); if (state.failed) return retval; 
 19.4716 +                            if ( state.backtracking==0 ) stream_71.add(labelOp);
 19.4717 +
 19.4718 +
 19.4719 +                            }
 19.4720 +                            break;
 19.4721 +                        case 2 :
 19.4722 +                            dbg.enterAlt(2);
 19.4723 +
 19.4724 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:234:20: labelOp= '+='
 19.4725 +                            {
 19.4726 +                            dbg.location(234,27);
 19.4727 +                            labelOp=(Token)match(input,87,FOLLOW_87_in_elementNoOptionSpec1505); if (state.failed) return retval; 
 19.4728 +                            if ( state.backtracking==0 ) stream_87.add(labelOp);
 19.4729 +
 19.4730 +
 19.4731 +                            }
 19.4732 +                            break;
 19.4733 +
 19.4734 +                    }
 19.4735 +                    } finally {dbg.exitSubRule(39);}
 19.4736 +
 19.4737 +                    dbg.location(234,34);
 19.4738 +                    pushFollow(FOLLOW_atom_in_elementNoOptionSpec1508);
 19.4739 +                    atom94=atom();
 19.4740 +
 19.4741 +                    state._fsp--;
 19.4742 +                    if (state.failed) return retval;
 19.4743 +                    if ( state.backtracking==0 ) stream_atom.add(atom94.getTree());
 19.4744 +                    dbg.location(235,3);
 19.4745 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:235:3: ( ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] ^( $labelOp id atom ) EOA[\"EOA\"] ) EOB[\"EOB\"] ) ) | -> ^( $labelOp id atom ) )
 19.4746 +                    int alt40=2;
 19.4747 +                    try { dbg.enterSubRule(40);
 19.4748 +                    try { dbg.enterDecision(40, decisionCanBacktrack[40]);
 19.4749 +
 19.4750 +                    int LA40_0 = input.LA(1);
 19.4751 +
 19.4752 +                    if ( (LA40_0==74||(LA40_0>=90 && LA40_0<=91)) ) {
 19.4753 +                        alt40=1;
 19.4754 +                    }
 19.4755 +                    else if ( (LA40_0==SEMPRED||LA40_0==TREE_BEGIN||LA40_0==REWRITE||(LA40_0>=TOKEN_REF && LA40_0<=ACTION)||LA40_0==RULE_REF||LA40_0==69||(LA40_0>=82 && LA40_0<=84)||LA40_0==89||LA40_0==92) ) {
 19.4756 +                        alt40=2;
 19.4757 +                    }
 19.4758 +                    else {
 19.4759 +                        if (state.backtracking>0) {state.failed=true; return retval;}
 19.4760 +                        NoViableAltException nvae =
 19.4761 +                            new NoViableAltException("", 40, 0, input);
 19.4762 +
 19.4763 +                        dbg.recognitionException(nvae);
 19.4764 +                        throw nvae;
 19.4765 +                    }
 19.4766 +                    } finally {dbg.exitDecision(40);}
 19.4767 +
 19.4768 +                    switch (alt40) {
 19.4769 +                        case 1 :
 19.4770 +                            dbg.enterAlt(1);
 19.4771 +
 19.4772 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:235:5: ebnfSuffix
 19.4773 +                            {
 19.4774 +                            dbg.location(235,5);
 19.4775 +                            pushFollow(FOLLOW_ebnfSuffix_in_elementNoOptionSpec1514);
 19.4776 +                            ebnfSuffix95=ebnfSuffix();
 19.4777 +
 19.4778 +                            state._fsp--;
 19.4779 +                            if (state.failed) return retval;
 19.4780 +                            if ( state.backtracking==0 ) stream_ebnfSuffix.add(ebnfSuffix95.getTree());
 19.4781 +
 19.4782 +
 19.4783 +                            // AST REWRITE
 19.4784 +                            // elements: ebnfSuffix, labelOp, atom, id
 19.4785 +                            // token labels: labelOp
 19.4786 +                            // rule labels: retval
 19.4787 +                            // token list labels: 
 19.4788 +                            // rule list labels: 
 19.4789 +                            // wildcard labels: 
 19.4790 +                            if ( state.backtracking==0 ) {
 19.4791 +                            retval.tree = root_0;
 19.4792 +                            RewriteRuleTokenStream stream_labelOp=new RewriteRuleTokenStream(adaptor,"token labelOp",labelOp);
 19.4793 +                            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.4794 +
 19.4795 +                            root_0 = (CommonTree)adaptor.nil();
 19.4796 +                            // 235:16: -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] ^( $labelOp id atom ) EOA[\"EOA\"] ) EOB[\"EOB\"] ) )
 19.4797 +                            {
 19.4798 +                                dbg.location(235,19);
 19.4799 +                                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:235:19: ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] ^( $labelOp id atom ) EOA[\"EOA\"] ) EOB[\"EOB\"] ) )
 19.4800 +                                {
 19.4801 +                                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.4802 +                                dbg.location(235,22);
 19.4803 +                                root_1 = (CommonTree)adaptor.becomeRoot(stream_ebnfSuffix.nextNode(), root_1);
 19.4804 +
 19.4805 +                                dbg.location(235,33);
 19.4806 +                                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:235:33: ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] ^( $labelOp id atom ) EOA[\"EOA\"] ) EOB[\"EOB\"] )
 19.4807 +                                {
 19.4808 +                                CommonTree root_2 = (CommonTree)adaptor.nil();
 19.4809 +                                dbg.location(235,35);
 19.4810 +                                root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(BLOCK, "BLOCK"), root_2);
 19.4811 +
 19.4812 +                                dbg.location(235,50);
 19.4813 +                                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:235:50: ^( ALT[\"ALT\"] ^( $labelOp id atom ) EOA[\"EOA\"] )
 19.4814 +                                {
 19.4815 +                                CommonTree root_3 = (CommonTree)adaptor.nil();
 19.4816 +                                dbg.location(235,52);
 19.4817 +                                root_3 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(ALT, "ALT"), root_3);
 19.4818 +
 19.4819 +                                dbg.location(235,63);
 19.4820 +                                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:235:63: ^( $labelOp id atom )
 19.4821 +                                {
 19.4822 +                                CommonTree root_4 = (CommonTree)adaptor.nil();
 19.4823 +                                dbg.location(235,65);
 19.4824 +                                root_4 = (CommonTree)adaptor.becomeRoot(stream_labelOp.nextNode(), root_4);
 19.4825 +
 19.4826 +                                dbg.location(235,74);
 19.4827 +                                adaptor.addChild(root_4, stream_id.nextTree());
 19.4828 +                                dbg.location(235,77);
 19.4829 +                                adaptor.addChild(root_4, stream_atom.nextTree());
 19.4830 +
 19.4831 +                                adaptor.addChild(root_3, root_4);
 19.4832 +                                }
 19.4833 +                                dbg.location(235,83);
 19.4834 +                                adaptor.addChild(root_3, (CommonTree)adaptor.create(EOA, "EOA"));
 19.4835 +
 19.4836 +                                adaptor.addChild(root_2, root_3);
 19.4837 +                                }
 19.4838 +                                dbg.location(235,95);
 19.4839 +                                adaptor.addChild(root_2, (CommonTree)adaptor.create(EOB, "EOB"));
 19.4840 +
 19.4841 +                                adaptor.addChild(root_1, root_2);
 19.4842 +                                }
 19.4843 +
 19.4844 +                                adaptor.addChild(root_0, root_1);
 19.4845 +                                }
 19.4846 +
 19.4847 +                            }
 19.4848 +
 19.4849 +                            retval.tree = root_0;}
 19.4850 +                            }
 19.4851 +                            break;
 19.4852 +                        case 2 :
 19.4853 +                            dbg.enterAlt(2);
 19.4854 +
 19.4855 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:236:8: 
 19.4856 +                            {
 19.4857 +
 19.4858 +                            // AST REWRITE
 19.4859 +                            // elements: atom, labelOp, id
 19.4860 +                            // token labels: labelOp
 19.4861 +                            // rule labels: retval
 19.4862 +                            // token list labels: 
 19.4863 +                            // rule list labels: 
 19.4864 +                            // wildcard labels: 
 19.4865 +                            if ( state.backtracking==0 ) {
 19.4866 +                            retval.tree = root_0;
 19.4867 +                            RewriteRuleTokenStream stream_labelOp=new RewriteRuleTokenStream(adaptor,"token labelOp",labelOp);
 19.4868 +                            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.4869 +
 19.4870 +                            root_0 = (CommonTree)adaptor.nil();
 19.4871 +                            // 236:8: -> ^( $labelOp id atom )
 19.4872 +                            {
 19.4873 +                                dbg.location(236,11);
 19.4874 +                                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:236:11: ^( $labelOp id atom )
 19.4875 +                                {
 19.4876 +                                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.4877 +                                dbg.location(236,13);
 19.4878 +                                root_1 = (CommonTree)adaptor.becomeRoot(stream_labelOp.nextNode(), root_1);
 19.4879 +
 19.4880 +                                dbg.location(236,22);
 19.4881 +                                adaptor.addChild(root_1, stream_id.nextTree());
 19.4882 +                                dbg.location(236,25);
 19.4883 +                                adaptor.addChild(root_1, stream_atom.nextTree());
 19.4884 +
 19.4885 +                                adaptor.addChild(root_0, root_1);
 19.4886 +                                }
 19.4887 +
 19.4888 +                            }
 19.4889 +
 19.4890 +                            retval.tree = root_0;}
 19.4891 +                            }
 19.4892 +                            break;
 19.4893 +
 19.4894 +                    }
 19.4895 +                    } finally {dbg.exitSubRule(40);}
 19.4896 +
 19.4897 +
 19.4898 +                    }
 19.4899 +                    break;
 19.4900 +                case 2 :
 19.4901 +                    dbg.enterAlt(2);
 19.4902 +
 19.4903 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:238:4: id (labelOp= '=' | labelOp= '+=' ) block ( ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] ^( $labelOp id block ) EOA[\"EOA\"] ) EOB[\"EOB\"] ) ) | -> ^( $labelOp id block ) )
 19.4904 +                    {
 19.4905 +                    dbg.location(238,4);
 19.4906 +                    pushFollow(FOLLOW_id_in_elementNoOptionSpec1573);
 19.4907 +                    id96=id();
 19.4908 +
 19.4909 +                    state._fsp--;
 19.4910 +                    if (state.failed) return retval;
 19.4911 +                    if ( state.backtracking==0 ) stream_id.add(id96.getTree());
 19.4912 +                    dbg.location(238,7);
 19.4913 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:238:7: (labelOp= '=' | labelOp= '+=' )
 19.4914 +                    int alt41=2;
 19.4915 +                    try { dbg.enterSubRule(41);
 19.4916 +                    try { dbg.enterDecision(41, decisionCanBacktrack[41]);
 19.4917 +
 19.4918 +                    int LA41_0 = input.LA(1);
 19.4919 +
 19.4920 +                    if ( (LA41_0==71) ) {
 19.4921 +                        alt41=1;
 19.4922 +                    }
 19.4923 +                    else if ( (LA41_0==87) ) {
 19.4924 +                        alt41=2;
 19.4925 +                    }
 19.4926 +                    else {
 19.4927 +                        if (state.backtracking>0) {state.failed=true; return retval;}
 19.4928 +                        NoViableAltException nvae =
 19.4929 +                            new NoViableAltException("", 41, 0, input);
 19.4930 +
 19.4931 +                        dbg.recognitionException(nvae);
 19.4932 +                        throw nvae;
 19.4933 +                    }
 19.4934 +                    } finally {dbg.exitDecision(41);}
 19.4935 +
 19.4936 +                    switch (alt41) {
 19.4937 +                        case 1 :
 19.4938 +                            dbg.enterAlt(1);
 19.4939 +
 19.4940 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:238:8: labelOp= '='
 19.4941 +                            {
 19.4942 +                            dbg.location(238,15);
 19.4943 +                            labelOp=(Token)match(input,71,FOLLOW_71_in_elementNoOptionSpec1578); if (state.failed) return retval; 
 19.4944 +                            if ( state.backtracking==0 ) stream_71.add(labelOp);
 19.4945 +
 19.4946 +
 19.4947 +                            }
 19.4948 +                            break;
 19.4949 +                        case 2 :
 19.4950 +                            dbg.enterAlt(2);
 19.4951 +
 19.4952 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:238:20: labelOp= '+='
 19.4953 +                            {
 19.4954 +                            dbg.location(238,27);
 19.4955 +                            labelOp=(Token)match(input,87,FOLLOW_87_in_elementNoOptionSpec1582); if (state.failed) return retval; 
 19.4956 +                            if ( state.backtracking==0 ) stream_87.add(labelOp);
 19.4957 +
 19.4958 +
 19.4959 +                            }
 19.4960 +                            break;
 19.4961 +
 19.4962 +                    }
 19.4963 +                    } finally {dbg.exitSubRule(41);}
 19.4964 +
 19.4965 +                    dbg.location(238,34);
 19.4966 +                    pushFollow(FOLLOW_block_in_elementNoOptionSpec1585);
 19.4967 +                    block97=block();
 19.4968 +
 19.4969 +                    state._fsp--;
 19.4970 +                    if (state.failed) return retval;
 19.4971 +                    if ( state.backtracking==0 ) stream_block.add(block97.getTree());
 19.4972 +                    dbg.location(239,3);
 19.4973 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:239:3: ( ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] ^( $labelOp id block ) EOA[\"EOA\"] ) EOB[\"EOB\"] ) ) | -> ^( $labelOp id block ) )
 19.4974 +                    int alt42=2;
 19.4975 +                    try { dbg.enterSubRule(42);
 19.4976 +                    try { dbg.enterDecision(42, decisionCanBacktrack[42]);
 19.4977 +
 19.4978 +                    int LA42_0 = input.LA(1);
 19.4979 +
 19.4980 +                    if ( (LA42_0==74||(LA42_0>=90 && LA42_0<=91)) ) {
 19.4981 +                        alt42=1;
 19.4982 +                    }
 19.4983 +                    else if ( (LA42_0==SEMPRED||LA42_0==TREE_BEGIN||LA42_0==REWRITE||(LA42_0>=TOKEN_REF && LA42_0<=ACTION)||LA42_0==RULE_REF||LA42_0==69||(LA42_0>=82 && LA42_0<=84)||LA42_0==89||LA42_0==92) ) {
 19.4984 +                        alt42=2;
 19.4985 +                    }
 19.4986 +                    else {
 19.4987 +                        if (state.backtracking>0) {state.failed=true; return retval;}
 19.4988 +                        NoViableAltException nvae =
 19.4989 +                            new NoViableAltException("", 42, 0, input);
 19.4990 +
 19.4991 +                        dbg.recognitionException(nvae);
 19.4992 +                        throw nvae;
 19.4993 +                    }
 19.4994 +                    } finally {dbg.exitDecision(42);}
 19.4995 +
 19.4996 +                    switch (alt42) {
 19.4997 +                        case 1 :
 19.4998 +                            dbg.enterAlt(1);
 19.4999 +
 19.5000 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:239:5: ebnfSuffix
 19.5001 +                            {
 19.5002 +                            dbg.location(239,5);
 19.5003 +                            pushFollow(FOLLOW_ebnfSuffix_in_elementNoOptionSpec1591);
 19.5004 +                            ebnfSuffix98=ebnfSuffix();
 19.5005 +
 19.5006 +                            state._fsp--;
 19.5007 +                            if (state.failed) return retval;
 19.5008 +                            if ( state.backtracking==0 ) stream_ebnfSuffix.add(ebnfSuffix98.getTree());
 19.5009 +
 19.5010 +
 19.5011 +                            // AST REWRITE
 19.5012 +                            // elements: labelOp, ebnfSuffix, block, id
 19.5013 +                            // token labels: labelOp
 19.5014 +                            // rule labels: retval
 19.5015 +                            // token list labels: 
 19.5016 +                            // rule list labels: 
 19.5017 +                            // wildcard labels: 
 19.5018 +                            if ( state.backtracking==0 ) {
 19.5019 +                            retval.tree = root_0;
 19.5020 +                            RewriteRuleTokenStream stream_labelOp=new RewriteRuleTokenStream(adaptor,"token labelOp",labelOp);
 19.5021 +                            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.5022 +
 19.5023 +                            root_0 = (CommonTree)adaptor.nil();
 19.5024 +                            // 239:16: -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] ^( $labelOp id block ) EOA[\"EOA\"] ) EOB[\"EOB\"] ) )
 19.5025 +                            {
 19.5026 +                                dbg.location(239,19);
 19.5027 +                                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:239:19: ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] ^( $labelOp id block ) EOA[\"EOA\"] ) EOB[\"EOB\"] ) )
 19.5028 +                                {
 19.5029 +                                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.5030 +                                dbg.location(239,22);
 19.5031 +                                root_1 = (CommonTree)adaptor.becomeRoot(stream_ebnfSuffix.nextNode(), root_1);
 19.5032 +
 19.5033 +                                dbg.location(239,33);
 19.5034 +                                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:239:33: ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] ^( $labelOp id block ) EOA[\"EOA\"] ) EOB[\"EOB\"] )
 19.5035 +                                {
 19.5036 +                                CommonTree root_2 = (CommonTree)adaptor.nil();
 19.5037 +                                dbg.location(239,35);
 19.5038 +                                root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(BLOCK, "BLOCK"), root_2);
 19.5039 +
 19.5040 +                                dbg.location(239,50);
 19.5041 +                                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:239:50: ^( ALT[\"ALT\"] ^( $labelOp id block ) EOA[\"EOA\"] )
 19.5042 +                                {
 19.5043 +                                CommonTree root_3 = (CommonTree)adaptor.nil();
 19.5044 +                                dbg.location(239,52);
 19.5045 +                                root_3 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(ALT, "ALT"), root_3);
 19.5046 +
 19.5047 +                                dbg.location(239,63);
 19.5048 +                                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:239:63: ^( $labelOp id block )
 19.5049 +                                {
 19.5050 +                                CommonTree root_4 = (CommonTree)adaptor.nil();
 19.5051 +                                dbg.location(239,65);
 19.5052 +                                root_4 = (CommonTree)adaptor.becomeRoot(stream_labelOp.nextNode(), root_4);
 19.5053 +
 19.5054 +                                dbg.location(239,74);
 19.5055 +                                adaptor.addChild(root_4, stream_id.nextTree());
 19.5056 +                                dbg.location(239,77);
 19.5057 +                                adaptor.addChild(root_4, stream_block.nextTree());
 19.5058 +
 19.5059 +                                adaptor.addChild(root_3, root_4);
 19.5060 +                                }
 19.5061 +                                dbg.location(239,84);
 19.5062 +                                adaptor.addChild(root_3, (CommonTree)adaptor.create(EOA, "EOA"));
 19.5063 +
 19.5064 +                                adaptor.addChild(root_2, root_3);
 19.5065 +                                }
 19.5066 +                                dbg.location(239,96);
 19.5067 +                                adaptor.addChild(root_2, (CommonTree)adaptor.create(EOB, "EOB"));
 19.5068 +
 19.5069 +                                adaptor.addChild(root_1, root_2);
 19.5070 +                                }
 19.5071 +
 19.5072 +                                adaptor.addChild(root_0, root_1);
 19.5073 +                                }
 19.5074 +
 19.5075 +                            }
 19.5076 +
 19.5077 +                            retval.tree = root_0;}
 19.5078 +                            }
 19.5079 +                            break;
 19.5080 +                        case 2 :
 19.5081 +                            dbg.enterAlt(2);
 19.5082 +
 19.5083 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:240:8: 
 19.5084 +                            {
 19.5085 +
 19.5086 +                            // AST REWRITE
 19.5087 +                            // elements: id, block, labelOp
 19.5088 +                            // token labels: labelOp
 19.5089 +                            // rule labels: retval
 19.5090 +                            // token list labels: 
 19.5091 +                            // rule list labels: 
 19.5092 +                            // wildcard labels: 
 19.5093 +                            if ( state.backtracking==0 ) {
 19.5094 +                            retval.tree = root_0;
 19.5095 +                            RewriteRuleTokenStream stream_labelOp=new RewriteRuleTokenStream(adaptor,"token labelOp",labelOp);
 19.5096 +                            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.5097 +
 19.5098 +                            root_0 = (CommonTree)adaptor.nil();
 19.5099 +                            // 240:8: -> ^( $labelOp id block )
 19.5100 +                            {
 19.5101 +                                dbg.location(240,11);
 19.5102 +                                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:240:11: ^( $labelOp id block )
 19.5103 +                                {
 19.5104 +                                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.5105 +                                dbg.location(240,13);
 19.5106 +                                root_1 = (CommonTree)adaptor.becomeRoot(stream_labelOp.nextNode(), root_1);
 19.5107 +
 19.5108 +                                dbg.location(240,22);
 19.5109 +                                adaptor.addChild(root_1, stream_id.nextTree());
 19.5110 +                                dbg.location(240,25);
 19.5111 +                                adaptor.addChild(root_1, stream_block.nextTree());
 19.5112 +
 19.5113 +                                adaptor.addChild(root_0, root_1);
 19.5114 +                                }
 19.5115 +
 19.5116 +                            }
 19.5117 +
 19.5118 +                            retval.tree = root_0;}
 19.5119 +                            }
 19.5120 +                            break;
 19.5121 +
 19.5122 +                    }
 19.5123 +                    } finally {dbg.exitSubRule(42);}
 19.5124 +
 19.5125 +
 19.5126 +                    }
 19.5127 +                    break;
 19.5128 +                case 3 :
 19.5129 +                    dbg.enterAlt(3);
 19.5130 +
 19.5131 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:242:4: atom ( ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] atom EOA[\"EOA\"] ) EOB[\"EOB\"] ) ) | -> atom )
 19.5132 +                    {
 19.5133 +                    dbg.location(242,4);
 19.5134 +                    pushFollow(FOLLOW_atom_in_elementNoOptionSpec1650);
 19.5135 +                    atom99=atom();
 19.5136 +
 19.5137 +                    state._fsp--;
 19.5138 +                    if (state.failed) return retval;
 19.5139 +                    if ( state.backtracking==0 ) stream_atom.add(atom99.getTree());
 19.5140 +                    dbg.location(243,3);
 19.5141 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:243:3: ( ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] atom EOA[\"EOA\"] ) EOB[\"EOB\"] ) ) | -> atom )
 19.5142 +                    int alt43=2;
 19.5143 +                    try { dbg.enterSubRule(43);
 19.5144 +                    try { dbg.enterDecision(43, decisionCanBacktrack[43]);
 19.5145 +
 19.5146 +                    int LA43_0 = input.LA(1);
 19.5147 +
 19.5148 +                    if ( (LA43_0==74||(LA43_0>=90 && LA43_0<=91)) ) {
 19.5149 +                        alt43=1;
 19.5150 +                    }
 19.5151 +                    else if ( (LA43_0==SEMPRED||LA43_0==TREE_BEGIN||LA43_0==REWRITE||(LA43_0>=TOKEN_REF && LA43_0<=ACTION)||LA43_0==RULE_REF||LA43_0==69||(LA43_0>=82 && LA43_0<=84)||LA43_0==89||LA43_0==92) ) {
 19.5152 +                        alt43=2;
 19.5153 +                    }
 19.5154 +                    else {
 19.5155 +                        if (state.backtracking>0) {state.failed=true; return retval;}
 19.5156 +                        NoViableAltException nvae =
 19.5157 +                            new NoViableAltException("", 43, 0, input);
 19.5158 +
 19.5159 +                        dbg.recognitionException(nvae);
 19.5160 +                        throw nvae;
 19.5161 +                    }
 19.5162 +                    } finally {dbg.exitDecision(43);}
 19.5163 +
 19.5164 +                    switch (alt43) {
 19.5165 +                        case 1 :
 19.5166 +                            dbg.enterAlt(1);
 19.5167 +
 19.5168 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:243:5: ebnfSuffix
 19.5169 +                            {
 19.5170 +                            dbg.location(243,5);
 19.5171 +                            pushFollow(FOLLOW_ebnfSuffix_in_elementNoOptionSpec1656);
 19.5172 +                            ebnfSuffix100=ebnfSuffix();
 19.5173 +
 19.5174 +                            state._fsp--;
 19.5175 +                            if (state.failed) return retval;
 19.5176 +                            if ( state.backtracking==0 ) stream_ebnfSuffix.add(ebnfSuffix100.getTree());
 19.5177 +
 19.5178 +
 19.5179 +                            // AST REWRITE
 19.5180 +                            // elements: ebnfSuffix, atom
 19.5181 +                            // token labels: 
 19.5182 +                            // rule labels: retval
 19.5183 +                            // token list labels: 
 19.5184 +                            // rule list labels: 
 19.5185 +                            // wildcard labels: 
 19.5186 +                            if ( state.backtracking==0 ) {
 19.5187 +                            retval.tree = root_0;
 19.5188 +                            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.5189 +
 19.5190 +                            root_0 = (CommonTree)adaptor.nil();
 19.5191 +                            // 243:16: -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] atom EOA[\"EOA\"] ) EOB[\"EOB\"] ) )
 19.5192 +                            {
 19.5193 +                                dbg.location(243,19);
 19.5194 +                                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:243:19: ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] atom EOA[\"EOA\"] ) EOB[\"EOB\"] ) )
 19.5195 +                                {
 19.5196 +                                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.5197 +                                dbg.location(243,22);
 19.5198 +                                root_1 = (CommonTree)adaptor.becomeRoot(stream_ebnfSuffix.nextNode(), root_1);
 19.5199 +
 19.5200 +                                dbg.location(243,33);
 19.5201 +                                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:243:33: ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] atom EOA[\"EOA\"] ) EOB[\"EOB\"] )
 19.5202 +                                {
 19.5203 +                                CommonTree root_2 = (CommonTree)adaptor.nil();
 19.5204 +                                dbg.location(243,35);
 19.5205 +                                root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(BLOCK, "BLOCK"), root_2);
 19.5206 +
 19.5207 +                                dbg.location(243,50);
 19.5208 +                                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:243:50: ^( ALT[\"ALT\"] atom EOA[\"EOA\"] )
 19.5209 +                                {
 19.5210 +                                CommonTree root_3 = (CommonTree)adaptor.nil();
 19.5211 +                                dbg.location(243,52);
 19.5212 +                                root_3 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(ALT, "ALT"), root_3);
 19.5213 +
 19.5214 +                                dbg.location(243,63);
 19.5215 +                                adaptor.addChild(root_3, stream_atom.nextTree());
 19.5216 +                                dbg.location(243,68);
 19.5217 +                                adaptor.addChild(root_3, (CommonTree)adaptor.create(EOA, "EOA"));
 19.5218 +
 19.5219 +                                adaptor.addChild(root_2, root_3);
 19.5220 +                                }
 19.5221 +                                dbg.location(243,80);
 19.5222 +                                adaptor.addChild(root_2, (CommonTree)adaptor.create(EOB, "EOB"));
 19.5223 +
 19.5224 +                                adaptor.addChild(root_1, root_2);
 19.5225 +                                }
 19.5226 +
 19.5227 +                                adaptor.addChild(root_0, root_1);
 19.5228 +                                }
 19.5229 +
 19.5230 +                            }
 19.5231 +
 19.5232 +                            retval.tree = root_0;}
 19.5233 +                            }
 19.5234 +                            break;
 19.5235 +                        case 2 :
 19.5236 +                            dbg.enterAlt(2);
 19.5237 +
 19.5238 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:244:8: 
 19.5239 +                            {
 19.5240 +
 19.5241 +                            // AST REWRITE
 19.5242 +                            // elements: atom
 19.5243 +                            // token labels: 
 19.5244 +                            // rule labels: retval
 19.5245 +                            // token list labels: 
 19.5246 +                            // rule list labels: 
 19.5247 +                            // wildcard labels: 
 19.5248 +                            if ( state.backtracking==0 ) {
 19.5249 +                            retval.tree = root_0;
 19.5250 +                            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.5251 +
 19.5252 +                            root_0 = (CommonTree)adaptor.nil();
 19.5253 +                            // 244:8: -> atom
 19.5254 +                            {
 19.5255 +                                dbg.location(244,11);
 19.5256 +                                adaptor.addChild(root_0, stream_atom.nextTree());
 19.5257 +
 19.5258 +                            }
 19.5259 +
 19.5260 +                            retval.tree = root_0;}
 19.5261 +                            }
 19.5262 +                            break;
 19.5263 +
 19.5264 +                    }
 19.5265 +                    } finally {dbg.exitSubRule(43);}
 19.5266 +
 19.5267 +
 19.5268 +                    }
 19.5269 +                    break;
 19.5270 +                case 4 :
 19.5271 +                    dbg.enterAlt(4);
 19.5272 +
 19.5273 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:246:4: ebnf
 19.5274 +                    {
 19.5275 +                    root_0 = (CommonTree)adaptor.nil();
 19.5276 +
 19.5277 +                    dbg.location(246,4);
 19.5278 +                    pushFollow(FOLLOW_ebnf_in_elementNoOptionSpec1702);
 19.5279 +                    ebnf101=ebnf();
 19.5280 +
 19.5281 +                    state._fsp--;
 19.5282 +                    if (state.failed) return retval;
 19.5283 +                    if ( state.backtracking==0 ) adaptor.addChild(root_0, ebnf101.getTree());
 19.5284 +
 19.5285 +                    }
 19.5286 +                    break;
 19.5287 +                case 5 :
 19.5288 +                    dbg.enterAlt(5);
 19.5289 +
 19.5290 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:247:6: ACTION
 19.5291 +                    {
 19.5292 +                    root_0 = (CommonTree)adaptor.nil();
 19.5293 +
 19.5294 +                    dbg.location(247,6);
 19.5295 +                    ACTION102=(Token)match(input,ACTION,FOLLOW_ACTION_in_elementNoOptionSpec1709); if (state.failed) return retval;
 19.5296 +                    if ( state.backtracking==0 ) {
 19.5297 +                    ACTION102_tree = (CommonTree)adaptor.create(ACTION102);
 19.5298 +                    adaptor.addChild(root_0, ACTION102_tree);
 19.5299 +                    }
 19.5300 +
 19.5301 +                    }
 19.5302 +                    break;
 19.5303 +                case 6 :
 19.5304 +                    dbg.enterAlt(6);
 19.5305 +
 19.5306 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:248:6: SEMPRED ( '=>' -> GATED_SEMPRED | -> SEMPRED )
 19.5307 +                    {
 19.5308 +                    dbg.location(248,6);
 19.5309 +                    SEMPRED103=(Token)match(input,SEMPRED,FOLLOW_SEMPRED_in_elementNoOptionSpec1716); if (state.failed) return retval; 
 19.5310 +                    if ( state.backtracking==0 ) stream_SEMPRED.add(SEMPRED103);
 19.5311 +
 19.5312 +                    dbg.location(248,14);
 19.5313 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:248:14: ( '=>' -> GATED_SEMPRED | -> SEMPRED )
 19.5314 +                    int alt44=2;
 19.5315 +                    try { dbg.enterSubRule(44);
 19.5316 +                    try { dbg.enterDecision(44, decisionCanBacktrack[44]);
 19.5317 +
 19.5318 +                    int LA44_0 = input.LA(1);
 19.5319 +
 19.5320 +                    if ( (LA44_0==88) ) {
 19.5321 +                        alt44=1;
 19.5322 +                    }
 19.5323 +                    else if ( (LA44_0==SEMPRED||LA44_0==TREE_BEGIN||LA44_0==REWRITE||(LA44_0>=TOKEN_REF && LA44_0<=ACTION)||LA44_0==RULE_REF||LA44_0==69||(LA44_0>=82 && LA44_0<=84)||LA44_0==89||LA44_0==92) ) {
 19.5324 +                        alt44=2;
 19.5325 +                    }
 19.5326 +                    else {
 19.5327 +                        if (state.backtracking>0) {state.failed=true; return retval;}
 19.5328 +                        NoViableAltException nvae =
 19.5329 +                            new NoViableAltException("", 44, 0, input);
 19.5330 +
 19.5331 +                        dbg.recognitionException(nvae);
 19.5332 +                        throw nvae;
 19.5333 +                    }
 19.5334 +                    } finally {dbg.exitDecision(44);}
 19.5335 +
 19.5336 +                    switch (alt44) {
 19.5337 +                        case 1 :
 19.5338 +                            dbg.enterAlt(1);
 19.5339 +
 19.5340 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:248:16: '=>'
 19.5341 +                            {
 19.5342 +                            dbg.location(248,16);
 19.5343 +                            string_literal104=(Token)match(input,88,FOLLOW_88_in_elementNoOptionSpec1720); if (state.failed) return retval; 
 19.5344 +                            if ( state.backtracking==0 ) stream_88.add(string_literal104);
 19.5345 +
 19.5346 +
 19.5347 +
 19.5348 +                            // AST REWRITE
 19.5349 +                            // elements: 
 19.5350 +                            // token labels: 
 19.5351 +                            // rule labels: retval
 19.5352 +                            // token list labels: 
 19.5353 +                            // rule list labels: 
 19.5354 +                            // wildcard labels: 
 19.5355 +                            if ( state.backtracking==0 ) {
 19.5356 +                            retval.tree = root_0;
 19.5357 +                            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.5358 +
 19.5359 +                            root_0 = (CommonTree)adaptor.nil();
 19.5360 +                            // 248:21: -> GATED_SEMPRED
 19.5361 +                            {
 19.5362 +                                dbg.location(248,24);
 19.5363 +                                adaptor.addChild(root_0, (CommonTree)adaptor.create(GATED_SEMPRED, "GATED_SEMPRED"));
 19.5364 +
 19.5365 +                            }
 19.5366 +
 19.5367 +                            retval.tree = root_0;}
 19.5368 +                            }
 19.5369 +                            break;
 19.5370 +                        case 2 :
 19.5371 +                            dbg.enterAlt(2);
 19.5372 +
 19.5373 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:248:40: 
 19.5374 +                            {
 19.5375 +
 19.5376 +                            // AST REWRITE
 19.5377 +                            // elements: SEMPRED
 19.5378 +                            // token labels: 
 19.5379 +                            // rule labels: retval
 19.5380 +                            // token list labels: 
 19.5381 +                            // rule list labels: 
 19.5382 +                            // wildcard labels: 
 19.5383 +                            if ( state.backtracking==0 ) {
 19.5384 +                            retval.tree = root_0;
 19.5385 +                            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.5386 +
 19.5387 +                            root_0 = (CommonTree)adaptor.nil();
 19.5388 +                            // 248:40: -> SEMPRED
 19.5389 +                            {
 19.5390 +                                dbg.location(248,43);
 19.5391 +                                adaptor.addChild(root_0, stream_SEMPRED.nextNode());
 19.5392 +
 19.5393 +                            }
 19.5394 +
 19.5395 +                            retval.tree = root_0;}
 19.5396 +                            }
 19.5397 +                            break;
 19.5398 +
 19.5399 +                    }
 19.5400 +                    } finally {dbg.exitSubRule(44);}
 19.5401 +
 19.5402 +
 19.5403 +                    }
 19.5404 +                    break;
 19.5405 +                case 7 :
 19.5406 +                    dbg.enterAlt(7);
 19.5407 +
 19.5408 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:249:6: treeSpec ( ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] treeSpec EOA[\"EOA\"] ) EOB[\"EOB\"] ) ) | -> treeSpec )
 19.5409 +                    {
 19.5410 +                    dbg.location(249,6);
 19.5411 +                    pushFollow(FOLLOW_treeSpec_in_elementNoOptionSpec1739);
 19.5412 +                    treeSpec105=treeSpec();
 19.5413 +
 19.5414 +                    state._fsp--;
 19.5415 +                    if (state.failed) return retval;
 19.5416 +                    if ( state.backtracking==0 ) stream_treeSpec.add(treeSpec105.getTree());
 19.5417 +                    dbg.location(250,3);
 19.5418 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:250:3: ( ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] treeSpec EOA[\"EOA\"] ) EOB[\"EOB\"] ) ) | -> treeSpec )
 19.5419 +                    int alt45=2;
 19.5420 +                    try { dbg.enterSubRule(45);
 19.5421 +                    try { dbg.enterDecision(45, decisionCanBacktrack[45]);
 19.5422 +
 19.5423 +                    int LA45_0 = input.LA(1);
 19.5424 +
 19.5425 +                    if ( (LA45_0==74||(LA45_0>=90 && LA45_0<=91)) ) {
 19.5426 +                        alt45=1;
 19.5427 +                    }
 19.5428 +                    else if ( (LA45_0==SEMPRED||LA45_0==TREE_BEGIN||LA45_0==REWRITE||(LA45_0>=TOKEN_REF && LA45_0<=ACTION)||LA45_0==RULE_REF||LA45_0==69||(LA45_0>=82 && LA45_0<=84)||LA45_0==89||LA45_0==92) ) {
 19.5429 +                        alt45=2;
 19.5430 +                    }
 19.5431 +                    else {
 19.5432 +                        if (state.backtracking>0) {state.failed=true; return retval;}
 19.5433 +                        NoViableAltException nvae =
 19.5434 +                            new NoViableAltException("", 45, 0, input);
 19.5435 +
 19.5436 +                        dbg.recognitionException(nvae);
 19.5437 +                        throw nvae;
 19.5438 +                    }
 19.5439 +                    } finally {dbg.exitDecision(45);}
 19.5440 +
 19.5441 +                    switch (alt45) {
 19.5442 +                        case 1 :
 19.5443 +                            dbg.enterAlt(1);
 19.5444 +
 19.5445 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:250:5: ebnfSuffix
 19.5446 +                            {
 19.5447 +                            dbg.location(250,5);
 19.5448 +                            pushFollow(FOLLOW_ebnfSuffix_in_elementNoOptionSpec1745);
 19.5449 +                            ebnfSuffix106=ebnfSuffix();
 19.5450 +
 19.5451 +                            state._fsp--;
 19.5452 +                            if (state.failed) return retval;
 19.5453 +                            if ( state.backtracking==0 ) stream_ebnfSuffix.add(ebnfSuffix106.getTree());
 19.5454 +
 19.5455 +
 19.5456 +                            // AST REWRITE
 19.5457 +                            // elements: ebnfSuffix, treeSpec
 19.5458 +                            // token labels: 
 19.5459 +                            // rule labels: retval
 19.5460 +                            // token list labels: 
 19.5461 +                            // rule list labels: 
 19.5462 +                            // wildcard labels: 
 19.5463 +                            if ( state.backtracking==0 ) {
 19.5464 +                            retval.tree = root_0;
 19.5465 +                            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.5466 +
 19.5467 +                            root_0 = (CommonTree)adaptor.nil();
 19.5468 +                            // 250:16: -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] treeSpec EOA[\"EOA\"] ) EOB[\"EOB\"] ) )
 19.5469 +                            {
 19.5470 +                                dbg.location(250,19);
 19.5471 +                                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:250:19: ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] treeSpec EOA[\"EOA\"] ) EOB[\"EOB\"] ) )
 19.5472 +                                {
 19.5473 +                                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.5474 +                                dbg.location(250,22);
 19.5475 +                                root_1 = (CommonTree)adaptor.becomeRoot(stream_ebnfSuffix.nextNode(), root_1);
 19.5476 +
 19.5477 +                                dbg.location(250,33);
 19.5478 +                                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:250:33: ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] treeSpec EOA[\"EOA\"] ) EOB[\"EOB\"] )
 19.5479 +                                {
 19.5480 +                                CommonTree root_2 = (CommonTree)adaptor.nil();
 19.5481 +                                dbg.location(250,35);
 19.5482 +                                root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(BLOCK, "BLOCK"), root_2);
 19.5483 +
 19.5484 +                                dbg.location(250,50);
 19.5485 +                                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:250:50: ^( ALT[\"ALT\"] treeSpec EOA[\"EOA\"] )
 19.5486 +                                {
 19.5487 +                                CommonTree root_3 = (CommonTree)adaptor.nil();
 19.5488 +                                dbg.location(250,52);
 19.5489 +                                root_3 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(ALT, "ALT"), root_3);
 19.5490 +
 19.5491 +                                dbg.location(250,63);
 19.5492 +                                adaptor.addChild(root_3, stream_treeSpec.nextTree());
 19.5493 +                                dbg.location(250,72);
 19.5494 +                                adaptor.addChild(root_3, (CommonTree)adaptor.create(EOA, "EOA"));
 19.5495 +
 19.5496 +                                adaptor.addChild(root_2, root_3);
 19.5497 +                                }
 19.5498 +                                dbg.location(250,84);
 19.5499 +                                adaptor.addChild(root_2, (CommonTree)adaptor.create(EOB, "EOB"));
 19.5500 +
 19.5501 +                                adaptor.addChild(root_1, root_2);
 19.5502 +                                }
 19.5503 +
 19.5504 +                                adaptor.addChild(root_0, root_1);
 19.5505 +                                }
 19.5506 +
 19.5507 +                            }
 19.5508 +
 19.5509 +                            retval.tree = root_0;}
 19.5510 +                            }
 19.5511 +                            break;
 19.5512 +                        case 2 :
 19.5513 +                            dbg.enterAlt(2);
 19.5514 +
 19.5515 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:251:8: 
 19.5516 +                            {
 19.5517 +
 19.5518 +                            // AST REWRITE
 19.5519 +                            // elements: treeSpec
 19.5520 +                            // token labels: 
 19.5521 +                            // rule labels: retval
 19.5522 +                            // token list labels: 
 19.5523 +                            // rule list labels: 
 19.5524 +                            // wildcard labels: 
 19.5525 +                            if ( state.backtracking==0 ) {
 19.5526 +                            retval.tree = root_0;
 19.5527 +                            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.5528 +
 19.5529 +                            root_0 = (CommonTree)adaptor.nil();
 19.5530 +                            // 251:8: -> treeSpec
 19.5531 +                            {
 19.5532 +                                dbg.location(251,11);
 19.5533 +                                adaptor.addChild(root_0, stream_treeSpec.nextTree());
 19.5534 +
 19.5535 +                            }
 19.5536 +
 19.5537 +                            retval.tree = root_0;}
 19.5538 +                            }
 19.5539 +                            break;
 19.5540 +
 19.5541 +                    }
 19.5542 +                    } finally {dbg.exitSubRule(45);}
 19.5543 +
 19.5544 +
 19.5545 +                    }
 19.5546 +                    break;
 19.5547 +
 19.5548 +            }
 19.5549 +            retval.stop = input.LT(-1);
 19.5550 +
 19.5551 +            if ( state.backtracking==0 ) {
 19.5552 +
 19.5553 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.5554 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.5555 +            }
 19.5556 +        }
 19.5557 +        catch (RecognitionException re) {
 19.5558 +            reportError(re);
 19.5559 +            recover(input,re);
 19.5560 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.5561 +
 19.5562 +        }
 19.5563 +        finally {
 19.5564 +        }
 19.5565 +        dbg.location(253, 2);
 19.5566 +
 19.5567 +        }
 19.5568 +        finally {
 19.5569 +            dbg.exitRule(getGrammarFileName(), "elementNoOptionSpec");
 19.5570 +            decRuleLevel();
 19.5571 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.5572 +        }
 19.5573 +
 19.5574 +        return retval;
 19.5575 +    }
 19.5576 +    // $ANTLR end "elementNoOptionSpec"
 19.5577 +
 19.5578 +    public static class atom_return extends ParserRuleReturnScope {
 19.5579 +        CommonTree tree;
 19.5580 +        public Object getTree() { return tree; }
 19.5581 +    };
 19.5582 +
 19.5583 +    // $ANTLR start "atom"
 19.5584 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:255:1: atom : ( range ( (op= '^' | op= '!' ) -> ^( $op range ) | -> range ) | terminal | notSet ( (op= '^' | op= '!' ) -> ^( $op notSet ) | -> notSet ) | RULE_REF (arg= ARG_ACTION )? ( (op= '^' | op= '!' ) )? -> {$arg!=null&&op!=null}? ^( $op RULE_REF $arg) -> {$arg!=null}? ^( RULE_REF $arg) -> {$op!=null}? ^( $op RULE_REF ) -> RULE_REF );
 19.5585 +    public final ANTLRv3Parser.atom_return atom() throws RecognitionException {
 19.5586 +        ANTLRv3Parser.atom_return retval = new ANTLRv3Parser.atom_return();
 19.5587 +        retval.start = input.LT(1);
 19.5588 +
 19.5589 +        CommonTree root_0 = null;
 19.5590 +
 19.5591 +        Token op=null;
 19.5592 +        Token arg=null;
 19.5593 +        Token RULE_REF110=null;
 19.5594 +        ANTLRv3Parser.range_return range107 = null;
 19.5595 +
 19.5596 +        ANTLRv3Parser.terminal_return terminal108 = null;
 19.5597 +
 19.5598 +        ANTLRv3Parser.notSet_return notSet109 = null;
 19.5599 +
 19.5600 +
 19.5601 +        CommonTree op_tree=null;
 19.5602 +        CommonTree arg_tree=null;
 19.5603 +        CommonTree RULE_REF110_tree=null;
 19.5604 +        RewriteRuleTokenStream stream_BANG=new RewriteRuleTokenStream(adaptor,"token BANG");
 19.5605 +        RewriteRuleTokenStream stream_ROOT=new RewriteRuleTokenStream(adaptor,"token ROOT");
 19.5606 +        RewriteRuleTokenStream stream_RULE_REF=new RewriteRuleTokenStream(adaptor,"token RULE_REF");
 19.5607 +        RewriteRuleTokenStream stream_ARG_ACTION=new RewriteRuleTokenStream(adaptor,"token ARG_ACTION");
 19.5608 +        RewriteRuleSubtreeStream stream_range=new RewriteRuleSubtreeStream(adaptor,"rule range");
 19.5609 +        RewriteRuleSubtreeStream stream_notSet=new RewriteRuleSubtreeStream(adaptor,"rule notSet");
 19.5610 +        try { dbg.enterRule(getGrammarFileName(), "atom");
 19.5611 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.5612 +        incRuleLevel();
 19.5613 +        dbg.location(255, 1);
 19.5614 +
 19.5615 +        try {
 19.5616 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:255:5: ( range ( (op= '^' | op= '!' ) -> ^( $op range ) | -> range ) | terminal | notSet ( (op= '^' | op= '!' ) -> ^( $op notSet ) | -> notSet ) | RULE_REF (arg= ARG_ACTION )? ( (op= '^' | op= '!' ) )? -> {$arg!=null&&op!=null}? ^( $op RULE_REF $arg) -> {$arg!=null}? ^( RULE_REF $arg) -> {$op!=null}? ^( $op RULE_REF ) -> RULE_REF )
 19.5617 +            int alt54=4;
 19.5618 +            try { dbg.enterDecision(54, decisionCanBacktrack[54]);
 19.5619 +
 19.5620 +            switch ( input.LA(1) ) {
 19.5621 +            case CHAR_LITERAL:
 19.5622 +                {
 19.5623 +                int LA54_1 = input.LA(2);
 19.5624 +
 19.5625 +                if ( (LA54_1==RANGE) ) {
 19.5626 +                    alt54=1;
 19.5627 +                }
 19.5628 +                else if ( (LA54_1==SEMPRED||(LA54_1>=TREE_BEGIN && LA54_1<=REWRITE)||(LA54_1>=TOKEN_REF && LA54_1<=ACTION)||LA54_1==RULE_REF||LA54_1==69||LA54_1==74||(LA54_1>=82 && LA54_1<=84)||(LA54_1>=89 && LA54_1<=92)) ) {
 19.5629 +                    alt54=2;
 19.5630 +                }
 19.5631 +                else {
 19.5632 +                    if (state.backtracking>0) {state.failed=true; return retval;}
 19.5633 +                    NoViableAltException nvae =
 19.5634 +                        new NoViableAltException("", 54, 1, input);
 19.5635 +
 19.5636 +                    dbg.recognitionException(nvae);
 19.5637 +                    throw nvae;
 19.5638 +                }
 19.5639 +                }
 19.5640 +                break;
 19.5641 +            case TOKEN_REF:
 19.5642 +            case STRING_LITERAL:
 19.5643 +            case 92:
 19.5644 +                {
 19.5645 +                alt54=2;
 19.5646 +                }
 19.5647 +                break;
 19.5648 +            case 89:
 19.5649 +                {
 19.5650 +                alt54=3;
 19.5651 +                }
 19.5652 +                break;
 19.5653 +            case RULE_REF:
 19.5654 +                {
 19.5655 +                alt54=4;
 19.5656 +                }
 19.5657 +                break;
 19.5658 +            default:
 19.5659 +                if (state.backtracking>0) {state.failed=true; return retval;}
 19.5660 +                NoViableAltException nvae =
 19.5661 +                    new NoViableAltException("", 54, 0, input);
 19.5662 +
 19.5663 +                dbg.recognitionException(nvae);
 19.5664 +                throw nvae;
 19.5665 +            }
 19.5666 +
 19.5667 +            } finally {dbg.exitDecision(54);}
 19.5668 +
 19.5669 +            switch (alt54) {
 19.5670 +                case 1 :
 19.5671 +                    dbg.enterAlt(1);
 19.5672 +
 19.5673 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:255:9: range ( (op= '^' | op= '!' ) -> ^( $op range ) | -> range )
 19.5674 +                    {
 19.5675 +                    dbg.location(255,9);
 19.5676 +                    pushFollow(FOLLOW_range_in_atom1797);
 19.5677 +                    range107=range();
 19.5678 +
 19.5679 +                    state._fsp--;
 19.5680 +                    if (state.failed) return retval;
 19.5681 +                    if ( state.backtracking==0 ) stream_range.add(range107.getTree());
 19.5682 +                    dbg.location(255,15);
 19.5683 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:255:15: ( (op= '^' | op= '!' ) -> ^( $op range ) | -> range )
 19.5684 +                    int alt48=2;
 19.5685 +                    try { dbg.enterSubRule(48);
 19.5686 +                    try { dbg.enterDecision(48, decisionCanBacktrack[48]);
 19.5687 +
 19.5688 +                    int LA48_0 = input.LA(1);
 19.5689 +
 19.5690 +                    if ( ((LA48_0>=ROOT && LA48_0<=BANG)) ) {
 19.5691 +                        alt48=1;
 19.5692 +                    }
 19.5693 +                    else if ( (LA48_0==SEMPRED||LA48_0==TREE_BEGIN||LA48_0==REWRITE||(LA48_0>=TOKEN_REF && LA48_0<=ACTION)||LA48_0==RULE_REF||LA48_0==69||LA48_0==74||(LA48_0>=82 && LA48_0<=84)||(LA48_0>=89 && LA48_0<=92)) ) {
 19.5694 +                        alt48=2;
 19.5695 +                    }
 19.5696 +                    else {
 19.5697 +                        if (state.backtracking>0) {state.failed=true; return retval;}
 19.5698 +                        NoViableAltException nvae =
 19.5699 +                            new NoViableAltException("", 48, 0, input);
 19.5700 +
 19.5701 +                        dbg.recognitionException(nvae);
 19.5702 +                        throw nvae;
 19.5703 +                    }
 19.5704 +                    } finally {dbg.exitDecision(48);}
 19.5705 +
 19.5706 +                    switch (alt48) {
 19.5707 +                        case 1 :
 19.5708 +                            dbg.enterAlt(1);
 19.5709 +
 19.5710 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:255:17: (op= '^' | op= '!' )
 19.5711 +                            {
 19.5712 +                            dbg.location(255,17);
 19.5713 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:255:17: (op= '^' | op= '!' )
 19.5714 +                            int alt47=2;
 19.5715 +                            try { dbg.enterSubRule(47);
 19.5716 +                            try { dbg.enterDecision(47, decisionCanBacktrack[47]);
 19.5717 +
 19.5718 +                            int LA47_0 = input.LA(1);
 19.5719 +
 19.5720 +                            if ( (LA47_0==ROOT) ) {
 19.5721 +                                alt47=1;
 19.5722 +                            }
 19.5723 +                            else if ( (LA47_0==BANG) ) {
 19.5724 +                                alt47=2;
 19.5725 +                            }
 19.5726 +                            else {
 19.5727 +                                if (state.backtracking>0) {state.failed=true; return retval;}
 19.5728 +                                NoViableAltException nvae =
 19.5729 +                                    new NoViableAltException("", 47, 0, input);
 19.5730 +
 19.5731 +                                dbg.recognitionException(nvae);
 19.5732 +                                throw nvae;
 19.5733 +                            }
 19.5734 +                            } finally {dbg.exitDecision(47);}
 19.5735 +
 19.5736 +                            switch (alt47) {
 19.5737 +                                case 1 :
 19.5738 +                                    dbg.enterAlt(1);
 19.5739 +
 19.5740 +                                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:255:18: op= '^'
 19.5741 +                                    {
 19.5742 +                                    dbg.location(255,20);
 19.5743 +                                    op=(Token)match(input,ROOT,FOLLOW_ROOT_in_atom1804); if (state.failed) return retval; 
 19.5744 +                                    if ( state.backtracking==0 ) stream_ROOT.add(op);
 19.5745 +
 19.5746 +
 19.5747 +                                    }
 19.5748 +                                    break;
 19.5749 +                                case 2 :
 19.5750 +                                    dbg.enterAlt(2);
 19.5751 +
 19.5752 +                                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:255:25: op= '!'
 19.5753 +                                    {
 19.5754 +                                    dbg.location(255,27);
 19.5755 +                                    op=(Token)match(input,BANG,FOLLOW_BANG_in_atom1808); if (state.failed) return retval; 
 19.5756 +                                    if ( state.backtracking==0 ) stream_BANG.add(op);
 19.5757 +
 19.5758 +
 19.5759 +                                    }
 19.5760 +                                    break;
 19.5761 +
 19.5762 +                            }
 19.5763 +                            } finally {dbg.exitSubRule(47);}
 19.5764 +
 19.5765 +
 19.5766 +
 19.5767 +                            // AST REWRITE
 19.5768 +                            // elements: op, range
 19.5769 +                            // token labels: op
 19.5770 +                            // rule labels: retval
 19.5771 +                            // token list labels: 
 19.5772 +                            // rule list labels: 
 19.5773 +                            // wildcard labels: 
 19.5774 +                            if ( state.backtracking==0 ) {
 19.5775 +                            retval.tree = root_0;
 19.5776 +                            RewriteRuleTokenStream stream_op=new RewriteRuleTokenStream(adaptor,"token op",op);
 19.5777 +                            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.5778 +
 19.5779 +                            root_0 = (CommonTree)adaptor.nil();
 19.5780 +                            // 255:33: -> ^( $op range )
 19.5781 +                            {
 19.5782 +                                dbg.location(255,36);
 19.5783 +                                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:255:36: ^( $op range )
 19.5784 +                                {
 19.5785 +                                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.5786 +                                dbg.location(255,38);
 19.5787 +                                root_1 = (CommonTree)adaptor.becomeRoot(stream_op.nextNode(), root_1);
 19.5788 +
 19.5789 +                                dbg.location(255,42);
 19.5790 +                                adaptor.addChild(root_1, stream_range.nextTree());
 19.5791 +
 19.5792 +                                adaptor.addChild(root_0, root_1);
 19.5793 +                                }
 19.5794 +
 19.5795 +                            }
 19.5796 +
 19.5797 +                            retval.tree = root_0;}
 19.5798 +                            }
 19.5799 +                            break;
 19.5800 +                        case 2 :
 19.5801 +                            dbg.enterAlt(2);
 19.5802 +
 19.5803 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:255:51: 
 19.5804 +                            {
 19.5805 +
 19.5806 +                            // AST REWRITE
 19.5807 +                            // elements: range
 19.5808 +                            // token labels: 
 19.5809 +                            // rule labels: retval
 19.5810 +                            // token list labels: 
 19.5811 +                            // rule list labels: 
 19.5812 +                            // wildcard labels: 
 19.5813 +                            if ( state.backtracking==0 ) {
 19.5814 +                            retval.tree = root_0;
 19.5815 +                            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.5816 +
 19.5817 +                            root_0 = (CommonTree)adaptor.nil();
 19.5818 +                            // 255:51: -> range
 19.5819 +                            {
 19.5820 +                                dbg.location(255,54);
 19.5821 +                                adaptor.addChild(root_0, stream_range.nextTree());
 19.5822 +
 19.5823 +                            }
 19.5824 +
 19.5825 +                            retval.tree = root_0;}
 19.5826 +                            }
 19.5827 +                            break;
 19.5828 +
 19.5829 +                    }
 19.5830 +                    } finally {dbg.exitSubRule(48);}
 19.5831 +
 19.5832 +
 19.5833 +                    }
 19.5834 +                    break;
 19.5835 +                case 2 :
 19.5836 +                    dbg.enterAlt(2);
 19.5837 +
 19.5838 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:256:9: terminal
 19.5839 +                    {
 19.5840 +                    root_0 = (CommonTree)adaptor.nil();
 19.5841 +
 19.5842 +                    dbg.location(256,9);
 19.5843 +                    pushFollow(FOLLOW_terminal_in_atom1836);
 19.5844 +                    terminal108=terminal();
 19.5845 +
 19.5846 +                    state._fsp--;
 19.5847 +                    if (state.failed) return retval;
 19.5848 +                    if ( state.backtracking==0 ) adaptor.addChild(root_0, terminal108.getTree());
 19.5849 +
 19.5850 +                    }
 19.5851 +                    break;
 19.5852 +                case 3 :
 19.5853 +                    dbg.enterAlt(3);
 19.5854 +
 19.5855 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:257:7: notSet ( (op= '^' | op= '!' ) -> ^( $op notSet ) | -> notSet )
 19.5856 +                    {
 19.5857 +                    dbg.location(257,7);
 19.5858 +                    pushFollow(FOLLOW_notSet_in_atom1844);
 19.5859 +                    notSet109=notSet();
 19.5860 +
 19.5861 +                    state._fsp--;
 19.5862 +                    if (state.failed) return retval;
 19.5863 +                    if ( state.backtracking==0 ) stream_notSet.add(notSet109.getTree());
 19.5864 +                    dbg.location(257,14);
 19.5865 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:257:14: ( (op= '^' | op= '!' ) -> ^( $op notSet ) | -> notSet )
 19.5866 +                    int alt50=2;
 19.5867 +                    try { dbg.enterSubRule(50);
 19.5868 +                    try { dbg.enterDecision(50, decisionCanBacktrack[50]);
 19.5869 +
 19.5870 +                    int LA50_0 = input.LA(1);
 19.5871 +
 19.5872 +                    if ( ((LA50_0>=ROOT && LA50_0<=BANG)) ) {
 19.5873 +                        alt50=1;
 19.5874 +                    }
 19.5875 +                    else if ( (LA50_0==SEMPRED||LA50_0==TREE_BEGIN||LA50_0==REWRITE||(LA50_0>=TOKEN_REF && LA50_0<=ACTION)||LA50_0==RULE_REF||LA50_0==69||LA50_0==74||(LA50_0>=82 && LA50_0<=84)||(LA50_0>=89 && LA50_0<=92)) ) {
 19.5876 +                        alt50=2;
 19.5877 +                    }
 19.5878 +                    else {
 19.5879 +                        if (state.backtracking>0) {state.failed=true; return retval;}
 19.5880 +                        NoViableAltException nvae =
 19.5881 +                            new NoViableAltException("", 50, 0, input);
 19.5882 +
 19.5883 +                        dbg.recognitionException(nvae);
 19.5884 +                        throw nvae;
 19.5885 +                    }
 19.5886 +                    } finally {dbg.exitDecision(50);}
 19.5887 +
 19.5888 +                    switch (alt50) {
 19.5889 +                        case 1 :
 19.5890 +                            dbg.enterAlt(1);
 19.5891 +
 19.5892 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:257:16: (op= '^' | op= '!' )
 19.5893 +                            {
 19.5894 +                            dbg.location(257,16);
 19.5895 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:257:16: (op= '^' | op= '!' )
 19.5896 +                            int alt49=2;
 19.5897 +                            try { dbg.enterSubRule(49);
 19.5898 +                            try { dbg.enterDecision(49, decisionCanBacktrack[49]);
 19.5899 +
 19.5900 +                            int LA49_0 = input.LA(1);
 19.5901 +
 19.5902 +                            if ( (LA49_0==ROOT) ) {
 19.5903 +                                alt49=1;
 19.5904 +                            }
 19.5905 +                            else if ( (LA49_0==BANG) ) {
 19.5906 +                                alt49=2;
 19.5907 +                            }
 19.5908 +                            else {
 19.5909 +                                if (state.backtracking>0) {state.failed=true; return retval;}
 19.5910 +                                NoViableAltException nvae =
 19.5911 +                                    new NoViableAltException("", 49, 0, input);
 19.5912 +
 19.5913 +                                dbg.recognitionException(nvae);
 19.5914 +                                throw nvae;
 19.5915 +                            }
 19.5916 +                            } finally {dbg.exitDecision(49);}
 19.5917 +
 19.5918 +                            switch (alt49) {
 19.5919 +                                case 1 :
 19.5920 +                                    dbg.enterAlt(1);
 19.5921 +
 19.5922 +                                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:257:17: op= '^'
 19.5923 +                                    {
 19.5924 +                                    dbg.location(257,19);
 19.5925 +                                    op=(Token)match(input,ROOT,FOLLOW_ROOT_in_atom1851); if (state.failed) return retval; 
 19.5926 +                                    if ( state.backtracking==0 ) stream_ROOT.add(op);
 19.5927 +
 19.5928 +
 19.5929 +                                    }
 19.5930 +                                    break;
 19.5931 +                                case 2 :
 19.5932 +                                    dbg.enterAlt(2);
 19.5933 +
 19.5934 +                                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:257:24: op= '!'
 19.5935 +                                    {
 19.5936 +                                    dbg.location(257,26);
 19.5937 +                                    op=(Token)match(input,BANG,FOLLOW_BANG_in_atom1855); if (state.failed) return retval; 
 19.5938 +                                    if ( state.backtracking==0 ) stream_BANG.add(op);
 19.5939 +
 19.5940 +
 19.5941 +                                    }
 19.5942 +                                    break;
 19.5943 +
 19.5944 +                            }
 19.5945 +                            } finally {dbg.exitSubRule(49);}
 19.5946 +
 19.5947 +
 19.5948 +
 19.5949 +                            // AST REWRITE
 19.5950 +                            // elements: notSet, op
 19.5951 +                            // token labels: op
 19.5952 +                            // rule labels: retval
 19.5953 +                            // token list labels: 
 19.5954 +                            // rule list labels: 
 19.5955 +                            // wildcard labels: 
 19.5956 +                            if ( state.backtracking==0 ) {
 19.5957 +                            retval.tree = root_0;
 19.5958 +                            RewriteRuleTokenStream stream_op=new RewriteRuleTokenStream(adaptor,"token op",op);
 19.5959 +                            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.5960 +
 19.5961 +                            root_0 = (CommonTree)adaptor.nil();
 19.5962 +                            // 257:32: -> ^( $op notSet )
 19.5963 +                            {
 19.5964 +                                dbg.location(257,35);
 19.5965 +                                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:257:35: ^( $op notSet )
 19.5966 +                                {
 19.5967 +                                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.5968 +                                dbg.location(257,37);
 19.5969 +                                root_1 = (CommonTree)adaptor.becomeRoot(stream_op.nextNode(), root_1);
 19.5970 +
 19.5971 +                                dbg.location(257,41);
 19.5972 +                                adaptor.addChild(root_1, stream_notSet.nextTree());
 19.5973 +
 19.5974 +                                adaptor.addChild(root_0, root_1);
 19.5975 +                                }
 19.5976 +
 19.5977 +                            }
 19.5978 +
 19.5979 +                            retval.tree = root_0;}
 19.5980 +                            }
 19.5981 +                            break;
 19.5982 +                        case 2 :
 19.5983 +                            dbg.enterAlt(2);
 19.5984 +
 19.5985 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:257:51: 
 19.5986 +                            {
 19.5987 +
 19.5988 +                            // AST REWRITE
 19.5989 +                            // elements: notSet
 19.5990 +                            // token labels: 
 19.5991 +                            // rule labels: retval
 19.5992 +                            // token list labels: 
 19.5993 +                            // rule list labels: 
 19.5994 +                            // wildcard labels: 
 19.5995 +                            if ( state.backtracking==0 ) {
 19.5996 +                            retval.tree = root_0;
 19.5997 +                            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.5998 +
 19.5999 +                            root_0 = (CommonTree)adaptor.nil();
 19.6000 +                            // 257:51: -> notSet
 19.6001 +                            {
 19.6002 +                                dbg.location(257,54);
 19.6003 +                                adaptor.addChild(root_0, stream_notSet.nextTree());
 19.6004 +
 19.6005 +                            }
 19.6006 +
 19.6007 +                            retval.tree = root_0;}
 19.6008 +                            }
 19.6009 +                            break;
 19.6010 +
 19.6011 +                    }
 19.6012 +                    } finally {dbg.exitSubRule(50);}
 19.6013 +
 19.6014 +
 19.6015 +                    }
 19.6016 +                    break;
 19.6017 +                case 4 :
 19.6018 +                    dbg.enterAlt(4);
 19.6019 +
 19.6020 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:258:9: RULE_REF (arg= ARG_ACTION )? ( (op= '^' | op= '!' ) )?
 19.6021 +                    {
 19.6022 +                    dbg.location(258,9);
 19.6023 +                    RULE_REF110=(Token)match(input,RULE_REF,FOLLOW_RULE_REF_in_atom1883); if (state.failed) return retval; 
 19.6024 +                    if ( state.backtracking==0 ) stream_RULE_REF.add(RULE_REF110);
 19.6025 +
 19.6026 +                    dbg.location(258,18);
 19.6027 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:258:18: (arg= ARG_ACTION )?
 19.6028 +                    int alt51=2;
 19.6029 +                    try { dbg.enterSubRule(51);
 19.6030 +                    try { dbg.enterDecision(51, decisionCanBacktrack[51]);
 19.6031 +
 19.6032 +                    int LA51_0 = input.LA(1);
 19.6033 +
 19.6034 +                    if ( (LA51_0==ARG_ACTION) ) {
 19.6035 +                        alt51=1;
 19.6036 +                    }
 19.6037 +                    } finally {dbg.exitDecision(51);}
 19.6038 +
 19.6039 +                    switch (alt51) {
 19.6040 +                        case 1 :
 19.6041 +                            dbg.enterAlt(1);
 19.6042 +
 19.6043 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:258:20: arg= ARG_ACTION
 19.6044 +                            {
 19.6045 +                            dbg.location(258,23);
 19.6046 +                            arg=(Token)match(input,ARG_ACTION,FOLLOW_ARG_ACTION_in_atom1889); if (state.failed) return retval; 
 19.6047 +                            if ( state.backtracking==0 ) stream_ARG_ACTION.add(arg);
 19.6048 +
 19.6049 +
 19.6050 +                            }
 19.6051 +                            break;
 19.6052 +
 19.6053 +                    }
 19.6054 +                    } finally {dbg.exitSubRule(51);}
 19.6055 +
 19.6056 +                    dbg.location(258,38);
 19.6057 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:258:38: ( (op= '^' | op= '!' ) )?
 19.6058 +                    int alt53=2;
 19.6059 +                    try { dbg.enterSubRule(53);
 19.6060 +                    try { dbg.enterDecision(53, decisionCanBacktrack[53]);
 19.6061 +
 19.6062 +                    int LA53_0 = input.LA(1);
 19.6063 +
 19.6064 +                    if ( ((LA53_0>=ROOT && LA53_0<=BANG)) ) {
 19.6065 +                        alt53=1;
 19.6066 +                    }
 19.6067 +                    } finally {dbg.exitDecision(53);}
 19.6068 +
 19.6069 +                    switch (alt53) {
 19.6070 +                        case 1 :
 19.6071 +                            dbg.enterAlt(1);
 19.6072 +
 19.6073 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:258:40: (op= '^' | op= '!' )
 19.6074 +                            {
 19.6075 +                            dbg.location(258,40);
 19.6076 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:258:40: (op= '^' | op= '!' )
 19.6077 +                            int alt52=2;
 19.6078 +                            try { dbg.enterSubRule(52);
 19.6079 +                            try { dbg.enterDecision(52, decisionCanBacktrack[52]);
 19.6080 +
 19.6081 +                            int LA52_0 = input.LA(1);
 19.6082 +
 19.6083 +                            if ( (LA52_0==ROOT) ) {
 19.6084 +                                alt52=1;
 19.6085 +                            }
 19.6086 +                            else if ( (LA52_0==BANG) ) {
 19.6087 +                                alt52=2;
 19.6088 +                            }
 19.6089 +                            else {
 19.6090 +                                if (state.backtracking>0) {state.failed=true; return retval;}
 19.6091 +                                NoViableAltException nvae =
 19.6092 +                                    new NoViableAltException("", 52, 0, input);
 19.6093 +
 19.6094 +                                dbg.recognitionException(nvae);
 19.6095 +                                throw nvae;
 19.6096 +                            }
 19.6097 +                            } finally {dbg.exitDecision(52);}
 19.6098 +
 19.6099 +                            switch (alt52) {
 19.6100 +                                case 1 :
 19.6101 +                                    dbg.enterAlt(1);
 19.6102 +
 19.6103 +                                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:258:41: op= '^'
 19.6104 +                                    {
 19.6105 +                                    dbg.location(258,43);
 19.6106 +                                    op=(Token)match(input,ROOT,FOLLOW_ROOT_in_atom1899); if (state.failed) return retval; 
 19.6107 +                                    if ( state.backtracking==0 ) stream_ROOT.add(op);
 19.6108 +
 19.6109 +
 19.6110 +                                    }
 19.6111 +                                    break;
 19.6112 +                                case 2 :
 19.6113 +                                    dbg.enterAlt(2);
 19.6114 +
 19.6115 +                                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:258:48: op= '!'
 19.6116 +                                    {
 19.6117 +                                    dbg.location(258,50);
 19.6118 +                                    op=(Token)match(input,BANG,FOLLOW_BANG_in_atom1903); if (state.failed) return retval; 
 19.6119 +                                    if ( state.backtracking==0 ) stream_BANG.add(op);
 19.6120 +
 19.6121 +
 19.6122 +                                    }
 19.6123 +                                    break;
 19.6124 +
 19.6125 +                            }
 19.6126 +                            } finally {dbg.exitSubRule(52);}
 19.6127 +
 19.6128 +
 19.6129 +                            }
 19.6130 +                            break;
 19.6131 +
 19.6132 +                    }
 19.6133 +                    } finally {dbg.exitSubRule(53);}
 19.6134 +
 19.6135 +
 19.6136 +
 19.6137 +                    // AST REWRITE
 19.6138 +                    // elements: op, op, RULE_REF, arg, RULE_REF, RULE_REF, RULE_REF, arg
 19.6139 +                    // token labels: arg, op
 19.6140 +                    // rule labels: retval
 19.6141 +                    // token list labels: 
 19.6142 +                    // rule list labels: 
 19.6143 +                    // wildcard labels: 
 19.6144 +                    if ( state.backtracking==0 ) {
 19.6145 +                    retval.tree = root_0;
 19.6146 +                    RewriteRuleTokenStream stream_arg=new RewriteRuleTokenStream(adaptor,"token arg",arg);
 19.6147 +                    RewriteRuleTokenStream stream_op=new RewriteRuleTokenStream(adaptor,"token op",op);
 19.6148 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.6149 +
 19.6150 +                    root_0 = (CommonTree)adaptor.nil();
 19.6151 +                    // 259:6: -> {$arg!=null&&op!=null}? ^( $op RULE_REF $arg)
 19.6152 +                    if (arg!=null&&op!=null) {
 19.6153 +                        dbg.location(259,33);
 19.6154 +                        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:259:33: ^( $op RULE_REF $arg)
 19.6155 +                        {
 19.6156 +                        CommonTree root_1 = (CommonTree)adaptor.nil();
 19.6157 +                        dbg.location(259,35);
 19.6158 +                        root_1 = (CommonTree)adaptor.becomeRoot(stream_op.nextNode(), root_1);
 19.6159 +
 19.6160 +                        dbg.location(259,39);
 19.6161 +                        adaptor.addChild(root_1, stream_RULE_REF.nextNode());
 19.6162 +                        dbg.location(259,48);
 19.6163 +                        adaptor.addChild(root_1, stream_arg.nextNode());
 19.6164 +
 19.6165 +                        adaptor.addChild(root_0, root_1);
 19.6166 +                        }
 19.6167 +
 19.6168 +                    }
 19.6169 +                    else // 260:6: -> {$arg!=null}? ^( RULE_REF $arg)
 19.6170 +                    if (arg!=null) {
 19.6171 +                        dbg.location(260,25);
 19.6172 +                        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:260:25: ^( RULE_REF $arg)
 19.6173 +                        {
 19.6174 +                        CommonTree root_1 = (CommonTree)adaptor.nil();
 19.6175 +                        dbg.location(260,27);
 19.6176 +                        root_1 = (CommonTree)adaptor.becomeRoot(stream_RULE_REF.nextNode(), root_1);
 19.6177 +
 19.6178 +                        dbg.location(260,36);
 19.6179 +                        adaptor.addChild(root_1, stream_arg.nextNode());
 19.6180 +
 19.6181 +                        adaptor.addChild(root_0, root_1);
 19.6182 +                        }
 19.6183 +
 19.6184 +                    }
 19.6185 +                    else // 261:6: -> {$op!=null}? ^( $op RULE_REF )
 19.6186 +                    if (op!=null) {
 19.6187 +                        dbg.location(261,25);
 19.6188 +                        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:261:25: ^( $op RULE_REF )
 19.6189 +                        {
 19.6190 +                        CommonTree root_1 = (CommonTree)adaptor.nil();
 19.6191 +                        dbg.location(261,27);
 19.6192 +                        root_1 = (CommonTree)adaptor.becomeRoot(stream_op.nextNode(), root_1);
 19.6193 +
 19.6194 +                        dbg.location(261,31);
 19.6195 +                        adaptor.addChild(root_1, stream_RULE_REF.nextNode());
 19.6196 +
 19.6197 +                        adaptor.addChild(root_0, root_1);
 19.6198 +                        }
 19.6199 +
 19.6200 +                    }
 19.6201 +                    else // 262:6: -> RULE_REF
 19.6202 +                    {
 19.6203 +                        dbg.location(262,9);
 19.6204 +                        adaptor.addChild(root_0, stream_RULE_REF.nextNode());
 19.6205 +
 19.6206 +                    }
 19.6207 +
 19.6208 +                    retval.tree = root_0;}
 19.6209 +                    }
 19.6210 +                    break;
 19.6211 +
 19.6212 +            }
 19.6213 +            retval.stop = input.LT(-1);
 19.6214 +
 19.6215 +            if ( state.backtracking==0 ) {
 19.6216 +
 19.6217 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.6218 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.6219 +            }
 19.6220 +        }
 19.6221 +        catch (RecognitionException re) {
 19.6222 +            reportError(re);
 19.6223 +            recover(input,re);
 19.6224 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.6225 +
 19.6226 +        }
 19.6227 +        finally {
 19.6228 +        }
 19.6229 +        dbg.location(263, 5);
 19.6230 +
 19.6231 +        }
 19.6232 +        finally {
 19.6233 +            dbg.exitRule(getGrammarFileName(), "atom");
 19.6234 +            decRuleLevel();
 19.6235 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.6236 +        }
 19.6237 +
 19.6238 +        return retval;
 19.6239 +    }
 19.6240 +    // $ANTLR end "atom"
 19.6241 +
 19.6242 +    public static class notSet_return extends ParserRuleReturnScope {
 19.6243 +        CommonTree tree;
 19.6244 +        public Object getTree() { return tree; }
 19.6245 +    };
 19.6246 +
 19.6247 +    // $ANTLR start "notSet"
 19.6248 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:265:1: notSet : '~' ( notTerminal -> ^( '~' notTerminal ) | block -> ^( '~' block ) ) ;
 19.6249 +    public final ANTLRv3Parser.notSet_return notSet() throws RecognitionException {
 19.6250 +        ANTLRv3Parser.notSet_return retval = new ANTLRv3Parser.notSet_return();
 19.6251 +        retval.start = input.LT(1);
 19.6252 +
 19.6253 +        CommonTree root_0 = null;
 19.6254 +
 19.6255 +        Token char_literal111=null;
 19.6256 +        ANTLRv3Parser.notTerminal_return notTerminal112 = null;
 19.6257 +
 19.6258 +        ANTLRv3Parser.block_return block113 = null;
 19.6259 +
 19.6260 +
 19.6261 +        CommonTree char_literal111_tree=null;
 19.6262 +        RewriteRuleTokenStream stream_89=new RewriteRuleTokenStream(adaptor,"token 89");
 19.6263 +        RewriteRuleSubtreeStream stream_notTerminal=new RewriteRuleSubtreeStream(adaptor,"rule notTerminal");
 19.6264 +        RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");
 19.6265 +        try { dbg.enterRule(getGrammarFileName(), "notSet");
 19.6266 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.6267 +        incRuleLevel();
 19.6268 +        dbg.location(265, 1);
 19.6269 +
 19.6270 +        try {
 19.6271 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:266:2: ( '~' ( notTerminal -> ^( '~' notTerminal ) | block -> ^( '~' block ) ) )
 19.6272 +            dbg.enterAlt(1);
 19.6273 +
 19.6274 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:266:4: '~' ( notTerminal -> ^( '~' notTerminal ) | block -> ^( '~' block ) )
 19.6275 +            {
 19.6276 +            dbg.location(266,4);
 19.6277 +            char_literal111=(Token)match(input,89,FOLLOW_89_in_notSet1986); if (state.failed) return retval; 
 19.6278 +            if ( state.backtracking==0 ) stream_89.add(char_literal111);
 19.6279 +
 19.6280 +            dbg.location(267,3);
 19.6281 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:267:3: ( notTerminal -> ^( '~' notTerminal ) | block -> ^( '~' block ) )
 19.6282 +            int alt55=2;
 19.6283 +            try { dbg.enterSubRule(55);
 19.6284 +            try { dbg.enterDecision(55, decisionCanBacktrack[55]);
 19.6285 +
 19.6286 +            int LA55_0 = input.LA(1);
 19.6287 +
 19.6288 +            if ( ((LA55_0>=TOKEN_REF && LA55_0<=CHAR_LITERAL)) ) {
 19.6289 +                alt55=1;
 19.6290 +            }
 19.6291 +            else if ( (LA55_0==82) ) {
 19.6292 +                alt55=2;
 19.6293 +            }
 19.6294 +            else {
 19.6295 +                if (state.backtracking>0) {state.failed=true; return retval;}
 19.6296 +                NoViableAltException nvae =
 19.6297 +                    new NoViableAltException("", 55, 0, input);
 19.6298 +
 19.6299 +                dbg.recognitionException(nvae);
 19.6300 +                throw nvae;
 19.6301 +            }
 19.6302 +            } finally {dbg.exitDecision(55);}
 19.6303 +
 19.6304 +            switch (alt55) {
 19.6305 +                case 1 :
 19.6306 +                    dbg.enterAlt(1);
 19.6307 +
 19.6308 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:267:5: notTerminal
 19.6309 +                    {
 19.6310 +                    dbg.location(267,5);
 19.6311 +                    pushFollow(FOLLOW_notTerminal_in_notSet1992);
 19.6312 +                    notTerminal112=notTerminal();
 19.6313 +
 19.6314 +                    state._fsp--;
 19.6315 +                    if (state.failed) return retval;
 19.6316 +                    if ( state.backtracking==0 ) stream_notTerminal.add(notTerminal112.getTree());
 19.6317 +
 19.6318 +
 19.6319 +                    // AST REWRITE
 19.6320 +                    // elements: 89, notTerminal
 19.6321 +                    // token labels: 
 19.6322 +                    // rule labels: retval
 19.6323 +                    // token list labels: 
 19.6324 +                    // rule list labels: 
 19.6325 +                    // wildcard labels: 
 19.6326 +                    if ( state.backtracking==0 ) {
 19.6327 +                    retval.tree = root_0;
 19.6328 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.6329 +
 19.6330 +                    root_0 = (CommonTree)adaptor.nil();
 19.6331 +                    // 267:17: -> ^( '~' notTerminal )
 19.6332 +                    {
 19.6333 +                        dbg.location(267,20);
 19.6334 +                        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:267:20: ^( '~' notTerminal )
 19.6335 +                        {
 19.6336 +                        CommonTree root_1 = (CommonTree)adaptor.nil();
 19.6337 +                        dbg.location(267,22);
 19.6338 +                        root_1 = (CommonTree)adaptor.becomeRoot(stream_89.nextNode(), root_1);
 19.6339 +
 19.6340 +                        dbg.location(267,26);
 19.6341 +                        adaptor.addChild(root_1, stream_notTerminal.nextTree());
 19.6342 +
 19.6343 +                        adaptor.addChild(root_0, root_1);
 19.6344 +                        }
 19.6345 +
 19.6346 +                    }
 19.6347 +
 19.6348 +                    retval.tree = root_0;}
 19.6349 +                    }
 19.6350 +                    break;
 19.6351 +                case 2 :
 19.6352 +                    dbg.enterAlt(2);
 19.6353 +
 19.6354 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:268:5: block
 19.6355 +                    {
 19.6356 +                    dbg.location(268,5);
 19.6357 +                    pushFollow(FOLLOW_block_in_notSet2006);
 19.6358 +                    block113=block();
 19.6359 +
 19.6360 +                    state._fsp--;
 19.6361 +                    if (state.failed) return retval;
 19.6362 +                    if ( state.backtracking==0 ) stream_block.add(block113.getTree());
 19.6363 +
 19.6364 +
 19.6365 +                    // AST REWRITE
 19.6366 +                    // elements: block, 89
 19.6367 +                    // token labels: 
 19.6368 +                    // rule labels: retval
 19.6369 +                    // token list labels: 
 19.6370 +                    // rule list labels: 
 19.6371 +                    // wildcard labels: 
 19.6372 +                    if ( state.backtracking==0 ) {
 19.6373 +                    retval.tree = root_0;
 19.6374 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.6375 +
 19.6376 +                    root_0 = (CommonTree)adaptor.nil();
 19.6377 +                    // 268:12: -> ^( '~' block )
 19.6378 +                    {
 19.6379 +                        dbg.location(268,15);
 19.6380 +                        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:268:15: ^( '~' block )
 19.6381 +                        {
 19.6382 +                        CommonTree root_1 = (CommonTree)adaptor.nil();
 19.6383 +                        dbg.location(268,17);
 19.6384 +                        root_1 = (CommonTree)adaptor.becomeRoot(stream_89.nextNode(), root_1);
 19.6385 +
 19.6386 +                        dbg.location(268,21);
 19.6387 +                        adaptor.addChild(root_1, stream_block.nextTree());
 19.6388 +
 19.6389 +                        adaptor.addChild(root_0, root_1);
 19.6390 +                        }
 19.6391 +
 19.6392 +                    }
 19.6393 +
 19.6394 +                    retval.tree = root_0;}
 19.6395 +                    }
 19.6396 +                    break;
 19.6397 +
 19.6398 +            }
 19.6399 +            } finally {dbg.exitSubRule(55);}
 19.6400 +
 19.6401 +
 19.6402 +            }
 19.6403 +
 19.6404 +            retval.stop = input.LT(-1);
 19.6405 +
 19.6406 +            if ( state.backtracking==0 ) {
 19.6407 +
 19.6408 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.6409 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.6410 +            }
 19.6411 +        }
 19.6412 +        catch (RecognitionException re) {
 19.6413 +            reportError(re);
 19.6414 +            recover(input,re);
 19.6415 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.6416 +
 19.6417 +        }
 19.6418 +        finally {
 19.6419 +        }
 19.6420 +        dbg.location(270, 2);
 19.6421 +
 19.6422 +        }
 19.6423 +        finally {
 19.6424 +            dbg.exitRule(getGrammarFileName(), "notSet");
 19.6425 +            decRuleLevel();
 19.6426 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.6427 +        }
 19.6428 +
 19.6429 +        return retval;
 19.6430 +    }
 19.6431 +    // $ANTLR end "notSet"
 19.6432 +
 19.6433 +    public static class treeSpec_return extends ParserRuleReturnScope {
 19.6434 +        CommonTree tree;
 19.6435 +        public Object getTree() { return tree; }
 19.6436 +    };
 19.6437 +
 19.6438 +    // $ANTLR start "treeSpec"
 19.6439 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:272:1: treeSpec : '^(' element ( element )+ ')' -> ^( TREE_BEGIN ( element )+ ) ;
 19.6440 +    public final ANTLRv3Parser.treeSpec_return treeSpec() throws RecognitionException {
 19.6441 +        ANTLRv3Parser.treeSpec_return retval = new ANTLRv3Parser.treeSpec_return();
 19.6442 +        retval.start = input.LT(1);
 19.6443 +
 19.6444 +        CommonTree root_0 = null;
 19.6445 +
 19.6446 +        Token string_literal114=null;
 19.6447 +        Token char_literal117=null;
 19.6448 +        ANTLRv3Parser.element_return element115 = null;
 19.6449 +
 19.6450 +        ANTLRv3Parser.element_return element116 = null;
 19.6451 +
 19.6452 +
 19.6453 +        CommonTree string_literal114_tree=null;
 19.6454 +        CommonTree char_literal117_tree=null;
 19.6455 +        RewriteRuleTokenStream stream_TREE_BEGIN=new RewriteRuleTokenStream(adaptor,"token TREE_BEGIN");
 19.6456 +        RewriteRuleTokenStream stream_84=new RewriteRuleTokenStream(adaptor,"token 84");
 19.6457 +        RewriteRuleSubtreeStream stream_element=new RewriteRuleSubtreeStream(adaptor,"rule element");
 19.6458 +        try { dbg.enterRule(getGrammarFileName(), "treeSpec");
 19.6459 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.6460 +        incRuleLevel();
 19.6461 +        dbg.location(272, 1);
 19.6462 +
 19.6463 +        try {
 19.6464 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:273:2: ( '^(' element ( element )+ ')' -> ^( TREE_BEGIN ( element )+ ) )
 19.6465 +            dbg.enterAlt(1);
 19.6466 +
 19.6467 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:273:4: '^(' element ( element )+ ')'
 19.6468 +            {
 19.6469 +            dbg.location(273,4);
 19.6470 +            string_literal114=(Token)match(input,TREE_BEGIN,FOLLOW_TREE_BEGIN_in_treeSpec2030); if (state.failed) return retval; 
 19.6471 +            if ( state.backtracking==0 ) stream_TREE_BEGIN.add(string_literal114);
 19.6472 +
 19.6473 +            dbg.location(273,9);
 19.6474 +            pushFollow(FOLLOW_element_in_treeSpec2032);
 19.6475 +            element115=element();
 19.6476 +
 19.6477 +            state._fsp--;
 19.6478 +            if (state.failed) return retval;
 19.6479 +            if ( state.backtracking==0 ) stream_element.add(element115.getTree());
 19.6480 +            dbg.location(273,17);
 19.6481 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:273:17: ( element )+
 19.6482 +            int cnt56=0;
 19.6483 +            try { dbg.enterSubRule(56);
 19.6484 +
 19.6485 +            loop56:
 19.6486 +            do {
 19.6487 +                int alt56=2;
 19.6488 +                try { dbg.enterDecision(56, decisionCanBacktrack[56]);
 19.6489 +
 19.6490 +                int LA56_0 = input.LA(1);
 19.6491 +
 19.6492 +                if ( (LA56_0==SEMPRED||LA56_0==TREE_BEGIN||(LA56_0>=TOKEN_REF && LA56_0<=ACTION)||LA56_0==RULE_REF||LA56_0==82||LA56_0==89||LA56_0==92) ) {
 19.6493 +                    alt56=1;
 19.6494 +                }
 19.6495 +
 19.6496 +
 19.6497 +                } finally {dbg.exitDecision(56);}
 19.6498 +
 19.6499 +                switch (alt56) {
 19.6500 +            	case 1 :
 19.6501 +            	    dbg.enterAlt(1);
 19.6502 +
 19.6503 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:273:19: element
 19.6504 +            	    {
 19.6505 +            	    dbg.location(273,19);
 19.6506 +            	    pushFollow(FOLLOW_element_in_treeSpec2036);
 19.6507 +            	    element116=element();
 19.6508 +
 19.6509 +            	    state._fsp--;
 19.6510 +            	    if (state.failed) return retval;
 19.6511 +            	    if ( state.backtracking==0 ) stream_element.add(element116.getTree());
 19.6512 +
 19.6513 +            	    }
 19.6514 +            	    break;
 19.6515 +
 19.6516 +            	default :
 19.6517 +            	    if ( cnt56 >= 1 ) break loop56;
 19.6518 +            	    if (state.backtracking>0) {state.failed=true; return retval;}
 19.6519 +                        EarlyExitException eee =
 19.6520 +                            new EarlyExitException(56, input);
 19.6521 +                        dbg.recognitionException(eee);
 19.6522 +
 19.6523 +                        throw eee;
 19.6524 +                }
 19.6525 +                cnt56++;
 19.6526 +            } while (true);
 19.6527 +            } finally {dbg.exitSubRule(56);}
 19.6528 +
 19.6529 +            dbg.location(273,30);
 19.6530 +            char_literal117=(Token)match(input,84,FOLLOW_84_in_treeSpec2041); if (state.failed) return retval; 
 19.6531 +            if ( state.backtracking==0 ) stream_84.add(char_literal117);
 19.6532 +
 19.6533 +
 19.6534 +
 19.6535 +            // AST REWRITE
 19.6536 +            // elements: element
 19.6537 +            // token labels: 
 19.6538 +            // rule labels: retval
 19.6539 +            // token list labels: 
 19.6540 +            // rule list labels: 
 19.6541 +            // wildcard labels: 
 19.6542 +            if ( state.backtracking==0 ) {
 19.6543 +            retval.tree = root_0;
 19.6544 +            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.6545 +
 19.6546 +            root_0 = (CommonTree)adaptor.nil();
 19.6547 +            // 273:34: -> ^( TREE_BEGIN ( element )+ )
 19.6548 +            {
 19.6549 +                dbg.location(273,37);
 19.6550 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:273:37: ^( TREE_BEGIN ( element )+ )
 19.6551 +                {
 19.6552 +                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.6553 +                dbg.location(273,39);
 19.6554 +                root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(TREE_BEGIN, "TREE_BEGIN"), root_1);
 19.6555 +
 19.6556 +                dbg.location(273,50);
 19.6557 +                if ( !(stream_element.hasNext()) ) {
 19.6558 +                    throw new RewriteEarlyExitException();
 19.6559 +                }
 19.6560 +                while ( stream_element.hasNext() ) {
 19.6561 +                    dbg.location(273,50);
 19.6562 +                    adaptor.addChild(root_1, stream_element.nextTree());
 19.6563 +
 19.6564 +                }
 19.6565 +                stream_element.reset();
 19.6566 +
 19.6567 +                adaptor.addChild(root_0, root_1);
 19.6568 +                }
 19.6569 +
 19.6570 +            }
 19.6571 +
 19.6572 +            retval.tree = root_0;}
 19.6573 +            }
 19.6574 +
 19.6575 +            retval.stop = input.LT(-1);
 19.6576 +
 19.6577 +            if ( state.backtracking==0 ) {
 19.6578 +
 19.6579 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.6580 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.6581 +            }
 19.6582 +        }
 19.6583 +        catch (RecognitionException re) {
 19.6584 +            reportError(re);
 19.6585 +            recover(input,re);
 19.6586 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.6587 +
 19.6588 +        }
 19.6589 +        finally {
 19.6590 +        }
 19.6591 +        dbg.location(274, 2);
 19.6592 +
 19.6593 +        }
 19.6594 +        finally {
 19.6595 +            dbg.exitRule(getGrammarFileName(), "treeSpec");
 19.6596 +            decRuleLevel();
 19.6597 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.6598 +        }
 19.6599 +
 19.6600 +        return retval;
 19.6601 +    }
 19.6602 +    // $ANTLR end "treeSpec"
 19.6603 +
 19.6604 +    public static class ebnf_return extends ParserRuleReturnScope {
 19.6605 +        CommonTree tree;
 19.6606 +        public Object getTree() { return tree; }
 19.6607 +    };
 19.6608 +
 19.6609 +    // $ANTLR start "ebnf"
 19.6610 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:276:1: ebnf : block (op= '?' -> ^( OPTIONAL[op] block ) | op= '*' -> ^( CLOSURE[op] block ) | op= '+' -> ^( POSITIVE_CLOSURE[op] block ) | '=>' -> {gtype==COMBINED_GRAMMAR &&\n\t\t\t\t\t Character.isUpperCase($rule::name.charAt(0))}? ^( SYNPRED[\"=>\"] block ) -> SYN_SEMPRED | -> block ) ;
 19.6611 +    public final ANTLRv3Parser.ebnf_return ebnf() throws RecognitionException {
 19.6612 +        ANTLRv3Parser.ebnf_return retval = new ANTLRv3Parser.ebnf_return();
 19.6613 +        retval.start = input.LT(1);
 19.6614 +
 19.6615 +        CommonTree root_0 = null;
 19.6616 +
 19.6617 +        Token op=null;
 19.6618 +        Token string_literal119=null;
 19.6619 +        ANTLRv3Parser.block_return block118 = null;
 19.6620 +
 19.6621 +
 19.6622 +        CommonTree op_tree=null;
 19.6623 +        CommonTree string_literal119_tree=null;
 19.6624 +        RewriteRuleTokenStream stream_91=new RewriteRuleTokenStream(adaptor,"token 91");
 19.6625 +        RewriteRuleTokenStream stream_90=new RewriteRuleTokenStream(adaptor,"token 90");
 19.6626 +        RewriteRuleTokenStream stream_74=new RewriteRuleTokenStream(adaptor,"token 74");
 19.6627 +        RewriteRuleTokenStream stream_88=new RewriteRuleTokenStream(adaptor,"token 88");
 19.6628 +        RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");
 19.6629 +
 19.6630 +            Token firstToken = input.LT(1);
 19.6631 +
 19.6632 +        try { dbg.enterRule(getGrammarFileName(), "ebnf");
 19.6633 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.6634 +        incRuleLevel();
 19.6635 +        dbg.location(276, 1);
 19.6636 +
 19.6637 +        try {
 19.6638 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:285:2: ( block (op= '?' -> ^( OPTIONAL[op] block ) | op= '*' -> ^( CLOSURE[op] block ) | op= '+' -> ^( POSITIVE_CLOSURE[op] block ) | '=>' -> {gtype==COMBINED_GRAMMAR &&\n\t\t\t\t\t Character.isUpperCase($rule::name.charAt(0))}? ^( SYNPRED[\"=>\"] block ) -> SYN_SEMPRED | -> block ) )
 19.6639 +            dbg.enterAlt(1);
 19.6640 +
 19.6641 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:285:4: block (op= '?' -> ^( OPTIONAL[op] block ) | op= '*' -> ^( CLOSURE[op] block ) | op= '+' -> ^( POSITIVE_CLOSURE[op] block ) | '=>' -> {gtype==COMBINED_GRAMMAR &&\n\t\t\t\t\t Character.isUpperCase($rule::name.charAt(0))}? ^( SYNPRED[\"=>\"] block ) -> SYN_SEMPRED | -> block )
 19.6642 +            {
 19.6643 +            dbg.location(285,4);
 19.6644 +            pushFollow(FOLLOW_block_in_ebnf2073);
 19.6645 +            block118=block();
 19.6646 +
 19.6647 +            state._fsp--;
 19.6648 +            if (state.failed) return retval;
 19.6649 +            if ( state.backtracking==0 ) stream_block.add(block118.getTree());
 19.6650 +            dbg.location(286,3);
 19.6651 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:286:3: (op= '?' -> ^( OPTIONAL[op] block ) | op= '*' -> ^( CLOSURE[op] block ) | op= '+' -> ^( POSITIVE_CLOSURE[op] block ) | '=>' -> {gtype==COMBINED_GRAMMAR &&\n\t\t\t\t\t Character.isUpperCase($rule::name.charAt(0))}? ^( SYNPRED[\"=>\"] block ) -> SYN_SEMPRED | -> block )
 19.6652 +            int alt57=5;
 19.6653 +            try { dbg.enterSubRule(57);
 19.6654 +            try { dbg.enterDecision(57, decisionCanBacktrack[57]);
 19.6655 +
 19.6656 +            switch ( input.LA(1) ) {
 19.6657 +            case 90:
 19.6658 +                {
 19.6659 +                alt57=1;
 19.6660 +                }
 19.6661 +                break;
 19.6662 +            case 74:
 19.6663 +                {
 19.6664 +                alt57=2;
 19.6665 +                }
 19.6666 +                break;
 19.6667 +            case 91:
 19.6668 +                {
 19.6669 +                alt57=3;
 19.6670 +                }
 19.6671 +                break;
 19.6672 +            case 88:
 19.6673 +                {
 19.6674 +                alt57=4;
 19.6675 +                }
 19.6676 +                break;
 19.6677 +            case SEMPRED:
 19.6678 +            case TREE_BEGIN:
 19.6679 +            case REWRITE:
 19.6680 +            case TOKEN_REF:
 19.6681 +            case STRING_LITERAL:
 19.6682 +            case CHAR_LITERAL:
 19.6683 +            case ACTION:
 19.6684 +            case RULE_REF:
 19.6685 +            case 69:
 19.6686 +            case 82:
 19.6687 +            case 83:
 19.6688 +            case 84:
 19.6689 +            case 89:
 19.6690 +            case 92:
 19.6691 +                {
 19.6692 +                alt57=5;
 19.6693 +                }
 19.6694 +                break;
 19.6695 +            default:
 19.6696 +                if (state.backtracking>0) {state.failed=true; return retval;}
 19.6697 +                NoViableAltException nvae =
 19.6698 +                    new NoViableAltException("", 57, 0, input);
 19.6699 +
 19.6700 +                dbg.recognitionException(nvae);
 19.6701 +                throw nvae;
 19.6702 +            }
 19.6703 +
 19.6704 +            } finally {dbg.exitDecision(57);}
 19.6705 +
 19.6706 +            switch (alt57) {
 19.6707 +                case 1 :
 19.6708 +                    dbg.enterAlt(1);
 19.6709 +
 19.6710 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:286:5: op= '?'
 19.6711 +                    {
 19.6712 +                    dbg.location(286,7);
 19.6713 +                    op=(Token)match(input,90,FOLLOW_90_in_ebnf2081); if (state.failed) return retval; 
 19.6714 +                    if ( state.backtracking==0 ) stream_90.add(op);
 19.6715 +
 19.6716 +
 19.6717 +
 19.6718 +                    // AST REWRITE
 19.6719 +                    // elements: block
 19.6720 +                    // token labels: 
 19.6721 +                    // rule labels: retval
 19.6722 +                    // token list labels: 
 19.6723 +                    // rule list labels: 
 19.6724 +                    // wildcard labels: 
 19.6725 +                    if ( state.backtracking==0 ) {
 19.6726 +                    retval.tree = root_0;
 19.6727 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.6728 +
 19.6729 +                    root_0 = (CommonTree)adaptor.nil();
 19.6730 +                    // 286:12: -> ^( OPTIONAL[op] block )
 19.6731 +                    {
 19.6732 +                        dbg.location(286,15);
 19.6733 +                        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:286:15: ^( OPTIONAL[op] block )
 19.6734 +                        {
 19.6735 +                        CommonTree root_1 = (CommonTree)adaptor.nil();
 19.6736 +                        dbg.location(286,17);
 19.6737 +                        root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(OPTIONAL, op), root_1);
 19.6738 +
 19.6739 +                        dbg.location(286,30);
 19.6740 +                        adaptor.addChild(root_1, stream_block.nextTree());
 19.6741 +
 19.6742 +                        adaptor.addChild(root_0, root_1);
 19.6743 +                        }
 19.6744 +
 19.6745 +                    }
 19.6746 +
 19.6747 +                    retval.tree = root_0;}
 19.6748 +                    }
 19.6749 +                    break;
 19.6750 +                case 2 :
 19.6751 +                    dbg.enterAlt(2);
 19.6752 +
 19.6753 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:287:5: op= '*'
 19.6754 +                    {
 19.6755 +                    dbg.location(287,7);
 19.6756 +                    op=(Token)match(input,74,FOLLOW_74_in_ebnf2098); if (state.failed) return retval; 
 19.6757 +                    if ( state.backtracking==0 ) stream_74.add(op);
 19.6758 +
 19.6759 +
 19.6760 +
 19.6761 +                    // AST REWRITE
 19.6762 +                    // elements: block
 19.6763 +                    // token labels: 
 19.6764 +                    // rule labels: retval
 19.6765 +                    // token list labels: 
 19.6766 +                    // rule list labels: 
 19.6767 +                    // wildcard labels: 
 19.6768 +                    if ( state.backtracking==0 ) {
 19.6769 +                    retval.tree = root_0;
 19.6770 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.6771 +
 19.6772 +                    root_0 = (CommonTree)adaptor.nil();
 19.6773 +                    // 287:12: -> ^( CLOSURE[op] block )
 19.6774 +                    {
 19.6775 +                        dbg.location(287,15);
 19.6776 +                        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:287:15: ^( CLOSURE[op] block )
 19.6777 +                        {
 19.6778 +                        CommonTree root_1 = (CommonTree)adaptor.nil();
 19.6779 +                        dbg.location(287,17);
 19.6780 +                        root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(CLOSURE, op), root_1);
 19.6781 +
 19.6782 +                        dbg.location(287,29);
 19.6783 +                        adaptor.addChild(root_1, stream_block.nextTree());
 19.6784 +
 19.6785 +                        adaptor.addChild(root_0, root_1);
 19.6786 +                        }
 19.6787 +
 19.6788 +                    }
 19.6789 +
 19.6790 +                    retval.tree = root_0;}
 19.6791 +                    }
 19.6792 +                    break;
 19.6793 +                case 3 :
 19.6794 +                    dbg.enterAlt(3);
 19.6795 +
 19.6796 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:288:5: op= '+'
 19.6797 +                    {
 19.6798 +                    dbg.location(288,7);
 19.6799 +                    op=(Token)match(input,91,FOLLOW_91_in_ebnf2115); if (state.failed) return retval; 
 19.6800 +                    if ( state.backtracking==0 ) stream_91.add(op);
 19.6801 +
 19.6802 +
 19.6803 +
 19.6804 +                    // AST REWRITE
 19.6805 +                    // elements: block
 19.6806 +                    // token labels: 
 19.6807 +                    // rule labels: retval
 19.6808 +                    // token list labels: 
 19.6809 +                    // rule list labels: 
 19.6810 +                    // wildcard labels: 
 19.6811 +                    if ( state.backtracking==0 ) {
 19.6812 +                    retval.tree = root_0;
 19.6813 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.6814 +
 19.6815 +                    root_0 = (CommonTree)adaptor.nil();
 19.6816 +                    // 288:12: -> ^( POSITIVE_CLOSURE[op] block )
 19.6817 +                    {
 19.6818 +                        dbg.location(288,15);
 19.6819 +                        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:288:15: ^( POSITIVE_CLOSURE[op] block )
 19.6820 +                        {
 19.6821 +                        CommonTree root_1 = (CommonTree)adaptor.nil();
 19.6822 +                        dbg.location(288,17);
 19.6823 +                        root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(POSITIVE_CLOSURE, op), root_1);
 19.6824 +
 19.6825 +                        dbg.location(288,38);
 19.6826 +                        adaptor.addChild(root_1, stream_block.nextTree());
 19.6827 +
 19.6828 +                        adaptor.addChild(root_0, root_1);
 19.6829 +                        }
 19.6830 +
 19.6831 +                    }
 19.6832 +
 19.6833 +                    retval.tree = root_0;}
 19.6834 +                    }
 19.6835 +                    break;
 19.6836 +                case 4 :
 19.6837 +                    dbg.enterAlt(4);
 19.6838 +
 19.6839 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:289:7: '=>'
 19.6840 +                    {
 19.6841 +                    dbg.location(289,7);
 19.6842 +                    string_literal119=(Token)match(input,88,FOLLOW_88_in_ebnf2132); if (state.failed) return retval; 
 19.6843 +                    if ( state.backtracking==0 ) stream_88.add(string_literal119);
 19.6844 +
 19.6845 +
 19.6846 +
 19.6847 +                    // AST REWRITE
 19.6848 +                    // elements: block
 19.6849 +                    // token labels: 
 19.6850 +                    // rule labels: retval
 19.6851 +                    // token list labels: 
 19.6852 +                    // rule list labels: 
 19.6853 +                    // wildcard labels: 
 19.6854 +                    if ( state.backtracking==0 ) {
 19.6855 +                    retval.tree = root_0;
 19.6856 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.6857 +
 19.6858 +                    root_0 = (CommonTree)adaptor.nil();
 19.6859 +                    // 290:6: -> {gtype==COMBINED_GRAMMAR &&\n\t\t\t\t\t Character.isUpperCase($rule::name.charAt(0))}? ^( SYNPRED[\"=>\"] block )
 19.6860 +                    if (gtype==COMBINED_GRAMMAR &&
 19.6861 +                    					    Character.isUpperCase(((rule_scope)rule_stack.peek()).name.charAt(0))) {
 19.6862 +                        dbg.location(293,9);
 19.6863 +                        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:293:9: ^( SYNPRED[\"=>\"] block )
 19.6864 +                        {
 19.6865 +                        CommonTree root_1 = (CommonTree)adaptor.nil();
 19.6866 +                        dbg.location(293,11);
 19.6867 +                        root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(SYNPRED, "=>"), root_1);
 19.6868 +
 19.6869 +                        dbg.location(293,25);
 19.6870 +                        adaptor.addChild(root_1, stream_block.nextTree());
 19.6871 +
 19.6872 +                        adaptor.addChild(root_0, root_1);
 19.6873 +                        }
 19.6874 +
 19.6875 +                    }
 19.6876 +                    else // 295:6: -> SYN_SEMPRED
 19.6877 +                    {
 19.6878 +                        dbg.location(295,9);
 19.6879 +                        adaptor.addChild(root_0, (CommonTree)adaptor.create(SYN_SEMPRED, "SYN_SEMPRED"));
 19.6880 +
 19.6881 +                    }
 19.6882 +
 19.6883 +                    retval.tree = root_0;}
 19.6884 +                    }
 19.6885 +                    break;
 19.6886 +                case 5 :
 19.6887 +                    dbg.enterAlt(5);
 19.6888 +
 19.6889 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:296:13: 
 19.6890 +                    {
 19.6891 +
 19.6892 +                    // AST REWRITE
 19.6893 +                    // elements: block
 19.6894 +                    // token labels: 
 19.6895 +                    // rule labels: retval
 19.6896 +                    // token list labels: 
 19.6897 +                    // rule list labels: 
 19.6898 +                    // wildcard labels: 
 19.6899 +                    if ( state.backtracking==0 ) {
 19.6900 +                    retval.tree = root_0;
 19.6901 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.6902 +
 19.6903 +                    root_0 = (CommonTree)adaptor.nil();
 19.6904 +                    // 296:13: -> block
 19.6905 +                    {
 19.6906 +                        dbg.location(296,16);
 19.6907 +                        adaptor.addChild(root_0, stream_block.nextTree());
 19.6908 +
 19.6909 +                    }
 19.6910 +
 19.6911 +                    retval.tree = root_0;}
 19.6912 +                    }
 19.6913 +                    break;
 19.6914 +
 19.6915 +            }
 19.6916 +            } finally {dbg.exitSubRule(57);}
 19.6917 +
 19.6918 +
 19.6919 +            }
 19.6920 +
 19.6921 +            retval.stop = input.LT(-1);
 19.6922 +
 19.6923 +            if ( state.backtracking==0 ) {
 19.6924 +
 19.6925 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.6926 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.6927 +            }
 19.6928 +            if ( state.backtracking==0 ) {
 19.6929 +
 19.6930 +              	((CommonTree)retval.tree).getToken().setLine(firstToken.getLine());
 19.6931 +              	((CommonTree)retval.tree).getToken().setCharPositionInLine(firstToken.getCharPositionInLine());
 19.6932 +
 19.6933 +            }
 19.6934 +        }
 19.6935 +        catch (RecognitionException re) {
 19.6936 +            reportError(re);
 19.6937 +            recover(input,re);
 19.6938 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.6939 +
 19.6940 +        }
 19.6941 +        finally {
 19.6942 +        }
 19.6943 +        dbg.location(298, 2);
 19.6944 +
 19.6945 +        }
 19.6946 +        finally {
 19.6947 +            dbg.exitRule(getGrammarFileName(), "ebnf");
 19.6948 +            decRuleLevel();
 19.6949 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.6950 +        }
 19.6951 +
 19.6952 +        return retval;
 19.6953 +    }
 19.6954 +    // $ANTLR end "ebnf"
 19.6955 +
 19.6956 +    public static class range_return extends ParserRuleReturnScope {
 19.6957 +        CommonTree tree;
 19.6958 +        public Object getTree() { return tree; }
 19.6959 +    };
 19.6960 +
 19.6961 +    // $ANTLR start "range"
 19.6962 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:300:1: range : c1= CHAR_LITERAL RANGE c2= CHAR_LITERAL -> ^( CHAR_RANGE[$c1,\"..\"] $c1 $c2) ;
 19.6963 +    public final ANTLRv3Parser.range_return range() throws RecognitionException {
 19.6964 +        ANTLRv3Parser.range_return retval = new ANTLRv3Parser.range_return();
 19.6965 +        retval.start = input.LT(1);
 19.6966 +
 19.6967 +        CommonTree root_0 = null;
 19.6968 +
 19.6969 +        Token c1=null;
 19.6970 +        Token c2=null;
 19.6971 +        Token RANGE120=null;
 19.6972 +
 19.6973 +        CommonTree c1_tree=null;
 19.6974 +        CommonTree c2_tree=null;
 19.6975 +        CommonTree RANGE120_tree=null;
 19.6976 +        RewriteRuleTokenStream stream_RANGE=new RewriteRuleTokenStream(adaptor,"token RANGE");
 19.6977 +        RewriteRuleTokenStream stream_CHAR_LITERAL=new RewriteRuleTokenStream(adaptor,"token CHAR_LITERAL");
 19.6978 +
 19.6979 +        try { dbg.enterRule(getGrammarFileName(), "range");
 19.6980 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.6981 +        incRuleLevel();
 19.6982 +        dbg.location(300, 1);
 19.6983 +
 19.6984 +        try {
 19.6985 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:301:2: (c1= CHAR_LITERAL RANGE c2= CHAR_LITERAL -> ^( CHAR_RANGE[$c1,\"..\"] $c1 $c2) )
 19.6986 +            dbg.enterAlt(1);
 19.6987 +
 19.6988 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:301:4: c1= CHAR_LITERAL RANGE c2= CHAR_LITERAL
 19.6989 +            {
 19.6990 +            dbg.location(301,6);
 19.6991 +            c1=(Token)match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_range2215); if (state.failed) return retval; 
 19.6992 +            if ( state.backtracking==0 ) stream_CHAR_LITERAL.add(c1);
 19.6993 +
 19.6994 +            dbg.location(301,20);
 19.6995 +            RANGE120=(Token)match(input,RANGE,FOLLOW_RANGE_in_range2217); if (state.failed) return retval; 
 19.6996 +            if ( state.backtracking==0 ) stream_RANGE.add(RANGE120);
 19.6997 +
 19.6998 +            dbg.location(301,28);
 19.6999 +            c2=(Token)match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_range2221); if (state.failed) return retval; 
 19.7000 +            if ( state.backtracking==0 ) stream_CHAR_LITERAL.add(c2);
 19.7001 +
 19.7002 +
 19.7003 +
 19.7004 +            // AST REWRITE
 19.7005 +            // elements: c1, c2
 19.7006 +            // token labels: c1, c2
 19.7007 +            // rule labels: retval
 19.7008 +            // token list labels: 
 19.7009 +            // rule list labels: 
 19.7010 +            // wildcard labels: 
 19.7011 +            if ( state.backtracking==0 ) {
 19.7012 +            retval.tree = root_0;
 19.7013 +            RewriteRuleTokenStream stream_c1=new RewriteRuleTokenStream(adaptor,"token c1",c1);
 19.7014 +            RewriteRuleTokenStream stream_c2=new RewriteRuleTokenStream(adaptor,"token c2",c2);
 19.7015 +            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.7016 +
 19.7017 +            root_0 = (CommonTree)adaptor.nil();
 19.7018 +            // 301:42: -> ^( CHAR_RANGE[$c1,\"..\"] $c1 $c2)
 19.7019 +            {
 19.7020 +                dbg.location(301,45);
 19.7021 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:301:45: ^( CHAR_RANGE[$c1,\"..\"] $c1 $c2)
 19.7022 +                {
 19.7023 +                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.7024 +                dbg.location(301,47);
 19.7025 +                root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(CHAR_RANGE, c1, ".."), root_1);
 19.7026 +
 19.7027 +                dbg.location(301,68);
 19.7028 +                adaptor.addChild(root_1, stream_c1.nextNode());
 19.7029 +                dbg.location(301,72);
 19.7030 +                adaptor.addChild(root_1, stream_c2.nextNode());
 19.7031 +
 19.7032 +                adaptor.addChild(root_0, root_1);
 19.7033 +                }
 19.7034 +
 19.7035 +            }
 19.7036 +
 19.7037 +            retval.tree = root_0;}
 19.7038 +            }
 19.7039 +
 19.7040 +            retval.stop = input.LT(-1);
 19.7041 +
 19.7042 +            if ( state.backtracking==0 ) {
 19.7043 +
 19.7044 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.7045 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.7046 +            }
 19.7047 +        }
 19.7048 +        catch (RecognitionException re) {
 19.7049 +            reportError(re);
 19.7050 +            recover(input,re);
 19.7051 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.7052 +
 19.7053 +        }
 19.7054 +        finally {
 19.7055 +        }
 19.7056 +        dbg.location(302, 2);
 19.7057 +
 19.7058 +        }
 19.7059 +        finally {
 19.7060 +            dbg.exitRule(getGrammarFileName(), "range");
 19.7061 +            decRuleLevel();
 19.7062 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.7063 +        }
 19.7064 +
 19.7065 +        return retval;
 19.7066 +    }
 19.7067 +    // $ANTLR end "range"
 19.7068 +
 19.7069 +    public static class terminal_return extends ParserRuleReturnScope {
 19.7070 +        CommonTree tree;
 19.7071 +        public Object getTree() { return tree; }
 19.7072 +    };
 19.7073 +
 19.7074 +    // $ANTLR start "terminal"
 19.7075 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:304:1: terminal : ( CHAR_LITERAL -> CHAR_LITERAL | TOKEN_REF ( ARG_ACTION -> ^( TOKEN_REF ARG_ACTION ) | -> TOKEN_REF ) | STRING_LITERAL -> STRING_LITERAL | '.' -> '.' ) ( '^' -> ^( '^' $terminal) | '!' -> ^( '!' $terminal) )? ;
 19.7076 +    public final ANTLRv3Parser.terminal_return terminal() throws RecognitionException {
 19.7077 +        ANTLRv3Parser.terminal_return retval = new ANTLRv3Parser.terminal_return();
 19.7078 +        retval.start = input.LT(1);
 19.7079 +
 19.7080 +        CommonTree root_0 = null;
 19.7081 +
 19.7082 +        Token CHAR_LITERAL121=null;
 19.7083 +        Token TOKEN_REF122=null;
 19.7084 +        Token ARG_ACTION123=null;
 19.7085 +        Token STRING_LITERAL124=null;
 19.7086 +        Token char_literal125=null;
 19.7087 +        Token char_literal126=null;
 19.7088 +        Token char_literal127=null;
 19.7089 +
 19.7090 +        CommonTree CHAR_LITERAL121_tree=null;
 19.7091 +        CommonTree TOKEN_REF122_tree=null;
 19.7092 +        CommonTree ARG_ACTION123_tree=null;
 19.7093 +        CommonTree STRING_LITERAL124_tree=null;
 19.7094 +        CommonTree char_literal125_tree=null;
 19.7095 +        CommonTree char_literal126_tree=null;
 19.7096 +        CommonTree char_literal127_tree=null;
 19.7097 +        RewriteRuleTokenStream stream_STRING_LITERAL=new RewriteRuleTokenStream(adaptor,"token STRING_LITERAL");
 19.7098 +        RewriteRuleTokenStream stream_BANG=new RewriteRuleTokenStream(adaptor,"token BANG");
 19.7099 +        RewriteRuleTokenStream stream_92=new RewriteRuleTokenStream(adaptor,"token 92");
 19.7100 +        RewriteRuleTokenStream stream_CHAR_LITERAL=new RewriteRuleTokenStream(adaptor,"token CHAR_LITERAL");
 19.7101 +        RewriteRuleTokenStream stream_ROOT=new RewriteRuleTokenStream(adaptor,"token ROOT");
 19.7102 +        RewriteRuleTokenStream stream_TOKEN_REF=new RewriteRuleTokenStream(adaptor,"token TOKEN_REF");
 19.7103 +        RewriteRuleTokenStream stream_ARG_ACTION=new RewriteRuleTokenStream(adaptor,"token ARG_ACTION");
 19.7104 +
 19.7105 +        try { dbg.enterRule(getGrammarFileName(), "terminal");
 19.7106 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.7107 +        incRuleLevel();
 19.7108 +        dbg.location(304, 1);
 19.7109 +
 19.7110 +        try {
 19.7111 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:305:5: ( ( CHAR_LITERAL -> CHAR_LITERAL | TOKEN_REF ( ARG_ACTION -> ^( TOKEN_REF ARG_ACTION ) | -> TOKEN_REF ) | STRING_LITERAL -> STRING_LITERAL | '.' -> '.' ) ( '^' -> ^( '^' $terminal) | '!' -> ^( '!' $terminal) )? )
 19.7112 +            dbg.enterAlt(1);
 19.7113 +
 19.7114 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:305:9: ( CHAR_LITERAL -> CHAR_LITERAL | TOKEN_REF ( ARG_ACTION -> ^( TOKEN_REF ARG_ACTION ) | -> TOKEN_REF ) | STRING_LITERAL -> STRING_LITERAL | '.' -> '.' ) ( '^' -> ^( '^' $terminal) | '!' -> ^( '!' $terminal) )?
 19.7115 +            {
 19.7116 +            dbg.location(305,9);
 19.7117 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:305:9: ( CHAR_LITERAL -> CHAR_LITERAL | TOKEN_REF ( ARG_ACTION -> ^( TOKEN_REF ARG_ACTION ) | -> TOKEN_REF ) | STRING_LITERAL -> STRING_LITERAL | '.' -> '.' )
 19.7118 +            int alt59=4;
 19.7119 +            try { dbg.enterSubRule(59);
 19.7120 +            try { dbg.enterDecision(59, decisionCanBacktrack[59]);
 19.7121 +
 19.7122 +            switch ( input.LA(1) ) {
 19.7123 +            case CHAR_LITERAL:
 19.7124 +                {
 19.7125 +                alt59=1;
 19.7126 +                }
 19.7127 +                break;
 19.7128 +            case TOKEN_REF:
 19.7129 +                {
 19.7130 +                alt59=2;
 19.7131 +                }
 19.7132 +                break;
 19.7133 +            case STRING_LITERAL:
 19.7134 +                {
 19.7135 +                alt59=3;
 19.7136 +                }
 19.7137 +                break;
 19.7138 +            case 92:
 19.7139 +                {
 19.7140 +                alt59=4;
 19.7141 +                }
 19.7142 +                break;
 19.7143 +            default:
 19.7144 +                if (state.backtracking>0) {state.failed=true; return retval;}
 19.7145 +                NoViableAltException nvae =
 19.7146 +                    new NoViableAltException("", 59, 0, input);
 19.7147 +
 19.7148 +                dbg.recognitionException(nvae);
 19.7149 +                throw nvae;
 19.7150 +            }
 19.7151 +
 19.7152 +            } finally {dbg.exitDecision(59);}
 19.7153 +
 19.7154 +            switch (alt59) {
 19.7155 +                case 1 :
 19.7156 +                    dbg.enterAlt(1);
 19.7157 +
 19.7158 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:305:11: CHAR_LITERAL
 19.7159 +                    {
 19.7160 +                    dbg.location(305,11);
 19.7161 +                    CHAR_LITERAL121=(Token)match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_terminal2252); if (state.failed) return retval; 
 19.7162 +                    if ( state.backtracking==0 ) stream_CHAR_LITERAL.add(CHAR_LITERAL121);
 19.7163 +
 19.7164 +
 19.7165 +
 19.7166 +                    // AST REWRITE
 19.7167 +                    // elements: CHAR_LITERAL
 19.7168 +                    // token labels: 
 19.7169 +                    // rule labels: retval
 19.7170 +                    // token list labels: 
 19.7171 +                    // rule list labels: 
 19.7172 +                    // wildcard labels: 
 19.7173 +                    if ( state.backtracking==0 ) {
 19.7174 +                    retval.tree = root_0;
 19.7175 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.7176 +
 19.7177 +                    root_0 = (CommonTree)adaptor.nil();
 19.7178 +                    // 305:27: -> CHAR_LITERAL
 19.7179 +                    {
 19.7180 +                        dbg.location(305,30);
 19.7181 +                        adaptor.addChild(root_0, stream_CHAR_LITERAL.nextNode());
 19.7182 +
 19.7183 +                    }
 19.7184 +
 19.7185 +                    retval.tree = root_0;}
 19.7186 +                    }
 19.7187 +                    break;
 19.7188 +                case 2 :
 19.7189 +                    dbg.enterAlt(2);
 19.7190 +
 19.7191 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:307:7: TOKEN_REF ( ARG_ACTION -> ^( TOKEN_REF ARG_ACTION ) | -> TOKEN_REF )
 19.7192 +                    {
 19.7193 +                    dbg.location(307,7);
 19.7194 +                    TOKEN_REF122=(Token)match(input,TOKEN_REF,FOLLOW_TOKEN_REF_in_terminal2274); if (state.failed) return retval; 
 19.7195 +                    if ( state.backtracking==0 ) stream_TOKEN_REF.add(TOKEN_REF122);
 19.7196 +
 19.7197 +                    dbg.location(308,4);
 19.7198 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:308:4: ( ARG_ACTION -> ^( TOKEN_REF ARG_ACTION ) | -> TOKEN_REF )
 19.7199 +                    int alt58=2;
 19.7200 +                    try { dbg.enterSubRule(58);
 19.7201 +                    try { dbg.enterDecision(58, decisionCanBacktrack[58]);
 19.7202 +
 19.7203 +                    int LA58_0 = input.LA(1);
 19.7204 +
 19.7205 +                    if ( (LA58_0==ARG_ACTION) ) {
 19.7206 +                        alt58=1;
 19.7207 +                    }
 19.7208 +                    else if ( (LA58_0==SEMPRED||(LA58_0>=TREE_BEGIN && LA58_0<=REWRITE)||(LA58_0>=TOKEN_REF && LA58_0<=ACTION)||LA58_0==RULE_REF||LA58_0==69||LA58_0==74||(LA58_0>=82 && LA58_0<=84)||(LA58_0>=89 && LA58_0<=92)) ) {
 19.7209 +                        alt58=2;
 19.7210 +                    }
 19.7211 +                    else {
 19.7212 +                        if (state.backtracking>0) {state.failed=true; return retval;}
 19.7213 +                        NoViableAltException nvae =
 19.7214 +                            new NoViableAltException("", 58, 0, input);
 19.7215 +
 19.7216 +                        dbg.recognitionException(nvae);
 19.7217 +                        throw nvae;
 19.7218 +                    }
 19.7219 +                    } finally {dbg.exitDecision(58);}
 19.7220 +
 19.7221 +                    switch (alt58) {
 19.7222 +                        case 1 :
 19.7223 +                            dbg.enterAlt(1);
 19.7224 +
 19.7225 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:308:6: ARG_ACTION
 19.7226 +                            {
 19.7227 +                            dbg.location(308,6);
 19.7228 +                            ARG_ACTION123=(Token)match(input,ARG_ACTION,FOLLOW_ARG_ACTION_in_terminal2281); if (state.failed) return retval; 
 19.7229 +                            if ( state.backtracking==0 ) stream_ARG_ACTION.add(ARG_ACTION123);
 19.7230 +
 19.7231 +
 19.7232 +
 19.7233 +                            // AST REWRITE
 19.7234 +                            // elements: TOKEN_REF, ARG_ACTION
 19.7235 +                            // token labels: 
 19.7236 +                            // rule labels: retval
 19.7237 +                            // token list labels: 
 19.7238 +                            // rule list labels: 
 19.7239 +                            // wildcard labels: 
 19.7240 +                            if ( state.backtracking==0 ) {
 19.7241 +                            retval.tree = root_0;
 19.7242 +                            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.7243 +
 19.7244 +                            root_0 = (CommonTree)adaptor.nil();
 19.7245 +                            // 308:20: -> ^( TOKEN_REF ARG_ACTION )
 19.7246 +                            {
 19.7247 +                                dbg.location(308,23);
 19.7248 +                                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:308:23: ^( TOKEN_REF ARG_ACTION )
 19.7249 +                                {
 19.7250 +                                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.7251 +                                dbg.location(308,25);
 19.7252 +                                root_1 = (CommonTree)adaptor.becomeRoot(stream_TOKEN_REF.nextNode(), root_1);
 19.7253 +
 19.7254 +                                dbg.location(308,35);
 19.7255 +                                adaptor.addChild(root_1, stream_ARG_ACTION.nextNode());
 19.7256 +
 19.7257 +                                adaptor.addChild(root_0, root_1);
 19.7258 +                                }
 19.7259 +
 19.7260 +                            }
 19.7261 +
 19.7262 +                            retval.tree = root_0;}
 19.7263 +                            }
 19.7264 +                            break;
 19.7265 +                        case 2 :
 19.7266 +                            dbg.enterAlt(2);
 19.7267 +
 19.7268 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:309:12: 
 19.7269 +                            {
 19.7270 +
 19.7271 +                            // AST REWRITE
 19.7272 +                            // elements: TOKEN_REF
 19.7273 +                            // token labels: 
 19.7274 +                            // rule labels: retval
 19.7275 +                            // token list labels: 
 19.7276 +                            // rule list labels: 
 19.7277 +                            // wildcard labels: 
 19.7278 +                            if ( state.backtracking==0 ) {
 19.7279 +                            retval.tree = root_0;
 19.7280 +                            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.7281 +
 19.7282 +                            root_0 = (CommonTree)adaptor.nil();
 19.7283 +                            // 309:12: -> TOKEN_REF
 19.7284 +                            {
 19.7285 +                                dbg.location(309,15);
 19.7286 +                                adaptor.addChild(root_0, stream_TOKEN_REF.nextNode());
 19.7287 +
 19.7288 +                            }
 19.7289 +
 19.7290 +                            retval.tree = root_0;}
 19.7291 +                            }
 19.7292 +                            break;
 19.7293 +
 19.7294 +                    }
 19.7295 +                    } finally {dbg.exitSubRule(58);}
 19.7296 +
 19.7297 +
 19.7298 +                    }
 19.7299 +                    break;
 19.7300 +                case 3 :
 19.7301 +                    dbg.enterAlt(3);
 19.7302 +
 19.7303 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:311:7: STRING_LITERAL
 19.7304 +                    {
 19.7305 +                    dbg.location(311,7);
 19.7306 +                    STRING_LITERAL124=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_terminal2320); if (state.failed) return retval; 
 19.7307 +                    if ( state.backtracking==0 ) stream_STRING_LITERAL.add(STRING_LITERAL124);
 19.7308 +
 19.7309 +
 19.7310 +
 19.7311 +                    // AST REWRITE
 19.7312 +                    // elements: STRING_LITERAL
 19.7313 +                    // token labels: 
 19.7314 +                    // rule labels: retval
 19.7315 +                    // token list labels: 
 19.7316 +                    // rule list labels: 
 19.7317 +                    // wildcard labels: 
 19.7318 +                    if ( state.backtracking==0 ) {
 19.7319 +                    retval.tree = root_0;
 19.7320 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.7321 +
 19.7322 +                    root_0 = (CommonTree)adaptor.nil();
 19.7323 +                    // 311:25: -> STRING_LITERAL
 19.7324 +                    {
 19.7325 +                        dbg.location(311,28);
 19.7326 +                        adaptor.addChild(root_0, stream_STRING_LITERAL.nextNode());
 19.7327 +
 19.7328 +                    }
 19.7329 +
 19.7330 +                    retval.tree = root_0;}
 19.7331 +                    }
 19.7332 +                    break;
 19.7333 +                case 4 :
 19.7334 +                    dbg.enterAlt(4);
 19.7335 +
 19.7336 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:312:7: '.'
 19.7337 +                    {
 19.7338 +                    dbg.location(312,7);
 19.7339 +                    char_literal125=(Token)match(input,92,FOLLOW_92_in_terminal2335); if (state.failed) return retval; 
 19.7340 +                    if ( state.backtracking==0 ) stream_92.add(char_literal125);
 19.7341 +
 19.7342 +
 19.7343 +
 19.7344 +                    // AST REWRITE
 19.7345 +                    // elements: 92
 19.7346 +                    // token labels: 
 19.7347 +                    // rule labels: retval
 19.7348 +                    // token list labels: 
 19.7349 +                    // rule list labels: 
 19.7350 +                    // wildcard labels: 
 19.7351 +                    if ( state.backtracking==0 ) {
 19.7352 +                    retval.tree = root_0;
 19.7353 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.7354 +
 19.7355 +                    root_0 = (CommonTree)adaptor.nil();
 19.7356 +                    // 312:17: -> '.'
 19.7357 +                    {
 19.7358 +                        dbg.location(312,20);
 19.7359 +                        adaptor.addChild(root_0, stream_92.nextNode());
 19.7360 +
 19.7361 +                    }
 19.7362 +
 19.7363 +                    retval.tree = root_0;}
 19.7364 +                    }
 19.7365 +                    break;
 19.7366 +
 19.7367 +            }
 19.7368 +            } finally {dbg.exitSubRule(59);}
 19.7369 +
 19.7370 +            dbg.location(314,3);
 19.7371 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:314:3: ( '^' -> ^( '^' $terminal) | '!' -> ^( '!' $terminal) )?
 19.7372 +            int alt60=3;
 19.7373 +            try { dbg.enterSubRule(60);
 19.7374 +            try { dbg.enterDecision(60, decisionCanBacktrack[60]);
 19.7375 +
 19.7376 +            int LA60_0 = input.LA(1);
 19.7377 +
 19.7378 +            if ( (LA60_0==ROOT) ) {
 19.7379 +                alt60=1;
 19.7380 +            }
 19.7381 +            else if ( (LA60_0==BANG) ) {
 19.7382 +                alt60=2;
 19.7383 +            }
 19.7384 +            } finally {dbg.exitDecision(60);}
 19.7385 +
 19.7386 +            switch (alt60) {
 19.7387 +                case 1 :
 19.7388 +                    dbg.enterAlt(1);
 19.7389 +
 19.7390 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:314:5: '^'
 19.7391 +                    {
 19.7392 +                    dbg.location(314,5);
 19.7393 +                    char_literal126=(Token)match(input,ROOT,FOLLOW_ROOT_in_terminal2356); if (state.failed) return retval; 
 19.7394 +                    if ( state.backtracking==0 ) stream_ROOT.add(char_literal126);
 19.7395 +
 19.7396 +
 19.7397 +
 19.7398 +                    // AST REWRITE
 19.7399 +                    // elements: ROOT, terminal
 19.7400 +                    // token labels: 
 19.7401 +                    // rule labels: retval
 19.7402 +                    // token list labels: 
 19.7403 +                    // rule list labels: 
 19.7404 +                    // wildcard labels: 
 19.7405 +                    if ( state.backtracking==0 ) {
 19.7406 +                    retval.tree = root_0;
 19.7407 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.7408 +
 19.7409 +                    root_0 = (CommonTree)adaptor.nil();
 19.7410 +                    // 314:15: -> ^( '^' $terminal)
 19.7411 +                    {
 19.7412 +                        dbg.location(314,18);
 19.7413 +                        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:314:18: ^( '^' $terminal)
 19.7414 +                        {
 19.7415 +                        CommonTree root_1 = (CommonTree)adaptor.nil();
 19.7416 +                        dbg.location(314,20);
 19.7417 +                        root_1 = (CommonTree)adaptor.becomeRoot(stream_ROOT.nextNode(), root_1);
 19.7418 +
 19.7419 +                        dbg.location(314,24);
 19.7420 +                        adaptor.addChild(root_1, stream_retval.nextTree());
 19.7421 +
 19.7422 +                        adaptor.addChild(root_0, root_1);
 19.7423 +                        }
 19.7424 +
 19.7425 +                    }
 19.7426 +
 19.7427 +                    retval.tree = root_0;}
 19.7428 +                    }
 19.7429 +                    break;
 19.7430 +                case 2 :
 19.7431 +                    dbg.enterAlt(2);
 19.7432 +
 19.7433 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:315:5: '!'
 19.7434 +                    {
 19.7435 +                    dbg.location(315,5);
 19.7436 +                    char_literal127=(Token)match(input,BANG,FOLLOW_BANG_in_terminal2377); if (state.failed) return retval; 
 19.7437 +                    if ( state.backtracking==0 ) stream_BANG.add(char_literal127);
 19.7438 +
 19.7439 +
 19.7440 +
 19.7441 +                    // AST REWRITE
 19.7442 +                    // elements: terminal, BANG
 19.7443 +                    // token labels: 
 19.7444 +                    // rule labels: retval
 19.7445 +                    // token list labels: 
 19.7446 +                    // rule list labels: 
 19.7447 +                    // wildcard labels: 
 19.7448 +                    if ( state.backtracking==0 ) {
 19.7449 +                    retval.tree = root_0;
 19.7450 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.7451 +
 19.7452 +                    root_0 = (CommonTree)adaptor.nil();
 19.7453 +                    // 315:15: -> ^( '!' $terminal)
 19.7454 +                    {
 19.7455 +                        dbg.location(315,18);
 19.7456 +                        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:315:18: ^( '!' $terminal)
 19.7457 +                        {
 19.7458 +                        CommonTree root_1 = (CommonTree)adaptor.nil();
 19.7459 +                        dbg.location(315,20);
 19.7460 +                        root_1 = (CommonTree)adaptor.becomeRoot(stream_BANG.nextNode(), root_1);
 19.7461 +
 19.7462 +                        dbg.location(315,24);
 19.7463 +                        adaptor.addChild(root_1, stream_retval.nextTree());
 19.7464 +
 19.7465 +                        adaptor.addChild(root_0, root_1);
 19.7466 +                        }
 19.7467 +
 19.7468 +                    }
 19.7469 +
 19.7470 +                    retval.tree = root_0;}
 19.7471 +                    }
 19.7472 +                    break;
 19.7473 +
 19.7474 +            }
 19.7475 +            } finally {dbg.exitSubRule(60);}
 19.7476 +
 19.7477 +
 19.7478 +            }
 19.7479 +
 19.7480 +            retval.stop = input.LT(-1);
 19.7481 +
 19.7482 +            if ( state.backtracking==0 ) {
 19.7483 +
 19.7484 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.7485 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.7486 +            }
 19.7487 +        }
 19.7488 +        catch (RecognitionException re) {
 19.7489 +            reportError(re);
 19.7490 +            recover(input,re);
 19.7491 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.7492 +
 19.7493 +        }
 19.7494 +        finally {
 19.7495 +        }
 19.7496 +        dbg.location(317, 2);
 19.7497 +
 19.7498 +        }
 19.7499 +        finally {
 19.7500 +            dbg.exitRule(getGrammarFileName(), "terminal");
 19.7501 +            decRuleLevel();
 19.7502 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.7503 +        }
 19.7504 +
 19.7505 +        return retval;
 19.7506 +    }
 19.7507 +    // $ANTLR end "terminal"
 19.7508 +
 19.7509 +    public static class notTerminal_return extends ParserRuleReturnScope {
 19.7510 +        CommonTree tree;
 19.7511 +        public Object getTree() { return tree; }
 19.7512 +    };
 19.7513 +
 19.7514 +    // $ANTLR start "notTerminal"
 19.7515 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:319:1: notTerminal : ( CHAR_LITERAL | TOKEN_REF | STRING_LITERAL );
 19.7516 +    public final ANTLRv3Parser.notTerminal_return notTerminal() throws RecognitionException {
 19.7517 +        ANTLRv3Parser.notTerminal_return retval = new ANTLRv3Parser.notTerminal_return();
 19.7518 +        retval.start = input.LT(1);
 19.7519 +
 19.7520 +        CommonTree root_0 = null;
 19.7521 +
 19.7522 +        Token set128=null;
 19.7523 +
 19.7524 +        CommonTree set128_tree=null;
 19.7525 +
 19.7526 +        try { dbg.enterRule(getGrammarFileName(), "notTerminal");
 19.7527 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.7528 +        incRuleLevel();
 19.7529 +        dbg.location(319, 1);
 19.7530 +
 19.7531 +        try {
 19.7532 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:320:2: ( CHAR_LITERAL | TOKEN_REF | STRING_LITERAL )
 19.7533 +            dbg.enterAlt(1);
 19.7534 +
 19.7535 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:
 19.7536 +            {
 19.7537 +            root_0 = (CommonTree)adaptor.nil();
 19.7538 +
 19.7539 +            dbg.location(320,2);
 19.7540 +            set128=(Token)input.LT(1);
 19.7541 +            if ( (input.LA(1)>=TOKEN_REF && input.LA(1)<=CHAR_LITERAL) ) {
 19.7542 +                input.consume();
 19.7543 +                if ( state.backtracking==0 ) adaptor.addChild(root_0, (CommonTree)adaptor.create(set128));
 19.7544 +                state.errorRecovery=false;state.failed=false;
 19.7545 +            }
 19.7546 +            else {
 19.7547 +                if (state.backtracking>0) {state.failed=true; return retval;}
 19.7548 +                MismatchedSetException mse = new MismatchedSetException(null,input);
 19.7549 +                dbg.recognitionException(mse);
 19.7550 +                throw mse;
 19.7551 +            }
 19.7552 +
 19.7553 +
 19.7554 +            }
 19.7555 +
 19.7556 +            retval.stop = input.LT(-1);
 19.7557 +
 19.7558 +            if ( state.backtracking==0 ) {
 19.7559 +
 19.7560 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.7561 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.7562 +            }
 19.7563 +        }
 19.7564 +        catch (RecognitionException re) {
 19.7565 +            reportError(re);
 19.7566 +            recover(input,re);
 19.7567 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.7568 +
 19.7569 +        }
 19.7570 +        finally {
 19.7571 +        }
 19.7572 +        dbg.location(323, 2);
 19.7573 +
 19.7574 +        }
 19.7575 +        finally {
 19.7576 +            dbg.exitRule(getGrammarFileName(), "notTerminal");
 19.7577 +            decRuleLevel();
 19.7578 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.7579 +        }
 19.7580 +
 19.7581 +        return retval;
 19.7582 +    }
 19.7583 +    // $ANTLR end "notTerminal"
 19.7584 +
 19.7585 +    public static class ebnfSuffix_return extends ParserRuleReturnScope {
 19.7586 +        CommonTree tree;
 19.7587 +        public Object getTree() { return tree; }
 19.7588 +    };
 19.7589 +
 19.7590 +    // $ANTLR start "ebnfSuffix"
 19.7591 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:325:1: ebnfSuffix : ( '?' -> OPTIONAL[op] | '*' -> CLOSURE[op] | '+' -> POSITIVE_CLOSURE[op] );
 19.7592 +    public final ANTLRv3Parser.ebnfSuffix_return ebnfSuffix() throws RecognitionException {
 19.7593 +        ANTLRv3Parser.ebnfSuffix_return retval = new ANTLRv3Parser.ebnfSuffix_return();
 19.7594 +        retval.start = input.LT(1);
 19.7595 +
 19.7596 +        CommonTree root_0 = null;
 19.7597 +
 19.7598 +        Token char_literal129=null;
 19.7599 +        Token char_literal130=null;
 19.7600 +        Token char_literal131=null;
 19.7601 +
 19.7602 +        CommonTree char_literal129_tree=null;
 19.7603 +        CommonTree char_literal130_tree=null;
 19.7604 +        CommonTree char_literal131_tree=null;
 19.7605 +        RewriteRuleTokenStream stream_91=new RewriteRuleTokenStream(adaptor,"token 91");
 19.7606 +        RewriteRuleTokenStream stream_90=new RewriteRuleTokenStream(adaptor,"token 90");
 19.7607 +        RewriteRuleTokenStream stream_74=new RewriteRuleTokenStream(adaptor,"token 74");
 19.7608 +
 19.7609 +
 19.7610 +        	Token op = input.LT(1);
 19.7611 +
 19.7612 +        try { dbg.enterRule(getGrammarFileName(), "ebnfSuffix");
 19.7613 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.7614 +        incRuleLevel();
 19.7615 +        dbg.location(325, 1);
 19.7616 +
 19.7617 +        try {
 19.7618 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:329:2: ( '?' -> OPTIONAL[op] | '*' -> CLOSURE[op] | '+' -> POSITIVE_CLOSURE[op] )
 19.7619 +            int alt61=3;
 19.7620 +            try { dbg.enterDecision(61, decisionCanBacktrack[61]);
 19.7621 +
 19.7622 +            switch ( input.LA(1) ) {
 19.7623 +            case 90:
 19.7624 +                {
 19.7625 +                alt61=1;
 19.7626 +                }
 19.7627 +                break;
 19.7628 +            case 74:
 19.7629 +                {
 19.7630 +                alt61=2;
 19.7631 +                }
 19.7632 +                break;
 19.7633 +            case 91:
 19.7634 +                {
 19.7635 +                alt61=3;
 19.7636 +                }
 19.7637 +                break;
 19.7638 +            default:
 19.7639 +                if (state.backtracking>0) {state.failed=true; return retval;}
 19.7640 +                NoViableAltException nvae =
 19.7641 +                    new NoViableAltException("", 61, 0, input);
 19.7642 +
 19.7643 +                dbg.recognitionException(nvae);
 19.7644 +                throw nvae;
 19.7645 +            }
 19.7646 +
 19.7647 +            } finally {dbg.exitDecision(61);}
 19.7648 +
 19.7649 +            switch (alt61) {
 19.7650 +                case 1 :
 19.7651 +                    dbg.enterAlt(1);
 19.7652 +
 19.7653 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:329:4: '?'
 19.7654 +                    {
 19.7655 +                    dbg.location(329,4);
 19.7656 +                    char_literal129=(Token)match(input,90,FOLLOW_90_in_ebnfSuffix2437); if (state.failed) return retval; 
 19.7657 +                    if ( state.backtracking==0 ) stream_90.add(char_literal129);
 19.7658 +
 19.7659 +
 19.7660 +
 19.7661 +                    // AST REWRITE
 19.7662 +                    // elements: 
 19.7663 +                    // token labels: 
 19.7664 +                    // rule labels: retval
 19.7665 +                    // token list labels: 
 19.7666 +                    // rule list labels: 
 19.7667 +                    // wildcard labels: 
 19.7668 +                    if ( state.backtracking==0 ) {
 19.7669 +                    retval.tree = root_0;
 19.7670 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.7671 +
 19.7672 +                    root_0 = (CommonTree)adaptor.nil();
 19.7673 +                    // 329:8: -> OPTIONAL[op]
 19.7674 +                    {
 19.7675 +                        dbg.location(329,11);
 19.7676 +                        adaptor.addChild(root_0, (CommonTree)adaptor.create(OPTIONAL, op));
 19.7677 +
 19.7678 +                    }
 19.7679 +
 19.7680 +                    retval.tree = root_0;}
 19.7681 +                    }
 19.7682 +                    break;
 19.7683 +                case 2 :
 19.7684 +                    dbg.enterAlt(2);
 19.7685 +
 19.7686 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:330:6: '*'
 19.7687 +                    {
 19.7688 +                    dbg.location(330,6);
 19.7689 +                    char_literal130=(Token)match(input,74,FOLLOW_74_in_ebnfSuffix2449); if (state.failed) return retval; 
 19.7690 +                    if ( state.backtracking==0 ) stream_74.add(char_literal130);
 19.7691 +
 19.7692 +
 19.7693 +
 19.7694 +                    // AST REWRITE
 19.7695 +                    // elements: 
 19.7696 +                    // token labels: 
 19.7697 +                    // rule labels: retval
 19.7698 +                    // token list labels: 
 19.7699 +                    // rule list labels: 
 19.7700 +                    // wildcard labels: 
 19.7701 +                    if ( state.backtracking==0 ) {
 19.7702 +                    retval.tree = root_0;
 19.7703 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.7704 +
 19.7705 +                    root_0 = (CommonTree)adaptor.nil();
 19.7706 +                    // 330:10: -> CLOSURE[op]
 19.7707 +                    {
 19.7708 +                        dbg.location(330,13);
 19.7709 +                        adaptor.addChild(root_0, (CommonTree)adaptor.create(CLOSURE, op));
 19.7710 +
 19.7711 +                    }
 19.7712 +
 19.7713 +                    retval.tree = root_0;}
 19.7714 +                    }
 19.7715 +                    break;
 19.7716 +                case 3 :
 19.7717 +                    dbg.enterAlt(3);
 19.7718 +
 19.7719 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:331:7: '+'
 19.7720 +                    {
 19.7721 +                    dbg.location(331,7);
 19.7722 +                    char_literal131=(Token)match(input,91,FOLLOW_91_in_ebnfSuffix2462); if (state.failed) return retval; 
 19.7723 +                    if ( state.backtracking==0 ) stream_91.add(char_literal131);
 19.7724 +
 19.7725 +
 19.7726 +
 19.7727 +                    // AST REWRITE
 19.7728 +                    // elements: 
 19.7729 +                    // token labels: 
 19.7730 +                    // rule labels: retval
 19.7731 +                    // token list labels: 
 19.7732 +                    // rule list labels: 
 19.7733 +                    // wildcard labels: 
 19.7734 +                    if ( state.backtracking==0 ) {
 19.7735 +                    retval.tree = root_0;
 19.7736 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.7737 +
 19.7738 +                    root_0 = (CommonTree)adaptor.nil();
 19.7739 +                    // 331:11: -> POSITIVE_CLOSURE[op]
 19.7740 +                    {
 19.7741 +                        dbg.location(331,14);
 19.7742 +                        adaptor.addChild(root_0, (CommonTree)adaptor.create(POSITIVE_CLOSURE, op));
 19.7743 +
 19.7744 +                    }
 19.7745 +
 19.7746 +                    retval.tree = root_0;}
 19.7747 +                    }
 19.7748 +                    break;
 19.7749 +
 19.7750 +            }
 19.7751 +            retval.stop = input.LT(-1);
 19.7752 +
 19.7753 +            if ( state.backtracking==0 ) {
 19.7754 +
 19.7755 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.7756 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.7757 +            }
 19.7758 +        }
 19.7759 +        catch (RecognitionException re) {
 19.7760 +            reportError(re);
 19.7761 +            recover(input,re);
 19.7762 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.7763 +
 19.7764 +        }
 19.7765 +        finally {
 19.7766 +        }
 19.7767 +        dbg.location(332, 2);
 19.7768 +
 19.7769 +        }
 19.7770 +        finally {
 19.7771 +            dbg.exitRule(getGrammarFileName(), "ebnfSuffix");
 19.7772 +            decRuleLevel();
 19.7773 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.7774 +        }
 19.7775 +
 19.7776 +        return retval;
 19.7777 +    }
 19.7778 +    // $ANTLR end "ebnfSuffix"
 19.7779 +
 19.7780 +    public static class rewrite_return extends ParserRuleReturnScope {
 19.7781 +        CommonTree tree;
 19.7782 +        public Object getTree() { return tree; }
 19.7783 +    };
 19.7784 +
 19.7785 +    // $ANTLR start "rewrite"
 19.7786 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:338:1: rewrite : ( (rew+= '->' preds+= SEMPRED predicated+= rewrite_alternative )* rew2= '->' last= rewrite_alternative -> ( ^( $rew $preds $predicated) )* ^( $rew2 $last) | );
 19.7787 +    public final ANTLRv3Parser.rewrite_return rewrite() throws RecognitionException {
 19.7788 +        ANTLRv3Parser.rewrite_return retval = new ANTLRv3Parser.rewrite_return();
 19.7789 +        retval.start = input.LT(1);
 19.7790 +
 19.7791 +        CommonTree root_0 = null;
 19.7792 +
 19.7793 +        Token rew2=null;
 19.7794 +        Token rew=null;
 19.7795 +        Token preds=null;
 19.7796 +        List list_rew=null;
 19.7797 +        List list_preds=null;
 19.7798 +        List list_predicated=null;
 19.7799 +        ANTLRv3Parser.rewrite_alternative_return last = null;
 19.7800 +
 19.7801 +        RuleReturnScope predicated = null;
 19.7802 +        CommonTree rew2_tree=null;
 19.7803 +        CommonTree rew_tree=null;
 19.7804 +        CommonTree preds_tree=null;
 19.7805 +        RewriteRuleTokenStream stream_SEMPRED=new RewriteRuleTokenStream(adaptor,"token SEMPRED");
 19.7806 +        RewriteRuleTokenStream stream_REWRITE=new RewriteRuleTokenStream(adaptor,"token REWRITE");
 19.7807 +        RewriteRuleSubtreeStream stream_rewrite_alternative=new RewriteRuleSubtreeStream(adaptor,"rule rewrite_alternative");
 19.7808 +
 19.7809 +        	Token firstToken = input.LT(1);
 19.7810 +
 19.7811 +        try { dbg.enterRule(getGrammarFileName(), "rewrite");
 19.7812 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.7813 +        incRuleLevel();
 19.7814 +        dbg.location(338, 1);
 19.7815 +
 19.7816 +        try {
 19.7817 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:342:2: ( (rew+= '->' preds+= SEMPRED predicated+= rewrite_alternative )* rew2= '->' last= rewrite_alternative -> ( ^( $rew $preds $predicated) )* ^( $rew2 $last) | )
 19.7818 +            int alt63=2;
 19.7819 +            try { dbg.enterDecision(63, decisionCanBacktrack[63]);
 19.7820 +
 19.7821 +            int LA63_0 = input.LA(1);
 19.7822 +
 19.7823 +            if ( (LA63_0==REWRITE) ) {
 19.7824 +                alt63=1;
 19.7825 +            }
 19.7826 +            else if ( (LA63_0==69||(LA63_0>=83 && LA63_0<=84)) ) {
 19.7827 +                alt63=2;
 19.7828 +            }
 19.7829 +            else {
 19.7830 +                if (state.backtracking>0) {state.failed=true; return retval;}
 19.7831 +                NoViableAltException nvae =
 19.7832 +                    new NoViableAltException("", 63, 0, input);
 19.7833 +
 19.7834 +                dbg.recognitionException(nvae);
 19.7835 +                throw nvae;
 19.7836 +            }
 19.7837 +            } finally {dbg.exitDecision(63);}
 19.7838 +
 19.7839 +            switch (alt63) {
 19.7840 +                case 1 :
 19.7841 +                    dbg.enterAlt(1);
 19.7842 +
 19.7843 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:342:4: (rew+= '->' preds+= SEMPRED predicated+= rewrite_alternative )* rew2= '->' last= rewrite_alternative
 19.7844 +                    {
 19.7845 +                    dbg.location(342,4);
 19.7846 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:342:4: (rew+= '->' preds+= SEMPRED predicated+= rewrite_alternative )*
 19.7847 +                    try { dbg.enterSubRule(62);
 19.7848 +
 19.7849 +                    loop62:
 19.7850 +                    do {
 19.7851 +                        int alt62=2;
 19.7852 +                        try { dbg.enterDecision(62, decisionCanBacktrack[62]);
 19.7853 +
 19.7854 +                        int LA62_0 = input.LA(1);
 19.7855 +
 19.7856 +                        if ( (LA62_0==REWRITE) ) {
 19.7857 +                            int LA62_1 = input.LA(2);
 19.7858 +
 19.7859 +                            if ( (LA62_1==SEMPRED) ) {
 19.7860 +                                alt62=1;
 19.7861 +                            }
 19.7862 +
 19.7863 +
 19.7864 +                        }
 19.7865 +
 19.7866 +
 19.7867 +                        } finally {dbg.exitDecision(62);}
 19.7868 +
 19.7869 +                        switch (alt62) {
 19.7870 +                    	case 1 :
 19.7871 +                    	    dbg.enterAlt(1);
 19.7872 +
 19.7873 +                    	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:342:5: rew+= '->' preds+= SEMPRED predicated+= rewrite_alternative
 19.7874 +                    	    {
 19.7875 +                    	    dbg.location(342,8);
 19.7876 +                    	    rew=(Token)match(input,REWRITE,FOLLOW_REWRITE_in_rewrite2491); if (state.failed) return retval; 
 19.7877 +                    	    if ( state.backtracking==0 ) stream_REWRITE.add(rew);
 19.7878 +
 19.7879 +                    	    if (list_rew==null) list_rew=new ArrayList();
 19.7880 +                    	    list_rew.add(rew);
 19.7881 +
 19.7882 +                    	    dbg.location(342,20);
 19.7883 +                    	    preds=(Token)match(input,SEMPRED,FOLLOW_SEMPRED_in_rewrite2495); if (state.failed) return retval; 
 19.7884 +                    	    if ( state.backtracking==0 ) stream_SEMPRED.add(preds);
 19.7885 +
 19.7886 +                    	    if (list_preds==null) list_preds=new ArrayList();
 19.7887 +                    	    list_preds.add(preds);
 19.7888 +
 19.7889 +                    	    dbg.location(342,40);
 19.7890 +                    	    pushFollow(FOLLOW_rewrite_alternative_in_rewrite2499);
 19.7891 +                    	    predicated=rewrite_alternative();
 19.7892 +
 19.7893 +                    	    state._fsp--;
 19.7894 +                    	    if (state.failed) return retval;
 19.7895 +                    	    if ( state.backtracking==0 ) stream_rewrite_alternative.add(predicated.getTree());
 19.7896 +                    	    if (list_predicated==null) list_predicated=new ArrayList();
 19.7897 +                    	    list_predicated.add(predicated.getTree());
 19.7898 +
 19.7899 +
 19.7900 +                    	    }
 19.7901 +                    	    break;
 19.7902 +
 19.7903 +                    	default :
 19.7904 +                    	    break loop62;
 19.7905 +                        }
 19.7906 +                    } while (true);
 19.7907 +                    } finally {dbg.exitSubRule(62);}
 19.7908 +
 19.7909 +                    dbg.location(343,7);
 19.7910 +                    rew2=(Token)match(input,REWRITE,FOLLOW_REWRITE_in_rewrite2507); if (state.failed) return retval; 
 19.7911 +                    if ( state.backtracking==0 ) stream_REWRITE.add(rew2);
 19.7912 +
 19.7913 +                    dbg.location(343,17);
 19.7914 +                    pushFollow(FOLLOW_rewrite_alternative_in_rewrite2511);
 19.7915 +                    last=rewrite_alternative();
 19.7916 +
 19.7917 +                    state._fsp--;
 19.7918 +                    if (state.failed) return retval;
 19.7919 +                    if ( state.backtracking==0 ) stream_rewrite_alternative.add(last.getTree());
 19.7920 +
 19.7921 +
 19.7922 +                    // AST REWRITE
 19.7923 +                    // elements: predicated, last, preds, rew2, rew
 19.7924 +                    // token labels: rew2
 19.7925 +                    // rule labels: retval, last
 19.7926 +                    // token list labels: rew, preds
 19.7927 +                    // rule list labels: predicated
 19.7928 +                    // wildcard labels: 
 19.7929 +                    if ( state.backtracking==0 ) {
 19.7930 +                    retval.tree = root_0;
 19.7931 +                    RewriteRuleTokenStream stream_rew2=new RewriteRuleTokenStream(adaptor,"token rew2",rew2);
 19.7932 +                    RewriteRuleTokenStream stream_rew=new RewriteRuleTokenStream(adaptor,"token rew", list_rew);
 19.7933 +                    RewriteRuleTokenStream stream_preds=new RewriteRuleTokenStream(adaptor,"token preds", list_preds);
 19.7934 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.7935 +                    RewriteRuleSubtreeStream stream_last=new RewriteRuleSubtreeStream(adaptor,"rule last",last!=null?last.tree:null);
 19.7936 +                    RewriteRuleSubtreeStream stream_predicated=new RewriteRuleSubtreeStream(adaptor,"token predicated",list_predicated);
 19.7937 +                    root_0 = (CommonTree)adaptor.nil();
 19.7938 +                    // 344:9: -> ( ^( $rew $preds $predicated) )* ^( $rew2 $last)
 19.7939 +                    {
 19.7940 +                        dbg.location(344,12);
 19.7941 +                        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:344:12: ( ^( $rew $preds $predicated) )*
 19.7942 +                        while ( stream_predicated.hasNext()||stream_preds.hasNext()||stream_rew.hasNext() ) {
 19.7943 +                            dbg.location(344,12);
 19.7944 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:344:12: ^( $rew $preds $predicated)
 19.7945 +                            {
 19.7946 +                            CommonTree root_1 = (CommonTree)adaptor.nil();
 19.7947 +                            dbg.location(344,14);
 19.7948 +                            root_1 = (CommonTree)adaptor.becomeRoot(stream_rew.nextNode(), root_1);
 19.7949 +
 19.7950 +                            dbg.location(344,19);
 19.7951 +                            adaptor.addChild(root_1, stream_preds.nextNode());
 19.7952 +                            dbg.location(344,26);
 19.7953 +                            adaptor.addChild(root_1, stream_predicated.nextTree());
 19.7954 +
 19.7955 +                            adaptor.addChild(root_0, root_1);
 19.7956 +                            }
 19.7957 +
 19.7958 +                        }
 19.7959 +                        stream_predicated.reset();
 19.7960 +                        stream_preds.reset();
 19.7961 +                        stream_rew.reset();
 19.7962 +                        dbg.location(344,40);
 19.7963 +                        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:344:40: ^( $rew2 $last)
 19.7964 +                        {
 19.7965 +                        CommonTree root_1 = (CommonTree)adaptor.nil();
 19.7966 +                        dbg.location(344,42);
 19.7967 +                        root_1 = (CommonTree)adaptor.becomeRoot(stream_rew2.nextNode(), root_1);
 19.7968 +
 19.7969 +                        dbg.location(344,48);
 19.7970 +                        adaptor.addChild(root_1, stream_last.nextTree());
 19.7971 +
 19.7972 +                        adaptor.addChild(root_0, root_1);
 19.7973 +                        }
 19.7974 +
 19.7975 +                    }
 19.7976 +
 19.7977 +                    retval.tree = root_0;}
 19.7978 +                    }
 19.7979 +                    break;
 19.7980 +                case 2 :
 19.7981 +                    dbg.enterAlt(2);
 19.7982 +
 19.7983 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:346:2: 
 19.7984 +                    {
 19.7985 +                    root_0 = (CommonTree)adaptor.nil();
 19.7986 +
 19.7987 +                    }
 19.7988 +                    break;
 19.7989 +
 19.7990 +            }
 19.7991 +            retval.stop = input.LT(-1);
 19.7992 +
 19.7993 +            if ( state.backtracking==0 ) {
 19.7994 +
 19.7995 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.7996 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.7997 +            }
 19.7998 +        }
 19.7999 +        catch (RecognitionException re) {
 19.8000 +            reportError(re);
 19.8001 +            recover(input,re);
 19.8002 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.8003 +
 19.8004 +        }
 19.8005 +        finally {
 19.8006 +        }
 19.8007 +        dbg.location(346, 2);
 19.8008 +
 19.8009 +        }
 19.8010 +        finally {
 19.8011 +            dbg.exitRule(getGrammarFileName(), "rewrite");
 19.8012 +            decRuleLevel();
 19.8013 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.8014 +        }
 19.8015 +
 19.8016 +        return retval;
 19.8017 +    }
 19.8018 +    // $ANTLR end "rewrite"
 19.8019 +
 19.8020 +    public static class rewrite_alternative_return extends ParserRuleReturnScope {
 19.8021 +        CommonTree tree;
 19.8022 +        public Object getTree() { return tree; }
 19.8023 +    };
 19.8024 +
 19.8025 +    // $ANTLR start "rewrite_alternative"
 19.8026 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:348:1: rewrite_alternative options {backtrack=true; } : ( rewrite_template | rewrite_tree_alternative | -> ^( ALT[\"ALT\"] EPSILON[\"EPSILON\"] EOA[\"EOA\"] ) );
 19.8027 +    public final ANTLRv3Parser.rewrite_alternative_return rewrite_alternative() throws RecognitionException {
 19.8028 +        ANTLRv3Parser.rewrite_alternative_return retval = new ANTLRv3Parser.rewrite_alternative_return();
 19.8029 +        retval.start = input.LT(1);
 19.8030 +
 19.8031 +        CommonTree root_0 = null;
 19.8032 +
 19.8033 +        ANTLRv3Parser.rewrite_template_return rewrite_template132 = null;
 19.8034 +
 19.8035 +        ANTLRv3Parser.rewrite_tree_alternative_return rewrite_tree_alternative133 = null;
 19.8036 +
 19.8037 +
 19.8038 +
 19.8039 +        try { dbg.enterRule(getGrammarFileName(), "rewrite_alternative");
 19.8040 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.8041 +        incRuleLevel();
 19.8042 +        dbg.location(348, 1);
 19.8043 +
 19.8044 +        try {
 19.8045 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:350:2: ( rewrite_template | rewrite_tree_alternative | -> ^( ALT[\"ALT\"] EPSILON[\"EPSILON\"] EOA[\"EOA\"] ) )
 19.8046 +            int alt64=3;
 19.8047 +            try { dbg.enterDecision(64, decisionCanBacktrack[64]);
 19.8048 +
 19.8049 +            try {
 19.8050 +                isCyclicDecision = true;
 19.8051 +                alt64 = dfa64.predict(input);
 19.8052 +            }
 19.8053 +            catch (NoViableAltException nvae) {
 19.8054 +                dbg.recognitionException(nvae);
 19.8055 +                throw nvae;
 19.8056 +            }
 19.8057 +            } finally {dbg.exitDecision(64);}
 19.8058 +
 19.8059 +            switch (alt64) {
 19.8060 +                case 1 :
 19.8061 +                    dbg.enterAlt(1);
 19.8062 +
 19.8063 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:350:4: rewrite_template
 19.8064 +                    {
 19.8065 +                    root_0 = (CommonTree)adaptor.nil();
 19.8066 +
 19.8067 +                    dbg.location(350,4);
 19.8068 +                    pushFollow(FOLLOW_rewrite_template_in_rewrite_alternative2562);
 19.8069 +                    rewrite_template132=rewrite_template();
 19.8070 +
 19.8071 +                    state._fsp--;
 19.8072 +                    if (state.failed) return retval;
 19.8073 +                    if ( state.backtracking==0 ) adaptor.addChild(root_0, rewrite_template132.getTree());
 19.8074 +
 19.8075 +                    }
 19.8076 +                    break;
 19.8077 +                case 2 :
 19.8078 +                    dbg.enterAlt(2);
 19.8079 +
 19.8080 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:351:4: rewrite_tree_alternative
 19.8081 +                    {
 19.8082 +                    root_0 = (CommonTree)adaptor.nil();
 19.8083 +
 19.8084 +                    dbg.location(351,4);
 19.8085 +                    pushFollow(FOLLOW_rewrite_tree_alternative_in_rewrite_alternative2567);
 19.8086 +                    rewrite_tree_alternative133=rewrite_tree_alternative();
 19.8087 +
 19.8088 +                    state._fsp--;
 19.8089 +                    if (state.failed) return retval;
 19.8090 +                    if ( state.backtracking==0 ) adaptor.addChild(root_0, rewrite_tree_alternative133.getTree());
 19.8091 +
 19.8092 +                    }
 19.8093 +                    break;
 19.8094 +                case 3 :
 19.8095 +                    dbg.enterAlt(3);
 19.8096 +
 19.8097 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:352:29: 
 19.8098 +                    {
 19.8099 +
 19.8100 +                    // AST REWRITE
 19.8101 +                    // elements: 
 19.8102 +                    // token labels: 
 19.8103 +                    // rule labels: retval
 19.8104 +                    // token list labels: 
 19.8105 +                    // rule list labels: 
 19.8106 +                    // wildcard labels: 
 19.8107 +                    if ( state.backtracking==0 ) {
 19.8108 +                    retval.tree = root_0;
 19.8109 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.8110 +
 19.8111 +                    root_0 = (CommonTree)adaptor.nil();
 19.8112 +                    // 352:29: -> ^( ALT[\"ALT\"] EPSILON[\"EPSILON\"] EOA[\"EOA\"] )
 19.8113 +                    {
 19.8114 +                        dbg.location(352,32);
 19.8115 +                        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:352:32: ^( ALT[\"ALT\"] EPSILON[\"EPSILON\"] EOA[\"EOA\"] )
 19.8116 +                        {
 19.8117 +                        CommonTree root_1 = (CommonTree)adaptor.nil();
 19.8118 +                        dbg.location(352,34);
 19.8119 +                        root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(ALT, "ALT"), root_1);
 19.8120 +
 19.8121 +                        dbg.location(352,45);
 19.8122 +                        adaptor.addChild(root_1, (CommonTree)adaptor.create(EPSILON, "EPSILON"));
 19.8123 +                        dbg.location(352,64);
 19.8124 +                        adaptor.addChild(root_1, (CommonTree)adaptor.create(EOA, "EOA"));
 19.8125 +
 19.8126 +                        adaptor.addChild(root_0, root_1);
 19.8127 +                        }
 19.8128 +
 19.8129 +                    }
 19.8130 +
 19.8131 +                    retval.tree = root_0;}
 19.8132 +                    }
 19.8133 +                    break;
 19.8134 +
 19.8135 +            }
 19.8136 +            retval.stop = input.LT(-1);
 19.8137 +
 19.8138 +            if ( state.backtracking==0 ) {
 19.8139 +
 19.8140 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.8141 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.8142 +            }
 19.8143 +        }
 19.8144 +        catch (RecognitionException re) {
 19.8145 +            reportError(re);
 19.8146 +            recover(input,re);
 19.8147 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.8148 +
 19.8149 +        }
 19.8150 +        finally {
 19.8151 +        }
 19.8152 +        dbg.location(353, 2);
 19.8153 +
 19.8154 +        }
 19.8155 +        finally {
 19.8156 +            dbg.exitRule(getGrammarFileName(), "rewrite_alternative");
 19.8157 +            decRuleLevel();
 19.8158 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.8159 +        }
 19.8160 +
 19.8161 +        return retval;
 19.8162 +    }
 19.8163 +    // $ANTLR end "rewrite_alternative"
 19.8164 +
 19.8165 +    public static class rewrite_tree_block_return extends ParserRuleReturnScope {
 19.8166 +        CommonTree tree;
 19.8167 +        public Object getTree() { return tree; }
 19.8168 +    };
 19.8169 +
 19.8170 +    // $ANTLR start "rewrite_tree_block"
 19.8171 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:355:1: rewrite_tree_block : lp= '(' rewrite_tree_alternative ')' -> ^( BLOCK[$lp,\"BLOCK\"] rewrite_tree_alternative EOB[$lp,\"EOB\"] ) ;
 19.8172 +    public final ANTLRv3Parser.rewrite_tree_block_return rewrite_tree_block() throws RecognitionException {
 19.8173 +        ANTLRv3Parser.rewrite_tree_block_return retval = new ANTLRv3Parser.rewrite_tree_block_return();
 19.8174 +        retval.start = input.LT(1);
 19.8175 +
 19.8176 +        CommonTree root_0 = null;
 19.8177 +
 19.8178 +        Token lp=null;
 19.8179 +        Token char_literal135=null;
 19.8180 +        ANTLRv3Parser.rewrite_tree_alternative_return rewrite_tree_alternative134 = null;
 19.8181 +
 19.8182 +
 19.8183 +        CommonTree lp_tree=null;
 19.8184 +        CommonTree char_literal135_tree=null;
 19.8185 +        RewriteRuleTokenStream stream_82=new RewriteRuleTokenStream(adaptor,"token 82");
 19.8186 +        RewriteRuleTokenStream stream_84=new RewriteRuleTokenStream(adaptor,"token 84");
 19.8187 +        RewriteRuleSubtreeStream stream_rewrite_tree_alternative=new RewriteRuleSubtreeStream(adaptor,"rule rewrite_tree_alternative");
 19.8188 +        try { dbg.enterRule(getGrammarFileName(), "rewrite_tree_block");
 19.8189 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.8190 +        incRuleLevel();
 19.8191 +        dbg.location(355, 1);
 19.8192 +
 19.8193 +        try {
 19.8194 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:356:5: (lp= '(' rewrite_tree_alternative ')' -> ^( BLOCK[$lp,\"BLOCK\"] rewrite_tree_alternative EOB[$lp,\"EOB\"] ) )
 19.8195 +            dbg.enterAlt(1);
 19.8196 +
 19.8197 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:356:9: lp= '(' rewrite_tree_alternative ')'
 19.8198 +            {
 19.8199 +            dbg.location(356,11);
 19.8200 +            lp=(Token)match(input,82,FOLLOW_82_in_rewrite_tree_block2609); if (state.failed) return retval; 
 19.8201 +            if ( state.backtracking==0 ) stream_82.add(lp);
 19.8202 +
 19.8203 +            dbg.location(356,16);
 19.8204 +            pushFollow(FOLLOW_rewrite_tree_alternative_in_rewrite_tree_block2611);
 19.8205 +            rewrite_tree_alternative134=rewrite_tree_alternative();
 19.8206 +
 19.8207 +            state._fsp--;
 19.8208 +            if (state.failed) return retval;
 19.8209 +            if ( state.backtracking==0 ) stream_rewrite_tree_alternative.add(rewrite_tree_alternative134.getTree());
 19.8210 +            dbg.location(356,41);
 19.8211 +            char_literal135=(Token)match(input,84,FOLLOW_84_in_rewrite_tree_block2613); if (state.failed) return retval; 
 19.8212 +            if ( state.backtracking==0 ) stream_84.add(char_literal135);
 19.8213 +
 19.8214 +
 19.8215 +
 19.8216 +            // AST REWRITE
 19.8217 +            // elements: rewrite_tree_alternative
 19.8218 +            // token labels: 
 19.8219 +            // rule labels: retval
 19.8220 +            // token list labels: 
 19.8221 +            // rule list labels: 
 19.8222 +            // wildcard labels: 
 19.8223 +            if ( state.backtracking==0 ) {
 19.8224 +            retval.tree = root_0;
 19.8225 +            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.8226 +
 19.8227 +            root_0 = (CommonTree)adaptor.nil();
 19.8228 +            // 357:6: -> ^( BLOCK[$lp,\"BLOCK\"] rewrite_tree_alternative EOB[$lp,\"EOB\"] )
 19.8229 +            {
 19.8230 +                dbg.location(357,9);
 19.8231 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:357:9: ^( BLOCK[$lp,\"BLOCK\"] rewrite_tree_alternative EOB[$lp,\"EOB\"] )
 19.8232 +                {
 19.8233 +                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.8234 +                dbg.location(357,11);
 19.8235 +                root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(BLOCK, lp, "BLOCK"), root_1);
 19.8236 +
 19.8237 +                dbg.location(357,30);
 19.8238 +                adaptor.addChild(root_1, stream_rewrite_tree_alternative.nextTree());
 19.8239 +                dbg.location(357,55);
 19.8240 +                adaptor.addChild(root_1, (CommonTree)adaptor.create(EOB, lp, "EOB"));
 19.8241 +
 19.8242 +                adaptor.addChild(root_0, root_1);
 19.8243 +                }
 19.8244 +
 19.8245 +            }
 19.8246 +
 19.8247 +            retval.tree = root_0;}
 19.8248 +            }
 19.8249 +
 19.8250 +            retval.stop = input.LT(-1);
 19.8251 +
 19.8252 +            if ( state.backtracking==0 ) {
 19.8253 +
 19.8254 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.8255 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.8256 +            }
 19.8257 +        }
 19.8258 +        catch (RecognitionException re) {
 19.8259 +            reportError(re);
 19.8260 +            recover(input,re);
 19.8261 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.8262 +
 19.8263 +        }
 19.8264 +        finally {
 19.8265 +        }
 19.8266 +        dbg.location(358, 5);
 19.8267 +
 19.8268 +        }
 19.8269 +        finally {
 19.8270 +            dbg.exitRule(getGrammarFileName(), "rewrite_tree_block");
 19.8271 +            decRuleLevel();
 19.8272 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.8273 +        }
 19.8274 +
 19.8275 +        return retval;
 19.8276 +    }
 19.8277 +    // $ANTLR end "rewrite_tree_block"
 19.8278 +
 19.8279 +    public static class rewrite_tree_alternative_return extends ParserRuleReturnScope {
 19.8280 +        CommonTree tree;
 19.8281 +        public Object getTree() { return tree; }
 19.8282 +    };
 19.8283 +
 19.8284 +    // $ANTLR start "rewrite_tree_alternative"
 19.8285 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:360:1: rewrite_tree_alternative : ( rewrite_tree_element )+ -> ^( ALT[\"ALT\"] ( rewrite_tree_element )+ EOA[\"EOA\"] ) ;
 19.8286 +    public final ANTLRv3Parser.rewrite_tree_alternative_return rewrite_tree_alternative() throws RecognitionException {
 19.8287 +        ANTLRv3Parser.rewrite_tree_alternative_return retval = new ANTLRv3Parser.rewrite_tree_alternative_return();
 19.8288 +        retval.start = input.LT(1);
 19.8289 +
 19.8290 +        CommonTree root_0 = null;
 19.8291 +
 19.8292 +        ANTLRv3Parser.rewrite_tree_element_return rewrite_tree_element136 = null;
 19.8293 +
 19.8294 +
 19.8295 +        RewriteRuleSubtreeStream stream_rewrite_tree_element=new RewriteRuleSubtreeStream(adaptor,"rule rewrite_tree_element");
 19.8296 +        try { dbg.enterRule(getGrammarFileName(), "rewrite_tree_alternative");
 19.8297 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.8298 +        incRuleLevel();
 19.8299 +        dbg.location(360, 1);
 19.8300 +
 19.8301 +        try {
 19.8302 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:361:5: ( ( rewrite_tree_element )+ -> ^( ALT[\"ALT\"] ( rewrite_tree_element )+ EOA[\"EOA\"] ) )
 19.8303 +            dbg.enterAlt(1);
 19.8304 +
 19.8305 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:361:7: ( rewrite_tree_element )+
 19.8306 +            {
 19.8307 +            dbg.location(361,7);
 19.8308 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:361:7: ( rewrite_tree_element )+
 19.8309 +            int cnt65=0;
 19.8310 +            try { dbg.enterSubRule(65);
 19.8311 +
 19.8312 +            loop65:
 19.8313 +            do {
 19.8314 +                int alt65=2;
 19.8315 +                try { dbg.enterDecision(65, decisionCanBacktrack[65]);
 19.8316 +
 19.8317 +                int LA65_0 = input.LA(1);
 19.8318 +
 19.8319 +                if ( (LA65_0==TREE_BEGIN||(LA65_0>=TOKEN_REF && LA65_0<=ACTION)||LA65_0==RULE_REF||LA65_0==82||LA65_0==93) ) {
 19.8320 +                    alt65=1;
 19.8321 +                }
 19.8322 +
 19.8323 +
 19.8324 +                } finally {dbg.exitDecision(65);}
 19.8325 +
 19.8326 +                switch (alt65) {
 19.8327 +            	case 1 :
 19.8328 +            	    dbg.enterAlt(1);
 19.8329 +
 19.8330 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:361:7: rewrite_tree_element
 19.8331 +            	    {
 19.8332 +            	    dbg.location(361,7);
 19.8333 +            	    pushFollow(FOLLOW_rewrite_tree_element_in_rewrite_tree_alternative2647);
 19.8334 +            	    rewrite_tree_element136=rewrite_tree_element();
 19.8335 +
 19.8336 +            	    state._fsp--;
 19.8337 +            	    if (state.failed) return retval;
 19.8338 +            	    if ( state.backtracking==0 ) stream_rewrite_tree_element.add(rewrite_tree_element136.getTree());
 19.8339 +
 19.8340 +            	    }
 19.8341 +            	    break;
 19.8342 +
 19.8343 +            	default :
 19.8344 +            	    if ( cnt65 >= 1 ) break loop65;
 19.8345 +            	    if (state.backtracking>0) {state.failed=true; return retval;}
 19.8346 +                        EarlyExitException eee =
 19.8347 +                            new EarlyExitException(65, input);
 19.8348 +                        dbg.recognitionException(eee);
 19.8349 +
 19.8350 +                        throw eee;
 19.8351 +                }
 19.8352 +                cnt65++;
 19.8353 +            } while (true);
 19.8354 +            } finally {dbg.exitSubRule(65);}
 19.8355 +
 19.8356 +
 19.8357 +
 19.8358 +            // AST REWRITE
 19.8359 +            // elements: rewrite_tree_element
 19.8360 +            // token labels: 
 19.8361 +            // rule labels: retval
 19.8362 +            // token list labels: 
 19.8363 +            // rule list labels: 
 19.8364 +            // wildcard labels: 
 19.8365 +            if ( state.backtracking==0 ) {
 19.8366 +            retval.tree = root_0;
 19.8367 +            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.8368 +
 19.8369 +            root_0 = (CommonTree)adaptor.nil();
 19.8370 +            // 361:29: -> ^( ALT[\"ALT\"] ( rewrite_tree_element )+ EOA[\"EOA\"] )
 19.8371 +            {
 19.8372 +                dbg.location(361,32);
 19.8373 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:361:32: ^( ALT[\"ALT\"] ( rewrite_tree_element )+ EOA[\"EOA\"] )
 19.8374 +                {
 19.8375 +                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.8376 +                dbg.location(361,34);
 19.8377 +                root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(ALT, "ALT"), root_1);
 19.8378 +
 19.8379 +                dbg.location(361,45);
 19.8380 +                if ( !(stream_rewrite_tree_element.hasNext()) ) {
 19.8381 +                    throw new RewriteEarlyExitException();
 19.8382 +                }
 19.8383 +                while ( stream_rewrite_tree_element.hasNext() ) {
 19.8384 +                    dbg.location(361,45);
 19.8385 +                    adaptor.addChild(root_1, stream_rewrite_tree_element.nextTree());
 19.8386 +
 19.8387 +                }
 19.8388 +                stream_rewrite_tree_element.reset();
 19.8389 +                dbg.location(361,67);
 19.8390 +                adaptor.addChild(root_1, (CommonTree)adaptor.create(EOA, "EOA"));
 19.8391 +
 19.8392 +                adaptor.addChild(root_0, root_1);
 19.8393 +                }
 19.8394 +
 19.8395 +            }
 19.8396 +
 19.8397 +            retval.tree = root_0;}
 19.8398 +            }
 19.8399 +
 19.8400 +            retval.stop = input.LT(-1);
 19.8401 +
 19.8402 +            if ( state.backtracking==0 ) {
 19.8403 +
 19.8404 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.8405 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.8406 +            }
 19.8407 +        }
 19.8408 +        catch (RecognitionException re) {
 19.8409 +            reportError(re);
 19.8410 +            recover(input,re);
 19.8411 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.8412 +
 19.8413 +        }
 19.8414 +        finally {
 19.8415 +        }
 19.8416 +        dbg.location(362, 5);
 19.8417 +
 19.8418 +        }
 19.8419 +        finally {
 19.8420 +            dbg.exitRule(getGrammarFileName(), "rewrite_tree_alternative");
 19.8421 +            decRuleLevel();
 19.8422 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.8423 +        }
 19.8424 +
 19.8425 +        return retval;
 19.8426 +    }
 19.8427 +    // $ANTLR end "rewrite_tree_alternative"
 19.8428 +
 19.8429 +    public static class rewrite_tree_element_return extends ParserRuleReturnScope {
 19.8430 +        CommonTree tree;
 19.8431 +        public Object getTree() { return tree; }
 19.8432 +    };
 19.8433 +
 19.8434 +    // $ANTLR start "rewrite_tree_element"
 19.8435 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:364:1: rewrite_tree_element : ( rewrite_tree_atom | rewrite_tree_atom ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] rewrite_tree_atom EOA[\"EOA\"] ) EOB[\"EOB\"] ) ) | rewrite_tree ( ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] rewrite_tree EOA[\"EOA\"] ) EOB[\"EOB\"] ) ) | -> rewrite_tree ) | rewrite_tree_ebnf );
 19.8436 +    public final ANTLRv3Parser.rewrite_tree_element_return rewrite_tree_element() throws RecognitionException {
 19.8437 +        ANTLRv3Parser.rewrite_tree_element_return retval = new ANTLRv3Parser.rewrite_tree_element_return();
 19.8438 +        retval.start = input.LT(1);
 19.8439 +
 19.8440 +        CommonTree root_0 = null;
 19.8441 +
 19.8442 +        ANTLRv3Parser.rewrite_tree_atom_return rewrite_tree_atom137 = null;
 19.8443 +
 19.8444 +        ANTLRv3Parser.rewrite_tree_atom_return rewrite_tree_atom138 = null;
 19.8445 +
 19.8446 +        ANTLRv3Parser.ebnfSuffix_return ebnfSuffix139 = null;
 19.8447 +
 19.8448 +        ANTLRv3Parser.rewrite_tree_return rewrite_tree140 = null;
 19.8449 +
 19.8450 +        ANTLRv3Parser.ebnfSuffix_return ebnfSuffix141 = null;
 19.8451 +
 19.8452 +        ANTLRv3Parser.rewrite_tree_ebnf_return rewrite_tree_ebnf142 = null;
 19.8453 +
 19.8454 +
 19.8455 +        RewriteRuleSubtreeStream stream_rewrite_tree=new RewriteRuleSubtreeStream(adaptor,"rule rewrite_tree");
 19.8456 +        RewriteRuleSubtreeStream stream_ebnfSuffix=new RewriteRuleSubtreeStream(adaptor,"rule ebnfSuffix");
 19.8457 +        RewriteRuleSubtreeStream stream_rewrite_tree_atom=new RewriteRuleSubtreeStream(adaptor,"rule rewrite_tree_atom");
 19.8458 +        try { dbg.enterRule(getGrammarFileName(), "rewrite_tree_element");
 19.8459 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.8460 +        incRuleLevel();
 19.8461 +        dbg.location(364, 1);
 19.8462 +
 19.8463 +        try {
 19.8464 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:365:2: ( rewrite_tree_atom | rewrite_tree_atom ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] rewrite_tree_atom EOA[\"EOA\"] ) EOB[\"EOB\"] ) ) | rewrite_tree ( ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] rewrite_tree EOA[\"EOA\"] ) EOB[\"EOB\"] ) ) | -> rewrite_tree ) | rewrite_tree_ebnf )
 19.8465 +            int alt67=4;
 19.8466 +            try { dbg.enterDecision(67, decisionCanBacktrack[67]);
 19.8467 +
 19.8468 +            try {
 19.8469 +                isCyclicDecision = true;
 19.8470 +                alt67 = dfa67.predict(input);
 19.8471 +            }
 19.8472 +            catch (NoViableAltException nvae) {
 19.8473 +                dbg.recognitionException(nvae);
 19.8474 +                throw nvae;
 19.8475 +            }
 19.8476 +            } finally {dbg.exitDecision(67);}
 19.8477 +
 19.8478 +            switch (alt67) {
 19.8479 +                case 1 :
 19.8480 +                    dbg.enterAlt(1);
 19.8481 +
 19.8482 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:365:4: rewrite_tree_atom
 19.8483 +                    {
 19.8484 +                    root_0 = (CommonTree)adaptor.nil();
 19.8485 +
 19.8486 +                    dbg.location(365,4);
 19.8487 +                    pushFollow(FOLLOW_rewrite_tree_atom_in_rewrite_tree_element2675);
 19.8488 +                    rewrite_tree_atom137=rewrite_tree_atom();
 19.8489 +
 19.8490 +                    state._fsp--;
 19.8491 +                    if (state.failed) return retval;
 19.8492 +                    if ( state.backtracking==0 ) adaptor.addChild(root_0, rewrite_tree_atom137.getTree());
 19.8493 +
 19.8494 +                    }
 19.8495 +                    break;
 19.8496 +                case 2 :
 19.8497 +                    dbg.enterAlt(2);
 19.8498 +
 19.8499 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:366:4: rewrite_tree_atom ebnfSuffix
 19.8500 +                    {
 19.8501 +                    dbg.location(366,4);
 19.8502 +                    pushFollow(FOLLOW_rewrite_tree_atom_in_rewrite_tree_element2680);
 19.8503 +                    rewrite_tree_atom138=rewrite_tree_atom();
 19.8504 +
 19.8505 +                    state._fsp--;
 19.8506 +                    if (state.failed) return retval;
 19.8507 +                    if ( state.backtracking==0 ) stream_rewrite_tree_atom.add(rewrite_tree_atom138.getTree());
 19.8508 +                    dbg.location(366,22);
 19.8509 +                    pushFollow(FOLLOW_ebnfSuffix_in_rewrite_tree_element2682);
 19.8510 +                    ebnfSuffix139=ebnfSuffix();
 19.8511 +
 19.8512 +                    state._fsp--;
 19.8513 +                    if (state.failed) return retval;
 19.8514 +                    if ( state.backtracking==0 ) stream_ebnfSuffix.add(ebnfSuffix139.getTree());
 19.8515 +
 19.8516 +
 19.8517 +                    // AST REWRITE
 19.8518 +                    // elements: rewrite_tree_atom, ebnfSuffix
 19.8519 +                    // token labels: 
 19.8520 +                    // rule labels: retval
 19.8521 +                    // token list labels: 
 19.8522 +                    // rule list labels: 
 19.8523 +                    // wildcard labels: 
 19.8524 +                    if ( state.backtracking==0 ) {
 19.8525 +                    retval.tree = root_0;
 19.8526 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.8527 +
 19.8528 +                    root_0 = (CommonTree)adaptor.nil();
 19.8529 +                    // 367:3: -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] rewrite_tree_atom EOA[\"EOA\"] ) EOB[\"EOB\"] ) )
 19.8530 +                    {
 19.8531 +                        dbg.location(367,6);
 19.8532 +                        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:367:6: ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] rewrite_tree_atom EOA[\"EOA\"] ) EOB[\"EOB\"] ) )
 19.8533 +                        {
 19.8534 +                        CommonTree root_1 = (CommonTree)adaptor.nil();
 19.8535 +                        dbg.location(367,9);
 19.8536 +                        root_1 = (CommonTree)adaptor.becomeRoot(stream_ebnfSuffix.nextNode(), root_1);
 19.8537 +
 19.8538 +                        dbg.location(367,20);
 19.8539 +                        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:367:20: ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] rewrite_tree_atom EOA[\"EOA\"] ) EOB[\"EOB\"] )
 19.8540 +                        {
 19.8541 +                        CommonTree root_2 = (CommonTree)adaptor.nil();
 19.8542 +                        dbg.location(367,22);
 19.8543 +                        root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(BLOCK, "BLOCK"), root_2);
 19.8544 +
 19.8545 +                        dbg.location(367,37);
 19.8546 +                        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:367:37: ^( ALT[\"ALT\"] rewrite_tree_atom EOA[\"EOA\"] )
 19.8547 +                        {
 19.8548 +                        CommonTree root_3 = (CommonTree)adaptor.nil();
 19.8549 +                        dbg.location(367,39);
 19.8550 +                        root_3 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(ALT, "ALT"), root_3);
 19.8551 +
 19.8552 +                        dbg.location(367,50);
 19.8553 +                        adaptor.addChild(root_3, stream_rewrite_tree_atom.nextTree());
 19.8554 +                        dbg.location(367,68);
 19.8555 +                        adaptor.addChild(root_3, (CommonTree)adaptor.create(EOA, "EOA"));
 19.8556 +
 19.8557 +                        adaptor.addChild(root_2, root_3);
 19.8558 +                        }
 19.8559 +                        dbg.location(367,80);
 19.8560 +                        adaptor.addChild(root_2, (CommonTree)adaptor.create(EOB, "EOB"));
 19.8561 +
 19.8562 +                        adaptor.addChild(root_1, root_2);
 19.8563 +                        }
 19.8564 +
 19.8565 +                        adaptor.addChild(root_0, root_1);
 19.8566 +                        }
 19.8567 +
 19.8568 +                    }
 19.8569 +
 19.8570 +                    retval.tree = root_0;}
 19.8571 +                    }
 19.8572 +                    break;
 19.8573 +                case 3 :
 19.8574 +                    dbg.enterAlt(3);
 19.8575 +
 19.8576 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:368:6: rewrite_tree ( ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] rewrite_tree EOA[\"EOA\"] ) EOB[\"EOB\"] ) ) | -> rewrite_tree )
 19.8577 +                    {
 19.8578 +                    dbg.location(368,6);
 19.8579 +                    pushFollow(FOLLOW_rewrite_tree_in_rewrite_tree_element2716);
 19.8580 +                    rewrite_tree140=rewrite_tree();
 19.8581 +
 19.8582 +                    state._fsp--;
 19.8583 +                    if (state.failed) return retval;
 19.8584 +                    if ( state.backtracking==0 ) stream_rewrite_tree.add(rewrite_tree140.getTree());
 19.8585 +                    dbg.location(369,3);
 19.8586 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:369:3: ( ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] rewrite_tree EOA[\"EOA\"] ) EOB[\"EOB\"] ) ) | -> rewrite_tree )
 19.8587 +                    int alt66=2;
 19.8588 +                    try { dbg.enterSubRule(66);
 19.8589 +                    try { dbg.enterDecision(66, decisionCanBacktrack[66]);
 19.8590 +
 19.8591 +                    int LA66_0 = input.LA(1);
 19.8592 +
 19.8593 +                    if ( (LA66_0==74||(LA66_0>=90 && LA66_0<=91)) ) {
 19.8594 +                        alt66=1;
 19.8595 +                    }
 19.8596 +                    else if ( (LA66_0==EOF||LA66_0==TREE_BEGIN||LA66_0==REWRITE||(LA66_0>=TOKEN_REF && LA66_0<=ACTION)||LA66_0==RULE_REF||LA66_0==69||(LA66_0>=82 && LA66_0<=84)||LA66_0==93) ) {
 19.8597 +                        alt66=2;
 19.8598 +                    }
 19.8599 +                    else {
 19.8600 +                        if (state.backtracking>0) {state.failed=true; return retval;}
 19.8601 +                        NoViableAltException nvae =
 19.8602 +                            new NoViableAltException("", 66, 0, input);
 19.8603 +
 19.8604 +                        dbg.recognitionException(nvae);
 19.8605 +                        throw nvae;
 19.8606 +                    }
 19.8607 +                    } finally {dbg.exitDecision(66);}
 19.8608 +
 19.8609 +                    switch (alt66) {
 19.8610 +                        case 1 :
 19.8611 +                            dbg.enterAlt(1);
 19.8612 +
 19.8613 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:369:5: ebnfSuffix
 19.8614 +                            {
 19.8615 +                            dbg.location(369,5);
 19.8616 +                            pushFollow(FOLLOW_ebnfSuffix_in_rewrite_tree_element2722);
 19.8617 +                            ebnfSuffix141=ebnfSuffix();
 19.8618 +
 19.8619 +                            state._fsp--;
 19.8620 +                            if (state.failed) return retval;
 19.8621 +                            if ( state.backtracking==0 ) stream_ebnfSuffix.add(ebnfSuffix141.getTree());
 19.8622 +
 19.8623 +
 19.8624 +                            // AST REWRITE
 19.8625 +                            // elements: ebnfSuffix, rewrite_tree
 19.8626 +                            // token labels: 
 19.8627 +                            // rule labels: retval
 19.8628 +                            // token list labels: 
 19.8629 +                            // rule list labels: 
 19.8630 +                            // wildcard labels: 
 19.8631 +                            if ( state.backtracking==0 ) {
 19.8632 +                            retval.tree = root_0;
 19.8633 +                            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.8634 +
 19.8635 +                            root_0 = (CommonTree)adaptor.nil();
 19.8636 +                            // 370:4: -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] rewrite_tree EOA[\"EOA\"] ) EOB[\"EOB\"] ) )
 19.8637 +                            {
 19.8638 +                                dbg.location(370,7);
 19.8639 +                                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:370:7: ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] rewrite_tree EOA[\"EOA\"] ) EOB[\"EOB\"] ) )
 19.8640 +                                {
 19.8641 +                                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.8642 +                                dbg.location(370,9);
 19.8643 +                                root_1 = (CommonTree)adaptor.becomeRoot(stream_ebnfSuffix.nextNode(), root_1);
 19.8644 +
 19.8645 +                                dbg.location(370,20);
 19.8646 +                                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:370:20: ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] rewrite_tree EOA[\"EOA\"] ) EOB[\"EOB\"] )
 19.8647 +                                {
 19.8648 +                                CommonTree root_2 = (CommonTree)adaptor.nil();
 19.8649 +                                dbg.location(370,22);
 19.8650 +                                root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(BLOCK, "BLOCK"), root_2);
 19.8651 +
 19.8652 +                                dbg.location(370,37);
 19.8653 +                                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:370:37: ^( ALT[\"ALT\"] rewrite_tree EOA[\"EOA\"] )
 19.8654 +                                {
 19.8655 +                                CommonTree root_3 = (CommonTree)adaptor.nil();
 19.8656 +                                dbg.location(370,39);
 19.8657 +                                root_3 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(ALT, "ALT"), root_3);
 19.8658 +
 19.8659 +                                dbg.location(370,50);
 19.8660 +                                adaptor.addChild(root_3, stream_rewrite_tree.nextTree());
 19.8661 +                                dbg.location(370,63);
 19.8662 +                                adaptor.addChild(root_3, (CommonTree)adaptor.create(EOA, "EOA"));
 19.8663 +
 19.8664 +                                adaptor.addChild(root_2, root_3);
 19.8665 +                                }
 19.8666 +                                dbg.location(370,75);
 19.8667 +                                adaptor.addChild(root_2, (CommonTree)adaptor.create(EOB, "EOB"));
 19.8668 +
 19.8669 +                                adaptor.addChild(root_1, root_2);
 19.8670 +                                }
 19.8671 +
 19.8672 +                                adaptor.addChild(root_0, root_1);
 19.8673 +                                }
 19.8674 +
 19.8675 +                            }
 19.8676 +
 19.8677 +                            retval.tree = root_0;}
 19.8678 +                            }
 19.8679 +                            break;
 19.8680 +                        case 2 :
 19.8681 +                            dbg.enterAlt(2);
 19.8682 +
 19.8683 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:371:5: 
 19.8684 +                            {
 19.8685 +
 19.8686 +                            // AST REWRITE
 19.8687 +                            // elements: rewrite_tree
 19.8688 +                            // token labels: 
 19.8689 +                            // rule labels: retval
 19.8690 +                            // token list labels: 
 19.8691 +                            // rule list labels: 
 19.8692 +                            // wildcard labels: 
 19.8693 +                            if ( state.backtracking==0 ) {
 19.8694 +                            retval.tree = root_0;
 19.8695 +                            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.8696 +
 19.8697 +                            root_0 = (CommonTree)adaptor.nil();
 19.8698 +                            // 371:5: -> rewrite_tree
 19.8699 +                            {
 19.8700 +                                dbg.location(371,8);
 19.8701 +                                adaptor.addChild(root_0, stream_rewrite_tree.nextTree());
 19.8702 +
 19.8703 +                            }
 19.8704 +
 19.8705 +                            retval.tree = root_0;}
 19.8706 +                            }
 19.8707 +                            break;
 19.8708 +
 19.8709 +                    }
 19.8710 +                    } finally {dbg.exitSubRule(66);}
 19.8711 +
 19.8712 +
 19.8713 +                    }
 19.8714 +                    break;
 19.8715 +                case 4 :
 19.8716 +                    dbg.enterAlt(4);
 19.8717 +
 19.8718 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:373:6: rewrite_tree_ebnf
 19.8719 +                    {
 19.8720 +                    root_0 = (CommonTree)adaptor.nil();
 19.8721 +
 19.8722 +                    dbg.location(373,6);
 19.8723 +                    pushFollow(FOLLOW_rewrite_tree_ebnf_in_rewrite_tree_element2768);
 19.8724 +                    rewrite_tree_ebnf142=rewrite_tree_ebnf();
 19.8725 +
 19.8726 +                    state._fsp--;
 19.8727 +                    if (state.failed) return retval;
 19.8728 +                    if ( state.backtracking==0 ) adaptor.addChild(root_0, rewrite_tree_ebnf142.getTree());
 19.8729 +
 19.8730 +                    }
 19.8731 +                    break;
 19.8732 +
 19.8733 +            }
 19.8734 +            retval.stop = input.LT(-1);
 19.8735 +
 19.8736 +            if ( state.backtracking==0 ) {
 19.8737 +
 19.8738 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.8739 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.8740 +            }
 19.8741 +        }
 19.8742 +        catch (RecognitionException re) {
 19.8743 +            reportError(re);
 19.8744 +            recover(input,re);
 19.8745 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.8746 +
 19.8747 +        }
 19.8748 +        finally {
 19.8749 +        }
 19.8750 +        dbg.location(374, 2);
 19.8751 +
 19.8752 +        }
 19.8753 +        finally {
 19.8754 +            dbg.exitRule(getGrammarFileName(), "rewrite_tree_element");
 19.8755 +            decRuleLevel();
 19.8756 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.8757 +        }
 19.8758 +
 19.8759 +        return retval;
 19.8760 +    }
 19.8761 +    // $ANTLR end "rewrite_tree_element"
 19.8762 +
 19.8763 +    public static class rewrite_tree_atom_return extends ParserRuleReturnScope {
 19.8764 +        CommonTree tree;
 19.8765 +        public Object getTree() { return tree; }
 19.8766 +    };
 19.8767 +
 19.8768 +    // $ANTLR start "rewrite_tree_atom"
 19.8769 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:376:1: rewrite_tree_atom : ( CHAR_LITERAL | TOKEN_REF ( ARG_ACTION )? -> ^( TOKEN_REF ( ARG_ACTION )? ) | RULE_REF | STRING_LITERAL | d= '$' id -> LABEL[$d,$id.text] | ACTION );
 19.8770 +    public final ANTLRv3Parser.rewrite_tree_atom_return rewrite_tree_atom() throws RecognitionException {
 19.8771 +        ANTLRv3Parser.rewrite_tree_atom_return retval = new ANTLRv3Parser.rewrite_tree_atom_return();
 19.8772 +        retval.start = input.LT(1);
 19.8773 +
 19.8774 +        CommonTree root_0 = null;
 19.8775 +
 19.8776 +        Token d=null;
 19.8777 +        Token CHAR_LITERAL143=null;
 19.8778 +        Token TOKEN_REF144=null;
 19.8779 +        Token ARG_ACTION145=null;
 19.8780 +        Token RULE_REF146=null;
 19.8781 +        Token STRING_LITERAL147=null;
 19.8782 +        Token ACTION149=null;
 19.8783 +        ANTLRv3Parser.id_return id148 = null;
 19.8784 +
 19.8785 +
 19.8786 +        CommonTree d_tree=null;
 19.8787 +        CommonTree CHAR_LITERAL143_tree=null;
 19.8788 +        CommonTree TOKEN_REF144_tree=null;
 19.8789 +        CommonTree ARG_ACTION145_tree=null;
 19.8790 +        CommonTree RULE_REF146_tree=null;
 19.8791 +        CommonTree STRING_LITERAL147_tree=null;
 19.8792 +        CommonTree ACTION149_tree=null;
 19.8793 +        RewriteRuleTokenStream stream_93=new RewriteRuleTokenStream(adaptor,"token 93");
 19.8794 +        RewriteRuleTokenStream stream_TOKEN_REF=new RewriteRuleTokenStream(adaptor,"token TOKEN_REF");
 19.8795 +        RewriteRuleTokenStream stream_ARG_ACTION=new RewriteRuleTokenStream(adaptor,"token ARG_ACTION");
 19.8796 +        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
 19.8797 +        try { dbg.enterRule(getGrammarFileName(), "rewrite_tree_atom");
 19.8798 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.8799 +        incRuleLevel();
 19.8800 +        dbg.location(376, 1);
 19.8801 +
 19.8802 +        try {
 19.8803 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:377:5: ( CHAR_LITERAL | TOKEN_REF ( ARG_ACTION )? -> ^( TOKEN_REF ( ARG_ACTION )? ) | RULE_REF | STRING_LITERAL | d= '$' id -> LABEL[$d,$id.text] | ACTION )
 19.8804 +            int alt69=6;
 19.8805 +            try { dbg.enterDecision(69, decisionCanBacktrack[69]);
 19.8806 +
 19.8807 +            switch ( input.LA(1) ) {
 19.8808 +            case CHAR_LITERAL:
 19.8809 +                {
 19.8810 +                alt69=1;
 19.8811 +                }
 19.8812 +                break;
 19.8813 +            case TOKEN_REF:
 19.8814 +                {
 19.8815 +                alt69=2;
 19.8816 +                }
 19.8817 +                break;
 19.8818 +            case RULE_REF:
 19.8819 +                {
 19.8820 +                alt69=3;
 19.8821 +                }
 19.8822 +                break;
 19.8823 +            case STRING_LITERAL:
 19.8824 +                {
 19.8825 +                alt69=4;
 19.8826 +                }
 19.8827 +                break;
 19.8828 +            case 93:
 19.8829 +                {
 19.8830 +                alt69=5;
 19.8831 +                }
 19.8832 +                break;
 19.8833 +            case ACTION:
 19.8834 +                {
 19.8835 +                alt69=6;
 19.8836 +                }
 19.8837 +                break;
 19.8838 +            default:
 19.8839 +                if (state.backtracking>0) {state.failed=true; return retval;}
 19.8840 +                NoViableAltException nvae =
 19.8841 +                    new NoViableAltException("", 69, 0, input);
 19.8842 +
 19.8843 +                dbg.recognitionException(nvae);
 19.8844 +                throw nvae;
 19.8845 +            }
 19.8846 +
 19.8847 +            } finally {dbg.exitDecision(69);}
 19.8848 +
 19.8849 +            switch (alt69) {
 19.8850 +                case 1 :
 19.8851 +                    dbg.enterAlt(1);
 19.8852 +
 19.8853 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:377:9: CHAR_LITERAL
 19.8854 +                    {
 19.8855 +                    root_0 = (CommonTree)adaptor.nil();
 19.8856 +
 19.8857 +                    dbg.location(377,9);
 19.8858 +                    CHAR_LITERAL143=(Token)match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_rewrite_tree_atom2784); if (state.failed) return retval;
 19.8859 +                    if ( state.backtracking==0 ) {
 19.8860 +                    CHAR_LITERAL143_tree = (CommonTree)adaptor.create(CHAR_LITERAL143);
 19.8861 +                    adaptor.addChild(root_0, CHAR_LITERAL143_tree);
 19.8862 +                    }
 19.8863 +
 19.8864 +                    }
 19.8865 +                    break;
 19.8866 +                case 2 :
 19.8867 +                    dbg.enterAlt(2);
 19.8868 +
 19.8869 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:378:6: TOKEN_REF ( ARG_ACTION )?
 19.8870 +                    {
 19.8871 +                    dbg.location(378,6);
 19.8872 +                    TOKEN_REF144=(Token)match(input,TOKEN_REF,FOLLOW_TOKEN_REF_in_rewrite_tree_atom2791); if (state.failed) return retval; 
 19.8873 +                    if ( state.backtracking==0 ) stream_TOKEN_REF.add(TOKEN_REF144);
 19.8874 +
 19.8875 +                    dbg.location(378,16);
 19.8876 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:378:16: ( ARG_ACTION )?
 19.8877 +                    int alt68=2;
 19.8878 +                    try { dbg.enterSubRule(68);
 19.8879 +                    try { dbg.enterDecision(68, decisionCanBacktrack[68]);
 19.8880 +
 19.8881 +                    int LA68_0 = input.LA(1);
 19.8882 +
 19.8883 +                    if ( (LA68_0==ARG_ACTION) ) {
 19.8884 +                        alt68=1;
 19.8885 +                    }
 19.8886 +                    } finally {dbg.exitDecision(68);}
 19.8887 +
 19.8888 +                    switch (alt68) {
 19.8889 +                        case 1 :
 19.8890 +                            dbg.enterAlt(1);
 19.8891 +
 19.8892 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:378:16: ARG_ACTION
 19.8893 +                            {
 19.8894 +                            dbg.location(378,16);
 19.8895 +                            ARG_ACTION145=(Token)match(input,ARG_ACTION,FOLLOW_ARG_ACTION_in_rewrite_tree_atom2793); if (state.failed) return retval; 
 19.8896 +                            if ( state.backtracking==0 ) stream_ARG_ACTION.add(ARG_ACTION145);
 19.8897 +
 19.8898 +
 19.8899 +                            }
 19.8900 +                            break;
 19.8901 +
 19.8902 +                    }
 19.8903 +                    } finally {dbg.exitSubRule(68);}
 19.8904 +
 19.8905 +
 19.8906 +
 19.8907 +                    // AST REWRITE
 19.8908 +                    // elements: ARG_ACTION, TOKEN_REF
 19.8909 +                    // token labels: 
 19.8910 +                    // rule labels: retval
 19.8911 +                    // token list labels: 
 19.8912 +                    // rule list labels: 
 19.8913 +                    // wildcard labels: 
 19.8914 +                    if ( state.backtracking==0 ) {
 19.8915 +                    retval.tree = root_0;
 19.8916 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.8917 +
 19.8918 +                    root_0 = (CommonTree)adaptor.nil();
 19.8919 +                    // 378:28: -> ^( TOKEN_REF ( ARG_ACTION )? )
 19.8920 +                    {
 19.8921 +                        dbg.location(378,31);
 19.8922 +                        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:378:31: ^( TOKEN_REF ( ARG_ACTION )? )
 19.8923 +                        {
 19.8924 +                        CommonTree root_1 = (CommonTree)adaptor.nil();
 19.8925 +                        dbg.location(378,33);
 19.8926 +                        root_1 = (CommonTree)adaptor.becomeRoot(stream_TOKEN_REF.nextNode(), root_1);
 19.8927 +
 19.8928 +                        dbg.location(378,43);
 19.8929 +                        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:378:43: ( ARG_ACTION )?
 19.8930 +                        if ( stream_ARG_ACTION.hasNext() ) {
 19.8931 +                            dbg.location(378,43);
 19.8932 +                            adaptor.addChild(root_1, stream_ARG_ACTION.nextNode());
 19.8933 +
 19.8934 +                        }
 19.8935 +                        stream_ARG_ACTION.reset();
 19.8936 +
 19.8937 +                        adaptor.addChild(root_0, root_1);
 19.8938 +                        }
 19.8939 +
 19.8940 +                    }
 19.8941 +
 19.8942 +                    retval.tree = root_0;}
 19.8943 +                    }
 19.8944 +                    break;
 19.8945 +                case 3 :
 19.8946 +                    dbg.enterAlt(3);
 19.8947 +
 19.8948 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:379:9: RULE_REF
 19.8949 +                    {
 19.8950 +                    root_0 = (CommonTree)adaptor.nil();
 19.8951 +
 19.8952 +                    dbg.location(379,9);
 19.8953 +                    RULE_REF146=(Token)match(input,RULE_REF,FOLLOW_RULE_REF_in_rewrite_tree_atom2814); if (state.failed) return retval;
 19.8954 +                    if ( state.backtracking==0 ) {
 19.8955 +                    RULE_REF146_tree = (CommonTree)adaptor.create(RULE_REF146);
 19.8956 +                    adaptor.addChild(root_0, RULE_REF146_tree);
 19.8957 +                    }
 19.8958 +
 19.8959 +                    }
 19.8960 +                    break;
 19.8961 +                case 4 :
 19.8962 +                    dbg.enterAlt(4);
 19.8963 +
 19.8964 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:380:6: STRING_LITERAL
 19.8965 +                    {
 19.8966 +                    root_0 = (CommonTree)adaptor.nil();
 19.8967 +
 19.8968 +                    dbg.location(380,6);
 19.8969 +                    STRING_LITERAL147=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_rewrite_tree_atom2821); if (state.failed) return retval;
 19.8970 +                    if ( state.backtracking==0 ) {
 19.8971 +                    STRING_LITERAL147_tree = (CommonTree)adaptor.create(STRING_LITERAL147);
 19.8972 +                    adaptor.addChild(root_0, STRING_LITERAL147_tree);
 19.8973 +                    }
 19.8974 +
 19.8975 +                    }
 19.8976 +                    break;
 19.8977 +                case 5 :
 19.8978 +                    dbg.enterAlt(5);
 19.8979 +
 19.8980 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:381:6: d= '$' id
 19.8981 +                    {
 19.8982 +                    dbg.location(381,7);
 19.8983 +                    d=(Token)match(input,93,FOLLOW_93_in_rewrite_tree_atom2830); if (state.failed) return retval; 
 19.8984 +                    if ( state.backtracking==0 ) stream_93.add(d);
 19.8985 +
 19.8986 +                    dbg.location(381,12);
 19.8987 +                    pushFollow(FOLLOW_id_in_rewrite_tree_atom2832);
 19.8988 +                    id148=id();
 19.8989 +
 19.8990 +                    state._fsp--;
 19.8991 +                    if (state.failed) return retval;
 19.8992 +                    if ( state.backtracking==0 ) stream_id.add(id148.getTree());
 19.8993 +
 19.8994 +
 19.8995 +                    // AST REWRITE
 19.8996 +                    // elements: 
 19.8997 +                    // token labels: 
 19.8998 +                    // rule labels: retval
 19.8999 +                    // token list labels: 
 19.9000 +                    // rule list labels: 
 19.9001 +                    // wildcard labels: 
 19.9002 +                    if ( state.backtracking==0 ) {
 19.9003 +                    retval.tree = root_0;
 19.9004 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.9005 +
 19.9006 +                    root_0 = (CommonTree)adaptor.nil();
 19.9007 +                    // 381:15: -> LABEL[$d,$id.text]
 19.9008 +                    {
 19.9009 +                        dbg.location(381,18);
 19.9010 +                        adaptor.addChild(root_0, (CommonTree)adaptor.create(LABEL, d, (id148!=null?input.toString(id148.start,id148.stop):null)));
 19.9011 +
 19.9012 +                    }
 19.9013 +
 19.9014 +                    retval.tree = root_0;}
 19.9015 +                    }
 19.9016 +                    break;
 19.9017 +                case 6 :
 19.9018 +                    dbg.enterAlt(6);
 19.9019 +
 19.9020 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:382:4: ACTION
 19.9021 +                    {
 19.9022 +                    root_0 = (CommonTree)adaptor.nil();
 19.9023 +
 19.9024 +                    dbg.location(382,4);
 19.9025 +                    ACTION149=(Token)match(input,ACTION,FOLLOW_ACTION_in_rewrite_tree_atom2843); if (state.failed) return retval;
 19.9026 +                    if ( state.backtracking==0 ) {
 19.9027 +                    ACTION149_tree = (CommonTree)adaptor.create(ACTION149);
 19.9028 +                    adaptor.addChild(root_0, ACTION149_tree);
 19.9029 +                    }
 19.9030 +
 19.9031 +                    }
 19.9032 +                    break;
 19.9033 +
 19.9034 +            }
 19.9035 +            retval.stop = input.LT(-1);
 19.9036 +
 19.9037 +            if ( state.backtracking==0 ) {
 19.9038 +
 19.9039 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.9040 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.9041 +            }
 19.9042 +        }
 19.9043 +        catch (RecognitionException re) {
 19.9044 +            reportError(re);
 19.9045 +            recover(input,re);
 19.9046 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.9047 +
 19.9048 +        }
 19.9049 +        finally {
 19.9050 +        }
 19.9051 +        dbg.location(383, 2);
 19.9052 +
 19.9053 +        }
 19.9054 +        finally {
 19.9055 +            dbg.exitRule(getGrammarFileName(), "rewrite_tree_atom");
 19.9056 +            decRuleLevel();
 19.9057 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.9058 +        }
 19.9059 +
 19.9060 +        return retval;
 19.9061 +    }
 19.9062 +    // $ANTLR end "rewrite_tree_atom"
 19.9063 +
 19.9064 +    public static class rewrite_tree_ebnf_return extends ParserRuleReturnScope {
 19.9065 +        CommonTree tree;
 19.9066 +        public Object getTree() { return tree; }
 19.9067 +    };
 19.9068 +
 19.9069 +    // $ANTLR start "rewrite_tree_ebnf"
 19.9070 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:385:1: rewrite_tree_ebnf : rewrite_tree_block ebnfSuffix -> ^( ebnfSuffix rewrite_tree_block ) ;
 19.9071 +    public final ANTLRv3Parser.rewrite_tree_ebnf_return rewrite_tree_ebnf() throws RecognitionException {
 19.9072 +        ANTLRv3Parser.rewrite_tree_ebnf_return retval = new ANTLRv3Parser.rewrite_tree_ebnf_return();
 19.9073 +        retval.start = input.LT(1);
 19.9074 +
 19.9075 +        CommonTree root_0 = null;
 19.9076 +
 19.9077 +        ANTLRv3Parser.rewrite_tree_block_return rewrite_tree_block150 = null;
 19.9078 +
 19.9079 +        ANTLRv3Parser.ebnfSuffix_return ebnfSuffix151 = null;
 19.9080 +
 19.9081 +
 19.9082 +        RewriteRuleSubtreeStream stream_ebnfSuffix=new RewriteRuleSubtreeStream(adaptor,"rule ebnfSuffix");
 19.9083 +        RewriteRuleSubtreeStream stream_rewrite_tree_block=new RewriteRuleSubtreeStream(adaptor,"rule rewrite_tree_block");
 19.9084 +
 19.9085 +            Token firstToken = input.LT(1);
 19.9086 +
 19.9087 +        try { dbg.enterRule(getGrammarFileName(), "rewrite_tree_ebnf");
 19.9088 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.9089 +        incRuleLevel();
 19.9090 +        dbg.location(385, 1);
 19.9091 +
 19.9092 +        try {
 19.9093 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:393:2: ( rewrite_tree_block ebnfSuffix -> ^( ebnfSuffix rewrite_tree_block ) )
 19.9094 +            dbg.enterAlt(1);
 19.9095 +
 19.9096 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:393:4: rewrite_tree_block ebnfSuffix
 19.9097 +            {
 19.9098 +            dbg.location(393,4);
 19.9099 +            pushFollow(FOLLOW_rewrite_tree_block_in_rewrite_tree_ebnf2864);
 19.9100 +            rewrite_tree_block150=rewrite_tree_block();
 19.9101 +
 19.9102 +            state._fsp--;
 19.9103 +            if (state.failed) return retval;
 19.9104 +            if ( state.backtracking==0 ) stream_rewrite_tree_block.add(rewrite_tree_block150.getTree());
 19.9105 +            dbg.location(393,23);
 19.9106 +            pushFollow(FOLLOW_ebnfSuffix_in_rewrite_tree_ebnf2866);
 19.9107 +            ebnfSuffix151=ebnfSuffix();
 19.9108 +
 19.9109 +            state._fsp--;
 19.9110 +            if (state.failed) return retval;
 19.9111 +            if ( state.backtracking==0 ) stream_ebnfSuffix.add(ebnfSuffix151.getTree());
 19.9112 +
 19.9113 +
 19.9114 +            // AST REWRITE
 19.9115 +            // elements: ebnfSuffix, rewrite_tree_block
 19.9116 +            // token labels: 
 19.9117 +            // rule labels: retval
 19.9118 +            // token list labels: 
 19.9119 +            // rule list labels: 
 19.9120 +            // wildcard labels: 
 19.9121 +            if ( state.backtracking==0 ) {
 19.9122 +            retval.tree = root_0;
 19.9123 +            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.9124 +
 19.9125 +            root_0 = (CommonTree)adaptor.nil();
 19.9126 +            // 393:34: -> ^( ebnfSuffix rewrite_tree_block )
 19.9127 +            {
 19.9128 +                dbg.location(393,37);
 19.9129 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:393:37: ^( ebnfSuffix rewrite_tree_block )
 19.9130 +                {
 19.9131 +                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.9132 +                dbg.location(393,39);
 19.9133 +                root_1 = (CommonTree)adaptor.becomeRoot(stream_ebnfSuffix.nextNode(), root_1);
 19.9134 +
 19.9135 +                dbg.location(393,50);
 19.9136 +                adaptor.addChild(root_1, stream_rewrite_tree_block.nextTree());
 19.9137 +
 19.9138 +                adaptor.addChild(root_0, root_1);
 19.9139 +                }
 19.9140 +
 19.9141 +            }
 19.9142 +
 19.9143 +            retval.tree = root_0;}
 19.9144 +            }
 19.9145 +
 19.9146 +            retval.stop = input.LT(-1);
 19.9147 +
 19.9148 +            if ( state.backtracking==0 ) {
 19.9149 +
 19.9150 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.9151 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.9152 +            }
 19.9153 +            if ( state.backtracking==0 ) {
 19.9154 +
 19.9155 +              	((CommonTree)retval.tree).getToken().setLine(firstToken.getLine());
 19.9156 +              	((CommonTree)retval.tree).getToken().setCharPositionInLine(firstToken.getCharPositionInLine());
 19.9157 +
 19.9158 +            }
 19.9159 +        }
 19.9160 +        catch (RecognitionException re) {
 19.9161 +            reportError(re);
 19.9162 +            recover(input,re);
 19.9163 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.9164 +
 19.9165 +        }
 19.9166 +        finally {
 19.9167 +        }
 19.9168 +        dbg.location(394, 2);
 19.9169 +
 19.9170 +        }
 19.9171 +        finally {
 19.9172 +            dbg.exitRule(getGrammarFileName(), "rewrite_tree_ebnf");
 19.9173 +            decRuleLevel();
 19.9174 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.9175 +        }
 19.9176 +
 19.9177 +        return retval;
 19.9178 +    }
 19.9179 +    // $ANTLR end "rewrite_tree_ebnf"
 19.9180 +
 19.9181 +    public static class rewrite_tree_return extends ParserRuleReturnScope {
 19.9182 +        CommonTree tree;
 19.9183 +        public Object getTree() { return tree; }
 19.9184 +    };
 19.9185 +
 19.9186 +    // $ANTLR start "rewrite_tree"
 19.9187 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:396:1: rewrite_tree : '^(' rewrite_tree_atom ( rewrite_tree_element )* ')' -> ^( TREE_BEGIN rewrite_tree_atom ( rewrite_tree_element )* ) ;
 19.9188 +    public final ANTLRv3Parser.rewrite_tree_return rewrite_tree() throws RecognitionException {
 19.9189 +        ANTLRv3Parser.rewrite_tree_return retval = new ANTLRv3Parser.rewrite_tree_return();
 19.9190 +        retval.start = input.LT(1);
 19.9191 +
 19.9192 +        CommonTree root_0 = null;
 19.9193 +
 19.9194 +        Token string_literal152=null;
 19.9195 +        Token char_literal155=null;
 19.9196 +        ANTLRv3Parser.rewrite_tree_atom_return rewrite_tree_atom153 = null;
 19.9197 +
 19.9198 +        ANTLRv3Parser.rewrite_tree_element_return rewrite_tree_element154 = null;
 19.9199 +
 19.9200 +
 19.9201 +        CommonTree string_literal152_tree=null;
 19.9202 +        CommonTree char_literal155_tree=null;
 19.9203 +        RewriteRuleTokenStream stream_TREE_BEGIN=new RewriteRuleTokenStream(adaptor,"token TREE_BEGIN");
 19.9204 +        RewriteRuleTokenStream stream_84=new RewriteRuleTokenStream(adaptor,"token 84");
 19.9205 +        RewriteRuleSubtreeStream stream_rewrite_tree_element=new RewriteRuleSubtreeStream(adaptor,"rule rewrite_tree_element");
 19.9206 +        RewriteRuleSubtreeStream stream_rewrite_tree_atom=new RewriteRuleSubtreeStream(adaptor,"rule rewrite_tree_atom");
 19.9207 +        try { dbg.enterRule(getGrammarFileName(), "rewrite_tree");
 19.9208 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.9209 +        incRuleLevel();
 19.9210 +        dbg.location(396, 1);
 19.9211 +
 19.9212 +        try {
 19.9213 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:397:2: ( '^(' rewrite_tree_atom ( rewrite_tree_element )* ')' -> ^( TREE_BEGIN rewrite_tree_atom ( rewrite_tree_element )* ) )
 19.9214 +            dbg.enterAlt(1);
 19.9215 +
 19.9216 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:397:4: '^(' rewrite_tree_atom ( rewrite_tree_element )* ')'
 19.9217 +            {
 19.9218 +            dbg.location(397,4);
 19.9219 +            string_literal152=(Token)match(input,TREE_BEGIN,FOLLOW_TREE_BEGIN_in_rewrite_tree2886); if (state.failed) return retval; 
 19.9220 +            if ( state.backtracking==0 ) stream_TREE_BEGIN.add(string_literal152);
 19.9221 +
 19.9222 +            dbg.location(397,9);
 19.9223 +            pushFollow(FOLLOW_rewrite_tree_atom_in_rewrite_tree2888);
 19.9224 +            rewrite_tree_atom153=rewrite_tree_atom();
 19.9225 +
 19.9226 +            state._fsp--;
 19.9227 +            if (state.failed) return retval;
 19.9228 +            if ( state.backtracking==0 ) stream_rewrite_tree_atom.add(rewrite_tree_atom153.getTree());
 19.9229 +            dbg.location(397,27);
 19.9230 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:397:27: ( rewrite_tree_element )*
 19.9231 +            try { dbg.enterSubRule(70);
 19.9232 +
 19.9233 +            loop70:
 19.9234 +            do {
 19.9235 +                int alt70=2;
 19.9236 +                try { dbg.enterDecision(70, decisionCanBacktrack[70]);
 19.9237 +
 19.9238 +                int LA70_0 = input.LA(1);
 19.9239 +
 19.9240 +                if ( (LA70_0==TREE_BEGIN||(LA70_0>=TOKEN_REF && LA70_0<=ACTION)||LA70_0==RULE_REF||LA70_0==82||LA70_0==93) ) {
 19.9241 +                    alt70=1;
 19.9242 +                }
 19.9243 +
 19.9244 +
 19.9245 +                } finally {dbg.exitDecision(70);}
 19.9246 +
 19.9247 +                switch (alt70) {
 19.9248 +            	case 1 :
 19.9249 +            	    dbg.enterAlt(1);
 19.9250 +
 19.9251 +            	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:397:27: rewrite_tree_element
 19.9252 +            	    {
 19.9253 +            	    dbg.location(397,27);
 19.9254 +            	    pushFollow(FOLLOW_rewrite_tree_element_in_rewrite_tree2890);
 19.9255 +            	    rewrite_tree_element154=rewrite_tree_element();
 19.9256 +
 19.9257 +            	    state._fsp--;
 19.9258 +            	    if (state.failed) return retval;
 19.9259 +            	    if ( state.backtracking==0 ) stream_rewrite_tree_element.add(rewrite_tree_element154.getTree());
 19.9260 +
 19.9261 +            	    }
 19.9262 +            	    break;
 19.9263 +
 19.9264 +            	default :
 19.9265 +            	    break loop70;
 19.9266 +                }
 19.9267 +            } while (true);
 19.9268 +            } finally {dbg.exitSubRule(70);}
 19.9269 +
 19.9270 +            dbg.location(397,49);
 19.9271 +            char_literal155=(Token)match(input,84,FOLLOW_84_in_rewrite_tree2893); if (state.failed) return retval; 
 19.9272 +            if ( state.backtracking==0 ) stream_84.add(char_literal155);
 19.9273 +
 19.9274 +
 19.9275 +
 19.9276 +            // AST REWRITE
 19.9277 +            // elements: rewrite_tree_element, rewrite_tree_atom
 19.9278 +            // token labels: 
 19.9279 +            // rule labels: retval
 19.9280 +            // token list labels: 
 19.9281 +            // rule list labels: 
 19.9282 +            // wildcard labels: 
 19.9283 +            if ( state.backtracking==0 ) {
 19.9284 +            retval.tree = root_0;
 19.9285 +            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.9286 +
 19.9287 +            root_0 = (CommonTree)adaptor.nil();
 19.9288 +            // 398:3: -> ^( TREE_BEGIN rewrite_tree_atom ( rewrite_tree_element )* )
 19.9289 +            {
 19.9290 +                dbg.location(398,6);
 19.9291 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:398:6: ^( TREE_BEGIN rewrite_tree_atom ( rewrite_tree_element )* )
 19.9292 +                {
 19.9293 +                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.9294 +                dbg.location(398,8);
 19.9295 +                root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(TREE_BEGIN, "TREE_BEGIN"), root_1);
 19.9296 +
 19.9297 +                dbg.location(398,19);
 19.9298 +                adaptor.addChild(root_1, stream_rewrite_tree_atom.nextTree());
 19.9299 +                dbg.location(398,37);
 19.9300 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:398:37: ( rewrite_tree_element )*
 19.9301 +                while ( stream_rewrite_tree_element.hasNext() ) {
 19.9302 +                    dbg.location(398,37);
 19.9303 +                    adaptor.addChild(root_1, stream_rewrite_tree_element.nextTree());
 19.9304 +
 19.9305 +                }
 19.9306 +                stream_rewrite_tree_element.reset();
 19.9307 +
 19.9308 +                adaptor.addChild(root_0, root_1);
 19.9309 +                }
 19.9310 +
 19.9311 +            }
 19.9312 +
 19.9313 +            retval.tree = root_0;}
 19.9314 +            }
 19.9315 +
 19.9316 +            retval.stop = input.LT(-1);
 19.9317 +
 19.9318 +            if ( state.backtracking==0 ) {
 19.9319 +
 19.9320 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.9321 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.9322 +            }
 19.9323 +        }
 19.9324 +        catch (RecognitionException re) {
 19.9325 +            reportError(re);
 19.9326 +            recover(input,re);
 19.9327 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.9328 +
 19.9329 +        }
 19.9330 +        finally {
 19.9331 +        }
 19.9332 +        dbg.location(399, 2);
 19.9333 +
 19.9334 +        }
 19.9335 +        finally {
 19.9336 +            dbg.exitRule(getGrammarFileName(), "rewrite_tree");
 19.9337 +            decRuleLevel();
 19.9338 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.9339 +        }
 19.9340 +
 19.9341 +        return retval;
 19.9342 +    }
 19.9343 +    // $ANTLR end "rewrite_tree"
 19.9344 +
 19.9345 +    public static class rewrite_template_return extends ParserRuleReturnScope {
 19.9346 +        CommonTree tree;
 19.9347 +        public Object getTree() { return tree; }
 19.9348 +    };
 19.9349 +
 19.9350 +    // $ANTLR start "rewrite_template"
 19.9351 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:401:1: rewrite_template : ( id lp= '(' rewrite_template_args ')' (str= DOUBLE_QUOTE_STRING_LITERAL | str= DOUBLE_ANGLE_STRING_LITERAL ) -> ^( TEMPLATE[$lp,\"TEMPLATE\"] id rewrite_template_args $str) | rewrite_template_ref | rewrite_indirect_template_head | ACTION );
 19.9352 +    public final ANTLRv3Parser.rewrite_template_return rewrite_template() throws RecognitionException {
 19.9353 +        ANTLRv3Parser.rewrite_template_return retval = new ANTLRv3Parser.rewrite_template_return();
 19.9354 +        retval.start = input.LT(1);
 19.9355 +
 19.9356 +        CommonTree root_0 = null;
 19.9357 +
 19.9358 +        Token lp=null;
 19.9359 +        Token str=null;
 19.9360 +        Token char_literal158=null;
 19.9361 +        Token ACTION161=null;
 19.9362 +        ANTLRv3Parser.id_return id156 = null;
 19.9363 +
 19.9364 +        ANTLRv3Parser.rewrite_template_args_return rewrite_template_args157 = null;
 19.9365 +
 19.9366 +        ANTLRv3Parser.rewrite_template_ref_return rewrite_template_ref159 = null;
 19.9367 +
 19.9368 +        ANTLRv3Parser.rewrite_indirect_template_head_return rewrite_indirect_template_head160 = null;
 19.9369 +
 19.9370 +
 19.9371 +        CommonTree lp_tree=null;
 19.9372 +        CommonTree str_tree=null;
 19.9373 +        CommonTree char_literal158_tree=null;
 19.9374 +        CommonTree ACTION161_tree=null;
 19.9375 +        RewriteRuleTokenStream stream_DOUBLE_QUOTE_STRING_LITERAL=new RewriteRuleTokenStream(adaptor,"token DOUBLE_QUOTE_STRING_LITERAL");
 19.9376 +        RewriteRuleTokenStream stream_82=new RewriteRuleTokenStream(adaptor,"token 82");
 19.9377 +        RewriteRuleTokenStream stream_DOUBLE_ANGLE_STRING_LITERAL=new RewriteRuleTokenStream(adaptor,"token DOUBLE_ANGLE_STRING_LITERAL");
 19.9378 +        RewriteRuleTokenStream stream_84=new RewriteRuleTokenStream(adaptor,"token 84");
 19.9379 +        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
 19.9380 +        RewriteRuleSubtreeStream stream_rewrite_template_args=new RewriteRuleSubtreeStream(adaptor,"rule rewrite_template_args");
 19.9381 +        try { dbg.enterRule(getGrammarFileName(), "rewrite_template");
 19.9382 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.9383 +        incRuleLevel();
 19.9384 +        dbg.location(401, 1);
 19.9385 +
 19.9386 +        try {
 19.9387 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:413:2: ( id lp= '(' rewrite_template_args ')' (str= DOUBLE_QUOTE_STRING_LITERAL | str= DOUBLE_ANGLE_STRING_LITERAL ) -> ^( TEMPLATE[$lp,\"TEMPLATE\"] id rewrite_template_args $str) | rewrite_template_ref | rewrite_indirect_template_head | ACTION )
 19.9388 +            int alt72=4;
 19.9389 +            try { dbg.enterDecision(72, decisionCanBacktrack[72]);
 19.9390 +
 19.9391 +            try {
 19.9392 +                isCyclicDecision = true;
 19.9393 +                alt72 = dfa72.predict(input);
 19.9394 +            }
 19.9395 +            catch (NoViableAltException nvae) {
 19.9396 +                dbg.recognitionException(nvae);
 19.9397 +                throw nvae;
 19.9398 +            }
 19.9399 +            } finally {dbg.exitDecision(72);}
 19.9400 +
 19.9401 +            switch (alt72) {
 19.9402 +                case 1 :
 19.9403 +                    dbg.enterAlt(1);
 19.9404 +
 19.9405 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:414:3: id lp= '(' rewrite_template_args ')' (str= DOUBLE_QUOTE_STRING_LITERAL | str= DOUBLE_ANGLE_STRING_LITERAL )
 19.9406 +                    {
 19.9407 +                    dbg.location(414,3);
 19.9408 +                    pushFollow(FOLLOW_id_in_rewrite_template2925);
 19.9409 +                    id156=id();
 19.9410 +
 19.9411 +                    state._fsp--;
 19.9412 +                    if (state.failed) return retval;
 19.9413 +                    if ( state.backtracking==0 ) stream_id.add(id156.getTree());
 19.9414 +                    dbg.location(414,8);
 19.9415 +                    lp=(Token)match(input,82,FOLLOW_82_in_rewrite_template2929); if (state.failed) return retval; 
 19.9416 +                    if ( state.backtracking==0 ) stream_82.add(lp);
 19.9417 +
 19.9418 +                    dbg.location(414,13);
 19.9419 +                    pushFollow(FOLLOW_rewrite_template_args_in_rewrite_template2931);
 19.9420 +                    rewrite_template_args157=rewrite_template_args();
 19.9421 +
 19.9422 +                    state._fsp--;
 19.9423 +                    if (state.failed) return retval;
 19.9424 +                    if ( state.backtracking==0 ) stream_rewrite_template_args.add(rewrite_template_args157.getTree());
 19.9425 +                    dbg.location(414,35);
 19.9426 +                    char_literal158=(Token)match(input,84,FOLLOW_84_in_rewrite_template2933); if (state.failed) return retval; 
 19.9427 +                    if ( state.backtracking==0 ) stream_84.add(char_literal158);
 19.9428 +
 19.9429 +                    dbg.location(415,3);
 19.9430 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:415:3: (str= DOUBLE_QUOTE_STRING_LITERAL | str= DOUBLE_ANGLE_STRING_LITERAL )
 19.9431 +                    int alt71=2;
 19.9432 +                    try { dbg.enterSubRule(71);
 19.9433 +                    try { dbg.enterDecision(71, decisionCanBacktrack[71]);
 19.9434 +
 19.9435 +                    int LA71_0 = input.LA(1);
 19.9436 +
 19.9437 +                    if ( (LA71_0==DOUBLE_QUOTE_STRING_LITERAL) ) {
 19.9438 +                        alt71=1;
 19.9439 +                    }
 19.9440 +                    else if ( (LA71_0==DOUBLE_ANGLE_STRING_LITERAL) ) {
 19.9441 +                        alt71=2;
 19.9442 +                    }
 19.9443 +                    else {
 19.9444 +                        if (state.backtracking>0) {state.failed=true; return retval;}
 19.9445 +                        NoViableAltException nvae =
 19.9446 +                            new NoViableAltException("", 71, 0, input);
 19.9447 +
 19.9448 +                        dbg.recognitionException(nvae);
 19.9449 +                        throw nvae;
 19.9450 +                    }
 19.9451 +                    } finally {dbg.exitDecision(71);}
 19.9452 +
 19.9453 +                    switch (alt71) {
 19.9454 +                        case 1 :
 19.9455 +                            dbg.enterAlt(1);
 19.9456 +
 19.9457 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:415:5: str= DOUBLE_QUOTE_STRING_LITERAL
 19.9458 +                            {
 19.9459 +                            dbg.location(415,8);
 19.9460 +                            str=(Token)match(input,DOUBLE_QUOTE_STRING_LITERAL,FOLLOW_DOUBLE_QUOTE_STRING_LITERAL_in_rewrite_template2941); if (state.failed) return retval; 
 19.9461 +                            if ( state.backtracking==0 ) stream_DOUBLE_QUOTE_STRING_LITERAL.add(str);
 19.9462 +
 19.9463 +
 19.9464 +                            }
 19.9465 +                            break;
 19.9466 +                        case 2 :
 19.9467 +                            dbg.enterAlt(2);
 19.9468 +
 19.9469 +                            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:415:39: str= DOUBLE_ANGLE_STRING_LITERAL
 19.9470 +                            {
 19.9471 +                            dbg.location(415,42);
 19.9472 +                            str=(Token)match(input,DOUBLE_ANGLE_STRING_LITERAL,FOLLOW_DOUBLE_ANGLE_STRING_LITERAL_in_rewrite_template2947); if (state.failed) return retval; 
 19.9473 +                            if ( state.backtracking==0 ) stream_DOUBLE_ANGLE_STRING_LITERAL.add(str);
 19.9474 +
 19.9475 +
 19.9476 +                            }
 19.9477 +                            break;
 19.9478 +
 19.9479 +                    }
 19.9480 +                    } finally {dbg.exitSubRule(71);}
 19.9481 +
 19.9482 +
 19.9483 +
 19.9484 +                    // AST REWRITE
 19.9485 +                    // elements: id, str, rewrite_template_args
 19.9486 +                    // token labels: str
 19.9487 +                    // rule labels: retval
 19.9488 +                    // token list labels: 
 19.9489 +                    // rule list labels: 
 19.9490 +                    // wildcard labels: 
 19.9491 +                    if ( state.backtracking==0 ) {
 19.9492 +                    retval.tree = root_0;
 19.9493 +                    RewriteRuleTokenStream stream_str=new RewriteRuleTokenStream(adaptor,"token str",str);
 19.9494 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.9495 +
 19.9496 +                    root_0 = (CommonTree)adaptor.nil();
 19.9497 +                    // 416:3: -> ^( TEMPLATE[$lp,\"TEMPLATE\"] id rewrite_template_args $str)
 19.9498 +                    {
 19.9499 +                        dbg.location(416,6);
 19.9500 +                        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:416:6: ^( TEMPLATE[$lp,\"TEMPLATE\"] id rewrite_template_args $str)
 19.9501 +                        {
 19.9502 +                        CommonTree root_1 = (CommonTree)adaptor.nil();
 19.9503 +                        dbg.location(416,8);
 19.9504 +                        root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(TEMPLATE, lp, "TEMPLATE"), root_1);
 19.9505 +
 19.9506 +                        dbg.location(416,33);
 19.9507 +                        adaptor.addChild(root_1, stream_id.nextTree());
 19.9508 +                        dbg.location(416,36);
 19.9509 +                        adaptor.addChild(root_1, stream_rewrite_template_args.nextTree());
 19.9510 +                        dbg.location(416,58);
 19.9511 +                        adaptor.addChild(root_1, stream_str.nextNode());
 19.9512 +
 19.9513 +                        adaptor.addChild(root_0, root_1);
 19.9514 +                        }
 19.9515 +
 19.9516 +                    }
 19.9517 +
 19.9518 +                    retval.tree = root_0;}
 19.9519 +                    }
 19.9520 +                    break;
 19.9521 +                case 2 :
 19.9522 +                    dbg.enterAlt(2);
 19.9523 +
 19.9524 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:419:3: rewrite_template_ref
 19.9525 +                    {
 19.9526 +                    root_0 = (CommonTree)adaptor.nil();
 19.9527 +
 19.9528 +                    dbg.location(419,3);
 19.9529 +                    pushFollow(FOLLOW_rewrite_template_ref_in_rewrite_template2974);
 19.9530 +                    rewrite_template_ref159=rewrite_template_ref();
 19.9531 +
 19.9532 +                    state._fsp--;
 19.9533 +                    if (state.failed) return retval;
 19.9534 +                    if ( state.backtracking==0 ) adaptor.addChild(root_0, rewrite_template_ref159.getTree());
 19.9535 +
 19.9536 +                    }
 19.9537 +                    break;
 19.9538 +                case 3 :
 19.9539 +                    dbg.enterAlt(3);
 19.9540 +
 19.9541 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:422:3: rewrite_indirect_template_head
 19.9542 +                    {
 19.9543 +                    root_0 = (CommonTree)adaptor.nil();
 19.9544 +
 19.9545 +                    dbg.location(422,3);
 19.9546 +                    pushFollow(FOLLOW_rewrite_indirect_template_head_in_rewrite_template2983);
 19.9547 +                    rewrite_indirect_template_head160=rewrite_indirect_template_head();
 19.9548 +
 19.9549 +                    state._fsp--;
 19.9550 +                    if (state.failed) return retval;
 19.9551 +                    if ( state.backtracking==0 ) adaptor.addChild(root_0, rewrite_indirect_template_head160.getTree());
 19.9552 +
 19.9553 +                    }
 19.9554 +                    break;
 19.9555 +                case 4 :
 19.9556 +                    dbg.enterAlt(4);
 19.9557 +
 19.9558 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:425:3: ACTION
 19.9559 +                    {
 19.9560 +                    root_0 = (CommonTree)adaptor.nil();
 19.9561 +
 19.9562 +                    dbg.location(425,3);
 19.9563 +                    ACTION161=(Token)match(input,ACTION,FOLLOW_ACTION_in_rewrite_template2992); if (state.failed) return retval;
 19.9564 +                    if ( state.backtracking==0 ) {
 19.9565 +                    ACTION161_tree = (CommonTree)adaptor.create(ACTION161);
 19.9566 +                    adaptor.addChild(root_0, ACTION161_tree);
 19.9567 +                    }
 19.9568 +
 19.9569 +                    }
 19.9570 +                    break;
 19.9571 +
 19.9572 +            }
 19.9573 +            retval.stop = input.LT(-1);
 19.9574 +
 19.9575 +            if ( state.backtracking==0 ) {
 19.9576 +
 19.9577 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.9578 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.9579 +            }
 19.9580 +        }
 19.9581 +        catch (RecognitionException re) {
 19.9582 +            reportError(re);
 19.9583 +            recover(input,re);
 19.9584 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.9585 +
 19.9586 +        }
 19.9587 +        finally {
 19.9588 +        }
 19.9589 +        dbg.location(426, 2);
 19.9590 +
 19.9591 +        }
 19.9592 +        finally {
 19.9593 +            dbg.exitRule(getGrammarFileName(), "rewrite_template");
 19.9594 +            decRuleLevel();
 19.9595 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.9596 +        }
 19.9597 +
 19.9598 +        return retval;
 19.9599 +    }
 19.9600 +    // $ANTLR end "rewrite_template"
 19.9601 +
 19.9602 +    public static class rewrite_template_ref_return extends ParserRuleReturnScope {
 19.9603 +        CommonTree tree;
 19.9604 +        public Object getTree() { return tree; }
 19.9605 +    };
 19.9606 +
 19.9607 +    // $ANTLR start "rewrite_template_ref"
 19.9608 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:428:1: rewrite_template_ref : id lp= '(' rewrite_template_args ')' -> ^( TEMPLATE[$lp,\"TEMPLATE\"] id rewrite_template_args ) ;
 19.9609 +    public final ANTLRv3Parser.rewrite_template_ref_return rewrite_template_ref() throws RecognitionException {
 19.9610 +        ANTLRv3Parser.rewrite_template_ref_return retval = new ANTLRv3Parser.rewrite_template_ref_return();
 19.9611 +        retval.start = input.LT(1);
 19.9612 +
 19.9613 +        CommonTree root_0 = null;
 19.9614 +
 19.9615 +        Token lp=null;
 19.9616 +        Token char_literal164=null;
 19.9617 +        ANTLRv3Parser.id_return id162 = null;
 19.9618 +
 19.9619 +        ANTLRv3Parser.rewrite_template_args_return rewrite_template_args163 = null;
 19.9620 +
 19.9621 +
 19.9622 +        CommonTree lp_tree=null;
 19.9623 +        CommonTree char_literal164_tree=null;
 19.9624 +        RewriteRuleTokenStream stream_82=new RewriteRuleTokenStream(adaptor,"token 82");
 19.9625 +        RewriteRuleTokenStream stream_84=new RewriteRuleTokenStream(adaptor,"token 84");
 19.9626 +        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
 19.9627 +        RewriteRuleSubtreeStream stream_rewrite_template_args=new RewriteRuleSubtreeStream(adaptor,"rule rewrite_template_args");
 19.9628 +        try { dbg.enterRule(getGrammarFileName(), "rewrite_template_ref");
 19.9629 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.9630 +        incRuleLevel();
 19.9631 +        dbg.location(428, 1);
 19.9632 +
 19.9633 +        try {
 19.9634 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:430:2: ( id lp= '(' rewrite_template_args ')' -> ^( TEMPLATE[$lp,\"TEMPLATE\"] id rewrite_template_args ) )
 19.9635 +            dbg.enterAlt(1);
 19.9636 +
 19.9637 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:430:4: id lp= '(' rewrite_template_args ')'
 19.9638 +            {
 19.9639 +            dbg.location(430,4);
 19.9640 +            pushFollow(FOLLOW_id_in_rewrite_template_ref3005);
 19.9641 +            id162=id();
 19.9642 +
 19.9643 +            state._fsp--;
 19.9644 +            if (state.failed) return retval;
 19.9645 +            if ( state.backtracking==0 ) stream_id.add(id162.getTree());
 19.9646 +            dbg.location(430,9);
 19.9647 +            lp=(Token)match(input,82,FOLLOW_82_in_rewrite_template_ref3009); if (state.failed) return retval; 
 19.9648 +            if ( state.backtracking==0 ) stream_82.add(lp);
 19.9649 +
 19.9650 +            dbg.location(430,14);
 19.9651 +            pushFollow(FOLLOW_rewrite_template_args_in_rewrite_template_ref3011);
 19.9652 +            rewrite_template_args163=rewrite_template_args();
 19.9653 +
 19.9654 +            state._fsp--;
 19.9655 +            if (state.failed) return retval;
 19.9656 +            if ( state.backtracking==0 ) stream_rewrite_template_args.add(rewrite_template_args163.getTree());
 19.9657 +            dbg.location(430,36);
 19.9658 +            char_literal164=(Token)match(input,84,FOLLOW_84_in_rewrite_template_ref3013); if (state.failed) return retval; 
 19.9659 +            if ( state.backtracking==0 ) stream_84.add(char_literal164);
 19.9660 +
 19.9661 +
 19.9662 +
 19.9663 +            // AST REWRITE
 19.9664 +            // elements: id, rewrite_template_args
 19.9665 +            // token labels: 
 19.9666 +            // rule labels: retval
 19.9667 +            // token list labels: 
 19.9668 +            // rule list labels: 
 19.9669 +            // wildcard labels: 
 19.9670 +            if ( state.backtracking==0 ) {
 19.9671 +            retval.tree = root_0;
 19.9672 +            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.9673 +
 19.9674 +            root_0 = (CommonTree)adaptor.nil();
 19.9675 +            // 431:3: -> ^( TEMPLATE[$lp,\"TEMPLATE\"] id rewrite_template_args )
 19.9676 +            {
 19.9677 +                dbg.location(431,6);
 19.9678 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:431:6: ^( TEMPLATE[$lp,\"TEMPLATE\"] id rewrite_template_args )
 19.9679 +                {
 19.9680 +                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.9681 +                dbg.location(431,8);
 19.9682 +                root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(TEMPLATE, lp, "TEMPLATE"), root_1);
 19.9683 +
 19.9684 +                dbg.location(431,33);
 19.9685 +                adaptor.addChild(root_1, stream_id.nextTree());
 19.9686 +                dbg.location(431,36);
 19.9687 +                adaptor.addChild(root_1, stream_rewrite_template_args.nextTree());
 19.9688 +
 19.9689 +                adaptor.addChild(root_0, root_1);
 19.9690 +                }
 19.9691 +
 19.9692 +            }
 19.9693 +
 19.9694 +            retval.tree = root_0;}
 19.9695 +            }
 19.9696 +
 19.9697 +            retval.stop = input.LT(-1);
 19.9698 +
 19.9699 +            if ( state.backtracking==0 ) {
 19.9700 +
 19.9701 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.9702 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.9703 +            }
 19.9704 +        }
 19.9705 +        catch (RecognitionException re) {
 19.9706 +            reportError(re);
 19.9707 +            recover(input,re);
 19.9708 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.9709 +
 19.9710 +        }
 19.9711 +        finally {
 19.9712 +        }
 19.9713 +        dbg.location(432, 2);
 19.9714 +
 19.9715 +        }
 19.9716 +        finally {
 19.9717 +            dbg.exitRule(getGrammarFileName(), "rewrite_template_ref");
 19.9718 +            decRuleLevel();
 19.9719 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.9720 +        }
 19.9721 +
 19.9722 +        return retval;
 19.9723 +    }
 19.9724 +    // $ANTLR end "rewrite_template_ref"
 19.9725 +
 19.9726 +    public static class rewrite_indirect_template_head_return extends ParserRuleReturnScope {
 19.9727 +        CommonTree tree;
 19.9728 +        public Object getTree() { return tree; }
 19.9729 +    };
 19.9730 +
 19.9731 +    // $ANTLR start "rewrite_indirect_template_head"
 19.9732 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:434:1: rewrite_indirect_template_head : lp= '(' ACTION ')' '(' rewrite_template_args ')' -> ^( TEMPLATE[$lp,\"TEMPLATE\"] ACTION rewrite_template_args ) ;
 19.9733 +    public final ANTLRv3Parser.rewrite_indirect_template_head_return rewrite_indirect_template_head() throws RecognitionException {
 19.9734 +        ANTLRv3Parser.rewrite_indirect_template_head_return retval = new ANTLRv3Parser.rewrite_indirect_template_head_return();
 19.9735 +        retval.start = input.LT(1);
 19.9736 +
 19.9737 +        CommonTree root_0 = null;
 19.9738 +
 19.9739 +        Token lp=null;
 19.9740 +        Token ACTION165=null;
 19.9741 +        Token char_literal166=null;
 19.9742 +        Token char_literal167=null;
 19.9743 +        Token char_literal169=null;
 19.9744 +        ANTLRv3Parser.rewrite_template_args_return rewrite_template_args168 = null;
 19.9745 +
 19.9746 +
 19.9747 +        CommonTree lp_tree=null;
 19.9748 +        CommonTree ACTION165_tree=null;
 19.9749 +        CommonTree char_literal166_tree=null;
 19.9750 +        CommonTree char_literal167_tree=null;
 19.9751 +        CommonTree char_literal169_tree=null;
 19.9752 +        RewriteRuleTokenStream stream_82=new RewriteRuleTokenStream(adaptor,"token 82");
 19.9753 +        RewriteRuleTokenStream stream_ACTION=new RewriteRuleTokenStream(adaptor,"token ACTION");
 19.9754 +        RewriteRuleTokenStream stream_84=new RewriteRuleTokenStream(adaptor,"token 84");
 19.9755 +        RewriteRuleSubtreeStream stream_rewrite_template_args=new RewriteRuleSubtreeStream(adaptor,"rule rewrite_template_args");
 19.9756 +        try { dbg.enterRule(getGrammarFileName(), "rewrite_indirect_template_head");
 19.9757 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.9758 +        incRuleLevel();
 19.9759 +        dbg.location(434, 1);
 19.9760 +
 19.9761 +        try {
 19.9762 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:436:2: (lp= '(' ACTION ')' '(' rewrite_template_args ')' -> ^( TEMPLATE[$lp,\"TEMPLATE\"] ACTION rewrite_template_args ) )
 19.9763 +            dbg.enterAlt(1);
 19.9764 +
 19.9765 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:436:4: lp= '(' ACTION ')' '(' rewrite_template_args ')'
 19.9766 +            {
 19.9767 +            dbg.location(436,6);
 19.9768 +            lp=(Token)match(input,82,FOLLOW_82_in_rewrite_indirect_template_head3041); if (state.failed) return retval; 
 19.9769 +            if ( state.backtracking==0 ) stream_82.add(lp);
 19.9770 +
 19.9771 +            dbg.location(436,11);
 19.9772 +            ACTION165=(Token)match(input,ACTION,FOLLOW_ACTION_in_rewrite_indirect_template_head3043); if (state.failed) return retval; 
 19.9773 +            if ( state.backtracking==0 ) stream_ACTION.add(ACTION165);
 19.9774 +
 19.9775 +            dbg.location(436,18);
 19.9776 +            char_literal166=(Token)match(input,84,FOLLOW_84_in_rewrite_indirect_template_head3045); if (state.failed) return retval; 
 19.9777 +            if ( state.backtracking==0 ) stream_84.add(char_literal166);
 19.9778 +
 19.9779 +            dbg.location(436,22);
 19.9780 +            char_literal167=(Token)match(input,82,FOLLOW_82_in_rewrite_indirect_template_head3047); if (state.failed) return retval; 
 19.9781 +            if ( state.backtracking==0 ) stream_82.add(char_literal167);
 19.9782 +
 19.9783 +            dbg.location(436,26);
 19.9784 +            pushFollow(FOLLOW_rewrite_template_args_in_rewrite_indirect_template_head3049);
 19.9785 +            rewrite_template_args168=rewrite_template_args();
 19.9786 +
 19.9787 +            state._fsp--;
 19.9788 +            if (state.failed) return retval;
 19.9789 +            if ( state.backtracking==0 ) stream_rewrite_template_args.add(rewrite_template_args168.getTree());
 19.9790 +            dbg.location(436,48);
 19.9791 +            char_literal169=(Token)match(input,84,FOLLOW_84_in_rewrite_indirect_template_head3051); if (state.failed) return retval; 
 19.9792 +            if ( state.backtracking==0 ) stream_84.add(char_literal169);
 19.9793 +
 19.9794 +
 19.9795 +
 19.9796 +            // AST REWRITE
 19.9797 +            // elements: ACTION, rewrite_template_args
 19.9798 +            // token labels: 
 19.9799 +            // rule labels: retval
 19.9800 +            // token list labels: 
 19.9801 +            // rule list labels: 
 19.9802 +            // wildcard labels: 
 19.9803 +            if ( state.backtracking==0 ) {
 19.9804 +            retval.tree = root_0;
 19.9805 +            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.9806 +
 19.9807 +            root_0 = (CommonTree)adaptor.nil();
 19.9808 +            // 437:3: -> ^( TEMPLATE[$lp,\"TEMPLATE\"] ACTION rewrite_template_args )
 19.9809 +            {
 19.9810 +                dbg.location(437,6);
 19.9811 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:437:6: ^( TEMPLATE[$lp,\"TEMPLATE\"] ACTION rewrite_template_args )
 19.9812 +                {
 19.9813 +                CommonTree root_1 = (CommonTree)adaptor.nil();
 19.9814 +                dbg.location(437,8);
 19.9815 +                root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(TEMPLATE, lp, "TEMPLATE"), root_1);
 19.9816 +
 19.9817 +                dbg.location(437,33);
 19.9818 +                adaptor.addChild(root_1, stream_ACTION.nextNode());
 19.9819 +                dbg.location(437,40);
 19.9820 +                adaptor.addChild(root_1, stream_rewrite_template_args.nextTree());
 19.9821 +
 19.9822 +                adaptor.addChild(root_0, root_1);
 19.9823 +                }
 19.9824 +
 19.9825 +            }
 19.9826 +
 19.9827 +            retval.tree = root_0;}
 19.9828 +            }
 19.9829 +
 19.9830 +            retval.stop = input.LT(-1);
 19.9831 +
 19.9832 +            if ( state.backtracking==0 ) {
 19.9833 +
 19.9834 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
 19.9835 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
 19.9836 +            }
 19.9837 +        }
 19.9838 +        catch (RecognitionException re) {
 19.9839 +            reportError(re);
 19.9840 +            recover(input,re);
 19.9841 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
 19.9842 +
 19.9843 +        }
 19.9844 +        finally {
 19.9845 +        }
 19.9846 +        dbg.location(438, 2);
 19.9847 +
 19.9848 +        }
 19.9849 +        finally {
 19.9850 +            dbg.exitRule(getGrammarFileName(), "rewrite_indirect_template_head");
 19.9851 +            decRuleLevel();
 19.9852 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
 19.9853 +        }
 19.9854 +
 19.9855 +        return retval;
 19.9856 +    }
 19.9857 +    // $ANTLR end "rewrite_indirect_template_head"
 19.9858 +
 19.9859 +    public static class rewrite_template_args_return extends ParserRuleReturnScope {
 19.9860 +        CommonTree tree;
 19.9861 +        public Object getTree() { return tree; }
 19.9862 +    };
 19.9863 +
 19.9864 +    // $ANTLR start "rewrite_template_args"
 19.9865 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:440:1: rewrite_template_args : ( rewrite_template_arg ( ',' rewrite_template_arg )* -> ^( ARGLIST ( rewrite_template_arg )+ ) | -> ARGLIST );
 19.9866 +    public final ANTLRv3Parser.rewrite_template_args_return rewrite_template_args() throws RecognitionException {
 19.9867 +        ANTLRv3Parser.rewrite_template_args_return retval = new ANTLRv3Parser.rewrite_template_args_return();
 19.9868 +        retval.start = input.LT(1);
 19.9869 +
 19.9870 +        CommonTree root_0 = null;
 19.9871 +
 19.9872 +        Token char_literal171=null;
 19.9873 +        ANTLRv3Parser.rewrite_template_arg_return rewrite_template_arg170 = null;
 19.9874 +
 19.9875 +        ANTLRv3Parser.rewrite_template_arg_return rewrite_template_arg172 = null;
 19.9876 +
 19.9877 +
 19.9878 +        CommonTree char_literal171_tree=null;
 19.9879 +        RewriteRuleTokenStream stream_81=new RewriteRuleTokenStream(adaptor,"token 81");
 19.9880 +        RewriteRuleSubtreeStream stream_rewrite_template_arg=new RewriteRuleSubtreeStream(adaptor,"rule rewrite_template_arg");
 19.9881 +        try { dbg.enterRule(getGrammarFileName(), "rewrite_template_args");
 19.9882 +        if ( getRuleLevel()==0 ) {dbg.commence();}
 19.9883 +        incRuleLevel();
 19.9884 +        dbg.location(440, 1);
 19.9885 +
 19.9886 +        try {
 19.9887 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:441:2: ( rewrite_template_arg ( ',' rewrite_template_arg )* -> ^( ARGLIST ( rewrite_template_arg )+ ) | -> ARGLIST )
 19.9888 +            int alt74=2;
 19.9889 +            try { dbg.enterDecision(74, decisionCanBacktrack[74]);
 19.9890 +
 19.9891 +            int LA74_0 = input.LA(1);
 19.9892 +
 19.9893 +            if ( (LA74_0==TOKEN_REF||LA74_0==RULE_REF) ) {
 19.9894 +                alt74=1;
 19.9895 +            }
 19.9896 +            else if ( (LA74_0==84) ) {
 19.9897 +                alt74=2;
 19.9898 +            }
 19.9899 +            else {
 19.9900 +                if (state.backtracking>0) {state.failed=true; return retval;}
 19.9901 +                NoViableAltException nvae =
 19.9902 +                    new NoViableAltException("", 74, 0, input);
 19.9903 +
 19.9904 +                dbg.recognitionException(nvae);
 19.9905 +                throw nvae;
 19.9906 +            }
 19.9907 +            } finally {dbg.exitDecision(74);}
 19.9908 +
 19.9909 +            switch (alt74) {
 19.9910 +                case 1 :
 19.9911 +                    dbg.enterAlt(1);
 19.9912 +
 19.9913 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:441:4: rewrite_template_arg ( ',' rewrite_template_arg )*
 19.9914 +                    {
 19.9915 +                    dbg.location(441,4);
 19.9916 +                    pushFollow(FOLLOW_rewrite_template_arg_in_rewrite_template_args3075);
 19.9917 +                    rewrite_template_arg170=rewrite_template_arg();
 19.9918 +
 19.9919 +                    state._fsp--;
 19.9920 +                    if (state.failed) return retval;
 19.9921 +                    if ( state.backtracking==0 ) stream_rewrite_template_arg.add(rewrite_template_arg170.getTree());
 19.9922 +                    dbg.location(441,25);
 19.9923 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:441:25: ( ',' rewrite_template_arg )*
 19.9924 +                    try { dbg.enterSubRule(73);
 19.9925 +
 19.9926 +                    loop73:
 19.9927 +                    do {
 19.9928 +                        int alt73=2;
 19.9929 +                        try { dbg.enterDecision(73, decisionCanBacktrack[73]);
 19.9930 +
 19.9931 +                        int LA73_0 = input.LA(1);
 19.9932 +
 19.9933 +                        if ( (LA73_0==81) ) {
 19.9934 +                            alt73=1;
 19.9935 +                        }
 19.9936 +
 19.9937 +
 19.9938 +                        } finally {dbg.exitDecision(73);}
 19.9939 +
 19.9940 +                        switch (alt73) {
 19.9941 +                    	case 1 :
 19.9942 +                    	    dbg.enterAlt(1);
 19.9943 +
 19.9944 +                    	    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:441:26: ',' rewrite_template_arg
 19.9945 +                    	    {
 19.9946 +                    	    dbg.location(441,26);
 19.9947 +                    	    char_literal171=(Token)match(input,81,FOLLOW_81_in_rewrite_template_args3078); if (state.failed) return retval; 
 19.9948 +                    	    if ( state.backtracking==0 ) stream_81.add(char_literal171);
 19.9949 +
 19.9950 +                    	    dbg.location(441,30);
 19.9951 +                    	    pushFollow(FOLLOW_rewrite_template_arg_in_rewrite_template_args3080);
 19.9952 +                    	    rewrite_template_arg172=rewrite_template_arg();
 19.9953 +
 19.9954 +                    	    state._fsp--;
 19.9955 +                    	    if (state.failed) return retval;
 19.9956 +                    	    if ( state.backtracking==0 ) stream_rewrite_template_arg.add(rewrite_template_arg172.getTree());
 19.9957 +
 19.9958 +                    	    }
 19.9959 +                    	    break;
 19.9960 +
 19.9961 +                    	default :
 19.9962 +                    	    break loop73;
 19.9963 +                        }
 19.9964 +                    } while (true);
 19.9965 +                    } finally {dbg.exitSubRule(73);}
 19.9966 +
 19.9967 +
 19.9968 +
 19.9969 +                    // AST REWRITE
 19.9970 +                    // elements: rewrite_template_arg
 19.9971 +                    // token labels: 
 19.9972 +                    // rule labels: retval
 19.9973 +                    // token list labels: 
 19.9974 +                    // rule list labels: 
 19.9975 +                    // wildcard labels: 
 19.9976 +                    if ( state.backtracking==0 ) {
 19.9977 +                    retval.tree = root_0;
 19.9978 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
 19.9979 +
 19.9980 +                    root_0 = (CommonTree)adaptor.nil();
 19.9981 +                    // 442:3: -> ^( ARGLIST ( rewrite_template_arg )+ )
 19.9982 +                    {
 19.9983 +                        dbg.location(442,6);
 19.9984 +                        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:442:6: ^( ARGLIST ( rewrite_template_arg )+ )
 19.9985 +                        {
 19.9986 +                        CommonTree root_1 = (CommonTree)adaptor.nil();
 19.9987 +                        dbg.location(442,8);
 19.9988 +                        root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(ARGLIST, "ARGLIST"), root_1);
 19.9989 +
 19.9990 +                        dbg.location(442,16);
 19.9991 +                        if ( !(stream_rewrite_template_arg.hasNext()) ) {
 19.9992 +                            throw new RewriteEarlyExitException();
 19.9993 +                        }
 19.9994 +                        while ( stream_rewrite_template_arg.hasNext() ) {
 19.9995 +                            dbg.location(442,16);
 19.9996 +                            adaptor.addChild(root_1, stream_rewrite_template_arg.nextTree());
 19.9997 +
 19.9998 +                        }
 19.9999 +                        stream_rewrite_template_arg.reset();
19.10000 +
19.10001 +                        adaptor.addChild(root_0, root_1);
19.10002 +                        }
19.10003 +
19.10004 +                    }
19.10005 +
19.10006 +                    retval.tree = root_0;}
19.10007 +                    }
19.10008 +                    break;
19.10009 +                case 2 :
19.10010 +                    dbg.enterAlt(2);
19.10011 +
19.10012 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:443:4: 
19.10013 +                    {
19.10014 +
19.10015 +                    // AST REWRITE
19.10016 +                    // elements: 
19.10017 +                    // token labels: 
19.10018 +                    // rule labels: retval
19.10019 +                    // token list labels: 
19.10020 +                    // rule list labels: 
19.10021 +                    // wildcard labels: 
19.10022 +                    if ( state.backtracking==0 ) {
19.10023 +                    retval.tree = root_0;
19.10024 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
19.10025 +
19.10026 +                    root_0 = (CommonTree)adaptor.nil();
19.10027 +                    // 443:4: -> ARGLIST
19.10028 +                    {
19.10029 +                        dbg.location(443,7);
19.10030 +                        adaptor.addChild(root_0, (CommonTree)adaptor.create(ARGLIST, "ARGLIST"));
19.10031 +
19.10032 +                    }
19.10033 +
19.10034 +                    retval.tree = root_0;}
19.10035 +                    }
19.10036 +                    break;
19.10037 +
19.10038 +            }
19.10039 +            retval.stop = input.LT(-1);
19.10040 +
19.10041 +            if ( state.backtracking==0 ) {
19.10042 +
19.10043 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
19.10044 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
19.10045 +            }
19.10046 +        }
19.10047 +        catch (RecognitionException re) {
19.10048 +            reportError(re);
19.10049 +            recover(input,re);
19.10050 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
19.10051 +
19.10052 +        }
19.10053 +        finally {
19.10054 +        }
19.10055 +        dbg.location(444, 2);
19.10056 +
19.10057 +        }
19.10058 +        finally {
19.10059 +            dbg.exitRule(getGrammarFileName(), "rewrite_template_args");
19.10060 +            decRuleLevel();
19.10061 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
19.10062 +        }
19.10063 +
19.10064 +        return retval;
19.10065 +    }
19.10066 +    // $ANTLR end "rewrite_template_args"
19.10067 +
19.10068 +    public static class rewrite_template_arg_return extends ParserRuleReturnScope {
19.10069 +        CommonTree tree;
19.10070 +        public Object getTree() { return tree; }
19.10071 +    };
19.10072 +
19.10073 +    // $ANTLR start "rewrite_template_arg"
19.10074 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:446:1: rewrite_template_arg : id '=' ACTION -> ^( ARG[$id.start] id ACTION ) ;
19.10075 +    public final ANTLRv3Parser.rewrite_template_arg_return rewrite_template_arg() throws RecognitionException {
19.10076 +        ANTLRv3Parser.rewrite_template_arg_return retval = new ANTLRv3Parser.rewrite_template_arg_return();
19.10077 +        retval.start = input.LT(1);
19.10078 +
19.10079 +        CommonTree root_0 = null;
19.10080 +
19.10081 +        Token char_literal174=null;
19.10082 +        Token ACTION175=null;
19.10083 +        ANTLRv3Parser.id_return id173 = null;
19.10084 +
19.10085 +
19.10086 +        CommonTree char_literal174_tree=null;
19.10087 +        CommonTree ACTION175_tree=null;
19.10088 +        RewriteRuleTokenStream stream_71=new RewriteRuleTokenStream(adaptor,"token 71");
19.10089 +        RewriteRuleTokenStream stream_ACTION=new RewriteRuleTokenStream(adaptor,"token ACTION");
19.10090 +        RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
19.10091 +        try { dbg.enterRule(getGrammarFileName(), "rewrite_template_arg");
19.10092 +        if ( getRuleLevel()==0 ) {dbg.commence();}
19.10093 +        incRuleLevel();
19.10094 +        dbg.location(446, 1);
19.10095 +
19.10096 +        try {
19.10097 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:447:2: ( id '=' ACTION -> ^( ARG[$id.start] id ACTION ) )
19.10098 +            dbg.enterAlt(1);
19.10099 +
19.10100 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:447:6: id '=' ACTION
19.10101 +            {
19.10102 +            dbg.location(447,6);
19.10103 +            pushFollow(FOLLOW_id_in_rewrite_template_arg3113);
19.10104 +            id173=id();
19.10105 +
19.10106 +            state._fsp--;
19.10107 +            if (state.failed) return retval;
19.10108 +            if ( state.backtracking==0 ) stream_id.add(id173.getTree());
19.10109 +            dbg.location(447,9);
19.10110 +            char_literal174=(Token)match(input,71,FOLLOW_71_in_rewrite_template_arg3115); if (state.failed) return retval; 
19.10111 +            if ( state.backtracking==0 ) stream_71.add(char_literal174);
19.10112 +
19.10113 +            dbg.location(447,13);
19.10114 +            ACTION175=(Token)match(input,ACTION,FOLLOW_ACTION_in_rewrite_template_arg3117); if (state.failed) return retval; 
19.10115 +            if ( state.backtracking==0 ) stream_ACTION.add(ACTION175);
19.10116 +
19.10117 +
19.10118 +
19.10119 +            // AST REWRITE
19.10120 +            // elements: ACTION, id
19.10121 +            // token labels: 
19.10122 +            // rule labels: retval
19.10123 +            // token list labels: 
19.10124 +            // rule list labels: 
19.10125 +            // wildcard labels: 
19.10126 +            if ( state.backtracking==0 ) {
19.10127 +            retval.tree = root_0;
19.10128 +            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
19.10129 +
19.10130 +            root_0 = (CommonTree)adaptor.nil();
19.10131 +            // 447:20: -> ^( ARG[$id.start] id ACTION )
19.10132 +            {
19.10133 +                dbg.location(447,23);
19.10134 +                // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:447:23: ^( ARG[$id.start] id ACTION )
19.10135 +                {
19.10136 +                CommonTree root_1 = (CommonTree)adaptor.nil();
19.10137 +                dbg.location(447,25);
19.10138 +                root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(ARG, (id173!=null?((Token)id173.start):null)), root_1);
19.10139 +
19.10140 +                dbg.location(447,40);
19.10141 +                adaptor.addChild(root_1, stream_id.nextTree());
19.10142 +                dbg.location(447,43);
19.10143 +                adaptor.addChild(root_1, stream_ACTION.nextNode());
19.10144 +
19.10145 +                adaptor.addChild(root_0, root_1);
19.10146 +                }
19.10147 +
19.10148 +            }
19.10149 +
19.10150 +            retval.tree = root_0;}
19.10151 +            }
19.10152 +
19.10153 +            retval.stop = input.LT(-1);
19.10154 +
19.10155 +            if ( state.backtracking==0 ) {
19.10156 +
19.10157 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
19.10158 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
19.10159 +            }
19.10160 +        }
19.10161 +        catch (RecognitionException re) {
19.10162 +            reportError(re);
19.10163 +            recover(input,re);
19.10164 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
19.10165 +
19.10166 +        }
19.10167 +        finally {
19.10168 +        }
19.10169 +        dbg.location(448, 2);
19.10170 +
19.10171 +        }
19.10172 +        finally {
19.10173 +            dbg.exitRule(getGrammarFileName(), "rewrite_template_arg");
19.10174 +            decRuleLevel();
19.10175 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
19.10176 +        }
19.10177 +
19.10178 +        return retval;
19.10179 +    }
19.10180 +    // $ANTLR end "rewrite_template_arg"
19.10181 +
19.10182 +    public static class id_return extends ParserRuleReturnScope {
19.10183 +        CommonTree tree;
19.10184 +        public Object getTree() { return tree; }
19.10185 +    };
19.10186 +
19.10187 +    // $ANTLR start "id"
19.10188 +    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:450:1: id : ( TOKEN_REF -> ID[$TOKEN_REF] | RULE_REF -> ID[$RULE_REF] );
19.10189 +    public final ANTLRv3Parser.id_return id() throws RecognitionException {
19.10190 +        ANTLRv3Parser.id_return retval = new ANTLRv3Parser.id_return();
19.10191 +        retval.start = input.LT(1);
19.10192 +
19.10193 +        CommonTree root_0 = null;
19.10194 +
19.10195 +        Token TOKEN_REF176=null;
19.10196 +        Token RULE_REF177=null;
19.10197 +
19.10198 +        CommonTree TOKEN_REF176_tree=null;
19.10199 +        CommonTree RULE_REF177_tree=null;
19.10200 +        RewriteRuleTokenStream stream_RULE_REF=new RewriteRuleTokenStream(adaptor,"token RULE_REF");
19.10201 +        RewriteRuleTokenStream stream_TOKEN_REF=new RewriteRuleTokenStream(adaptor,"token TOKEN_REF");
19.10202 +
19.10203 +        try { dbg.enterRule(getGrammarFileName(), "id");
19.10204 +        if ( getRuleLevel()==0 ) {dbg.commence();}
19.10205 +        incRuleLevel();
19.10206 +        dbg.location(450, 1);
19.10207 +
19.10208 +        try {
19.10209 +            // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:450:4: ( TOKEN_REF -> ID[$TOKEN_REF] | RULE_REF -> ID[$RULE_REF] )
19.10210 +            int alt75=2;
19.10211 +            try { dbg.enterDecision(75, decisionCanBacktrack[75]);
19.10212 +
19.10213 +            int LA75_0 = input.LA(1);
19.10214 +
19.10215 +            if ( (LA75_0==TOKEN_REF) ) {
19.10216 +                alt75=1;
19.10217 +            }
19.10218 +            else if ( (LA75_0==RULE_REF) ) {
19.10219 +                alt75=2;
19.10220 +            }
19.10221 +            else {
19.10222 +                if (state.backtracking>0) {state.failed=true; return retval;}
19.10223 +                NoViableAltException nvae =
19.10224 +                    new NoViableAltException("", 75, 0, input);
19.10225 +
19.10226 +                dbg.recognitionException(nvae);
19.10227 +                throw nvae;
19.10228 +            }
19.10229 +            } finally {dbg.exitDecision(75);}
19.10230 +
19.10231 +            switch (alt75) {
19.10232 +                case 1 :
19.10233 +                    dbg.enterAlt(1);
19.10234 +
19.10235 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:450:6: TOKEN_REF
19.10236 +                    {
19.10237 +                    dbg.location(450,6);
19.10238 +                    TOKEN_REF176=(Token)match(input,TOKEN_REF,FOLLOW_TOKEN_REF_in_id3138); if (state.failed) return retval; 
19.10239 +                    if ( state.backtracking==0 ) stream_TOKEN_REF.add(TOKEN_REF176);
19.10240 +
19.10241 +
19.10242 +
19.10243 +                    // AST REWRITE
19.10244 +                    // elements: 
19.10245 +                    // token labels: 
19.10246 +                    // rule labels: retval
19.10247 +                    // token list labels: 
19.10248 +                    // rule list labels: 
19.10249 +                    // wildcard labels: 
19.10250 +                    if ( state.backtracking==0 ) {
19.10251 +                    retval.tree = root_0;
19.10252 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
19.10253 +
19.10254 +                    root_0 = (CommonTree)adaptor.nil();
19.10255 +                    // 450:16: -> ID[$TOKEN_REF]
19.10256 +                    {
19.10257 +                        dbg.location(450,19);
19.10258 +                        adaptor.addChild(root_0, (CommonTree)adaptor.create(ID, TOKEN_REF176));
19.10259 +
19.10260 +                    }
19.10261 +
19.10262 +                    retval.tree = root_0;}
19.10263 +                    }
19.10264 +                    break;
19.10265 +                case 2 :
19.10266 +                    dbg.enterAlt(2);
19.10267 +
19.10268 +                    // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:451:4: RULE_REF
19.10269 +                    {
19.10270 +                    dbg.location(451,4);
19.10271 +                    RULE_REF177=(Token)match(input,RULE_REF,FOLLOW_RULE_REF_in_id3148); if (state.failed) return retval; 
19.10272 +                    if ( state.backtracking==0 ) stream_RULE_REF.add(RULE_REF177);
19.10273 +
19.10274 +
19.10275 +
19.10276 +                    // AST REWRITE
19.10277 +                    // elements: 
19.10278 +                    // token labels: 
19.10279 +                    // rule labels: retval
19.10280 +                    // token list labels: 
19.10281 +                    // rule list labels: 
19.10282 +                    // wildcard labels: 
19.10283 +                    if ( state.backtracking==0 ) {
19.10284 +                    retval.tree = root_0;
19.10285 +                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
19.10286 +
19.10287 +                    root_0 = (CommonTree)adaptor.nil();
19.10288 +                    // 451:14: -> ID[$RULE_REF]
19.10289 +                    {
19.10290 +                        dbg.location(451,17);
19.10291 +                        adaptor.addChild(root_0, (CommonTree)adaptor.create(ID, RULE_REF177));
19.10292 +
19.10293 +                    }
19.10294 +
19.10295 +                    retval.tree = root_0;}
19.10296 +                    }
19.10297 +                    break;
19.10298 +
19.10299 +            }
19.10300 +            retval.stop = input.LT(-1);
19.10301 +
19.10302 +            if ( state.backtracking==0 ) {
19.10303 +
19.10304 +            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
19.10305 +            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
19.10306 +            }
19.10307 +        }
19.10308 +        catch (RecognitionException re) {
19.10309 +            reportError(re);
19.10310 +            recover(input,re);
19.10311 +    	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
19.10312 +
19.10313 +        }
19.10314 +        finally {
19.10315 +        }
19.10316 +        dbg.location(452, 2);
19.10317 +
19.10318 +        }
19.10319 +        finally {
19.10320 +            dbg.exitRule(getGrammarFileName(), "id");
19.10321 +            decRuleLevel();
19.10322 +            if ( getRuleLevel()==0 ) {dbg.terminate();}
19.10323 +        }
19.10324 +
19.10325 +        return retval;
19.10326 +    }
19.10327 +    // $ANTLR end "id"
19.10328 +
19.10329 +    // $ANTLR start synpred1_ANTLRv3
19.10330 +    public final void synpred1_ANTLRv3_fragment() throws RecognitionException {   
19.10331 +        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:350:4: ( rewrite_template )
19.10332 +        dbg.enterAlt(1);
19.10333 +
19.10334 +        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:350:4: rewrite_template
19.10335 +        {
19.10336 +        dbg.location(350,4);
19.10337 +        pushFollow(FOLLOW_rewrite_template_in_synpred1_ANTLRv32562);
19.10338 +        rewrite_template();
19.10339 +
19.10340 +        state._fsp--;
19.10341 +        if (state.failed) return ;
19.10342 +
19.10343 +        }
19.10344 +    }
19.10345 +    // $ANTLR end synpred1_ANTLRv3
19.10346 +
19.10347 +    // $ANTLR start synpred2_ANTLRv3
19.10348 +    public final void synpred2_ANTLRv3_fragment() throws RecognitionException {   
19.10349 +        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:351:4: ( rewrite_tree_alternative )
19.10350 +        dbg.enterAlt(1);
19.10351 +
19.10352 +        // /Volumes/Mercurial/web-main/contrib/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/ANTLRv3.g:351:4: rewrite_tree_alternative
19.10353 +        {
19.10354 +        dbg.location(351,4);
19.10355 +        pushFollow(FOLLOW_rewrite_tree_alternative_in_synpred2_ANTLRv32567);
19.10356 +        rewrite_tree_alternative();
19.10357 +
19.10358 +        state._fsp--;
19.10359 +        if (state.failed) return ;
19.10360 +
19.10361 +        }
19.10362 +    }
19.10363 +    // $ANTLR end synpred2_ANTLRv3
19.10364 +
19.10365 +    // Delegated rules
19.10366 +
19.10367 +    public final boolean synpred2_ANTLRv3() {
19.10368 +        state.backtracking++;
19.10369 +        dbg.beginBacktrack(state.backtracking);
19.10370 +        int start = input.mark();
19.10371 +        try {
19.10372 +            synpred2_ANTLRv3_fragment(); // can never throw exception
19.10373 +        } catch (RecognitionException re) {
19.10374 +            System.err.println("impossible: "+re);
19.10375 +        }
19.10376 +        boolean success = !state.failed;
19.10377 +        input.rewind(start);
19.10378 +        dbg.endBacktrack(state.backtracking, success);
19.10379 +        state.backtracking--;
19.10380 +        state.failed=false;
19.10381 +        return success;
19.10382 +    }
19.10383 +    public final boolean synpred1_ANTLRv3() {
19.10384 +        state.backtracking++;
19.10385 +        dbg.beginBacktrack(state.backtracking);
19.10386 +        int start = input.mark();
19.10387 +        try {
19.10388 +            synpred1_ANTLRv3_fragment(); // can never throw exception
19.10389 +        } catch (RecognitionException re) {
19.10390 +            System.err.println("impossible: "+re);
19.10391 +        }
19.10392 +        boolean success = !state.failed;
19.10393 +        input.rewind(start);
19.10394 +        dbg.endBacktrack(state.backtracking, success);
19.10395 +        state.backtracking--;
19.10396 +        state.failed=false;
19.10397 +        return success;
19.10398 +    }
19.10399 +
19.10400 +
19.10401 +    protected DFA46 dfa46 = new DFA46(this);
19.10402 +    protected DFA64 dfa64 = new DFA64(this);
19.10403 +    protected DFA67 dfa67 = new DFA67(this);
19.10404 +    protected DFA72 dfa72 = new DFA72(this);
19.10405 +    static final String DFA46_eotS =
19.10406 +        "\14\uffff";
19.10407 +    static final String DFA46_eofS =
19.10408 +        "\14\uffff";
19.10409 +    static final String DFA46_minS =
19.10410 +        "\3\40\5\uffff\2\52\2\uffff";
19.10411 +    static final String DFA46_maxS =
19.10412 +        "\3\134\5\uffff\2\134\2\uffff";
19.10413 +    static final String DFA46_acceptS =
19.10414 +        "\3\uffff\1\3\1\4\1\5\1\6\1\7\2\uffff\1\1\1\2";
19.10415 +    static final String DFA46_specialS =
19.10416 +        "\14\uffff}>";
19.10417 +    static final String[] DFA46_transitionS = {
19.10418 +            "\1\6\4\uffff\1\7\4\uffff\1\1\2\3\1\5\3\uffff\1\2\40\uffff\1"+
19.10419 +            "\4\6\uffff\1\3\2\uffff\1\3",
19.10420 +            "\1\3\4\uffff\4\3\1\uffff\4\3\2\uffff\2\3\23\uffff\1\3\1\uffff"+
19.10421 +            "\1\10\2\uffff\1\3\7\uffff\3\3\2\uffff\1\11\1\uffff\4\3",
19.10422 +            "\1\3\4\uffff\4\3\1\uffff\4\3\2\uffff\2\3\23\uffff\1\3\1\uffff"+
19.10423 +            "\1\10\2\uffff\1\3\7\uffff\3\3\2\uffff\1\11\1\uffff\4\3",
19.10424 +            "",
19.10425 +            "",
19.10426 +            "",
19.10427 +            "",
19.10428 +            "",
19.10429 +            "\3\12\4\uffff\1\12\40\uffff\1\13\6\uffff\1\12\2\uffff\1\12",
19.10430 +            "\3\12\4\uffff\1\12\40\uffff\1\13\6\uffff\1\12\2\uffff\1\12",
19.10431 +            "",
19.10432 +            ""
19.10433 +    };
19.10434 +
19.10435 +    static final short[] DFA46_eot = DFA.unpackEncodedString(DFA46_eotS);
19.10436 +    static final short[] DFA46_eof = DFA.unpackEncodedString(DFA46_eofS);
19.10437 +    static final char[] DFA46_min = DFA.unpackEncodedStringToUnsignedChars(DFA46_minS);
19.10438 +    static final char[] DFA46_max = DFA.unpackEncodedStringToUnsignedChars(DFA46_maxS);
19.10439 +    static final short[] DFA46_accept = DFA.unpackEncodedString(DFA46_acceptS);
19.10440 +    static final short[] DFA46_special = DFA.unpackEncodedString(DFA46_specialS);
19.10441 +    static final short[][] DFA46_transition;
19.10442 +
19.10443 +    static {
19.10444 +        int numStates = DFA46_transitionS.length;
19.10445 +        DFA46_transition = new short[numStates][];
19.10446 +        for (int i=0; i<numStates; i++) {
19.10447 +            DFA46_transition[i] = DFA.unpackEncodedString(DFA46_transitionS[i]);
19.10448 +        }
19.10449 +    }
19.10450 +
19.10451 +    class DFA46 extends DFA {
19.10452 +
19.10453 +        public DFA46(BaseRecognizer recognizer) {
19.10454 +            this.recognizer = recognizer;
19.10455 +            this.decisionNumber = 46;
19.10456 +            this.eot = DFA46_eot;
19.10457 +            this.eof = DFA46_eof;
19.10458 +            this.min = DFA46_min;
19.10459 +            this.max = DFA46_max;
19.10460 +            this.accept = DFA46_accept;
19.10461 +            this.special = DFA46_special;
19.10462 +            this.transition = DFA46_transition;
19.10463 +        }
19.10464 +        public String getDescription() {
19.10465 +            return "233:1: elementNoOptionSpec : ( id (labelOp= '=' | labelOp= '+=' ) atom ( ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] ^( $labelOp id atom ) EOA[\"EOA\"] ) EOB[\"EOB\"] ) ) | -> ^( $labelOp id atom ) ) | id (labelOp= '=' | labelOp= '+=' ) block ( ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] ^( $labelOp id block ) EOA[\"EOA\"] ) EOB[\"EOB\"] ) ) | -> ^( $labelOp id block ) ) | atom ( ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] atom EOA[\"EOA\"] ) EOB[\"EOB\"] ) ) | -> atom ) | ebnf | ACTION | SEMPRED ( '=>' -> GATED_SEMPRED | -> SEMPRED ) | treeSpec ( ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] treeSpec EOA[\"EOA\"] ) EOB[\"EOB\"] ) ) | -> treeSpec ) );";
19.10466 +        }
19.10467 +        public void error(NoViableAltException nvae) {
19.10468 +            dbg.recognitionException(nvae);
19.10469 +        }
19.10470 +    }
19.10471 +    static final String DFA64_eotS =
19.10472 +        "\15\uffff";
19.10473 +    static final String DFA64_eofS =
19.10474 +        "\15\uffff";
19.10475 +    static final String DFA64_minS =
19.10476 +        "\4\45\1\0\2\uffff\2\45\1\uffff\2\45\1\112";
19.10477 +    static final String DFA64_maxS =
19.10478 +        "\4\135\1\0\2\uffff\2\135\1\uffff\2\135\1\133";
19.10479 +    static final String DFA64_acceptS =
19.10480 +        "\5\uffff\1\2\1\3\2\uffff\1\1\3\uffff";
19.10481 +    static final String DFA64_specialS =
19.10482 +        "\4\uffff\1\0\10\uffff}>";
19.10483 +    static final String[] DFA64_transitionS = {
19.10484 +            "\1\5\2\uffff\1\6\1\uffff\1\1\2\5\1\4\3\uffff\1\2\23\uffff\1"+
19.10485 +            "\6\14\uffff\1\3\2\6\10\uffff\1\5",
19.10486 +            "\1\5\2\uffff\1\5\1\uffff\4\5\2\uffff\2\5\23\uffff\1\5\4\uffff"+
19.10487 +            "\1\5\7\uffff\1\7\2\5\5\uffff\2\5\1\uffff\1\5",
19.10488 +            "\1\5\2\uffff\1\5\1\uffff\4\5\3\uffff\1\5\23\uffff\1\5\4\uffff"+
19.10489 +            "\1\5\7\uffff\1\7\2\5\5\uffff\2\5\1\uffff\1\5",
19.10490 +            "\1\5\4\uffff\3\5\1\10\3\uffff\1\5\40\uffff\1\5\12\uffff\1\5",
19.10491 +            "\1\uffff",
19.10492 +            "",
19.10493 +            "",
19.10494 +            "\1\5\4\uffff\1\12\3\5\3\uffff\1\13\40\uffff\1\5\1\uffff\1\11"+
19.10495 +            "\10\uffff\1\5",
19.10496 +            "\1\5\4\uffff\4\5\3\uffff\1\5\30\uffff\1\5\7\uffff\1\5\1\uffff"+
19.10497 +            "\1\14\5\uffff\2\5\1\uffff\1\5",
19.10498 +            "",
19.10499 +            "\1\5\4\uffff\4\5\2\uffff\2\5\25\uffff\1\11\2\uffff\1\5\7\uffff"+
19.10500 +            "\1\5\1\uffff\1\5\5\uffff\2\5\1\uffff\1\5",
19.10501 +            "\1\5\4\uffff\4\5\3\uffff\1\5\25\uffff\1\11\2\uffff\1\5\7\uffff"+
19.10502 +            "\1\5\1\uffff\1\5\5\uffff\2\5\1\uffff\1\5",
19.10503 +            "\1\5\7\uffff\1\11\7\uffff\2\5"
19.10504 +    };
19.10505 +
19.10506 +    static final short[] DFA64_eot = DFA.unpackEncodedString(DFA64_eotS);
19.10507 +    static final short[] DFA64_eof = DFA.unpackEncodedString(DFA64_eofS);
19.10508 +    static final char[] DFA64_min = DFA.unpackEncodedStringToUnsignedChars(DFA64_minS);
19.10509 +    static final char[] DFA64_max = DFA.unpackEncodedStringToUnsignedChars(DFA64_maxS);
19.10510 +    static final short[] DFA64_accept = DFA.unpackEncodedString(DFA64_acceptS);
19.10511 +    static final short[] DFA64_special = DFA.unpackEncodedString(DFA64_specialS);
19.10512 +    static final short[][] DFA64_transition;
19.10513 +
19.10514 +    static {
19.10515 +        int numStates = DFA64_transitionS.length;
19.10516 +        DFA64_transition = new short[numStates][];
19.10517 +        for (int i=0; i<numStates; i++) {
19.10518 +            DFA64_transition[i] = DFA.unpackEncodedString(DFA64_transitionS[i]);
19.10519 +        }
19.10520 +    }
19.10521 +
19.10522 +    class DFA64 extends DFA {
19.10523 +
19.10524 +        public DFA64(BaseRecognizer recognizer) {
19.10525 +            this.recognizer = recognizer;
19.10526 +            this.decisionNumber = 64;
19.10527 +            this.eot = DFA64_eot;
19.10528 +            this.eof = DFA64_eof;
19.10529 +            this.min = DFA64_min;
19.10530 +            this.max = DFA64_max;
19.10531 +            this.accept = DFA64_accept;
19.10532 +            this.special = DFA64_special;
19.10533 +            this.transition = DFA64_transition;
19.10534 +        }
19.10535 +        public String getDescription() {
19.10536 +            return "348:1: rewrite_alternative options {backtrack=true; } : ( rewrite_template | rewrite_tree_alternative | -> ^( ALT[\"ALT\"] EPSILON[\"EPSILON\"] EOA[\"EOA\"] ) );";
19.10537 +        }
19.10538 +        public void error(NoViableAltException nvae) {
19.10539 +            dbg.recognitionException(nvae);
19.10540 +        }
19.10541 +        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
19.10542 +            TokenStream input = (TokenStream)_input;
19.10543 +        	int _s = s;
19.10544 +            switch ( s ) {
19.10545 +                    case 0 : 
19.10546 +                        int LA64_4 = input.LA(1);
19.10547 +
19.10548 +                         
19.10549 +                        int index64_4 = input.index();
19.10550 +                        input.rewind();
19.10551 +                        s = -1;
19.10552 +                        if ( (synpred1_ANTLRv3()) ) {s = 9;}
19.10553 +
19.10554 +                        else if ( (synpred2_ANTLRv3()) ) {s = 5;}
19.10555 +
19.10556 +                         
19.10557 +                        input.seek(index64_4);
19.10558 +                        if ( s>=0 ) return s;
19.10559 +                        break;
19.10560 +            }
19.10561 +            if (state.backtracking>0) {state.failed=true; return -1;}
19.10562 +            NoViableAltException nvae =
19.10563 +                new NoViableAltException(getDescription(), 64, _s, input);
19.10564 +            error(nvae);
19.10565 +            throw nvae;
19.10566 +        }
19.10567 +    }
19.10568 +    static final String DFA67_eotS =
19.10569 +        "\16\uffff";
19.10570 +    static final String DFA67_eofS =
19.10571 +        "\1\uffff\4\11\1\uffff\1\11\4\uffff\3\11";
19.10572 +    static final String DFA67_minS =
19.10573 +        "\5\45\1\52\1\45\4\uffff\3\45";
19.10574 +    static final String DFA67_maxS =
19.10575 +        "\5\135\1\61\1\135\4\uffff\3\135";
19.10576 +    static final String DFA67_acceptS =
19.10577 +        "\7\uffff\1\3\1\4\1\1\1\2\3\uffff";
19.10578 +    static final String DFA67_specialS =
19.10579 +        "\16\uffff}>";
19.10580 +    static final String[] DFA67_transitionS = {
19.10581 +            "\1\7\4\uffff\1\2\1\4\1\1\1\6\3\uffff\1\3\40\uffff\1\10\12\uffff"+
19.10582 +            "\1\5",
19.10583 +            "\1\11\2\uffff\1\11\1\uffff\4\11\3\uffff\1\11\23\uffff\1\11"+
19.10584 +            "\4\uffff\1\12\7\uffff\3\11\5\uffff\2\12\1\uffff\1\11",
19.10585 +            "\1\11\2\uffff\1\11\1\uffff\4\11\2\uffff\1\13\1\11\23\uffff"+
19.10586 +            "\1\11\4\uffff\1\12\7\uffff\3\11\5\uffff\2\12\1\uffff\1\11",
19.10587 +            "\1\11\2\uffff\1\11\1\uffff\4\11\3\uffff\1\11\23\uffff\1\11"+
19.10588 +            "\4\uffff\1\12\7\uffff\3\11\5\uffff\2\12\1\uffff\1\11",
19.10589 +            "\1\11\2\uffff\1\11\1\uffff\4\11\3\uffff\1\11\23\uffff\1\11"+
19.10590 +            "\4\uffff\1\12\7\uffff\3\11\5\uffff\2\12\1\uffff\1\11",
19.10591 +            "\1\14\6\uffff\1\15",
19.10592 +            "\1\11\2\uffff\1\11\1\uffff\4\11\3\uffff\1\11\23\uffff\1\11"+
19.10593 +            "\4\uffff\1\12\7\uffff\3\11\5\uffff\2\12\1\uffff\1\11",
19.10594 +            "",
19.10595 +            "",
19.10596 +            "",
19.10597 +            "",
19.10598 +            "\1\11\2\uffff\1\11\1\uffff\4\11\3\uffff\1\11\23\uffff\1\11"+
19.10599 +            "\4\uffff\1\12\7\uffff\3\11\5\uffff\2\12\1\uffff\1\11",
19.10600 +            "\1\11\2\uffff\1\11\1\uffff\4\11\3\uffff\1\11\23\uffff\1\11"+
19.10601 +            "\4\uffff\1\12\7\uffff\3\11\5\uffff\2\12\1\uffff\1\11",
19.10602 +            "\1\11\2\uffff\1\11\1\uffff\4\11\3\uffff\1\11\23\uffff\1\11"+
19.10603 +            "\4\uffff\1\12\7\uffff\3\11\5\uffff\2\12\1\uffff\1\11"
19.10604 +    };
19.10605 +
19.10606 +    static final short[] DFA67_eot = DFA.unpackEncodedString(DFA67_eotS);
19.10607 +    static final short[] DFA67_eof = DFA.unpackEncodedString(DFA67_eofS);
19.10608 +    static final char[] DFA67_min = DFA.unpackEncodedStringToUnsignedChars(DFA67_minS);
19.10609 +    static final char[] DFA67_max = DFA.unpackEncodedStringToUnsignedChars(DFA67_maxS);
19.10610 +    static final short[] DFA67_accept = DFA.unpackEncodedString(DFA67_acceptS);
19.10611 +    static final short[] DFA67_special = DFA.unpackEncodedString(DFA67_specialS);
19.10612 +    static final short[][] DFA67_transition;
19.10613 +
19.10614 +    static {
19.10615 +        int numStates = DFA67_transitionS.length;
19.10616 +        DFA67_transition = new short[numStates][];
19.10617 +        for (int i=0; i<numStates; i++) {
19.10618 +            DFA67_transition[i] = DFA.unpackEncodedString(DFA67_transitionS[i]);
19.10619 +        }
19.10620 +    }
19.10621 +
19.10622 +    class DFA67 extends DFA {
19.10623 +
19.10624 +        public DFA67(BaseRecognizer recognizer) {
19.10625 +            this.recognizer = recognizer;
19.10626 +            this.decisionNumber = 67;
19.10627 +            this.eot = DFA67_eot;
19.10628 +            this.eof = DFA67_eof;
19.10629 +            this.min = DFA67_min;
19.10630 +            this.max = DFA67_max;
19.10631 +            this.accept = DFA67_accept;
19.10632 +            this.special = DFA67_special;
19.10633 +            this.transition = DFA67_transition;
19.10634 +        }
19.10635 +        public String getDescription() {
19.10636 +            return "364:1: rewrite_tree_element : ( rewrite_tree_atom | rewrite_tree_atom ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] rewrite_tree_atom EOA[\"EOA\"] ) EOB[\"EOB\"] ) ) | rewrite_tree ( ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[\"BLOCK\"] ^( ALT[\"ALT\"] rewrite_tree EOA[\"EOA\"] ) EOB[\"EOB\"] ) ) | -> rewrite_tree ) | rewrite_tree_ebnf );";
19.10637 +        }
19.10638 +        public void error(NoViableAltException nvae) {
19.10639 +            dbg.recognitionException(nvae);
19.10640 +        }
19.10641 +    }
19.10642 +    static final String DFA72_eotS =
19.10643 +        "\22\uffff";
19.10644 +    static final String DFA72_eofS =
19.10645 +        "\10\uffff\1\13\11\uffff";
19.10646 +    static final String DFA72_minS =
19.10647 +        "\1\52\2\122\2\uffff\1\52\2\107\1\50\1\55\2\uffff\1\121\1\52\2\107"+
19.10648 +        "\1\55\1\121";
19.10649 +    static final String DFA72_maxS =
19.10650 +        "\3\122\2\uffff\1\124\2\107\1\124\1\55\2\uffff\1\124\1\61\2\107\1"+
19.10651 +        "\55\1\124";
19.10652 +    static final String DFA72_acceptS =
19.10653 +        "\3\uffff\1\3\1\4\5\uffff\1\1\1\2\6\uffff";
19.10654 +    static final String DFA72_specialS =
19.10655 +        "\22\uffff}>";
19.10656 +    static final String[] DFA72_transitionS = {
19.10657 +            "\1\1\2\uffff\1\4\3\uffff\1\2\40\uffff\1\3",
19.10658 +            "\1\5",
19.10659 +            "\1\5",
19.10660 +            "",
19.10661 +            "",
19.10662 +            "\1\6\6\uffff\1\7\42\uffff\1\10",
19.10663 +            "\1\11",
19.10664 +            "\1\11",
19.10665 +            "\1\13\11\uffff\2\12\21\uffff\1\13\15\uffff\2\13",
19.10666 +            "\1\14",
19.10667 +            "",
19.10668 +            "",
19.10669 +            "\1\15\2\uffff\1\10",
19.10670 +            "\1\16\6\uffff\1\17",
19.10671 +            "\1\20",
19.10672 +            "\1\20",
19.10673 +            "\1\21",
19.10674 +            "\1\15\2\uffff\1\10"
19.10675 +    };
19.10676 +
19.10677 +    static final short[] DFA72_eot = DFA.unpackEncodedString(DFA72_eotS);
19.10678 +    static final short[] DFA72_eof = DFA.unpackEncodedString(DFA72_eofS);
19.10679 +    static final char[] DFA72_min = DFA.unpackEncodedStringToUnsignedChars(DFA72_minS);
19.10680 +    static final char[] DFA72_max = DFA.unpackEncodedStringToUnsignedChars(DFA72_maxS);
19.10681 +    static final short[] DFA72_accept = DFA.unpackEncodedString(DFA72_acceptS);
19.10682 +    static final short[] DFA72_special = DFA.unpackEncodedString(DFA72_specialS);
19.10683 +    static final short[][] DFA72_transition;
19.10684 +
19.10685 +    static {
19.10686 +        int numStates = DFA72_transitionS.length;
19.10687 +        DFA72_transition = new short[numStates][];
19.10688 +        for (int i=0; i<numStates; i++) {
19.10689 +            DFA72_transition[i] = DFA.unpackEncodedString(DFA72_transitionS[i]);
19.10690 +        }
19.10691 +    }
19.10692 +
19.10693 +    class DFA72 extends DFA {
19.10694 +
19.10695 +        public DFA72(BaseRecognizer recognizer) {
19.10696 +            this.recognizer = recognizer;
19.10697 +            this.decisionNumber = 72;
19.10698 +            this.eot = DFA72_eot;
19.10699 +            this.eof = DFA72_eof;
19.10700 +            this.min = DFA72_min;
19.10701 +            this.max = DFA72_max;
19.10702 +            this.accept = DFA72_accept;
19.10703 +            this.special = DFA72_special;
19.10704 +            this.transition = DFA72_transition;
19.10705 +        }
19.10706 +        public String getDescription() {
19.10707 +            return "401:1: rewrite_template : ( id lp= '(' rewrite_template_args ')' (str= DOUBLE_QUOTE_STRING_LITERAL | str= DOUBLE_ANGLE_STRING_LITERAL ) -> ^( TEMPLATE[$lp,\"TEMPLATE\"] id rewrite_template_args $str) | rewrite_template_ref | rewrite_indirect_template_head | ACTION );";
19.10708 +        }
19.10709 +        public void error(NoViableAltException nvae) {
19.10710 +            dbg.recognitionException(nvae);
19.10711 +        }
19.10712 +    }
19.10713 + 
19.10714 +
19.10715 +    public static final BitSet FOLLOW_DOC_COMMENT_in_grammarDef343 = new BitSet(new long[]{0x0000000000000000L,0x000000000000001EL});
19.10716 +    public static final BitSet FOLLOW_65_in_grammarDef353 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
19.10717 +    public static final BitSet FOLLOW_66_in_grammarDef371 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
19.10718 +    public static final BitSet FOLLOW_67_in_grammarDef387 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
19.10719 +    public static final BitSet FOLLOW_68_in_grammarDef428 = new BitSet(new long[]{0x0002040000000000L});
19.10720 +    public static final BitSet FOLLOW_id_in_grammarDef430 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
19.10721 +    public static final BitSet FOLLOW_69_in_grammarDef432 = new BitSet(new long[]{0x0002461080000010L,0x0000000000003900L});
19.10722 +    public static final BitSet FOLLOW_optionsSpec_in_grammarDef434 = new BitSet(new long[]{0x0002461080000010L,0x0000000000003900L});
19.10723 +    public static final BitSet FOLLOW_tokensSpec_in_grammarDef437 = new BitSet(new long[]{0x0002461080000010L,0x0000000000003900L});
19.10724 +    public static final BitSet FOLLOW_attrScope_in_grammarDef440 = new BitSet(new long[]{0x0002461080000010L,0x0000000000003900L});
19.10725 +    public static final BitSet FOLLOW_action_in_grammarDef443 = new BitSet(new long[]{0x0002461080000010L,0x0000000000003900L});
19.10726 +    public static final BitSet FOLLOW_rule_in_grammarDef451 = new BitSet(new long[]{0x0002461080000010L,0x0000000000003900L});
19.10727 +    public static final BitSet FOLLOW_EOF_in_grammarDef459 = new BitSet(new long[]{0x0000000000000002L});
19.10728 +    public static final BitSet FOLLOW_TOKENS_in_tokensSpec520 = new BitSet(new long[]{0x0000040000000000L});
19.10729 +    public static final BitSet FOLLOW_tokenSpec_in_tokensSpec522 = new BitSet(new long[]{0x0000040000000000L,0x0000000000000040L});
19.10730 +    public static final BitSet FOLLOW_70_in_tokensSpec525 = new BitSet(new long[]{0x0000000000000002L});
19.10731 +    public static final BitSet FOLLOW_TOKEN_REF_in_tokenSpec545 = new BitSet(new long[]{0x0000000000000000L,0x00000000000000A0L});
19.10732 +    public static final BitSet FOLLOW_71_in_tokenSpec551 = new BitSet(new long[]{0x0000180000000000L});
19.10733 +    public static final BitSet FOLLOW_STRING_LITERAL_in_tokenSpec556 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
19.10734 +    public static final BitSet FOLLOW_CHAR_LITERAL_in_tokenSpec560 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
19.10735 +    public static final BitSet FOLLOW_69_in_tokenSpec599 = new BitSet(new long[]{0x0000000000000002L});
19.10736 +    public static final BitSet FOLLOW_SCOPE_in_attrScope610 = new BitSet(new long[]{0x0002040000000000L});
19.10737 +    public static final BitSet FOLLOW_id_in_attrScope612 = new BitSet(new long[]{0x0000200000000000L});
19.10738 +    public static final BitSet FOLLOW_ACTION_in_attrScope614 = new BitSet(new long[]{0x0000000000000002L});
19.10739 +    public static final BitSet FOLLOW_72_in_action637 = new BitSet(new long[]{0x0002040000000000L,0x0000000000000006L});
19.10740 +    public static final BitSet FOLLOW_actionScopeName_in_action640 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
19.10741 +    public static final BitSet FOLLOW_73_in_action642 = new BitSet(new long[]{0x0002040000000000L});
19.10742 +    public static final BitSet FOLLOW_id_in_action646 = new BitSet(new long[]{0x0000200000000000L});
19.10743 +    public static final BitSet FOLLOW_ACTION_in_action648 = new BitSet(new long[]{0x0000000000000002L});
19.10744 +    public static final BitSet FOLLOW_id_in_actionScopeName674 = new BitSet(new long[]{0x0000000000000002L});
19.10745 +    public static final BitSet FOLLOW_65_in_actionScopeName681 = new BitSet(new long[]{0x0000000000000002L});
19.10746 +    public static final BitSet FOLLOW_66_in_actionScopeName698 = new BitSet(new long[]{0x0000000000000002L});
19.10747 +    public static final BitSet FOLLOW_OPTIONS_in_optionsSpec714 = new BitSet(new long[]{0x0002040000000000L});
19.10748 +    public static final BitSet FOLLOW_option_in_optionsSpec717 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
19.10749 +    public static final BitSet FOLLOW_69_in_optionsSpec719 = new BitSet(new long[]{0x0002040000000000L,0x0000000000000040L});
19.10750 +    public static final BitSet FOLLOW_70_in_optionsSpec723 = new BitSet(new long[]{0x0000000000000002L});
19.10751 +    public static final BitSet FOLLOW_id_in_option748 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
19.10752 +    public static final BitSet FOLLOW_71_in_option750 = new BitSet(new long[]{0x00029C0000000000L,0x0000000000000400L});
19.10753 +    public static final BitSet FOLLOW_optionValue_in_option752 = new BitSet(new long[]{0x0000000000000002L});
19.10754 +    public static final BitSet FOLLOW_id_in_optionValue781 = new BitSet(new long[]{0x0000000000000002L});
19.10755 +    public static final BitSet FOLLOW_STRING_LITERAL_in_optionValue791 = new BitSet(new long[]{0x0000000000000002L});
19.10756 +    public static final BitSet FOLLOW_CHAR_LITERAL_in_optionValue801 = new BitSet(new long[]{0x0000000000000002L});
19.10757 +    public static final BitSet FOLLOW_INT_in_optionValue811 = new BitSet(new long[]{0x0000000000000002L});
19.10758 +    public static final BitSet FOLLOW_74_in_optionValue821 = new BitSet(new long[]{0x0000000000000002L});
19.10759 +    public static final BitSet FOLLOW_DOC_COMMENT_in_rule846 = new BitSet(new long[]{0x0002041000000000L,0x0000000000003800L});
19.10760 +    public static final BitSet FOLLOW_75_in_rule856 = new BitSet(new long[]{0x0002040000000000L});
19.10761 +    public static final BitSet FOLLOW_76_in_rule858 = new BitSet(new long[]{0x0002040000000000L});
19.10762 +    public static final BitSet FOLLOW_77_in_rule860 = new BitSet(new long[]{0x0002040000000000L});
19.10763 +    public static final BitSet FOLLOW_FRAGMENT_in_rule862 = new BitSet(new long[]{0x0002040000000000L});
19.10764 +    public static final BitSet FOLLOW_id_in_rule870 = new BitSet(new long[]{0x0001408080000000L,0x000000000001C100L});
19.10765 +    public static final BitSet FOLLOW_BANG_in_rule876 = new BitSet(new long[]{0x0001400080000000L,0x000000000001C100L});
19.10766 +    public static final BitSet FOLLOW_ARG_ACTION_in_rule885 = new BitSet(new long[]{0x0000400080000000L,0x000000000001C100L});
19.10767 +    public static final BitSet FOLLOW_78_in_rule894 = new BitSet(new long[]{0x0001000000000000L});
19.10768 +    public static final BitSet FOLLOW_ARG_ACTION_in_rule898 = new BitSet(new long[]{0x0000400080000000L,0x0000000000018100L});
19.10769 +    public static final BitSet FOLLOW_throwsSpec_in_rule906 = new BitSet(new long[]{0x0000400080000000L,0x0000000000008100L});
19.10770 +    public static final BitSet FOLLOW_optionsSpec_in_rule909 = new BitSet(new long[]{0x0000000080000000L,0x0000000000008100L});
19.10771 +    public static final BitSet FOLLOW_ruleScopeSpec_in_rule912 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008100L});
19.10772 +    public static final BitSet FOLLOW_ruleAction_in_rule915 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008100L});
19.10773 +    public static final BitSet FOLLOW_79_in_rule920 = new BitSet(new long[]{0x00023D2100000000L,0x00000000120C0000L});
19.10774 +    public static final BitSet FOLLOW_altList_in_rule922 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
19.10775 +    public static final BitSet FOLLOW_69_in_rule924 = new BitSet(new long[]{0x0000000000000002L,0x0000000000600000L});
19.10776 +    public static final BitSet FOLLOW_exceptionGroup_in_rule928 = new BitSet(new long[]{0x0000000000000002L});
19.10777 +    public static final BitSet FOLLOW_72_in_ruleAction1030 = new BitSet(new long[]{0x0002040000000000L});
19.10778 +    public static final BitSet FOLLOW_id_in_ruleAction1032 = new BitSet(new long[]{0x0000200000000000L});
19.10779 +    public static final BitSet FOLLOW_ACTION_in_ruleAction1034 = new BitSet(new long[]{0x0000000000000002L});
19.10780 +    public static final BitSet FOLLOW_80_in_throwsSpec1055 = new BitSet(new long[]{0x0002040000000000L});
19.10781 +    public static final BitSet FOLLOW_id_in_throwsSpec1057 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
19.10782 +    public static final BitSet FOLLOW_81_in_throwsSpec1061 = new BitSet(new long[]{0x0002040000000000L});
19.10783 +    public static final BitSet FOLLOW_id_in_throwsSpec1063 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
19.10784 +    public static final BitSet FOLLOW_SCOPE_in_ruleScopeSpec1086 = new BitSet(new long[]{0x0000200000000000L});
19.10785 +    public static final BitSet FOLLOW_ACTION_in_ruleScopeSpec1088 = new BitSet(new long[]{0x0000000000000002L});
19.10786 +    public static final BitSet FOLLOW_SCOPE_in_ruleScopeSpec1101 = new BitSet(new long[]{0x0002040000000000L});
19.10787 +    public static final BitSet FOLLOW_id_in_ruleScopeSpec1103 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020020L});
19.10788 +    public static final BitSet FOLLOW_81_in_ruleScopeSpec1106 = new BitSet(new long[]{0x0002040000000000L});
19.10789 +    public static final BitSet FOLLOW_id_in_ruleScopeSpec1108 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020020L});
19.10790 +    public static final BitSet FOLLOW_69_in_ruleScopeSpec1112 = new BitSet(new long[]{0x0000000000000002L});
19.10791 +    public static final BitSet FOLLOW_SCOPE_in_ruleScopeSpec1126 = new BitSet(new long[]{0x0000200000000000L});
19.10792 +    public static final BitSet FOLLOW_ACTION_in_ruleScopeSpec1128 = new BitSet(new long[]{0x0000000080000000L});
19.10793 +    public static final BitSet FOLLOW_SCOPE_in_ruleScopeSpec1132 = new BitSet(new long[]{0x0002040000000000L});
19.10794 +    public static final BitSet FOLLOW_id_in_ruleScopeSpec1134 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020020L});
19.10795 +    public static final BitSet FOLLOW_81_in_ruleScopeSpec1137 = new BitSet(new long[]{0x0002040000000000L});
19.10796 +    public static final BitSet FOLLOW_id_in_ruleScopeSpec1139 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020020L});
19.10797 +    public static final BitSet FOLLOW_69_in_ruleScopeSpec1143 = new BitSet(new long[]{0x0000000000000002L});
19.10798 +    public static final BitSet FOLLOW_82_in_block1175 = new BitSet(new long[]{0x00027D2100000000L,0x00000000121C8000L});
19.10799 +    public static final BitSet FOLLOW_optionsSpec_in_block1184 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
19.10800 +    public static final BitSet FOLLOW_79_in_block1188 = new BitSet(new long[]{0x00023D2100000000L,0x00000000121C0000L});
19.10801 +    public static final BitSet FOLLOW_alternative_in_block1197 = new BitSet(new long[]{0x0000010000000000L,0x0000000000180000L});
19.10802 +    public static final BitSet FOLLOW_rewrite_in_block1199 = new BitSet(new long[]{0x0000000000000000L,0x0000000000180000L});
19.10803 +    public static final BitSet FOLLOW_83_in_block1203 = new BitSet(new long[]{0x00023D2100000000L,0x00000000121C0000L});
19.10804 +    public static final BitSet FOLLOW_alternative_in_block1207 = new BitSet(new long[]{0x0000010000000000L,0x0000000000180000L});
19.10805 +    public static final BitSet FOLLOW_rewrite_in_block1209 = new BitSet(new long[]{0x0000000000000000L,0x0000000000180000L});
19.10806 +    public static final BitSet FOLLOW_84_in_block1224 = new BitSet(new long[]{0x0000000000000002L});
19.10807 +    public static final BitSet FOLLOW_alternative_in_altList1281 = new BitSet(new long[]{0x0000010000000000L,0x0000000000080000L});
19.10808 +    public static final BitSet FOLLOW_rewrite_in_altList1283 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
19.10809 +    public static final BitSet FOLLOW_83_in_altList1287 = new BitSet(new long[]{0x00023D2100000000L,0x00000000120C0000L});
19.10810 +    public static final BitSet FOLLOW_alternative_in_altList1291 = new BitSet(new long[]{0x0000010000000000L,0x0000000000080000L});
19.10811 +    public static final BitSet FOLLOW_rewrite_in_altList1293 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
19.10812 +    public static final BitSet FOLLOW_element_in_alternative1341 = new BitSet(new long[]{0x00023C2100000002L,0x0000000012040000L});
19.10813 +    public static final BitSet FOLLOW_exceptionHandler_in_exceptionGroup1392 = new BitSet(new long[]{0x0000000000000002L,0x0000000000600000L});
19.10814 +    public static final BitSet FOLLOW_finallyClause_in_exceptionGroup1399 = new BitSet(new long[]{0x0000000000000002L});
19.10815 +    public static final BitSet FOLLOW_finallyClause_in_exceptionGroup1407 = new BitSet(new long[]{0x0000000000000002L});
19.10816 +    public static final BitSet FOLLOW_85_in_exceptionHandler1427 = new BitSet(new long[]{0x0001000000000000L});
19.10817 +    public static final BitSet FOLLOW_ARG_ACTION_in_exceptionHandler1429 = new BitSet(new long[]{0x0000200000000000L});
19.10818 +    public static final BitSet FOLLOW_ACTION_in_exceptionHandler1431 = new BitSet(new long[]{0x0000000000000002L});
19.10819 +    public static final BitSet FOLLOW_86_in_finallyClause1461 = new BitSet(new long[]{0x0000200000000000L});
19.10820 +    public static final BitSet FOLLOW_ACTION_in_finallyClause1463 = new BitSet(new long[]{0x0000000000000002L});
19.10821 +    public static final BitSet FOLLOW_elementNoOptionSpec_in_element1485 = new BitSet(new long[]{0x0000000000000002L});
19.10822 +    public static final BitSet FOLLOW_id_in_elementNoOptionSpec1496 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800080L});
19.10823 +    public static final BitSet FOLLOW_71_in_elementNoOptionSpec1501 = new BitSet(new long[]{0x00021C0000000000L,0x0000000012000000L});
19.10824 +    public static final BitSet FOLLOW_87_in_elementNoOptionSpec1505 = new BitSet(new long[]{0x00021C0000000000L,0x0000000012000000L});
19.10825 +    public static final BitSet FOLLOW_atom_in_elementNoOptionSpec1508 = new BitSet(new long[]{0x0000000000000002L,0x000000000C000400L});
19.10826 +    public static final BitSet FOLLOW_ebnfSuffix_in_elementNoOptionSpec1514 = new BitSet(new long[]{0x0000000000000002L});
19.10827 +    public static final BitSet FOLLOW_id_in_elementNoOptionSpec1573 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800080L});
19.10828 +    public static final BitSet FOLLOW_71_in_elementNoOptionSpec1578 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
19.10829 +    public static final BitSet FOLLOW_87_in_elementNoOptionSpec1582 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
19.10830 +    public static final BitSet FOLLOW_block_in_elementNoOptionSpec1585 = new BitSet(new long[]{0x0000000000000002L,0x000000000C000400L});
19.10831 +    public static final BitSet FOLLOW_ebnfSuffix_in_elementNoOptionSpec1591 = new BitSet(new long[]{0x0000000000000002L});
19.10832 +    public static final BitSet FOLLOW_atom_in_elementNoOptionSpec1650 = new BitSet(new long[]{0x0000000000000002L,0x000000000C000400L});
19.10833 +    public static final BitSet FOLLOW_ebnfSuffix_in_elementNoOptionSpec1656 = new BitSet(new long[]{0x0000000000000002L});
19.10834 +    public static final BitSet FOLLOW_ebnf_in_elementNoOptionSpec1702 = new BitSet(new long[]{0x0000000000000002L});
19.10835 +    public static final BitSet FOLLOW_ACTION_in_elementNoOptionSpec1709 = new BitSet(new long[]{0x0000000000000002L});
19.10836 +    public static final BitSet FOLLOW_SEMPRED_in_elementNoOptionSpec1716 = new BitSet(new long[]{0x0000000000000002L,0x0000000001000000L});
19.10837 +    public static final BitSet FOLLOW_88_in_elementNoOptionSpec1720 = new BitSet(new long[]{0x0000000000000002L});
19.10838 +    public static final BitSet FOLLOW_treeSpec_in_elementNoOptionSpec1739 = new BitSet(new long[]{0x0000000000000002L,0x000000000C000400L});
19.10839 +    public static final BitSet FOLLOW_ebnfSuffix_in_elementNoOptionSpec1745 = new BitSet(new long[]{0x0000000000000002L});
19.10840 +    public static final BitSet FOLLOW_range_in_atom1797 = new BitSet(new long[]{0x000000C000000002L});
19.10841 +    public static final BitSet FOLLOW_ROOT_in_atom1804 = new BitSet(new long[]{0x0000000000000002L});
19.10842 +    public static final BitSet FOLLOW_BANG_in_atom1808 = new BitSet(new long[]{0x0000000000000002L});
19.10843 +    public static final BitSet FOLLOW_terminal_in_atom1836 = new BitSet(new long[]{0x0000000000000002L});
19.10844 +    public static final BitSet FOLLOW_notSet_in_atom1844 = new BitSet(new long[]{0x000000C000000002L});
19.10845 +    public static final BitSet FOLLOW_ROOT_in_atom1851 = new BitSet(new long[]{0x0000000000000002L});
19.10846 +    public static final BitSet FOLLOW_BANG_in_atom1855 = new BitSet(new long[]{0x0000000000000002L});
19.10847 +    public static final BitSet FOLLOW_RULE_REF_in_atom1883 = new BitSet(new long[]{0x000100C000000002L});
19.10848 +    public static final BitSet FOLLOW_ARG_ACTION_in_atom1889 = new BitSet(new long[]{0x000000C000000002L});
19.10849 +    public static final BitSet FOLLOW_ROOT_in_atom1899 = new BitSet(new long[]{0x0000000000000002L});
19.10850 +    public static final BitSet FOLLOW_BANG_in_atom1903 = new BitSet(new long[]{0x0000000000000002L});
19.10851 +    public static final BitSet FOLLOW_89_in_notSet1986 = new BitSet(new long[]{0x00001C0000000000L,0x0000000000040000L});
19.10852 +    public static final BitSet FOLLOW_notTerminal_in_notSet1992 = new BitSet(new long[]{0x0000000000000002L});
19.10853 +    public static final BitSet FOLLOW_block_in_notSet2006 = new BitSet(new long[]{0x0000000000000002L});
19.10854 +    public static final BitSet FOLLOW_TREE_BEGIN_in_treeSpec2030 = new BitSet(new long[]{0x00023C2100000000L,0x0000000012040000L});
19.10855 +    public static final BitSet FOLLOW_element_in_treeSpec2032 = new BitSet(new long[]{0x00023C2100000000L,0x0000000012040000L});
19.10856 +    public static final BitSet FOLLOW_element_in_treeSpec2036 = new BitSet(new long[]{0x00023C2100000000L,0x0000000012140000L});
19.10857 +    public static final BitSet FOLLOW_84_in_treeSpec2041 = new BitSet(new long[]{0x0000000000000002L});
19.10858 +    public static final BitSet FOLLOW_block_in_ebnf2073 = new BitSet(new long[]{0x0000000000000002L,0x000000000D000400L});
19.10859 +    public static final BitSet FOLLOW_90_in_ebnf2081 = new BitSet(new long[]{0x0000000000000002L});
19.10860 +    public static final BitSet FOLLOW_74_in_ebnf2098 = new BitSet(new long[]{0x0000000000000002L});
19.10861 +    public static final BitSet FOLLOW_91_in_ebnf2115 = new BitSet(new long[]{0x0000000000000002L});
19.10862 +    public static final BitSet FOLLOW_88_in_ebnf2132 = new BitSet(new long[]{0x0000000000000002L});
19.10863 +    public static final BitSet FOLLOW_CHAR_LITERAL_in_range2215 = new BitSet(new long[]{0x0000000000002000L});
19.10864 +    public static final BitSet FOLLOW_RANGE_in_range2217 = new BitSet(new long[]{0x0000100000000000L});
19.10865 +    public static final BitSet FOLLOW_CHAR_LITERAL_in_range2221 = new BitSet(new long[]{0x0000000000000002L});
19.10866 +    public static final BitSet FOLLOW_CHAR_LITERAL_in_terminal2252 = new BitSet(new long[]{0x000000C000000002L});
19.10867 +    public static final BitSet FOLLOW_TOKEN_REF_in_terminal2274 = new BitSet(new long[]{0x000100C000000002L});
19.10868 +    public static final BitSet FOLLOW_ARG_ACTION_in_terminal2281 = new BitSet(new long[]{0x000000C000000002L});
19.10869 +    public static final BitSet FOLLOW_STRING_LITERAL_in_terminal2320 = new BitSet(new long[]{0x000000C000000002L});
19.10870 +    public static final BitSet FOLLOW_92_in_terminal2335 = new BitSet(new long[]{0x000000C000000002L});
19.10871 +    public static final BitSet FOLLOW_ROOT_in_terminal2356 = new BitSet(new long[]{0x0000000000000002L});
19.10872 +    public static final BitSet FOLLOW_BANG_in_terminal2377 = new BitSet(new long[]{0x0000000000000002L});
19.10873 +    public static final BitSet FOLLOW_set_in_notTerminal0 = new BitSet(new long[]{0x0000000000000002L});
19.10874 +    public static final BitSet FOLLOW_90_in_ebnfSuffix2437 = new BitSet(new long[]{0x0000000000000002L});
19.10875 +    public static final BitSet FOLLOW_74_in_ebnfSuffix2449 = new BitSet(new long[]{0x0000000000000002L});
19.10876 +    public static final BitSet FOLLOW_91_in_ebnfSuffix2462 = new BitSet(new long[]{0x0000000000000002L});
19.10877 +    public static final BitSet FOLLOW_REWRITE_in_rewrite2491 = new BitSet(new long[]{0x0000000100000000L});
19.10878 +    public static final BitSet FOLLOW_SEMPRED_in_rewrite2495 = new BitSet(new long[]{0x00023D2000000000L,0x0000000020040000L});
19.10879 +    public static final BitSet FOLLOW_rewrite_alternative_in_rewrite2499 = new BitSet(new long[]{0x0000010000000000L});
19.10880 +    public static final BitSet FOLLOW_REWRITE_in_rewrite2507 = new BitSet(new long[]{0x00023C2000000000L,0x0000000020040000L});
19.10881 +    public static final BitSet FOLLOW_rewrite_alternative_in_rewrite2511 = new BitSet(new long[]{0x0000000000000002L});
19.10882 +    public static final BitSet FOLLOW_rewrite_template_in_rewrite_alternative2562 = new BitSet(new long[]{0x0000000000000002L});
19.10883 +    public static final BitSet FOLLOW_rewrite_tree_alternative_in_rewrite_alternative2567 = new BitSet(new long[]{0x0000000000000002L});
19.10884 +    public static final BitSet FOLLOW_82_in_rewrite_tree_block2609 = new BitSet(new long[]{0x00023C2000000000L,0x0000000020040000L});
19.10885 +    public static final BitSet FOLLOW_rewrite_tree_alternative_in_rewrite_tree_block2611 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
19.10886 +    public static final BitSet FOLLOW_84_in_rewrite_tree_block2613 = new BitSet(new long[]{0x0000000000000002L});
19.10887 +    public static final BitSet FOLLOW_rewrite_tree_element_in_rewrite_tree_alternative2647 = new BitSet(new long[]{0x00023C2000000002L,0x0000000020040000L});
19.10888 +    public static final BitSet FOLLOW_rewrite_tree_atom_in_rewrite_tree_element2675 = new BitSet(new long[]{0x0000000000000002L});
19.10889 +    public static final BitSet FOLLOW_rewrite_tree_atom_in_rewrite_tree_element2680 = new BitSet(new long[]{0x0000000000000000L,0x000000000C000400L});
19.10890 +    public static final BitSet FOLLOW_ebnfSuffix_in_rewrite_tree_element2682 = new BitSet(new long[]{0x0000000000000002L});
19.10891 +    public static final BitSet FOLLOW_rewrite_tree_in_rewrite_tree_element2716 = new BitSet(new long[]{0x0000000000000002L,0x000000000C000400L});
19.10892 +    public static final BitSet FOLLOW_ebnfSuffix_in_rewrite_tree_element2722 = new BitSet(new long[]{0x0000000000000002L});
19.10893 +    public static final BitSet FOLLOW_rewrite_tree_ebnf_in_rewrite_tree_element2768 = new BitSet(new long[]{0x0000000000000002L});
19.10894 +    public static final BitSet FOLLOW_CHAR_LITERAL_in_rewrite_tree_atom2784 = new BitSet(new long[]{0x0000000000000002L});
19.10895 +    public static final BitSet FOLLOW_TOKEN_REF_in_rewrite_tree_atom2791 = new BitSet(new long[]{0x0001000000000002L});
19.10896 +    public static final BitSet FOLLOW_ARG_ACTION_in_rewrite_tree_atom2793 = new BitSet(new long[]{0x0000000000000002L});
19.10897 +    public static final BitSet FOLLOW_RULE_REF_in_rewrite_tree_atom2814 = new BitSet(new long[]{0x0000000000000002L});
19.10898 +    public static final BitSet FOLLOW_STRING_LITERAL_in_rewrite_tree_atom2821 = new BitSet(new long[]{0x0000000000000002L});
19.10899 +    public static final BitSet FOLLOW_93_in_rewrite_tree_atom2830 = new BitSet(new long[]{0x0002040000000000L});
19.10900 +    public static final BitSet FOLLOW_id_in_rewrite_tree_atom2832 = new BitSet(new long[]{0x0000000000000002L});
19.10901 +    public static final BitSet FOLLOW_ACTION_in_rewrite_tree_atom2843 = new BitSet(new long[]{0x0000000000000002L});
19.10902 +    public static final BitSet FOLLOW_rewrite_tree_block_in_rewrite_tree_ebnf2864 = new BitSet(new long[]{0x0000000000000000L,0x000000000C000400L});
19.10903 +    public static final BitSet FOLLOW_ebnfSuffix_in_rewrite_tree_ebnf2866 = new BitSet(new long[]{0x0000000000000002L});
19.10904 +    public static final BitSet FOLLOW_TREE_BEGIN_in_rewrite_tree2886 = new BitSet(new long[]{0x00023C0000000000L,0x0000000020000000L});
19.10905 +    public static final BitSet FOLLOW_rewrite_tree_atom_in_rewrite_tree2888 = new BitSet(new long[]{0x00023C2000000000L,0x0000000020140000L});
19.10906 +    public static final BitSet FOLLOW_rewrite_tree_element_in_rewrite_tree2890 = new BitSet(new long[]{0x00023C2000000000L,0x0000000020140000L});
19.10907 +    public static final BitSet FOLLOW_84_in_rewrite_tree2893 = new BitSet(new long[]{0x0000000000000002L});
19.10908 +    public static final BitSet FOLLOW_id_in_rewrite_template2925 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
19.10909 +    public static final BitSet FOLLOW_82_in_rewrite_template2929 = new BitSet(new long[]{0x0002040000000000L,0x0000000000100000L});
19.10910 +    public static final BitSet FOLLOW_rewrite_template_args_in_rewrite_template2931 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
19.10911 +    public static final BitSet FOLLOW_84_in_rewrite_template2933 = new BitSet(new long[]{0x000C000000000000L});
19.10912 +    public static final BitSet FOLLOW_DOUBLE_QUOTE_STRING_LITERAL_in_rewrite_template2941 = new BitSet(new long[]{0x0000000000000002L});
19.10913 +    public static final BitSet FOLLOW_DOUBLE_ANGLE_STRING_LITERAL_in_rewrite_template2947 = new BitSet(new long[]{0x0000000000000002L});
19.10914 +    public static final BitSet FOLLOW_rewrite_template_ref_in_rewrite_template2974 = new BitSet(new long[]{0x0000000000000002L});
19.10915 +    public static final BitSet FOLLOW_rewrite_indirect_template_head_in_rewrite_template2983 = new BitSet(new long[]{0x0000000000000002L});
19.10916 +    public static final BitSet FOLLOW_ACTION_in_rewrite_template2992 = new BitSet(new long[]{0x0000000000000002L});
19.10917 +    public static final BitSet FOLLOW_id_in_rewrite_template_ref3005 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
19.10918 +    public static final BitSet FOLLOW_82_in_rewrite_template_ref3009 = new BitSet(new long[]{0x0002040000000000L,0x0000000000100000L});
19.10919 +    public static final BitSet FOLLOW_rewrite_template_args_in_rewrite_template_ref3011 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
19.10920 +    public static final BitSet FOLLOW_84_in_rewrite_template_ref3013 = new BitSet(new long[]{0x0000000000000002L});
19.10921 +    public static final BitSet FOLLOW_82_in_rewrite_indirect_template_head3041 = new BitSet(new long[]{0x0000200000000000L});
19.10922 +    public static final BitSet FOLLOW_ACTION_in_rewrite_indirect_template_head3043 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
19.10923 +    public static final BitSet FOLLOW_84_in_rewrite_indirect_template_head3045 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
19.10924 +    public static final BitSet FOLLOW_82_in_rewrite_indirect_template_head3047 = new BitSet(new long[]{0x0002040000000000L,0x0000000000100000L});
19.10925 +    public static final BitSet FOLLOW_rewrite_template_args_in_rewrite_indirect_template_head3049 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
19.10926 +    public static final BitSet FOLLOW_84_in_rewrite_indirect_template_head3051 = new BitSet(new long[]{0x0000000000000002L});
19.10927 +    public static final BitSet FOLLOW_rewrite_template_arg_in_rewrite_template_args3075 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
19.10928 +    public static final BitSet FOLLOW_81_in_rewrite_template_args3078 = new BitSet(new long[]{0x0002040000000000L});
19.10929 +    public static final BitSet FOLLOW_rewrite_template_arg_in_rewrite_template_args3080 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
19.10930 +    public static final BitSet FOLLOW_id_in_rewrite_template_arg3113 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
19.10931 +    public static final BitSet FOLLOW_71_in_rewrite_template_arg3115 = new BitSet(new long[]{0x0000200000000000L});
19.10932 +    public static final BitSet FOLLOW_ACTION_in_rewrite_template_arg3117 = new BitSet(new long[]{0x0000000000000002L});
19.10933 +    public static final BitSet FOLLOW_TOKEN_REF_in_id3138 = new BitSet(new long[]{0x0000000000000002L});
19.10934 +    public static final BitSet FOLLOW_RULE_REF_in_id3148 = new BitSet(new long[]{0x0000000000000002L});
19.10935 +    public static final BitSet FOLLOW_rewrite_template_in_synpred1_ANTLRv32562 = new BitSet(new long[]{0x0000000000000002L});
19.10936 +    public static final BitSet FOLLOW_rewrite_tree_alternative_in_synpred2_ANTLRv32567 = new BitSet(new long[]{0x0000000000000002L});
19.10937 +
19.10938 +}
19.10939 \ No newline at end of file
    20.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    20.2 +++ b/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/layer.xml	Fri Jan 11 15:06:14 2013 +0100
    20.3 @@ -0,0 +1,19 @@
    20.4 +<?xml version="1.0" encoding="UTF-8"?>
    20.5 +<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.2//EN" "http://www.netbeans.org/dtds/filesystem-1_2.dtd">
    20.6 +<filesystem>
    20.7 +    <folder name="Editors">
    20.8 +        <folder name="text">
    20.9 +            <folder name="antlr">
   20.10 +                <folder name="FontsColors">
   20.11 +                    <folder name="NetBeans">
   20.12 +                        <folder name="Defaults">
   20.13 +                            <file name="org-netbeans-antlr-editor-coloring.xml" url="fontsColors.xml">
   20.14 +                                <attr name="SystemFileSystem.localizingBundle" stringvalue="org.netbeans.antlr.editor.Bundle"/>
   20.15 +                            </file>
   20.16 +                        </folder>
   20.17 +                    </folder>
   20.18 +                </folder>
   20.19 +            </folder>
   20.20 +        </folder>    
   20.21 +    </folder>
   20.22 +</filesystem>
    21.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.2 +++ b/o.n.antlr.editor/src/org/netbeans/modules/antlr/editor/package-info.java	Fri Jan 11 15:06:14 2013 +0100
    21.3 @@ -0,0 +1,45 @@
    21.4 +/*
    21.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    21.6 + *
    21.7 + * Copyright 2013 Oracle and/or its affiliates. All rights reserved.
    21.8 + *
    21.9 + * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
   21.10 + * Other names may be trademarks of their respective owners.
   21.11 + *
   21.12 + * The contents of this file are subject to the terms of either the GNU
   21.13 + * General Public License Version 2 only ("GPL") or the Common
   21.14 + * Development and Distribution License("CDDL") (collectively, the
   21.15 + * "License"). You may not use this file except in compliance with the
   21.16 + * License. You can obtain a copy of the License at
   21.17 + * http://www.netbeans.org/cddl-gplv2.html
   21.18 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   21.19 + * specific language governing permissions and limitations under the
   21.20 + * License.  When distributing the software, include this License Header
   21.21 + * Notice in each file and include the License file at
   21.22 + * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
   21.23 + * particular file as subject to the "Classpath" exception as provided
   21.24 + * by Oracle in the GPL Version 2 section of the License file that
   21.25 + * accompanied this code. If applicable, add the following below the
   21.26 + * License Header, with the fields enclosed by brackets [] replaced by
   21.27 + * your own identifying information:
   21.28 + * "Portions Copyrighted [year] [name of copyright owner]"
   21.29 + *
   21.30 + * If you wish your version of this file to be governed by only the CDDL
   21.31 + * or only the GPL Version 2, indicate your decision by adding
   21.32 + * "[Contributor] elects to include this software in this distribution
   21.33 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   21.34 + * single choice of license, a recipient has the option to distribute
   21.35 + * your version of this file under either the CDDL, the GPL Version 2 or
   21.36 + * to extend the choice of license to its licensees as provided above.
   21.37 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   21.38 + * Version 2 license, then the option applies only if the new code is
   21.39 + * made subject to such option by the copyright holder.
   21.40 + *
   21.41 + * Contributor(s):
   21.42 + *
   21.43 + * Portions Copyrighted 2013 Sun Microsystems, Inc.
   21.44 + */
   21.45 +@TemplateRegistration(folder = "Other", content = "AnlrTemplate.g")
   21.46 +package org.netbeans.modules.antlr.editor;
   21.47 +
   21.48 +import org.netbeans.api.templates.TemplateRegistration;