root/trunk/dparser/dmp.g

Revision 266, 28.1 kB (checked in by BCS, 9 months ago)

fixed error in dparse.d
converted unittest to work with an local file and also added the external file it did work with

Line 
1 StaticConstructor:
2     error / KW_static KW_this opLParen opRParen FunctionBody ;
3
4 StaticDestructor:
5     error / KW_static opTilde KW_this opLParen opRParen FunctionBody ;
6
7 Invariant:
8     error / KW_invariant opLParen opRParen BlockStatement ;
9
10 UnitTest:
11     error / KW_unittest FunctionBody ;
12
13 AsmPrimaryExp:
14     error / IntegerConstant |
15     error / FloatConstant |
16     error / PKW___LOCAL_SIZE |
17     error / opDollar |
18     error / Register |
19     error / DotIdentifier ;
20
21 DotIdentifier:
22     error / Identifier |
23     error / Identifier opDot DotIdentifier ;
24
25 AsmTypePrefix:
26     error / PKW_near PKW_ptr |
27     error / PKW_far PKW_ptr |
28     error / KW_byte PKW_ptr |
29     error / KW_short PKW_ptr |
30     error / KW_int PKW_ptr |
31     error / PKW_word PKW_ptr |
32     error / PKW_dword PKW_ptr |
33     error / KW_float PKW_ptr |
34     error / KW_double PKW_ptr |
35     error / KW_real PKW_ptr ;
36
37 AsmUnaExp:
38     error / AsmTypePrefix AsmExp |
39     error / PKW_offest AsmExp |
40     error / PKW_seg AsmExp |
41     error / opPlus AsmUnaExp |
42     error / opMinus AsmUnaExp |
43     error / opBang AsmUnaExp |
44     error / opTilde AsmUnaExp |
45     error / AsmPrimaryExp ;
46
47 AsmRelExp:
48     error / AsmShiftExp |
49     error / AsmShiftExp opLessThan AsmShiftExp |
50     error / AsmShiftExp opLessEqual AsmShiftExp |
51     error / AsmShiftExp opGreaterThan AsmShiftExp |
52     error / AsmShiftExp opGreaterEqual AsmShiftExp ;
53
54 AsmShiftExp:
55     error / AsmAddExp |
56     error / AsmAddExp opLShift AsmAddExp |
57     error / AsmAddExp opRShift AsmAddExp |
58     error / AsmAddExp op3RShift AsmAddExp ;
59
60 AsmAddExp:
61     error / AsmMulExp |
62     error / AsmMulExp opPlus AsmMulExp |
63     error / AsmMulExp opMinus AsmMulExp ;
64
65 AsmMulExp:
66     error / AsmBrExp |
67     error / AsmBrExp opStar AsmBrExp |
68     error / AsmBrExp opDivision AsmBrExp |
69     error / AsmBrExp opModulo AsmBrExp ;
70
71 AsmBrExp:
72     error / AsmUnaExp |
73     error / AsmBrExp opLBrace AsmExp opRBrace ;
74
75 AsmLogAndExp:
76     error / AsmOrExp |
77     error / AsmOrExp opLogicAnd AsmOrExp ;
78
79 AsmOrExp:
80     error / AsmXorExp |
81     error / AsmXorExp opPipe AsmXorExp ;
82
83 AsmXorExp:
84     error / AsmAndExp |
85     error / AsmAndExp opCarrot AsmAndExp ;
86
87 AsmAndExp:
88     error / AsmEqualExp |
89     error / AsmEqualExp opAmpersand AsmEqualExp ;
90
91 AsmEqualExp:
92     error / AsmRelExp |
93     error / AsmRelExp opEqual AsmRelExp |
94     error / AsmRelExp opNotEqual AsmRelExp ;
95 AsmInstruction:
96     error / Identifier opCollin AsmInstruction |
97     error / KW_align IntegerExpression |
98     error / PKW_even |
99     error / PKW_naked |
100     error / PKW_db Operands |
101     error / PKW_ds Operands |
102     error / PKW_di Operands |
103     error / PKW_dl Operands |
104     error / PKW_df Operands |
105     error / PKW_dd Operands |
106     error / PKW_de Operands |
107     error / Opcode |
108     error / Opcode Operands ;
109
110 Operands:
111     error / Operand |
112     error / Operand opComma Operands ;
113
114
115 Operand:
116     error / AsmExp ;
117
118 AsmExp:
119     error / AsmLogOrExp |
120     error / AsmLogOrExp opQuestion AsmExp opCollin AsmExp ;
121
122 AsmLogOrExp:
123     error / AsmLogAndExp |
124     error / AsmLogAndExp opLogicOr AsmLogAndExp ;AttributeSpecifier:
125     error / Attribute opCollin |
126     error / Attribute DeclarationBlock ;
127
128 Attribute:
129     error / LinkageAttribute |
130     error / AlignAttribute |
131     error / Pragma |
132     error / KW_deprecated |
133     error / KW_private |
134     error / KW_package |
135     error / KW_protected |
136     error / KW_public |
137     error / KW_export |
138     error / KW_static |
139     error / KW_final |
140     error / KW_override |
141     error / KW_abstract |
142     error / KW_const |
143     error / KW_auto |
144     error / KW_scope ;
145
146 LinkageAttribute:
147     error / KW_extern |
148     error / KW_extern opLParen LinkageType opRParen ;
149
150 LinkageType:
151     error / PKW_C |
152     error / PKW_C opPlusPlus |
153     error / PKW_D |
154     error / PKW_Windows |
155     error / PKW_Pascal ;
156
157 AlignAttribute:
158     error / KW_align |
159     error / KW_align opLParen Integer opRParen ;
160
161 BaseClassList_Comma:
162     error / opCollin SuperClass |
163     error / opCollin SuperClass opComma InterfaceClasses_Comma ;
164
165 InterfaceClasses_Comma:
166     error / InterfaceClass |
167     error / InterfaceClass opComma  InterfaceClasses_Comma ;
168
169 BaseClassList:
170     error / opCollin SuperClass |
171     error / opCollin SuperClass InterfaceClasses |
172     error / opCollin InterfaceClass ;
173
174 SuperClass:
175     error / Identifier |
176     error / Protection Identifier ;
177
178 InterfaceClasses:
179     error / InterfaceClass |
180     error / InterfaceClass InterfaceClasses ;
181
182 InterfaceClass:
183     error / Identifier |
184     error / Protection Identifier ;
185
186 Protection:
187     error / KW_private |
188     error / KW_package |
189     error / KW_public |
190     error / KW_export ;
191 ClassDeclaration:
192     error / KW_class Identifier BaseClassList? ClassBody ;
193
194 ClassBody:
195     error / opLBracket opRBracket |
196     error / opLBracket ClassBodyDeclarations opRBracket ;
197
198 ClassBodyDeclarations:
199     error / ClassBodyDeclaration |
200     error / ClassBodyDeclaration ClassBodyDeclarations ;
201
202 ClassBodyDeclaration:
203     error / Declaration |
204     error / Constructor |
205     error / Destructor |
206     error / StaticConstructor |
207     error / StaticDestructor |
208     error / Invariant |
209     error / UnitTest |
210     error / ClassAllocator |
211     error / ClassDeallocator ;
212
213 Constructor:
214     error / KW_this Parameters FunctionBody ;
215
216 Destructor:
217     error / opTilde KW_this opLParen opRParen FunctionBody ;
218
219 PostfixExpression :
220     pass1 / PrimaryExpression |
221     error / PostfixExpression opDot Identifier |
222     error / PostfixExpression opDot NewExpression |
223     error / PostfixExpression opPlusPlus |
224     error / PostfixExpression opMinusMinus |
225     error / PostfixExpression opLParen opRParen |
226     error / PostfixExpression opLParen ArgumentList opRParen |
227     pass1 / IndexExpression |
228     pass1 / SliceExpression ;
229
230 PrimaryExpression:
231     pass1 / Identifier |
232     error / opDot Identifier |
233     pass1 / KW_this |
234     pass1 / KW_super |
235     pass1 / KW_null |
236     pass1 / KW_true |
237     pass1 / KW_false |
238     pass1 / opDollar |
239     pass1 / NumericLiteral |
240     pass1 / CharacterLiteral |
241     pass1 / StringLiterals |
242     pass1 / ArrayLiteral |
243     pass1 / AssocArrayLiteral |
244     pass1 / FunctionLiteral |
245     pass1 / AssertExpression |
246     pass1 / MixinExpression |
247     pass1 / ImportExpression |
248     error / BasicType opDot Identifier |
249     error / KW_typeid opLParen Type opRParen |
250     pass1 / IsExpression |
251     error / opLParen Expression opRParen ;
252
253 IsExpression:
254     error / KW_is opLParen Type opRParen |
255     error / KW_is opLParen Type opCollin TypeSpecialization opRParen |
256     error / KW_is opLParen Type opEqual TypeSpecialization opRParen |
257     error / KW_is opLParen Type Identifier opRParen |
258     error / KW_is opLParen Type Identifier opCollin TypeSpecialization opRParen |
259     error / KW_is opLParen Type Identifier opEqual TypeSpecialization opRParen ;
260
261 TypeSpecialization:
262     pass1 / Type |
263     pass1 / KW_typedef |
264     pass1 / KW_struct |
265     pass1 / KW_union |
266     pass1 / KW_class |
267     pass1 / KW_interface |
268     pass1 / KW_enum |
269     pass1 / KW_function |
270     pass1 / KW_delegate |
271     pass1 / KW_super ;
272 EnumDeclaration:
273     error / KW_enum Identifier EnumBody |
274     error / KW_enum EnumBody |
275     error / KW_enum Identifier opCollin EnumBaseType EnumBody |
276     error / KW_enum opCollin EnumBaseType EnumBody ;
277
278 EnumBaseType:
279     error / Type ;
280
281 EnumBody:
282     error / opSemicolon |
283     error / opLBracket EnumMembers opRBracket ;
284
285 EnumMembers:
286     error / EnumMember |
287     error / EnumMember opComma |
288     error / EnumMember opComma EnumMembers ;
289
290 EnumMember:
291     error / Identifier |
292     error / Identifier opAssignment AssignExpression ;
293 Module:
294     error / ModuleDeclaration DeclDefs |
295     error / DeclDefs ;
296
297
298 DeclDef:
299     pass1 / AttributeSpecifier |
300     pass1 / ImportDeclaration |
301     pass1 / EnumDeclaration |
302     pass1 / ClassDeclaration |
303     pass1 / InterfaceDeclaration |
304     pass1 / AggregateDeclaration |
305     pass1 / Declaration |
306     pass1 / Constructor |
307     pass1 / Destructor |
308     pass1 / Invariant |
309     pass1 / UnitTest |
310     pass1 / StaticConstructor |
311     pass1 / StaticDestructor |
312     pass1 / DebugSpecification |
313     pass1 / VersionSpecification |
314     pass1 / MixinDeclaration |
315     error / opSemicolon ;
316
317 DeclDefs:
318     pass1 / DeclDef |
319     error / DeclDef DeclDefs ;
320
321 ModuleDeclaration:
322     error / KW_module ModuleName opSemicolon ;
323
324 ModuleName:
325     error / Identifier |
326     error / ModuleName opDot Identifier ;
327
328 MixinDeclaration:
329     error / KW_mixin opLParen AssignExpression opRParen opSemicolon ;
330
331 Declaration:
332     error / KW_typedef Decl |
333     error / KW_alias Decl |
334     error / Decl ;
335
336 Decl:
337     error / StorageClasses Decl |
338     error / BasicType Declarators opSemicolon |
339     error / BasicType Declarator FunctionBody |
340     error / AutoDeclaration ;
341
342 Declarators:
343     error / DeclaratorInitializer |
344     error / DeclaratorInitializer opComma DeclaratorIdentifierList ;
345
346 DeclaratorInitializer:
347     error / Declarator |
348     error / Declarator opAssignment Initializer ;
349
350 DeclaratorIdentifierList:
351     error / DeclaratorIdentifier |
352     error / DeclaratorIdentifier opComma DeclaratorIdentifierList ;
353
354 DeclaratorIdentifier:
355     error / Identifier |
356     error / Identifier opAssignment Initializer ;
357
358 Declarator:
359     error / BasicType2 Declarator |
360     error / Identifier |
361     error / opLParen opRParen Declarator |
362     error / Identifier DeclaratorSuffixes |
363     error / opLParen opRParen Declarator DeclaratorSuffixes ;
364
365 DeclaratorSuffixes:
366     error / DeclaratorSuffix |
367     error / DeclaratorSuffix DeclaratorSuffixes ;
368
369 DeclaratorSuffix:
370     error / opLBrace opRBrace |
371     error / opLBrace Expression opRBrace |
372     error / opLBrace Type opRBrace |
373     error / Parameters ;
374
375 Typeof:
376     error / KW_typeof opLParen Expression opRParen ;
377
378 StorageClasses:
379     error / StorageClass |
380     error / StorageClass StorageClasses ;
381
382 StorageClass:
383     error / KW_abstract |
384     error / KW_auto |
385     error / KW_const |
386     error / KW_deprecated |
387     error / KW_extern |
388     error / KW_final |
389     error / KW_invariant |
390     error / KW_override |
391     error / KW_scope |
392     error / KW_static |
393     error / KW_synchronized ;
394
395 Declarator2:
396     error / BasicType2 Declarator2 |
397     error / opLParen Declarator2 opRParen |
398     error / opLParen Declarator2 opRParen DeclaratorSuffixes ;
399
400 Parameters:
401     error / opLParen ParameterList opRParen |
402     error / opLParen opRParen ;
403
404 ParameterList:
405     error / Parameter |
406     error / Parameter opComma ParameterList |
407     error / Parameter opEllipsis |
408     error / opEllipsis ;
409
410 Parameter:
411     error / Declarator |
412     error / Declarator opAssignment AssignExpression |
413     error / InOut Declarator |
414     error / InOut Declarator opAssignment AssignExpression ;
415
416 InOut:
417     error / KW_in |
418     error / KW_out |
419     error / KW_ref |
420     error / KW_lazy ;
421
422 AutoDeclaration:
423     error / StorageClasses Identifier opAssignment AssignExpression opSemicolon ;
424
425 DeclarationBlock2:
426     error / DeclDef |
427     error / opLBracket opRBracket |
428     error / opLBracket DeclDefs opRBracket ;
429
430 Pragma:
431     error / KW_pragma opLParen Identifier opRParen |
432     error / KW_pragma opLParen Identifier opComma ExpressionList opRParen ;
433
434 Statement:
435     error / opSemicolon |
436     error / NonEmptyStatement |
437     error / ScopeBlockStatement ;
438
439 NoScopeNonEmptyStatement:
440     error / NonEmptyStatement |
441     error / BlockStatement ;
442
443 NoScopeStatement:
444     error / opSemicolon |
445     error / NonEmptyStatement |
446     error / BlockStatement ;
447
448 NonEmptyOrScopeBlockStatement:
449     error / NonEmptyStatement |
450     error / ScopeBlockStatement ;
451
452 NonEmptyStatement:
453     error / LabeledStatement |
454     error / ExpressionStatement |
455     error / DeclarationStatement |
456     error / IfStatement |
457     error / ConditionalStatement |
458     error / WhileStatement |
459     error / DoStatement |
460     error / ForStatement |
461     error / ForeachStatement |
462     error / SwitchStatement |
463     error / CaseStatement |
464     error / DefaultStatement |
465     error / ContinueStatement |
466     error / BreakStatement |
467     error / ReturnStatement |
468     error / GotoStatement |
469     error / WithStatement |
470     error / SynchronizedStatement |
471     error / TryStatement |
472     error / ScopeGuardStatement |
473     error / ThrowStatement |
474     error / VolatileStatement |
475     error / AsmStatement |
476     error / PragmaStatement |
477     error / MixinStatement ;
478
479 ScopeStatement:
480     error / NonEmptyStatement |
481     error / BlockStatement ;
482
483 ScopeBlockStatement:
484     error / BlockStatement ;
485
486 LabeledStatement:
487     error / Identifier opCollin NoScopeStatement ;
488
489 BlockStatement:
490     error / opLBracket opRBracket |
491     error / opLBracket StatementList opRBracket ;
492
493 StatementList:
494     error / Statement |
495     error / Statement StatementList ;
496
497 ExpressionStatement:
498     error / Expression opSemicolon ;
499
500 DeclarationStatement:
501     error / Declaration ;
502
503 IfStatement:
504     error / KW_if opLParen IfCondition opRParen ThenStatement |
505     error / KW_if opLParen IfCondition opRParen ThenStatement KW_else ElseStatement ;
506
507 IfCondition:
508     error / Expression |
509     error / KW_auto Identifier opAssignment Expression |
510     error / Declarator opAssignment Expression ;
511
512 ThenStatement:
513     error / ScopeStatement ;
514
515 ElseStatement:
516     error / ScopeStatement ;
517
518 WhileStatement:
519     error / KW_while opLParen Expression opRParen ScopeStatement ;
520
521 DoStatement:
522     error / KW_do ScopeStatement KW_while opLParen Expression opRParen ;
523
524 ForStatement:
525     error / KW_for opLParen Initialize Test opSemicolon Increment opRParen ScopeStatement ;
526
527 Initialize:
528     error / opSemicolon |
529     error / NoScopeNonEmptyStatement ;
530
531 Test:
532     error / empty |
533     error / Expression ;
534
535 Increment:
536     error / empty |
537     error / Expression ;
538
539 ForeachStatement:
540     error / Foreach opLParen ForeachTypeList opSemicolon Aggregate opRParen ScopeStatement ;
541
542 Foreach:
543     error / KW_foreach |
544     error / KW_foreach_reverse ;
545
546 ForeachTypeList:
547     error / ForeachType |
548     error / ForeachType opComma ForeachTypeList ;
549
550 ForeachType:
551     error / KW_ref Type Identifier |
552     error / Type Identifier |
553     error / KW_ref Identifier |
554     error / Identifier ;
555
556 Aggregate:
557     error / Expression |
558     error / Tuple ;
559
560 SwitchStatement:
561     error / KW_switch opLParen Expression opRParen ScopeStatement ;
562
563 CaseStatement:
564     error / KW_case ExpressionList opCollin Statement ;
565
566 DefaultStatement:
567     error / KW_default opCollin Statement ;
568
569 ContinueStatement:
570     error / KW_continue opSemicolon |
571     error / KW_continue Identifier opSemicolon ;
572
573 BreakStatement:
574     error / KW_break opSemicolon |
575     error / KW_break Identifier opSemicolon ;
576
577 ReturnStatement:
578     error / KW_return opSemicolon |
579     error / KW_return Expression opSemicolon ;
580
581 GotoStatement:
582     error / KW_goto Identifier opSemicolon |
583     error / KW_goto KW_default opSemicolon |
584     error / KW_goto KW_case opSemicolon |
585     error / KW_goto KW_case Expression opSemicolon ;
586
587 WithStatement:
588     error / KW_with opLParen Expression opRParen ScopeStatement |
589     error / KW_with opLParen Symbol opRParen ScopeStatement |
590     error / KW_with opLParen TemplateInstance opRParen ScopeStatement ;
591
592 SynchronizedStatement:
593     error / KW_synchronized ScopeStatement |
594     error / KW_synchronized opLParen Expression opRParen ScopeStatement ;
595
596 TryStatement:
597     error / KW_try ScopeStatement Catches |
598     error / KW_try ScopeStatement Catches FinallyStatement |
599     error / KW_try ScopeStatement FinallyStatement ;
600
601 Catches:
602     error / LastCatch |
603     error / Catch |
604     error / Catch Catches ;
605
606 LastCatch:
607     error / KW_catch NoScopeNonEmptyStatement ;
608
609 Catch:
610     error / KW_catch opLParen CatchParameter opRParen NoScopeNonEmptyStatement ;
611
612 FinallyStatement:
613     error / KW_finally NoScopeNonEmptyStatement ;
614
615 ThrowStatement:
616     error / KW_throw Expression opSemicolon ;
617
618 ScopeGuardStatement:
619     error / KW_scope opLParen PKW_exit opRParen NonEmptyOrScopeBlockStatement |
620     error / KW_scope opLParen PKW_success opRParen NonEmptyOrScopeBlockStatement |
621     error / KW_scope opLParen PKW_failure opRParen NonEmptyOrScopeBlockStatement ;
622
623 VolatileStatement:
624     error / KW_volatile Statement |
625     error / KW_volatile opSemicolon ;
626
627 AsmStatement:
628     error / KW_asm opLBracket opRBracket |
629     error / KW_asm opLBracket AsmInstructionList opRBracket ;
630
631 AsmInstructionList:
632     error / AsmInstruction opSemicolon |
633     error / AsmInstruction opSemicolon AsmInstructionList ;
634
635 PragmaStatement:
636     error / Pragma NoScopeStatement ;
637
638 MixinStatement:
639     error / KW_mixin opLParen AssignExpression opRParen opSemicolon ;
640
641 InterfaceDeclaration:
642     error / KW_interface Identifier InterfaceBody |
643     error / KW_interface Identifier opCollin SuperInterfaces InterfaceBody ;
644
645 SuperInterfaces:
646     error / Identifier |
647     error / Identifier opComma SuperInterfaces ;
648
649 InterfaceBody:
650     error / opLBracket DeclDefs opRBracket ;
651
652 TemplateDeclaration:
653     error / KW_template TemplateIdentifier opLParen TemplateParameterList opRParen opLBracket DeclDefs opRBracket ;
654
655 TemplateIdentifier:
656     error / Identifier ;
657
658 TemplateInstance:
659     error / TemplateIdentifer opBang opLParen TemplateArgumentList opRParen ;
660
661 TemplateArgumentList:
662     error / TemplateArgument |
663     error / TemplateArgument opComma TemplateArgumentList ;
664
665 TemplateArgument:
666     error / Type |
667     error / AssignExpression |
668     error / Symbol ;
669
670 ClassTemplateDeclaration:
671     error / KW_class Identifier opLParen TemplateParameterList opRParen BaseClassList_Comma ClassBody ;
672
673 FunctionTemplateDeclaration:
674     error / Type Identifier opLParen TemplateParameterList opRParen opLParen FunctionParameterList opRParen FunctionBody ;
675
676 TemplateMixin:
677     error / KW_mixin TemplateIdentifier opSemicolon |
678     error / KW_mixin TemplateIdentifier MixinIdentifier opSemicolon |
679     error / KW_mixin TemplateIdentifier opBang opLParen TemplateArgumentList opRParen opSemicolon |
680     error / KW_mixin TemplateIdentifier opBang opLParen TemplateArgumentList opRParen MixinIdentifier opSemicolon ;
681
682 MixinIdentifier:
683     error / Identifier ;
684
685 ConditionalDeclaration:
686     error / Condition DeclarationBlock |
687     error / Condition DeclarationBlock KW_else DeclarationBlock |
688     error / Condition opCollin Declarations ;
689
690 DeclarationBlock:
691     error / Declaration |
692     error / opLBracket Declarations opRBracket |
693     error / opLBracket opRBracket ;
694
695 Declarations:
696     error / Declaration |
697     error / Declaration Declarations ;
698
699 ConditionalStatement:
700     error / Condition NoScopeNonEmptyStatement |
701     error / Condition NoScopeNonEmptyStatement KW_else NoScopeNonEmptyStatement ;
702
703 Condition:
704     error / VersionCondition |
705     error / DebugCondition |
706     error / StaticIfCondition ;
707
708 VersionCondition:
709     error / KW_version opLParen Integer opRParen |
710     error / KW_version opLParen Identifier opRParen ;
711
712 VersionSpecification:
713     error / KW_version opAssignment Identifier opSemicolon |
714     error / KW_version opAssignment Integer opSemicolon ;
715
716 DebugCondition:
717     error / KW_debug |
718     error / KW_debug opLParen Integer opRParen |
719     error / KW_debug opLParen Identifier opRParen ;
720
721 DebugSpecification:
722     error / KW_debug opAssignment Identifier opSemicolon |
723     error / KW_debug opAssignment Integer opSemicolon ;
724
725 StaticIfCondition:
726     error / KW_static KW_if opLParen AssignExpression opRParen ;
727
728 StaticAssert:
729     error / KW_static KW_assert opLParen AssignExpression opRParen opSemicolon |
730     error / KW_static KW_assert opLParen AssignExpression opComma AssignExpression opRParen opSemicolon ;
731
732 ClassAllocator:
733     error / KW_new Parameters FunctionBody ;
734
735 ClassDeallocator:
736     error / KW_delete Parameters FunctionBody ;
737
738 NewAnonClassExpression:
739     error / KW_new Parameters? KW_class Parameters? SuperClass? InterfaceClasses? ClassBody ;
740
741 CatchParameter:
742     error / Type Identifier ;
743
744 DeleteExpression:
745     error / KW_delete UnaryExpression ;
746
747 ExpressionList:
748     error / ExpressionList opComma Expression ;
749
750 FunctionParameterList:
751     error / Declarators ;
752
753 TemplateIdentifer:
754     error / Identifier ;
755
756 IntegerExpression:
757     error / Expression ;
758 FunctionBody:
759     error / BlockStatement |
760     error / BodyStatement |
761     error / InStatement BodyStatement |
762     error / OutStatement BodyStatement |
763     error / InStatement OutStatement BodyStatement |
764     error / OutStatement InStatement BodyStatement ;
765
766 InStatement:
767     error / KW_in BlockStatement ;
768
769 OutStatement:
770     error / KW_out BlockStatement |
771     error / KW_out opLParen Identifier opRParen BlockStatement ;
772
773 BodyStatement:
774     error / KW_body BlockStatement ;
775 ImportDeclaration:
776     error / KW_import ImportList opSemicolon |
777     error / KW_static KW_import ImportList opSemicolon ;
778
779 ImportList:
780     error / Import |
781     error / ImportBindings |
782     error / Import opComma ImportList ;
783
784 Import:
785     error / ModuleName |
786     error / ModuleAliasIdentifier opAssignment ModuleName ;
787
788 ImportBindings:
789     error / Import opCollin ImportBindList ;
790
791 ImportBindList:
792     error / ImportBind |
793     error / ImportBind opComma ImportBindList ;
794
795 ImportBind:
796     error / Identifier |
797     error / Identifier opAssignment ;
798
799 ModuleAliasIdentifier:
800     error / Identifier ;
801
802 Initializer:
803     error / KW_void |
804     error / NonVoidInitializer ;
805
806 NonVoidInitializer:
807     error / AssignExpression |
808     error / ArrayInitializer |
809     error / StructInitializer ;
810
811 ArrayInitializer:
812     error / opLBrace opRBrace |
813     error / opLBrace ArrayMemberInitializations opRBrace ;
814
815 ArrayMemberInitializations:
816     error / ArrayMemberInitialization |
817     error / ArrayMemberInitialization opComma |
818     error / ArrayMemberInitialization opComma ArrayMemberInitializations ;
819
820 ArrayMemberInitialization:
821     error / NonVoidInitializer |
822     error / AssignExpression opCollin NonVoidInitializer ;
823
824 StructInitializer:
825     error / opLBracket opRBracket |
826     error / opLBracket StructMemberInitializers opRBracket ;
827
828 StructMemberInitializers:
829     error / StructMemberInitializer |
830     error / StructMemberInitializer opComma |
831     error / StructMemberInitializer opComma StructMemberInitializers ;
832
833 StructMemberInitializer:
834     error / NonVoidInitializer |
835     error / Identifier opCollin NonVoidInitializer ;
836 CmpExpression:
837     pass1 / EqualExpression |
838     pass1 / IdentityExpression |
839     pass1 / RelExpression |
840     pass1 / InExpression ;
841
842 EqualExpression:
843     pass1 / ShiftExpression |
844     error / ShiftExpression opEqual ShiftExpression |
845     error / ShiftExpression opNotEqual ShiftExpression |
846     error / ShiftExpression KW_is ShiftExpression |
847     error / ShiftExpression opBang KW_is ShiftExpression ;
848
849 RelExpression:
850     pass1 / ShiftExpression |
851     error / ShiftExpression opLessThan ShiftExpression |
852     error / ShiftExpression opLessEqual ShiftExpression |
853     error / ShiftExpression opGreaterThan ShiftExpression |
854     error / ShiftExpression opGreaterEqual ShiftExpression |
855     error / ShiftExpression opNotLessGraterEqual ShiftExpression |
856     error / ShiftExpression opNotLessGrater ShiftExpression |
857     error / ShiftExpression opLessGreater ShiftExpression |
858     error / ShiftExpression opLessGraterEqual ShiftExpression |
859     error / ShiftExpression opNotGrater ShiftExpression |
860     error / ShiftExpression opNotGraterEqual ShiftExpression |
861     error / ShiftExpression opNotLess ShiftExpression |
862     error / ShiftExpression opNotLessEqual ShiftExpression ;
863
864 InExpression:
865     error / ShiftExpression KW_in ShiftExpression ;
866
867 ShiftExpression:
868     pass1 / AddExpression |
869     error / ShiftExpression opLShift AddExpression |
870     error / ShiftExpression opRShift AddExpression |
871     error / ShiftExpression op3RShift AddExpression ;
872
873 IdentityExpression:
874     error / ShiftExpression KW_is ShiftExpression |
875     error / ShiftExpression opBang KW_is ShiftExpression ;
876 AddExpression:
877     pass1 / MulExpression |
878     error / AddExpression opPlus MulExpression |
879     error / AddExpression opMinus MulExpression |
880     pass1 / CatExpression ;
881
882 CatExpression:
883     error / AddExpression opTilde MulExpression ;
884
885 MulExpression:
886     pass1 / UnaryExpression |
887     error / MulExpression opStar UnaryExpression |
888     error / MulExpression opDivision UnaryExpression |
889     error / MulExpression opModulo UnaryExpression ;
890
891 UnaryExpression:
892     pass1 / PostfixExpression |
893     error / opAmpersand UnaryExpression |
894     error / opPlusPlus UnaryExpression |
895     error / opMinusMinus UnaryExpression |
896     error / opStar UnaryExpression |
897     error / opMinus UnaryExpression |
898     error / opPlus UnaryExpression |
899     error / opBang UnaryExpression |
900     error / opTilde UnaryExpression |
901     error / opLParen Type opRParen opDot Identifier |
902     pass1 / NewExpression |
903     pass1 / DeleteExpression |
904     pass1 / CastExpression |
905     pass1 / NewAnonClassExpression ;
906
907 CastExpression:
908     error / KW_cast opLParen Type opRParen UnaryExpression ;
909 Expression :
910     pass1 / AssignExpression |
911     error / AssignExpression opComma Expression ;
912
913 AssignExpression :
914     pass1 / ConditionalExpression |
915     error / ConditionalExpression opAssignment      AssignExpression |
916     error / ConditionalExpression opPlusAssign      AssignExpression |
917     error / ConditionalExpression opMinusAssign     AssignExpression |
918     error / ConditionalExpression opStarAssign      AssignExpression |
919     error / ConditionalExpression opDivideAssign    AssignExpression |
920     error / ConditionalExpression opModuloAssign    AssignExpression |
921     error / ConditionalExpression opAmpersandAssign AssignExpression |
922     error / ConditionalExpression opPipeAssign      AssignExpression |
923     error / ConditionalExpression opCarrotAssign    AssignExpression |
924     error / ConditionalExpression opTildeAssign     AssignExpression |
925     error / ConditionalExpression opLShiftAssign    AssignExpression |
926     error / ConditionalExpression opRShiftAssign    AssignExpression |
927     error / ConditionalExpression op3RShiftAssign   AssignExpression ;
928
929 ConditionalExpression:
930     pass1 / OrOrExpression |
931     error / OrOrExpression opQuestion Expression opCollin ConditionalExpression ;
932
933 OrOrExpression:
934     pass1 / AndAndExpression |
935     error / OrOrExpression opLogicOr AndAndExpression ;
936
937 AndAndExpression:
938     pass1 / OrExpression |
939     error / AndAndExpression opLogicAnd OrExpression ;
940
941 OrExpression:
942     pass1 / XorExpression |
943     error / OrExpression opPipe XorExpression ;
944
945 XorExpression:
946     pass1 / AndExpression |
947     error / XorExpression opCarrot AndExpression ;
948
949 AndExpression :
950     pass1 / CmpExpression |
951     error / AndExpression opAmpersand CmpExpression ;
952 AggregateDeclaration:
953     error / Tag opLBracket DeclDefs opRBracket |
954     error / Tag Identifier StructBody |
955     error / Tag Identifier opSemicolon ;
956
957 Tag:
958     error / KW_struct |
959     error / KW_union ;
960
961 StructBody:
962     error / opLBracket opRBracket |
963     error / opLBracket StructBodyDeclarations opRBracket ;
964
965 StructBodyDeclarations:
966     error / StructBodyDeclaration |
967     error / StructBodyDeclaration StructBodyDeclarations ;
968
969 StructBodyDeclaration:
970     error / Declaration |
971     error / StaticConstructor |
972     error / StaticDestructor |
973     error / Invariant |
974     error / UnitTest |
975     error / StructAllocator |
976     error / StructDeallocator ;
977
978 StructAllocator:
979     error / ClassAllocator ;
980
981 StructDeallocator:
982     error / ClassDeallocator ;
983
984 TemplateParameterList:
985     error / TemplateParameter |
986     error / TemplateParameter opComma TemplateParameterList ;
987
988 TemplateParameter:
989     error / TemplateTypeParameter |
990     error / TemplateValueParameter |
991     error / TemplateAliasParameter |
992     error / TemplateTupleParameter ;
993
994 TemplateTypeParameter:
995     error / Identifier |
996     error / Identifier TemplateTypeParameterSpecialization |
997     error / Identifier TemplateTypeParameterDefault |
998     error / Identifier TemplateTypeParameterSpecialization TemplateTypeParameterDefault ;
999
1000 TemplateTypeParameterSpecialization:
1001     error / opCollin Type ;
1002
1003 TemplateTypeParameterDefault:
1004     error / opAssignment Type ;
1005
1006 TemplateAliasParameter:
1007     error / KW_alias Identifier |
1008     error / KW_alias Identifier TemplateAliasParameterSpecialization |
1009     error / KW_alias Identifier TemplateAliasParameterDefault |
1010     error / KW_alias Identifier TemplateAliasParameterSpecialization TemplateAliasParameterDefault ;
1011
1012 TemplateAliasParameterSpecialization:
1013     error / opCollin Type ;
1014
1015 TemplateAliasParameterDefault:
1016     error / opAssignment Type ;
1017
1018 TemplateTupleParameter:
1019     error / Identifier opEllipsis ;
1020
1021 TemplateValueParameter:
1022     error / Declaration |
1023     error / Declaration TemplateValueParameterSpecialization |
1024     error / Declaration TemplateValueParameterDefault |
1025     error / Declaration TemplateValueParameterSpecialization TemplateValueParameterDefault ;
1026
1027 TemplateValueParameterSpecialization:
1028     error / opCollin ConditionalExpression ;
1029
1030 TemplateValueParameterDefault:
1031     error / opAssignment ConditionalExpression ;
1032
1033 NewExpression:
1034     error / NewArguments Type opLBrace AssignExpression opRBrace |
1035     error / NewArguments Type opLParen ArgumentList opRParen |
1036     error / NewArguments Type |
1037     error / NewArguments ClassArguments BaseClassList? opLBracket DeclDefs opRBracket ;
1038
1039 NewArguments:
1040     error / KW_new opLParen ArgumentList opRParen |
1041     error / KW_new opLParen opRParen |
1042     pass1 / KW_new ;
1043
1044 ClassArguments:
1045     error / KW_class opLParen ArgumentList opRParen |
1046     error / KW_class opLParen opRParen |
1047     pass1 / KW_class ;
1048
1049 ArgumentList:
1050     pass1 / AssignExpression |
1051     error / AssignExpression opComma ArgumentList ;
1052
1053 IndexExpression :
1054     error / PostfixExpression opLBrace ArgumentList opRBrace ;
1055
1056 SliceExpression:
1057     error / PostfixExpression opLBrace opRBrace |
1058     error / PostfixExpression opLBrace AssignExpression opDoubleDot AssignExpression opRBrace ;
1059
1060
1061 Type:
1062     pass1 / BasicType |
1063     error / BasicType Declarator2 ;
1064
1065 BasicType:
1066     pass1 / KW_bool |
1067     pass1 / KW_byte |
1068     pass1 / KW_ubyte |
1069     pass1 / KW_short |
1070     pass1 / KW_ushort |
1071     pass1 / KW_int |
1072     pass1 / KW_uint |
1073     pass1 / KW_long |
1074     pass1 / KW_ulong |
1075     pass1 / KW_char |
1076     pass1 / KW_wchar |
1077     pass1 / KW_dchar |
1078     pass1 / KW_float |
1079     pass1 / KW_double |
1080     pass1 / KW_real |
1081     pass1 / KW_ifloat |
1082     pass1 / KW_idouble |
1083     pass1 / KW_ireal |
1084     pass1 / KW_cfloat |
1085     pass1 / KW_cdouble |
1086     pass1 / KW_creal |
1087     pass1 / KW_void |
1088     error / opDot IdentifierList |
1089     pass1 / IdentifierList |
1090     pass1 / Typeof |
1091     error / Typeof opDot IdentifierList ;
1092
1093 BasicType2:
1094     pass1 / opStar |
1095     error/ opLBrace opRBrace |
1096     error/ opLBrace Expression opRBrace |
1097     error/ opLBrace Type opRBrace |
1098     error/ KW_delegate Parameters |
1099     error/ KW_function Parameters ;
1100
1101 IdentifierList:
1102     pass1 / Identifier |
1103     error/ Identifier opDot IdentifierList |
1104     pass1 / TemplateInstance |
1105     error/ TemplateInstance opDot IdentifierList ;
Note: See TracBrowser for help on using the browser.