remove unnecessary files release74 release74_fcs
authorMasaki Katakai <masaki@netbeans.org>
Mon, 23 Sep 2013 23:46:55 +0900
branchrelease74
changeset 1872bf5fcb42a3eb
parent 1871 f282f6026d78
child 1876 33d544330f49
remove unnecessary files
src/ja/ide/org-netbeans-libs-freemarker/ext/freemarker-2.3.19/freemarker/core/FMParser_ja.html
src/pt_BR/ide/org-netbeans-libs-freemarker/ext/freemarker-2.3.19/freemarker/core/FMParser_pt_BR.html
src/ru/ide/org-netbeans-libs-freemarker/ext/freemarker-2.3.19/freemarker/core/FMParser_ru.html
src/zh_CN/ide/org-netbeans-libs-freemarker/ext/freemarker-2.3.19/freemarker/core/FMParser_zh_CN.html
     1.1 --- a/src/ja/ide/org-netbeans-libs-freemarker/ext/freemarker-2.3.19/freemarker/core/FMParser_ja.html	Mon Sep 23 23:42:13 2013 +0900
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,786 +0,0 @@
     1.4 -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
     1.5 -
     1.6 -
     1.7 -<HTML>
     1.8 -  <HEAD>
     1.9 -<meta http-equiv="content-type" content="text/html; charset=UTF-8">
    1.10 -    <TITLE>FMParserのBNF</TITLE>
    1.11 -  </HEAD>
    1.12 -  <BODY>
    1.13 -   <H1 ALIGN=CENTER>FMParserのBNF</H1>
    1.14 -
    1.15 -   <H2 ALIGN=CENTER>NON-TERMINALS</H2>
    1.16 -      <TABLE>
    1.17 -    <TR><TD><PRE>// Now the actual parsing code, starting
    1.18 -
    1.19 -// with the productions for FreeMarker's
    1.20 -
    1.21 -// expression syntax.
    1.22 -
    1.23 -
    1.24 -/**
    1.25 - * This is the same as OrExpression, since
    1.26 - * the OR is the operator with the lowest
    1.27 - * precedence.
    1.28 - */</PRE></TD></TR>
    1.29 -    <TR>
    1.30 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod1">Expression</a></TD>
    1.31 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    1.32 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    1.33 -    <a HREF="#prod2">OrExpression</a>
    1.34 -       </TD>
    1.35 -    </TR>
    1.36 -    <TR><TD><PRE>/**
    1.37 - * Lowest level expression, a literal, a variable,
    1.38 - * or a possibly more complex expression bounded
    1.39 - * by parentheses.
    1.40 - */</PRE></TD></TR>
    1.41 -    <TR>
    1.42 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod3">PrimaryExpression</a></TD>
    1.43 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    1.44 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    1.45 - ( <a HREF="#prod4">NumberLiteral</a> | <a HREF="#prod5">HashLiteral</a> | <a HREF="#prod6">StringLiteral</a> | <a HREF="#prod7">BooleanLiteral</a> | <a HREF="#prod8">ListLiteral</a> | <a HREF="#prod9">Identifier</a> | <a HREF="#prod10">Parenthesis</a> | <a HREF="#prod11">BuiltinVariable</a> ) ( <a HREF="#prod12">AddSubExpression</a> )*
    1.46 -       </TD>
    1.47 -    </TR>
    1.48 -    <TR><TD><PRE></PRE></TD></TR>
    1.49 -    <TR>
    1.50 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod10">Parenthesis</a></TD>
    1.51 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    1.52 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    1.53 -        &lt;OPEN_PAREN> <a HREF="#prod1">Expression</a> &lt;CLOSE_PAREN>
    1.54 -       </TD>
    1.55 -    </TR>
    1.56 -    <TR><TD><PRE>/**
    1.57 - * A primary expression preceded by zero or
    1.58 - * more unary operators. (The only unary operator we
    1.59 - * currently have is the NOT.)
    1.60 - */</PRE></TD></TR>
    1.61 -    <TR>
    1.62 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod13">UnaryExpression</a></TD>
    1.63 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    1.64 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    1.65 - ( <a HREF="#prod14">UnaryPlusMinusExpression</a> | <a HREF="#prod15">NotExpression</a> | <a HREF="#prod3">PrimaryExpression</a> )      </TD>
    1.66 -    </TR>
    1.67 -    <TR><TD><PRE></PRE></TD></TR>
    1.68 -    <TR>
    1.69 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod15">NotExpression</a></TD>
    1.70 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    1.71 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    1.72 -        ( &lt;EXCLAM> )+ <a HREF="#prod3">PrimaryExpression</a>
    1.73 -       </TD>
    1.74 -    </TR>
    1.75 -    <TR><TD><PRE></PRE></TD></TR>
    1.76 -    <TR>
    1.77 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod14">UnaryPlusMinusExpression</a></TD>
    1.78 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    1.79 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    1.80 - ( &lt;PLUS> | &lt;MINUS> ) <a HREF="#prod3">PrimaryExpression</a>
    1.81 -       </TD>
    1.82 -    </TR>
    1.83 -    <TR><TD><PRE></PRE></TD></TR>
    1.84 -    <TR>
    1.85 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod16">AdditiveExpression</a></TD>
    1.86 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    1.87 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    1.88 -    <a HREF="#prod17">MultiplicativeExpression</a> ( ( ( &lt;PLUS> | &lt;MINUS> ) ) <a HREF="#prod17">MultiplicativeExpression</a> )*
    1.89 -       </TD>
    1.90 -    </TR>
    1.91 -    <TR><TD><PRE>/**
    1.92 - * A unary expression followed by zero or more
    1.93 - * unary expressions with operators in between.
    1.94 - */</PRE></TD></TR>
    1.95 -    <TR>
    1.96 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod17">MultiplicativeExpression</a></TD>
    1.97 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    1.98 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    1.99 -    <a HREF="#prod13">UnaryExpression</a> ( ( ( &lt;TIMES> | &lt;DIVIDE> | &lt;PERCENT> ) ) <a HREF="#prod13">UnaryExpression</a> )*
   1.100 -       </TD>
   1.101 -    </TR>
   1.102 -    <TR><TD><PRE></PRE></TD></TR>
   1.103 -    <TR>
   1.104 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod18">EqualityExpression</a></TD>
   1.105 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.106 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.107 -    <a HREF="#prod19">RelationalExpression</a> ( ( &lt;NOT_EQUALS> | &lt;EQUALS> | &lt;DOUBLE_EQUALS> ) <a HREF="#prod19">RelationalExpression</a> )?
   1.108 -       </TD>
   1.109 -    </TR>
   1.110 -    <TR><TD><PRE></PRE></TD></TR>
   1.111 -    <TR>
   1.112 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod19">RelationalExpression</a></TD>
   1.113 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.114 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.115 -    <a HREF="#prod20">RangeExpression</a> ( ( &lt;NATURAL_GTE> | &lt;ESCAPED_GTE> | &lt;NATURAL_GT> | &lt;ESCAPED_GT> | &lt;LESS_THAN_EQUALS> | &lt;LESS_THAN> ) <a HREF="#prod20">RangeExpression</a> )?
   1.116 -       </TD>
   1.117 -    </TR>
   1.118 -    <TR><TD><PRE></PRE></TD></TR>
   1.119 -    <TR>
   1.120 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod20">RangeExpression</a></TD>
   1.121 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.122 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.123 -    <a HREF="#prod16">AdditiveExpression</a> ( &lt;DOT_DOT> ( <a HREF="#prod16">AdditiveExpression</a> )? )?
   1.124 -       </TD>
   1.125 -    </TR>
   1.126 -    <TR><TD><PRE></PRE></TD></TR>
   1.127 -    <TR>
   1.128 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod21">AndExpression</a></TD>
   1.129 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.130 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.131 -    <a HREF="#prod18">EqualityExpression</a> ( &lt;AND> <a HREF="#prod18">EqualityExpression</a> )*
   1.132 -       </TD>
   1.133 -    </TR>
   1.134 -    <TR><TD><PRE></PRE></TD></TR>
   1.135 -    <TR>
   1.136 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod2">OrExpression</a></TD>
   1.137 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.138 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.139 -    <a HREF="#prod21">AndExpression</a> ( &lt;OR> <a HREF="#prod21">AndExpression</a> )*
   1.140 -       </TD>
   1.141 -    </TR>
   1.142 -    <TR><TD><PRE></PRE></TD></TR>
   1.143 -    <TR>
   1.144 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod8">ListLiteral</a></TD>
   1.145 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.146 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.147 -        &lt;OPEN_BRACKET> <a HREF="#prod22">PositionalArgs</a> &lt;CLOSE_BRACKET>
   1.148 -       </TD>
   1.149 -    </TR>
   1.150 -    <TR><TD><PRE></PRE></TD></TR>
   1.151 -    <TR>
   1.152 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod4">NumberLiteral</a></TD>
   1.153 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.154 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.155 - ( &lt;INTEGER> | &lt;DECIMAL> )      </TD>
   1.156 -    </TR>
   1.157 -    <TR><TD><PRE></PRE></TD></TR>
   1.158 -    <TR>
   1.159 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod9">Identifier</a></TD>
   1.160 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.161 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.162 -        &lt;ID>
   1.163 -       </TD>
   1.164 -    </TR>
   1.165 -    <TR><TD><PRE></PRE></TD></TR>
   1.166 -    <TR>
   1.167 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod23">IdentifierOrStringLiteral</a></TD>
   1.168 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.169 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.170 - ( <a HREF="#prod9">Identifier</a> | <a HREF="#prod6">StringLiteral</a> )      </TD>
   1.171 -    </TR>
   1.172 -    <TR><TD><PRE></PRE></TD></TR>
   1.173 -    <TR>
   1.174 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod11">BuiltinVariable</a></TD>
   1.175 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.176 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.177 -        &lt;DOT> &lt;ID>
   1.178 -       </TD>
   1.179 -    </TR>
   1.180 -    <TR><TD><PRE>/**
   1.181 - * Production that builds up an expression
   1.182 - * using the dot or dynamic key name
   1.183 - * or the args list if this is a method invocation.
   1.184 - */</PRE></TD></TR>
   1.185 -    <TR>
   1.186 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod12">AddSubExpression</a></TD>
   1.187 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.188 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.189 - ( <a HREF="#prod24">DotVariable</a> | <a HREF="#prod25">DynamicKey</a> | <a HREF="#prod26">MethodArgs</a> | <a HREF="#prod27">BuiltIn</a> | <a HREF="#prod28">DefaultTo</a> | <a HREF="#prod29">Exists</a> )      </TD>
   1.190 -    </TR>
   1.191 -    <TR><TD><PRE></PRE></TD></TR>
   1.192 -    <TR>
   1.193 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod28">DefaultTo</a></TD>
   1.194 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.195 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.196 - ( &lt;TERMINATING_EXCLAM> | ( &lt;EXCLAM> ( <a HREF="#prod1">Expression</a> )? ) )      </TD>
   1.197 -    </TR>
   1.198 -    <TR><TD><PRE></PRE></TD></TR>
   1.199 -    <TR>
   1.200 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod29">Exists</a></TD>
   1.201 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.202 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.203 -        &lt;EXISTS>
   1.204 -       </TD>
   1.205 -    </TR>
   1.206 -    <TR><TD><PRE></PRE></TD></TR>
   1.207 -    <TR>
   1.208 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod27">BuiltIn</a></TD>
   1.209 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.210 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.211 -        &lt;BUILT_IN> &lt;ID>
   1.212 -       </TD>
   1.213 -    </TR>
   1.214 -    <TR><TD><PRE>/**
   1.215 - * production for when a key is specified by &lt;DOT&gt; + keyname
   1.216 - */</PRE></TD></TR>
   1.217 -    <TR>
   1.218 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod24">DotVariable</a></TD>
   1.219 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.220 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.221 -        &lt;DOT> ( &lt;ID> | &lt;TIMES> | &lt;DOUBLE_STAR> | ( &lt;LESS_THAN> | &lt;LESS_THAN_EQUALS> | &lt;ESCAPED_GT> | &lt;ESCAPED_GTE> | &lt;FALSE> | &lt;TRUE> | &lt;IN> | &lt;AS> | &lt;USING> ) )      </TD>
   1.222 -    </TR>
   1.223 -    <TR><TD><PRE>/**
   1.224 - * production for when the key is specified
   1.225 - * in brackets.
   1.226 - */</PRE></TD></TR>
   1.227 -    <TR>
   1.228 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod25">DynamicKey</a></TD>
   1.229 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.230 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.231 -        &lt;OPEN_BRACKET> <a HREF="#prod1">Expression</a> &lt;CLOSE_BRACKET>
   1.232 -       </TD>
   1.233 -    </TR>
   1.234 -    <TR><TD><PRE>/**
   1.235 - * production for an arglist part of a method invocation.
   1.236 - */</PRE></TD></TR>
   1.237 -    <TR>
   1.238 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod26">MethodArgs</a></TD>
   1.239 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.240 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.241 -        &lt;OPEN_PAREN> <a HREF="#prod22">PositionalArgs</a> &lt;CLOSE_PAREN>
   1.242 -       </TD>
   1.243 -    </TR>
   1.244 -    <TR><TD><PRE></PRE></TD></TR>
   1.245 -    <TR>
   1.246 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod6">StringLiteral</a></TD>
   1.247 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.248 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.249 - ( &lt;STRING_LITERAL> | &lt;RAW_STRING> )      </TD>
   1.250 -    </TR>
   1.251 -    <TR><TD><PRE></PRE></TD></TR>
   1.252 -    <TR>
   1.253 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod7">BooleanLiteral</a></TD>
   1.254 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.255 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.256 - ( &lt;FALSE> | &lt;TRUE> )      </TD>
   1.257 -    </TR>
   1.258 -    <TR><TD><PRE></PRE></TD></TR>
   1.259 -    <TR>
   1.260 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod5">HashLiteral</a></TD>
   1.261 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.262 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.263 -        &lt;OPEN_BRACE> ( <a HREF="#prod1">Expression</a> ( &lt;COMMA> | &lt;COLON> ) <a HREF="#prod1">Expression</a> ( &lt;COMMA> <a HREF="#prod1">Expression</a> ( &lt;COMMA> | &lt;COLON> ) <a HREF="#prod1">Expression</a> )* )? &lt;CLOSE_BRACE>
   1.264 -       </TD>
   1.265 -    </TR>
   1.266 -    <TR><TD><PRE>/**
   1.267 - * A production representing the ${...}
   1.268 - * that outputs a variable.
   1.269 - */</PRE></TD></TR>
   1.270 -    <TR>
   1.271 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod30">StringOutput</a></TD>
   1.272 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.273 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.274 -        &lt;OUTPUT_ESCAPE> <a HREF="#prod1">Expression</a> &lt;CLOSE_BRACE>
   1.275 -       </TD>
   1.276 -    </TR>
   1.277 -    <TR><TD><PRE></PRE></TD></TR>
   1.278 -    <TR>
   1.279 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod31">NumericalOutput</a></TD>
   1.280 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.281 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.282 -        &lt;NUMERICAL_ESCAPE> <a HREF="#prod1">Expression</a> ( &lt;SEMICOLON> &lt;ID> )? &lt;CLOSE_BRACE>
   1.283 -       </TD>
   1.284 -    </TR>
   1.285 -    <TR><TD><PRE></PRE></TD></TR>
   1.286 -    <TR>
   1.287 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod32">If</a></TD>
   1.288 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.289 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.290 -        &lt;IF> <a HREF="#prod1">Expression</a> &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> ( &lt;ELSE_IF> <a HREF="#prod1">Expression</a> <a HREF="#prod34">LooseDirectiveEnd</a> <a HREF="#prod33">OptionalBlock</a> )* ( &lt;ELSE> <a HREF="#prod33">OptionalBlock</a> )? &lt;END_IF>
   1.291 -       </TD>
   1.292 -    </TR>
   1.293 -    <TR><TD><PRE></PRE></TD></TR>
   1.294 -    <TR>
   1.295 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod35">Attempt</a></TD>
   1.296 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.297 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.298 -        &lt;ATTEMPT> <a HREF="#prod33">OptionalBlock</a> <a HREF="#prod36">Recover</a> ( &lt;END_RECOVER> | &lt;END_ATTEMPT> )      </TD>
   1.299 -    </TR>
   1.300 -    <TR><TD><PRE></PRE></TD></TR>
   1.301 -    <TR>
   1.302 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod36">Recover</a></TD>
   1.303 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.304 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.305 -        &lt;RECOVER> <a HREF="#prod33">OptionalBlock</a>
   1.306 -       </TD>
   1.307 -    </TR>
   1.308 -    <TR><TD><PRE></PRE></TD></TR>
   1.309 -    <TR>
   1.310 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod37">List</a></TD>
   1.311 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.312 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.313 -        &lt;LIST> <a HREF="#prod1">Expression</a> &lt;AS> &lt;ID> &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> &lt;END_LIST>
   1.314 -       </TD>
   1.315 -    </TR>
   1.316 -    <TR><TD><PRE></PRE></TD></TR>
   1.317 -    <TR>
   1.318 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod38">ForEach</a></TD>
   1.319 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.320 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.321 -        &lt;FOREACH> &lt;ID> &lt;IN> <a HREF="#prod1">Expression</a> &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> &lt;END_FOREACH>
   1.322 -       </TD>
   1.323 -    </TR>
   1.324 -    <TR><TD><PRE></PRE></TD></TR>
   1.325 -    <TR>
   1.326 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod39">Visit</a></TD>
   1.327 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.328 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.329 -        &lt;VISIT> <a HREF="#prod1">Expression</a> ( &lt;USING> <a HREF="#prod1">Expression</a> )? <a HREF="#prod34">LooseDirectiveEnd</a>
   1.330 -       </TD>
   1.331 -    </TR>
   1.332 -    <TR><TD><PRE></PRE></TD></TR>
   1.333 -    <TR>
   1.334 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod40">Recurse</a></TD>
   1.335 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.336 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.337 - ( &lt;SIMPLE_RECURSE> | ( &lt;RECURSE> ( <a HREF="#prod1">Expression</a> )? ( &lt;USING> <a HREF="#prod1">Expression</a> )? <a HREF="#prod34">LooseDirectiveEnd</a> ) )      </TD>
   1.338 -    </TR>
   1.339 -    <TR><TD><PRE></PRE></TD></TR>
   1.340 -    <TR>
   1.341 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod41">FallBack</a></TD>
   1.342 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.343 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.344 -        &lt;FALLBACK>
   1.345 -       </TD>
   1.346 -    </TR>
   1.347 -    <TR><TD><PRE>/**
   1.348 - * Production used to break out of a loop or a switch block.
   1.349 - */</PRE></TD></TR>
   1.350 -    <TR>
   1.351 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod42">Break</a></TD>
   1.352 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.353 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.354 -        &lt;BREAK>
   1.355 -       </TD>
   1.356 -    </TR>
   1.357 -    <TR><TD><PRE>/**
   1.358 - * Production used to jump out of a macro.
   1.359 - * The stop instruction terminates the rendering of the template.
   1.360 - */</PRE></TD></TR>
   1.361 -    <TR>
   1.362 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod43">Return</a></TD>
   1.363 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.364 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.365 - ( &lt;SIMPLE_RETURN> | &lt;RETURN> <a HREF="#prod1">Expression</a> <a HREF="#prod34">LooseDirectiveEnd</a> )      </TD>
   1.366 -    </TR>
   1.367 -    <TR><TD><PRE></PRE></TD></TR>
   1.368 -    <TR>
   1.369 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod44">Stop</a></TD>
   1.370 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.371 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.372 - ( &lt;HALT> | &lt;STOP> <a HREF="#prod1">Expression</a> <a HREF="#prod34">LooseDirectiveEnd</a> )      </TD>
   1.373 -    </TR>
   1.374 -    <TR><TD><PRE></PRE></TD></TR>
   1.375 -    <TR>
   1.376 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod45">Nested</a></TD>
   1.377 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.378 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.379 - ( ( &lt;SIMPLE_NESTED> )| ( &lt;NESTED> <a HREF="#prod22">PositionalArgs</a> <a HREF="#prod34">LooseDirectiveEnd</a> ) )      </TD>
   1.380 -    </TR>
   1.381 -    <TR><TD><PRE></PRE></TD></TR>
   1.382 -    <TR>
   1.383 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod46">Flush</a></TD>
   1.384 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.385 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.386 -        &lt;FLUSH>
   1.387 -       </TD>
   1.388 -    </TR>
   1.389 -    <TR><TD><PRE></PRE></TD></TR>
   1.390 -    <TR>
   1.391 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod47">Trim</a></TD>
   1.392 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.393 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.394 - ( &lt;TRIM> | &lt;LTRIM> | &lt;RTRIM> | &lt;NOTRIM> )      </TD>
   1.395 -    </TR>
   1.396 -    <TR><TD><PRE></PRE></TD></TR>
   1.397 -    <TR>
   1.398 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod48">Assign</a></TD>
   1.399 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.400 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.401 - ( &lt;ASSIGN> | &lt;GLOBALASSIGN> | &lt;LOCALASSIGN> ) <a HREF="#prod23">IdentifierOrStringLiteral</a> ( ( &lt;EQUALS> <a HREF="#prod1">Expression</a> ( ( &lt;COMMA> )? <a HREF="#prod23">IdentifierOrStringLiteral</a> &lt;EQUALS> <a HREF="#prod1">Expression</a> )* ( &lt;IN> <a HREF="#prod1">Expression</a> )? <a HREF="#prod34">LooseDirectiveEnd</a> )| ( ( &lt;IN> <a HREF="#prod1">Expression</a> )? &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> ( &lt;END_LOCAL> | &lt;END_ASSIGN> | &lt;END_GLOBAL> ) ) )     </TD>
   1.402 -    </TR>
   1.403 -    <TR><TD><PRE></PRE></TD></TR>
   1.404 -    <TR>
   1.405 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod49">Include</a></TD>
   1.406 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.407 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.408 -        &lt;INCLUDE> <a HREF="#prod1">Expression</a> ( &lt;SEMICOLON> )? ( &lt;ID> &lt;EQUALS> <a HREF="#prod1">Expression</a> )* <a HREF="#prod34">LooseDirectiveEnd</a>
   1.409 -       </TD>
   1.410 -    </TR>
   1.411 -    <TR><TD><PRE></PRE></TD></TR>
   1.412 -    <TR>
   1.413 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod50">Import</a></TD>
   1.414 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.415 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.416 -        &lt;IMPORT> <a HREF="#prod1">Expression</a> &lt;AS> &lt;ID> <a HREF="#prod34">LooseDirectiveEnd</a>
   1.417 -       </TD>
   1.418 -    </TR>
   1.419 -    <TR><TD><PRE></PRE></TD></TR>
   1.420 -    <TR>
   1.421 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod51">Macro</a></TD>
   1.422 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.423 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.424 - ( &lt;MACRO> | &lt;FUNCTION> ) <a HREF="#prod23">IdentifierOrStringLiteral</a> ( &lt;OPEN_PAREN> )? ( &lt;ID> ( &lt;ELLIPSIS> )? ( &lt;EQUALS> <a HREF="#prod1">Expression</a> )? ( &lt;COMMA> )? )* ( &lt;CLOSE_PAREN> )? &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> ( &lt;END_MACRO> | &lt;END_FUNCTION> )      </TD>
   1.425 -    </TR>
   1.426 -    <TR><TD><PRE></PRE></TD></TR>
   1.427 -    <TR>
   1.428 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod52">Compress</a></TD>
   1.429 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.430 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.431 -        &lt;COMPRESS> <a HREF="#prod33">OptionalBlock</a> &lt;END_COMPRESS>
   1.432 -       </TD>
   1.433 -    </TR>
   1.434 -    <TR><TD><PRE></PRE></TD></TR>
   1.435 -    <TR>
   1.436 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod53">UnifiedMacroTransform</a></TD>
   1.437 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.438 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.439 -        &lt;UNIFIED_CALL> <a HREF="#prod1">Expression</a> ( &lt;TERMINATING_WHITESPACE> )? ( <a HREF="#prod54">NamedArgs</a> | <a HREF="#prod22">PositionalArgs</a> ) ( &lt;SEMICOLON> ( ( &lt;TERMINATING_WHITESPACE> )? &lt;ID> ( ( &lt;TERMINATING_WHITESPACE> )? &lt;COMMA> ( &lt;TERMINATING_WHITESPACE> )? &lt;ID> )* )? )? ( &lt;EMPTY_DIRECTIVE_END> | ( &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> &lt;UNIFIED_CALL_END> ) )      </TD>
   1.440 -    </TR>
   1.441 -    <TR><TD><PRE></PRE></TD></TR>
   1.442 -    <TR>
   1.443 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod55">Call</a></TD>
   1.444 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.445 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.446 -        &lt;CALL> &lt;ID> ( <a HREF="#prod54">NamedArgs</a> | ( ( &lt;OPEN_PAREN> )? <a HREF="#prod22">PositionalArgs</a> ( &lt;CLOSE_PAREN> )? ) ) <a HREF="#prod34">LooseDirectiveEnd</a>
   1.447 -       </TD>
   1.448 -    </TR>
   1.449 -    <TR><TD><PRE></PRE></TD></TR>
   1.450 -    <TR>
   1.451 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod54">NamedArgs</a></TD>
   1.452 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.453 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.454 -        ( &lt;ID> &lt;EQUALS> <a HREF="#prod1">Expression</a> )+
   1.455 -       </TD>
   1.456 -    </TR>
   1.457 -    <TR><TD><PRE></PRE></TD></TR>
   1.458 -    <TR>
   1.459 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod22">PositionalArgs</a></TD>
   1.460 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.461 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.462 -        ( <a HREF="#prod1">Expression</a> ( ( &lt;COMMA> )? <a HREF="#prod1">Expression</a> )* )?
   1.463 -       </TD>
   1.464 -    </TR>
   1.465 -    <TR><TD><PRE></PRE></TD></TR>
   1.466 -    <TR>
   1.467 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod56">Comment</a></TD>
   1.468 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.469 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.470 - ( &lt;COMMENT> | &lt;TERSE_COMMENT> ) <a HREF="#prod57">UnparsedContent</a>
   1.471 -       </TD>
   1.472 -    </TR>
   1.473 -    <TR><TD><PRE></PRE></TD></TR>
   1.474 -    <TR>
   1.475 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod58">NoParse</a></TD>
   1.476 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.477 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.478 -        &lt;NOPARSE> <a HREF="#prod57">UnparsedContent</a>
   1.479 -       </TD>
   1.480 -    </TR>
   1.481 -    <TR><TD><PRE></PRE></TD></TR>
   1.482 -    <TR>
   1.483 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod59">Transform</a></TD>
   1.484 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.485 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.486 -        &lt;TRANSFORM> <a HREF="#prod1">Expression</a> ( &lt;SEMICOLON> )? ( &lt;ID> &lt;EQUALS> <a HREF="#prod1">Expression</a> )* ( &lt;EMPTY_DIRECTIVE_END> | ( &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> &lt;END_TRANSFORM> ) )      </TD>
   1.487 -    </TR>
   1.488 -    <TR><TD><PRE></PRE></TD></TR>
   1.489 -    <TR>
   1.490 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod60">Switch</a></TD>
   1.491 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.492 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.493 -        &lt;SWITCH> <a HREF="#prod1">Expression</a> &lt;DIRECTIVE_END> ( <a HREF="#prod61">Case</a> )* ( &lt;WHITESPACE> )? &lt;END_SWITCH>
   1.494 -       </TD>
   1.495 -    </TR>
   1.496 -    <TR><TD><PRE></PRE></TD></TR>
   1.497 -    <TR>
   1.498 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod61">Case</a></TD>
   1.499 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.500 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.501 -        ( &lt;WHITESPACE> )? ( &lt;CASE> <a HREF="#prod1">Expression</a> &lt;DIRECTIVE_END> | &lt;DEFAUL> ) <a HREF="#prod33">OptionalBlock</a>
   1.502 -       </TD>
   1.503 -    </TR>
   1.504 -    <TR><TD><PRE></PRE></TD></TR>
   1.505 -    <TR>
   1.506 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod62">Escape</a></TD>
   1.507 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.508 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.509 -        &lt;ESCAPE> &lt;ID> &lt;AS> <a HREF="#prod1">Expression</a> &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> &lt;END_ESCAPE>
   1.510 -       </TD>
   1.511 -    </TR>
   1.512 -    <TR><TD><PRE></PRE></TD></TR>
   1.513 -    <TR>
   1.514 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod63">NoEscape</a></TD>
   1.515 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.516 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.517 -        &lt;NOESCAPE> <a HREF="#prod33">OptionalBlock</a> &lt;END_NOESCAPE>
   1.518 -       </TD>
   1.519 -    </TR>
   1.520 -    <TR><TD><PRE>/**
   1.521 - * Production to terminate potentially empty elements. Either a &quot;&gt;&quot; or &quot;/&gt;&quot;
   1.522 - */</PRE></TD></TR>
   1.523 -    <TR>
   1.524 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod34">LooseDirectiveEnd</a></TD>
   1.525 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.526 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.527 - ( &lt;DIRECTIVE_END> | &lt;EMPTY_DIRECTIVE_END> )      </TD>
   1.528 -    </TR>
   1.529 -    <TR><TD><PRE></PRE></TD></TR>
   1.530 -    <TR>
   1.531 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod64">Setting</a></TD>
   1.532 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.533 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.534 -        &lt;SETTING> &lt;ID> &lt;EQUALS> <a HREF="#prod1">Expression</a> <a HREF="#prod34">LooseDirectiveEnd</a>
   1.535 -       </TD>
   1.536 -    </TR>
   1.537 -    <TR><TD><PRE>/**
   1.538 - * A production for FreeMarker directives.
   1.539 - */</PRE></TD></TR>
   1.540 -    <TR>
   1.541 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod65">FreemarkerDirective</a></TD>
   1.542 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.543 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.544 - ( <a HREF="#prod32">If</a> | <a HREF="#prod37">List</a> | <a HREF="#prod38">ForEach</a> | <a HREF="#prod48">Assign</a> | <a HREF="#prod49">Include</a> | <a HREF="#prod50">Import</a> | <a HREF="#prod51">Macro</a> | <a HREF="#prod52">Compress</a> | <a HREF="#prod53">UnifiedMacroTransform</a> | <a HREF="#prod55">Call</a> | <a HREF="#prod56">Comment</a> | <a HREF="#prod58">NoParse</a> | <a HREF="#prod59">Transform</a> | <a HREF="#prod60">Switch</a> | <a HREF="#prod64">Setting</a> | <a HREF="#prod42">Break</a> | <a HREF="#prod43">Return</a> | <a HREF="#prod44">Stop</a> | <a HREF="#prod46">Flush</a> | <a HREF="#prod47">Trim</a> | <a HREF="#prod45">Nested</a> | <a HREF="#prod62">Escape</a> | <a HREF="#prod63">NoEscape</a> | <a HREF="#prod39">Visit</a> | <a HREF="#prod40">Recurse</a> | <a HREF="#prod41">FallBack</a> | <a HREF="#prod35">Attempt</a> )      </TD>
   1.545 -    </TR>
   1.546 -    <TR><TD><PRE>/**
   1.547 - * Production for a block of raw text
   1.548 - * i.e. text that contains no
   1.549 - * FreeMarker directives.
   1.550 - */</PRE></TD></TR>
   1.551 -    <TR>
   1.552 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod66">PCData</a></TD>
   1.553 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.554 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.555 -        ( ( &lt;WHITESPACE> | &lt;PRINTABLE_CHARS> | &lt;FALSE_ALERT> ) )+
   1.556 -       </TD>
   1.557 -    </TR>
   1.558 -    <TR><TD><PRE>/**
   1.559 - * Production for dealing with unparsed content,
   1.560 - * i.e. what is inside a comment or noparse tag.
   1.561 - * It returns the ending token. The content
   1.562 - * of the tag is put in buf.
   1.563 - */</PRE></TD></TR>
   1.564 -    <TR>
   1.565 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod57">UnparsedContent</a></TD>
   1.566 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.567 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.568 -        ( ( &lt;KEEP_GOING> | &lt;MAYBE_END> | &lt;TERSE_COMMENT_END> | &lt;LONE_LESS_THAN_OR_DASH> ) )+
   1.569 -       </TD>
   1.570 -    </TR>
   1.571 -    <TR><TD><PRE></PRE></TD></TR>
   1.572 -    <TR>
   1.573 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod67">Content</a></TD>
   1.574 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.575 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.576 -        ( ( <a HREF="#prod66">PCData</a> | <a HREF="#prod30">StringOutput</a> | <a HREF="#prod31">NumericalOutput</a> | <a HREF="#prod65">FreemarkerDirective</a> ) )+
   1.577 -       </TD>
   1.578 -    </TR>
   1.579 -    <TR><TD><PRE>/**
   1.580 - * A production freemarker text that may contain
   1.581 - * ${...} and #{...} but no directives.
   1.582 - */</PRE></TD></TR>
   1.583 -    <TR>
   1.584 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod68">FreeMarkerText</a></TD>
   1.585 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.586 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.587 -        ( ( <a HREF="#prod66">PCData</a> | <a HREF="#prod30">StringOutput</a> | <a HREF="#prod31">NumericalOutput</a> ) )+
   1.588 -       </TD>
   1.589 -    </TR>
   1.590 -    <TR><TD><PRE>/**
   1.591 - * A production for a block of optional content.
   1.592 - * Returns an empty Text block if there is no
   1.593 - * content.
   1.594 - */</PRE></TD></TR>
   1.595 -    <TR>
   1.596 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod33">OptionalBlock</a></TD>
   1.597 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.598 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.599 -        ( <a HREF="#prod67">Content</a> )?
   1.600 -       </TD>
   1.601 -    </TR>
   1.602 -    <TR><TD><PRE></PRE></TD></TR>
   1.603 -    <TR>
   1.604 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod69">HeaderElement</a></TD>
   1.605 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.606 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.607 -        ( &lt;WHITESPACE> )? ( &lt;TRIVIAL_FTL_HEADER> | ( &lt;FTL_HEADER> ( &lt;ID> &lt;EQUALS> <a HREF="#prod1">Expression</a> )* ) <a HREF="#prod34">LooseDirectiveEnd</a> )     </TD>
   1.608 -    </TR>
   1.609 -    <TR><TD><PRE></PRE></TD></TR>
   1.610 -    <TR>
   1.611 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod70">ParamList</a></TD>
   1.612 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.613 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.614 -        ( <a HREF="#prod9">Identifier</a> &lt;EQUALS> <a HREF="#prod1">Expression</a> ( &lt;COMMA> )? )+
   1.615 -       </TD>
   1.616 -    </TR>
   1.617 -    <TR><TD><PRE>/**
   1.618 - * Root production to be used when parsing
   1.619 - * an entire file.
   1.620 - */</PRE></TD></TR>
   1.621 -    <TR>
   1.622 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod71">Root</a></TD>
   1.623 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   1.624 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   1.625 -        ( <a HREF="#prod69">HeaderElement</a> )? <a HREF="#prod33">OptionalBlock</a> &lt;EOF>
   1.626 -       </TD>
   1.627 -    </TR>
   1.628 -      </TABLE>
   1.629 -<HR>
   1.630 -  <H2 ALIGN=CENTER>TOKENS</H2>
   1.631 -  <TABLE>
   1.632 -<TR><TD><PRE>&lt;DEFAULT&gt; TOKEN : { 
   1.633 -&lt;ATTEMPT: &lt;START_TAG&gt; &quot;attempt&quot; &lt;CLOSE_TAG1&gt;&gt;
   1.634 -|&lt;RECOVER: &lt;START_TAG&gt; &quot;recover&quot; &lt;CLOSE_TAG1&gt;&gt;
   1.635 -|&lt;IF: &lt;START_TAG&gt; &quot;if&quot; &lt;BLANK&gt;&gt;
   1.636 -|&lt;ELSE_IF: &lt;START_TAG&gt; &quot;elseif&quot; &lt;BLANK&gt;&gt;
   1.637 -|&lt;LIST: &lt;START_TAG&gt; &quot;list&quot; &lt;BLANK&gt;&gt;
   1.638 -|&lt;FOREACH: &lt;START_TAG&gt; &quot;foreach&quot; &lt;BLANK&gt;&gt;
   1.639 -|&lt;SWITCH: &lt;START_TAG&gt; &quot;switch&quot; &lt;BLANK&gt;&gt;
   1.640 -|&lt;CASE: &lt;START_TAG&gt; &quot;case&quot; &lt;BLANK&gt;&gt;
   1.641 -|&lt;ASSIGN: &lt;START_TAG&gt; &quot;assign&quot; &lt;BLANK&gt;&gt;
   1.642 -|&lt;GLOBALASSIGN: &lt;START_TAG&gt; &quot;global&quot; &lt;BLANK&gt;&gt;
   1.643 -|&lt;LOCALASSIGN: &lt;START_TAG&gt; &quot;local&quot; &lt;BLANK&gt;&gt;
   1.644 -|&lt;INCLUDE: &lt;START_TAG&gt; &quot;include&quot; &lt;BLANK&gt;&gt;
   1.645 -|&lt;IMPORT: &lt;START_TAG&gt; &quot;import&quot; &lt;BLANK&gt;&gt;
   1.646 -|&lt;FUNCTION: &lt;START_TAG&gt; &quot;function&quot; &lt;BLANK&gt;&gt;
   1.647 -|&lt;MACRO: &lt;START_TAG&gt; &quot;macro&quot; &lt;BLANK&gt;&gt;
   1.648 -|&lt;TRANSFORM: &lt;START_TAG&gt; &quot;transform&quot; &lt;BLANK&gt;&gt;
   1.649 -|&lt;VISIT: &lt;START_TAG&gt; &quot;visit&quot; &lt;BLANK&gt;&gt;
   1.650 -|&lt;STOP: &lt;START_TAG&gt; &quot;stop&quot; &lt;BLANK&gt;&gt;
   1.651 -|&lt;RETURN: &lt;START_TAG&gt; &quot;return&quot; &lt;BLANK&gt;&gt;
   1.652 -|&lt;CALL: &lt;START_TAG&gt; &quot;call&quot; &lt;BLANK&gt;&gt;
   1.653 -|&lt;SETTING: &lt;START_TAG&gt; &quot;setting&quot; &lt;BLANK&gt;&gt;
   1.654 -|&lt;COMPRESS: &lt;START_TAG&gt; &quot;compress&quot; &lt;CLOSE_TAG1&gt;&gt;
   1.655 -|&lt;COMMENT: &lt;START_TAG&gt; &quot;comment&quot; &lt;CLOSE_TAG1&gt;&gt;
   1.656 -|&lt;TERSE_COMMENT: ([&quot;&lt;&quot;,&quot;[&quot;]) &quot;#--&quot;&gt;
   1.657 -|&lt;NOPARSE: &lt;START_TAG&gt; &quot;noparse&quot; &lt;CLOSE_TAG1&gt;&gt;
   1.658 -|&lt;END_IF: &lt;END_TAG&gt; &quot;if&quot; &lt;CLOSE_TAG1&gt;&gt;
   1.659 -|&lt;END_LIST: &lt;END_TAG&gt; &quot;list&quot; &lt;CLOSE_TAG1&gt;&gt;
   1.660 -|&lt;END_RECOVER: &lt;END_TAG&gt; &quot;recover&quot; &lt;CLOSE_TAG1&gt;&gt;
   1.661 -|&lt;END_ATTEMPT: &lt;END_TAG&gt; &quot;attempt&quot; &lt;CLOSE_TAG1&gt;&gt;
   1.662 -|&lt;END_FOREACH: &lt;END_TAG&gt; &quot;foreach&quot; &lt;CLOSE_TAG1&gt;&gt;
   1.663 -|&lt;END_LOCAL: &lt;END_TAG&gt; &quot;local&quot; &lt;CLOSE_TAG1&gt;&gt;
   1.664 -|&lt;END_GLOBAL: &lt;END_TAG&gt; &quot;global&quot; &lt;CLOSE_TAG1&gt;&gt;
   1.665 -|&lt;END_ASSIGN: &lt;END_TAG&gt; &quot;assign&quot; &lt;CLOSE_TAG1&gt;&gt;
   1.666 -|&lt;END_FUNCTION: &lt;END_TAG&gt; &quot;function&quot; &lt;CLOSE_TAG1&gt;&gt;
   1.667 -|&lt;END_MACRO: &lt;END_TAG&gt; &quot;macro&quot; &lt;CLOSE_TAG1&gt;&gt;
   1.668 -|&lt;END_COMPRESS: &lt;END_TAG&gt; &quot;compress&quot; &lt;CLOSE_TAG1&gt;&gt;
   1.669 -|&lt;END_TRANSFORM: &lt;END_TAG&gt; &quot;transform&quot; &lt;CLOSE_TAG1&gt;&gt;
   1.670 -|&lt;END_SWITCH: &lt;END_TAG&gt; &quot;switch&quot; &lt;CLOSE_TAG1&gt;&gt;
   1.671 -|&lt;ELSE: &lt;START_TAG&gt; &quot;else&quot; &lt;CLOSE_TAG2&gt;&gt;
   1.672 -|&lt;BREAK: &lt;START_TAG&gt; &quot;break&quot; &lt;CLOSE_TAG2&gt;&gt;
   1.673 -|&lt;SIMPLE_RETURN: &lt;START_TAG&gt; &quot;return&quot; &lt;CLOSE_TAG2&gt;&gt;
   1.674 -|&lt;HALT: &lt;START_TAG&gt; &quot;stop&quot; &lt;CLOSE_TAG2&gt;&gt;
   1.675 -|&lt;FLUSH: &lt;START_TAG&gt; &quot;flush&quot; &lt;CLOSE_TAG2&gt;&gt;
   1.676 -|&lt;TRIM: &lt;START_TAG&gt; &quot;t&quot; &lt;CLOSE_TAG2&gt;&gt;
   1.677 -|&lt;LTRIM: &lt;START_TAG&gt; &quot;lt&quot; &lt;CLOSE_TAG2&gt;&gt;
   1.678 -|&lt;RTRIM: &lt;START_TAG&gt; &quot;rt&quot; &lt;CLOSE_TAG2&gt;&gt;
   1.679 -|&lt;NOTRIM: &lt;START_TAG&gt; &quot;nt&quot; &lt;CLOSE_TAG2&gt;&gt;
   1.680 -|&lt;DEFAUL: &lt;START_TAG&gt; &quot;default&quot; &lt;CLOSE_TAG1&gt;&gt;
   1.681 -|&lt;SIMPLE_NESTED: &lt;START_TAG&gt; &quot;nested&quot; &lt;CLOSE_TAG2&gt;&gt;
   1.682 -|&lt;NESTED: &lt;START_TAG&gt; &quot;nested&quot; &lt;BLANK&gt;&gt;
   1.683 -|&lt;SIMPLE_RECURSE: &lt;START_TAG&gt; &quot;recurse&quot; &lt;CLOSE_TAG2&gt;&gt;
   1.684 -|&lt;RECURSE: &lt;START_TAG&gt; &quot;recurse&quot; &lt;BLANK&gt;&gt;
   1.685 -|&lt;FALLBACK: &lt;START_TAG&gt; &quot;fallback&quot; &lt;CLOSE_TAG2&gt;&gt;
   1.686 -|&lt;ESCAPE: &lt;START_TAG&gt; &quot;escape&quot; &lt;BLANK&gt;&gt;
   1.687 -|&lt;END_ESCAPE: &lt;END_TAG&gt; &quot;escape&quot; &lt;CLOSE_TAG1&gt;&gt;
   1.688 -|&lt;NOESCAPE: &lt;START_TAG&gt; &quot;noescape&quot; &lt;CLOSE_TAG1&gt;&gt;
   1.689 -|&lt;END_NOESCAPE: &lt;END_TAG&gt; &quot;noescape&quot; &lt;CLOSE_TAG1&gt;&gt;
   1.690 -|&lt;UNIFIED_CALL: &quot;&lt;@&quot; | &quot;[@&quot;&gt;
   1.691 -|&lt;UNIFIED_CALL_END: ([&quot;&lt;&quot;,&quot;[&quot;]) &quot;/@&quot; (&lt;ID&gt; (&quot;.&quot; &lt;ID&gt;)*)? &lt;CLOSE_TAG1&gt;&gt;
   1.692 -|&lt;FTL_HEADER: (&quot;&lt;#ftl&quot; | &quot;[#ftl&quot;) &lt;BLANK&gt;&gt;
   1.693 -|&lt;TRIVIAL_FTL_HEADER: (&quot;&lt;#ftl&quot; | &quot;[#ftl&quot;) (&quot;/&quot;)? ([&quot;&gt;&quot;,&quot;]&quot;])&gt;
   1.694 -|&lt;UNKNOWN_DIRECTIVE: (&quot;[#&quot; | &quot;[/#&quot; | &quot;&lt;#&quot; | &quot;&lt;/#&quot;) ([&quot;A&quot;-&quot;Z&quot;,&quot;_&quot;,&quot;a&quot;-&quot;z&quot;])+&gt;
   1.695 -}
   1.696 -
   1.697 -</PRE></TD></TR><TR><TD><PRE>&lt;DEFAULT, NODIRECTIVE&gt; TOKEN : { 
   1.698 -&lt;WHITESPACE: ([&quot;\t&quot;,&quot;\n&quot;,&quot;\r&quot;,&quot; &quot;])+&gt;
   1.699 -|&lt;PRINTABLE_CHARS: ([&quot;\u0000&quot;-&quot;\b&quot;,&quot;\u000b&quot;-&quot;\f&quot;,&quot;\u000e&quot;-&quot;\u001f&quot;,&quot;!&quot;-&quot;\&quot;&quot;,&quot;%&quot;-&quot;;&quot;,&quot;=&quot;-&quot;Z&quot;,&quot;\\&quot;-&quot;z&quot;,&quot;|&quot;-&quot;\uffff&quot;])+&gt;
   1.700 -|&lt;FALSE_ALERT: [&quot;#&quot;,&quot;$&quot;,&quot;&lt;&quot;,&quot;[&quot;,&quot;{&quot;]&gt;
   1.701 -|&lt;OUTPUT_ESCAPE: &quot;${&quot;&gt;
   1.702 -|&lt;NUMERICAL_ESCAPE: &quot;#{&quot;&gt;
   1.703 -}
   1.704 -
   1.705 -</PRE></TD></TR><TR><TD><PRE>&lt;FM_EXPRESSION, IN_PAREN, NAMED_PARAMETER_EXPRESSION&gt; SKIP : { 
   1.706 -&lt;([&quot;\t&quot;,&quot;\n&quot;,&quot;\r&quot;,&quot; &quot;])+&gt;
   1.707 -|&lt;[&quot;&lt;&quot;,&quot;[&quot;] [&quot;!&quot;,&quot;#&quot;] &quot;--&quot;&gt;
   1.708 -}
   1.709 -
   1.710 -</PRE></TD></TR><TR><TD><PRE>&lt;EXPRESSION_COMMENT&gt; SKIP : { 
   1.711 -&lt;([&quot;\u0000&quot;-&quot;,&quot;,&quot;.&quot;-&quot;=&quot;,&quot;?&quot;-&quot;\\&quot;,&quot;^&quot;-&quot;\uffff&quot;])+&gt;
   1.712 -|&quot;&gt;&quot;
   1.713 -|&quot;]&quot;
   1.714 -|&quot;-&quot;
   1.715 -|&lt;&quot;--&gt;&quot; | &quot;--]&quot;&gt;
   1.716 -}
   1.717 -
   1.718 -</PRE></TD></TR><TR><TD><PRE>&lt;FM_EXPRESSION, IN_PAREN, NO_SPACE_EXPRESSION, NAMED_PARAMETER_EXPRESSION&gt; TOKEN : { 
   1.719 -&lt;STRING_LITERAL: &quot;\&quot;&quot; ([&quot;\u0000&quot;-&quot;!&quot;,&quot;#&quot;-&quot;[&quot;,&quot;]&quot;-&quot;\uffff&quot;] | &lt;ESCAPED_CHAR&gt;)* &quot;\&quot;&quot; | &quot;\'&quot; ([&quot;\u0000&quot;-&quot;&amp;&quot;,&quot;(&quot;-&quot;[&quot;,&quot;]&quot;-&quot;\uffff&quot;] | &lt;ESCAPED_CHAR&gt;)* &quot;\'&quot;&gt;
   1.720 -|&lt;RAW_STRING: &quot;r&quot; (&quot;\&quot;&quot; ([&quot;\u0000&quot;-&quot;!&quot;,&quot;#&quot;-&quot;\uffff&quot;])* &quot;\&quot;&quot; | &quot;\'&quot; ([&quot;\u0000&quot;-&quot;&amp;&quot;,&quot;(&quot;-&quot;\uffff&quot;])* &quot;\'&quot;)&gt;
   1.721 -|&lt;FALSE: &quot;false&quot;&gt;
   1.722 -|&lt;TRUE: &quot;true&quot;&gt;
   1.723 -|&lt;INTEGER: ([&quot;0&quot;-&quot;9&quot;])+&gt;
   1.724 -|&lt;DECIMAL: &lt;INTEGER&gt; &quot;.&quot; &lt;INTEGER&gt;&gt;
   1.725 -|&lt;DOT: &quot;.&quot;&gt;
   1.726 -|&lt;DOT_DOT: &quot;..&quot;&gt;
   1.727 -|&lt;BUILT_IN: &quot;?&quot;&gt;
   1.728 -|&lt;EXISTS: &quot;??&quot;&gt;
   1.729 -|&lt;EQUALS: &quot;=&quot;&gt;
   1.730 -|&lt;DOUBLE_EQUALS: &quot;==&quot;&gt;
   1.731 -|&lt;NOT_EQUALS: &quot;!=&quot;&gt;
   1.732 -|&lt;LESS_THAN: &quot;lt&quot; | &quot;\\lt&quot; | [&quot;&lt;&quot;] | &quot;&amp;lt;&quot;&gt;
   1.733 -|&lt;LESS_THAN_EQUALS: &quot;lte&quot; | &quot;\\lte&quot; | &quot;&lt;=&quot; | &quot;&amp;lt;=&quot;&gt;
   1.734 -|&lt;ESCAPED_GT: &quot;gt&quot; | &quot;\\gt&quot; | &quot;&amp;gt;&quot;&gt;
   1.735 -|&lt;ESCAPED_GTE: &quot;gte&quot; | &quot;\\gte&quot; | &quot;&amp;gt;=&quot;&gt;
   1.736 -|&lt;PLUS: &quot;+&quot;&gt;
   1.737 -|&lt;MINUS: &quot;-&quot;&gt;
   1.738 -|&lt;TIMES: &quot;*&quot;&gt;
   1.739 -|&lt;DOUBLE_STAR: &quot;**&quot;&gt;
   1.740 -|&lt;ELLIPSIS: &quot;...&quot;&gt;
   1.741 -|&lt;DIVIDE: &quot;/&quot;&gt;
   1.742 -|&lt;PERCENT: &quot;%&quot;&gt;
   1.743 -|&lt;AND: [&quot;&amp;&quot;] | &quot;&amp;&amp;&quot;&gt;
   1.744 -|&lt;OR: [&quot;|&quot;] | &quot;||&quot;&gt;
   1.745 -|&lt;EXCLAM: &quot;!&quot;&gt;
   1.746 -|&lt;COMMA: &quot;,&quot;&gt;
   1.747 -|&lt;SEMICOLON: &quot;;&quot;&gt;
   1.748 -|&lt;COLON: &quot;:&quot;&gt;
   1.749 -|&lt;OPEN_BRACKET: &quot;[&quot;&gt;
   1.750 -|&lt;CLOSE_BRACKET: &quot;]&quot;&gt;
   1.751 -|&lt;OPEN_PAREN: &quot;(&quot;&gt;
   1.752 -|&lt;CLOSE_PAREN: &quot;)&quot;&gt;
   1.753 -|&lt;OPEN_BRACE: &quot;{&quot;&gt;
   1.754 -|&lt;CLOSE_BRACE: &quot;}&quot;&gt;
   1.755 -|&lt;IN: &quot;in&quot;&gt;
   1.756 -|&lt;AS: &quot;as&quot;&gt;
   1.757 -|&lt;USING: &quot;using&quot;&gt;
   1.758 -|&lt;ID: &lt;LETTER&gt; ([&quot;$&quot;,&quot;0&quot;-&quot;9&quot;,&quot;@&quot;-&quot;Z&quot;,&quot;_&quot;,&quot;a&quot;-&quot;z&quot;,&quot;\u00c0&quot;-&quot;\u00d6&quot;,&quot;\u00d8&quot;-&quot;\u00f6&quot;,&quot;\u00f8&quot;-&quot;\u00ff&quot;,&quot;\u0100&quot;-&quot;\u1fff&quot;,&quot;\u3040&quot;-&quot;\u318f&quot;,&quot;\u3300&quot;-&quot;\u337f&quot;,&quot;\u3400&quot;-&quot;\u3d2d&quot;,&quot;\u4e00&quot;-&quot;\u9fff&quot;,&quot;\uf900&quot;-&quot;\ufaff&quot;])*&gt;
   1.759 -|}
   1.760 -
   1.761 -</PRE></TD></TR><TR><TD><PRE>&lt;FM_EXPRESSION, NO_SPACE_EXPRESSION, NAMED_PARAMETER_EXPRESSION&gt; TOKEN : { 
   1.762 -&lt;DIRECTIVE_END: &quot;&gt;&quot;&gt;
   1.763 -|&lt;EMPTY_DIRECTIVE_END: &quot;/&gt;&quot; | &quot;/]&quot;&gt;
   1.764 -}
   1.765 -
   1.766 -</PRE></TD></TR><TR><TD><PRE>&lt;IN_PAREN&gt; TOKEN : { 
   1.767 -&lt;NATURAL_GT: &quot;&gt;&quot;&gt;
   1.768 -|&lt;NATURAL_GTE: &quot;&gt;=&quot;&gt;
   1.769 -}
   1.770 -
   1.771 -</PRE></TD></TR><TR><TD><PRE>&lt;NO_SPACE_EXPRESSION&gt; TOKEN : { 
   1.772 -&lt;TERMINATING_WHITESPACE: ([&quot;\t&quot;,&quot;\n&quot;,&quot;\r&quot;,&quot; &quot;])+&gt;
   1.773 -}
   1.774 -
   1.775 -</PRE></TD></TR><TR><TD><PRE>&lt;NAMED_PARAMETER_EXPRESSION&gt; TOKEN : { 
   1.776 -&lt;TERMINATING_EXCLAM: &quot;!&quot; ([&quot;\t&quot;,&quot;\n&quot;,&quot;\r&quot;,&quot; &quot;])+&gt;
   1.777 -}
   1.778 -
   1.779 -</PRE></TD></TR><TR><TD><PRE>&lt;NO_PARSE&gt; TOKEN : { 
   1.780 -&lt;TERSE_COMMENT_END: &quot;--&gt;&quot; | &quot;--]&quot;&gt;
   1.781 -|&lt;MAYBE_END: ([&quot;&lt;&quot;,&quot;[&quot;]) &quot;/&quot; (&quot;#&quot;)? ([&quot;A&quot;-&quot;Z&quot;,&quot;a&quot;-&quot;z&quot;])+ ([&quot;\t&quot;,&quot;\n&quot;,&quot;\r&quot;,&quot; &quot;])* ([&quot;&gt;&quot;,&quot;]&quot;])&gt;
   1.782 -|&lt;KEEP_GOING: ([&quot;\u0000&quot;-&quot;,&quot;,&quot;.&quot;-&quot;;&quot;,&quot;=&quot;-&quot;Z&quot;,&quot;\\&quot;-&quot;\uffff&quot;])+&gt;
   1.783 -|&lt;LONE_LESS_THAN_OR_DASH: [&quot;-&quot;,&quot;&lt;&quot;,&quot;[&quot;]&gt;
   1.784 -}
   1.785 -
   1.786 -</PRE></TD></TR>  </TABLE>
   1.787 -
   1.788 -  </BODY>
   1.789 -</HTML>
     2.1 --- a/src/pt_BR/ide/org-netbeans-libs-freemarker/ext/freemarker-2.3.19/freemarker/core/FMParser_pt_BR.html	Mon Sep 23 23:42:13 2013 +0900
     2.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.3 @@ -1,786 +0,0 @@
     2.4 -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
     2.5 -
     2.6 -
     2.7 -<HTML>
     2.8 -  <HEAD>
     2.9 -<meta http-equiv="content-type" content="text/html; charset=UTF-8">
    2.10 -    <TITLE>BNF para FMParser</TITLE>
    2.11 -  </HEAD>
    2.12 -  <BODY>
    2.13 -   <H1 ALIGN=CENTER>BNF para FMParser</H1>
    2.14 -
    2.15 -   <H2 ALIGN=CENTER>NON-TERMINALS</H2>
    2.16 -      <TABLE>
    2.17 -    <TR><TD><PRE>// Now the actual parsing code, starting
    2.18 -
    2.19 -// with the productions for FreeMarker's
    2.20 -
    2.21 -// expression syntax.
    2.22 -
    2.23 -
    2.24 -/**
    2.25 - * This is the same as OrExpression, since
    2.26 - * the OR is the operator with the lowest
    2.27 - * precedence.
    2.28 - */</PRE></TD></TR>
    2.29 -    <TR>
    2.30 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod1">Expressão</a></TD>
    2.31 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    2.32 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    2.33 -    <a HREF="#prod2">OrExpression</a>
    2.34 -       </TD>
    2.35 -    </TR>
    2.36 -    <TR><TD><PRE>/**
    2.37 - * Lowest level expression, a literal, a variable,
    2.38 - * or a possibly more complex expression bounded
    2.39 - * by parentheses.
    2.40 - */</PRE></TD></TR>
    2.41 -    <TR>
    2.42 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod3">PrimaryExpression</a></TD>
    2.43 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    2.44 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    2.45 - ( <a HREF="#prod4">NumberLiteral</a> | <a HREF="#prod5">HashLiteral</a> | <a HREF="#prod6">StringLiteral</a> | <a HREF="#prod7">BooleanLiteral</a> | <a HREF="#prod8">ListLiteral</a> | <a HREF="#prod9">Identifier</a> | <a HREF="#prod10">Parenthesis</a> | <a HREF="#prod11">BuiltinVariable</a> ) ( <a HREF="#prod12">AddSubExpression</a> )*
    2.46 -       </TD>
    2.47 -    </TR>
    2.48 -    <TR><TD><PRE></PRE></TD></TR>
    2.49 -    <TR>
    2.50 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod10">Parenthesis</a></TD>
    2.51 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    2.52 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    2.53 -        &lt;OPEN_PAREN> <a HREF="#prod1">Expression</a> &lt;CLOSE_PAREN>
    2.54 -       </TD>
    2.55 -    </TR>
    2.56 -    <TR><TD><PRE>/**
    2.57 - * A primary expression preceded by zero or
    2.58 - * more unary operators. (The only unary operator we
    2.59 - * currently have is the NOT.)
    2.60 - */</PRE></TD></TR>
    2.61 -    <TR>
    2.62 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod13">UnaryExpression</a></TD>
    2.63 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    2.64 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    2.65 - ( <a HREF="#prod14">UnaryPlusMinusExpression</a> | <a HREF="#prod15">NotExpression</a> | <a HREF="#prod3">PrimaryExpression</a> )      </TD>
    2.66 -    </TR>
    2.67 -    <TR><TD><PRE></PRE></TD></TR>
    2.68 -    <TR>
    2.69 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod15">NotExpression</a></TD>
    2.70 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    2.71 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    2.72 -        ( &lt;EXCLAM> )+ <a HREF="#prod3">PrimaryExpression</a>
    2.73 -       </TD>
    2.74 -    </TR>
    2.75 -    <TR><TD><PRE></PRE></TD></TR>
    2.76 -    <TR>
    2.77 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod14">UnaryPlusMinusExpression</a></TD>
    2.78 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    2.79 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    2.80 - ( &lt;PLUS> | &lt;MINUS> ) <a HREF="#prod3">PrimaryExpression</a>
    2.81 -       </TD>
    2.82 -    </TR>
    2.83 -    <TR><TD><PRE></PRE></TD></TR>
    2.84 -    <TR>
    2.85 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod16">AdditiveExpression</a></TD>
    2.86 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    2.87 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    2.88 -    <a HREF="#prod17">MultiplicativeExpression</a> ( ( ( &lt;PLUS> | &lt;MINUS> ) ) <a HREF="#prod17">MultiplicativeExpression</a> )*
    2.89 -       </TD>
    2.90 -    </TR>
    2.91 -    <TR><TD><PRE>/**
    2.92 - * A unary expression followed by zero or more
    2.93 - * unary expressions with operators in between.
    2.94 - */</PRE></TD></TR>
    2.95 -    <TR>
    2.96 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod17">MultiplicativeExpression</a></TD>
    2.97 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    2.98 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    2.99 -    <a HREF="#prod13">UnaryExpression</a> ( ( ( &lt;TIMES> | &lt;DIVIDE> | &lt;PERCENT> ) ) <a HREF="#prod13">UnaryExpression</a> )*
   2.100 -       </TD>
   2.101 -    </TR>
   2.102 -    <TR><TD><PRE></PRE></TD></TR>
   2.103 -    <TR>
   2.104 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod18">EqualityExpression</a></TD>
   2.105 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.106 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.107 -    <a HREF="#prod19">RelationalExpression</a> ( ( &lt;NOT_EQUALS> | &lt;EQUALS> | &lt;DOUBLE_EQUALS> ) <a HREF="#prod19">RelationalExpression</a> )?
   2.108 -       </TD>
   2.109 -    </TR>
   2.110 -    <TR><TD><PRE></PRE></TD></TR>
   2.111 -    <TR>
   2.112 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod19">RelationalExpression</a></TD>
   2.113 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.114 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.115 -    <a HREF="#prod20">RangeExpression</a> ( ( &lt;NATURAL_GTE> | &lt;ESCAPED_GTE> | &lt;NATURAL_GT> | &lt;ESCAPED_GT> | &lt;LESS_THAN_EQUALS> | &lt;LESS_THAN> ) <a HREF="#prod20">RangeExpression</a> )?
   2.116 -       </TD>
   2.117 -    </TR>
   2.118 -    <TR><TD><PRE></PRE></TD></TR>
   2.119 -    <TR>
   2.120 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod20">RangeExpression</a></TD>
   2.121 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.122 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.123 -    <a HREF="#prod16">AdditiveExpression</a> ( &lt;DOT_DOT> ( <a HREF="#prod16">AdditiveExpression</a> )? )?
   2.124 -       </TD>
   2.125 -    </TR>
   2.126 -    <TR><TD><PRE></PRE></TD></TR>
   2.127 -    <TR>
   2.128 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod21">AndExpression</a></TD>
   2.129 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.130 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.131 -    <a HREF="#prod18">EqualityExpression</a> ( &lt;AND> <a HREF="#prod18">EqualityExpression</a> )*
   2.132 -       </TD>
   2.133 -    </TR>
   2.134 -    <TR><TD><PRE></PRE></TD></TR>
   2.135 -    <TR>
   2.136 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod2">OrExpression</a></TD>
   2.137 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.138 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.139 -    <a HREF="#prod21">AndExpression</a> ( &lt;OR> <a HREF="#prod21">AndExpression</a> )*
   2.140 -       </TD>
   2.141 -    </TR>
   2.142 -    <TR><TD><PRE></PRE></TD></TR>
   2.143 -    <TR>
   2.144 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod8">ListLiteral</a></TD>
   2.145 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.146 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.147 -        &lt;OPEN_BRACKET> <a HREF="#prod22">PositionalArgs</a> &lt;CLOSE_BRACKET>
   2.148 -       </TD>
   2.149 -    </TR>
   2.150 -    <TR><TD><PRE></PRE></TD></TR>
   2.151 -    <TR>
   2.152 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod4">NumberLiteral</a></TD>
   2.153 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.154 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.155 - ( &lt;INTEGER> | &lt;DECIMAL> )      </TD>
   2.156 -    </TR>
   2.157 -    <TR><TD><PRE></PRE></TD></TR>
   2.158 -    <TR>
   2.159 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod9">Identifier</a></TD>
   2.160 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.161 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.162 -        &lt;ID>
   2.163 -       </TD>
   2.164 -    </TR>
   2.165 -    <TR><TD><PRE></PRE></TD></TR>
   2.166 -    <TR>
   2.167 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod23">IdentifierOrStringLiteral</a></TD>
   2.168 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.169 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.170 - ( <a HREF="#prod9">Identifier</a> | <a HREF="#prod6">StringLiteral</a> )      </TD>
   2.171 -    </TR>
   2.172 -    <TR><TD><PRE></PRE></TD></TR>
   2.173 -    <TR>
   2.174 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod11">BuiltinVariable</a></TD>
   2.175 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.176 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.177 -        &lt;DOT> &lt;ID>
   2.178 -       </TD>
   2.179 -    </TR>
   2.180 -    <TR><TD><PRE>/**
   2.181 - * Production that builds up an expression
   2.182 - * using the dot or dynamic key name
   2.183 - * or the args list if this is a method invocation.
   2.184 - */</PRE></TD></TR>
   2.185 -    <TR>
   2.186 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod12">AddSubExpression</a></TD>
   2.187 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.188 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.189 - ( <a HREF="#prod24">DotVariable</a> | <a HREF="#prod25">DynamicKey</a> | <a HREF="#prod26">MethodArgs</a> | <a HREF="#prod27">BuiltIn</a> | <a HREF="#prod28">DefaultTo</a> | <a HREF="#prod29">Exists</a> )      </TD>
   2.190 -    </TR>
   2.191 -    <TR><TD><PRE></PRE></TD></TR>
   2.192 -    <TR>
   2.193 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod28">DefaultTo</a></TD>
   2.194 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.195 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.196 - ( &lt;TERMINATING_EXCLAM> | ( &lt;EXCLAM> ( <a HREF="#prod1">Expression</a> )? ) )      </TD>
   2.197 -    </TR>
   2.198 -    <TR><TD><PRE></PRE></TD></TR>
   2.199 -    <TR>
   2.200 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod29">Exists</a></TD>
   2.201 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.202 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.203 -        &lt;EXISTS>
   2.204 -       </TD>
   2.205 -    </TR>
   2.206 -    <TR><TD><PRE></PRE></TD></TR>
   2.207 -    <TR>
   2.208 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod27">BuiltIn</a></TD>
   2.209 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.210 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.211 -        &lt;BUILT_IN> &lt;ID>
   2.212 -       </TD>
   2.213 -    </TR>
   2.214 -    <TR><TD><PRE>/**
   2.215 - * production for when a key is specified by &lt;DOT&gt; + keyname
   2.216 - */</PRE></TD></TR>
   2.217 -    <TR>
   2.218 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod24">DotVariable</a></TD>
   2.219 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.220 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.221 -        &lt;DOT> ( &lt;ID> | &lt;TIMES> | &lt;DOUBLE_STAR> | ( &lt;LESS_THAN> | &lt;LESS_THAN_EQUALS> | &lt;ESCAPED_GT> | &lt;ESCAPED_GTE> | &lt;FALSE> | &lt;TRUE> | &lt;IN> | &lt;AS> | &lt;USING> ) )      </TD>
   2.222 -    </TR>
   2.223 -    <TR><TD><PRE>/**
   2.224 - * production for when the key is specified
   2.225 - * in brackets.
   2.226 - */</PRE></TD></TR>
   2.227 -    <TR>
   2.228 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod25">DynamicKey</a></TD>
   2.229 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.230 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.231 -        &lt;OPEN_BRACKET> <a HREF="#prod1">Expression</a> &lt;CLOSE_BRACKET>
   2.232 -       </TD>
   2.233 -    </TR>
   2.234 -    <TR><TD><PRE>/**
   2.235 - * production for an arglist part of a method invocation.
   2.236 - */</PRE></TD></TR>
   2.237 -    <TR>
   2.238 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod26">MethodArgs</a></TD>
   2.239 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.240 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.241 -        &lt;OPEN_PAREN> <a HREF="#prod22">PositionalArgs</a> &lt;CLOSE_PAREN>
   2.242 -       </TD>
   2.243 -    </TR>
   2.244 -    <TR><TD><PRE></PRE></TD></TR>
   2.245 -    <TR>
   2.246 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod6">StringLiteral</a></TD>
   2.247 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.248 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.249 - ( &lt;STRING_LITERAL> | &lt;RAW_STRING> )      </TD>
   2.250 -    </TR>
   2.251 -    <TR><TD><PRE></PRE></TD></TR>
   2.252 -    <TR>
   2.253 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod7">BooleanLiteral</a></TD>
   2.254 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.255 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.256 - ( &lt;FALSE> | &lt;TRUE> )      </TD>
   2.257 -    </TR>
   2.258 -    <TR><TD><PRE></PRE></TD></TR>
   2.259 -    <TR>
   2.260 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod5">HashLiteral</a></TD>
   2.261 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.262 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.263 -        &lt;OPEN_BRACE> ( <a HREF="#prod1">Expression</a> ( &lt;COMMA> | &lt;COLON> ) <a HREF="#prod1">Expression</a> ( &lt;COMMA> <a HREF="#prod1">Expression</a> ( &lt;COMMA> | &lt;COLON> ) <a HREF="#prod1">Expression</a> )* )? &lt;CLOSE_BRACE>
   2.264 -       </TD>
   2.265 -    </TR>
   2.266 -    <TR><TD><PRE>/**
   2.267 - * A production representing the ${...}
   2.268 - * that outputs a variable.
   2.269 - */</PRE></TD></TR>
   2.270 -    <TR>
   2.271 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod30">StringOutput</a></TD>
   2.272 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.273 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.274 -        &lt;OUTPUT_ESCAPE> <a HREF="#prod1">Expression</a> &lt;CLOSE_BRACE>
   2.275 -       </TD>
   2.276 -    </TR>
   2.277 -    <TR><TD><PRE></PRE></TD></TR>
   2.278 -    <TR>
   2.279 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod31">NumericalOutput</a></TD>
   2.280 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.281 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.282 -        &lt;NUMERICAL_ESCAPE> <a HREF="#prod1">Expression</a> ( &lt;SEMICOLON> &lt;ID> )? &lt;CLOSE_BRACE>
   2.283 -       </TD>
   2.284 -    </TR>
   2.285 -    <TR><TD><PRE></PRE></TD></TR>
   2.286 -    <TR>
   2.287 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod32">If</a></TD>
   2.288 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.289 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.290 -        &lt;IF> <a HREF="#prod1">Expression</a> &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> ( &lt;ELSE_IF> <a HREF="#prod1">Expression</a> <a HREF="#prod34">LooseDirectiveEnd</a> <a HREF="#prod33">OptionalBlock</a> )* ( &lt;ELSE> <a HREF="#prod33">OptionalBlock</a> )? &lt;END_IF>
   2.291 -       </TD>
   2.292 -    </TR>
   2.293 -    <TR><TD><PRE></PRE></TD></TR>
   2.294 -    <TR>
   2.295 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod35">Tentativa</a></TD>
   2.296 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.297 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.298 -        &lt;ATTEMPT> <a HREF="#prod33">OptionalBlock</a> <a HREF="#prod36">Recover</a> ( &lt;END_RECOVER> | &lt;END_ATTEMPT> )      </TD>
   2.299 -    </TR>
   2.300 -    <TR><TD><PRE></PRE></TD></TR>
   2.301 -    <TR>
   2.302 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod36">Recuperar</a></TD>
   2.303 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.304 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.305 -        &lt;RECOVER> <a HREF="#prod33">OptionalBlock</a>
   2.306 -       </TD>
   2.307 -    </TR>
   2.308 -    <TR><TD><PRE></PRE></TD></TR>
   2.309 -    <TR>
   2.310 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod37">List</a></TD>
   2.311 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.312 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.313 -        &lt;LIST> <a HREF="#prod1">Expression</a> &lt;AS> &lt;ID> &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> &lt;END_LIST>
   2.314 -       </TD>
   2.315 -    </TR>
   2.316 -    <TR><TD><PRE></PRE></TD></TR>
   2.317 -    <TR>
   2.318 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod38">ForEach</a></TD>
   2.319 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.320 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.321 -        &lt;FOREACH> &lt;ID> &lt;IN> <a HREF="#prod1">Expression</a> &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> &lt;END_FOREACH>
   2.322 -       </TD>
   2.323 -    </TR>
   2.324 -    <TR><TD><PRE></PRE></TD></TR>
   2.325 -    <TR>
   2.326 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod39">Visit</a></TD>
   2.327 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.328 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.329 -        &lt;VISIT> <a HREF="#prod1">Expression</a> ( &lt;USING> <a HREF="#prod1">Expression</a> )? <a HREF="#prod34">LooseDirectiveEnd</a>
   2.330 -       </TD>
   2.331 -    </TR>
   2.332 -    <TR><TD><PRE></PRE></TD></TR>
   2.333 -    <TR>
   2.334 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod40">Recurse</a></TD>
   2.335 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.336 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.337 - ( &lt;SIMPLE_RECURSE> | ( &lt;RECURSE> ( <a HREF="#prod1">Expression</a> )? ( &lt;USING> <a HREF="#prod1">Expression</a> )? <a HREF="#prod34">LooseDirectiveEnd</a> ) )      </TD>
   2.338 -    </TR>
   2.339 -    <TR><TD><PRE></PRE></TD></TR>
   2.340 -    <TR>
   2.341 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod41">FallBack</a></TD>
   2.342 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.343 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.344 -        &lt;FALLBACK>
   2.345 -       </TD>
   2.346 -    </TR>
   2.347 -    <TR><TD><PRE>/**
   2.348 - * Production used to break out of a loop or a switch block.
   2.349 - */</PRE></TD></TR>
   2.350 -    <TR>
   2.351 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod42">Break</a></TD>
   2.352 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.353 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.354 -        &lt;BREAK>
   2.355 -       </TD>
   2.356 -    </TR>
   2.357 -    <TR><TD><PRE>/**
   2.358 - * Production used to jump out of a macro.
   2.359 - * The stop instruction terminates the rendering of the template.
   2.360 - */</PRE></TD></TR>
   2.361 -    <TR>
   2.362 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod43">Return</a></TD>
   2.363 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.364 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.365 - ( &lt;SIMPLE_RETURN> | &lt;RETURN> <a HREF="#prod1">Expression</a> <a HREF="#prod34">LooseDirectiveEnd</a> )      </TD>
   2.366 -    </TR>
   2.367 -    <TR><TD><PRE></PRE></TD></TR>
   2.368 -    <TR>
   2.369 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod44">Stop</a></TD>
   2.370 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.371 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.372 - ( &lt;HALT> | &lt;STOP> <a HREF="#prod1">Expression</a> <a HREF="#prod34">LooseDirectiveEnd</a> )      </TD>
   2.373 -    </TR>
   2.374 -    <TR><TD><PRE></PRE></TD></TR>
   2.375 -    <TR>
   2.376 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod45">Nested</a></TD>
   2.377 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.378 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.379 - ( ( &lt;SIMPLE_NESTED> )| ( &lt;NESTED> <a HREF="#prod22">PositionalArgs</a> <a HREF="#prod34">LooseDirectiveEnd</a> ) )      </TD>
   2.380 -    </TR>
   2.381 -    <TR><TD><PRE></PRE></TD></TR>
   2.382 -    <TR>
   2.383 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod46">Flush</a></TD>
   2.384 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.385 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.386 -        &lt;FLUSH>
   2.387 -       </TD>
   2.388 -    </TR>
   2.389 -    <TR><TD><PRE></PRE></TD></TR>
   2.390 -    <TR>
   2.391 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod47">Trim</a></TD>
   2.392 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.393 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.394 - ( &lt;TRIM> | &lt;LTRIM> | &lt;RTRIM> | &lt;NOTRIM> )      </TD>
   2.395 -    </TR>
   2.396 -    <TR><TD><PRE></PRE></TD></TR>
   2.397 -    <TR>
   2.398 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod48">Assign</a></TD>
   2.399 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.400 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.401 - ( &lt;ASSIGN> | &lt;GLOBALASSIGN> | &lt;LOCALASSIGN> ) <a HREF="#prod23">IdentifierOrStringLiteral</a> ( ( &lt;EQUALS> <a HREF="#prod1">Expression</a> ( ( &lt;COMMA> )? <a HREF="#prod23">IdentifierOrStringLiteral</a> &lt;EQUALS> <a HREF="#prod1">Expression</a> )* ( &lt;IN> <a HREF="#prod1">Expression</a> )? <a HREF="#prod34">LooseDirectiveEnd</a> )| ( ( &lt;IN> <a HREF="#prod1">Expression</a> )? &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> ( &lt;END_LOCAL> | &lt;END_ASSIGN> | &lt;END_GLOBAL> ) ) )     </TD>
   2.402 -    </TR>
   2.403 -    <TR><TD><PRE></PRE></TD></TR>
   2.404 -    <TR>
   2.405 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod49">Include</a></TD>
   2.406 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.407 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.408 -        &lt;INCLUDE> <a HREF="#prod1">Expression</a> ( &lt;SEMICOLON> )? ( &lt;ID> &lt;EQUALS> <a HREF="#prod1">Expression</a> )* <a HREF="#prod34">LooseDirectiveEnd</a>
   2.409 -       </TD>
   2.410 -    </TR>
   2.411 -    <TR><TD><PRE></PRE></TD></TR>
   2.412 -    <TR>
   2.413 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod50">Import</a></TD>
   2.414 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.415 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.416 -        &lt;IMPORT> <a HREF="#prod1">Expression</a> &lt;AS> &lt;ID> <a HREF="#prod34">LooseDirectiveEnd</a>
   2.417 -       </TD>
   2.418 -    </TR>
   2.419 -    <TR><TD><PRE></PRE></TD></TR>
   2.420 -    <TR>
   2.421 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod51">Macro</a></TD>
   2.422 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.423 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.424 - ( &lt;MACRO> | &lt;FUNCTION> ) <a HREF="#prod23">IdentifierOrStringLiteral</a> ( &lt;OPEN_PAREN> )? ( &lt;ID> ( &lt;ELLIPSIS> )? ( &lt;EQUALS> <a HREF="#prod1">Expression</a> )? ( &lt;COMMA> )? )* ( &lt;CLOSE_PAREN> )? &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> ( &lt;END_MACRO> | &lt;END_FUNCTION> )      </TD>
   2.425 -    </TR>
   2.426 -    <TR><TD><PRE></PRE></TD></TR>
   2.427 -    <TR>
   2.428 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod52">Compress</a></TD>
   2.429 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.430 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.431 -        &lt;COMPRESS> <a HREF="#prod33">OptionalBlock</a> &lt;END_COMPRESS>
   2.432 -       </TD>
   2.433 -    </TR>
   2.434 -    <TR><TD><PRE></PRE></TD></TR>
   2.435 -    <TR>
   2.436 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod53">UnifiedMacroTransform</a></TD>
   2.437 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.438 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.439 -        &lt;UNIFIED_CALL> <a HREF="#prod1">Expression</a> ( &lt;TERMINATING_WHITESPACE> )? ( <a HREF="#prod54">NamedArgs</a> | <a HREF="#prod22">PositionalArgs</a> ) ( &lt;SEMICOLON> ( ( &lt;TERMINATING_WHITESPACE> )? &lt;ID> ( ( &lt;TERMINATING_WHITESPACE> )? &lt;COMMA> ( &lt;TERMINATING_WHITESPACE> )? &lt;ID> )* )? )? ( &lt;EMPTY_DIRECTIVE_END> | ( &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> &lt;UNIFIED_CALL_END> ) )      </TD>
   2.440 -    </TR>
   2.441 -    <TR><TD><PRE></PRE></TD></TR>
   2.442 -    <TR>
   2.443 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod55">Call</a></TD>
   2.444 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.445 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.446 -        &lt;CALL> &lt;ID> ( <a HREF="#prod54">NamedArgs</a> | ( ( &lt;OPEN_PAREN> )? <a HREF="#prod22">PositionalArgs</a> ( &lt;CLOSE_PAREN> )? ) ) <a HREF="#prod34">LooseDirectiveEnd</a>
   2.447 -       </TD>
   2.448 -    </TR>
   2.449 -    <TR><TD><PRE></PRE></TD></TR>
   2.450 -    <TR>
   2.451 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod54">NamedArgs</a></TD>
   2.452 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.453 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.454 -        ( &lt;ID> &lt;EQUALS> <a HREF="#prod1">Expression</a> )+
   2.455 -       </TD>
   2.456 -    </TR>
   2.457 -    <TR><TD><PRE></PRE></TD></TR>
   2.458 -    <TR>
   2.459 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod22">PositionalArgs</a></TD>
   2.460 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.461 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.462 -        ( <a HREF="#prod1">Expression</a> ( ( &lt;COMMA> )? <a HREF="#prod1">Expression</a> )* )?
   2.463 -       </TD>
   2.464 -    </TR>
   2.465 -    <TR><TD><PRE></PRE></TD></TR>
   2.466 -    <TR>
   2.467 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod56">Comment</a></TD>
   2.468 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.469 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.470 - ( &lt;COMMENT> | &lt;TERSE_COMMENT> ) <a HREF="#prod57">UnparsedContent</a>
   2.471 -       </TD>
   2.472 -    </TR>
   2.473 -    <TR><TD><PRE></PRE></TD></TR>
   2.474 -    <TR>
   2.475 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod58">NoParse</a></TD>
   2.476 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.477 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.478 -        &lt;NOPARSE> <a HREF="#prod57">UnparsedContent</a>
   2.479 -       </TD>
   2.480 -    </TR>
   2.481 -    <TR><TD><PRE></PRE></TD></TR>
   2.482 -    <TR>
   2.483 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod59">Transform</a></TD>
   2.484 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.485 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.486 -        &lt;TRANSFORM> <a HREF="#prod1">Expression</a> ( &lt;SEMICOLON> )? ( &lt;ID> &lt;EQUALS> <a HREF="#prod1">Expression</a> )* ( &lt;EMPTY_DIRECTIVE_END> | ( &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> &lt;END_TRANSFORM> ) )      </TD>
   2.487 -    </TR>
   2.488 -    <TR><TD><PRE></PRE></TD></TR>
   2.489 -    <TR>
   2.490 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod60">Switch</a></TD>
   2.491 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.492 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.493 -        &lt;SWITCH> <a HREF="#prod1">Expression</a> &lt;DIRECTIVE_END> ( <a HREF="#prod61">Case</a> )* ( &lt;WHITESPACE> )? &lt;END_SWITCH>
   2.494 -       </TD>
   2.495 -    </TR>
   2.496 -    <TR><TD><PRE></PRE></TD></TR>
   2.497 -    <TR>
   2.498 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod61">Case</a></TD>
   2.499 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.500 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.501 -        ( &lt;WHITESPACE> )? ( &lt;CASE> <a HREF="#prod1">Expression</a> &lt;DIRECTIVE_END> | &lt;DEFAUL> ) <a HREF="#prod33">OptionalBlock</a>
   2.502 -       </TD>
   2.503 -    </TR>
   2.504 -    <TR><TD><PRE></PRE></TD></TR>
   2.505 -    <TR>
   2.506 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod62">Escape</a></TD>
   2.507 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.508 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.509 -        &lt;ESCAPE> &lt;ID> &lt;AS> <a HREF="#prod1">Expression</a> &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> &lt;END_ESCAPE>
   2.510 -       </TD>
   2.511 -    </TR>
   2.512 -    <TR><TD><PRE></PRE></TD></TR>
   2.513 -    <TR>
   2.514 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod63">NoEscape</a></TD>
   2.515 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.516 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.517 -        &lt;NOESCAPE> <a HREF="#prod33">OptionalBlock</a> &lt;END_NOESCAPE>
   2.518 -       </TD>
   2.519 -    </TR>
   2.520 -    <TR><TD><PRE>/**
   2.521 - * Production to terminate potentially empty elements. Either a &quot;&gt;&quot; or &quot;/&gt;&quot;
   2.522 - */</PRE></TD></TR>
   2.523 -    <TR>
   2.524 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod34">LooseDirectiveEnd</a></TD>
   2.525 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.526 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.527 - ( &lt;DIRECTIVE_END> | &lt;EMPTY_DIRECTIVE_END> )      </TD>
   2.528 -    </TR>
   2.529 -    <TR><TD><PRE></PRE></TD></TR>
   2.530 -    <TR>
   2.531 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod64">Setting</a></TD>
   2.532 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.533 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.534 -        &lt;SETTING> &lt;ID> &lt;EQUALS> <a HREF="#prod1">Expression</a> <a HREF="#prod34">LooseDirectiveEnd</a>
   2.535 -       </TD>
   2.536 -    </TR>
   2.537 -    <TR><TD><PRE>/**
   2.538 - * A production for FreeMarker directives.
   2.539 - */</PRE></TD></TR>
   2.540 -    <TR>
   2.541 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod65">FreemarkerDirective</a></TD>
   2.542 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.543 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.544 - ( <a HREF="#prod32">If</a> | <a HREF="#prod37">List</a> | <a HREF="#prod38">ForEach</a> | <a HREF="#prod48">Assign</a> | <a HREF="#prod49">Include</a> | <a HREF="#prod50">Import</a> | <a HREF="#prod51">Macro</a> | <a HREF="#prod52">Compress</a> | <a HREF="#prod53">UnifiedMacroTransform</a> | <a HREF="#prod55">Call</a> | <a HREF="#prod56">Comment</a> | <a HREF="#prod58">NoParse</a> | <a HREF="#prod59">Transform</a> | <a HREF="#prod60">Switch</a> | <a HREF="#prod64">Setting</a> | <a HREF="#prod42">Break</a> | <a HREF="#prod43">Return</a> | <a HREF="#prod44">Stop</a> | <a HREF="#prod46">Flush</a> | <a HREF="#prod47">Trim</a> | <a HREF="#prod45">Nested</a> | <a HREF="#prod62">Escape</a> | <a HREF="#prod63">NoEscape</a> | <a HREF="#prod39">Visit</a> | <a HREF="#prod40">Recurse</a> | <a HREF="#prod41">FallBack</a> | <a HREF="#prod35">Attempt</a> )      </TD>
   2.545 -    </TR>
   2.546 -    <TR><TD><PRE>/**
   2.547 - * Production for a block of raw text
   2.548 - * i.e. text that contains no
   2.549 - * FreeMarker directives.
   2.550 - */</PRE></TD></TR>
   2.551 -    <TR>
   2.552 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod66">PCData</a></TD>
   2.553 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.554 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.555 -        ( ( &lt;WHITESPACE> | &lt;PRINTABLE_CHARS> | &lt;FALSE_ALERT> ) )+
   2.556 -       </TD>
   2.557 -    </TR>
   2.558 -    <TR><TD><PRE>/**
   2.559 - * Production for dealing with unparsed content,
   2.560 - * i.e. what is inside a comment or noparse tag.
   2.561 - * It returns the ending token. The content
   2.562 - * of the tag is put in buf.
   2.563 - */</PRE></TD></TR>
   2.564 -    <TR>
   2.565 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod57">UnparsedContent</a></TD>
   2.566 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.567 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.568 -        ( ( &lt;KEEP_GOING> | &lt;MAYBE_END> | &lt;TERSE_COMMENT_END> | &lt;LONE_LESS_THAN_OR_DASH> ) )+
   2.569 -       </TD>
   2.570 -    </TR>
   2.571 -    <TR><TD><PRE></PRE></TD></TR>
   2.572 -    <TR>
   2.573 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod67">Content</a></TD>
   2.574 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.575 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.576 -        ( ( <a HREF="#prod66">PCData</a> | <a HREF="#prod30">StringOutput</a> | <a HREF="#prod31">NumericalOutput</a> | <a HREF="#prod65">FreemarkerDirective</a> ) )+
   2.577 -       </TD>
   2.578 -    </TR>
   2.579 -    <TR><TD><PRE>/**
   2.580 - * A production freemarker text that may contain
   2.581 - * ${...} and #{...} but no directives.
   2.582 - */</PRE></TD></TR>
   2.583 -    <TR>
   2.584 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod68">FreeMarkerText</a></TD>
   2.585 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.586 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.587 -        ( ( <a HREF="#prod66">PCData</a> | <a HREF="#prod30">StringOutput</a> | <a HREF="#prod31">NumericalOutput</a> ) )+
   2.588 -       </TD>
   2.589 -    </TR>
   2.590 -    <TR><TD><PRE>/**
   2.591 - * A production for a block of optional content.
   2.592 - * Returns an empty Text block if there is no
   2.593 - * content.
   2.594 - */</PRE></TD></TR>
   2.595 -    <TR>
   2.596 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod33">OptionalBlock</a></TD>
   2.597 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.598 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.599 -        ( <a HREF="#prod67">Content</a> )?
   2.600 -       </TD>
   2.601 -    </TR>
   2.602 -    <TR><TD><PRE></PRE></TD></TR>
   2.603 -    <TR>
   2.604 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod69">HeaderElement</a></TD>
   2.605 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.606 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.607 -        ( &lt;WHITESPACE> )? ( &lt;TRIVIAL_FTL_HEADER> | ( &lt;FTL_HEADER> ( &lt;ID> &lt;EQUALS> <a HREF="#prod1">Expression</a> )* ) <a HREF="#prod34">LooseDirectiveEnd</a> )     </TD>
   2.608 -    </TR>
   2.609 -    <TR><TD><PRE></PRE></TD></TR>
   2.610 -    <TR>
   2.611 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod70">ParamList</a></TD>
   2.612 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.613 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.614 -        ( <a HREF="#prod9">Identifier</a> &lt;EQUALS> <a HREF="#prod1">Expression</a> ( &lt;COMMA> )? )+
   2.615 -       </TD>
   2.616 -    </TR>
   2.617 -    <TR><TD><PRE>/**
   2.618 - * Root production to be used when parsing
   2.619 - * an entire file.
   2.620 - */</PRE></TD></TR>
   2.621 -    <TR>
   2.622 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod71">Root</a></TD>
   2.623 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   2.624 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   2.625 -        ( <a HREF="#prod69">HeaderElement</a> )? <a HREF="#prod33">OptionalBlock</a> &lt;EOF>
   2.626 -       </TD>
   2.627 -    </TR>
   2.628 -      </TABLE>
   2.629 -<HR>
   2.630 -  <H2 ALIGN=CENTER>TOKENS</H2>
   2.631 -  <TABLE>
   2.632 -<TR><TD><PRE>&lt;DEFAULT&gt; TOKEN : { 
   2.633 -&lt;ATTEMPT: &lt;START_TAG&gt; &quot;attempt&quot; &lt;CLOSE_TAG1&gt;&gt;
   2.634 -|&lt;RECOVER: &lt;START_TAG&gt; &quot;recover&quot; &lt;CLOSE_TAG1&gt;&gt;
   2.635 -|&lt;IF: &lt;START_TAG&gt; &quot;if&quot; &lt;BLANK&gt;&gt;
   2.636 -|&lt;ELSE_IF: &lt;START_TAG&gt; &quot;elseif&quot; &lt;BLANK&gt;&gt;
   2.637 -|&lt;LIST: &lt;START_TAG&gt; &quot;list&quot; &lt;BLANK&gt;&gt;
   2.638 -|&lt;FOREACH: &lt;START_TAG&gt; &quot;foreach&quot; &lt;BLANK&gt;&gt;
   2.639 -|&lt;SWITCH: &lt;START_TAG&gt; &quot;switch&quot; &lt;BLANK&gt;&gt;
   2.640 -|&lt;CASE: &lt;START_TAG&gt; &quot;case&quot; &lt;BLANK&gt;&gt;
   2.641 -|&lt;ASSIGN: &lt;START_TAG&gt; &quot;assign&quot; &lt;BLANK&gt;&gt;
   2.642 -|&lt;GLOBALASSIGN: &lt;START_TAG&gt; &quot;global&quot; &lt;BLANK&gt;&gt;
   2.643 -|&lt;LOCALASSIGN: &lt;START_TAG&gt; &quot;local&quot; &lt;BLANK&gt;&gt;
   2.644 -|&lt;INCLUDE: &lt;START_TAG&gt; &quot;include&quot; &lt;BLANK&gt;&gt;
   2.645 -|&lt;IMPORT: &lt;START_TAG&gt; &quot;import&quot; &lt;BLANK&gt;&gt;
   2.646 -|&lt;FUNCTION: &lt;START_TAG&gt; &quot;function&quot; &lt;BLANK&gt;&gt;
   2.647 -|&lt;MACRO: &lt;START_TAG&gt; &quot;macro&quot; &lt;BLANK&gt;&gt;
   2.648 -|&lt;TRANSFORM: &lt;START_TAG&gt; &quot;transform&quot; &lt;BLANK&gt;&gt;
   2.649 -|&lt;VISIT: &lt;START_TAG&gt; &quot;visit&quot; &lt;BLANK&gt;&gt;
   2.650 -|&lt;STOP: &lt;START_TAG&gt; &quot;stop&quot; &lt;BLANK&gt;&gt;
   2.651 -|&lt;RETURN: &lt;START_TAG&gt; &quot;return&quot; &lt;BLANK&gt;&gt;
   2.652 -|&lt;CALL: &lt;START_TAG&gt; &quot;call&quot; &lt;BLANK&gt;&gt;
   2.653 -|&lt;SETTING: &lt;START_TAG&gt; &quot;setting&quot; &lt;BLANK&gt;&gt;
   2.654 -|&lt;COMPRESS: &lt;START_TAG&gt; &quot;compress&quot; &lt;CLOSE_TAG1&gt;&gt;
   2.655 -|&lt;COMMENT: &lt;START_TAG&gt; &quot;comment&quot; &lt;CLOSE_TAG1&gt;&gt;
   2.656 -|&lt;TERSE_COMMENT: ([&quot;&lt;&quot;,&quot;[&quot;]) &quot;#--&quot;&gt;
   2.657 -|&lt;NOPARSE: &lt;START_TAG&gt; &quot;noparse&quot; &lt;CLOSE_TAG1&gt;&gt;
   2.658 -|&lt;END_IF: &lt;END_TAG&gt; &quot;if&quot; &lt;CLOSE_TAG1&gt;&gt;
   2.659 -|&lt;END_LIST: &lt;END_TAG&gt; &quot;list&quot; &lt;CLOSE_TAG1&gt;&gt;
   2.660 -|&lt;END_RECOVER: &lt;END_TAG&gt; &quot;recover&quot; &lt;CLOSE_TAG1&gt;&gt;
   2.661 -|&lt;END_ATTEMPT: &lt;END_TAG&gt; &quot;attempt&quot; &lt;CLOSE_TAG1&gt;&gt;
   2.662 -|&lt;END_FOREACH: &lt;END_TAG&gt; &quot;foreach&quot; &lt;CLOSE_TAG1&gt;&gt;
   2.663 -|&lt;END_LOCAL: &lt;END_TAG&gt; &quot;local&quot; &lt;CLOSE_TAG1&gt;&gt;
   2.664 -|&lt;END_GLOBAL: &lt;END_TAG&gt; &quot;global&quot; &lt;CLOSE_TAG1&gt;&gt;
   2.665 -|&lt;END_ASSIGN: &lt;END_TAG&gt; &quot;assign&quot; &lt;CLOSE_TAG1&gt;&gt;
   2.666 -|&lt;END_FUNCTION: &lt;END_TAG&gt; &quot;function&quot; &lt;CLOSE_TAG1&gt;&gt;
   2.667 -|&lt;END_MACRO: &lt;END_TAG&gt; &quot;macro&quot; &lt;CLOSE_TAG1&gt;&gt;
   2.668 -|&lt;END_COMPRESS: &lt;END_TAG&gt; &quot;compress&quot; &lt;CLOSE_TAG1&gt;&gt;
   2.669 -|&lt;END_TRANSFORM: &lt;END_TAG&gt; &quot;transform&quot; &lt;CLOSE_TAG1&gt;&gt;
   2.670 -|&lt;END_SWITCH: &lt;END_TAG&gt; &quot;switch&quot; &lt;CLOSE_TAG1&gt;&gt;
   2.671 -|&lt;ELSE: &lt;START_TAG&gt; &quot;else&quot; &lt;CLOSE_TAG2&gt;&gt;
   2.672 -|&lt;BREAK: &lt;START_TAG&gt; &quot;break&quot; &lt;CLOSE_TAG2&gt;&gt;
   2.673 -|&lt;SIMPLE_RETURN: &lt;START_TAG&gt; &quot;return&quot; &lt;CLOSE_TAG2&gt;&gt;
   2.674 -|&lt;HALT: &lt;START_TAG&gt; &quot;stop&quot; &lt;CLOSE_TAG2&gt;&gt;
   2.675 -|&lt;FLUSH: &lt;START_TAG&gt; &quot;flush&quot; &lt;CLOSE_TAG2&gt;&gt;
   2.676 -|&lt;TRIM: &lt;START_TAG&gt; &quot;t&quot; &lt;CLOSE_TAG2&gt;&gt;
   2.677 -|&lt;LTRIM: &lt;START_TAG&gt; &quot;lt&quot; &lt;CLOSE_TAG2&gt;&gt;
   2.678 -|&lt;RTRIM: &lt;START_TAG&gt; &quot;rt&quot; &lt;CLOSE_TAG2&gt;&gt;
   2.679 -|&lt;NOTRIM: &lt;START_TAG&gt; &quot;nt&quot; &lt;CLOSE_TAG2&gt;&gt;
   2.680 -|&lt;DEFAUL: &lt;START_TAG&gt; &quot;default&quot; &lt;CLOSE_TAG1&gt;&gt;
   2.681 -|&lt;SIMPLE_NESTED: &lt;START_TAG&gt; &quot;nested&quot; &lt;CLOSE_TAG2&gt;&gt;
   2.682 -|&lt;NESTED: &lt;START_TAG&gt; &quot;nested&quot; &lt;BLANK&gt;&gt;
   2.683 -|&lt;SIMPLE_RECURSE: &lt;START_TAG&gt; &quot;recurse&quot; &lt;CLOSE_TAG2&gt;&gt;
   2.684 -|&lt;RECURSE: &lt;START_TAG&gt; &quot;recurse&quot; &lt;BLANK&gt;&gt;
   2.685 -|&lt;FALLBACK: &lt;START_TAG&gt; &quot;fallback&quot; &lt;CLOSE_TAG2&gt;&gt;
   2.686 -|&lt;ESCAPE: &lt;START_TAG&gt; &quot;escape&quot; &lt;BLANK&gt;&gt;
   2.687 -|&lt;END_ESCAPE: &lt;END_TAG&gt; &quot;escape&quot; &lt;CLOSE_TAG1&gt;&gt;
   2.688 -|&lt;NOESCAPE: &lt;START_TAG&gt; &quot;noescape&quot; &lt;CLOSE_TAG1&gt;&gt;
   2.689 -|&lt;END_NOESCAPE: &lt;END_TAG&gt; &quot;noescape&quot; &lt;CLOSE_TAG1&gt;&gt;
   2.690 -|&lt;UNIFIED_CALL: &quot;&lt;@&quot; | &quot;[@&quot;&gt;
   2.691 -|&lt;UNIFIED_CALL_END: ([&quot;&lt;&quot;,&quot;[&quot;]) &quot;/@&quot; (&lt;ID&gt; (&quot;.&quot; &lt;ID&gt;)*)? &lt;CLOSE_TAG1&gt;&gt;
   2.692 -|&lt;FTL_HEADER: (&quot;&lt;#ftl&quot; | &quot;[#ftl&quot;) &lt;BLANK&gt;&gt;
   2.693 -|&lt;TRIVIAL_FTL_HEADER: (&quot;&lt;#ftl&quot; | &quot;[#ftl&quot;) (&quot;/&quot;)? ([&quot;&gt;&quot;,&quot;]&quot;])&gt;
   2.694 -|&lt;UNKNOWN_DIRECTIVE: (&quot;[#&quot; | &quot;[/#&quot; | &quot;&lt;#&quot; | &quot;&lt;/#&quot;) ([&quot;A&quot;-&quot;Z&quot;,&quot;_&quot;,&quot;a&quot;-&quot;z&quot;])+&gt;
   2.695 -}
   2.696 -
   2.697 -</PRE></TD></TR><TR><TD><PRE>&lt;DEFAULT, NODIRECTIVE&gt; TOKEN : { 
   2.698 -&lt;WHITESPACE: ([&quot;\t&quot;,&quot;\n&quot;,&quot;\r&quot;,&quot; &quot;])+&gt;
   2.699 -|&lt;PRINTABLE_CHARS: ([&quot;\u0000&quot;-&quot;\b&quot;,&quot;\u000b&quot;-&quot;\f&quot;,&quot;\u000e&quot;-&quot;\u001f&quot;,&quot;!&quot;-&quot;\&quot;&quot;,&quot;%&quot;-&quot;;&quot;,&quot;=&quot;-&quot;Z&quot;,&quot;\\&quot;-&quot;z&quot;,&quot;|&quot;-&quot;\uffff&quot;])+&gt;
   2.700 -|&lt;FALSE_ALERT: [&quot;#&quot;,&quot;$&quot;,&quot;&lt;&quot;,&quot;[&quot;,&quot;{&quot;]&gt;
   2.701 -|&lt;OUTPUT_ESCAPE: &quot;${&quot;&gt;
   2.702 -|&lt;NUMERICAL_ESCAPE: &quot;#{&quot;&gt;
   2.703 -}
   2.704 -
   2.705 -</PRE></TD></TR><TR><TD><PRE>&lt;FM_EXPRESSION, IN_PAREN, NAMED_PARAMETER_EXPRESSION&gt; SKIP : { 
   2.706 -&lt;([&quot;\t&quot;,&quot;\n&quot;,&quot;\r&quot;,&quot; &quot;])+&gt;
   2.707 -|&lt;[&quot;&lt;&quot;,&quot;[&quot;] [&quot;!&quot;,&quot;#&quot;] &quot;--&quot;&gt;
   2.708 -}
   2.709 -
   2.710 -</PRE></TD></TR><TR><TD><PRE>&lt;EXPRESSION_COMMENT&gt; SKIP : { 
   2.711 -&lt;([&quot;\u0000&quot;-&quot;,&quot;,&quot;.&quot;-&quot;=&quot;,&quot;?&quot;-&quot;\\&quot;,&quot;^&quot;-&quot;\uffff&quot;])+&gt;
   2.712 -|&quot;&gt;&quot;
   2.713 -|&quot;]&quot;
   2.714 -|&quot;-&quot;
   2.715 -|&lt;&quot;--&gt;&quot; | &quot;--]&quot;&gt;
   2.716 -}
   2.717 -
   2.718 -</PRE></TD></TR><TR><TD><PRE>&lt;FM_EXPRESSION, IN_PAREN, NO_SPACE_EXPRESSION, NAMED_PARAMETER_EXPRESSION&gt; TOKEN : { 
   2.719 -&lt;STRING_LITERAL: &quot;\&quot;&quot; ([&quot;\u0000&quot;-&quot;!&quot;,&quot;#&quot;-&quot;[&quot;,&quot;]&quot;-&quot;\uffff&quot;] | &lt;ESCAPED_CHAR&gt;)* &quot;\&quot;&quot; | &quot;\'&quot; ([&quot;\u0000&quot;-&quot;&amp;&quot;,&quot;(&quot;-&quot;[&quot;,&quot;]&quot;-&quot;\uffff&quot;] | &lt;ESCAPED_CHAR&gt;)* &quot;\'&quot;&gt;
   2.720 -|&lt;RAW_STRING: &quot;r&quot; (&quot;\&quot;&quot; ([&quot;\u0000&quot;-&quot;!&quot;,&quot;#&quot;-&quot;\uffff&quot;])* &quot;\&quot;&quot; | &quot;\'&quot; ([&quot;\u0000&quot;-&quot;&amp;&quot;,&quot;(&quot;-&quot;\uffff&quot;])* &quot;\'&quot;)&gt;
   2.721 -|&lt;FALSE: &quot;false&quot;&gt;
   2.722 -|&lt;TRUE: &quot;true&quot;&gt;
   2.723 -|&lt;INTEGER: ([&quot;0&quot;-&quot;9&quot;])+&gt;
   2.724 -|&lt;DECIMAL: &lt;INTEGER&gt; &quot;.&quot; &lt;INTEGER&gt;&gt;
   2.725 -|&lt;DOT: &quot;.&quot;&gt;
   2.726 -|&lt;DOT_DOT: &quot;..&quot;&gt;
   2.727 -|&lt;BUILT_IN: &quot;?&quot;&gt;
   2.728 -|&lt;EXISTS: &quot;??&quot;&gt;
   2.729 -|&lt;EQUALS: &quot;=&quot;&gt;
   2.730 -|&lt;DOUBLE_EQUALS: &quot;==&quot;&gt;
   2.731 -|&lt;NOT_EQUALS: &quot;!=&quot;&gt;
   2.732 -|&lt;LESS_THAN: &quot;lt&quot; | &quot;\\lt&quot; | [&quot;&lt;&quot;] | &quot;&amp;lt;&quot;&gt;
   2.733 -|&lt;LESS_THAN_EQUALS: &quot;lte&quot; | &quot;\\lte&quot; | &quot;&lt;=&quot; | &quot;&amp;lt;=&quot;&gt;
   2.734 -|&lt;ESCAPED_GT: &quot;gt&quot; | &quot;\\gt&quot; | &quot;&amp;gt;&quot;&gt;
   2.735 -|&lt;ESCAPED_GTE: &quot;gte&quot; | &quot;\\gte&quot; | &quot;&amp;gt;=&quot;&gt;
   2.736 -|&lt;PLUS: &quot;+&quot;&gt;
   2.737 -|&lt;MINUS: &quot;-&quot;&gt;
   2.738 -|&lt;TIMES: &quot;*&quot;&gt;
   2.739 -|&lt;DOUBLE_STAR: &quot;**&quot;&gt;
   2.740 -|&lt;ELLIPSIS: &quot;...&quot;&gt;
   2.741 -|&lt;DIVIDE: &quot;/&quot;&gt;
   2.742 -|&lt;PERCENT: &quot;%&quot;&gt;
   2.743 -|&lt;AND: [&quot;&amp;&quot;] | &quot;&amp;&amp;&quot;&gt;
   2.744 -|&lt;OR: [&quot;|&quot;] | &quot;||&quot;&gt;
   2.745 -|&lt;EXCLAM: &quot;!&quot;&gt;
   2.746 -|&lt;COMMA: &quot;,&quot;&gt;
   2.747 -|&lt;SEMICOLON: &quot;;&quot;&gt;
   2.748 -|&lt;COLON: &quot;:&quot;&gt;
   2.749 -|&lt;OPEN_BRACKET: &quot;[&quot;&gt;
   2.750 -|&lt;CLOSE_BRACKET: &quot;]&quot;&gt;
   2.751 -|&lt;OPEN_PAREN: &quot;(&quot;&gt;
   2.752 -|&lt;CLOSE_PAREN: &quot;)&quot;&gt;
   2.753 -|&lt;OPEN_BRACE: &quot;{&quot;&gt;
   2.754 -|&lt;CLOSE_BRACE: &quot;}&quot;&gt;
   2.755 -|&lt;IN: &quot;in&quot;&gt;
   2.756 -|&lt;AS: &quot;as&quot;&gt;
   2.757 -|&lt;USING: &quot;using&quot;&gt;
   2.758 -|&lt;ID: &lt;LETTER&gt; ([&quot;$&quot;,&quot;0&quot;-&quot;9&quot;,&quot;@&quot;-&quot;Z&quot;,&quot;_&quot;,&quot;a&quot;-&quot;z&quot;,&quot;\u00c0&quot;-&quot;\u00d6&quot;,&quot;\u00d8&quot;-&quot;\u00f6&quot;,&quot;\u00f8&quot;-&quot;\u00ff&quot;,&quot;\u0100&quot;-&quot;\u1fff&quot;,&quot;\u3040&quot;-&quot;\u318f&quot;,&quot;\u3300&quot;-&quot;\u337f&quot;,&quot;\u3400&quot;-&quot;\u3d2d&quot;,&quot;\u4e00&quot;-&quot;\u9fff&quot;,&quot;\uf900&quot;-&quot;\ufaff&quot;])*&gt;
   2.759 -|}
   2.760 -
   2.761 -</PRE></TD></TR><TR><TD><PRE>&lt;FM_EXPRESSION, NO_SPACE_EXPRESSION, NAMED_PARAMETER_EXPRESSION&gt; TOKEN : { 
   2.762 -&lt;DIRECTIVE_END: &quot;&gt;&quot;&gt;
   2.763 -|&lt;EMPTY_DIRECTIVE_END: &quot;/&gt;&quot; | &quot;/]&quot;&gt;
   2.764 -}
   2.765 -
   2.766 -</PRE></TD></TR><TR><TD><PRE>&lt;IN_PAREN&gt; TOKEN : { 
   2.767 -&lt;NATURAL_GT: &quot;&gt;&quot;&gt;
   2.768 -|&lt;NATURAL_GTE: &quot;&gt;=&quot;&gt;
   2.769 -}
   2.770 -
   2.771 -</PRE></TD></TR><TR><TD><PRE>&lt;NO_SPACE_EXPRESSION&gt; TOKEN : { 
   2.772 -&lt;TERMINATING_WHITESPACE: ([&quot;\t&quot;,&quot;\n&quot;,&quot;\r&quot;,&quot; &quot;])+&gt;
   2.773 -}
   2.774 -
   2.775 -</PRE></TD></TR><TR><TD><PRE>&lt;NAMED_PARAMETER_EXPRESSION&gt; TOKEN : { 
   2.776 -&lt;TERMINATING_EXCLAM: &quot;!&quot; ([&quot;\t&quot;,&quot;\n&quot;,&quot;\r&quot;,&quot; &quot;])+&gt;
   2.777 -}
   2.778 -
   2.779 -</PRE></TD></TR><TR><TD><PRE>&lt;NO_PARSE&gt; TOKEN : { 
   2.780 -&lt;TERSE_COMMENT_END: &quot;--&gt;&quot; | &quot;--]&quot;&gt;
   2.781 -|&lt;MAYBE_END: ([&quot;&lt;&quot;,&quot;[&quot;]) &quot;/&quot; (&quot;#&quot;)? ([&quot;A&quot;-&quot;Z&quot;,&quot;a&quot;-&quot;z&quot;])+ ([&quot;\t&quot;,&quot;\n&quot;,&quot;\r&quot;,&quot; &quot;])* ([&quot;&gt;&quot;,&quot;]&quot;])&gt;
   2.782 -|&lt;KEEP_GOING: ([&quot;\u0000&quot;-&quot;,&quot;,&quot;.&quot;-&quot;;&quot;,&quot;=&quot;-&quot;Z&quot;,&quot;\\&quot;-&quot;\uffff&quot;])+&gt;
   2.783 -|&lt;LONE_LESS_THAN_OR_DASH: [&quot;-&quot;,&quot;&lt;&quot;,&quot;[&quot;]&gt;
   2.784 -}
   2.785 -
   2.786 -</PRE></TD></TR>  </TABLE>
   2.787 -
   2.788 -  </BODY>
   2.789 -</HTML>
     3.1 --- a/src/ru/ide/org-netbeans-libs-freemarker/ext/freemarker-2.3.19/freemarker/core/FMParser_ru.html	Mon Sep 23 23:42:13 2013 +0900
     3.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.3 @@ -1,786 +0,0 @@
     3.4 -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
     3.5 -
     3.6 -
     3.7 -<HTML>
     3.8 -  <HEAD>
     3.9 -<meta http-equiv="content-type" content="text/html; charset=UTF-8">
    3.10 -    <TITLE>BNF для FMParser</TITLE>
    3.11 -  </HEAD>
    3.12 -  <BODY>
    3.13 -   <H1 ALIGN=CENTER>BNF для FMParser</H1>
    3.14 -
    3.15 -   <H2 ALIGN=CENTER>NON-TERMINALS</H2>
    3.16 -      <TABLE>
    3.17 -    <TR><TD><PRE>// Now the actual parsing code, starting
    3.18 -
    3.19 -// with the productions for FreeMarker's
    3.20 -
    3.21 -// expression syntax.
    3.22 -
    3.23 -
    3.24 -/**
    3.25 - * This is the same as OrExpression, since
    3.26 - * the OR is the operator with the lowest
    3.27 - * precedence.
    3.28 - */</PRE></TD></TR>
    3.29 -    <TR>
    3.30 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod1">Expression </a></TD>
    3.31 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    3.32 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    3.33 -    <a HREF="#prod2">OrExpression </a>
    3.34 -       </TD>
    3.35 -    </TR>
    3.36 -    <TR><TD><PRE>/**
    3.37 - * Lowest level expression, a literal, a variable,
    3.38 - * or a possibly more complex expression bounded
    3.39 - * by parentheses.
    3.40 - */</PRE></TD></TR>
    3.41 -    <TR>
    3.42 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod3">PrimaryExpression </a></TD>
    3.43 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    3.44 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    3.45 - ( <a HREF="#prod4">NumberLiteral</a> | <a HREF="#prod5">HashLiteral</a> | <a HREF="#prod6">StringLiteral</a> | <a HREF="#prod7">BooleanLiteral</a> | <a HREF="#prod8">ListLiteral</a> | <a HREF="#prod9">Identifier</a> | <a HREF="#prod10">Parenthesis</a> | <a HREF="#prod11">BuiltinVariable</a> ) ( <a HREF="#prod12">AddSubExpression</a> )* 
    3.46 -       </TD>
    3.47 -    </TR>
    3.48 -    <TR><TD><PRE></PRE></TD></TR>
    3.49 -    <TR>
    3.50 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod10">Parenthesis </a></TD>
    3.51 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    3.52 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    3.53 -        &lt;OPEN_PAREN> <a HREF="#prod1">Expression </a> &lt;CLOSE_PAREN>
    3.54 -       </TD>
    3.55 -    </TR>
    3.56 -    <TR><TD><PRE>/**
    3.57 - * A primary expression preceded by zero or
    3.58 - * more unary operators. (The only unary operator we
    3.59 - * currently have is the NOT.)
    3.60 - */</PRE></TD></TR>
    3.61 -    <TR>
    3.62 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod13">UnaryExpression </a></TD>
    3.63 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    3.64 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    3.65 - ( <a HREF="#prod14">UnaryPlusMinusExpression</a> | <a HREF="#prod15">NotExpression</a> | <a HREF="#prod3">PrimaryExpression</a> )       </TD>
    3.66 -    </TR>
    3.67 -    <TR><TD><PRE></PRE></TD></TR>
    3.68 -    <TR>
    3.69 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod15">NotExpression </a></TD>
    3.70 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    3.71 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    3.72 -        ( &lt;EXCLAM> )+ <a HREF="#prod3">PrimaryExpression </a>
    3.73 -       </TD>
    3.74 -    </TR>
    3.75 -    <TR><TD><PRE></PRE></TD></TR>
    3.76 -    <TR>
    3.77 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod14">UnaryPlusMinusExpression </a></TD>
    3.78 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    3.79 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    3.80 - ( &lt;PLUS> | &lt;MINUS> ) <a HREF="#prod3">PrimaryExpression </a>
    3.81 -       </TD>
    3.82 -    </TR>
    3.83 -    <TR><TD><PRE></PRE></TD></TR>
    3.84 -    <TR>
    3.85 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod16">AdditiveExpression </a></TD>
    3.86 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    3.87 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    3.88 -    <a HREF="#prod17">MultiplicativeExpression</a> ( ( ( &lt;PLUS> | &lt;MINUS> ) ) <a HREF="#prod17">MultiplicativeExpression</a> )* 
    3.89 -       </TD>
    3.90 -    </TR>
    3.91 -    <TR><TD><PRE>/**
    3.92 - * A unary expression followed by zero or more
    3.93 - * unary expressions with operators in between.
    3.94 - */</PRE></TD></TR>
    3.95 -    <TR>
    3.96 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod17">MultiplicativeExpression </a></TD>
    3.97 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    3.98 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    3.99 -    <a HREF="#prod13">UnaryExpression</a> ( ( ( &lt;TIMES> | &lt;DIVIDE> | &lt;PERCENT> ) ) <a HREF="#prod13">UnaryExpression</a> )* 
   3.100 -       </TD>
   3.101 -    </TR>
   3.102 -    <TR><TD><PRE></PRE></TD></TR>
   3.103 -    <TR>
   3.104 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod18">EqualityExpression </a></TD>
   3.105 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.106 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.107 -    <a HREF="#prod19">RelationalExpression</a> ( ( &lt;NOT_EQUALS> | &lt;EQUALS> | &lt;DOUBLE_EQUALS> ) <a HREF="#prod19">RelationalExpression</a> )? 
   3.108 -       </TD>
   3.109 -    </TR>
   3.110 -    <TR><TD><PRE></PRE></TD></TR>
   3.111 -    <TR>
   3.112 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod19">RelationalExpression </a></TD>
   3.113 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.114 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.115 -    <a HREF="#prod20">RangeExpression</a> ( ( &lt;NATURAL_GTE> | &lt;ESCAPED_GTE> | &lt;NATURAL_GT> | &lt;ESCAPED_GT> | &lt;LESS_THAN_EQUALS> | &lt;LESS_THAN> ) <a HREF="#prod20">RangeExpression</a> )? 
   3.116 -       </TD>
   3.117 -    </TR>
   3.118 -    <TR><TD><PRE></PRE></TD></TR>
   3.119 -    <TR>
   3.120 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod20">RangeExpression </a></TD>
   3.121 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.122 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.123 -    <a HREF="#prod16">AdditiveExpression</a> ( &lt;DOT_DOT> ( <a HREF="#prod16">AdditiveExpression</a> )? )? 
   3.124 -       </TD>
   3.125 -    </TR>
   3.126 -    <TR><TD><PRE></PRE></TD></TR>
   3.127 -    <TR>
   3.128 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod21">AndExpression </a></TD>
   3.129 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.130 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.131 -    <a HREF="#prod18">EqualityExpression</a> ( &lt;AND> <a HREF="#prod18">EqualityExpression</a> )* 
   3.132 -       </TD>
   3.133 -    </TR>
   3.134 -    <TR><TD><PRE></PRE></TD></TR>
   3.135 -    <TR>
   3.136 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod2">OrExpression </a></TD>
   3.137 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.138 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.139 -    <a HREF="#prod21">AndExpression</a> ( &lt;OR> <a HREF="#prod21">AndExpression</a> )* 
   3.140 -       </TD>
   3.141 -    </TR>
   3.142 -    <TR><TD><PRE></PRE></TD></TR>
   3.143 -    <TR>
   3.144 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod8">ListLiteral </a></TD>
   3.145 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.146 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.147 -        &lt;OPEN_BRACKET> <a HREF="#prod22">PositionalArgs</a> &lt;CLOSE_BRACKET> 
   3.148 -       </TD>
   3.149 -    </TR>
   3.150 -    <TR><TD><PRE></PRE></TD></TR>
   3.151 -    <TR>
   3.152 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod4">NumberLiteral </a></TD>
   3.153 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.154 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.155 - ( &lt;INTEGER> | &lt;DECIMAL> )       </TD>
   3.156 -    </TR>
   3.157 -    <TR><TD><PRE></PRE></TD></TR>
   3.158 -    <TR>
   3.159 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod9">Identifier </a></TD>
   3.160 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.161 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.162 -        &lt;ID> 
   3.163 -       </TD>
   3.164 -    </TR>
   3.165 -    <TR><TD><PRE></PRE></TD></TR>
   3.166 -    <TR>
   3.167 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod23">IdentifierOrStringLiteral </a></TD>
   3.168 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.169 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.170 - ( <a HREF="#prod9">Identifier</a> | <a HREF="#prod6">StringLiteral</a> )       </TD>
   3.171 -    </TR>
   3.172 -    <TR><TD><PRE></PRE></TD></TR>
   3.173 -    <TR>
   3.174 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod11">BuiltinVariable </a></TD>
   3.175 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.176 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.177 -        &lt;DOT> &lt;ID> 
   3.178 -       </TD>
   3.179 -    </TR>
   3.180 -    <TR><TD><PRE>/**
   3.181 - * Production that builds up an expression
   3.182 - * using the dot or dynamic key name
   3.183 - * or the args list if this is a method invocation.
   3.184 - */</PRE></TD></TR>
   3.185 -    <TR>
   3.186 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod12">AddSubExpression </a></TD>
   3.187 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.188 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.189 - ( <a HREF="#prod24">DotVariable</a> | <a HREF="#prod25">DynamicKey</a> | <a HREF="#prod26">MethodArgs</a> | <a HREF="#prod27">BuiltIn</a> | <a HREF="#prod28">DefaultTo</a> | <a HREF="#prod29">Exists</a> )       </TD>
   3.190 -    </TR>
   3.191 -    <TR><TD><PRE></PRE></TD></TR>
   3.192 -    <TR>
   3.193 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod28">DefaultTo </a></TD>
   3.194 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.195 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.196 - ( &lt;TERMINATING_EXCLAM> | ( &lt;EXCLAM> ( <a HREF="#prod1">Expression</a> )? ) )       </TD>
   3.197 -    </TR>
   3.198 -    <TR><TD><PRE></PRE></TD></TR>
   3.199 -    <TR>
   3.200 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod29">Exists </a></TD>
   3.201 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.202 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.203 -        &lt;EXISTS> 
   3.204 -       </TD>
   3.205 -    </TR>
   3.206 -    <TR><TD><PRE></PRE></TD></TR>
   3.207 -    <TR>
   3.208 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod27">BuiltIn </a></TD>
   3.209 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.210 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.211 -        &lt;BUILT_IN> &lt;ID> 
   3.212 -       </TD>
   3.213 -    </TR>
   3.214 -    <TR><TD><PRE>/**
   3.215 - * production for when a key is specified by &lt;DOT&gt; + keyname
   3.216 - */</PRE></TD></TR>
   3.217 -    <TR>
   3.218 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod24">DotVariable </a></TD>
   3.219 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.220 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.221 -        &lt;DOT> ( &lt;ID> | &lt;TIMES> | &lt;DOUBLE_STAR> | ( &lt;LESS_THAN> | &lt;LESS_THAN_EQUALS> | &lt;ESCAPED_GT> | &lt;ESCAPED_GTE> | &lt;FALSE> | &lt;TRUE> | &lt;IN> | &lt;AS> | &lt;USING> ) )       </TD>
   3.222 -    </TR>
   3.223 -    <TR><TD><PRE>/**
   3.224 - * production for when the key is specified
   3.225 - * in brackets.
   3.226 - */</PRE></TD></TR>
   3.227 -    <TR>
   3.228 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod25">DynamicKey </a></TD>
   3.229 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.230 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.231 -        &lt;OPEN_BRACKET> <a HREF="#prod1">Expression</a> &lt;CLOSE_BRACKET> 
   3.232 -       </TD>
   3.233 -    </TR>
   3.234 -    <TR><TD><PRE>/**
   3.235 - * production for an arglist part of a method invocation.
   3.236 - */</PRE></TD></TR>
   3.237 -    <TR>
   3.238 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod26">MethodArgs </a></TD>
   3.239 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.240 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.241 -        &lt;OPEN_PAREN> <a HREF="#prod22">PositionalArgs</a> &lt;CLOSE_PAREN> 
   3.242 -       </TD>
   3.243 -    </TR>
   3.244 -    <TR><TD><PRE></PRE></TD></TR>
   3.245 -    <TR>
   3.246 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod6">StringLiteral </a></TD>
   3.247 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.248 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.249 - ( &lt;STRING_LITERAL> | &lt;RAW_STRING> )      </TD>
   3.250 -    </TR>
   3.251 -    <TR><TD><PRE></PRE></TD></TR>
   3.252 -    <TR>
   3.253 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod7">BooleanLiteral </a></TD>
   3.254 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.255 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.256 - ( &lt;FALSE> | &lt;TRUE> )       </TD>
   3.257 -    </TR>
   3.258 -    <TR><TD><PRE></PRE></TD></TR>
   3.259 -    <TR>
   3.260 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod5">HashLiteral </a></TD>
   3.261 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.262 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.263 -        &lt;OPEN_BRACE> ( <a HREF="#prod1">Expression</a> ( &lt;COMMA> | &lt;COLON> ) <a HREF="#prod1">Expression</a> ( &lt;COMMA> <a HREF="#prod1">Expression</a> ( &lt;COMMA> | &lt;COLON> ) <a HREF="#prod1">Expression</a> )* )? &lt;CLOSE_BRACE> 
   3.264 -       </TD>
   3.265 -    </TR>
   3.266 -    <TR><TD><PRE>/**
   3.267 - * A production representing the ${...}
   3.268 - * that outputs a variable.
   3.269 - */</PRE></TD></TR>
   3.270 -    <TR>
   3.271 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod30">StringOutput </a></TD>
   3.272 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.273 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.274 -        &lt;OUTPUT_ESCAPE> <a HREF="#prod1">Expression</a> &lt;CLOSE_BRACE> 
   3.275 -       </TD>
   3.276 -    </TR>
   3.277 -    <TR><TD><PRE></PRE></TD></TR>
   3.278 -    <TR>
   3.279 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod31">NumericalOutput </a></TD>
   3.280 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.281 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.282 -        &lt;NUMERICAL_ESCAPE> <a HREF="#prod1">Expression</a> ( &lt;SEMICOLON> &lt;ID> )? &lt;CLOSE_BRACE> 
   3.283 -       </TD>
   3.284 -    </TR>
   3.285 -    <TR><TD><PRE></PRE></TD></TR>
   3.286 -    <TR>
   3.287 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod32">If </a></TD>
   3.288 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.289 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.290 -        &lt;IF> <a HREF="#prod1">Expression</a> &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> ( &lt;ELSE_IF> <a HREF="#prod1">Expression</a> <a HREF="#prod34">LooseDirectiveEnd</a> <a HREF="#prod33">OptionalBlock</a> )* ( &lt;ELSE> <a HREF="#prod33">OptionalBlock</a> )? &lt;END_IF> 
   3.291 -       </TD>
   3.292 -    </TR>
   3.293 -    <TR><TD><PRE></PRE></TD></TR>
   3.294 -    <TR>
   3.295 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod35">Attempt </a></TD>
   3.296 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.297 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.298 -        &lt;ATTEMPT> <a HREF="#prod33">OptionalBlock</a> <a HREF="#prod36">Recover</a> ( &lt;END_RECOVER> | &lt;END_ATTEMPT> )       </TD>
   3.299 -    </TR>
   3.300 -    <TR><TD><PRE></PRE></TD></TR>
   3.301 -    <TR>
   3.302 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod36">Recover </a></TD>
   3.303 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.304 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.305 -        &lt;RECOVER> <a HREF="#prod33">OptionalBlock </a>
   3.306 -       </TD>
   3.307 -    </TR>
   3.308 -    <TR><TD><PRE></PRE></TD></TR>
   3.309 -    <TR>
   3.310 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod37">List </a></TD>
   3.311 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.312 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.313 -        &lt;LIST> <a HREF="#prod1">Expression</a> &lt;AS> &lt;ID> &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> &lt;END_LIST> 
   3.314 -       </TD>
   3.315 -    </TR>
   3.316 -    <TR><TD><PRE></PRE></TD></TR>
   3.317 -    <TR>
   3.318 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod38">ForEach </a></TD>
   3.319 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.320 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.321 -        &lt;FOREACH> &lt;ID> &lt;IN> <a HREF="#prod1">Expression</a> &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> &lt;END_FOREACH> 
   3.322 -       </TD>
   3.323 -    </TR>
   3.324 -    <TR><TD><PRE></PRE></TD></TR>
   3.325 -    <TR>
   3.326 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod39">Visit </a></TD>
   3.327 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.328 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.329 -        &lt;VISIT> <a HREF="#prod1">Expression</a> ( &lt;USING> <a HREF="#prod1">Expression</a> )? <a HREF="#prod34">LooseDirectiveEnd </a>
   3.330 -       </TD>
   3.331 -    </TR>
   3.332 -    <TR><TD><PRE></PRE></TD></TR>
   3.333 -    <TR>
   3.334 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod40">Recurse </a></TD>
   3.335 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.336 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.337 - ( &lt;SIMPLE_RECURSE> | ( &lt;RECURSE> ( <a HREF="#prod1">Expression</a> )? ( &lt;USING> <a HREF="#prod1">Expression</a> )? <a HREF="#prod34">LooseDirectiveEnd</a> ) )       </TD>
   3.338 -    </TR>
   3.339 -    <TR><TD><PRE></PRE></TD></TR>
   3.340 -    <TR>
   3.341 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod41">FallBack </a></TD>
   3.342 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.343 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.344 -        &lt;FALLBACK> 
   3.345 -       </TD>
   3.346 -    </TR>
   3.347 -    <TR><TD><PRE>/**
   3.348 - * Production used to break out of a loop or a switch block.
   3.349 - */</PRE></TD></TR>
   3.350 -    <TR>
   3.351 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod42">Break </a></TD>
   3.352 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.353 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.354 -        &lt;BREAK> 
   3.355 -       </TD>
   3.356 -    </TR>
   3.357 -    <TR><TD><PRE>/**
   3.358 - * Production used to jump out of a macro.
   3.359 - * The stop instruction terminates the rendering of the template.
   3.360 - */</PRE></TD></TR>
   3.361 -    <TR>
   3.362 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod43">Return </a></TD>
   3.363 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.364 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.365 - ( &lt;SIMPLE_RETURN> | &lt;RETURN> <a HREF="#prod1">Expression</a> <a HREF="#prod34">LooseDirectiveEnd</a> )       </TD>
   3.366 -    </TR>
   3.367 -    <TR><TD><PRE></PRE></TD></TR>
   3.368 -    <TR>
   3.369 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod44">Stop </a></TD>
   3.370 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.371 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.372 - ( &lt;HALT> | &lt;STOP> <a HREF="#prod1">Expression</a> <a HREF="#prod34">LooseDirectiveEnd</a> )       </TD>
   3.373 -    </TR>
   3.374 -    <TR><TD><PRE></PRE></TD></TR>
   3.375 -    <TR>
   3.376 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod45">Nested </a></TD>
   3.377 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.378 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.379 - ( ( &lt;SIMPLE_NESTED> )| ( &lt;NESTED> <a HREF="#prod22">PositionalArgs</a> <a HREF="#prod34">LooseDirectiveEnd</a> ) )       </TD>
   3.380 -    </TR>
   3.381 -    <TR><TD><PRE></PRE></TD></TR>
   3.382 -    <TR>
   3.383 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod46">Flush </a></TD>
   3.384 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.385 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.386 -        &lt;FLUSH> 
   3.387 -       </TD>
   3.388 -    </TR>
   3.389 -    <TR><TD><PRE></PRE></TD></TR>
   3.390 -    <TR>
   3.391 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod47">Trim </a></TD>
   3.392 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.393 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.394 - ( &lt;TRIM> | &lt;LTRIM> | &lt;RTRIM> | &lt;NOTRIM> )       </TD>
   3.395 -    </TR>
   3.396 -    <TR><TD><PRE></PRE></TD></TR>
   3.397 -    <TR>
   3.398 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod48">Assign </a></TD>
   3.399 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.400 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.401 - ( &lt;ASSIGN> | &lt;GLOBALASSIGN> | &lt;LOCALASSIGN> ) <a HREF="#prod23">IdentifierOrStringLiteral</a> ( ( &lt;EQUALS> <a HREF="#prod1">Expression</a> ( ( &lt;COMMA> )? <a HREF="#prod23">IdentifierOrStringLiteral</a> &lt;EQUALS> <a HREF="#prod1">Expression</a> )* ( &lt;IN> <a HREF="#prod1">Expression</a> )? <a HREF="#prod34">LooseDirectiveEnd</a> )| ( ( &lt;IN> <a HREF="#prod1">Expression</a> )? &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> ( &lt;END_LOCAL> | &lt;END_ASSIGN> | &lt;END_GLOBAL> ) ) )      </TD>
   3.402 -    </TR>
   3.403 -    <TR><TD><PRE></PRE></TD></TR>
   3.404 -    <TR>
   3.405 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod49">Include </a></TD>
   3.406 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.407 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.408 -        &lt;INCLUDE> <a HREF="#prod1">Expression</a> ( &lt;SEMICOLON> )? ( &lt;ID> &lt;EQUALS> <a HREF="#prod1">Expression</a> )* <a HREF="#prod34">LooseDirectiveEnd </a>
   3.409 -       </TD>
   3.410 -    </TR>
   3.411 -    <TR><TD><PRE></PRE></TD></TR>
   3.412 -    <TR>
   3.413 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod50">Import </a></TD>
   3.414 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.415 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.416 -        &lt;IMPORT> <a HREF="#prod1">Expression</a> &lt;AS> &lt;ID> <a HREF="#prod34">LooseDirectiveEnd </a>
   3.417 -       </TD>
   3.418 -    </TR>
   3.419 -    <TR><TD><PRE></PRE></TD></TR>
   3.420 -    <TR>
   3.421 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod51">Macro </a></TD>
   3.422 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.423 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.424 - ( &lt;MACRO> | &lt;FUNCTION> ) <a HREF="#prod23">IdentifierOrStringLiteral</a> ( &lt;OPEN_PAREN> )? ( &lt;ID> ( &lt;ELLIPSIS> )? ( &lt;EQUALS> <a HREF="#prod1">Expression</a> )? ( &lt;COMMA> )? )* ( &lt;CLOSE_PAREN> )? &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> ( &lt;END_MACRO> | &lt;END_FUNCTION> )       </TD>
   3.425 -    </TR>
   3.426 -    <TR><TD><PRE></PRE></TD></TR>
   3.427 -    <TR>
   3.428 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod52">Compress </a></TD>
   3.429 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.430 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.431 -        &lt;COMPRESS> <a HREF="#prod33">OptionalBlock</a> &lt;END_COMPRESS> 
   3.432 -       </TD>
   3.433 -    </TR>
   3.434 -    <TR><TD><PRE></PRE></TD></TR>
   3.435 -    <TR>
   3.436 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod53">UnifiedMacroTransform </a></TD>
   3.437 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.438 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.439 -        &lt;UNIFIED_CALL> <a HREF="#prod1">Expression</a> ( &lt;TERMINATING_WHITESPACE> )? ( <a HREF="#prod54">NamedArgs</a> | <a HREF="#prod22">PositionalArgs</a> ) ( &lt;SEMICOLON> ( ( &lt;TERMINATING_WHITESPACE> )? &lt;ID> ( ( &lt;TERMINATING_WHITESPACE> )? &lt;COMMA> ( &lt;TERMINATING_WHITESPACE> )? &lt;ID> )* )? )? ( &lt;EMPTY_DIRECTIVE_END> | ( &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> &lt;UNIFIED_CALL_END> ) )       </TD>
   3.440 -    </TR>
   3.441 -    <TR><TD><PRE></PRE></TD></TR>
   3.442 -    <TR>
   3.443 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod55">Call </a></TD>
   3.444 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.445 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.446 -        &lt;CALL> &lt;ID> ( <a HREF="#prod54">NamedArgs</a> | ( ( &lt;OPEN_PAREN> )? <a HREF="#prod22">PositionalArgs</a> ( &lt;CLOSE_PAREN> )? ) ) <a HREF="#prod34">LooseDirectiveEnd </a>
   3.447 -       </TD>
   3.448 -    </TR>
   3.449 -    <TR><TD><PRE></PRE></TD></TR>
   3.450 -    <TR>
   3.451 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod54">NamedArgs </a></TD>
   3.452 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.453 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.454 -        ( &lt;ID> &lt;EQUALS> <a HREF="#prod1">Expression</a> )+ 
   3.455 -       </TD>
   3.456 -    </TR>
   3.457 -    <TR><TD><PRE></PRE></TD></TR>
   3.458 -    <TR>
   3.459 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod22">PositionalArgs </a></TD>
   3.460 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.461 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.462 -        ( <a HREF="#prod1">Expression</a> ( ( &lt;COMMA> )? <a HREF="#prod1">Expression</a> )* )? 
   3.463 -       </TD>
   3.464 -    </TR>
   3.465 -    <TR><TD><PRE></PRE></TD></TR>
   3.466 -    <TR>
   3.467 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod56">Comment </a></TD>
   3.468 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.469 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.470 - ( &lt;COMMENT> | &lt;TERSE_COMMENT> ) <a HREF="#prod57">UnparsedContent </a>
   3.471 -       </TD>
   3.472 -    </TR>
   3.473 -    <TR><TD><PRE></PRE></TD></TR>
   3.474 -    <TR>
   3.475 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod58">NoParse </a></TD>
   3.476 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.477 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.478 -        &lt;NOPARSE> <a HREF="#prod57">UnparsedContent </a>
   3.479 -       </TD>
   3.480 -    </TR>
   3.481 -    <TR><TD><PRE></PRE></TD></TR>
   3.482 -    <TR>
   3.483 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod59">Transform </a></TD>
   3.484 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.485 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.486 -        &lt;TRANSFORM> <a HREF="#prod1">Expression</a> ( &lt;SEMICOLON> )? ( &lt;ID> &lt;EQUALS> <a HREF="#prod1">Expression</a> )* ( &lt;EMPTY_DIRECTIVE_END> | ( &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> &lt;END_TRANSFORM> ) )       </TD>
   3.487 -    </TR>
   3.488 -    <TR><TD><PRE></PRE></TD></TR>
   3.489 -    <TR>
   3.490 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod60">Switch </a></TD>
   3.491 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.492 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.493 -        &lt;SWITCH> <a HREF="#prod1">Expression</a> &lt;DIRECTIVE_END> ( <a HREF="#prod61">Case</a> )* ( &lt;WHITESPACE> )? &lt;END_SWITCH> 
   3.494 -       </TD>
   3.495 -    </TR>
   3.496 -    <TR><TD><PRE></PRE></TD></TR>
   3.497 -    <TR>
   3.498 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod61">Case </a></TD>
   3.499 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.500 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.501 -        ( &lt;WHITESPACE> )? ( &lt;CASE> <a HREF="#prod1">Expression</a> &lt;DIRECTIVE_END> | &lt;DEFAUL> ) <a HREF="#prod33">OptionalBlock </a>
   3.502 -       </TD>
   3.503 -    </TR>
   3.504 -    <TR><TD><PRE></PRE></TD></TR>
   3.505 -    <TR>
   3.506 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod62">Escape </a></TD>
   3.507 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.508 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.509 -        &lt;ESCAPE> &lt;ID> &lt;AS> <a HREF="#prod1">Expression</a> &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> &lt;END_ESCAPE> 
   3.510 -       </TD>
   3.511 -    </TR>
   3.512 -    <TR><TD><PRE></PRE></TD></TR>
   3.513 -    <TR>
   3.514 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod63">NoEscape </a></TD>
   3.515 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.516 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.517 -        &lt;NOESCAPE> <a HREF="#prod33">OptionalBlock</a> &lt;END_NOESCAPE> 
   3.518 -       </TD>
   3.519 -    </TR>
   3.520 -    <TR><TD><PRE>/**
   3.521 - * Production to terminate potentially empty elements. Either a &quot;&gt;&quot; or &quot;/&gt;&quot;
   3.522 - */</PRE></TD></TR>
   3.523 -    <TR>
   3.524 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod34">LooseDirectiveEnd </a></TD>
   3.525 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.526 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.527 - ( &lt;DIRECTIVE_END> | &lt;EMPTY_DIRECTIVE_END> )      </TD>
   3.528 -    </TR>
   3.529 -    <TR><TD><PRE></PRE></TD></TR>
   3.530 -    <TR>
   3.531 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod64">Setting </a></TD>
   3.532 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.533 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.534 -        &lt;SETTING> &lt;ID> &lt;EQUALS> <a HREF="#prod1">Expression</a> <a HREF="#prod34">LooseDirectiveEnd </a>
   3.535 -       </TD>
   3.536 -    </TR>
   3.537 -    <TR><TD><PRE>/**
   3.538 - * A production for FreeMarker directives.
   3.539 - */</PRE></TD></TR>
   3.540 -    <TR>
   3.541 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod65">FreemarkerDirective </a></TD>
   3.542 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.543 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.544 - ( <a HREF="#prod32">If</a> | <a HREF="#prod37">List</a> | <a HREF="#prod38">ForEach</a> | <a HREF="#prod48">Assign</a> | <a HREF="#prod49">Include</a> | <a HREF="#prod50">Import</a> | <a HREF="#prod51">Macro</a> | <a HREF="#prod52">Compress</a> | <a HREF="#prod53">UnifiedMacroTransform</a> | <a HREF="#prod55">Call</a> | <a HREF="#prod56">Comment</a> | <a HREF="#prod58">NoParse</a> | <a HREF="#prod59">Transform</a> | <a HREF="#prod60">Switch</a> | <a HREF="#prod64">Setting</a> | <a HREF="#prod42">Break</a> | <a HREF="#prod43">Return</a> | <a HREF="#prod44">Stop</a> | <a HREF="#prod46">Flush</a> | <a HREF="#prod47">Trim</a> | <a HREF="#prod45">Nested</a> | <a HREF="#prod62">Escape</a> | <a HREF="#prod63">NoEscape</a> | <a HREF="#prod39">Visit</a> | <a HREF="#prod40">Recurse</a> | <a HREF="#prod41">FallBack</a> | <a HREF="#prod35">Attempt</a> )       </TD>
   3.545 -    </TR>
   3.546 -    <TR><TD><PRE>/**
   3.547 - * Production for a block of raw text
   3.548 - * i.e. text that contains no
   3.549 - * FreeMarker directives.
   3.550 - */</PRE></TD></TR>
   3.551 -    <TR>
   3.552 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod66">PCData </a></TD>
   3.553 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.554 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.555 -        ( ( &lt;WHITESPACE> | &lt;PRINTABLE_CHARS> | &lt;FALSE_ALERT> ) )+ 
   3.556 -       </TD>
   3.557 -    </TR>
   3.558 -    <TR><TD><PRE>/**
   3.559 - * Production for dealing with unparsed content,
   3.560 - * i.e. what is inside a comment or noparse tag.
   3.561 - * It returns the ending token. The content
   3.562 - * of the tag is put in buf.
   3.563 - */</PRE></TD></TR>
   3.564 -    <TR>
   3.565 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod57">UnparsedContent </a></TD>
   3.566 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.567 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.568 -        ( ( &lt;KEEP_GOING> | &lt;MAYBE_END> | &lt;TERSE_COMMENT_END> | &lt;LONE_LESS_THAN_OR_DASH> ) )+
   3.569 -       </TD>
   3.570 -    </TR>
   3.571 -    <TR><TD><PRE></PRE></TD></TR>
   3.572 -    <TR>
   3.573 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod67">Content </a></TD>
   3.574 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.575 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.576 -        ( ( <a HREF="#prod66">PCData</a> | <a HREF="#prod30">StringOutput</a> | <a HREF="#prod31">NumericalOutput</a> | <a HREF="#prod65">FreemarkerDirective</a> ) )+ 
   3.577 -       </TD>
   3.578 -    </TR>
   3.579 -    <TR><TD><PRE>/**
   3.580 - * A production freemarker text that may contain
   3.581 - * ${...} and #{...} but no directives.
   3.582 - */</PRE></TD></TR>
   3.583 -    <TR>
   3.584 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod68">FreeMarkerText </a></TD>
   3.585 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.586 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.587 -        ( ( <a HREF="#prod66">PCData</a> | <a HREF="#prod30">StringOutput</a> | <a HREF="#prod31">NumericalOutput</a> ) )+ 
   3.588 -       </TD>
   3.589 -    </TR>
   3.590 -    <TR><TD><PRE>/**
   3.591 - * A production for a block of optional content.
   3.592 - * Returns an empty Text block if there is no
   3.593 - * content.
   3.594 - */</PRE></TD></TR>
   3.595 -    <TR>
   3.596 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod33">OptionalBlock </a></TD>
   3.597 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.598 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.599 -        ( <a HREF="#prod67">Content </a> )?
   3.600 -       </TD>
   3.601 -    </TR>
   3.602 -    <TR><TD><PRE></PRE></TD></TR>
   3.603 -    <TR>
   3.604 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod69">HeaderElement </a></TD>
   3.605 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.606 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.607 -        ( &lt;WHITESPACE> )? ( &lt;TRIVIAL_FTL_HEADER> | ( &lt;FTL_HEADER> ( &lt;ID> &lt;EQUALS> <a HREF="#prod1">Expression</a> )* ) <a HREF="#prod34">LooseDirectiveEnd</a> )      </TD>
   3.608 -    </TR>
   3.609 -    <TR><TD><PRE></PRE></TD></TR>
   3.610 -    <TR>
   3.611 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod70">ParamList </a></TD>
   3.612 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.613 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.614 -        ( <a HREF="#prod9">Identifier</a> &lt;EQUALS> <a HREF="#prod1">Expression</a> ( &lt;COMMA> )? )+ 
   3.615 -       </TD>
   3.616 -    </TR>
   3.617 -    <TR><TD><PRE>/**
   3.618 - * Root production to be used when parsing
   3.619 - * an entire file.
   3.620 - */</PRE></TD></TR>
   3.621 -    <TR>
   3.622 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod71">Root </a></TD>
   3.623 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   3.624 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   3.625 -        ( <a HREF="#prod69">HeaderElement</a> )? <a HREF="#prod33">OptionalBlock</a> &lt;EOF> 
   3.626 -       </TD>
   3.627 -    </TR>
   3.628 -      </TABLE>
   3.629 -<HR>
   3.630 -  <H2 ALIGN=CENTER>TOKENS</H2>
   3.631 -  <TABLE>
   3.632 -<TR><TD><PRE>&lt;DEFAULT&gt; TOKEN : { 
   3.633 -&lt;ATTEMPT: &lt;START_TAG&gt; &quot;attempt&quot; &lt;CLOSE_TAG1&gt;&gt;
   3.634 -|&lt;RECOVER: &lt;START_TAG&gt; &quot;recover&quot; &lt;CLOSE_TAG1&gt;&gt;
   3.635 -|&lt;IF: &lt;START_TAG&gt; &quot;if&quot; &lt;BLANK&gt;&gt;
   3.636 -|&lt;ELSE_IF: &lt;START_TAG&gt; &quot;elseif&quot; &lt;BLANK&gt;&gt;
   3.637 -|&lt;LIST: &lt;START_TAG&gt; &quot;list&quot; &lt;BLANK&gt;&gt;
   3.638 -|&lt;FOREACH: &lt;START_TAG&gt; &quot;foreach&quot; &lt;BLANK&gt;&gt;
   3.639 -|&lt;SWITCH: &lt;START_TAG&gt; &quot;switch&quot; &lt;BLANK&gt;&gt;
   3.640 -|&lt;CASE: &lt;START_TAG&gt; &quot;case&quot; &lt;BLANK&gt;&gt;
   3.641 -|&lt;ASSIGN: &lt;START_TAG&gt; &quot;assign&quot; &lt;BLANK&gt;&gt;
   3.642 -|&lt;GLOBALASSIGN: &lt;START_TAG&gt; &quot;global&quot; &lt;BLANK&gt;&gt;
   3.643 -|&lt;LOCALASSIGN: &lt;START_TAG&gt; &quot;local&quot; &lt;BLANK&gt;&gt;
   3.644 -|&lt;INCLUDE: &lt;START_TAG&gt; &quot;include&quot; &lt;BLANK&gt;&gt;
   3.645 -|&lt;IMPORT: &lt;START_TAG&gt; &quot;import&quot; &lt;BLANK&gt;&gt;
   3.646 -|&lt;FUNCTION: &lt;START_TAG&gt; &quot;function&quot; &lt;BLANK&gt;&gt;
   3.647 -|&lt;MACRO: &lt;START_TAG&gt; &quot;macro&quot; &lt;BLANK&gt;&gt;
   3.648 -|&lt;TRANSFORM: &lt;START_TAG&gt; &quot;transform&quot; &lt;BLANK&gt;&gt;
   3.649 -|&lt;VISIT: &lt;START_TAG&gt; &quot;visit&quot; &lt;BLANK&gt;&gt;
   3.650 -|&lt;STOP: &lt;START_TAG&gt; &quot;stop&quot; &lt;BLANK&gt;&gt;
   3.651 -|&lt;RETURN: &lt;START_TAG&gt; &quot;return&quot; &lt;BLANK&gt;&gt;
   3.652 -|&lt;CALL: &lt;START_TAG&gt; &quot;call&quot; &lt;BLANK&gt;&gt;
   3.653 -|&lt;SETTING: &lt;START_TAG&gt; &quot;setting&quot; &lt;BLANK&gt;&gt;
   3.654 -|&lt;COMPRESS: &lt;START_TAG&gt; &quot;compress&quot; &lt;CLOSE_TAG1&gt;&gt;
   3.655 -|&lt;COMMENT: &lt;START_TAG&gt; &quot;comment&quot; &lt;CLOSE_TAG1&gt;&gt;
   3.656 -|&lt;TERSE_COMMENT: ([&quot;&lt;&quot;,&quot;[&quot;]) &quot;#--&quot;&gt;
   3.657 -|&lt;NOPARSE: &lt;START_TAG&gt; &quot;noparse&quot; &lt;CLOSE_TAG1&gt;&gt;
   3.658 -|&lt;END_IF: &lt;END_TAG&gt; &quot;if&quot; &lt;CLOSE_TAG1&gt;&gt;
   3.659 -|&lt;END_LIST: &lt;END_TAG&gt; &quot;list&quot; &lt;CLOSE_TAG1&gt;&gt;
   3.660 -|&lt;END_RECOVER: &lt;END_TAG&gt; &quot;recover&quot; &lt;CLOSE_TAG1&gt;&gt;
   3.661 -|&lt;END_ATTEMPT: &lt;END_TAG&gt; &quot;attempt&quot; &lt;CLOSE_TAG1&gt;&gt;
   3.662 -|&lt;END_FOREACH: &lt;END_TAG&gt; &quot;foreach&quot; &lt;CLOSE_TAG1&gt;&gt;
   3.663 -|&lt;END_LOCAL: &lt;END_TAG&gt; &quot;local&quot; &lt;CLOSE_TAG1&gt;&gt;
   3.664 -|&lt;END_GLOBAL: &lt;END_TAG&gt; &quot;global&quot; &lt;CLOSE_TAG1&gt;&gt;
   3.665 -|&lt;END_ASSIGN: &lt;END_TAG&gt; &quot;assign&quot; &lt;CLOSE_TAG1&gt;&gt;
   3.666 -|&lt;END_FUNCTION: &lt;END_TAG&gt; &quot;function&quot; &lt;CLOSE_TAG1&gt;&gt;
   3.667 -|&lt;END_MACRO: &lt;END_TAG&gt; &quot;macro&quot; &lt;CLOSE_TAG1&gt;&gt;
   3.668 -|&lt;END_COMPRESS: &lt;END_TAG&gt; &quot;compress&quot; &lt;CLOSE_TAG1&gt;&gt;
   3.669 -|&lt;END_TRANSFORM: &lt;END_TAG&gt; &quot;transform&quot; &lt;CLOSE_TAG1&gt;&gt;
   3.670 -|&lt;END_SWITCH: &lt;END_TAG&gt; &quot;switch&quot; &lt;CLOSE_TAG1&gt;&gt;
   3.671 -|&lt;ELSE: &lt;START_TAG&gt; &quot;else&quot; &lt;CLOSE_TAG2&gt;&gt;
   3.672 -|&lt;BREAK: &lt;START_TAG&gt; &quot;break&quot; &lt;CLOSE_TAG2&gt;&gt;
   3.673 -|&lt;SIMPLE_RETURN: &lt;START_TAG&gt; &quot;return&quot; &lt;CLOSE_TAG2&gt;&gt;
   3.674 -|&lt;HALT: &lt;START_TAG&gt; &quot;stop&quot; &lt;CLOSE_TAG2&gt;&gt;
   3.675 -|&lt;FLUSH: &lt;START_TAG&gt; &quot;flush&quot; &lt;CLOSE_TAG2&gt;&gt;
   3.676 -|&lt;TRIM: &lt;START_TAG&gt; &quot;t&quot; &lt;CLOSE_TAG2&gt;&gt;
   3.677 -|&lt;LTRIM: &lt;START_TAG&gt; &quot;lt&quot; &lt;CLOSE_TAG2&gt;&gt;
   3.678 -|&lt;RTRIM: &lt;START_TAG&gt; &quot;rt&quot; &lt;CLOSE_TAG2&gt;&gt;
   3.679 -|&lt;NOTRIM: &lt;START_TAG&gt; &quot;nt&quot; &lt;CLOSE_TAG2&gt;&gt;
   3.680 -|&lt;DEFAUL: &lt;START_TAG&gt; &quot;default&quot; &lt;CLOSE_TAG1&gt;&gt;
   3.681 -|&lt;SIMPLE_NESTED: &lt;START_TAG&gt; &quot;nested&quot; &lt;CLOSE_TAG2&gt;&gt;
   3.682 -|&lt;NESTED: &lt;START_TAG&gt; &quot;nested&quot; &lt;BLANK&gt;&gt;
   3.683 -|&lt;SIMPLE_RECURSE: &lt;START_TAG&gt; &quot;recurse&quot; &lt;CLOSE_TAG2&gt;&gt;
   3.684 -|&lt;RECURSE: &lt;START_TAG&gt; &quot;recurse&quot; &lt;BLANK&gt;&gt;
   3.685 -|&lt;FALLBACK: &lt;START_TAG&gt; &quot;fallback&quot; &lt;CLOSE_TAG2&gt;&gt;
   3.686 -|&lt;ESCAPE: &lt;START_TAG&gt; &quot;escape&quot; &lt;BLANK&gt;&gt;
   3.687 -|&lt;END_ESCAPE: &lt;END_TAG&gt; &quot;escape&quot; &lt;CLOSE_TAG1&gt;&gt;
   3.688 -|&lt;NOESCAPE: &lt;START_TAG&gt; &quot;noescape&quot; &lt;CLOSE_TAG1&gt;&gt;
   3.689 -|&lt;END_NOESCAPE: &lt;END_TAG&gt; &quot;noescape&quot; &lt;CLOSE_TAG1&gt;&gt;
   3.690 -|&lt;UNIFIED_CALL: &quot;&lt;@&quot; | &quot;[@&quot;&gt;
   3.691 -|&lt;UNIFIED_CALL_END: ([&quot;&lt;&quot;,&quot;[&quot;]) &quot;/@&quot; (&lt;ID&gt; (&quot;.&quot; &lt;ID&gt;)*)? &lt;CLOSE_TAG1&gt;&gt;
   3.692 -|&lt;FTL_HEADER: (&quot;&lt;#ftl&quot; | &quot;[#ftl&quot;) &lt;BLANK&gt;&gt;
   3.693 -|&lt;TRIVIAL_FTL_HEADER: (&quot;&lt;#ftl&quot; | &quot;[#ftl&quot;) (&quot;/&quot;)? ([&quot;&gt;&quot;,&quot;]&quot;])&gt;
   3.694 -|&lt;UNKNOWN_DIRECTIVE: (&quot;[#&quot; | &quot;[/#&quot; | &quot;&lt;#&quot; | &quot;&lt;/#&quot;) ([&quot;A&quot;-&quot;Z&quot;,&quot;_&quot;,&quot;a&quot;-&quot;z&quot;])+&gt;
   3.695 -}
   3.696 -
   3.697 -</PRE></TD></TR><TR><TD><PRE>&lt;DEFAULT, NODIRECTIVE&gt; TOKEN : { 
   3.698 -&lt;WHITESPACE: ([&quot;\t&quot;,&quot;\n&quot;,&quot;\r&quot;,&quot; &quot;])+&gt;
   3.699 -|&lt;PRINTABLE_CHARS: ([&quot;\u0000&quot;-&quot;\b&quot;,&quot;\u000b&quot;-&quot;\f&quot;,&quot;\u000e&quot;-&quot;\u001f&quot;,&quot;!&quot;-&quot;\&quot;&quot;,&quot;%&quot;-&quot;;&quot;,&quot;=&quot;-&quot;Z&quot;,&quot;\\&quot;-&quot;z&quot;,&quot;|&quot;-&quot;\uffff&quot;])+&gt;
   3.700 -|&lt;FALSE_ALERT: [&quot;#&quot;,&quot;$&quot;,&quot;&lt;&quot;,&quot;[&quot;,&quot;{&quot;]&gt;
   3.701 -|&lt;OUTPUT_ESCAPE: &quot;${&quot;&gt;
   3.702 -|&lt;NUMERICAL_ESCAPE: &quot;#{&quot;&gt;
   3.703 -}
   3.704 -
   3.705 -</PRE></TD></TR><TR><TD><PRE>&lt;FM_EXPRESSION, IN_PAREN, NAMED_PARAMETER_EXPRESSION&gt; SKIP : { 
   3.706 -&lt;([&quot;\t&quot;,&quot;\n&quot;,&quot;\r&quot;,&quot; &quot;])+&gt;
   3.707 -|&lt;[&quot;&lt;&quot;,&quot;[&quot;] [&quot;!&quot;,&quot;#&quot;] &quot;--&quot;&gt;
   3.708 -}
   3.709 -
   3.710 -</PRE></TD></TR><TR><TD><PRE>&lt;EXPRESSION_COMMENT&gt; SKIP : { 
   3.711 -&lt;([&quot;\u0000&quot;-&quot;,&quot;,&quot;.&quot;-&quot;=&quot;,&quot;?&quot;-&quot;\\&quot;,&quot;^&quot;-&quot;\uffff&quot;])+&gt;
   3.712 -|&quot;&gt;&quot;
   3.713 -|&quot;]&quot;
   3.714 -|&quot;-&quot;
   3.715 -|&lt;&quot;--&gt;&quot; | &quot;--]&quot;&gt;
   3.716 -}
   3.717 -
   3.718 -</PRE></TD></TR><TR><TD><PRE>&lt;FM_EXPRESSION, IN_PAREN, NO_SPACE_EXPRESSION, NAMED_PARAMETER_EXPRESSION&gt; TOKEN : { 
   3.719 -&lt;STRING_LITERAL: &quot;\&quot;&quot; ([&quot;\u0000&quot;-&quot;!&quot;,&quot;#&quot;-&quot;[&quot;,&quot;]&quot;-&quot;\uffff&quot;] | &lt;ESCAPED_CHAR&gt;)* &quot;\&quot;&quot; | &quot;\'&quot; ([&quot;\u0000&quot;-&quot;&amp;&quot;,&quot;(&quot;-&quot;[&quot;,&quot;]&quot;-&quot;\uffff&quot;] | &lt;ESCAPED_CHAR&gt;)* &quot;\'&quot;&gt;
   3.720 -|&lt;RAW_STRING: &quot;r&quot; (&quot;\&quot;&quot; ([&quot;\u0000&quot;-&quot;!&quot;,&quot;#&quot;-&quot;\uffff&quot;])* &quot;\&quot;&quot; | &quot;\'&quot; ([&quot;\u0000&quot;-&quot;&amp;&quot;,&quot;(&quot;-&quot;\uffff&quot;])* &quot;\'&quot;)&gt;
   3.721 -|&lt;FALSE: &quot;false&quot;&gt;
   3.722 -|&lt;TRUE: &quot;true&quot;&gt;
   3.723 -|&lt;INTEGER: ([&quot;0&quot;-&quot;9&quot;])+&gt;
   3.724 -|&lt;DECIMAL: &lt;INTEGER&gt; &quot;.&quot; &lt;INTEGER&gt;&gt;
   3.725 -|&lt;DOT: &quot;.&quot;&gt;
   3.726 -|&lt;DOT_DOT: &quot;..&quot;&gt;
   3.727 -|&lt;BUILT_IN: &quot;?&quot;&gt;
   3.728 -|&lt;EXISTS: &quot;??&quot;&gt;
   3.729 -|&lt;EQUALS: &quot;=&quot;&gt;
   3.730 -|&lt;DOUBLE_EQUALS: &quot;==&quot;&gt;
   3.731 -|&lt;NOT_EQUALS: &quot;!=&quot;&gt;
   3.732 -|&lt;LESS_THAN: &quot;lt&quot; | &quot;\\lt&quot; | [&quot;&lt;&quot;] | &quot;&amp;lt;&quot;&gt;
   3.733 -|&lt;LESS_THAN_EQUALS: &quot;lte&quot; | &quot;\\lte&quot; | &quot;&lt;=&quot; | &quot;&amp;lt;=&quot;&gt;
   3.734 -|&lt;ESCAPED_GT: &quot;gt&quot; | &quot;\\gt&quot; | &quot;&amp;gt;&quot;&gt;
   3.735 -|&lt;ESCAPED_GTE: &quot;gte&quot; | &quot;\\gte&quot; | &quot;&amp;gt;=&quot;&gt;
   3.736 -|&lt;PLUS: &quot;+&quot;&gt;
   3.737 -|&lt;MINUS: &quot;-&quot;&gt;
   3.738 -|&lt;TIMES: &quot;*&quot;&gt;
   3.739 -|&lt;DOUBLE_STAR: &quot;**&quot;&gt;
   3.740 -|&lt;ELLIPSIS: &quot;...&quot;&gt;
   3.741 -|&lt;DIVIDE: &quot;/&quot;&gt;
   3.742 -|&lt;PERCENT: &quot;%&quot;&gt;
   3.743 -|&lt;AND: [&quot;&amp;&quot;] | &quot;&amp;&amp;&quot;&gt;
   3.744 -|&lt;OR: [&quot;|&quot;] | &quot;||&quot;&gt;
   3.745 -|&lt;EXCLAM: &quot;!&quot;&gt;
   3.746 -|&lt;COMMA: &quot;,&quot;&gt;
   3.747 -|&lt;SEMICOLON: &quot;;&quot;&gt;
   3.748 -|&lt;COLON: &quot;:&quot;&gt;
   3.749 -|&lt;OPEN_BRACKET: &quot;[&quot;&gt;
   3.750 -|&lt;CLOSE_BRACKET: &quot;]&quot;&gt;
   3.751 -|&lt;OPEN_PAREN: &quot;(&quot;&gt;
   3.752 -|&lt;CLOSE_PAREN: &quot;)&quot;&gt;
   3.753 -|&lt;OPEN_BRACE: &quot;{&quot;&gt;
   3.754 -|&lt;CLOSE_BRACE: &quot;}&quot;&gt;
   3.755 -|&lt;IN: &quot;in&quot;&gt;
   3.756 -|&lt;AS: &quot;as&quot;&gt;
   3.757 -|&lt;USING: &quot;using&quot;&gt;
   3.758 -|&lt;ID: &lt;LETTER&gt; ([&quot;$&quot;,&quot;0&quot;-&quot;9&quot;,&quot;@&quot;-&quot;Z&quot;,&quot;_&quot;,&quot;a&quot;-&quot;z&quot;,&quot;\u00c0&quot;-&quot;\u00d6&quot;,&quot;\u00d8&quot;-&quot;\u00f6&quot;,&quot;\u00f8&quot;-&quot;\u00ff&quot;,&quot;\u0100&quot;-&quot;\u1fff&quot;,&quot;\u3040&quot;-&quot;\u318f&quot;,&quot;\u3300&quot;-&quot;\u337f&quot;,&quot;\u3400&quot;-&quot;\u3d2d&quot;,&quot;\u4e00&quot;-&quot;\u9fff&quot;,&quot;\uf900&quot;-&quot;\ufaff&quot;])*&gt;
   3.759 -|}
   3.760 -
   3.761 -</PRE></TD></TR><TR><TD><PRE>&lt;FM_EXPRESSION, NO_SPACE_EXPRESSION, NAMED_PARAMETER_EXPRESSION&gt; TOKEN : { 
   3.762 -&lt;DIRECTIVE_END: &quot;&gt;&quot;&gt;
   3.763 -|&lt;EMPTY_DIRECTIVE_END: &quot;/&gt;&quot; | &quot;/]&quot;&gt;
   3.764 -}
   3.765 -
   3.766 -</PRE></TD></TR><TR><TD><PRE>&lt;IN_PAREN&gt; TOKEN : { 
   3.767 -&lt;NATURAL_GT: &quot;&gt;&quot;&gt;
   3.768 -|&lt;NATURAL_GTE: &quot;&gt;=&quot;&gt;
   3.769 -}
   3.770 -
   3.771 -</PRE></TD></TR><TR><TD><PRE>&lt;NO_SPACE_EXPRESSION&gt; TOKEN : { 
   3.772 -&lt;TERMINATING_WHITESPACE: ([&quot;\t&quot;,&quot;\n&quot;,&quot;\r&quot;,&quot; &quot;])+&gt;
   3.773 -}
   3.774 -
   3.775 -</PRE></TD></TR><TR><TD><PRE>&lt;NAMED_PARAMETER_EXPRESSION&gt; TOKEN : { 
   3.776 -&lt;TERMINATING_EXCLAM: &quot;!&quot; ([&quot;\t&quot;,&quot;\n&quot;,&quot;\r&quot;,&quot; &quot;])+&gt;
   3.777 -}
   3.778 -
   3.779 -</PRE></TD></TR><TR><TD><PRE>&lt;NO_PARSE&gt; TOKEN : { 
   3.780 -&lt;TERSE_COMMENT_END: &quot;--&gt;&quot; | &quot;--]&quot;&gt;
   3.781 -|&lt;MAYBE_END: ([&quot;&lt;&quot;,&quot;[&quot;]) &quot;/&quot; (&quot;#&quot;)? ([&quot;A&quot;-&quot;Z&quot;,&quot;a&quot;-&quot;z&quot;])+ ([&quot;\t&quot;,&quot;\n&quot;,&quot;\r&quot;,&quot; &quot;])* ([&quot;&gt;&quot;,&quot;]&quot;])&gt;
   3.782 -|&lt;KEEP_GOING: ([&quot;\u0000&quot;-&quot;,&quot;,&quot;.&quot;-&quot;;&quot;,&quot;=&quot;-&quot;Z&quot;,&quot;\\&quot;-&quot;\uffff&quot;])+&gt;
   3.783 -|&lt;LONE_LESS_THAN_OR_DASH: [&quot;-&quot;,&quot;&lt;&quot;,&quot;[&quot;]&gt;
   3.784 -}
   3.785 -
   3.786 -</PRE></TD></TR>  </TABLE>
   3.787 -
   3.788 -  </BODY>
   3.789 -</HTML>
     4.1 --- a/src/zh_CN/ide/org-netbeans-libs-freemarker/ext/freemarker-2.3.19/freemarker/core/FMParser_zh_CN.html	Mon Sep 23 23:42:13 2013 +0900
     4.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.3 @@ -1,786 +0,0 @@
     4.4 -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
     4.5 -
     4.6 -
     4.7 -<HTML>
     4.8 -  <HEAD>
     4.9 -<meta http-equiv="content-type" content="text/html; charset=UTF-8">
    4.10 -    <TITLE>用于 FMParser 的 BNF</TITLE>
    4.11 -  </HEAD>
    4.12 -  <BODY>
    4.13 -   <H1 ALIGN=CENTER>用于 FMParser 的 BNF</H1>
    4.14 -
    4.15 -   <H2 ALIGN=CENTER>NON-TERMINALS</H2>
    4.16 -      <TABLE>
    4.17 -    <TR><TD><PRE>// Now the actual parsing code, starting
    4.18 -
    4.19 -// with the productions for FreeMarker's
    4.20 -
    4.21 -// expression syntax.
    4.22 -
    4.23 -
    4.24 -/**
    4.25 - * This is the same as OrExpression, since
    4.26 - * the OR is the operator with the lowest
    4.27 - * precedence.
    4.28 - */</PRE></TD></TR>
    4.29 -    <TR>
    4.30 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod1">Expression</a></TD>
    4.31 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    4.32 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    4.33 -    <a HREF="#prod2">OrExpression</a>
    4.34 -       </TD>
    4.35 -    </TR>
    4.36 -    <TR><TD><PRE>/**
    4.37 - * Lowest level expression, a literal, a variable,
    4.38 - * or a possibly more complex expression bounded
    4.39 - * by parentheses.
    4.40 - */</PRE></TD></TR>
    4.41 -    <TR>
    4.42 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod3">PrimaryExpression</a></TD>
    4.43 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    4.44 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    4.45 - ( <a HREF="#prod4">NumberLiteral</a> | <a HREF="#prod5">HashLiteral</a> | <a HREF="#prod6">StringLiteral</a> | <a HREF="#prod7">BooleanLiteral</a> | <a HREF="#prod8">ListLiteral</a> | <a HREF="#prod9">Identifier</a> | <a HREF="#prod10">Parenthesis</a> | <a HREF="#prod11">BuiltinVariable</a> ) ( <a HREF="#prod12">AddSubExpression</a> )*
    4.46 -       </TD>
    4.47 -    </TR>
    4.48 -    <TR><TD><PRE></PRE></TD></TR>
    4.49 -    <TR>
    4.50 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod10">Parenthesis</a></TD>
    4.51 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    4.52 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    4.53 -        &lt;OPEN_PAREN> <a HREF="#prod1">Expression</a> &lt;CLOSE_PAREN>
    4.54 -       </TD>
    4.55 -    </TR>
    4.56 -    <TR><TD><PRE>/**
    4.57 - * A primary expression preceded by zero or
    4.58 - * more unary operators. (The only unary operator we
    4.59 - * currently have is the NOT.)
    4.60 - */</PRE></TD></TR>
    4.61 -    <TR>
    4.62 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod13">UnaryExpression</a></TD>
    4.63 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    4.64 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    4.65 - ( <a HREF="#prod14">UnaryPlusMinusExpression</a> | <a HREF="#prod15">NotExpression</a> | <a HREF="#prod3">PrimaryExpression</a> )      </TD>
    4.66 -    </TR>
    4.67 -    <TR><TD><PRE></PRE></TD></TR>
    4.68 -    <TR>
    4.69 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod15">NotExpression</a></TD>
    4.70 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    4.71 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    4.72 -        ( &lt;EXCLAM> )+ <a HREF="#prod3">PrimaryExpression</a>
    4.73 -       </TD>
    4.74 -    </TR>
    4.75 -    <TR><TD><PRE></PRE></TD></TR>
    4.76 -    <TR>
    4.77 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod14">UnaryPlusMinusExpression</a></TD>
    4.78 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    4.79 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    4.80 - ( &lt;PLUS> | &lt;MINUS> ) <a HREF="#prod3">PrimaryExpression</a>
    4.81 -       </TD>
    4.82 -    </TR>
    4.83 -    <TR><TD><PRE></PRE></TD></TR>
    4.84 -    <TR>
    4.85 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod16">AdditiveExpression</a></TD>
    4.86 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    4.87 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    4.88 -    <a HREF="#prod17">MultiplicativeExpression</a> ( ( ( &lt;PLUS> | &lt;MINUS> ) ) <a HREF="#prod17">MultiplicativeExpression</a> )*
    4.89 -       </TD>
    4.90 -    </TR>
    4.91 -    <TR><TD><PRE>/**
    4.92 - * A unary expression followed by zero or more
    4.93 - * unary expressions with operators in between.
    4.94 - */</PRE></TD></TR>
    4.95 -    <TR>
    4.96 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod17">MultiplicativeExpression</a></TD>
    4.97 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
    4.98 -     <TD ALIGN=LEFT VALIGN=BASELINE>
    4.99 -    <a HREF="#prod13">UnaryExpression</a> ( ( ( &lt;TIMES> | &lt;DIVIDE> | &lt;PERCENT> ) ) <a HREF="#prod13">UnaryExpression</a> )*
   4.100 -       </TD>
   4.101 -    </TR>
   4.102 -    <TR><TD><PRE></PRE></TD></TR>
   4.103 -    <TR>
   4.104 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod18">EqualityExpression</a></TD>
   4.105 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.106 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.107 -    <a HREF="#prod19">RelationalExpression</a> ( ( &lt;NOT_EQUALS> | &lt;EQUALS> | &lt;DOUBLE_EQUALS> ) <a HREF="#prod19">RelationalExpression</a> )?
   4.108 -       </TD>
   4.109 -    </TR>
   4.110 -    <TR><TD><PRE></PRE></TD></TR>
   4.111 -    <TR>
   4.112 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod19">RelationalExpression</a></TD>
   4.113 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.114 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.115 -    <a HREF="#prod20">RangeExpression</a> ( ( &lt;NATURAL_GTE> | &lt;ESCAPED_GTE> | &lt;NATURAL_GT> | &lt;ESCAPED_GT> | &lt;LESS_THAN_EQUALS> | &lt;LESS_THAN> ) <a HREF="#prod20">RangeExpression</a> )?
   4.116 -       </TD>
   4.117 -    </TR>
   4.118 -    <TR><TD><PRE></PRE></TD></TR>
   4.119 -    <TR>
   4.120 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod20">RangeExpression</a></TD>
   4.121 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.122 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.123 -    <a HREF="#prod16">AdditiveExpression</a> ( &lt;DOT_DOT> ( <a HREF="#prod16">AdditiveExpression</a> )? )?
   4.124 -       </TD>
   4.125 -    </TR>
   4.126 -    <TR><TD><PRE></PRE></TD></TR>
   4.127 -    <TR>
   4.128 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod21">AndExpression</a></TD>
   4.129 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.130 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.131 -    <a HREF="#prod18">EqualityExpression</a> ( &lt;AND> <a HREF="#prod18">EqualityExpression</a> )*
   4.132 -       </TD>
   4.133 -    </TR>
   4.134 -    <TR><TD><PRE></PRE></TD></TR>
   4.135 -    <TR>
   4.136 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod2">OrExpression</a></TD>
   4.137 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.138 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.139 -    <a HREF="#prod21">AndExpression</a> ( &lt;OR> <a HREF="#prod21">AndExpression</a> )*
   4.140 -       </TD>
   4.141 -    </TR>
   4.142 -    <TR><TD><PRE></PRE></TD></TR>
   4.143 -    <TR>
   4.144 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod8">ListLiteral</a></TD>
   4.145 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.146 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.147 -        &lt;OPEN_BRACKET> <a HREF="#prod22">PositionalArgs</a> &lt;CLOSE_BRACKET>
   4.148 -       </TD>
   4.149 -    </TR>
   4.150 -    <TR><TD><PRE></PRE></TD></TR>
   4.151 -    <TR>
   4.152 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod4">NumberLiteral</a></TD>
   4.153 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.154 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.155 - ( &lt;INTEGER> | &lt;DECIMAL> )      </TD>
   4.156 -    </TR>
   4.157 -    <TR><TD><PRE></PRE></TD></TR>
   4.158 -    <TR>
   4.159 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod9">Identifier</a></TD>
   4.160 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.161 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.162 -        &lt;ID>
   4.163 -       </TD>
   4.164 -    </TR>
   4.165 -    <TR><TD><PRE></PRE></TD></TR>
   4.166 -    <TR>
   4.167 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod23">IdentifierOrStringLiteral</a></TD>
   4.168 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.169 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.170 - ( <a HREF="#prod9">Identifier</a> | <a HREF="#prod6">StringLiteral</a> )      </TD>
   4.171 -    </TR>
   4.172 -    <TR><TD><PRE></PRE></TD></TR>
   4.173 -    <TR>
   4.174 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod11">BuiltinVariable</a></TD>
   4.175 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.176 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.177 -        &lt;DOT> &lt;ID>
   4.178 -       </TD>
   4.179 -    </TR>
   4.180 -    <TR><TD><PRE>/**
   4.181 - * Production that builds up an expression
   4.182 - * using the dot or dynamic key name
   4.183 - * or the args list if this is a method invocation.
   4.184 - */</PRE></TD></TR>
   4.185 -    <TR>
   4.186 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod12">AddSubExpression</a></TD>
   4.187 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.188 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.189 - ( <a HREF="#prod24">DotVariable</a> | <a HREF="#prod25">DynamicKey</a> | <a HREF="#prod26">MethodArgs</a> | <a HREF="#prod27">BuiltIn</a> | <a HREF="#prod28">DefaultTo</a> | <a HREF="#prod29">Exists</a> )      </TD>
   4.190 -    </TR>
   4.191 -    <TR><TD><PRE></PRE></TD></TR>
   4.192 -    <TR>
   4.193 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod28">DefaultTo</a></TD>
   4.194 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.195 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.196 - ( &lt;TERMINATING_EXCLAM> | ( &lt;EXCLAM> ( <a HREF="#prod1">Expression</a> )? ) )      </TD>
   4.197 -    </TR>
   4.198 -    <TR><TD><PRE></PRE></TD></TR>
   4.199 -    <TR>
   4.200 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod29">Exists</a></TD>
   4.201 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.202 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.203 -        &lt;EXISTS>
   4.204 -       </TD>
   4.205 -    </TR>
   4.206 -    <TR><TD><PRE></PRE></TD></TR>
   4.207 -    <TR>
   4.208 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod27">BuiltIn</a></TD>
   4.209 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.210 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.211 -        &lt;BUILT_IN> &lt;ID>
   4.212 -       </TD>
   4.213 -    </TR>
   4.214 -    <TR><TD><PRE>/**
   4.215 - * production for when a key is specified by &lt;DOT&gt; + keyname
   4.216 - */</PRE></TD></TR>
   4.217 -    <TR>
   4.218 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod24">DotVariable</a></TD>
   4.219 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.220 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.221 -        &lt;DOT> ( &lt;ID> | &lt;TIMES> | &lt;DOUBLE_STAR> | ( &lt;LESS_THAN> | &lt;LESS_THAN_EQUALS> | &lt;ESCAPED_GT> | &lt;ESCAPED_GTE> | &lt;FALSE> | &lt;TRUE> | &lt;IN> | &lt;AS> | &lt;USING> ) )      </TD>
   4.222 -    </TR>
   4.223 -    <TR><TD><PRE>/**
   4.224 - * production for when the key is specified
   4.225 - * in brackets.
   4.226 - */</PRE></TD></TR>
   4.227 -    <TR>
   4.228 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod25">DynamicKey</a></TD>
   4.229 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.230 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.231 -        &lt;OPEN_BRACKET> <a HREF="#prod1">Expression</a> &lt;CLOSE_BRACKET>
   4.232 -       </TD>
   4.233 -    </TR>
   4.234 -    <TR><TD><PRE>/**
   4.235 - * production for an arglist part of a method invocation.
   4.236 - */</PRE></TD></TR>
   4.237 -    <TR>
   4.238 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod26">MethodArgs</a></TD>
   4.239 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.240 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.241 -        &lt;OPEN_PAREN> <a HREF="#prod22">PositionalArgs</a> &lt;CLOSE_PAREN>
   4.242 -       </TD>
   4.243 -    </TR>
   4.244 -    <TR><TD><PRE></PRE></TD></TR>
   4.245 -    <TR>
   4.246 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod6">StringLiteral</a></TD>
   4.247 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.248 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.249 - ( &lt;STRING_LITERAL> | &lt;RAW_STRING> )      </TD>
   4.250 -    </TR>
   4.251 -    <TR><TD><PRE></PRE></TD></TR>
   4.252 -    <TR>
   4.253 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod7">BooleanLiteral</a></TD>
   4.254 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.255 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.256 - ( &lt;FALSE> | &lt;TRUE> )      </TD>
   4.257 -    </TR>
   4.258 -    <TR><TD><PRE></PRE></TD></TR>
   4.259 -    <TR>
   4.260 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod5">HashLiteral</a></TD>
   4.261 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.262 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.263 -        &lt;OPEN_BRACE> ( <a HREF="#prod1">Expression</a> ( &lt;COMMA> | &lt;COLON> ) <a HREF="#prod1">Expression</a> ( &lt;COMMA> <a HREF="#prod1">Expression</a> ( &lt;COMMA> | &lt;COLON> ) <a HREF="#prod1">Expression</a> )* )? &lt;CLOSE_BRACE>
   4.264 -       </TD>
   4.265 -    </TR>
   4.266 -    <TR><TD><PRE>/**
   4.267 - * A production representing the ${...}
   4.268 - * that outputs a variable.
   4.269 - */</PRE></TD></TR>
   4.270 -    <TR>
   4.271 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod30">StringOutput</a></TD>
   4.272 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.273 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.274 -        &lt;OUTPUT_ESCAPE> <a HREF="#prod1">Expression</a> &lt;CLOSE_BRACE>
   4.275 -       </TD>
   4.276 -    </TR>
   4.277 -    <TR><TD><PRE></PRE></TD></TR>
   4.278 -    <TR>
   4.279 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod31">NumericalOutput</a></TD>
   4.280 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.281 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.282 -        &lt;NUMERICAL_ESCAPE> <a HREF="#prod1">Expression</a> ( &lt;SEMICOLON> &lt;ID> )? &lt;CLOSE_BRACE>
   4.283 -       </TD>
   4.284 -    </TR>
   4.285 -    <TR><TD><PRE></PRE></TD></TR>
   4.286 -    <TR>
   4.287 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod32">If</a></TD>
   4.288 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.289 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.290 -        &lt;IF> <a HREF="#prod1">Expression</a> &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> ( &lt;ELSE_IF> <a HREF="#prod1">Expression</a> <a HREF="#prod34">LooseDirectiveEnd</a> <a HREF="#prod33">OptionalBlock</a> )* ( &lt;ELSE> <a HREF="#prod33">OptionalBlock</a> )? &lt;END_IF>
   4.291 -       </TD>
   4.292 -    </TR>
   4.293 -    <TR><TD><PRE></PRE></TD></TR>
   4.294 -    <TR>
   4.295 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod35">Attempt</a></TD>
   4.296 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.297 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.298 -        &lt;ATTEMPT> <a HREF="#prod33">OptionalBlock</a> <a HREF="#prod36">Recover</a> ( &lt;END_RECOVER> | &lt;END_ATTEMPT> )      </TD>
   4.299 -    </TR>
   4.300 -    <TR><TD><PRE></PRE></TD></TR>
   4.301 -    <TR>
   4.302 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod36">Recover</a></TD>
   4.303 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.304 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.305 -        &lt;RECOVER> <a HREF="#prod33">OptionalBlock</a>
   4.306 -       </TD>
   4.307 -    </TR>
   4.308 -    <TR><TD><PRE></PRE></TD></TR>
   4.309 -    <TR>
   4.310 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod37">List</a></TD>
   4.311 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.312 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.313 -        &lt;LIST> <a HREF="#prod1">Expression</a> &lt;AS> &lt;ID> &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> &lt;END_LIST>
   4.314 -       </TD>
   4.315 -    </TR>
   4.316 -    <TR><TD><PRE></PRE></TD></TR>
   4.317 -    <TR>
   4.318 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod38">ForEach</a></TD>
   4.319 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.320 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.321 -        &lt;FOREACH> &lt;ID> &lt;IN> <a HREF="#prod1">Expression</a> &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> &lt;END_FOREACH>
   4.322 -       </TD>
   4.323 -    </TR>
   4.324 -    <TR><TD><PRE></PRE></TD></TR>
   4.325 -    <TR>
   4.326 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod39">Visit</a></TD>
   4.327 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.328 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.329 -        &lt;VISIT> <a HREF="#prod1">Expression</a> ( &lt;USING> <a HREF="#prod1">Expression</a> )? <a HREF="#prod34">LooseDirectiveEnd</a>
   4.330 -       </TD>
   4.331 -    </TR>
   4.332 -    <TR><TD><PRE></PRE></TD></TR>
   4.333 -    <TR>
   4.334 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod40">Recurse</a></TD>
   4.335 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.336 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.337 - ( &lt;SIMPLE_RECURSE> | ( &lt;RECURSE> ( <a HREF="#prod1">Expression</a> )? ( &lt;USING> <a HREF="#prod1">Expression</a> )? <a HREF="#prod34">LooseDirectiveEnd</a> ) )      </TD>
   4.338 -    </TR>
   4.339 -    <TR><TD><PRE></PRE></TD></TR>
   4.340 -    <TR>
   4.341 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod41">FallBack</a></TD>
   4.342 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.343 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.344 -        &lt;FALLBACK>
   4.345 -       </TD>
   4.346 -    </TR>
   4.347 -    <TR><TD><PRE>/**
   4.348 - * Production used to break out of a loop or a switch block.
   4.349 - */</PRE></TD></TR>
   4.350 -    <TR>
   4.351 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod42">Break</a></TD>
   4.352 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.353 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.354 -        &lt;BREAK>
   4.355 -       </TD>
   4.356 -    </TR>
   4.357 -    <TR><TD><PRE>/**
   4.358 - * Production used to jump out of a macro.
   4.359 - * The stop instruction terminates the rendering of the template.
   4.360 - */</PRE></TD></TR>
   4.361 -    <TR>
   4.362 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod43">Return</a></TD>
   4.363 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.364 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.365 - ( &lt;SIMPLE_RETURN> | &lt;RETURN> <a HREF="#prod1">Expression</a> <a HREF="#prod34">LooseDirectiveEnd</a> )      </TD>
   4.366 -    </TR>
   4.367 -    <TR><TD><PRE></PRE></TD></TR>
   4.368 -    <TR>
   4.369 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod44">Stop</a></TD>
   4.370 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.371 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.372 - ( &lt;HALT> | &lt;STOP> <a HREF="#prod1">Expression</a> <a HREF="#prod34">LooseDirectiveEnd</a> )      </TD>
   4.373 -    </TR>
   4.374 -    <TR><TD><PRE></PRE></TD></TR>
   4.375 -    <TR>
   4.376 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod45">Nested</a></TD>
   4.377 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.378 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.379 - ( ( &lt;SIMPLE_NESTED> )| ( &lt;NESTED> <a HREF="#prod22">PositionalArgs</a> <a HREF="#prod34">LooseDirectiveEnd</a> ) )      </TD>
   4.380 -    </TR>
   4.381 -    <TR><TD><PRE></PRE></TD></TR>
   4.382 -    <TR>
   4.383 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod46">Flush</a></TD>
   4.384 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.385 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.386 -        &lt;FLUSH>
   4.387 -       </TD>
   4.388 -    </TR>
   4.389 -    <TR><TD><PRE></PRE></TD></TR>
   4.390 -    <TR>
   4.391 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod47">Trim</a></TD>
   4.392 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.393 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.394 - ( &lt;TRIM> | &lt;LTRIM> | &lt;RTRIM> | &lt;NOTRIM> )      </TD>
   4.395 -    </TR>
   4.396 -    <TR><TD><PRE></PRE></TD></TR>
   4.397 -    <TR>
   4.398 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod48">Assign</a></TD>
   4.399 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.400 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.401 - ( &lt;ASSIGN> | &lt;GLOBALASSIGN> | &lt;LOCALASSIGN> ) <a HREF="#prod23">IdentifierOrStringLiteral</a> ( ( &lt;EQUALS> <a HREF="#prod1">Expression</a> ( ( &lt;COMMA> )? <a HREF="#prod23">IdentifierOrStringLiteral</a> &lt;EQUALS> <a HREF="#prod1">Expression</a> )* ( &lt;IN> <a HREF="#prod1">Expression</a> )? <a HREF="#prod34">LooseDirectiveEnd</a> )| ( ( &lt;IN> <a HREF="#prod1">Expression</a> )? &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> ( &lt;END_LOCAL> | &lt;END_ASSIGN> | &lt;END_GLOBAL> ) ) )     </TD>
   4.402 -    </TR>
   4.403 -    <TR><TD><PRE></PRE></TD></TR>
   4.404 -    <TR>
   4.405 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod49">Include</a></TD>
   4.406 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.407 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.408 -        &lt;INCLUDE> <a HREF="#prod1">Expression</a> ( &lt;SEMICOLON> )? ( &lt;ID> &lt;EQUALS> <a HREF="#prod1">Expression</a> )* <a HREF="#prod34">LooseDirectiveEnd</a>
   4.409 -       </TD>
   4.410 -    </TR>
   4.411 -    <TR><TD><PRE></PRE></TD></TR>
   4.412 -    <TR>
   4.413 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod50">Import</a></TD>
   4.414 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.415 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.416 -        &lt;IMPORT> <a HREF="#prod1">Expression</a> &lt;AS> &lt;ID> <a HREF="#prod34">LooseDirectiveEnd</a>
   4.417 -       </TD>
   4.418 -    </TR>
   4.419 -    <TR><TD><PRE></PRE></TD></TR>
   4.420 -    <TR>
   4.421 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod51">Macro</a></TD>
   4.422 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.423 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.424 - ( &lt;MACRO> | &lt;FUNCTION> ) <a HREF="#prod23">IdentifierOrStringLiteral</a> ( &lt;OPEN_PAREN> )? ( &lt;ID> ( &lt;ELLIPSIS> )? ( &lt;EQUALS> <a HREF="#prod1">Expression</a> )? ( &lt;COMMA> )? )* ( &lt;CLOSE_PAREN> )? &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> ( &lt;END_MACRO> | &lt;END_FUNCTION> )      </TD>
   4.425 -    </TR>
   4.426 -    <TR><TD><PRE></PRE></TD></TR>
   4.427 -    <TR>
   4.428 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod52">Compress</a></TD>
   4.429 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.430 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.431 -        &lt;COMPRESS> <a HREF="#prod33">OptionalBlock</a> &lt;END_COMPRESS>
   4.432 -       </TD>
   4.433 -    </TR>
   4.434 -    <TR><TD><PRE></PRE></TD></TR>
   4.435 -    <TR>
   4.436 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod53">UnifiedMacroTransform</a></TD>
   4.437 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.438 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.439 -        &lt;UNIFIED_CALL> <a HREF="#prod1">Expression</a> ( &lt;TERMINATING_WHITESPACE> )? ( <a HREF="#prod54">NamedArgs</a> | <a HREF="#prod22">PositionalArgs</a> ) ( &lt;SEMICOLON> ( ( &lt;TERMINATING_WHITESPACE> )? &lt;ID> ( ( &lt;TERMINATING_WHITESPACE> )? &lt;COMMA> ( &lt;TERMINATING_WHITESPACE> )? &lt;ID> )* )? )? ( &lt;EMPTY_DIRECTIVE_END> | ( &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> &lt;UNIFIED_CALL_END> ) )      </TD>
   4.440 -    </TR>
   4.441 -    <TR><TD><PRE></PRE></TD></TR>
   4.442 -    <TR>
   4.443 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod55">Call</a></TD>
   4.444 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.445 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.446 -        &lt;CALL> &lt;ID> ( <a HREF="#prod54">NamedArgs</a> | ( ( &lt;OPEN_PAREN> )? <a HREF="#prod22">PositionalArgs</a> ( &lt;CLOSE_PAREN> )? ) ) <a HREF="#prod34">LooseDirectiveEnd</a>
   4.447 -       </TD>
   4.448 -    </TR>
   4.449 -    <TR><TD><PRE></PRE></TD></TR>
   4.450 -    <TR>
   4.451 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod54">NamedArgs</a></TD>
   4.452 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.453 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.454 -        ( &lt;ID> &lt;EQUALS> <a HREF="#prod1">Expression</a> )+
   4.455 -       </TD>
   4.456 -    </TR>
   4.457 -    <TR><TD><PRE></PRE></TD></TR>
   4.458 -    <TR>
   4.459 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod22">PositionalArgs</a></TD>
   4.460 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.461 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.462 -        ( <a HREF="#prod1">Expression</a> ( ( &lt;COMMA> )? <a HREF="#prod1">Expression</a> )* )?
   4.463 -       </TD>
   4.464 -    </TR>
   4.465 -    <TR><TD><PRE></PRE></TD></TR>
   4.466 -    <TR>
   4.467 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod56">Comment</a></TD>
   4.468 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.469 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.470 - ( &lt;COMMENT> | &lt;TERSE_COMMENT> ) <a HREF="#prod57">UnparsedContent</a>
   4.471 -       </TD>
   4.472 -    </TR>
   4.473 -    <TR><TD><PRE></PRE></TD></TR>
   4.474 -    <TR>
   4.475 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod58">NoParse</a></TD>
   4.476 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.477 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.478 -        &lt;NOPARSE> <a HREF="#prod57">UnparsedContent</a>
   4.479 -       </TD>
   4.480 -    </TR>
   4.481 -    <TR><TD><PRE></PRE></TD></TR>
   4.482 -    <TR>
   4.483 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod59">Transform</a></TD>
   4.484 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.485 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.486 -        &lt;TRANSFORM> <a HREF="#prod1">Expression</a> ( &lt;SEMICOLON> )? ( &lt;ID> &lt;EQUALS> <a HREF="#prod1">Expression</a> )* ( &lt;EMPTY_DIRECTIVE_END> | ( &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> &lt;END_TRANSFORM> ) )      </TD>
   4.487 -    </TR>
   4.488 -    <TR><TD><PRE></PRE></TD></TR>
   4.489 -    <TR>
   4.490 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod60">Switch</a></TD>
   4.491 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.492 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.493 -        &lt;SWITCH> <a HREF="#prod1">Expression</a> &lt;DIRECTIVE_END> ( <a HREF="#prod61">Case</a> )* ( &lt;WHITESPACE> )? &lt;END_SWITCH>
   4.494 -       </TD>
   4.495 -    </TR>
   4.496 -    <TR><TD><PRE></PRE></TD></TR>
   4.497 -    <TR>
   4.498 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod61">Case</a></TD>
   4.499 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.500 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.501 -        ( &lt;WHITESPACE> )? ( &lt;CASE> <a HREF="#prod1">Expression</a> &lt;DIRECTIVE_END> | &lt;DEFAUL> ) <a HREF="#prod33">OptionalBlock</a>
   4.502 -       </TD>
   4.503 -    </TR>
   4.504 -    <TR><TD><PRE></PRE></TD></TR>
   4.505 -    <TR>
   4.506 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod62">Escape</a></TD>
   4.507 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.508 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.509 -        &lt;ESCAPE> &lt;ID> &lt;AS> <a HREF="#prod1">Expression</a> &lt;DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> &lt;END_ESCAPE>
   4.510 -       </TD>
   4.511 -    </TR>
   4.512 -    <TR><TD><PRE></PRE></TD></TR>
   4.513 -    <TR>
   4.514 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod63">NoEscape</a></TD>
   4.515 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.516 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.517 -        &lt;NOESCAPE> <a HREF="#prod33">OptionalBlock</a> &lt;END_NOESCAPE>
   4.518 -       </TD>
   4.519 -    </TR>
   4.520 -    <TR><TD><PRE>/**
   4.521 - * Production to terminate potentially empty elements. Either a &quot;&gt;&quot; or &quot;/&gt;&quot;
   4.522 - */</PRE></TD></TR>
   4.523 -    <TR>
   4.524 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod34">LooseDirectiveEnd</a></TD>
   4.525 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.526 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.527 - ( &lt;DIRECTIVE_END> | &lt;EMPTY_DIRECTIVE_END> )      </TD>
   4.528 -    </TR>
   4.529 -    <TR><TD><PRE></PRE></TD></TR>
   4.530 -    <TR>
   4.531 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod64">Setting</a></TD>
   4.532 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.533 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.534 -        &lt;SETTING> &lt;ID> &lt;EQUALS> <a HREF="#prod1">Expression</a> <a HREF="#prod34">LooseDirectiveEnd</a>
   4.535 -       </TD>
   4.536 -    </TR>
   4.537 -    <TR><TD><PRE>/**
   4.538 - * A production for FreeMarker directives.
   4.539 - */</PRE></TD></TR>
   4.540 -    <TR>
   4.541 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod65">FreemarkerDirective</a></TD>
   4.542 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.543 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.544 - ( <a HREF="#prod32">If</a> | <a HREF="#prod37">List</a> | <a HREF="#prod38">ForEach</a> | <a HREF="#prod48">Assign</a> | <a HREF="#prod49">Include</a> | <a HREF="#prod50">Import</a> | <a HREF="#prod51">Macro</a> | <a HREF="#prod52">Compress</a> | <a HREF="#prod53">UnifiedMacroTransform</a> | <a HREF="#prod55">Call</a> | <a HREF="#prod56">Comment</a> | <a HREF="#prod58">NoParse</a> | <a HREF="#prod59">Transform</a> | <a HREF="#prod60">Switch</a> | <a HREF="#prod64">Setting</a> | <a HREF="#prod42">Break</a> | <a HREF="#prod43">Return</a> | <a HREF="#prod44">Stop</a> | <a HREF="#prod46">Flush</a> | <a HREF="#prod47">Trim</a> | <a HREF="#prod45">Nested</a> | <a HREF="#prod62">Escape</a> | <a HREF="#prod63">NoEscape</a> | <a HREF="#prod39">Visit</a> | <a HREF="#prod40">Recurse</a> | <a HREF="#prod41">FallBack</a> | <a HREF="#prod35">Attempt</a> )      </TD>
   4.545 -    </TR>
   4.546 -    <TR><TD><PRE>/**
   4.547 - * Production for a block of raw text
   4.548 - * i.e. text that contains no
   4.549 - * FreeMarker directives.
   4.550 - */</PRE></TD></TR>
   4.551 -    <TR>
   4.552 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod66">PCData</a></TD>
   4.553 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.554 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.555 -        ( ( &lt;WHITESPACE> | &lt;PRINTABLE_CHARS> | &lt;FALSE_ALERT> ) )+
   4.556 -       </TD>
   4.557 -    </TR>
   4.558 -    <TR><TD><PRE>/**
   4.559 - * Production for dealing with unparsed content,
   4.560 - * i.e. what is inside a comment or noparse tag.
   4.561 - * It returns the ending token. The content
   4.562 - * of the tag is put in buf.
   4.563 - */</PRE></TD></TR>
   4.564 -    <TR>
   4.565 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod57">UnparsedContent</a></TD>
   4.566 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.567 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.568 -        ( ( &lt;KEEP_GOING> | &lt;MAYBE_END> | &lt;TERSE_COMMENT_END> | &lt;LONE_LESS_THAN_OR_DASH> ) )+
   4.569 -       </TD>
   4.570 -    </TR>
   4.571 -    <TR><TD><PRE></PRE></TD></TR>
   4.572 -    <TR>
   4.573 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod67">Content</a></TD>
   4.574 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.575 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.576 -        ( ( <a HREF="#prod66">PCData</a> | <a HREF="#prod30">StringOutput</a> | <a HREF="#prod31">NumericalOutput</a> | <a HREF="#prod65">FreemarkerDirective</a> ) )+
   4.577 -       </TD>
   4.578 -    </TR>
   4.579 -    <TR><TD><PRE>/**
   4.580 - * A production freemarker text that may contain
   4.581 - * ${...} and #{...} but no directives.
   4.582 - */</PRE></TD></TR>
   4.583 -    <TR>
   4.584 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod68">FreeMarkerText</a></TD>
   4.585 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.586 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.587 -        ( ( <a HREF="#prod66">PCData</a> | <a HREF="#prod30">StringOutput</a> | <a HREF="#prod31">NumericalOutput</a> ) )+
   4.588 -       </TD>
   4.589 -    </TR>
   4.590 -    <TR><TD><PRE>/**
   4.591 - * A production for a block of optional content.
   4.592 - * Returns an empty Text block if there is no
   4.593 - * content.
   4.594 - */</PRE></TD></TR>
   4.595 -    <TR>
   4.596 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod33">OptionalBlock</a></TD>
   4.597 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.598 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.599 -        ( <a HREF="#prod67">Content</a> )?
   4.600 -       </TD>
   4.601 -    </TR>
   4.602 -    <TR><TD><PRE></PRE></TD></TR>
   4.603 -    <TR>
   4.604 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod69">HeaderElement</a></TD>
   4.605 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.606 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.607 -        ( &lt;WHITESPACE> )? ( &lt;TRIVIAL_FTL_HEADER> | ( &lt;FTL_HEADER> ( &lt;ID> &lt;EQUALS> <a HREF="#prod1">Expression</a> )* ) <a HREF="#prod34">LooseDirectiveEnd</a> )     </TD>
   4.608 -    </TR>
   4.609 -    <TR><TD><PRE></PRE></TD></TR>
   4.610 -    <TR>
   4.611 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod70">ParamList</a></TD>
   4.612 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.613 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.614 -        ( <a HREF="#prod9">Identifier</a> &lt;EQUALS> <a HREF="#prod1">Expression</a> ( &lt;COMMA> )? )+
   4.615 -       </TD>
   4.616 -    </TR>
   4.617 -    <TR><TD><PRE>/**
   4.618 - * Root production to be used when parsing
   4.619 - * an entire file.
   4.620 - */</PRE></TD></TR>
   4.621 -    <TR>
   4.622 -     <TD ALIGN=RIGHT VALIGN=BASELINE><a NAME="prod71">Root</a></TD>
   4.623 -     <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
   4.624 -     <TD ALIGN=LEFT VALIGN=BASELINE>
   4.625 -        ( <a HREF="#prod69">HeaderElement</a> )? <a HREF="#prod33">OptionalBlock</a> &lt;EOF>
   4.626 -       </TD>
   4.627 -    </TR>
   4.628 -      </TABLE>
   4.629 -<HR>
   4.630 -  <H2 ALIGN=CENTER>TOKENS</H2>
   4.631 -  <TABLE>
   4.632 -<TR><TD><PRE>&lt;DEFAULT&gt; TOKEN : { 
   4.633 -&lt;ATTEMPT: &lt;START_TAG&gt; &quot;attempt&quot; &lt;CLOSE_TAG1&gt;&gt;
   4.634 -|&lt;RECOVER: &lt;START_TAG&gt; &quot;recover&quot; &lt;CLOSE_TAG1&gt;&gt;
   4.635 -|&lt;IF: &lt;START_TAG&gt; &quot;if&quot; &lt;BLANK&gt;&gt;
   4.636 -|&lt;ELSE_IF: &lt;START_TAG&gt; &quot;elseif&quot; &lt;BLANK&gt;&gt;
   4.637 -|&lt;LIST: &lt;START_TAG&gt; &quot;list&quot; &lt;BLANK&gt;&gt;
   4.638 -|&lt;FOREACH: &lt;START_TAG&gt; &quot;foreach&quot; &lt;BLANK&gt;&gt;
   4.639 -|&lt;SWITCH: &lt;START_TAG&gt; &quot;switch&quot; &lt;BLANK&gt;&gt;
   4.640 -|&lt;CASE: &lt;START_TAG&gt; &quot;case&quot; &lt;BLANK&gt;&gt;
   4.641 -|&lt;ASSIGN: &lt;START_TAG&gt; &quot;assign&quot; &lt;BLANK&gt;&gt;
   4.642 -|&lt;GLOBALASSIGN: &lt;START_TAG&gt; &quot;global&quot; &lt;BLANK&gt;&gt;
   4.643 -|&lt;LOCALASSIGN: &lt;START_TAG&gt; &quot;local&quot; &lt;BLANK&gt;&gt;
   4.644 -|&lt;INCLUDE: &lt;START_TAG&gt; &quot;include&quot; &lt;BLANK&gt;&gt;
   4.645 -|&lt;IMPORT: &lt;START_TAG&gt; &quot;import&quot; &lt;BLANK&gt;&gt;
   4.646 -|&lt;FUNCTION: &lt;START_TAG&gt; &quot;function&quot; &lt;BLANK&gt;&gt;
   4.647 -|&lt;MACRO: &lt;START_TAG&gt; &quot;macro&quot; &lt;BLANK&gt;&gt;
   4.648 -|&lt;TRANSFORM: &lt;START_TAG&gt; &quot;transform&quot; &lt;BLANK&gt;&gt;
   4.649 -|&lt;VISIT: &lt;START_TAG&gt; &quot;visit&quot; &lt;BLANK&gt;&gt;
   4.650 -|&lt;STOP: &lt;START_TAG&gt; &quot;stop&quot; &lt;BLANK&gt;&gt;
   4.651 -|&lt;RETURN: &lt;START_TAG&gt; &quot;return&quot; &lt;BLANK&gt;&gt;
   4.652 -|&lt;CALL: &lt;START_TAG&gt; &quot;call&quot; &lt;BLANK&gt;&gt;
   4.653 -|&lt;SETTING: &lt;START_TAG&gt; &quot;setting&quot; &lt;BLANK&gt;&gt;
   4.654 -|&lt;COMPRESS: &lt;START_TAG&gt; &quot;compress&quot; &lt;CLOSE_TAG1&gt;&gt;
   4.655 -|&lt;COMMENT: &lt;START_TAG&gt; &quot;comment&quot; &lt;CLOSE_TAG1&gt;&gt;
   4.656 -|&lt;TERSE_COMMENT: ([&quot;&lt;&quot;,&quot;[&quot;]) &quot;#--&quot;&gt;
   4.657 -|&lt;NOPARSE: &lt;START_TAG&gt; &quot;noparse&quot; &lt;CLOSE_TAG1&gt;&gt;
   4.658 -|&lt;END_IF: &lt;END_TAG&gt; &quot;if&quot; &lt;CLOSE_TAG1&gt;&gt;
   4.659 -|&lt;END_LIST: &lt;END_TAG&gt; &quot;list&quot; &lt;CLOSE_TAG1&gt;&gt;
   4.660 -|&lt;END_RECOVER: &lt;END_TAG&gt; &quot;recover&quot; &lt;CLOSE_TAG1&gt;&gt;
   4.661 -|&lt;END_ATTEMPT: &lt;END_TAG&gt; &quot;attempt&quot; &lt;CLOSE_TAG1&gt;&gt;
   4.662 -|&lt;END_FOREACH: &lt;END_TAG&gt; &quot;foreach&quot; &lt;CLOSE_TAG1&gt;&gt;
   4.663 -|&lt;END_LOCAL: &lt;END_TAG&gt; &quot;local&quot; &lt;CLOSE_TAG1&gt;&gt;
   4.664 -|&lt;END_GLOBAL: &lt;END_TAG&gt; &quot;global&quot; &lt;CLOSE_TAG1&gt;&gt;
   4.665 -|&lt;END_ASSIGN: &lt;END_TAG&gt; &quot;assign&quot; &lt;CLOSE_TAG1&gt;&gt;
   4.666 -|&lt;END_FUNCTION: &lt;END_TAG&gt; &quot;function&quot; &lt;CLOSE_TAG1&gt;&gt;
   4.667 -|&lt;END_MACRO: &lt;END_TAG&gt; &quot;macro&quot; &lt;CLOSE_TAG1&gt;&gt;
   4.668 -|&lt;END_COMPRESS: &lt;END_TAG&gt; &quot;compress&quot; &lt;CLOSE_TAG1&gt;&gt;
   4.669 -|&lt;END_TRANSFORM: &lt;END_TAG&gt; &quot;transform&quot; &lt;CLOSE_TAG1&gt;&gt;
   4.670 -|&lt;END_SWITCH: &lt;END_TAG&gt; &quot;switch&quot; &lt;CLOSE_TAG1&gt;&gt;
   4.671 -|&lt;ELSE: &lt;START_TAG&gt; &quot;else&quot; &lt;CLOSE_TAG2&gt;&gt;
   4.672 -|&lt;BREAK: &lt;START_TAG&gt; &quot;break&quot; &lt;CLOSE_TAG2&gt;&gt;
   4.673 -|&lt;SIMPLE_RETURN: &lt;START_TAG&gt; &quot;return&quot; &lt;CLOSE_TAG2&gt;&gt;
   4.674 -|&lt;HALT: &lt;START_TAG&gt; &quot;stop&quot; &lt;CLOSE_TAG2&gt;&gt;
   4.675 -|&lt;FLUSH: &lt;START_TAG&gt; &quot;flush&quot; &lt;CLOSE_TAG2&gt;&gt;
   4.676 -|&lt;TRIM: &lt;START_TAG&gt; &quot;t&quot; &lt;CLOSE_TAG2&gt;&gt;
   4.677 -|&lt;LTRIM: &lt;START_TAG&gt; &quot;lt&quot; &lt;CLOSE_TAG2&gt;&gt;
   4.678 -|&lt;RTRIM: &lt;START_TAG&gt; &quot;rt&quot; &lt;CLOSE_TAG2&gt;&gt;
   4.679 -|&lt;NOTRIM: &lt;START_TAG&gt; &quot;nt&quot; &lt;CLOSE_TAG2&gt;&gt;
   4.680 -|&lt;DEFAUL: &lt;START_TAG&gt; &quot;default&quot; &lt;CLOSE_TAG1&gt;&gt;
   4.681 -|&lt;SIMPLE_NESTED: &lt;START_TAG&gt; &quot;nested&quot; &lt;CLOSE_TAG2&gt;&gt;
   4.682 -|&lt;NESTED: &lt;START_TAG&gt; &quot;nested&quot; &lt;BLANK&gt;&gt;
   4.683 -|&lt;SIMPLE_RECURSE: &lt;START_TAG&gt; &quot;recurse&quot; &lt;CLOSE_TAG2&gt;&gt;
   4.684 -|&lt;RECURSE: &lt;START_TAG&gt; &quot;recurse&quot; &lt;BLANK&gt;&gt;
   4.685 -|&lt;FALLBACK: &lt;START_TAG&gt; &quot;fallback&quot; &lt;CLOSE_TAG2&gt;&gt;
   4.686 -|&lt;ESCAPE: &lt;START_TAG&gt; &quot;escape&quot; &lt;BLANK&gt;&gt;
   4.687 -|&lt;END_ESCAPE: &lt;END_TAG&gt; &quot;escape&quot; &lt;CLOSE_TAG1&gt;&gt;
   4.688 -|&lt;NOESCAPE: &lt;START_TAG&gt; &quot;noescape&quot; &lt;CLOSE_TAG1&gt;&gt;
   4.689 -|&lt;END_NOESCAPE: &lt;END_TAG&gt; &quot;noescape&quot; &lt;CLOSE_TAG1&gt;&gt;
   4.690 -|&lt;UNIFIED_CALL: &quot;&lt;@&quot; | &quot;[@&quot;&gt;
   4.691 -|&lt;UNIFIED_CALL_END: ([&quot;&lt;&quot;,&quot;[&quot;]) &quot;/@&quot; (&lt;ID&gt; (&quot;.&quot; &lt;ID&gt;)*)? &lt;CLOSE_TAG1&gt;&gt;
   4.692 -|&lt;FTL_HEADER: (&quot;&lt;#ftl&quot; | &quot;[#ftl&quot;) &lt;BLANK&gt;&gt;
   4.693 -|&lt;TRIVIAL_FTL_HEADER: (&quot;&lt;#ftl&quot; | &quot;[#ftl&quot;) (&quot;/&quot;)? ([&quot;&gt;&quot;,&quot;]&quot;])&gt;
   4.694 -|&lt;UNKNOWN_DIRECTIVE: (&quot;[#&quot; | &quot;[/#&quot; | &quot;&lt;#&quot; | &quot;&lt;/#&quot;) ([&quot;A&quot;-&quot;Z&quot;,&quot;_&quot;,&quot;a&quot;-&quot;z&quot;])+&gt;
   4.695 -}
   4.696 -
   4.697 -</PRE></TD></TR><TR><TD><PRE>&lt;DEFAULT, NODIRECTIVE&gt; TOKEN : { 
   4.698 -&lt;WHITESPACE: ([&quot;\t&quot;,&quot;\n&quot;,&quot;\r&quot;,&quot; &quot;])+&gt;
   4.699 -|&lt;PRINTABLE_CHARS: ([&quot;\u0000&quot;-&quot;\b&quot;,&quot;\u000b&quot;-&quot;\f&quot;,&quot;\u000e&quot;-&quot;\u001f&quot;,&quot;!&quot;-&quot;\&quot;&quot;,&quot;%&quot;-&quot;;&quot;,&quot;=&quot;-&quot;Z&quot;,&quot;\\&quot;-&quot;z&quot;,&quot;|&quot;-&quot;\uffff&quot;])+&gt;
   4.700 -|&lt;FALSE_ALERT: [&quot;#&quot;,&quot;$&quot;,&quot;&lt;&quot;,&quot;[&quot;,&quot;{&quot;]&gt;
   4.701 -|&lt;OUTPUT_ESCAPE: &quot;${&quot;&gt;
   4.702 -|&lt;NUMERICAL_ESCAPE: &quot;#{&quot;&gt;
   4.703 -}
   4.704 -
   4.705 -</PRE></TD></TR><TR><TD><PRE>&lt;FM_EXPRESSION, IN_PAREN, NAMED_PARAMETER_EXPRESSION&gt; SKIP : { 
   4.706 -&lt;([&quot;\t&quot;,&quot;\n&quot;,&quot;\r&quot;,&quot; &quot;])+&gt;
   4.707 -|&lt;[&quot;&lt;&quot;,&quot;[&quot;] [&quot;!&quot;,&quot;#&quot;] &quot;--&quot;&gt;
   4.708 -}
   4.709 -
   4.710 -</PRE></TD></TR><TR><TD><PRE>&lt;EXPRESSION_COMMENT&gt; SKIP : { 
   4.711 -&lt;([&quot;\u0000&quot;-&quot;,&quot;,&quot;.&quot;-&quot;=&quot;,&quot;?&quot;-&quot;\\&quot;,&quot;^&quot;-&quot;\uffff&quot;])+&gt;
   4.712 -|&quot;&gt;&quot;
   4.713 -|&quot;]&quot;
   4.714 -|&quot;-&quot;
   4.715 -|&lt;&quot;--&gt;&quot; | &quot;--]&quot;&gt;
   4.716 -}
   4.717 -
   4.718 -</PRE></TD></TR><TR><TD><PRE>&lt;FM_EXPRESSION, IN_PAREN, NO_SPACE_EXPRESSION, NAMED_PARAMETER_EXPRESSION&gt; TOKEN : { 
   4.719 -&lt;STRING_LITERAL: &quot;\&quot;&quot; ([&quot;\u0000&quot;-&quot;!&quot;,&quot;#&quot;-&quot;[&quot;,&quot;]&quot;-&quot;\uffff&quot;] | &lt;ESCAPED_CHAR&gt;)* &quot;\&quot;&quot; | &quot;\'&quot; ([&quot;\u0000&quot;-&quot;&amp;&quot;,&quot;(&quot;-&quot;[&quot;,&quot;]&quot;-&quot;\uffff&quot;] | &lt;ESCAPED_CHAR&gt;)* &quot;\'&quot;&gt;
   4.720 -|&lt;RAW_STRING: &quot;r&quot; (&quot;\&quot;&quot; ([&quot;\u0000&quot;-&quot;!&quot;,&quot;#&quot;-&quot;\uffff&quot;])* &quot;\&quot;&quot; | &quot;\'&quot; ([&quot;\u0000&quot;-&quot;&amp;&quot;,&quot;(&quot;-&quot;\uffff&quot;])* &quot;\'&quot;)&gt;
   4.721 -|&lt;FALSE: &quot;false&quot;&gt;
   4.722 -|&lt;TRUE: &quot;true&quot;&gt;
   4.723 -|&lt;INTEGER: ([&quot;0&quot;-&quot;9&quot;])+&gt;
   4.724 -|&lt;DECIMAL: &lt;INTEGER&gt; &quot;.&quot; &lt;INTEGER&gt;&gt;
   4.725 -|&lt;DOT: &quot;.&quot;&gt;
   4.726 -|&lt;DOT_DOT: &quot;..&quot;&gt;
   4.727 -|&lt;BUILT_IN: &quot;?&quot;&gt;
   4.728 -|&lt;EXISTS: &quot;??&quot;&gt;
   4.729 -|&lt;EQUALS: &quot;=&quot;&gt;
   4.730 -|&lt;DOUBLE_EQUALS: &quot;==&quot;&gt;
   4.731 -|&lt;NOT_EQUALS: &quot;!=&quot;&gt;
   4.732 -|&lt;LESS_THAN: &quot;lt&quot; | &quot;\\lt&quot; | [&quot;&lt;&quot;] | &quot;&amp;lt;&quot;&gt;
   4.733 -|&lt;LESS_THAN_EQUALS: &quot;lte&quot; | &quot;\\lte&quot; | &quot;&lt;=&quot; | &quot;&amp;lt;=&quot;&gt;
   4.734 -|&lt;ESCAPED_GT: &quot;gt&quot; | &quot;\\gt&quot; | &quot;&amp;gt;&quot;&gt;
   4.735 -|&lt;ESCAPED_GTE: &quot;gte&quot; | &quot;\\gte&quot; | &quot;&amp;gt;=&quot;&gt;
   4.736 -|&lt;PLUS: &quot;+&quot;&gt;
   4.737 -|&lt;MINUS: &quot;-&quot;&gt;
   4.738 -|&lt;TIMES: &quot;*&quot;&gt;
   4.739 -|&lt;DOUBLE_STAR: &quot;**&quot;&gt;
   4.740 -|&lt;ELLIPSIS: &quot;...&quot;&gt;
   4.741 -|&lt;DIVIDE: &quot;/&quot;&gt;
   4.742 -|&lt;PERCENT: &quot;%&quot;&gt;
   4.743 -|&lt;AND: [&quot;&amp;&quot;] | &quot;&amp;&amp;&quot;&gt;
   4.744 -|&lt;OR: [&quot;|&quot;] | &quot;||&quot;&gt;
   4.745 -|&lt;EXCLAM: &quot;!&quot;&gt;
   4.746 -|&lt;COMMA: &quot;,&quot;&gt;
   4.747 -|&lt;SEMICOLON: &quot;;&quot;&gt;
   4.748 -|&lt;COLON: &quot;:&quot;&gt;
   4.749 -|&lt;OPEN_BRACKET: &quot;[&quot;&gt;
   4.750 -|&lt;CLOSE_BRACKET: &quot;]&quot;&gt;
   4.751 -|&lt;OPEN_PAREN: &quot;(&quot;&gt;
   4.752 -|&lt;CLOSE_PAREN: &quot;)&quot;&gt;
   4.753 -|&lt;OPEN_BRACE: &quot;{&quot;&gt;
   4.754 -|&lt;CLOSE_BRACE: &quot;}&quot;&gt;
   4.755 -|&lt;IN: &quot;in&quot;&gt;
   4.756 -|&lt;AS: &quot;as&quot;&gt;
   4.757 -|&lt;USING: &quot;using&quot;&gt;
   4.758 -|&lt;ID: &lt;LETTER&gt; ([&quot;$&quot;,&quot;0&quot;-&quot;9&quot;,&quot;@&quot;-&quot;Z&quot;,&quot;_&quot;,&quot;a&quot;-&quot;z&quot;,&quot;\u00c0&quot;-&quot;\u00d6&quot;,&quot;\u00d8&quot;-&quot;\u00f6&quot;,&quot;\u00f8&quot;-&quot;\u00ff&quot;,&quot;\u0100&quot;-&quot;\u1fff&quot;,&quot;\u3040&quot;-&quot;\u318f&quot;,&quot;\u3300&quot;-&quot;\u337f&quot;,&quot;\u3400&quot;-&quot;\u3d2d&quot;,&quot;\u4e00&quot;-&quot;\u9fff&quot;,&quot;\uf900&quot;-&quot;\ufaff&quot;])*&gt;
   4.759 -|}
   4.760 -
   4.761 -</PRE></TD></TR><TR><TD><PRE>&lt;FM_EXPRESSION, NO_SPACE_EXPRESSION, NAMED_PARAMETER_EXPRESSION&gt; TOKEN : { 
   4.762 -&lt;DIRECTIVE_END: &quot;&gt;&quot;&gt;
   4.763 -|&lt;EMPTY_DIRECTIVE_END: &quot;/&gt;&quot; | &quot;/]&quot;&gt;
   4.764 -}
   4.765 -
   4.766 -</PRE></TD></TR><TR><TD><PRE>&lt;IN_PAREN&gt; TOKEN : { 
   4.767 -&lt;NATURAL_GT: &quot;&gt;&quot;&gt;
   4.768 -|&lt;NATURAL_GTE: &quot;&gt;=&quot;&gt;
   4.769 -}
   4.770 -
   4.771 -</PRE></TD></TR><TR><TD><PRE>&lt;NO_SPACE_EXPRESSION&gt; TOKEN : { 
   4.772 -&lt;TERMINATING_WHITESPACE: ([&quot;\t&quot;,&quot;\n&quot;,&quot;\r&quot;,&quot; &quot;])+&gt;
   4.773 -}
   4.774 -
   4.775 -</PRE></TD></TR><TR><TD><PRE>&lt;NAMED_PARAMETER_EXPRESSION&gt; TOKEN : { 
   4.776 -&lt;TERMINATING_EXCLAM: &quot;!&quot; ([&quot;\t&quot;,&quot;\n&quot;,&quot;\r&quot;,&quot; &quot;])+&gt;
   4.777 -}
   4.778 -
   4.779 -</PRE></TD></TR><TR><TD><PRE>&lt;NO_PARSE&gt; TOKEN : { 
   4.780 -&lt;TERSE_COMMENT_END: &quot;--&gt;&quot; | &quot;--]&quot;&gt;
   4.781 -|&lt;MAYBE_END: ([&quot;&lt;&quot;,&quot;[&quot;]) &quot;/&quot; (&quot;#&quot;)? ([&quot;A&quot;-&quot;Z&quot;,&quot;a&quot;-&quot;z&quot;])+ ([&quot;\t&quot;,&quot;\n&quot;,&quot;\r&quot;,&quot; &quot;])* ([&quot;&gt;&quot;,&quot;]&quot;])&gt;
   4.782 -|&lt;KEEP_GOING: ([&quot;\u0000&quot;-&quot;,&quot;,&quot;.&quot;-&quot;;&quot;,&quot;=&quot;-&quot;Z&quot;,&quot;\\&quot;-&quot;\uffff&quot;])+&gt;
   4.783 -|&lt;LONE_LESS_THAN_OR_DASH: [&quot;-&quot;,&quot;&lt;&quot;,&quot;[&quot;]&gt;
   4.784 -}
   4.785 -
   4.786 -</PRE></TD></TR>  </TABLE>
   4.787 -
   4.788 -  </BODY>
   4.789 -</HTML>