Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 562 lines (549 sloc) 20.603 kb
55e7d61 travisdesell added compiler package
authored
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
2 <HTML>
3 <HEAD>
4 <TITLE>BNF for Salsa0.2.2.jj</TITLE>
5 </HEAD>
6 <BODY>
7 <H1 ALIGN=CENTER>BNF for Salsa0.2.2.jj</H1>
8 <H2 ALIGN=CENTER>TOKENS</H2>
9 <TABLE>
10 <!-- Special token -->
11 <TR>
12 <TD>
13 <PRE>
14 /* WHITE SPACE */</PRE>
15 </TD>
16 </TR>
17 <!-- Token -->
18 <TR>
19 <TD>
20 <PRE>
21 &lt;DEFAULT&gt; SKIP : {
22 " "
23 | "\t"
24 | "\n"
25 | "\r"
26 | "\f"
27 }
28
29 </PRE>
30 </TD>
31 </TR>
32 <!-- Special token -->
33 <TR>
34 <TD>
35 <PRE>
36 /* COMMENTS */</PRE>
37 </TD>
38 </TR>
39 <!-- Token -->
40 <TR>
41 <TD>
42 <PRE>
43 &lt;DEFAULT&gt; MORE : {
44 "//" : IN_SINGLE_LINE_COMMENT
45 | &lt;"/**" ~["/"]&gt; : IN_FORMAL_COMMENT
46 | "/*" : IN_MULTI_LINE_COMMENT
47 }
48
49 </PRE>
50 </TD>
51 </TR>
52 <!-- Token -->
53 <TR>
54 <TD>
55 <PRE>
56 &lt;IN_SINGLE_LINE_COMMENT&gt; SPECIAL : {
57 &lt;SINGLE_LINE_COMMENT: "\n" | "\r" | "\r\n"&gt; : DEFAULT
58 }
59
60 </PRE>
61 </TD>
62 </TR>
63 <!-- Token -->
64 <TR>
65 <TD>
66 <PRE>
67 &lt;IN_FORMAL_COMMENT&gt; SPECIAL : {
68 &lt;FORMAL_COMMENT: "*/"&gt; : DEFAULT
69 }
70
71 </PRE>
72 </TD>
73 </TR>
74 <!-- Token -->
75 <TR>
76 <TD>
77 <PRE>
78 &lt;IN_MULTI_LINE_COMMENT&gt; SPECIAL : {
79 &lt;MULTI_LINE_COMMENT: "*/"&gt; : DEFAULT
80 }
81
82 </PRE>
83 </TD>
84 </TR>
85 <!-- Token -->
86 <TR>
87 <TD>
88 <PRE>
89 &lt;IN_SINGLE_LINE_COMMENT,IN_FORMAL_COMMENT,IN_MULTI_LINE_COMMENT&gt; MORE : {
90 &lt;~[]&gt;
91 }
92
93 </PRE>
94 </TD>
95 </TR>
96 <!-- Special token -->
97 <TR>
98 <TD>
99 <PRE>
100 /* RESERVED WORDS AND LITERALS */</PRE>
101 </TD>
102 </TR>
103 <!-- Token -->
104 <TR>
105 <TD>
106 <PRE>
107 &lt;DEFAULT&gt; TOKEN : {
108 &lt;ACK: "ack"&gt;
109 | &lt;AT: "at"&gt;
110 | &lt;BEHAVIOR: "behavior"&gt;
111 | &lt;BOOLEAN: "boolean"&gt;
112 | &lt;BREAK: "break"&gt;
113 | &lt;BYTE: "byte"&gt;
114 | &lt;CASE: "case"&gt;
115 | &lt;CHAR: "char"&gt;
116 | &lt;CONST: "const"&gt;
117 | &lt;_DEFAULT: "default"&gt;
118 | &lt;DELAY: "delay"&gt;
119 | &lt;DOUBLE: "double"&gt;
120 | &lt;ENUM: "enum"&gt;
121 | &lt;ELSE: "else"&gt;
122 | &lt;ENDIF: "endif"&gt;
123 | &lt;EXTENDS: "extends"&gt;
124 | &lt;FALSE: "false"&gt;
125 | &lt;FLOAT: "float"&gt;
126 | &lt;IF: "if"&gt;
127 | &lt;IMMUTABLE: "immutable"&gt;
128 | &lt;IMPLEMENTS: "implements"&gt;
129 | &lt;IMPORT: "import"&gt;
130 | &lt;INSTANCEOF: "instanceof"&gt;
131 | &lt;INT: "int"&gt;
132 | &lt;INTERFACE: "interface"&gt;
133 | &lt;LATER: "later"&gt;
134 | &lt;LONG: "long"&gt;
135 | &lt;LOOP: "loop"&gt;
136 | &lt;MODULE: "module"&gt;
137 | &lt;NEW: "new"&gt;
138 | &lt;NULL: "null"&gt;
139 | &lt;OBJECT: "object"&gt;
140 | &lt;PASS: "pass"&gt;
141 | &lt;PARENT: "parent"&gt;
142 | &lt;PUBLIC: "public"&gt;
143 | &lt;REFERENCE: "reference"&gt;
144 | &lt;REPEAT: "repeat"&gt;
145 | &lt;SELF: "self"&gt;
146 | &lt;SHORT: "short"&gt;
147 | &lt;SWITCH: "switch"&gt;
148 | &lt;_TOKEN: "token"&gt;
149 | &lt;TRUE: "true"&gt;
150 | &lt;WAITFOR: "waitfor"&gt;
151 | &lt;BEGIN_JAVA: "begin_java"&gt;
152 | &lt;END_JAVA: "end_java"&gt;
153 }
154
155 </PRE>
156 </TD>
157 </TR>
158 <!-- Special token -->
159 <TR>
160 <TD>
161 <PRE>
162 /* LITERALS */</PRE>
163 </TD>
164 </TR>
165 <!-- Token -->
166 <TR>
167 <TD>
168 <PRE>
169 &lt;DEFAULT&gt; TOKEN : {
170 &lt;INTEGER_LITERAL: &lt;DECIMAL_LITERAL&gt; (["l","L"])? | &lt;HEX_LITERAL&gt; (["l","L"])? | &lt;OCTAL_LITERAL&gt; (["l","L"])?&gt;
171 | &lt;#DECIMAL_LITERAL: ["1"-"9"] (["0"-"9"])*&gt;
172 | &lt;#HEX_LITERAL: "0" ["x","X"] (["0"-"9","a"-"f","A"-"F"])+&gt;
173 | &lt;#OCTAL_LITERAL: "0" (["0"-"7"])*&gt;
174 | &lt;FLOATING_POINT_LITERAL: (["0"-"9"])+ "." (["0"-"9"])* (&lt;EXPONENT&gt;)? (["f","F","d","D"])? | "." (["0"-"9"])+ (&lt;EXPONENT&gt;)? (["f","F","d","D"])? | (["0"-"9"])+ &lt;EXPONENT&gt; (["f","F","d","D"])? | (["0"-"9"])+ (&lt;EXPONENT&gt;)? ["f","F","d","D"]&gt;
175 | &lt;#EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+&gt;
176 | &lt;CHARACTER_LITERAL: "\'" (~["\'","\\","\n","\r"] | "\\" (["n","t","b","r","f","\\","\'","\""] | ["0"-"7"] (["0"-"7"])? | ["0"-"3"] ["0"-"7"] ["0"-"7"])) "\'"&gt;
177 | &lt;STRING_LITERAL: "\"" (~["\"","\\","\n","\r"] | "\\" (["n","t","b","r","f","\\","\'","\""] | ["0"-"7"] (["0"-"7"])? | ["0"-"3"] ["0"-"7"] ["0"-"7"]))* "\""&gt;
178 }
179
180 </PRE>
181 </TD>
182 </TR>
183 <!-- Special token -->
184 <TR>
185 <TD>
186 <PRE>
187 /* IDENTIFIERS */</PRE>
188 </TD>
189 </TR>
190 <!-- Token -->
191 <TR>
192 <TD>
193 <PRE>
194 &lt;DEFAULT&gt; TOKEN : {
195 &lt;IDENTIFIER: &lt;LETTER&gt; (&lt;LETTER&gt; | &lt;DIGIT&gt;)*&gt;
196 | &lt;#LETTER: ["$","A"-"Z","_","a"-"z","\u00c0"-"\u00d6","\u00d8"-"\u00f6","\u00f8"-"\u00ff","\u0100"-"\u1fff","\u3040"-"\u318f","\u3300"-"\u337f","\u3400"-"\u3d2d","\u4e00"-"\u9fff","\uf900"-"\ufaff"]&gt;
197 | &lt;#DIGIT: ["0"-"9","\u0660"-"\u0669","\u06f0"-"\u06f9","\u0966"-"\u096f","\u09e6"-"\u09ef","\u0a66"-"\u0a6f","\u0ae6"-"\u0aef","\u0b66"-"\u0b6f","\u0be7"-"\u0bef","\u0c66"-"\u0c6f","\u0ce6"-"\u0cef","\u0d66"-"\u0d6f","\u0e50"-"\u0e59","\u0ed0"-"\u0ed9","\u1040"-"\u1049"]&gt;
198 }
199
200 </PRE>
201 </TD>
202 </TR>
203 <!-- Special token -->
204 <TR>
205 <TD>
206 <PRE>
207 /* SEPARATORS */</PRE>
208 </TD>
209 </TR>
210 <!-- Token -->
211 <TR>
212 <TD>
213 <PRE>
214 &lt;DEFAULT&gt; TOKEN : {
215 &lt;LPAREN: "("&gt;
216 | &lt;RPAREN: ")"&gt;
217 | &lt;LBRACE: "{"&gt;
218 | &lt;RBRACE: "}"&gt;
219 | &lt;LBRACKET: "["&gt;
220 | &lt;RBRACKET: "]"&gt;
221 | &lt;SEMICOLON: ";"&gt;
222 | &lt;COMMA: ","&gt;
223 | &lt;DOT: "."&gt;
224 | &lt;MSG: "&lt;-"&gt;
225 }
226
227 </PRE>
228 </TD>
229 </TR>
230 <!-- Special token -->
231 <TR>
232 <TD>
233 <PRE>
234 /* OPERATORS */</PRE>
235 </TD>
236 </TR>
237 <!-- Token -->
238 <TR>
239 <TD>
240 <PRE>
241 &lt;DEFAULT&gt; TOKEN : {
242 &lt;ASSIGN: "="&gt;
243 | &lt;GT: "&gt;"&gt;
244 | &lt;LT: "&lt;"&gt;
245 | &lt;BANG: "!"&gt;
246 | &lt;TILDE: "~"&gt;
247 | &lt;COLON: ":"&gt;
248 | &lt;EQ: "=="&gt;
249 | &lt;LE: "&lt;="&gt;
250 | &lt;GE: "&gt;="&gt;
251 | &lt;NE: "!="&gt;
252 | &lt;SC_OR: "||"&gt;
253 | &lt;SC_AND: "&amp;&amp;"&gt;
254 | &lt;INCR: "++"&gt;
255 | &lt;DECR: "--"&gt;
256 | &lt;PLUS: "+"&gt;
257 | &lt;MINUS: "-"&gt;
258 | &lt;STAR: "*"&gt;
259 | &lt;SLASH: "/"&gt;
260 | &lt;BIT_AND: "&amp;"&gt;
261 | &lt;BIT_OR: "|"&gt;
262 | &lt;XOR: "^"&gt;
263 | &lt;REM: "%"&gt;
264 | &lt;LSHIFT: "&lt;&lt;"&gt;
265 | &lt;RSIGNEDSHIFT: "&gt;&gt;"&gt;
266 | &lt;RUNSIGNEDSHIFT: "&gt;&gt;&gt;"&gt;
267 | &lt;PLUSASSIGN: "+="&gt;
268 | &lt;MINUSASSIGN: "-="&gt;
269 | &lt;STARASSIGN: "*="&gt;
270 | &lt;SLASHASSIGN: "/="&gt;
271 | &lt;ANDASSIGN: "&amp;="&gt;
272 | &lt;ORASSIGN: "|="&gt;
273 | &lt;XORASSIGN: "^="&gt;
274 | &lt;REMASSIGN: "%="&gt;
275 | &lt;LSHIFTASSIGN: "&lt;&lt;="&gt;
276 | &lt;RSIGNEDSHIFTASSIGN: "&gt;&gt;="&gt;
277 | &lt;RUNSIGNEDSHIFTASSIGN: "&gt;&gt;&gt;="&gt;
278 }
279
280 </PRE>
281 </TD>
282 </TR>
283 </TABLE>
284 <H2 ALIGN=CENTER>NON-TERMINALS</H2>
285 <TABLE>
286 <!-- Special token -->
287 <TR>
288 <TD>
289 <PRE>
290 /******************************************
291 * THE SALSA LANGUAGE GRAMMAR STARTS HERE *
292 ******************************************/
293
294 /*
295 * Program structuring syntax follows.
296 */</PRE>
297 </TD>
298 </TR>
299 <TR>
300 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod1">CompilationUnit</A></TD>
301 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
302 <TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod2">ModuleDeclaration</A> )? ( <A HREF="#prod3">ImportDeclaration</A> )* ( <A HREF="#prod4">JavaStatement</A> )? ( <A HREF="#prod5">BehaviorDeclaration</A> | <A HREF="#prod6">InterfaceDeclaration</A> ) &lt;EOF&gt;</TD>
303 </TR>
304 <TR>
305 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod2">ModuleDeclaration</A></TD>
306 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
307 <TD ALIGN=LEFT VALIGN=BASELINE>"module" <A HREF="#prod7">Name</A> ";"</TD>
308 </TR>
309 <TR>
310 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod7">Name</A></TD>
311 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
312 <TD ALIGN=LEFT VALIGN=BASELINE>&lt;IDENTIFIER&gt; ( "." &lt;IDENTIFIER&gt; )*</TD>
313 </TR>
314 <TR>
315 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod3">ImportDeclaration</A></TD>
316 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
317 <TD ALIGN=LEFT VALIGN=BASELINE>"import" ( "object" )? ( "enum" )? &lt;IDENTIFIER&gt; ( "." &lt;IDENTIFIER&gt; )* ( "." "*" )? ";"</TD>
318 </TR>
319 <TR>
320 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod6">InterfaceDeclaration</A></TD>
321 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
322 <TD ALIGN=LEFT VALIGN=BASELINE>"interface" &lt;IDENTIFIER&gt; ( "extends" <A HREF="#prod7">Name</A> )? "{" ( <A HREF="#prod8">InterfaceMessageHandlerDeclaration</A> | <A HREF="#prod9">StateVariableDeclaration</A> )* "}"</TD>
323 </TR>
324 <TR>
325 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod5">BehaviorDeclaration</A></TD>
326 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
327 <TD ALIGN=LEFT VALIGN=BASELINE>"behavior" &lt;IDENTIFIER&gt; ( "extends" <A HREF="#prod7">Name</A> )? ( "implements" <A HREF="#prod7">Name</A> ( "," <A HREF="#prod7">Name</A> )* )? "{" ( <A HREF="#prod4">JavaStatement</A> )? ( <A HREF="#prod10">Enumeration</A> | <A HREF="#prod11">ConstructorDeclaration</A> | <A HREF="#prod12">MessageHandlerDeclaration</A> | <A HREF="#prod9">StateVariableDeclaration</A> )* "}"</TD>
328 </TR>
329 <TR>
330 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod10">Enumeration</A></TD>
331 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
332 <TD ALIGN=LEFT VALIGN=BASELINE>"enum" &lt;IDENTIFIER&gt; "{" &lt;IDENTIFIER&gt; ( "," &lt;IDENTIFIER&gt; )* "}"</TD>
333 </TR>
334 <TR>
335 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod9">StateVariableDeclaration</A></TD>
336 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
337 <TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod13">Type</A> <A HREF="#prod14">VariableInitialization</A> ( "," <A HREF="#prod14">VariableInitialization</A> )* ";"</TD>
338 </TR>
339 <TR>
340 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod13">Type</A></TD>
341 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
342 <TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod15">PrimitiveType</A> | <A HREF="#prod7">Name</A> ) ( "[" "]" )*</TD>
343 </TR>
344 <TR>
345 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod15">PrimitiveType</A></TD>
346 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
347 <TD ALIGN=LEFT VALIGN=BASELINE>( "boolean" | "char" | "byte" | "short" | "int" | "long" | "float" | "double" | "ack" )</TD>
348 </TR>
349 <TR>
350 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod8">InterfaceMessageHandlerDeclaration</A></TD>
351 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
352 <TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod13">Type</A> &lt;IDENTIFIER&gt; <A HREF="#prod16">FormalParameters</A> ";"</TD>
353 </TR>
354 <TR>
355 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod12">MessageHandlerDeclaration</A></TD>
356 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
357 <TD ALIGN=LEFT VALIGN=BASELINE>( "immutable" )? <A HREF="#prod13">Type</A> &lt;IDENTIFIER&gt; <A HREF="#prod16">FormalParameters</A> <A HREF="#prod17">Block</A></TD>
358 </TR>
359 <TR>
360 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod11">ConstructorDeclaration</A></TD>
361 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
362 <TD ALIGN=LEFT VALIGN=BASELINE>&lt;IDENTIFIER&gt; <A HREF="#prod16">FormalParameters</A> <A HREF="#prod17">Block</A></TD>
363 </TR>
364 <TR>
365 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod16">FormalParameters</A></TD>
366 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
367 <TD ALIGN=LEFT VALIGN=BASELINE>"(" ( <A HREF="#prod18">FormalParameter</A> ( "," <A HREF="#prod18">FormalParameter</A> )* )? ")"</TD>
368 </TR>
369 <TR>
370 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod18">FormalParameter</A></TD>
371 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
372 <TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod13">Type</A> &lt;IDENTIFIER&gt;</TD>
373 </TR>
374 <TR>
375 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod17">Block</A></TD>
376 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
377 <TD ALIGN=LEFT VALIGN=BASELINE>"{" ( <A HREF="#prod19">Statement</A> )* "}"</TD>
378 </TR>
379 <TR>
380 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod19">Statement</A></TD>
381 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
382 <TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod20">PassStatement</A> | <A HREF="#prod4">JavaStatement</A> | <A HREF="#prod21">IfStatement</A> | <A HREF="#prod22">SwitchStatement</A> | <A HREF="#prod17">Block</A> ( "@" )? | <A HREF="#prod23">LoopMessage</A> ( "@" )? | <A HREF="#prod24">ContainedMessage</A> ( "@" | ";" ) | <A HREF="#prod25">CaseStatement</A> | <A HREF="#prod26">BreakStatement</A> | <A HREF="#prod27">RepeatStatement</A> ( "@" | ";" ) | <A HREF="#prod28">DefaultStatement</A> | <A HREF="#prod29">LabelStatement</A> | <A HREF="#prod30">LocalVariableDeclaration</A> ( "@" | ";" ) | <A HREF="#prod31">StatementExpression</A> ( "@" | ";" ) )</TD>
383 </TR>
384 <TR>
385 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod20">PassStatement</A></TD>
386 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
387 <TD ALIGN=LEFT VALIGN=BASELINE>"pass" ( "later" | <A HREF="#prod32">Expression</A> )? ";"</TD>
388 </TR>
389 <TR>
390 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod4">JavaStatement</A></TD>
391 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
392 <TD ALIGN=LEFT VALIGN=BASELINE>"begin_java" "end_java"</TD>
393 </TR>
394 <TR>
395 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod31">StatementExpression</A></TD>
396 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
397 <TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod32">Expression</A></TD>
398 </TR>
399 <TR>
400 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod33">ContainedArguments</A></TD>
401 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
402 <TD ALIGN=LEFT VALIGN=BASELINE>"(" <A HREF="#prod13">Type</A> &lt;IDENTIFIER&gt; "=" <A HREF="#prod32">Expression</A> ( "," <A HREF="#prod13">Type</A> &lt;IDENTIFIER&gt; "=" <A HREF="#prod32">Expression</A> )* ")"</TD>
403 </TR>
404 <TR>
405 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod23">LoopMessage</A></TD>
406 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
407 <TD ALIGN=LEFT VALIGN=BASELINE>"loop" <A HREF="#prod33">ContainedArguments</A> <A HREF="#prod17">Block</A></TD>
408 </TR>
409 <TR>
410 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod24">ContainedMessage</A></TD>
411 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
412 <TD ALIGN=LEFT VALIGN=BASELINE>&lt;IDENTIFIER&gt; <A HREF="#prod33">ContainedArguments</A> <A HREF="#prod17">Block</A></TD>
413 </TR>
414 <TR>
415 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod27">RepeatStatement</A></TD>
416 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
417 <TD ALIGN=LEFT VALIGN=BASELINE>"repeat" <A HREF="#prod34">Arguments</A></TD>
418 </TR>
419 <TR>
420 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod21">IfStatement</A></TD>
421 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
422 <TD ALIGN=LEFT VALIGN=BASELINE>"if" "(" <A HREF="#prod32">Expression</A> ")" <A HREF="#prod19">Statement</A> ( "else" <A HREF="#prod19">Statement</A> )?</TD>
423 </TR>
424 <TR>
425 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod22">SwitchStatement</A></TD>
426 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
427 <TD ALIGN=LEFT VALIGN=BASELINE>"switch" "(" <A HREF="#prod32">Expression</A> ")" "{" ( <A HREF="#prod19">Statement</A> )* "}"</TD>
428 </TR>
429 <TR>
430 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod25">CaseStatement</A></TD>
431 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
432 <TD ALIGN=LEFT VALIGN=BASELINE>"case" <A HREF="#prod32">Expression</A> ":"</TD>
433 </TR>
434 <TR>
435 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod28">DefaultStatement</A></TD>
436 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
437 <TD ALIGN=LEFT VALIGN=BASELINE>"default" ":"</TD>
438 </TR>
439 <TR>
440 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod29">LabelStatement</A></TD>
441 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
442 <TD ALIGN=LEFT VALIGN=BASELINE>&lt;IDENTIFIER&gt; ":"</TD>
443 </TR>
444 <TR>
445 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod26">BreakStatement</A></TD>
446 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
447 <TD ALIGN=LEFT VALIGN=BASELINE>"break" ";"</TD>
448 </TR>
449 <TR>
450 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod30">LocalVariableDeclaration</A></TD>
451 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
452 <TD ALIGN=LEFT VALIGN=BASELINE>( "token" )? <A HREF="#prod13">Type</A> <A HREF="#prod14">VariableInitialization</A> ( "," <A HREF="#prod14">VariableInitialization</A> )*</TD>
453 </TR>
454 <TR>
455 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod14">VariableInitialization</A></TD>
456 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
457 <TD ALIGN=LEFT VALIGN=BASELINE>&lt;IDENTIFIER&gt; ( "=" <A HREF="#prod32">Expression</A> )?</TD>
458 </TR>
459 <TR>
460 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod35">ArrayInitialization</A></TD>
461 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
462 <TD ALIGN=LEFT VALIGN=BASELINE>"{" ( ( <A HREF="#prod35">ArrayInitialization</A> | <A HREF="#prod32">Expression</A> ) ( "," ( <A HREF="#prod35">ArrayInitialization</A> | <A HREF="#prod32">Expression</A> ) )* )? "}"</TD>
463 </TR>
464 <TR>
465 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod32">Expression</A></TD>
466 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
467 <TD ALIGN=LEFT VALIGN=BASELINE>( "++" | "--" | "!" | "-" | "~" )* <A HREF="#prod36">Value</A> ( "++" | "--" | <A HREF="#prod37">ArrayAccess</A> )* ( ( <A HREF="#prod38">AssignmentOperator</A> | <A HREF="#prod39">Operator</A> ) <A HREF="#prod32">Expression</A> )?</TD>
468 </TR>
469 <TR>
470 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod37">ArrayAccess</A></TD>
471 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
472 <TD ALIGN=LEFT VALIGN=BASELINE>( "[" <A HREF="#prod32">Expression</A> "]" )+</TD>
473 </TR>
474 <TR>
475 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod36">Value</A></TD>
476 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
477 <TD ALIGN=LEFT VALIGN=BASELINE>( "(" <A HREF="#prod13">Type</A> ")" )? ( <A HREF="#prod40">Literal</A> | "self" ( "." &lt;IDENTIFIER&gt; )? | "parent" ( "." &lt;IDENTIFIER&gt; )? | &lt;IDENTIFIER&gt; ( "." &lt;IDENTIFIER&gt; )? | "(" <A HREF="#prod32">Expression</A> ")" | <A HREF="#prod41">Allocation</A> ) ( <A HREF="#prod42">MessageSend</A> )*</TD>
478 </TR>
479 <TR>
480 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod42">MessageSend</A></TD>
481 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
482 <TD ALIGN=LEFT VALIGN=BASELINE>( "&lt;-" &lt;IDENTIFIER&gt; <A HREF="#prod34">Arguments</A> | <A HREF="#prod34">Arguments</A> )</TD>
483 </TR>
484 <TR>
485 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod43">MessageProperty</A></TD>
486 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
487 <TD ALIGN=LEFT VALIGN=BASELINE>":" ( "delay" | "waitfor" ) <A HREF="#prod34">Arguments</A></TD>
488 </TR>
489 <TR>
490 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod34">Arguments</A></TD>
491 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
492 <TD ALIGN=LEFT VALIGN=BASELINE>"(" ( <A HREF="#prod32">Expression</A> ( "," <A HREF="#prod32">Expression</A> )* )? ")"</TD>
493 </TR>
494 <TR>
495 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod41">Allocation</A></TD>
496 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
497 <TD ALIGN=LEFT VALIGN=BASELINE>( ( "new" <A HREF="#prod7">Name</A> <A HREF="#prod34">Arguments</A> ( <A HREF="#prod44">BindDeclaration</A> )? ) | ( "new" ( <A HREF="#prod15">PrimitiveType</A> | <A HREF="#prod7">Name</A> ) <A HREF="#prod45">ArrayDimsAndInits</A> ) | ( "reference" <A HREF="#prod7">Name</A> <A HREF="#prod44">BindDeclaration</A> ) )</TD>
498 </TR>
499 <TR>
500 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod44">BindDeclaration</A></TD>
501 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
502 <TD ALIGN=LEFT VALIGN=BASELINE>"at" "(" <A HREF="#prod32">Expression</A> ( "," <A HREF="#prod32">Expression</A> "," <A HREF="#prod32">Expression</A> )? ")"</TD>
503 </TR>
504 <TR>
505 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod45">ArrayDimsAndInits</A></TD>
506 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
507 <TD ALIGN=LEFT VALIGN=BASELINE>( ( ( "[" "]" )+ ( <A HREF="#prod35">ArrayInitialization</A> )? ) | ( ( "[" <A HREF="#prod32">Expression</A> "]" )+ ( "[" "]" )* ) )</TD>
508 </TR>
509 <TR>
510 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod40">Literal</A></TD>
511 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
512 <TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod46">IntegerLiteral</A> | <A HREF="#prod47">FloatingPointLiteral</A> | <A HREF="#prod48">CharacterLiteral</A> | <A HREF="#prod49">StringLiteral</A> | <A HREF="#prod50">BooleanLiteral</A> | <A HREF="#prod51">NullLiteral</A> | <A HREF="#prod52">AcknowledgementLiteral</A> )</TD>
513 </TR>
514 <TR>
515 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod46">IntegerLiteral</A></TD>
516 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
517 <TD ALIGN=LEFT VALIGN=BASELINE>&lt;INTEGER_LITERAL&gt;</TD>
518 </TR>
519 <TR>
520 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod47">FloatingPointLiteral</A></TD>
521 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
522 <TD ALIGN=LEFT VALIGN=BASELINE>&lt;FLOATING_POINT_LITERAL&gt;</TD>
523 </TR>
524 <TR>
525 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod48">CharacterLiteral</A></TD>
526 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
527 <TD ALIGN=LEFT VALIGN=BASELINE>&lt;CHARACTER_LITERAL&gt;</TD>
528 </TR>
529 <TR>
530 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod49">StringLiteral</A></TD>
531 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
532 <TD ALIGN=LEFT VALIGN=BASELINE>&lt;STRING_LITERAL&gt;</TD>
533 </TR>
534 <TR>
535 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod50">BooleanLiteral</A></TD>
536 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
537 <TD ALIGN=LEFT VALIGN=BASELINE>( "true" | "false" )</TD>
538 </TR>
539 <TR>
540 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod51">NullLiteral</A></TD>
541 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
542 <TD ALIGN=LEFT VALIGN=BASELINE>"null"</TD>
543 </TR>
544 <TR>
545 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod52">AcknowledgementLiteral</A></TD>
546 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
547 <TD ALIGN=LEFT VALIGN=BASELINE>"ack"</TD>
548 </TR>
549 <TR>
550 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod38">AssignmentOperator</A></TD>
551 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
552 <TD ALIGN=LEFT VALIGN=BASELINE>( "=" | "*=" | "/=" | "%=" | "+=" | "-=" | "&lt;&lt;=" | "&gt;&gt;=" | "&gt;&gt;&gt;=" | "&amp;=" | "^=" | "|=" )</TD>
553 </TR>
554 <TR>
555 <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod39">Operator</A></TD>
556 <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
557 <TD ALIGN=LEFT VALIGN=BASELINE>( "||" | "&amp;&amp;" | "|" | "^" | "&amp;" | "==" | "!=" | "&gt;" | "&lt;" | "&lt;=" | "&gt;=" | "&lt;&lt;" | "&gt;&gt;" | "&gt;&gt;&gt;" | "+" | "-" | "*" | "/" | "%" | "instanceof" )</TD>
558 </TR>
559 </TABLE>
560 </BODY>
561 </HTML>
Something went wrong with that request. Please try again.