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 - <OPEN_PAREN> <a HREF="#prod1">Expression</a> <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 - ( <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 - ( <PLUS> | <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> ( ( ( <PLUS> | <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> ( ( ( <TIMES> | <DIVIDE> | <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> ( ( <NOT_EQUALS> | <EQUALS> | <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> ( ( <NATURAL_GTE> | <ESCAPED_GTE> | <NATURAL_GT> | <ESCAPED_GT> | <LESS_THAN_EQUALS> | <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> ( <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> ( <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> ( <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 - <OPEN_BRACKET> <a HREF="#prod22">PositionalArgs</a> <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 - ( <INTEGER> | <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 - <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 - <DOT> <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 - ( <TERMINATING_EXCLAM> | ( <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 - <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 - <BUILT_IN> <ID>
1.212 - </TD>
1.213 - </TR>
1.214 - <TR><TD><PRE>/**
1.215 - * production for when a key is specified by <DOT> + 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 - <DOT> ( <ID> | <TIMES> | <DOUBLE_STAR> | ( <LESS_THAN> | <LESS_THAN_EQUALS> | <ESCAPED_GT> | <ESCAPED_GTE> | <FALSE> | <TRUE> | <IN> | <AS> | <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 - <OPEN_BRACKET> <a HREF="#prod1">Expression</a> <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 - <OPEN_PAREN> <a HREF="#prod22">PositionalArgs</a> <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 - ( <STRING_LITERAL> | <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 - ( <FALSE> | <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 - <OPEN_BRACE> ( <a HREF="#prod1">Expression</a> ( <COMMA> | <COLON> ) <a HREF="#prod1">Expression</a> ( <COMMA> <a HREF="#prod1">Expression</a> ( <COMMA> | <COLON> ) <a HREF="#prod1">Expression</a> )* )? <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 - <OUTPUT_ESCAPE> <a HREF="#prod1">Expression</a> <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 - <NUMERICAL_ESCAPE> <a HREF="#prod1">Expression</a> ( <SEMICOLON> <ID> )? <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 - <IF> <a HREF="#prod1">Expression</a> <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> ( <ELSE_IF> <a HREF="#prod1">Expression</a> <a HREF="#prod34">LooseDirectiveEnd</a> <a HREF="#prod33">OptionalBlock</a> )* ( <ELSE> <a HREF="#prod33">OptionalBlock</a> )? <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 - <ATTEMPT> <a HREF="#prod33">OptionalBlock</a> <a HREF="#prod36">Recover</a> ( <END_RECOVER> | <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 - <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 - <LIST> <a HREF="#prod1">Expression</a> <AS> <ID> <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> <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 - <FOREACH> <ID> <IN> <a HREF="#prod1">Expression</a> <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> <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 - <VISIT> <a HREF="#prod1">Expression</a> ( <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 - ( <SIMPLE_RECURSE> | ( <RECURSE> ( <a HREF="#prod1">Expression</a> )? ( <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 - <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 - <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 - ( <SIMPLE_RETURN> | <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 - ( <HALT> | <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 - ( ( <SIMPLE_NESTED> )| ( <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 - <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 - ( <TRIM> | <LTRIM> | <RTRIM> | <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 - ( <ASSIGN> | <GLOBALASSIGN> | <LOCALASSIGN> ) <a HREF="#prod23">IdentifierOrStringLiteral</a> ( ( <EQUALS> <a HREF="#prod1">Expression</a> ( ( <COMMA> )? <a HREF="#prod23">IdentifierOrStringLiteral</a> <EQUALS> <a HREF="#prod1">Expression</a> )* ( <IN> <a HREF="#prod1">Expression</a> )? <a HREF="#prod34">LooseDirectiveEnd</a> )| ( ( <IN> <a HREF="#prod1">Expression</a> )? <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> ( <END_LOCAL> | <END_ASSIGN> | <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 - <INCLUDE> <a HREF="#prod1">Expression</a> ( <SEMICOLON> )? ( <ID> <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 - <IMPORT> <a HREF="#prod1">Expression</a> <AS> <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 - ( <MACRO> | <FUNCTION> ) <a HREF="#prod23">IdentifierOrStringLiteral</a> ( <OPEN_PAREN> )? ( <ID> ( <ELLIPSIS> )? ( <EQUALS> <a HREF="#prod1">Expression</a> )? ( <COMMA> )? )* ( <CLOSE_PAREN> )? <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> ( <END_MACRO> | <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 - <COMPRESS> <a HREF="#prod33">OptionalBlock</a> <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 - <UNIFIED_CALL> <a HREF="#prod1">Expression</a> ( <TERMINATING_WHITESPACE> )? ( <a HREF="#prod54">NamedArgs</a> | <a HREF="#prod22">PositionalArgs</a> ) ( <SEMICOLON> ( ( <TERMINATING_WHITESPACE> )? <ID> ( ( <TERMINATING_WHITESPACE> )? <COMMA> ( <TERMINATING_WHITESPACE> )? <ID> )* )? )? ( <EMPTY_DIRECTIVE_END> | ( <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> <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 - <CALL> <ID> ( <a HREF="#prod54">NamedArgs</a> | ( ( <OPEN_PAREN> )? <a HREF="#prod22">PositionalArgs</a> ( <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 - ( <ID> <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> ( ( <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 - ( <COMMENT> | <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 - <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 - <TRANSFORM> <a HREF="#prod1">Expression</a> ( <SEMICOLON> )? ( <ID> <EQUALS> <a HREF="#prod1">Expression</a> )* ( <EMPTY_DIRECTIVE_END> | ( <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> <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 - <SWITCH> <a HREF="#prod1">Expression</a> <DIRECTIVE_END> ( <a HREF="#prod61">Case</a> )* ( <WHITESPACE> )? <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 - ( <WHITESPACE> )? ( <CASE> <a HREF="#prod1">Expression</a> <DIRECTIVE_END> | <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 - <ESCAPE> <ID> <AS> <a HREF="#prod1">Expression</a> <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> <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 - <NOESCAPE> <a HREF="#prod33">OptionalBlock</a> <END_NOESCAPE>
1.518 - </TD>
1.519 - </TR>
1.520 - <TR><TD><PRE>/**
1.521 - * Production to terminate potentially empty elements. Either a ">" or "/>"
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 - ( <DIRECTIVE_END> | <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 - <SETTING> <ID> <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 - ( ( <WHITESPACE> | <PRINTABLE_CHARS> | <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 - ( ( <KEEP_GOING> | <MAYBE_END> | <TERSE_COMMENT_END> | <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 - ( <WHITESPACE> )? ( <TRIVIAL_FTL_HEADER> | ( <FTL_HEADER> ( <ID> <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> <EQUALS> <a HREF="#prod1">Expression</a> ( <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> <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><DEFAULT> TOKEN : {
1.633 -<ATTEMPT: <START_TAG> "attempt" <CLOSE_TAG1>>
1.634 -|<RECOVER: <START_TAG> "recover" <CLOSE_TAG1>>
1.635 -|<IF: <START_TAG> "if" <BLANK>>
1.636 -|<ELSE_IF: <START_TAG> "elseif" <BLANK>>
1.637 -|<LIST: <START_TAG> "list" <BLANK>>
1.638 -|<FOREACH: <START_TAG> "foreach" <BLANK>>
1.639 -|<SWITCH: <START_TAG> "switch" <BLANK>>
1.640 -|<CASE: <START_TAG> "case" <BLANK>>
1.641 -|<ASSIGN: <START_TAG> "assign" <BLANK>>
1.642 -|<GLOBALASSIGN: <START_TAG> "global" <BLANK>>
1.643 -|<LOCALASSIGN: <START_TAG> "local" <BLANK>>
1.644 -|<INCLUDE: <START_TAG> "include" <BLANK>>
1.645 -|<IMPORT: <START_TAG> "import" <BLANK>>
1.646 -|<FUNCTION: <START_TAG> "function" <BLANK>>
1.647 -|<MACRO: <START_TAG> "macro" <BLANK>>
1.648 -|<TRANSFORM: <START_TAG> "transform" <BLANK>>
1.649 -|<VISIT: <START_TAG> "visit" <BLANK>>
1.650 -|<STOP: <START_TAG> "stop" <BLANK>>
1.651 -|<RETURN: <START_TAG> "return" <BLANK>>
1.652 -|<CALL: <START_TAG> "call" <BLANK>>
1.653 -|<SETTING: <START_TAG> "setting" <BLANK>>
1.654 -|<COMPRESS: <START_TAG> "compress" <CLOSE_TAG1>>
1.655 -|<COMMENT: <START_TAG> "comment" <CLOSE_TAG1>>
1.656 -|<TERSE_COMMENT: (["<","["]) "#--">
1.657 -|<NOPARSE: <START_TAG> "noparse" <CLOSE_TAG1>>
1.658 -|<END_IF: <END_TAG> "if" <CLOSE_TAG1>>
1.659 -|<END_LIST: <END_TAG> "list" <CLOSE_TAG1>>
1.660 -|<END_RECOVER: <END_TAG> "recover" <CLOSE_TAG1>>
1.661 -|<END_ATTEMPT: <END_TAG> "attempt" <CLOSE_TAG1>>
1.662 -|<END_FOREACH: <END_TAG> "foreach" <CLOSE_TAG1>>
1.663 -|<END_LOCAL: <END_TAG> "local" <CLOSE_TAG1>>
1.664 -|<END_GLOBAL: <END_TAG> "global" <CLOSE_TAG1>>
1.665 -|<END_ASSIGN: <END_TAG> "assign" <CLOSE_TAG1>>
1.666 -|<END_FUNCTION: <END_TAG> "function" <CLOSE_TAG1>>
1.667 -|<END_MACRO: <END_TAG> "macro" <CLOSE_TAG1>>
1.668 -|<END_COMPRESS: <END_TAG> "compress" <CLOSE_TAG1>>
1.669 -|<END_TRANSFORM: <END_TAG> "transform" <CLOSE_TAG1>>
1.670 -|<END_SWITCH: <END_TAG> "switch" <CLOSE_TAG1>>
1.671 -|<ELSE: <START_TAG> "else" <CLOSE_TAG2>>
1.672 -|<BREAK: <START_TAG> "break" <CLOSE_TAG2>>
1.673 -|<SIMPLE_RETURN: <START_TAG> "return" <CLOSE_TAG2>>
1.674 -|<HALT: <START_TAG> "stop" <CLOSE_TAG2>>
1.675 -|<FLUSH: <START_TAG> "flush" <CLOSE_TAG2>>
1.676 -|<TRIM: <START_TAG> "t" <CLOSE_TAG2>>
1.677 -|<LTRIM: <START_TAG> "lt" <CLOSE_TAG2>>
1.678 -|<RTRIM: <START_TAG> "rt" <CLOSE_TAG2>>
1.679 -|<NOTRIM: <START_TAG> "nt" <CLOSE_TAG2>>
1.680 -|<DEFAUL: <START_TAG> "default" <CLOSE_TAG1>>
1.681 -|<SIMPLE_NESTED: <START_TAG> "nested" <CLOSE_TAG2>>
1.682 -|<NESTED: <START_TAG> "nested" <BLANK>>
1.683 -|<SIMPLE_RECURSE: <START_TAG> "recurse" <CLOSE_TAG2>>
1.684 -|<RECURSE: <START_TAG> "recurse" <BLANK>>
1.685 -|<FALLBACK: <START_TAG> "fallback" <CLOSE_TAG2>>
1.686 -|<ESCAPE: <START_TAG> "escape" <BLANK>>
1.687 -|<END_ESCAPE: <END_TAG> "escape" <CLOSE_TAG1>>
1.688 -|<NOESCAPE: <START_TAG> "noescape" <CLOSE_TAG1>>
1.689 -|<END_NOESCAPE: <END_TAG> "noescape" <CLOSE_TAG1>>
1.690 -|<UNIFIED_CALL: "<@" | "[@">
1.691 -|<UNIFIED_CALL_END: (["<","["]) "/@" (<ID> ("." <ID>)*)? <CLOSE_TAG1>>
1.692 -|<FTL_HEADER: ("<#ftl" | "[#ftl") <BLANK>>
1.693 -|<TRIVIAL_FTL_HEADER: ("<#ftl" | "[#ftl") ("/")? ([">","]"])>
1.694 -|<UNKNOWN_DIRECTIVE: ("[#" | "[/#" | "<#" | "</#") (["A"-"Z","_","a"-"z"])+>
1.695 -}
1.696 -
1.697 -</PRE></TD></TR><TR><TD><PRE><DEFAULT, NODIRECTIVE> TOKEN : {
1.698 -<WHITESPACE: (["\t","\n","\r"," "])+>
1.699 -|<PRINTABLE_CHARS: (["\u0000"-"\b","\u000b"-"\f","\u000e"-"\u001f","!"-"\"","%"-";","="-"Z","\\"-"z","|"-"\uffff"])+>
1.700 -|<FALSE_ALERT: ["#","$","<","[","{"]>
1.701 -|<OUTPUT_ESCAPE: "${">
1.702 -|<NUMERICAL_ESCAPE: "#{">
1.703 -}
1.704 -
1.705 -</PRE></TD></TR><TR><TD><PRE><FM_EXPRESSION, IN_PAREN, NAMED_PARAMETER_EXPRESSION> SKIP : {
1.706 -<(["\t","\n","\r"," "])+>
1.707 -|<["<","["] ["!","#"] "--">
1.708 -}
1.709 -
1.710 -</PRE></TD></TR><TR><TD><PRE><EXPRESSION_COMMENT> SKIP : {
1.711 -<(["\u0000"-",","."-"=","?"-"\\","^"-"\uffff"])+>
1.712 -|">"
1.713 -|"]"
1.714 -|"-"
1.715 -|<"-->" | "--]">
1.716 -}
1.717 -
1.718 -</PRE></TD></TR><TR><TD><PRE><FM_EXPRESSION, IN_PAREN, NO_SPACE_EXPRESSION, NAMED_PARAMETER_EXPRESSION> TOKEN : {
1.719 -<STRING_LITERAL: "\"" (["\u0000"-"!","#"-"[","]"-"\uffff"] | <ESCAPED_CHAR>)* "\"" | "\'" (["\u0000"-"&","("-"[","]"-"\uffff"] | <ESCAPED_CHAR>)* "\'">
1.720 -|<RAW_STRING: "r" ("\"" (["\u0000"-"!","#"-"\uffff"])* "\"" | "\'" (["\u0000"-"&","("-"\uffff"])* "\'")>
1.721 -|<FALSE: "false">
1.722 -|<TRUE: "true">
1.723 -|<INTEGER: (["0"-"9"])+>
1.724 -|<DECIMAL: <INTEGER> "." <INTEGER>>
1.725 -|<DOT: ".">
1.726 -|<DOT_DOT: "..">
1.727 -|<BUILT_IN: "?">
1.728 -|<EXISTS: "??">
1.729 -|<EQUALS: "=">
1.730 -|<DOUBLE_EQUALS: "==">
1.731 -|<NOT_EQUALS: "!=">
1.732 -|<LESS_THAN: "lt" | "\\lt" | ["<"] | "&lt;">
1.733 -|<LESS_THAN_EQUALS: "lte" | "\\lte" | "<=" | "&lt;=">
1.734 -|<ESCAPED_GT: "gt" | "\\gt" | "&gt;">
1.735 -|<ESCAPED_GTE: "gte" | "\\gte" | "&gt;=">
1.736 -|<PLUS: "+">
1.737 -|<MINUS: "-">
1.738 -|<TIMES: "*">
1.739 -|<DOUBLE_STAR: "**">
1.740 -|<ELLIPSIS: "...">
1.741 -|<DIVIDE: "/">
1.742 -|<PERCENT: "%">
1.743 -|<AND: ["&"] | "&&">
1.744 -|<OR: ["|"] | "||">
1.745 -|<EXCLAM: "!">
1.746 -|<COMMA: ",">
1.747 -|<SEMICOLON: ";">
1.748 -|<COLON: ":">
1.749 -|<OPEN_BRACKET: "[">
1.750 -|<CLOSE_BRACKET: "]">
1.751 -|<OPEN_PAREN: "(">
1.752 -|<CLOSE_PAREN: ")">
1.753 -|<OPEN_BRACE: "{">
1.754 -|<CLOSE_BRACE: "}">
1.755 -|<IN: "in">
1.756 -|<AS: "as">
1.757 -|<USING: "using">
1.758 -|<ID: <LETTER> (["$","0"-"9","@"-"Z","_","a"-"z","\u00c0"-"\u00d6","\u00d8"-"\u00f6","\u00f8"-"\u00ff","\u0100"-"\u1fff","\u3040"-"\u318f","\u3300"-"\u337f","\u3400"-"\u3d2d","\u4e00"-"\u9fff","\uf900"-"\ufaff"])*>
1.759 -|}
1.760 -
1.761 -</PRE></TD></TR><TR><TD><PRE><FM_EXPRESSION, NO_SPACE_EXPRESSION, NAMED_PARAMETER_EXPRESSION> TOKEN : {
1.762 -<DIRECTIVE_END: ">">
1.763 -|<EMPTY_DIRECTIVE_END: "/>" | "/]">
1.764 -}
1.765 -
1.766 -</PRE></TD></TR><TR><TD><PRE><IN_PAREN> TOKEN : {
1.767 -<NATURAL_GT: ">">
1.768 -|<NATURAL_GTE: ">=">
1.769 -}
1.770 -
1.771 -</PRE></TD></TR><TR><TD><PRE><NO_SPACE_EXPRESSION> TOKEN : {
1.772 -<TERMINATING_WHITESPACE: (["\t","\n","\r"," "])+>
1.773 -}
1.774 -
1.775 -</PRE></TD></TR><TR><TD><PRE><NAMED_PARAMETER_EXPRESSION> TOKEN : {
1.776 -<TERMINATING_EXCLAM: "!" (["\t","\n","\r"," "])+>
1.777 -}
1.778 -
1.779 -</PRE></TD></TR><TR><TD><PRE><NO_PARSE> TOKEN : {
1.780 -<TERSE_COMMENT_END: "-->" | "--]">
1.781 -|<MAYBE_END: (["<","["]) "/" ("#")? (["A"-"Z","a"-"z"])+ (["\t","\n","\r"," "])* ([">","]"])>
1.782 -|<KEEP_GOING: (["\u0000"-",","."-";","="-"Z","\\"-"\uffff"])+>
1.783 -|<LONE_LESS_THAN_OR_DASH: ["-","<","["]>
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 - <OPEN_PAREN> <a HREF="#prod1">Expression</a> <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 - ( <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 - ( <PLUS> | <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> ( ( ( <PLUS> | <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> ( ( ( <TIMES> | <DIVIDE> | <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> ( ( <NOT_EQUALS> | <EQUALS> | <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> ( ( <NATURAL_GTE> | <ESCAPED_GTE> | <NATURAL_GT> | <ESCAPED_GT> | <LESS_THAN_EQUALS> | <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> ( <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> ( <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> ( <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 - <OPEN_BRACKET> <a HREF="#prod22">PositionalArgs</a> <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 - ( <INTEGER> | <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 - <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 - <DOT> <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 - ( <TERMINATING_EXCLAM> | ( <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 - <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 - <BUILT_IN> <ID>
2.212 - </TD>
2.213 - </TR>
2.214 - <TR><TD><PRE>/**
2.215 - * production for when a key is specified by <DOT> + 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 - <DOT> ( <ID> | <TIMES> | <DOUBLE_STAR> | ( <LESS_THAN> | <LESS_THAN_EQUALS> | <ESCAPED_GT> | <ESCAPED_GTE> | <FALSE> | <TRUE> | <IN> | <AS> | <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 - <OPEN_BRACKET> <a HREF="#prod1">Expression</a> <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 - <OPEN_PAREN> <a HREF="#prod22">PositionalArgs</a> <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 - ( <STRING_LITERAL> | <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 - ( <FALSE> | <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 - <OPEN_BRACE> ( <a HREF="#prod1">Expression</a> ( <COMMA> | <COLON> ) <a HREF="#prod1">Expression</a> ( <COMMA> <a HREF="#prod1">Expression</a> ( <COMMA> | <COLON> ) <a HREF="#prod1">Expression</a> )* )? <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 - <OUTPUT_ESCAPE> <a HREF="#prod1">Expression</a> <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 - <NUMERICAL_ESCAPE> <a HREF="#prod1">Expression</a> ( <SEMICOLON> <ID> )? <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 - <IF> <a HREF="#prod1">Expression</a> <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> ( <ELSE_IF> <a HREF="#prod1">Expression</a> <a HREF="#prod34">LooseDirectiveEnd</a> <a HREF="#prod33">OptionalBlock</a> )* ( <ELSE> <a HREF="#prod33">OptionalBlock</a> )? <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 - <ATTEMPT> <a HREF="#prod33">OptionalBlock</a> <a HREF="#prod36">Recover</a> ( <END_RECOVER> | <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 - <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 - <LIST> <a HREF="#prod1">Expression</a> <AS> <ID> <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> <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 - <FOREACH> <ID> <IN> <a HREF="#prod1">Expression</a> <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> <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 - <VISIT> <a HREF="#prod1">Expression</a> ( <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 - ( <SIMPLE_RECURSE> | ( <RECURSE> ( <a HREF="#prod1">Expression</a> )? ( <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 - <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 - <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 - ( <SIMPLE_RETURN> | <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 - ( <HALT> | <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 - ( ( <SIMPLE_NESTED> )| ( <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 - <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 - ( <TRIM> | <LTRIM> | <RTRIM> | <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 - ( <ASSIGN> | <GLOBALASSIGN> | <LOCALASSIGN> ) <a HREF="#prod23">IdentifierOrStringLiteral</a> ( ( <EQUALS> <a HREF="#prod1">Expression</a> ( ( <COMMA> )? <a HREF="#prod23">IdentifierOrStringLiteral</a> <EQUALS> <a HREF="#prod1">Expression</a> )* ( <IN> <a HREF="#prod1">Expression</a> )? <a HREF="#prod34">LooseDirectiveEnd</a> )| ( ( <IN> <a HREF="#prod1">Expression</a> )? <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> ( <END_LOCAL> | <END_ASSIGN> | <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 - <INCLUDE> <a HREF="#prod1">Expression</a> ( <SEMICOLON> )? ( <ID> <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 - <IMPORT> <a HREF="#prod1">Expression</a> <AS> <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 - ( <MACRO> | <FUNCTION> ) <a HREF="#prod23">IdentifierOrStringLiteral</a> ( <OPEN_PAREN> )? ( <ID> ( <ELLIPSIS> )? ( <EQUALS> <a HREF="#prod1">Expression</a> )? ( <COMMA> )? )* ( <CLOSE_PAREN> )? <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> ( <END_MACRO> | <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 - <COMPRESS> <a HREF="#prod33">OptionalBlock</a> <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 - <UNIFIED_CALL> <a HREF="#prod1">Expression</a> ( <TERMINATING_WHITESPACE> )? ( <a HREF="#prod54">NamedArgs</a> | <a HREF="#prod22">PositionalArgs</a> ) ( <SEMICOLON> ( ( <TERMINATING_WHITESPACE> )? <ID> ( ( <TERMINATING_WHITESPACE> )? <COMMA> ( <TERMINATING_WHITESPACE> )? <ID> )* )? )? ( <EMPTY_DIRECTIVE_END> | ( <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> <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 - <CALL> <ID> ( <a HREF="#prod54">NamedArgs</a> | ( ( <OPEN_PAREN> )? <a HREF="#prod22">PositionalArgs</a> ( <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 - ( <ID> <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> ( ( <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 - ( <COMMENT> | <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 - <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 - <TRANSFORM> <a HREF="#prod1">Expression</a> ( <SEMICOLON> )? ( <ID> <EQUALS> <a HREF="#prod1">Expression</a> )* ( <EMPTY_DIRECTIVE_END> | ( <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> <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 - <SWITCH> <a HREF="#prod1">Expression</a> <DIRECTIVE_END> ( <a HREF="#prod61">Case</a> )* ( <WHITESPACE> )? <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 - ( <WHITESPACE> )? ( <CASE> <a HREF="#prod1">Expression</a> <DIRECTIVE_END> | <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 - <ESCAPE> <ID> <AS> <a HREF="#prod1">Expression</a> <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> <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 - <NOESCAPE> <a HREF="#prod33">OptionalBlock</a> <END_NOESCAPE>
2.518 - </TD>
2.519 - </TR>
2.520 - <TR><TD><PRE>/**
2.521 - * Production to terminate potentially empty elements. Either a ">" or "/>"
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 - ( <DIRECTIVE_END> | <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 - <SETTING> <ID> <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 - ( ( <WHITESPACE> | <PRINTABLE_CHARS> | <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 - ( ( <KEEP_GOING> | <MAYBE_END> | <TERSE_COMMENT_END> | <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 - ( <WHITESPACE> )? ( <TRIVIAL_FTL_HEADER> | ( <FTL_HEADER> ( <ID> <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> <EQUALS> <a HREF="#prod1">Expression</a> ( <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> <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><DEFAULT> TOKEN : {
2.633 -<ATTEMPT: <START_TAG> "attempt" <CLOSE_TAG1>>
2.634 -|<RECOVER: <START_TAG> "recover" <CLOSE_TAG1>>
2.635 -|<IF: <START_TAG> "if" <BLANK>>
2.636 -|<ELSE_IF: <START_TAG> "elseif" <BLANK>>
2.637 -|<LIST: <START_TAG> "list" <BLANK>>
2.638 -|<FOREACH: <START_TAG> "foreach" <BLANK>>
2.639 -|<SWITCH: <START_TAG> "switch" <BLANK>>
2.640 -|<CASE: <START_TAG> "case" <BLANK>>
2.641 -|<ASSIGN: <START_TAG> "assign" <BLANK>>
2.642 -|<GLOBALASSIGN: <START_TAG> "global" <BLANK>>
2.643 -|<LOCALASSIGN: <START_TAG> "local" <BLANK>>
2.644 -|<INCLUDE: <START_TAG> "include" <BLANK>>
2.645 -|<IMPORT: <START_TAG> "import" <BLANK>>
2.646 -|<FUNCTION: <START_TAG> "function" <BLANK>>
2.647 -|<MACRO: <START_TAG> "macro" <BLANK>>
2.648 -|<TRANSFORM: <START_TAG> "transform" <BLANK>>
2.649 -|<VISIT: <START_TAG> "visit" <BLANK>>
2.650 -|<STOP: <START_TAG> "stop" <BLANK>>
2.651 -|<RETURN: <START_TAG> "return" <BLANK>>
2.652 -|<CALL: <START_TAG> "call" <BLANK>>
2.653 -|<SETTING: <START_TAG> "setting" <BLANK>>
2.654 -|<COMPRESS: <START_TAG> "compress" <CLOSE_TAG1>>
2.655 -|<COMMENT: <START_TAG> "comment" <CLOSE_TAG1>>
2.656 -|<TERSE_COMMENT: (["<","["]) "#--">
2.657 -|<NOPARSE: <START_TAG> "noparse" <CLOSE_TAG1>>
2.658 -|<END_IF: <END_TAG> "if" <CLOSE_TAG1>>
2.659 -|<END_LIST: <END_TAG> "list" <CLOSE_TAG1>>
2.660 -|<END_RECOVER: <END_TAG> "recover" <CLOSE_TAG1>>
2.661 -|<END_ATTEMPT: <END_TAG> "attempt" <CLOSE_TAG1>>
2.662 -|<END_FOREACH: <END_TAG> "foreach" <CLOSE_TAG1>>
2.663 -|<END_LOCAL: <END_TAG> "local" <CLOSE_TAG1>>
2.664 -|<END_GLOBAL: <END_TAG> "global" <CLOSE_TAG1>>
2.665 -|<END_ASSIGN: <END_TAG> "assign" <CLOSE_TAG1>>
2.666 -|<END_FUNCTION: <END_TAG> "function" <CLOSE_TAG1>>
2.667 -|<END_MACRO: <END_TAG> "macro" <CLOSE_TAG1>>
2.668 -|<END_COMPRESS: <END_TAG> "compress" <CLOSE_TAG1>>
2.669 -|<END_TRANSFORM: <END_TAG> "transform" <CLOSE_TAG1>>
2.670 -|<END_SWITCH: <END_TAG> "switch" <CLOSE_TAG1>>
2.671 -|<ELSE: <START_TAG> "else" <CLOSE_TAG2>>
2.672 -|<BREAK: <START_TAG> "break" <CLOSE_TAG2>>
2.673 -|<SIMPLE_RETURN: <START_TAG> "return" <CLOSE_TAG2>>
2.674 -|<HALT: <START_TAG> "stop" <CLOSE_TAG2>>
2.675 -|<FLUSH: <START_TAG> "flush" <CLOSE_TAG2>>
2.676 -|<TRIM: <START_TAG> "t" <CLOSE_TAG2>>
2.677 -|<LTRIM: <START_TAG> "lt" <CLOSE_TAG2>>
2.678 -|<RTRIM: <START_TAG> "rt" <CLOSE_TAG2>>
2.679 -|<NOTRIM: <START_TAG> "nt" <CLOSE_TAG2>>
2.680 -|<DEFAUL: <START_TAG> "default" <CLOSE_TAG1>>
2.681 -|<SIMPLE_NESTED: <START_TAG> "nested" <CLOSE_TAG2>>
2.682 -|<NESTED: <START_TAG> "nested" <BLANK>>
2.683 -|<SIMPLE_RECURSE: <START_TAG> "recurse" <CLOSE_TAG2>>
2.684 -|<RECURSE: <START_TAG> "recurse" <BLANK>>
2.685 -|<FALLBACK: <START_TAG> "fallback" <CLOSE_TAG2>>
2.686 -|<ESCAPE: <START_TAG> "escape" <BLANK>>
2.687 -|<END_ESCAPE: <END_TAG> "escape" <CLOSE_TAG1>>
2.688 -|<NOESCAPE: <START_TAG> "noescape" <CLOSE_TAG1>>
2.689 -|<END_NOESCAPE: <END_TAG> "noescape" <CLOSE_TAG1>>
2.690 -|<UNIFIED_CALL: "<@" | "[@">
2.691 -|<UNIFIED_CALL_END: (["<","["]) "/@" (<ID> ("." <ID>)*)? <CLOSE_TAG1>>
2.692 -|<FTL_HEADER: ("<#ftl" | "[#ftl") <BLANK>>
2.693 -|<TRIVIAL_FTL_HEADER: ("<#ftl" | "[#ftl") ("/")? ([">","]"])>
2.694 -|<UNKNOWN_DIRECTIVE: ("[#" | "[/#" | "<#" | "</#") (["A"-"Z","_","a"-"z"])+>
2.695 -}
2.696 -
2.697 -</PRE></TD></TR><TR><TD><PRE><DEFAULT, NODIRECTIVE> TOKEN : {
2.698 -<WHITESPACE: (["\t","\n","\r"," "])+>
2.699 -|<PRINTABLE_CHARS: (["\u0000"-"\b","\u000b"-"\f","\u000e"-"\u001f","!"-"\"","%"-";","="-"Z","\\"-"z","|"-"\uffff"])+>
2.700 -|<FALSE_ALERT: ["#","$","<","[","{"]>
2.701 -|<OUTPUT_ESCAPE: "${">
2.702 -|<NUMERICAL_ESCAPE: "#{">
2.703 -}
2.704 -
2.705 -</PRE></TD></TR><TR><TD><PRE><FM_EXPRESSION, IN_PAREN, NAMED_PARAMETER_EXPRESSION> SKIP : {
2.706 -<(["\t","\n","\r"," "])+>
2.707 -|<["<","["] ["!","#"] "--">
2.708 -}
2.709 -
2.710 -</PRE></TD></TR><TR><TD><PRE><EXPRESSION_COMMENT> SKIP : {
2.711 -<(["\u0000"-",","."-"=","?"-"\\","^"-"\uffff"])+>
2.712 -|">"
2.713 -|"]"
2.714 -|"-"
2.715 -|<"-->" | "--]">
2.716 -}
2.717 -
2.718 -</PRE></TD></TR><TR><TD><PRE><FM_EXPRESSION, IN_PAREN, NO_SPACE_EXPRESSION, NAMED_PARAMETER_EXPRESSION> TOKEN : {
2.719 -<STRING_LITERAL: "\"" (["\u0000"-"!","#"-"[","]"-"\uffff"] | <ESCAPED_CHAR>)* "\"" | "\'" (["\u0000"-"&","("-"[","]"-"\uffff"] | <ESCAPED_CHAR>)* "\'">
2.720 -|<RAW_STRING: "r" ("\"" (["\u0000"-"!","#"-"\uffff"])* "\"" | "\'" (["\u0000"-"&","("-"\uffff"])* "\'")>
2.721 -|<FALSE: "false">
2.722 -|<TRUE: "true">
2.723 -|<INTEGER: (["0"-"9"])+>
2.724 -|<DECIMAL: <INTEGER> "." <INTEGER>>
2.725 -|<DOT: ".">
2.726 -|<DOT_DOT: "..">
2.727 -|<BUILT_IN: "?">
2.728 -|<EXISTS: "??">
2.729 -|<EQUALS: "=">
2.730 -|<DOUBLE_EQUALS: "==">
2.731 -|<NOT_EQUALS: "!=">
2.732 -|<LESS_THAN: "lt" | "\\lt" | ["<"] | "&lt;">
2.733 -|<LESS_THAN_EQUALS: "lte" | "\\lte" | "<=" | "&lt;=">
2.734 -|<ESCAPED_GT: "gt" | "\\gt" | "&gt;">
2.735 -|<ESCAPED_GTE: "gte" | "\\gte" | "&gt;=">
2.736 -|<PLUS: "+">
2.737 -|<MINUS: "-">
2.738 -|<TIMES: "*">
2.739 -|<DOUBLE_STAR: "**">
2.740 -|<ELLIPSIS: "...">
2.741 -|<DIVIDE: "/">
2.742 -|<PERCENT: "%">
2.743 -|<AND: ["&"] | "&&">
2.744 -|<OR: ["|"] | "||">
2.745 -|<EXCLAM: "!">
2.746 -|<COMMA: ",">
2.747 -|<SEMICOLON: ";">
2.748 -|<COLON: ":">
2.749 -|<OPEN_BRACKET: "[">
2.750 -|<CLOSE_BRACKET: "]">
2.751 -|<OPEN_PAREN: "(">
2.752 -|<CLOSE_PAREN: ")">
2.753 -|<OPEN_BRACE: "{">
2.754 -|<CLOSE_BRACE: "}">
2.755 -|<IN: "in">
2.756 -|<AS: "as">
2.757 -|<USING: "using">
2.758 -|<ID: <LETTER> (["$","0"-"9","@"-"Z","_","a"-"z","\u00c0"-"\u00d6","\u00d8"-"\u00f6","\u00f8"-"\u00ff","\u0100"-"\u1fff","\u3040"-"\u318f","\u3300"-"\u337f","\u3400"-"\u3d2d","\u4e00"-"\u9fff","\uf900"-"\ufaff"])*>
2.759 -|}
2.760 -
2.761 -</PRE></TD></TR><TR><TD><PRE><FM_EXPRESSION, NO_SPACE_EXPRESSION, NAMED_PARAMETER_EXPRESSION> TOKEN : {
2.762 -<DIRECTIVE_END: ">">
2.763 -|<EMPTY_DIRECTIVE_END: "/>" | "/]">
2.764 -}
2.765 -
2.766 -</PRE></TD></TR><TR><TD><PRE><IN_PAREN> TOKEN : {
2.767 -<NATURAL_GT: ">">
2.768 -|<NATURAL_GTE: ">=">
2.769 -}
2.770 -
2.771 -</PRE></TD></TR><TR><TD><PRE><NO_SPACE_EXPRESSION> TOKEN : {
2.772 -<TERMINATING_WHITESPACE: (["\t","\n","\r"," "])+>
2.773 -}
2.774 -
2.775 -</PRE></TD></TR><TR><TD><PRE><NAMED_PARAMETER_EXPRESSION> TOKEN : {
2.776 -<TERMINATING_EXCLAM: "!" (["\t","\n","\r"," "])+>
2.777 -}
2.778 -
2.779 -</PRE></TD></TR><TR><TD><PRE><NO_PARSE> TOKEN : {
2.780 -<TERSE_COMMENT_END: "-->" | "--]">
2.781 -|<MAYBE_END: (["<","["]) "/" ("#")? (["A"-"Z","a"-"z"])+ (["\t","\n","\r"," "])* ([">","]"])>
2.782 -|<KEEP_GOING: (["\u0000"-",","."-";","="-"Z","\\"-"\uffff"])+>
2.783 -|<LONE_LESS_THAN_OR_DASH: ["-","<","["]>
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 - <OPEN_PAREN> <a HREF="#prod1">Expression </a> <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 - ( <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 - ( <PLUS> | <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> ( ( ( <PLUS> | <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> ( ( ( <TIMES> | <DIVIDE> | <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> ( ( <NOT_EQUALS> | <EQUALS> | <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> ( ( <NATURAL_GTE> | <ESCAPED_GTE> | <NATURAL_GT> | <ESCAPED_GT> | <LESS_THAN_EQUALS> | <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> ( <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> ( <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> ( <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 - <OPEN_BRACKET> <a HREF="#prod22">PositionalArgs</a> <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 - ( <INTEGER> | <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 - <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 - <DOT> <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 - ( <TERMINATING_EXCLAM> | ( <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 - <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 - <BUILT_IN> <ID>
3.212 - </TD>
3.213 - </TR>
3.214 - <TR><TD><PRE>/**
3.215 - * production for when a key is specified by <DOT> + 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 - <DOT> ( <ID> | <TIMES> | <DOUBLE_STAR> | ( <LESS_THAN> | <LESS_THAN_EQUALS> | <ESCAPED_GT> | <ESCAPED_GTE> | <FALSE> | <TRUE> | <IN> | <AS> | <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 - <OPEN_BRACKET> <a HREF="#prod1">Expression</a> <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 - <OPEN_PAREN> <a HREF="#prod22">PositionalArgs</a> <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 - ( <STRING_LITERAL> | <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 - ( <FALSE> | <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 - <OPEN_BRACE> ( <a HREF="#prod1">Expression</a> ( <COMMA> | <COLON> ) <a HREF="#prod1">Expression</a> ( <COMMA> <a HREF="#prod1">Expression</a> ( <COMMA> | <COLON> ) <a HREF="#prod1">Expression</a> )* )? <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 - <OUTPUT_ESCAPE> <a HREF="#prod1">Expression</a> <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 - <NUMERICAL_ESCAPE> <a HREF="#prod1">Expression</a> ( <SEMICOLON> <ID> )? <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 - <IF> <a HREF="#prod1">Expression</a> <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> ( <ELSE_IF> <a HREF="#prod1">Expression</a> <a HREF="#prod34">LooseDirectiveEnd</a> <a HREF="#prod33">OptionalBlock</a> )* ( <ELSE> <a HREF="#prod33">OptionalBlock</a> )? <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 - <ATTEMPT> <a HREF="#prod33">OptionalBlock</a> <a HREF="#prod36">Recover</a> ( <END_RECOVER> | <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 - <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 - <LIST> <a HREF="#prod1">Expression</a> <AS> <ID> <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> <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 - <FOREACH> <ID> <IN> <a HREF="#prod1">Expression</a> <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> <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 - <VISIT> <a HREF="#prod1">Expression</a> ( <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 - ( <SIMPLE_RECURSE> | ( <RECURSE> ( <a HREF="#prod1">Expression</a> )? ( <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 - <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 - <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 - ( <SIMPLE_RETURN> | <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 - ( <HALT> | <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 - ( ( <SIMPLE_NESTED> )| ( <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 - <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 - ( <TRIM> | <LTRIM> | <RTRIM> | <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 - ( <ASSIGN> | <GLOBALASSIGN> | <LOCALASSIGN> ) <a HREF="#prod23">IdentifierOrStringLiteral</a> ( ( <EQUALS> <a HREF="#prod1">Expression</a> ( ( <COMMA> )? <a HREF="#prod23">IdentifierOrStringLiteral</a> <EQUALS> <a HREF="#prod1">Expression</a> )* ( <IN> <a HREF="#prod1">Expression</a> )? <a HREF="#prod34">LooseDirectiveEnd</a> )| ( ( <IN> <a HREF="#prod1">Expression</a> )? <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> ( <END_LOCAL> | <END_ASSIGN> | <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 - <INCLUDE> <a HREF="#prod1">Expression</a> ( <SEMICOLON> )? ( <ID> <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 - <IMPORT> <a HREF="#prod1">Expression</a> <AS> <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 - ( <MACRO> | <FUNCTION> ) <a HREF="#prod23">IdentifierOrStringLiteral</a> ( <OPEN_PAREN> )? ( <ID> ( <ELLIPSIS> )? ( <EQUALS> <a HREF="#prod1">Expression</a> )? ( <COMMA> )? )* ( <CLOSE_PAREN> )? <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> ( <END_MACRO> | <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 - <COMPRESS> <a HREF="#prod33">OptionalBlock</a> <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 - <UNIFIED_CALL> <a HREF="#prod1">Expression</a> ( <TERMINATING_WHITESPACE> )? ( <a HREF="#prod54">NamedArgs</a> | <a HREF="#prod22">PositionalArgs</a> ) ( <SEMICOLON> ( ( <TERMINATING_WHITESPACE> )? <ID> ( ( <TERMINATING_WHITESPACE> )? <COMMA> ( <TERMINATING_WHITESPACE> )? <ID> )* )? )? ( <EMPTY_DIRECTIVE_END> | ( <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> <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 - <CALL> <ID> ( <a HREF="#prod54">NamedArgs</a> | ( ( <OPEN_PAREN> )? <a HREF="#prod22">PositionalArgs</a> ( <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 - ( <ID> <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> ( ( <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 - ( <COMMENT> | <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 - <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 - <TRANSFORM> <a HREF="#prod1">Expression</a> ( <SEMICOLON> )? ( <ID> <EQUALS> <a HREF="#prod1">Expression</a> )* ( <EMPTY_DIRECTIVE_END> | ( <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> <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 - <SWITCH> <a HREF="#prod1">Expression</a> <DIRECTIVE_END> ( <a HREF="#prod61">Case</a> )* ( <WHITESPACE> )? <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 - ( <WHITESPACE> )? ( <CASE> <a HREF="#prod1">Expression</a> <DIRECTIVE_END> | <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 - <ESCAPE> <ID> <AS> <a HREF="#prod1">Expression</a> <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> <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 - <NOESCAPE> <a HREF="#prod33">OptionalBlock</a> <END_NOESCAPE>
3.518 - </TD>
3.519 - </TR>
3.520 - <TR><TD><PRE>/**
3.521 - * Production to terminate potentially empty elements. Either a ">" or "/>"
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 - ( <DIRECTIVE_END> | <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 - <SETTING> <ID> <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 - ( ( <WHITESPACE> | <PRINTABLE_CHARS> | <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 - ( ( <KEEP_GOING> | <MAYBE_END> | <TERSE_COMMENT_END> | <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 - ( <WHITESPACE> )? ( <TRIVIAL_FTL_HEADER> | ( <FTL_HEADER> ( <ID> <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> <EQUALS> <a HREF="#prod1">Expression</a> ( <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> <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><DEFAULT> TOKEN : {
3.633 -<ATTEMPT: <START_TAG> "attempt" <CLOSE_TAG1>>
3.634 -|<RECOVER: <START_TAG> "recover" <CLOSE_TAG1>>
3.635 -|<IF: <START_TAG> "if" <BLANK>>
3.636 -|<ELSE_IF: <START_TAG> "elseif" <BLANK>>
3.637 -|<LIST: <START_TAG> "list" <BLANK>>
3.638 -|<FOREACH: <START_TAG> "foreach" <BLANK>>
3.639 -|<SWITCH: <START_TAG> "switch" <BLANK>>
3.640 -|<CASE: <START_TAG> "case" <BLANK>>
3.641 -|<ASSIGN: <START_TAG> "assign" <BLANK>>
3.642 -|<GLOBALASSIGN: <START_TAG> "global" <BLANK>>
3.643 -|<LOCALASSIGN: <START_TAG> "local" <BLANK>>
3.644 -|<INCLUDE: <START_TAG> "include" <BLANK>>
3.645 -|<IMPORT: <START_TAG> "import" <BLANK>>
3.646 -|<FUNCTION: <START_TAG> "function" <BLANK>>
3.647 -|<MACRO: <START_TAG> "macro" <BLANK>>
3.648 -|<TRANSFORM: <START_TAG> "transform" <BLANK>>
3.649 -|<VISIT: <START_TAG> "visit" <BLANK>>
3.650 -|<STOP: <START_TAG> "stop" <BLANK>>
3.651 -|<RETURN: <START_TAG> "return" <BLANK>>
3.652 -|<CALL: <START_TAG> "call" <BLANK>>
3.653 -|<SETTING: <START_TAG> "setting" <BLANK>>
3.654 -|<COMPRESS: <START_TAG> "compress" <CLOSE_TAG1>>
3.655 -|<COMMENT: <START_TAG> "comment" <CLOSE_TAG1>>
3.656 -|<TERSE_COMMENT: (["<","["]) "#--">
3.657 -|<NOPARSE: <START_TAG> "noparse" <CLOSE_TAG1>>
3.658 -|<END_IF: <END_TAG> "if" <CLOSE_TAG1>>
3.659 -|<END_LIST: <END_TAG> "list" <CLOSE_TAG1>>
3.660 -|<END_RECOVER: <END_TAG> "recover" <CLOSE_TAG1>>
3.661 -|<END_ATTEMPT: <END_TAG> "attempt" <CLOSE_TAG1>>
3.662 -|<END_FOREACH: <END_TAG> "foreach" <CLOSE_TAG1>>
3.663 -|<END_LOCAL: <END_TAG> "local" <CLOSE_TAG1>>
3.664 -|<END_GLOBAL: <END_TAG> "global" <CLOSE_TAG1>>
3.665 -|<END_ASSIGN: <END_TAG> "assign" <CLOSE_TAG1>>
3.666 -|<END_FUNCTION: <END_TAG> "function" <CLOSE_TAG1>>
3.667 -|<END_MACRO: <END_TAG> "macro" <CLOSE_TAG1>>
3.668 -|<END_COMPRESS: <END_TAG> "compress" <CLOSE_TAG1>>
3.669 -|<END_TRANSFORM: <END_TAG> "transform" <CLOSE_TAG1>>
3.670 -|<END_SWITCH: <END_TAG> "switch" <CLOSE_TAG1>>
3.671 -|<ELSE: <START_TAG> "else" <CLOSE_TAG2>>
3.672 -|<BREAK: <START_TAG> "break" <CLOSE_TAG2>>
3.673 -|<SIMPLE_RETURN: <START_TAG> "return" <CLOSE_TAG2>>
3.674 -|<HALT: <START_TAG> "stop" <CLOSE_TAG2>>
3.675 -|<FLUSH: <START_TAG> "flush" <CLOSE_TAG2>>
3.676 -|<TRIM: <START_TAG> "t" <CLOSE_TAG2>>
3.677 -|<LTRIM: <START_TAG> "lt" <CLOSE_TAG2>>
3.678 -|<RTRIM: <START_TAG> "rt" <CLOSE_TAG2>>
3.679 -|<NOTRIM: <START_TAG> "nt" <CLOSE_TAG2>>
3.680 -|<DEFAUL: <START_TAG> "default" <CLOSE_TAG1>>
3.681 -|<SIMPLE_NESTED: <START_TAG> "nested" <CLOSE_TAG2>>
3.682 -|<NESTED: <START_TAG> "nested" <BLANK>>
3.683 -|<SIMPLE_RECURSE: <START_TAG> "recurse" <CLOSE_TAG2>>
3.684 -|<RECURSE: <START_TAG> "recurse" <BLANK>>
3.685 -|<FALLBACK: <START_TAG> "fallback" <CLOSE_TAG2>>
3.686 -|<ESCAPE: <START_TAG> "escape" <BLANK>>
3.687 -|<END_ESCAPE: <END_TAG> "escape" <CLOSE_TAG1>>
3.688 -|<NOESCAPE: <START_TAG> "noescape" <CLOSE_TAG1>>
3.689 -|<END_NOESCAPE: <END_TAG> "noescape" <CLOSE_TAG1>>
3.690 -|<UNIFIED_CALL: "<@" | "[@">
3.691 -|<UNIFIED_CALL_END: (["<","["]) "/@" (<ID> ("." <ID>)*)? <CLOSE_TAG1>>
3.692 -|<FTL_HEADER: ("<#ftl" | "[#ftl") <BLANK>>
3.693 -|<TRIVIAL_FTL_HEADER: ("<#ftl" | "[#ftl") ("/")? ([">","]"])>
3.694 -|<UNKNOWN_DIRECTIVE: ("[#" | "[/#" | "<#" | "</#") (["A"-"Z","_","a"-"z"])+>
3.695 -}
3.696 -
3.697 -</PRE></TD></TR><TR><TD><PRE><DEFAULT, NODIRECTIVE> TOKEN : {
3.698 -<WHITESPACE: (["\t","\n","\r"," "])+>
3.699 -|<PRINTABLE_CHARS: (["\u0000"-"\b","\u000b"-"\f","\u000e"-"\u001f","!"-"\"","%"-";","="-"Z","\\"-"z","|"-"\uffff"])+>
3.700 -|<FALSE_ALERT: ["#","$","<","[","{"]>
3.701 -|<OUTPUT_ESCAPE: "${">
3.702 -|<NUMERICAL_ESCAPE: "#{">
3.703 -}
3.704 -
3.705 -</PRE></TD></TR><TR><TD><PRE><FM_EXPRESSION, IN_PAREN, NAMED_PARAMETER_EXPRESSION> SKIP : {
3.706 -<(["\t","\n","\r"," "])+>
3.707 -|<["<","["] ["!","#"] "--">
3.708 -}
3.709 -
3.710 -</PRE></TD></TR><TR><TD><PRE><EXPRESSION_COMMENT> SKIP : {
3.711 -<(["\u0000"-",","."-"=","?"-"\\","^"-"\uffff"])+>
3.712 -|">"
3.713 -|"]"
3.714 -|"-"
3.715 -|<"-->" | "--]">
3.716 -}
3.717 -
3.718 -</PRE></TD></TR><TR><TD><PRE><FM_EXPRESSION, IN_PAREN, NO_SPACE_EXPRESSION, NAMED_PARAMETER_EXPRESSION> TOKEN : {
3.719 -<STRING_LITERAL: "\"" (["\u0000"-"!","#"-"[","]"-"\uffff"] | <ESCAPED_CHAR>)* "\"" | "\'" (["\u0000"-"&","("-"[","]"-"\uffff"] | <ESCAPED_CHAR>)* "\'">
3.720 -|<RAW_STRING: "r" ("\"" (["\u0000"-"!","#"-"\uffff"])* "\"" | "\'" (["\u0000"-"&","("-"\uffff"])* "\'")>
3.721 -|<FALSE: "false">
3.722 -|<TRUE: "true">
3.723 -|<INTEGER: (["0"-"9"])+>
3.724 -|<DECIMAL: <INTEGER> "." <INTEGER>>
3.725 -|<DOT: ".">
3.726 -|<DOT_DOT: "..">
3.727 -|<BUILT_IN: "?">
3.728 -|<EXISTS: "??">
3.729 -|<EQUALS: "=">
3.730 -|<DOUBLE_EQUALS: "==">
3.731 -|<NOT_EQUALS: "!=">
3.732 -|<LESS_THAN: "lt" | "\\lt" | ["<"] | "&lt;">
3.733 -|<LESS_THAN_EQUALS: "lte" | "\\lte" | "<=" | "&lt;=">
3.734 -|<ESCAPED_GT: "gt" | "\\gt" | "&gt;">
3.735 -|<ESCAPED_GTE: "gte" | "\\gte" | "&gt;=">
3.736 -|<PLUS: "+">
3.737 -|<MINUS: "-">
3.738 -|<TIMES: "*">
3.739 -|<DOUBLE_STAR: "**">
3.740 -|<ELLIPSIS: "...">
3.741 -|<DIVIDE: "/">
3.742 -|<PERCENT: "%">
3.743 -|<AND: ["&"] | "&&">
3.744 -|<OR: ["|"] | "||">
3.745 -|<EXCLAM: "!">
3.746 -|<COMMA: ",">
3.747 -|<SEMICOLON: ";">
3.748 -|<COLON: ":">
3.749 -|<OPEN_BRACKET: "[">
3.750 -|<CLOSE_BRACKET: "]">
3.751 -|<OPEN_PAREN: "(">
3.752 -|<CLOSE_PAREN: ")">
3.753 -|<OPEN_BRACE: "{">
3.754 -|<CLOSE_BRACE: "}">
3.755 -|<IN: "in">
3.756 -|<AS: "as">
3.757 -|<USING: "using">
3.758 -|<ID: <LETTER> (["$","0"-"9","@"-"Z","_","a"-"z","\u00c0"-"\u00d6","\u00d8"-"\u00f6","\u00f8"-"\u00ff","\u0100"-"\u1fff","\u3040"-"\u318f","\u3300"-"\u337f","\u3400"-"\u3d2d","\u4e00"-"\u9fff","\uf900"-"\ufaff"])*>
3.759 -|}
3.760 -
3.761 -</PRE></TD></TR><TR><TD><PRE><FM_EXPRESSION, NO_SPACE_EXPRESSION, NAMED_PARAMETER_EXPRESSION> TOKEN : {
3.762 -<DIRECTIVE_END: ">">
3.763 -|<EMPTY_DIRECTIVE_END: "/>" | "/]">
3.764 -}
3.765 -
3.766 -</PRE></TD></TR><TR><TD><PRE><IN_PAREN> TOKEN : {
3.767 -<NATURAL_GT: ">">
3.768 -|<NATURAL_GTE: ">=">
3.769 -}
3.770 -
3.771 -</PRE></TD></TR><TR><TD><PRE><NO_SPACE_EXPRESSION> TOKEN : {
3.772 -<TERMINATING_WHITESPACE: (["\t","\n","\r"," "])+>
3.773 -}
3.774 -
3.775 -</PRE></TD></TR><TR><TD><PRE><NAMED_PARAMETER_EXPRESSION> TOKEN : {
3.776 -<TERMINATING_EXCLAM: "!" (["\t","\n","\r"," "])+>
3.777 -}
3.778 -
3.779 -</PRE></TD></TR><TR><TD><PRE><NO_PARSE> TOKEN : {
3.780 -<TERSE_COMMENT_END: "-->" | "--]">
3.781 -|<MAYBE_END: (["<","["]) "/" ("#")? (["A"-"Z","a"-"z"])+ (["\t","\n","\r"," "])* ([">","]"])>
3.782 -|<KEEP_GOING: (["\u0000"-",","."-";","="-"Z","\\"-"\uffff"])+>
3.783 -|<LONE_LESS_THAN_OR_DASH: ["-","<","["]>
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 - <OPEN_PAREN> <a HREF="#prod1">Expression</a> <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 - ( <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 - ( <PLUS> | <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> ( ( ( <PLUS> | <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> ( ( ( <TIMES> | <DIVIDE> | <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> ( ( <NOT_EQUALS> | <EQUALS> | <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> ( ( <NATURAL_GTE> | <ESCAPED_GTE> | <NATURAL_GT> | <ESCAPED_GT> | <LESS_THAN_EQUALS> | <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> ( <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> ( <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> ( <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 - <OPEN_BRACKET> <a HREF="#prod22">PositionalArgs</a> <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 - ( <INTEGER> | <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 - <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 - <DOT> <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 - ( <TERMINATING_EXCLAM> | ( <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 - <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 - <BUILT_IN> <ID>
4.212 - </TD>
4.213 - </TR>
4.214 - <TR><TD><PRE>/**
4.215 - * production for when a key is specified by <DOT> + 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 - <DOT> ( <ID> | <TIMES> | <DOUBLE_STAR> | ( <LESS_THAN> | <LESS_THAN_EQUALS> | <ESCAPED_GT> | <ESCAPED_GTE> | <FALSE> | <TRUE> | <IN> | <AS> | <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 - <OPEN_BRACKET> <a HREF="#prod1">Expression</a> <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 - <OPEN_PAREN> <a HREF="#prod22">PositionalArgs</a> <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 - ( <STRING_LITERAL> | <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 - ( <FALSE> | <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 - <OPEN_BRACE> ( <a HREF="#prod1">Expression</a> ( <COMMA> | <COLON> ) <a HREF="#prod1">Expression</a> ( <COMMA> <a HREF="#prod1">Expression</a> ( <COMMA> | <COLON> ) <a HREF="#prod1">Expression</a> )* )? <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 - <OUTPUT_ESCAPE> <a HREF="#prod1">Expression</a> <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 - <NUMERICAL_ESCAPE> <a HREF="#prod1">Expression</a> ( <SEMICOLON> <ID> )? <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 - <IF> <a HREF="#prod1">Expression</a> <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> ( <ELSE_IF> <a HREF="#prod1">Expression</a> <a HREF="#prod34">LooseDirectiveEnd</a> <a HREF="#prod33">OptionalBlock</a> )* ( <ELSE> <a HREF="#prod33">OptionalBlock</a> )? <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 - <ATTEMPT> <a HREF="#prod33">OptionalBlock</a> <a HREF="#prod36">Recover</a> ( <END_RECOVER> | <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 - <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 - <LIST> <a HREF="#prod1">Expression</a> <AS> <ID> <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> <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 - <FOREACH> <ID> <IN> <a HREF="#prod1">Expression</a> <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> <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 - <VISIT> <a HREF="#prod1">Expression</a> ( <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 - ( <SIMPLE_RECURSE> | ( <RECURSE> ( <a HREF="#prod1">Expression</a> )? ( <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 - <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 - <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 - ( <SIMPLE_RETURN> | <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 - ( <HALT> | <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 - ( ( <SIMPLE_NESTED> )| ( <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 - <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 - ( <TRIM> | <LTRIM> | <RTRIM> | <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 - ( <ASSIGN> | <GLOBALASSIGN> | <LOCALASSIGN> ) <a HREF="#prod23">IdentifierOrStringLiteral</a> ( ( <EQUALS> <a HREF="#prod1">Expression</a> ( ( <COMMA> )? <a HREF="#prod23">IdentifierOrStringLiteral</a> <EQUALS> <a HREF="#prod1">Expression</a> )* ( <IN> <a HREF="#prod1">Expression</a> )? <a HREF="#prod34">LooseDirectiveEnd</a> )| ( ( <IN> <a HREF="#prod1">Expression</a> )? <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> ( <END_LOCAL> | <END_ASSIGN> | <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 - <INCLUDE> <a HREF="#prod1">Expression</a> ( <SEMICOLON> )? ( <ID> <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 - <IMPORT> <a HREF="#prod1">Expression</a> <AS> <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 - ( <MACRO> | <FUNCTION> ) <a HREF="#prod23">IdentifierOrStringLiteral</a> ( <OPEN_PAREN> )? ( <ID> ( <ELLIPSIS> )? ( <EQUALS> <a HREF="#prod1">Expression</a> )? ( <COMMA> )? )* ( <CLOSE_PAREN> )? <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> ( <END_MACRO> | <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 - <COMPRESS> <a HREF="#prod33">OptionalBlock</a> <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 - <UNIFIED_CALL> <a HREF="#prod1">Expression</a> ( <TERMINATING_WHITESPACE> )? ( <a HREF="#prod54">NamedArgs</a> | <a HREF="#prod22">PositionalArgs</a> ) ( <SEMICOLON> ( ( <TERMINATING_WHITESPACE> )? <ID> ( ( <TERMINATING_WHITESPACE> )? <COMMA> ( <TERMINATING_WHITESPACE> )? <ID> )* )? )? ( <EMPTY_DIRECTIVE_END> | ( <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> <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 - <CALL> <ID> ( <a HREF="#prod54">NamedArgs</a> | ( ( <OPEN_PAREN> )? <a HREF="#prod22">PositionalArgs</a> ( <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 - ( <ID> <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> ( ( <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 - ( <COMMENT> | <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 - <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 - <TRANSFORM> <a HREF="#prod1">Expression</a> ( <SEMICOLON> )? ( <ID> <EQUALS> <a HREF="#prod1">Expression</a> )* ( <EMPTY_DIRECTIVE_END> | ( <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> <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 - <SWITCH> <a HREF="#prod1">Expression</a> <DIRECTIVE_END> ( <a HREF="#prod61">Case</a> )* ( <WHITESPACE> )? <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 - ( <WHITESPACE> )? ( <CASE> <a HREF="#prod1">Expression</a> <DIRECTIVE_END> | <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 - <ESCAPE> <ID> <AS> <a HREF="#prod1">Expression</a> <DIRECTIVE_END> <a HREF="#prod33">OptionalBlock</a> <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 - <NOESCAPE> <a HREF="#prod33">OptionalBlock</a> <END_NOESCAPE>
4.518 - </TD>
4.519 - </TR>
4.520 - <TR><TD><PRE>/**
4.521 - * Production to terminate potentially empty elements. Either a ">" or "/>"
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 - ( <DIRECTIVE_END> | <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 - <SETTING> <ID> <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 - ( ( <WHITESPACE> | <PRINTABLE_CHARS> | <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 - ( ( <KEEP_GOING> | <MAYBE_END> | <TERSE_COMMENT_END> | <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 - ( <WHITESPACE> )? ( <TRIVIAL_FTL_HEADER> | ( <FTL_HEADER> ( <ID> <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> <EQUALS> <a HREF="#prod1">Expression</a> ( <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> <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><DEFAULT> TOKEN : {
4.633 -<ATTEMPT: <START_TAG> "attempt" <CLOSE_TAG1>>
4.634 -|<RECOVER: <START_TAG> "recover" <CLOSE_TAG1>>
4.635 -|<IF: <START_TAG> "if" <BLANK>>
4.636 -|<ELSE_IF: <START_TAG> "elseif" <BLANK>>
4.637 -|<LIST: <START_TAG> "list" <BLANK>>
4.638 -|<FOREACH: <START_TAG> "foreach" <BLANK>>
4.639 -|<SWITCH: <START_TAG> "switch" <BLANK>>
4.640 -|<CASE: <START_TAG> "case" <BLANK>>
4.641 -|<ASSIGN: <START_TAG> "assign" <BLANK>>
4.642 -|<GLOBALASSIGN: <START_TAG> "global" <BLANK>>
4.643 -|<LOCALASSIGN: <START_TAG> "local" <BLANK>>
4.644 -|<INCLUDE: <START_TAG> "include" <BLANK>>
4.645 -|<IMPORT: <START_TAG> "import" <BLANK>>
4.646 -|<FUNCTION: <START_TAG> "function" <BLANK>>
4.647 -|<MACRO: <START_TAG> "macro" <BLANK>>
4.648 -|<TRANSFORM: <START_TAG> "transform" <BLANK>>
4.649 -|<VISIT: <START_TAG> "visit" <BLANK>>
4.650 -|<STOP: <START_TAG> "stop" <BLANK>>
4.651 -|<RETURN: <START_TAG> "return" <BLANK>>
4.652 -|<CALL: <START_TAG> "call" <BLANK>>
4.653 -|<SETTING: <START_TAG> "setting" <BLANK>>
4.654 -|<COMPRESS: <START_TAG> "compress" <CLOSE_TAG1>>
4.655 -|<COMMENT: <START_TAG> "comment" <CLOSE_TAG1>>
4.656 -|<TERSE_COMMENT: (["<","["]) "#--">
4.657 -|<NOPARSE: <START_TAG> "noparse" <CLOSE_TAG1>>
4.658 -|<END_IF: <END_TAG> "if" <CLOSE_TAG1>>
4.659 -|<END_LIST: <END_TAG> "list" <CLOSE_TAG1>>
4.660 -|<END_RECOVER: <END_TAG> "recover" <CLOSE_TAG1>>
4.661 -|<END_ATTEMPT: <END_TAG> "attempt" <CLOSE_TAG1>>
4.662 -|<END_FOREACH: <END_TAG> "foreach" <CLOSE_TAG1>>
4.663 -|<END_LOCAL: <END_TAG> "local" <CLOSE_TAG1>>
4.664 -|<END_GLOBAL: <END_TAG> "global" <CLOSE_TAG1>>
4.665 -|<END_ASSIGN: <END_TAG> "assign" <CLOSE_TAG1>>
4.666 -|<END_FUNCTION: <END_TAG> "function" <CLOSE_TAG1>>
4.667 -|<END_MACRO: <END_TAG> "macro" <CLOSE_TAG1>>
4.668 -|<END_COMPRESS: <END_TAG> "compress" <CLOSE_TAG1>>
4.669 -|<END_TRANSFORM: <END_TAG> "transform" <CLOSE_TAG1>>
4.670 -|<END_SWITCH: <END_TAG> "switch" <CLOSE_TAG1>>
4.671 -|<ELSE: <START_TAG> "else" <CLOSE_TAG2>>
4.672 -|<BREAK: <START_TAG> "break" <CLOSE_TAG2>>
4.673 -|<SIMPLE_RETURN: <START_TAG> "return" <CLOSE_TAG2>>
4.674 -|<HALT: <START_TAG> "stop" <CLOSE_TAG2>>
4.675 -|<FLUSH: <START_TAG> "flush" <CLOSE_TAG2>>
4.676 -|<TRIM: <START_TAG> "t" <CLOSE_TAG2>>
4.677 -|<LTRIM: <START_TAG> "lt" <CLOSE_TAG2>>
4.678 -|<RTRIM: <START_TAG> "rt" <CLOSE_TAG2>>
4.679 -|<NOTRIM: <START_TAG> "nt" <CLOSE_TAG2>>
4.680 -|<DEFAUL: <START_TAG> "default" <CLOSE_TAG1>>
4.681 -|<SIMPLE_NESTED: <START_TAG> "nested" <CLOSE_TAG2>>
4.682 -|<NESTED: <START_TAG> "nested" <BLANK>>
4.683 -|<SIMPLE_RECURSE: <START_TAG> "recurse" <CLOSE_TAG2>>
4.684 -|<RECURSE: <START_TAG> "recurse" <BLANK>>
4.685 -|<FALLBACK: <START_TAG> "fallback" <CLOSE_TAG2>>
4.686 -|<ESCAPE: <START_TAG> "escape" <BLANK>>
4.687 -|<END_ESCAPE: <END_TAG> "escape" <CLOSE_TAG1>>
4.688 -|<NOESCAPE: <START_TAG> "noescape" <CLOSE_TAG1>>
4.689 -|<END_NOESCAPE: <END_TAG> "noescape" <CLOSE_TAG1>>
4.690 -|<UNIFIED_CALL: "<@" | "[@">
4.691 -|<UNIFIED_CALL_END: (["<","["]) "/@" (<ID> ("." <ID>)*)? <CLOSE_TAG1>>
4.692 -|<FTL_HEADER: ("<#ftl" | "[#ftl") <BLANK>>
4.693 -|<TRIVIAL_FTL_HEADER: ("<#ftl" | "[#ftl") ("/")? ([">","]"])>
4.694 -|<UNKNOWN_DIRECTIVE: ("[#" | "[/#" | "<#" | "</#") (["A"-"Z","_","a"-"z"])+>
4.695 -}
4.696 -
4.697 -</PRE></TD></TR><TR><TD><PRE><DEFAULT, NODIRECTIVE> TOKEN : {
4.698 -<WHITESPACE: (["\t","\n","\r"," "])+>
4.699 -|<PRINTABLE_CHARS: (["\u0000"-"\b","\u000b"-"\f","\u000e"-"\u001f","!"-"\"","%"-";","="-"Z","\\"-"z","|"-"\uffff"])+>
4.700 -|<FALSE_ALERT: ["#","$","<","[","{"]>
4.701 -|<OUTPUT_ESCAPE: "${">
4.702 -|<NUMERICAL_ESCAPE: "#{">
4.703 -}
4.704 -
4.705 -</PRE></TD></TR><TR><TD><PRE><FM_EXPRESSION, IN_PAREN, NAMED_PARAMETER_EXPRESSION> SKIP : {
4.706 -<(["\t","\n","\r"," "])+>
4.707 -|<["<","["] ["!","#"] "--">
4.708 -}
4.709 -
4.710 -</PRE></TD></TR><TR><TD><PRE><EXPRESSION_COMMENT> SKIP : {
4.711 -<(["\u0000"-",","."-"=","?"-"\\","^"-"\uffff"])+>
4.712 -|">"
4.713 -|"]"
4.714 -|"-"
4.715 -|<"-->" | "--]">
4.716 -}
4.717 -
4.718 -</PRE></TD></TR><TR><TD><PRE><FM_EXPRESSION, IN_PAREN, NO_SPACE_EXPRESSION, NAMED_PARAMETER_EXPRESSION> TOKEN : {
4.719 -<STRING_LITERAL: "\"" (["\u0000"-"!","#"-"[","]"-"\uffff"] | <ESCAPED_CHAR>)* "\"" | "\'" (["\u0000"-"&","("-"[","]"-"\uffff"] | <ESCAPED_CHAR>)* "\'">
4.720 -|<RAW_STRING: "r" ("\"" (["\u0000"-"!","#"-"\uffff"])* "\"" | "\'" (["\u0000"-"&","("-"\uffff"])* "\'")>
4.721 -|<FALSE: "false">
4.722 -|<TRUE: "true">
4.723 -|<INTEGER: (["0"-"9"])+>
4.724 -|<DECIMAL: <INTEGER> "." <INTEGER>>
4.725 -|<DOT: ".">
4.726 -|<DOT_DOT: "..">
4.727 -|<BUILT_IN: "?">
4.728 -|<EXISTS: "??">
4.729 -|<EQUALS: "=">
4.730 -|<DOUBLE_EQUALS: "==">
4.731 -|<NOT_EQUALS: "!=">
4.732 -|<LESS_THAN: "lt" | "\\lt" | ["<"] | "&lt;">
4.733 -|<LESS_THAN_EQUALS: "lte" | "\\lte" | "<=" | "&lt;=">
4.734 -|<ESCAPED_GT: "gt" | "\\gt" | "&gt;">
4.735 -|<ESCAPED_GTE: "gte" | "\\gte" | "&gt;=">
4.736 -|<PLUS: "+">
4.737 -|<MINUS: "-">
4.738 -|<TIMES: "*">
4.739 -|<DOUBLE_STAR: "**">
4.740 -|<ELLIPSIS: "...">
4.741 -|<DIVIDE: "/">
4.742 -|<PERCENT: "%">
4.743 -|<AND: ["&"] | "&&">
4.744 -|<OR: ["|"] | "||">
4.745 -|<EXCLAM: "!">
4.746 -|<COMMA: ",">
4.747 -|<SEMICOLON: ";">
4.748 -|<COLON: ":">
4.749 -|<OPEN_BRACKET: "[">
4.750 -|<CLOSE_BRACKET: "]">
4.751 -|<OPEN_PAREN: "(">
4.752 -|<CLOSE_PAREN: ")">
4.753 -|<OPEN_BRACE: "{">
4.754 -|<CLOSE_BRACE: "}">
4.755 -|<IN: "in">
4.756 -|<AS: "as">
4.757 -|<USING: "using">
4.758 -|<ID: <LETTER> (["$","0"-"9","@"-"Z","_","a"-"z","\u00c0"-"\u00d6","\u00d8"-"\u00f6","\u00f8"-"\u00ff","\u0100"-"\u1fff","\u3040"-"\u318f","\u3300"-"\u337f","\u3400"-"\u3d2d","\u4e00"-"\u9fff","\uf900"-"\ufaff"])*>
4.759 -|}
4.760 -
4.761 -</PRE></TD></TR><TR><TD><PRE><FM_EXPRESSION, NO_SPACE_EXPRESSION, NAMED_PARAMETER_EXPRESSION> TOKEN : {
4.762 -<DIRECTIVE_END: ">">
4.763 -|<EMPTY_DIRECTIVE_END: "/>" | "/]">
4.764 -}
4.765 -
4.766 -</PRE></TD></TR><TR><TD><PRE><IN_PAREN> TOKEN : {
4.767 -<NATURAL_GT: ">">
4.768 -|<NATURAL_GTE: ">=">
4.769 -}
4.770 -
4.771 -</PRE></TD></TR><TR><TD><PRE><NO_SPACE_EXPRESSION> TOKEN : {
4.772 -<TERMINATING_WHITESPACE: (["\t","\n","\r"," "])+>
4.773 -}
4.774 -
4.775 -</PRE></TD></TR><TR><TD><PRE><NAMED_PARAMETER_EXPRESSION> TOKEN : {
4.776 -<TERMINATING_EXCLAM: "!" (["\t","\n","\r"," "])+>
4.777 -}
4.778 -
4.779 -</PRE></TD></TR><TR><TD><PRE><NO_PARSE> TOKEN : {
4.780 -<TERSE_COMMENT_END: "-->" | "--]">
4.781 -|<MAYBE_END: (["<","["]) "/" ("#")? (["A"-"Z","a"-"z"])+ (["\t","\n","\r"," "])* ([">","]"])>
4.782 -|<KEEP_GOING: (["\u0000"-",","."-";","="-"Z","\\"-"\uffff"])+>
4.783 -|<LONE_LESS_THAN_OR_DASH: ["-","<","["]>
4.784 -}
4.785 -
4.786 -</PRE></TD></TR> </TABLE>
4.787 -
4.788 - </BODY>
4.789 -</HTML>