1 // created by jay 0.7 (c) 1998 Axel.Schreiner@informatik.uni-osnabrueck.de
3 #line 2 "mb-parser.jay"
5 // Mono.MonoBASIC.Parser.cs (from .jay): The Parser for the MonoBASIC compiler
7 // Authors: A Rafael D Teixeira (rafaelteixeirabr@hotmail.com)
8 // Anirban Bhattacharjee (banirban@novell.com)
9 // Jambunathan K (kjambunathan@novell.com)
11 // Licensed under the terms of the GNU GPL
13 // Copyright (C) 2001, 2002, 2003, 2004 A Rafael D Teixeira
14 // Copyright (C) 2003, 2004 Novell
22 using System.Reflection;
23 using System.Collections;
27 /// The MonoBASIC Parser
30 // public class Parser : GenericParser
35 // /// Current block is used to add statements as we find
38 // Block current_block;
41 // /// Tmp block is used to store block endings in if/select's
46 // /// Tmp block is used to store tmp copies of expressions
48 // Expression tmp_expr;
51 // /// Tmp catch is used to store catch clauses in try..catch..finally
53 // ArrayList tmp_catch_clauses;
56 // /// Current interface is used by the various declaration
57 // /// productions in the interface declaration to "add"
58 // /// the interfaces as we find them.
60 // Interface current_interface;
63 // /// This is used by the unary_expression code to resolve
64 // /// a name against a parameter.
66 // Parameters current_local_parameters;
69 // /// This are used when parsing parameters in property
72 // Parameters set_parameters;
73 // Parameters get_parameters;
76 // /// This is used by the sub_header parser to store modifiers
77 // /// to be passed to sub/constructor
79 // int current_modifiers;
82 // /// This is used by the sub_header parser to store attributes
83 // /// to be passed to sub/constructor
85 // Attributes current_attributes;
88 // /// Using during property parsing to describe the implicit
89 // /// value parameter that is passed to the "set" accessor
92 // string get_implicit_value_parameter_name;
95 // // Using during property parsing to describe the implicit
96 // // value parameter that is passed to the "set" and "get"accesor
97 // // methods (properties and indexers).
99 // Expression get_implicit_value_parameter_type;
102 // /// Using during property parsing to describe the implicit
103 // /// value parameter that is passed to the "set" accessor
106 // string set_implicit_value_parameter_name;
109 // // Using during property parsing to describe the implicit
110 // // value parameter that is passed to the "set" and "get"accesor
111 // // methods (properties and indexers).
113 // Expression set_implicit_value_parameter_type;
115 // Location member_location;
117 // // An out-of-band stack.
121 // ArrayList current_rank_specifiers;
123 // DoOptions do_type;
127 // Stack switch_stack;
129 // // Expression stack for nested ifs
133 // Stack statement_stack;
135 // // A stack for With expressions.
140 // static public bool InitialOptionExplicit = false;
141 // static public bool InitialOptionStrict = false;
142 // static public bool InitialOptionCompareBinary = true;
143 // static public ArrayList ImportsList = null;
145 // bool OptionExplicit;
146 // bool OptionStrict;
147 // bool OptionCompareBinary;
149 // static public bool UseExtendedSyntax; // for ".mbs" files
151 // bool implicit_modifiers;
153 // public override string[] extensions()
155 // string [] list = { ".vb", ".mbs" };
163 public class CSharpParser {
164 NamespaceEntry current_namespace;
165 TypeContainer current_container;
166 TypeContainer current_class;
168 IIteratorContainer iterator_container;
171 /// Current block is used to add statements as we find
174 Block current_block, top_current_block;
177 /// This is used by the unary_expression code to resolve
178 /// a name against a parameter.
180 Parameters current_local_parameters;
183 /// Using during property parsing to describe the implicit
184 /// value parameter that is passed to the "set" and "get"accesor
185 /// methods (properties and indexers).
187 Expression implicit_value_parameter_type;
188 Parameters indexer_parameters;
191 /// Used to determine if we are parsing the get/set pair
192 /// of an indexer or a property
194 bool parsing_indexer;
197 /// An out-of-band stack.
206 static public int yacc_verbose_flag;
208 // Name of the file we are parsing
212 /// The current file.
216 /// This is used by the sub_header parser to store modifiers
217 /// to be passed to sub/constructor
218 int current_modifiers;
220 /// This is used by the sub_header parser to store attributes
221 /// to be passed to sub/constructor
222 Attributes current_attributes;
224 /// This is used by the attributes parser to syntactically
225 /// validate the attribute rules
226 bool allow_global_attribs = true;
228 bool expecting_global_attribs = false;
229 bool expecting_local_attribs = false;
231 bool local_attrib_section_added = false;
234 ArrayList current_rank_specifiers;
237 /// Using during property parsing to describe the implicit
238 /// value parameter that is passed to the "set" accessor
241 string get_implicit_value_parameter_name;
244 // Using during property parsing to describe the implicit
245 // value parameter that is passed to the "set" and "get"accesor
246 // methods (properties and indexers).
248 Expression get_implicit_value_parameter_type;
251 /// Using during property parsing to describe the implicit
252 /// value parameter that is passed to the "set" accessor
255 string set_implicit_value_parameter_name;
258 // Using during property parsing to describe the implicit
259 // value parameter that is passed to the "set" and "get"accesor
260 // methods (properties and indexers).
262 Expression set_implicit_value_parameter_type;
265 /// This are used when parsing parameters in property
268 Parameters set_parameters;
269 Parameters get_parameters;
271 // static public ArrayList ImportsList = null;
273 bool implicit_modifiers;
277 /// This is used as a helper class for handling of
278 /// pre-processor statements.
281 // FIXME: This class MBASException is actually a kludge
282 // It can be done away with a more elegant replacement.
284 public class MBASException : ApplicationException
289 public MBASException(int code, Location loc, string text) : base(text)
298 public class IfElseStateMachine {
322 public static Hashtable errStrings = new Hashtable();
325 static int[,] errTable = new int[(int)State.MAX, (int)Token.MAX];
327 static IfElseStateMachine()
329 // FIXME: Fix both the error nos and the error strings.
330 // Currently the error numbers and the error strings are
331 // just placeholders for getting the state-machine going.
333 errStrings.Add(0, "");
334 errStrings.Add(30012, "#If must end with a matching #End If");
335 errStrings.Add(30013, "#ElseIf, #Else or #End If must be preceded by a matching #If");
336 errStrings.Add(30014, "#ElseIf must be preceded by a matching #If or #ElseIf");
337 errStrings.Add(30028, "#Else must be preceded by a matching #If or #ElseIf");
338 errStrings.Add(32030, "#ElseIf cannot follow #Else as part of #If block");
340 errTable[(int)State.START, (int)Token.IF] = 0;
341 errTable[(int)State.START, (int)Token.ELSEIF] = 30014;
342 errTable[(int)State.START, (int)Token.ELSE] = 30028;
343 errTable[(int)State.START, (int)Token.ENDIF] = 30013;
344 errTable[(int)State.START, (int)Token.EOF] = 0;
346 errTable[(int)State.IF_SEEN, (int)Token.IF] = 0;
347 errTable[(int)State.IF_SEEN, (int)Token.ELSEIF] = 0;
348 errTable[(int)State.IF_SEEN, (int)Token.ELSE] = 0;
349 errTable[(int)State.IF_SEEN, (int)Token.ENDIF] = 0;
350 errTable[(int)State.IF_SEEN, (int)Token.EOF] = 30012;
352 errTable[(int)State.ELSEIF_SEEN, (int)Token.IF] = 0;
353 errTable[(int)State.ELSEIF_SEEN, (int)Token.ELSEIF] = 0;
354 errTable[(int)State.ELSEIF_SEEN, (int)Token.ELSE] = 0;
355 errTable[(int)State.ELSEIF_SEEN, (int)Token.ENDIF] = 0;
356 errTable[(int)State.ELSEIF_SEEN, (int)Token.EOF] = 30012;
358 errTable[(int)State.ELSE_SEEN, (int)Token.IF] = 0;
359 errTable[(int)State.ELSE_SEEN, (int)Token.ELSEIF] = 32030;
360 errTable[(int)State.ELSE_SEEN, (int)Token.ELSE] = 32030;
361 errTable[(int)State.ELSE_SEEN, (int)Token.ENDIF] = 0;
362 errTable[(int)State.ELSE_SEEN, (int)Token.EOF] = 30012;
364 errTable[(int)State.ENDIF_SEEN, (int)Token.IF] = 0;
365 errTable[(int)State.ENDIF_SEEN, (int)Token.ELSEIF] = 30014;
366 errTable[(int)State.ENDIF_SEEN, (int)Token.ELSE] = 30028;
367 errTable[(int)State.ENDIF_SEEN, (int)Token.ENDIF] = 30013;
368 errTable[(int)State.ENDIF_SEEN, (int)Token.EOF] = 0;
371 public IfElseStateMachine()
375 stateStack = new Stack();
376 stateStack.Push(state);
379 // The parameter here need not be qualified with IfElseStateMachine
380 // But it hits a bug in mcs. So temporarily scoping it so that builds
383 public void HandleToken(IfElseStateMachine.Token tok)
385 err = (int) errTable[(int)state, (int)tok];
388 throw new ApplicationException("Unexpected pre-processor directive #"+tok);
390 if(tok == Token.IF) {
391 stateStack.Push(state);
394 else if(tok == Token.ENDIF) {
395 state = (State)stateStack.Pop();
407 public string ErrString {
409 return (string) errStrings[err];
415 public class TokenizerController {
419 public bool CanAcceptTokens;
420 public bool CanSelectBlock;
428 public TokenizerController(Tokenizer lexer)
431 stateStack = new Stack();
433 currentState.CanAcceptTokens = true;
434 currentState.CanSelectBlock = true;
436 stateStack.Push(currentState);
441 return (State)stateStack.Peek();
445 public bool IsAcceptingTokens {
447 return currentState.CanAcceptTokens;
451 public void PositionCursorAtNextPreProcessorDirective()
453 lexer.PositionCursorAtNextPreProcessorDirective();
456 public void PositionTokenizerCursor(IfElseStateMachine.Token tok, BoolLiteral expr)
458 if(tok == IfElseStateMachine.Token.ENDIF) {
459 currentState = (State)stateStack.Pop();
461 if(currentState.CanAcceptTokens)
464 PositionCursorAtNextPreProcessorDirective();
469 if(tok == IfElseStateMachine.Token.IF) {
470 stateStack.Push(currentState);
472 currentState.CanAcceptTokens = parentState.CanAcceptTokens;
473 currentState.CanSelectBlock = true;
476 if(parentState.CanAcceptTokens &&
477 currentState.CanSelectBlock && (bool)(expr.GetValue()) ) {
479 currentState.CanAcceptTokens = true;
480 currentState.CanSelectBlock = false;
484 currentState.CanAcceptTokens = false;
485 PositionCursorAtNextPreProcessorDirective();
491 bool in_external_source = false;
492 int in_marked_region = 0;
494 TokenizerController tokenizerController;
495 IfElseStateMachine ifElseStateMachine;
501 /** error output stream.
502 It should be changeable.
504 public System.IO.TextWriter ErrorOutput = System.Console.Out;
506 /** simplified error message.
507 @see <a href="#yyerror(java.lang.String, java.lang.String[])">yyerror</a>
509 public void yyerror (string message) {
510 yyerror(message, null);
513 /** (syntax) error message.
514 Can be overwritten to control message format.
515 @param message text to be displayed.
516 @param expected vector of acceptable tokens, if available.
518 public void yyerror (string message, string[] expected) {
519 if ((yacc_verbose_flag > 0) && (expected != null) && (expected.Length > 0)) {
520 ErrorOutput.Write (message+", expecting");
521 for (int n = 0; n < expected.Length; ++ n)
522 ErrorOutput.Write (" "+expected[n]);
523 ErrorOutput.WriteLine ();
525 ErrorOutput.WriteLine (message);
528 /** debugging support, requires the package jay.yydebug.
529 Set to null to suppress debugging messages.
531 internal yydebug.yyDebug debug;
533 protected static int yyFinal = 2;
534 public static string [] yyRule = {
535 "$accept : compilation_unit",
536 "end_of_stmt : logical_end_of_line",
537 "end_of_stmt : COLON",
538 "logical_end_of_line : EOL",
539 "logical_end_of_line : logical_end_of_line pp_directive",
540 "compilation_unit : logical_end_of_line opt_option_directives opt_imports_directives declarations EOF",
541 "compilation_unit : logical_end_of_line opt_option_directives opt_imports_directives opt_attributes EOF",
542 "opt_option_directives :",
543 "opt_option_directives : option_directives",
544 "option_directives : option_directive",
545 "option_directives : option_directives option_directive",
546 "option_directive : option_explicit_directive",
547 "option_directive : option_strict_directive",
548 "option_directive : option_compare_directive",
552 "text_or_binary : BINARY",
553 "text_or_binary : TEXT",
554 "option_explicit_directive : OPTION EXPLICIT on_off logical_end_of_line",
555 "option_strict_directive : OPTION STRICT on_off logical_end_of_line",
556 "option_compare_directive : OPTION COMPARE text_or_binary logical_end_of_line",
557 "opt_declarations :",
558 "opt_declarations : declarations",
559 "declarations : declaration",
560 "declarations : declarations declaration",
562 "declaration : declaration_qualifiers $$1 namespace_declaration",
564 "declaration : declaration_qualifiers $$2 type_spec_declaration",
565 "identifier : IDENTIFIER",
566 "identifier : BINARY",
568 "identifier : COMPARE",
569 "identifier : EXPLICIT",
571 "type_character : PERCENT",
572 "type_character : LONGTYPECHAR",
573 "type_character : AT_SIGN",
574 "type_character : SINGLETYPECHAR",
575 "type_character : NUMBER_SIGN",
576 "type_character : DOLAR_SIGN",
577 "opt_type_character :",
578 "opt_type_character : type_character",
579 "qualified_identifier : identifier",
580 "qualified_identifier : qualified_identifier DOT identifier",
581 "opt_imports_directives :",
582 "opt_imports_directives : imports_directives",
583 "imports_directives : imports_directive",
584 "imports_directives : imports_directives imports_directive",
585 "imports_directive : IMPORTS imports_terms logical_end_of_line",
586 "imports_terms : imports_term",
587 "imports_terms : imports_terms COMMA imports_term",
588 "imports_term : namespace_or_type_name",
589 "imports_term : identifier ASSIGN namespace_or_type_name",
591 "opt_params : OPEN_PARENS CLOSE_PARENS",
592 "opt_params : OPEN_PARENS opt_formal_parameter_list CLOSE_PARENS",
594 "opt_attributes : attribute_sections",
595 "attribute_sections : attribute_section",
597 "attribute_sections : attribute_sections $$3 attribute_section",
598 "attribute_section : OP_LT attribute_list OP_GT opt_end_of_stmt",
600 "opt_end_of_stmt : end_of_stmt",
601 "attribute_list : attribute",
602 "attribute_list : attribute_list COMMA attribute",
604 "attribute : namespace_or_type_name $$4 opt_attribute_arguments",
607 "attribute : attribute_target_specifier $$5 COLON namespace_or_type_name $$6 opt_attribute_arguments",
608 "attribute_target_specifier : ASSEMBLY",
609 "attribute_target_specifier : MODULE",
610 "attribute_target_specifier : namespace_or_type_name",
611 "opt_attribute_arguments :",
612 "opt_attribute_arguments : OPEN_PARENS opt_attribute_arguments_list CLOSE_PARENS",
613 "opt_attribute_arguments_list :",
614 "opt_attribute_arguments_list : attribute_arguments_list",
615 "attribute_arguments_list : positional_argument_list",
616 "attribute_arguments_list : positional_argument_list COMMA named_argument_list",
617 "attribute_arguments_list : named_argument_list",
618 "positional_argument_list : constant_expression",
619 "positional_argument_list : positional_argument_list COMMA constant_expression",
620 "named_argument_list : named_argument",
621 "named_argument_list : named_argument_list COMMA named_argument",
622 "named_argument : identifier ATTR_ASSIGN constant_expression",
624 "namespace_declaration : NAMESPACE qualified_identifier logical_end_of_line $$7 opt_declarations END NAMESPACE logical_end_of_line",
625 "declaration_qualifiers : opt_attributes opt_modifiers",
626 "type_spec_declaration : class_declaration",
627 "type_spec_declaration : module_declaration",
628 "type_spec_declaration : interface_declaration",
629 "type_spec_declaration : delegate_declaration",
630 "type_spec_declaration : struct_declaration",
631 "type_spec_declaration : enum_declaration",
634 "class_declaration : CLASS identifier logical_end_of_line $$8 opt_inherits opt_implements $$9 opt_class_member_declarations END CLASS logical_end_of_line",
636 "opt_inherits : INHERITS type_list logical_end_of_line",
638 "opt_implements : IMPLEMENTS type_list logical_end_of_line",
640 "opt_modifiers : modifiers",
641 "modifiers : modifier",
642 "modifiers : modifiers modifier",
644 "modifier : PROTECTED",
645 "modifier : PRIVATE",
648 "modifier : NOTINHERITABLE",
649 "modifier : OVERRIDABLE",
650 "modifier : NOTOVERRIDABLE",
651 "modifier : OVERRIDES",
652 "modifier : OVERLOADS",
653 "modifier : SHADOWS",
654 "modifier : MUSTINHERIT",
655 "modifier : READONLY",
656 "modifier : DEFAULT",
657 "modifier : WRITEONLY",
659 "module_declaration : MODULE identifier logical_end_of_line $$10 opt_module_member_declarations END MODULE logical_end_of_line",
660 "opt_module_member_declarations :",
661 "opt_module_member_declarations : module_member_declarations",
662 "module_member_declarations : module_member_declaration",
663 "module_member_declarations : module_member_declarations module_member_declaration",
665 "module_member_declaration : opt_attributes opt_modifiers $$11 module_member_declarator",
666 "module_member_declarator : constructor_declaration",
667 "module_member_declarator : method_declaration",
668 "module_member_declarator : field_declaration",
669 "module_member_declarator : constant_declaration",
670 "module_member_declarator : property_declaration",
671 "module_member_declarator : event_declaration",
672 "module_member_declarator : type_spec_declaration",
673 "constant_declaration : CONST constant_declarators logical_end_of_line",
674 "opt_class_member_declarations :",
675 "opt_class_member_declarations : class_member_declarations",
676 "class_member_declarations : class_member_declaration",
677 "class_member_declarations : class_member_declarations class_member_declaration",
678 "class_member_declaration : opt_attributes opt_modifiers class_member_declarator",
679 "class_member_declarator : field_declaration",
680 "class_member_declarator : constant_declaration",
681 "class_member_declarator : method_declaration",
682 "class_member_declarator : constructor_declaration",
683 "class_member_declarator : property_declaration",
684 "class_member_declarator : event_declaration",
685 "class_member_declarator : type_spec_declaration",
686 "method_declaration : sub_declaration",
687 "method_declaration : func_declaration",
689 "sub_declaration : SUB identifier opt_params $$12 opt_evt_handler opt_implement_clause logical_end_of_line begin_block opt_statement_list end_block END SUB logical_end_of_line",
692 "func_declaration : FUNCTION identifier opt_type_character opt_params opt_type_with_ranks $$13 opt_implement_clause logical_end_of_line begin_block $$14 opt_statement_list end_block END FUNCTION logical_end_of_line",
695 "struct_declaration : STRUCTURE identifier logical_end_of_line opt_implement_clause $$15 opt_struct_member_declarations $$16 END STRUCTURE logical_end_of_line",
696 "opt_logical_end_of_line :",
697 "opt_logical_end_of_line : logical_end_of_line",
698 "opt_struct_member_declarations :",
699 "opt_struct_member_declarations : struct_member_declarations",
700 "struct_member_declarations : struct_member_declaration",
701 "struct_member_declarations : struct_member_declarations struct_member_declaration",
702 "struct_member_declaration : opt_modifiers struct_member_declarator",
703 "struct_member_declarator : field_declaration",
704 "struct_member_declarator : constant_declaration",
705 "struct_member_declarator : constructor_declaration",
706 "struct_member_declarator : method_declaration",
707 "struct_member_declarator : event_declaration",
708 "struct_member_declarator : type_spec_declaration",
709 "event_declaration : EVENT identifier AS type opt_implement_clause logical_end_of_line",
711 "enum_declaration : ENUM identifier opt_type_spec logical_end_of_line opt_enum_member_declarations $$17 END ENUM logical_end_of_line",
712 "opt_enum_member_declarations :",
713 "opt_enum_member_declarations : enum_member_declarations",
714 "enum_member_declarations : enum_member_declaration",
715 "enum_member_declarations : enum_member_declarations enum_member_declaration",
716 "enum_member_declaration : opt_attributes identifier logical_end_of_line",
718 "enum_member_declaration : opt_attributes identifier $$18 ASSIGN expression logical_end_of_line",
719 "interface_property_declaration : PROPERTY identifier opt_type_character opt_property_parameters opt_type_with_ranks logical_end_of_line",
723 "interface_declaration : INTERFACE identifier logical_end_of_line $$19 opt_interface_base $$20 interface_body $$21 END INTERFACE logical_end_of_line",
724 "opt_interface_base :",
725 "opt_interface_base : interface_bases",
726 "interface_bases : interface_base",
727 "interface_bases : interface_bases interface_base",
728 "interface_base : INHERITS type_list logical_end_of_line",
729 "interface_body : opt_interface_member_declarations",
730 "opt_interface_member_declarations :",
731 "opt_interface_member_declarations : interface_member_declarations",
732 "interface_member_declarations : interface_member_declaration",
733 "interface_member_declarations : interface_member_declarations interface_member_declaration",
734 "interface_member_declaration : opt_attributes opt_modifiers interface_member_declarator",
735 "interface_member_declarator : interface_method_declaration",
736 "interface_member_declarator : interface_property_declaration",
737 "interface_method_declaration : SUB identifier opt_params logical_end_of_line",
738 "interface_method_declaration : FUNCTION identifier opt_type_character opt_params opt_type_with_ranks logical_end_of_line",
739 "property_declaration : non_abstract_propery_declaration",
741 "non_abstract_propery_declaration : PROPERTY identifier opt_type_character opt_property_parameters opt_type_with_ranks opt_implement_clause logical_end_of_line $$22 accessor_declarations END PROPERTY logical_end_of_line",
742 "opt_property_parameters :",
743 "opt_property_parameters : OPEN_PARENS opt_formal_parameter_list CLOSE_PARENS",
744 "opt_implement_clause :",
745 "opt_implement_clause : IMPLEMENTS implement_clause_list",
746 "implement_clause_list : qualified_identifier",
747 "implement_clause_list : implement_clause_list COMMA qualified_identifier",
748 "accessor_declarations : get_accessor_declaration opt_set_accessor_declaration",
749 "accessor_declarations : set_accessor_declaration opt_get_accessor_declaration",
750 "opt_get_accessor_declaration :",
751 "opt_get_accessor_declaration : get_accessor_declaration",
752 "opt_set_accessor_declaration :",
753 "opt_set_accessor_declaration : set_accessor_declaration",
756 "get_accessor_declaration : opt_attributes GET logical_end_of_line $$23 begin_block $$24 opt_statement_list end_block END GET logical_end_of_line",
758 "set_accessor_declaration : opt_attributes SET opt_set_parameter logical_end_of_line $$25 begin_block opt_statement_list end_block END SET logical_end_of_line",
759 "opt_set_parameter :",
760 "opt_set_parameter : OPEN_PARENS CLOSE_PARENS",
761 "opt_set_parameter : OPEN_PARENS opt_parameter_modifier opt_identifier opt_type_with_ranks CLOSE_PARENS",
762 "field_declaration : opt_dim_stmt variable_declarators logical_end_of_line",
764 "opt_dim_stmt : DIM",
765 "delegate_declaration : DELEGATE SUB identifier OPEN_PARENS opt_formal_parameter_list CLOSE_PARENS logical_end_of_line",
766 "delegate_declaration : DELEGATE FUNCTION identifier OPEN_PARENS opt_formal_parameter_list CLOSE_PARENS opt_type_with_ranks logical_end_of_line",
770 "constructor_declaration : SUB NEW opt_params logical_end_of_line $$26 begin_block opt_statement_list end_block $$27 END SUB logical_end_of_line",
771 "opt_formal_parameter_list :",
772 "opt_formal_parameter_list : formal_parameter_list",
773 "formal_parameter_list : parameters",
774 "parameters : parameter",
775 "parameters : parameters COMMA parameter",
776 "parameter : opt_attributes opt_parameter_modifier identifier opt_type_character opt_rank_specifiers opt_type_with_ranks opt_variable_initializer",
777 "opt_parameter_modifier :",
778 "opt_parameter_modifier : parameter_modifiers",
779 "parameter_modifiers : parameter_modifiers parameter_modifier",
780 "parameter_modifiers : parameter_modifier",
781 "parameter_modifier : BYREF",
782 "parameter_modifier : BYVAL",
783 "parameter_modifier : OPTIONAL",
784 "parameter_modifier : PARAM_ARRAY",
785 "opt_statement_list :",
786 "opt_statement_list : statement_list end_of_stmt",
787 "statement_list : statement",
788 "statement_list : statement_list end_of_stmt statement",
789 "block : begin_block opt_statement_list end_block",
792 "statement : declaration_statement",
793 "statement : embedded_statement",
794 "statement : ADDHANDLER prefixed_unary_expression COMMA ADDRESSOF expression",
795 "statement : REMOVEHANDLER prefixed_unary_expression COMMA ADDRESSOF expression",
796 "statement : RAISEEVENT identifier opt_raise_event_args",
797 "opt_raise_event_args :",
798 "opt_raise_event_args : OPEN_PARENS opt_argument_list CLOSE_PARENS",
799 "embedded_statement : expression_statement",
800 "embedded_statement : selection_statement",
801 "embedded_statement : try_statement",
802 "embedded_statement : synclock_statement",
803 "embedded_statement : jump_statement",
804 "jump_statement : return_statement",
805 "jump_statement : goto_statement",
806 "jump_statement : throw_statement",
807 "goto_statement : GOTO label_name",
808 "throw_statement : THROW opt_expression",
809 "return_statement : RETURN opt_expression",
810 "synclock_statement : SYNCLOCK expression end_of_stmt block END SYNCLOCK",
811 "try_statement : try_catch",
812 "try_statement : try_catch_finally",
813 "try_catch : TRY end_of_stmt block opt_catch_clauses END TRY",
814 "try_catch_finally : TRY end_of_stmt block opt_catch_clauses FINALLY end_of_stmt block END TRY",
815 "opt_catch_clauses :",
816 "opt_catch_clauses : catch_clauses",
817 "catch_clauses : catch_clause",
818 "catch_clauses : catch_clauses catch_clause",
820 "opt_identifier : identifier",
822 "catch_clause : CATCH opt_catch_args end_of_stmt $$28 block",
824 "opt_catch_args : catch_args",
825 "catch_args : identifier AS type",
827 "while_statement : WHILE $$29 boolean_expression end_of_stmt begin_block opt_statement_list end_block END WHILE",
828 "selection_statement : if_statement",
829 "if_statement : IF boolean_expression opt_then end_of_stmt block END IF",
830 "if_statement : IF boolean_expression opt_then end_of_stmt block ELSE end_of_stmt block END IF",
831 "if_statement : IF boolean_expression opt_then end_of_stmt block else_if_statement_rest",
832 "else_if_statement_rest : ELSEIF boolean_expression opt_then end_of_stmt block END IF",
833 "else_if_statement_rest : ELSEIF boolean_expression opt_then end_of_stmt block ELSE end_of_stmt block END IF",
834 "else_if_statement_rest : ELSEIF boolean_expression opt_then end_of_stmt block else_if_statement_rest",
837 "case_clauses : case_clause",
838 "case_clauses : case_clauses COMMA case_clause",
839 "case_clause : opt_is comparison_operator expression",
840 "case_clause : expression",
843 "comparison_operator : OP_LT",
844 "comparison_operator : OP_GT",
845 "comparison_operator : OP_LE",
846 "comparison_operator : OP_NE",
849 "expression_statement : statement_expression",
850 "statement_expression : invocation_expression",
851 "statement_expression : object_creation_expression",
852 "statement_expression : assignment_expression",
853 "object_creation_expression : NEW type OPEN_PARENS opt_argument_list CLOSE_PARENS",
854 "object_creation_expression : NEW type",
855 "new_expression : object_creation_expression",
856 "declaration_statement : local_variable_declaration",
857 "declaration_statement : local_constant_declaration",
858 "local_variable_declaration : DIM variable_declarators",
859 "local_constant_declaration : CONST constant_declarators",
860 "constant_declarators : constant_declarator",
861 "constant_declarators : constant_declarators COMMA constant_declarator",
862 "constant_declarator : variable_name opt_type_decl opt_variable_initializer",
863 "variable_declarators : variable_declarator",
864 "variable_declarators : variable_declarators COMMA variable_declarator",
865 "variable_declarator : variable_names opt_type_decl opt_variable_initializer",
866 "variable_names : variable_name",
867 "variable_names : variable_names COMMA variable_name",
868 "variable_name : identifier opt_type_character opt_array_name_modifier",
870 "opt_type_spec : AS type",
871 "opt_type_with_ranks : opt_type_spec",
872 "opt_type_decl : opt_type_with_ranks",
873 "opt_type_decl : AS NEW type",
874 "opt_type_decl : AS NEW type OPEN_PARENS opt_argument_list CLOSE_PARENS",
875 "opt_array_name_modifier :",
876 "opt_variable_initializer :",
877 "opt_variable_initializer : ASSIGN variable_initializer",
878 "variable_initializer : expression",
879 "variable_initializer : array_initializer",
880 "array_initializer : OPEN_BRACE CLOSE_BRACE",
881 "array_initializer : OPEN_BRACE variable_initializer_list CLOSE_BRACE",
882 "variable_initializer_list : variable_initializer",
883 "variable_initializer_list : variable_initializer_list COMMA variable_initializer",
884 "opt_rank_specifiers :",
885 "opt_rank_specifiers : rank_specifiers",
886 "rank_specifiers : rank_specifier",
887 "rank_specifiers : rank_specifiers rank_specifier",
888 "rank_specifier : OPEN_PARENS opt_dim_specifiers CLOSE_PARENS",
889 "opt_dim_specifiers :",
890 "opt_dim_specifiers : expression",
891 "opt_dim_specifiers : opt_dim_specifiers COMMA expression",
892 "opt_dim_specifiers : opt_dim_specifiers COMMA",
893 "primary_expression : literal",
894 "primary_expression : parenthesized_expression",
895 "primary_expression : this_access",
896 "primary_expression : base_access",
897 "primary_expression : qualified_identifier",
898 "primary_expression : get_type_expression",
899 "primary_expression : member_access",
900 "primary_expression : invocation_expression",
901 "primary_expression : new_expression",
902 "primary_expression : cast_expression",
903 "literal : boolean_literal",
904 "literal : integer_literal",
905 "literal : real_literal",
906 "literal : LITERAL_CHARACTER",
907 "literal : LITERAL_STRING",
909 "real_literal : LITERAL_SINGLE",
910 "real_literal : LITERAL_DOUBLE",
911 "real_literal : LITERAL_DECIMAL",
912 "integer_literal : LITERAL_INTEGER",
913 "boolean_literal : TRUE",
914 "boolean_literal : FALSE",
915 "parenthesized_expression : OPEN_PARENS expression CLOSE_PARENS",
916 "member_access : primary_expression DOT identifier",
917 "member_access : predefined_type DOT identifier",
918 "predefined_type : builtin_types",
919 "invocation_expression : primary_expression OPEN_PARENS opt_argument_list CLOSE_PARENS",
920 "invocation_expression : CALL primary_expression OPEN_PARENS opt_argument_list CLOSE_PARENS",
921 "base_access : MYBASE DOT IDENTIFIER",
922 "opt_argument_list : argument_list",
923 "argument_list : argument",
924 "argument_list : argument_list COMMA argument",
925 "argument : expression",
926 "argument : BYREF variable_reference",
928 "argument : ADDRESSOF expression",
929 "variable_reference : expression",
930 "expression : conditional_xor_expression",
932 "opt_expression : expression",
934 "this_access : MYCLASS",
935 "cast_expression : DIRECTCAST OPEN_PARENS expression COMMA type CLOSE_PARENS",
936 "cast_expression : CTYPE OPEN_PARENS expression COMMA type CLOSE_PARENS",
937 "cast_expression : cast_operator OPEN_PARENS expression CLOSE_PARENS",
938 "cast_operator : CBOOL",
939 "cast_operator : CBYTE",
940 "cast_operator : CCHAR",
941 "cast_operator : CDBL",
942 "cast_operator : CDEC",
943 "cast_operator : CINT",
944 "cast_operator : CLNG",
945 "cast_operator : COBJ",
946 "cast_operator : CSHORT",
947 "cast_operator : CSNG",
948 "cast_operator : CSTR",
949 "get_type_expression : GETTYPE OPEN_PARENS type CLOSE_PARENS",
950 "exponentiation_expression : primary_expression",
951 "exponentiation_expression : exponentiation_expression OP_EXP primary_expression",
952 "prefixed_unary_expression : exponentiation_expression",
953 "prefixed_unary_expression : PLUS prefixed_unary_expression",
954 "prefixed_unary_expression : MINUS prefixed_unary_expression",
955 "multiplicative_expression : prefixed_unary_expression",
956 "multiplicative_expression : multiplicative_expression STAR prefixed_unary_expression",
957 "multiplicative_expression : multiplicative_expression DIV prefixed_unary_expression",
958 "integer_division_expression : multiplicative_expression",
959 "integer_division_expression : integer_division_expression OP_IDIV multiplicative_expression",
960 "mod_expression : integer_division_expression",
961 "mod_expression : mod_expression MOD integer_division_expression",
962 "additive_expression : mod_expression",
963 "additive_expression : additive_expression PLUS mod_expression",
964 "additive_expression : additive_expression MINUS mod_expression",
965 "concat_expression : additive_expression",
966 "concat_expression : concat_expression OP_CONCAT additive_expression",
967 "shift_expression : concat_expression",
968 "shift_expression : shift_expression OP_SHIFT_LEFT concat_expression",
969 "shift_expression : shift_expression OP_SHIFT_RIGHT concat_expression",
970 "relational_expression : shift_expression",
971 "relational_expression : relational_expression ASSIGN shift_expression",
972 "relational_expression : relational_expression OP_NE shift_expression",
973 "relational_expression : relational_expression OP_LT shift_expression",
974 "relational_expression : relational_expression OP_GT shift_expression",
975 "relational_expression : relational_expression OP_LE shift_expression",
976 "relational_expression : relational_expression OP_GE shift_expression",
977 "relational_expression : relational_expression IS shift_expression",
978 "relational_expression : TYPEOF shift_expression IS type",
979 "negation_expression : relational_expression",
980 "negation_expression : NOT negation_expression",
981 "conditional_and_expression : negation_expression",
982 "conditional_and_expression : conditional_and_expression AND negation_expression",
983 "conditional_and_expression : conditional_and_expression ANDALSO negation_expression",
984 "conditional_or_expression : conditional_and_expression",
985 "conditional_or_expression : conditional_or_expression OR conditional_and_expression",
986 "conditional_or_expression : conditional_or_expression ORELSE conditional_and_expression",
987 "conditional_xor_expression : conditional_or_expression",
988 "conditional_xor_expression : conditional_xor_expression XOR conditional_or_expression",
989 "assignment_expression : prefixed_unary_expression ASSIGN expression",
990 "assignment_expression : prefixed_unary_expression STAR ASSIGN expression",
991 "assignment_expression : prefixed_unary_expression DIV ASSIGN expression",
992 "assignment_expression : prefixed_unary_expression PLUS ASSIGN expression",
993 "assignment_expression : prefixed_unary_expression MINUS ASSIGN expression",
994 "assignment_expression : prefixed_unary_expression OP_SHIFT_LEFT ASSIGN expression",
995 "assignment_expression : prefixed_unary_expression OP_SHIFT_RIGHT ASSIGN expression",
996 "assignment_expression : prefixed_unary_expression OP_CONCAT ASSIGN expression",
997 "assignment_expression : prefixed_unary_expression OP_EXP ASSIGN expression",
998 "assignment_expression : prefixed_unary_expression ASSIGN ADDRESSOF expression",
999 "constant_expression : expression",
1000 "boolean_expression : expression",
1001 "type : namespace_or_type_name",
1002 "type : builtin_types",
1004 "type_list : type_list COMMA type",
1005 "namespace_or_type_name : qualified_identifier",
1006 "builtin_types : OBJECT",
1007 "builtin_types : primitive_type",
1008 "primitive_type : numeric_type",
1009 "primitive_type : BOOLEAN",
1010 "primitive_type : CHAR",
1011 "primitive_type : STRING",
1012 "numeric_type : integral_type",
1013 "numeric_type : floating_point_type",
1014 "numeric_type : DECIMAL",
1016 "integral_type : BYTE",
1017 "integral_type : SHORT",
1018 "integral_type : INTEGER",
1019 "integral_type : LONG",
1020 "floating_point_type : SINGLE",
1021 "floating_point_type : DOUBLE",
1022 "pp_directive : HASH IDENTIFIER OPEN_PARENS LITERAL_STRING COMMA LITERAL_INTEGER CLOSE_PARENS EOL",
1023 "pp_directive : HASH IDENTIFIER LITERAL_STRING EOL",
1024 "pp_directive : HASH END IDENTIFIER EOL",
1025 "pp_directive : HASH CONST IDENTIFIER ASSIGN boolean_literal EOL",
1027 "pp_directive : HASH IF $$30 boolean_literal opt_then EOL",
1029 "pp_directive : HASH ELSEIF $$31 boolean_literal opt_then EOL",
1031 "pp_directive : HASH ELSE $$32 EOL",
1033 "pp_directive : HASH END IF $$33 EOL",
1034 "pp_directive : HASH error EOL",
1036 protected static string [] yyNames = {
1037 "end-of-file",null,null,null,null,null,null,null,null,null,null,null,
1038 null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1039 null,null,null,null,null,null,null,"'!'",null,"'#'","'$'","'%'","'&'",
1040 null,"'('","')'","'*'","'+'","','","'-'","'.'","'/'",null,null,null,
1041 null,null,null,null,null,null,null,"':'",null,"'<'","'='","'>'","'?'",
1042 "'@'",null,null,null,null,null,null,null,null,null,null,null,null,
1043 null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1044 "'['","'\\\\'","']'","'^'",null,null,null,null,null,null,null,null,
1045 null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1046 null,null,null,null,null,null,"'{'",null,"'}'",null,null,null,null,
1047 null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1048 null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1049 null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1050 null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1051 null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1052 null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1053 null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1054 null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1055 null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1056 null,"EOF","NONE","ERROR","ADDHANDLER","ADDRESSOF","ALIAS","AND",
1057 "ANDALSO","ANSI","AS","ASSEMBLY","AUTO","BINARY","BOOLEAN","BYREF",
1058 "BYTE","BYVAL","CALL","CASE","CATCH","CBOOL","CBYTE","CCHAR","CDATE",
1059 "CDEC","CDBL","CHAR","CINT","CLASS","CLNG","COBJ","COMPARE","CONST",
1060 "CSHORT","CSNG","CSTR","CTYPE","DATE","DECIMAL","DECLARE","DEFAULT",
1061 "DELEGATE","DIM","DIRECTCAST","DO","DOUBLE","EACH","ELSE","ELSEIF",
1062 "END","ENDIF","ENUM","EOL","ERASE","EVENT","EXIT","EXPLICIT","FALSE",
1063 "FINALLY","FOR","FRIEND","FUNCTION","GET","GETTYPE","GOSUB","GOTO",
1064 "HANDLES","IF","IMPLEMENTS","IMPORTS","IN","INHERITS","INTEGER",
1065 "INTERFACE","IS","LET","LIB","LIKE","LONG","LOOP","ME","MOD","MODULE",
1066 "MUSTINHERIT","MUSTOVERRIDE","MYBASE","MYCLASS","NAMESPACE","NEW",
1067 "NEXT","NOT","NOTHING","NOTINHERITABLE","NOTOVERRIDABLE","OBJECT",
1068 "OFF","ON","OPTION","OPTIONAL","OR","ORELSE","OVERLOADS",
1069 "OVERRIDABLE","OVERRIDES","PARAM_ARRAY","PRESERVE","PRIVATE",
1070 "PROPERTY","PROTECTED","PUBLIC","RAISEEVENT","READONLY","REDIM","REM",
1071 "REMOVEHANDLER","RESUME","RETURN","SELECT","SET","SHADOWS","SHARED",
1072 "SHORT","SINGLE","SIZEOF","STATIC","STEP","STOP","STRICT","STRING",
1073 "STRUCTURE","SUB","SYNCLOCK","TEXT","THEN","THROW","TO","TRUE","TRY",
1074 "TYPEOF","UNICODE","UNTIL","VARIANT","WEND","WHEN","WHILE","WITH",
1075 "WITHEVENTS","WRITEONLY","XOR","YIELD","HASH","OPEN_BRACKET",
1076 "CLOSE_BRACKET","OPEN_PARENS","OPEN_BRACE","CLOSE_BRACE",
1077 "CLOSE_PARENS","DOT","COMMA","COLON","PLUS","MINUS","ASSIGN","OP_LT",
1078 "OP_GT","STAR","DIV","OP_EXP","INTERR","OP_IDIV","OP_CONCAT",
1079 "EXCLAMATION","PERCENT","LONGTYPECHAR","AT_SIGN","SINGLETYPECHAR",
1080 "NUMBER_SIGN","DOLAR_SIGN","ATTR_ASSIGN","\":=\"","OP_LE","\"<=\"",
1081 "OP_GE","\">=\"","OP_NE","\"<>\"","OP_XOR","\"xor\"","OP_SHIFT_LEFT",
1082 "\"<<\"","OP_SHIFT_RIGHT","\">>\"","LITERAL_INTEGER",
1083 "\"int literal\"","LITERAL_SINGLE","\"float literal\"",
1084 "LITERAL_DOUBLE","\"double literal\"","LITERAL_DECIMAL",
1085 "\"decimal literal\"","LITERAL_CHARACTER","\"character literal\"",
1086 "LITERAL_STRING","\"string literal\"","LITERAL_DATE",
1087 "\"datetime literal\"","IDENTIFIER","LOWPREC","OP_OR","OP_AND",
1088 "BITWISE_OR","BITWISE_AND","BITWISE_NOT","CARRET","UMINUS","OP_INC",
1089 "OP_DEC","HIGHPREC","label_name",
1092 /** index-checked interface to yyNames[].
1093 @param token single character or %token value.
1094 @return token name or [illegal] or [unknown].
1096 public static string yyname (int token) {
1097 if ((token < 0) || (token > yyNames.Length)) return "[illegal]";
1099 if ((name = yyNames[token]) != null) return name;
1103 /** computes list of expected tokens on error by tracing the tables.
1104 @param state for which to compute the list.
1105 @return list of token names.
1107 protected string[] yyExpecting (int state) {
1108 int token, n, len = 0;
1109 bool[] ok = new bool[yyNames.Length];
1111 if ((n = yySindex[state]) != 0)
1112 for (token = n < 0 ? -n : 0;
1113 (token < yyNames.Length) && (n+token < yyTable.Length); ++ token)
1114 if (yyCheck[n+token] == token && !ok[token] && yyNames[token] != null) {
1118 if ((n = yyRindex[state]) != 0)
1119 for (token = n < 0 ? -n : 0;
1120 (token < yyNames.Length) && (n+token < yyTable.Length); ++ token)
1121 if (yyCheck[n+token] == token && !ok[token] && yyNames[token] != null) {
1126 string [] result = new string[len];
1127 for (n = token = 0; n < len; ++ token)
1128 if (ok[token]) result[n++] = yyNames[token];
1132 /** the generated parser, with debugging messages.
1133 Maintains a state and a value stack, currently with fixed maximum size.
1134 @param yyLex scanner.
1135 @param yydebug debug message writer implementing yyDebug, or null.
1136 @return result of the last reduction, if any.
1137 @throws yyException on irrecoverable parse error.
1139 internal Object yyparse (yyParser.yyInput yyLex, Object yyd)
1141 this.debug = (yydebug.yyDebug)yyd;
1142 return yyparse(yyLex);
1145 /** initial size and increment of the state/value stack [default 256].
1146 This is not final so that it can be overwritten outside of invocations
1149 protected int yyMax;
1151 /** executed at the beginning of a reduce action.
1152 Used as $$ = yyDefault($1), prior to the user-specified action, if any.
1153 Can be overwritten to provide deep copy, etc.
1154 @param first value for $1, or null.
1157 protected Object yyDefault (Object first) {
1161 /** the generated parser.
1162 Maintains a state and a value stack, currently with fixed maximum size.
1163 @param yyLex scanner.
1164 @return result of the last reduction, if any.
1165 @throws yyException on irrecoverable parse error.
1167 internal Object yyparse (yyParser.yyInput yyLex)
1169 if (yyMax <= 0) yyMax = 256; // initial size
1170 int yyState = 0; // state stack ptr
1171 int [] yyStates = new int[yyMax]; // state stack
1172 Object yyVal = null; // value stack ptr
1173 Object [] yyVals = new Object[yyMax]; // value stack
1174 int yyToken = -1; // current input
1175 int yyErrorFlag = 0; // #tks to shift
1183 if (yyTop >= yyStates.Length) { // dynamically increase
1184 int[] i = new int[yyStates.Length+yyMax];
1185 yyStates.CopyTo (i, 0);
1187 Object[] o = new Object[yyVals.Length+yyMax];
1188 yyVals.CopyTo (o, 0);
1191 yyStates[yyTop] = yyState;
1192 yyVals[yyTop] = yyVal;
1193 if (debug != null) debug.push(yyState, yyVal);
1195 yyDiscarded: for (;;) { // discarding a token does not change stack
1197 if ((yyN = yyDefRed[yyState]) == 0) { // else [default] reduce (yyN)
1199 yyToken = yyLex.advance() ? yyLex.token() : 0;
1201 debug.lex(yyState, yyToken, yyname(yyToken), yyLex.value());
1203 if ((yyN = yySindex[yyState]) != 0 && ((yyN += yyToken) >= 0)
1204 && (yyN < yyTable.Length) && (yyCheck[yyN] == yyToken)) {
1206 debug.shift(yyState, yyTable[yyN], yyErrorFlag-1);
1207 yyState = yyTable[yyN]; // shift to yyN
1208 yyVal = yyLex.value();
1210 if (yyErrorFlag > 0) -- yyErrorFlag;
1213 if ((yyN = yyRindex[yyState]) != 0 && (yyN += yyToken) >= 0
1214 && yyN < yyTable.Length && yyCheck[yyN] == yyToken)
1215 yyN = yyTable[yyN]; // reduce (yyN)
1217 switch (yyErrorFlag) {
1220 yyerror(String.Format ("syntax error, got token `{0}'", yyname (yyToken)), yyExpecting(yyState));
1221 if (debug != null) debug.error("syntax error");
1226 if ((yyN = yySindex[yyStates[yyTop]]) != 0
1227 && (yyN += Token.yyErrorCode) >= 0 && yyN < yyTable.Length
1228 && yyCheck[yyN] == Token.yyErrorCode) {
1230 debug.shift(yyStates[yyTop], yyTable[yyN], 3);
1231 yyState = yyTable[yyN];
1232 yyVal = yyLex.value();
1235 if (debug != null) debug.pop(yyStates[yyTop]);
1236 } while (-- yyTop >= 0);
1237 if (debug != null) debug.reject();
1238 throw new yyParser.yyException("irrecoverable syntax error");
1242 if (debug != null) debug.reject();
1243 throw new yyParser.yyException("irrecoverable syntax error at end-of-file");
1246 debug.discard(yyState, yyToken, yyname(yyToken),
1249 goto yyDiscarded; // leave stack alone
1252 int yyV = yyTop + 1-yyLen[yyN];
1254 debug.reduce(yyState, yyStates[yyV-1], yyN, yyRule[yyN], yyLen[yyN]);
1255 yyVal = yyDefault(yyV > yyTop ? null : yyVals[yyV]);
1258 #line 753 "mb-parser.jay"
1260 yyVal=yyVals[-1+yyTop];
1264 #line 761 "mb-parser.jay"
1270 #line 784 "mb-parser.jay"
1272 yyVal = (object)true;
1276 #line 788 "mb-parser.jay"
1278 yyVal = (object)true;
1282 #line 792 "mb-parser.jay"
1284 yyVal = (object)false;
1288 #line 799 "mb-parser.jay"
1290 yyVal = (object)true;
1294 #line 803 "mb-parser.jay"
1296 yyVal = (object)false;
1300 #line 810 "mb-parser.jay"
1302 /* if (!UseExtendedSyntax)*/
1303 /* OptionExplicit = (bool)$3;*/
1305 /* Report.Warning (*/
1306 /* 9999, lexer.Location, */
1307 /* "In MonoBASIC extended syntax explicit declaration is always required. So OPTION EXPLICIT is deprecated");*/
1311 #line 823 "mb-parser.jay"
1313 /* if (!UseExtendedSyntax)*/
1314 /* OptionStrict = (bool)$3;*/
1316 /* Report.Warning (*/
1317 /* 9999, lexer.Location, */
1318 /* "In MonoBASIC extended syntax strict assignability is always required. So OPTION STRICT is deprecated");*/
1322 #line 835 "mb-parser.jay"
1324 /* OptionCompareBinary = (bool)$3;*/
1328 #line 852 "mb-parser.jay"
1330 /* FIXME: Need to check declaration qualifiers for multi-file compilation*/
1331 /* FIXME: Qualifiers cannot be applied to namespaces*/
1332 allow_global_attribs = false;
1336 #line 858 "mb-parser.jay"
1338 current_namespace.DeclarationFound = true;
1342 #line 862 "mb-parser.jay"
1344 /* FIXME: Need to check declaration qualifiers for multi-file compilation*/
1345 allow_global_attribs = false;
1349 #line 867 "mb-parser.jay"
1354 if (yyVals[0+yyTop] is Class){
1355 Class c = (Class) yyVals[0+yyTop];
1356 mod_flags = c.ModFlags;
1358 } else if (yyVals[0+yyTop] is Struct){
1359 Struct s = (Struct) yyVals[0+yyTop];
1360 mod_flags = s.ModFlags;
1365 if ((mod_flags & (Modifiers.PRIVATE|Modifiers.PROTECTED)) != 0){
1367 1527, lexer.Location,
1368 "Namespace elements cant be explicitly " +
1369 "declared private or protected in `" + name + "'");
1371 current_namespace.DeclarationFound = true;
1375 #line 902 "mb-parser.jay"
1376 { yyVal = TypeManager.system_int32_expr; }
1379 #line 903 "mb-parser.jay"
1380 { yyVal = TypeManager.system_int64_expr; }
1383 #line 904 "mb-parser.jay"
1384 { yyVal = TypeManager.system_decimal_expr; }
1387 #line 905 "mb-parser.jay"
1388 { yyVal = TypeManager.system_single_expr; }
1391 #line 906 "mb-parser.jay"
1392 { yyVal = TypeManager.system_double_expr; }
1395 #line 907 "mb-parser.jay"
1396 { yyVal = TypeManager.system_string_expr; }
1399 #line 911 "mb-parser.jay"
1403 #line 912 "mb-parser.jay"
1404 { yyVal = yyVals[0+yyTop]; }
1407 #line 918 "mb-parser.jay"
1409 yyVal = new MemberName ((string) yyVals[0+yyTop]);
1413 #line 922 "mb-parser.jay"
1415 yyVal = new MemberName ((MemberName) yyVals[-2+yyTop], (string) yyVals[0+yyTop], null);
1419 #line 948 "mb-parser.jay"
1421 string name = ((MemberName) yyVals[0+yyTop]).GetName ();
1422 current_namespace.Using (name, lexer.Location);
1426 #line 953 "mb-parser.jay"
1428 current_namespace.UsingAlias ((string) yyVals[-2+yyTop], (MemberName) yyVals[0+yyTop], lexer.Location);
1432 #line 960 "mb-parser.jay"
1433 { yyVal = Parameters.EmptyReadOnlyParameters; }
1436 #line 961 "mb-parser.jay"
1437 { yyVal = Parameters.EmptyReadOnlyParameters; }
1440 #line 962 "mb-parser.jay"
1441 { yyVal = yyVals[-1+yyTop]; }
1444 #line 967 "mb-parser.jay"
1446 current_attributes = null;
1450 #line 971 "mb-parser.jay"
1452 yyVal = yyVals[0+yyTop];
1453 local_attrib_section_added = false;
1454 current_attributes = (Attributes) yyVals[0+yyTop];
1458 #line 980 "mb-parser.jay"
1460 yyVal = yyVals[0+yyTop];
1461 if (yyVals[0+yyTop] == null) {
1462 expecting_local_attribs = false;
1463 expecting_global_attribs = false;
1467 if (expecting_local_attribs) {
1468 local_attrib_section_added = true;
1469 allow_global_attribs = false;
1471 yyVal = new Attributes ((ArrayList) yyVals[0+yyTop]);
1474 if (expecting_global_attribs) {
1476 CodeGen.AddGlobalAttributes ((ArrayList) yyVals[0+yyTop]);
1479 expecting_local_attribs = false;
1480 expecting_global_attribs = false;
1484 #line 1004 "mb-parser.jay"
1486 yyVal = lexer.Location;
1490 #line 1008 "mb-parser.jay"
1492 yyVal = yyVals[-2+yyTop];
1493 if (yyVals[0+yyTop] != null) {
1494 ArrayList attrs = (ArrayList) yyVals[0+yyTop];
1496 if (expecting_local_attribs) {
1497 if (local_attrib_section_added) {
1498 expecting_local_attribs = false;
1499 expecting_global_attribs = false;
1500 Report.Error (30205, (Location) yyVals[-1+yyTop], "Multiple attribute sections may not be used; Coalesce multiple attribute sections in to a single attribute section");
1504 if (yyVals[-2+yyTop] == null)
1505 yyVal = new Attributes (attrs);
1507 ((Attributes) yyVals[-2+yyTop]).AddAttributes (attrs);
1509 local_attrib_section_added = true;
1510 allow_global_attribs = false;
1513 if (expecting_global_attribs) {
1515 CodeGen.AddGlobalAttributes ((ArrayList) yyVals[0+yyTop]);
1519 expecting_local_attribs = false;
1520 expecting_global_attribs = false;
1524 #line 1043 "mb-parser.jay"
1527 if (yyVals[-2+yyTop] != null) {
1528 if (expecting_global_attribs && !(bool) yyVals[0+yyTop]) {
1529 Report.Error (30205, lexer.Location, "End of statement expected");
1533 if (expecting_local_attribs) {
1534 if ((bool) yyVals[0+yyTop]) {
1535 Report.Error (32035, lexer.Location, "Use a line continuation after the attribute specifier to apply it to the following statement.");
1540 yyVal = yyVals[-2+yyTop];
1545 #line 1064 "mb-parser.jay"
1549 #line 1065 "mb-parser.jay"
1553 #line 1070 "mb-parser.jay"
1555 ArrayList attrs = null;
1556 if (yyVals[0+yyTop] != null) {
1557 attrs = new ArrayList ();
1558 attrs.Add (yyVals[0+yyTop]);
1564 #line 1079 "mb-parser.jay"
1566 ArrayList attrs = null;
1568 if (yyVals[0+yyTop] != null) {
1569 attrs = (yyVals[-2+yyTop] == null) ? new ArrayList () : (ArrayList) yyVals[-2+yyTop];
1570 attrs.Add (yyVals[0+yyTop]);
1577 #line 1093 "mb-parser.jay"
1579 yyVal = lexer.Location;
1583 #line 1097 "mb-parser.jay"
1587 if (expecting_global_attribs)
1588 Report.Error (32015, (Location) yyVals[-1+yyTop], "Expecting Assembly or Module attribute specifiers");
1590 expecting_local_attribs = true;
1591 MemberName mname = (MemberName) yyVals[-2+yyTop];
1592 string name = mname.GetName ();
1594 yyVal = new Attribute (null, name, (ArrayList) yyVals[0+yyTop],
1595 (Location) yyVals[-1+yyTop]);
1600 #line 1112 "mb-parser.jay"
1602 yyVal = lexer.Location;
1606 #line 1117 "mb-parser.jay"
1608 yyVal = lexer.Location;
1612 #line 1121 "mb-parser.jay"
1616 string attribute_target = (string) yyVals[-5+yyTop];
1617 if (attribute_target != "assembly" && attribute_target != "module") {
1618 Report.Error (29999, lexer.Location, "`" + (string)yyVals[-5+yyTop] + "' is an invalid attribute modifier");
1621 if (!allow_global_attribs) {
1622 Report.Error (30637, (Location) yyVals[-4+yyTop], "Global attribute statements must precede any declarations in a file");
1626 if (expecting_local_attribs) {
1627 Report.Error (30183, (Location) yyVals[-4+yyTop], "Global attributes cannot be combined with local attributes");
1631 expecting_global_attribs = true;
1633 MemberName mname = (MemberName) yyVals[-2+yyTop];
1634 string aname = mname.GetName ();
1636 yyVal = new Attribute (attribute_target, aname, (ArrayList) yyVals[0+yyTop], (Location) yyVals[-1+yyTop]);
1640 #line 1150 "mb-parser.jay"
1641 { yyVal = "assembly"; }
1644 #line 1151 "mb-parser.jay"
1645 { yyVal = "module"; }
1648 #line 1157 "mb-parser.jay"
1652 #line 1159 "mb-parser.jay"
1654 yyVal = yyVals[-1+yyTop];
1658 #line 1171 "mb-parser.jay"
1660 ArrayList args = new ArrayList (4);
1661 args.Add (yyVals[0+yyTop]);
1667 #line 1178 "mb-parser.jay"
1669 ArrayList args = new ArrayList (4);
1670 args.Add (yyVals[-2+yyTop]);
1671 args.Add (yyVals[0+yyTop]);
1677 #line 1186 "mb-parser.jay"
1679 ArrayList args = new ArrayList (4);
1681 args.Add (yyVals[0+yyTop]);
1687 #line 1197 "mb-parser.jay"
1689 ArrayList args = new ArrayList ();
1690 args.Add (new Argument ((Expression) yyVals[0+yyTop], Argument.AType.Expression));
1696 #line 1204 "mb-parser.jay"
1698 ArrayList args = (ArrayList) yyVals[-2+yyTop];
1699 args.Add (new Argument ((Expression) yyVals[0+yyTop], Argument.AType.Expression));
1705 #line 1214 "mb-parser.jay"
1707 ArrayList args = new ArrayList ();
1708 args.Add (yyVals[0+yyTop]);
1714 #line 1221 "mb-parser.jay"
1716 ArrayList args = (ArrayList) yyVals[-2+yyTop];
1717 args.Add (yyVals[0+yyTop]);
1723 #line 1231 "mb-parser.jay"
1725 yyVal = new DictionaryEntry (
1726 (string) yyVals[-2+yyTop],
1727 new Argument ((Expression) yyVals[0+yyTop], Argument.AType.Expression));
1731 #line 1240 "mb-parser.jay"
1733 if (current_attributes != null) {
1734 Report.Error(1518, Lexer.Location, "Attributes cannot be applied to namespaces."
1735 + " Expected class, delegate, enum, interface, or struct");
1738 MemberName name = (MemberName) yyVals[-1+yyTop];
1740 if ((current_namespace.Parent != null) && (name.Left != null)) {
1741 Report.Error (134, lexer.Location,
1742 "Cannot use qualified namespace names in nested " +
1743 "namespace declarations");
1746 current_namespace = new NamespaceEntry (
1747 current_namespace, file, name.GetName (), lexer.Location);
1751 #line 1259 "mb-parser.jay"
1753 current_namespace = current_namespace.Parent;
1757 #line 1280 "mb-parser.jay"
1759 if (implicit_modifiers && ((current_modifiers & Modifiers.STATIC) != 0))
1760 current_modifiers = (current_modifiers & ~Modifiers.STATIC);
1762 MemberName name = MakeName (new MemberName ((string) yyVals[-1+yyTop]));
1763 int mod_flags = current_modifiers;
1766 current_class = new Class (current_namespace, current_container, name,
1767 mod_flags, (Attributes) current_attributes, lexer.Location);
1770 current_container = current_class;
1771 RootContext.Tree.RecordDecl (name.GetName (true), current_class);
1775 #line 1297 "mb-parser.jay"
1777 ArrayList bases = (ArrayList) yyVals[-1+yyTop];
1778 ArrayList ifaces = (ArrayList) yyVals[0+yyTop];
1780 if (ifaces != null){
1782 bases.AddRange(ifaces);
1787 if (bases != null) {
1788 if (current_class.Name == "System.Object") {
1789 Report.Error (537, current_class.Location,
1790 "The class System.Object cannot have a base " +
1791 "class or implement an interface.");
1793 current_class.Bases = (ArrayList) bases;
1796 current_class.Register ();
1800 #line 1321 "mb-parser.jay"
1802 yyVal = current_class;
1804 current_container = current_container.Parent;
1805 current_class = current_container;
1809 #line 1330 "mb-parser.jay"
1813 #line 1331 "mb-parser.jay"
1814 { yyVal = yyVals[-1+yyTop]; }
1817 #line 1335 "mb-parser.jay"
1821 #line 1336 "mb-parser.jay"
1822 { yyVal = yyVals[-1+yyTop]; }
1825 #line 1341 "mb-parser.jay"
1828 current_modifiers = 0;
1832 #line 1346 "mb-parser.jay"
1834 yyVal = yyVals[0+yyTop];
1835 current_modifiers = (int) yyVals[0+yyTop];
1839 #line 1355 "mb-parser.jay"
1841 int m1 = (int) yyVals[-1+yyTop];
1842 int m2 = (int) yyVals[0+yyTop];
1844 if ((m1 & m2) != 0) {
1845 Location l = lexer.Location;
1846 Report.Error (1004, l, "Duplicate modifier: `" + Modifiers.Name (m2) + "'");
1848 yyVal = (int) (m1 | m2);
1852 #line 1368 "mb-parser.jay"
1853 { yyVal = Modifiers.PUBLIC; }
1856 #line 1369 "mb-parser.jay"
1857 { yyVal = Modifiers.PROTECTED; }
1860 #line 1370 "mb-parser.jay"
1861 { yyVal = Modifiers.PRIVATE; }
1864 #line 1371 "mb-parser.jay"
1865 { yyVal = Modifiers.STATIC; }
1868 #line 1372 "mb-parser.jay"
1869 { yyVal = Modifiers.INTERNAL; }
1872 #line 1373 "mb-parser.jay"
1873 { yyVal = Modifiers.SEALED; }
1876 #line 1374 "mb-parser.jay"
1877 { yyVal = Modifiers.VIRTUAL; }
1880 #line 1375 "mb-parser.jay"
1881 { yyVal = Modifiers.NONVIRTUAL; }
1884 #line 1376 "mb-parser.jay"
1885 { yyVal = Modifiers.OVERRIDE; }
1888 #line 1377 "mb-parser.jay"
1889 { yyVal = Modifiers.NEW; }
1892 #line 1378 "mb-parser.jay"
1893 { yyVal = Modifiers.SHADOWS; }
1896 #line 1379 "mb-parser.jay"
1897 { yyVal = Modifiers.ABSTRACT; }
1900 #line 1380 "mb-parser.jay"
1901 { yyVal = Modifiers.READONLY; }
1904 #line 1381 "mb-parser.jay"
1905 { yyVal = Modifiers.DEFAULT; }
1908 #line 1382 "mb-parser.jay"
1909 { yyVal = Modifiers.WRITEONLY; }
1912 #line 1387 "mb-parser.jay"
1914 MemberName name = MakeName(new MemberName ((string) yyVals[-1+yyTop]));
1915 current_class = new VBModule (current_namespace, current_container, name,
1916 current_modifiers, current_attributes, lexer.Location);
1918 current_container = current_class;
1919 RootContext.Tree.RecordDecl(name.GetName (true), current_class);
1921 current_class.Register ();
1925 #line 1399 "mb-parser.jay"
1927 yyVal = current_class;
1929 /* TypeManager.AddStandardModule (current_class);*/
1931 current_container = current_container.Parent;
1932 current_class = current_container;
1936 #line 1422 "mb-parser.jay"
1938 current_modifiers = ((int)yyVals[0+yyTop]) | Modifiers.STATIC;
1939 bool explicit_static = (((int) yyVals[0+yyTop] & Modifiers.STATIC) > 0);
1940 implicit_modifiers = (!explicit_static);
1944 #line 1429 "mb-parser.jay"
1946 implicit_modifiers = false;
1947 yyVal = yyVals[-1+yyTop];
1951 #line 1449 "mb-parser.jay"
1953 if (implicit_modifiers && ((current_modifiers & Modifiers.STATIC) != 0))
1954 current_modifiers = (current_modifiers & ~Modifiers.STATIC);
1956 int modflags = (int) current_modifiers;
1958 /* Structure members are Public by default */
1959 if ((current_container is Struct) && (modflags == 0))
1960 modflags = Modifiers.PUBLIC;
1962 ArrayList consts = (ArrayList) yyVals[-1+yyTop];
1963 if(consts.Count > 0)
1965 VariableDeclaration.FixupTypes ((ArrayList) yyVals[-1+yyTop]);
1966 VariableDeclaration.FixupArrayTypes ((ArrayList) yyVals[-1+yyTop]);
1968 foreach (VariableDeclaration constant in (ArrayList) yyVals[-1+yyTop]){
1969 Location l = constant.Location;
1970 Const c = new Const (current_class,
1971 (Expression) constant.type,
1972 (String) constant.identifier,
1973 (Expression) constant.expression_or_array_initializer,
1974 modflags, current_attributes, l);
1976 current_container.AddConstant (c);
1982 #line 1493 "mb-parser.jay"
1984 yyVal = yyVals[0+yyTop];
1988 #line 1571 "mb-parser.jay"
1990 MemberName name = new MemberName ((string) yyVals[-1+yyTop]);
1992 if ((current_container is Struct) && (current_modifiers == 0))
1993 current_modifiers = Modifiers.PUBLIC;
1996 GenericMethod generic = null;
1997 Method method = new Method (current_class, generic, TypeManager.system_void_expr,
1998 (int) current_modifiers, false, name,
1999 (Parameters) yyVals[0+yyTop], (Attributes) current_attributes,
2002 current_local_parameters = (Parameters) yyVals[0+yyTop];
2005 iterator_container = (IIteratorContainer) method;
2009 #line 1595 "mb-parser.jay"
2011 Method method = (Method) yyVals[-9+yyTop];
2012 Block b = (Block) yyVals[-3+yyTop];
2013 const int extern_abstract = (Modifiers.EXTERN | Modifiers.ABSTRACT);
2016 if ((method.ModFlags & extern_abstract) == 0){
2018 501, lexer.Location, current_container.MakeName (method.Name) +
2019 "must declare a body because it is not marked abstract or extern");
2022 if ((method.ModFlags & Modifiers.EXTERN) != 0){
2024 179, lexer.Location, current_container.MakeName (method.Name) +
2025 " is declared extern, but has a body");
2029 method.Block = (ToplevelBlock) yyVals[-3+yyTop];
2030 current_container.AddMethod (method);
2032 current_local_parameters = null;
2033 iterator_container = null;
2037 #line 1625 "mb-parser.jay"
2039 MemberName name = new MemberName ((string) yyVals[-3+yyTop]);
2040 Expression rettype = (yyVals[0+yyTop] == null) ? ((yyVals[-2+yyTop] == null) ? TypeManager.system_object_expr : (Expression) yyVals[-2+yyTop] ) : (Expression) yyVals[0+yyTop];
2042 GenericMethod generic = null;
2044 Method method = new Method (current_class, generic, rettype, current_modifiers,
2045 false, name, (Parameters) yyVals[-1+yyTop], current_attributes,
2048 current_local_parameters = (Parameters) yyVals[-1+yyTop];
2051 iterator_container = method;
2055 #line 1643 "mb-parser.jay"
2057 Method method = (Method) yyVals[-3+yyTop];
2059 ArrayList retval = new ArrayList ();
2060 retval.Add (new VariableDeclaration ((string) yyVals[-7+yyTop], method.Type, lexer.Location));
2061 declare_local_variables (method.Type, retval, lexer.Location);
2065 #line 1653 "mb-parser.jay"
2067 Method method = (Method) yyVals[-9+yyTop];
2068 Block b = (Block) yyVals[-3+yyTop];
2069 const int extern_abstract = (Modifiers.EXTERN | Modifiers.ABSTRACT);
2072 if ((method.ModFlags & extern_abstract) == 0){
2074 501, lexer.Location, current_container.MakeName (method.Name) +
2075 "must declare a body because it is not marked abstract or extern");
2078 if ((method.ModFlags & Modifiers.EXTERN) != 0){
2080 179, lexer.Location, current_container.MakeName (method.Name) +
2081 " is declared extern, but has a body");
2085 method.Block = (ToplevelBlock) b;
2086 current_container.AddMethod (method);
2088 current_local_parameters = null;
2089 iterator_container = null;
2093 #line 1683 "mb-parser.jay"
2095 MemberName name = MakeName (new MemberName ((string) yyVals[-2+yyTop]));
2097 if (implicit_modifiers && ((current_modifiers & Modifiers.STATIC) != 0))
2098 current_modifiers = (current_modifiers & ~Modifiers.STATIC);
2100 current_class = new Struct (current_namespace, current_container, name, current_modifiers,
2101 current_attributes, lexer.Location);
2103 current_container = current_class;
2104 RootContext.Tree.RecordDecl (name.GetName (true), current_class);
2106 if (yyVals[0+yyTop] != null)
2107 current_class.Bases = (ArrayList) yyVals[0+yyTop];
2109 current_class.Register ();
2113 #line 1701 "mb-parser.jay"
2115 yyVal = current_class;
2117 current_container = current_container.Parent;
2118 current_class = current_container;
2122 #line 1806 "mb-parser.jay"
2124 VariableDeclaration var = new VariableDeclaration ((string) yyVals[-4+yyTop], (Expression) yyVals[-2+yyTop], lexer.Location);
2126 MemberName name = new MemberName ((string) yyVals[-4+yyTop]);
2128 Event e = new EventField (current_class, (Expression) yyVals[-2+yyTop], current_modifiers, false, name,
2129 var.expression_or_array_initializer, current_attributes,
2132 current_container.AddEvent (e);
2136 #line 1860 "mb-parser.jay"
2138 Location enum_location = lexer.Location;
2140 Expression base_type = TypeManager.system_int32_expr;
2141 if ((Expression) yyVals[-2+yyTop] != null)
2142 base_type = (Expression) yyVals[-2+yyTop];
2144 ArrayList enum_members = (ArrayList) yyVals[0+yyTop];
2145 if (enum_members.Count == 0)
2146 Report.Error (30280, enum_location,
2147 "Enum can not have empty member list");
2150 if (implicit_modifiers && ((current_modifiers & Modifiers.STATIC) != 0))
2151 current_modifiers = (current_modifiers & ~Modifiers.STATIC);
2153 MemberName full_name = MakeName (new MemberName ((string) yyVals[-3+yyTop]));
2154 Enum e = new Enum (current_namespace, current_container, base_type,
2155 (int) current_modifiers, full_name,
2156 (Attributes) current_attributes, enum_location);
2158 foreach (VariableDeclaration ev in (ArrayList) yyVals[0+yyTop]) {
2159 e.AddEnumMember (ev.identifier,
2160 (Expression) ev.expression_or_array_initializer,
2161 ev.Location, ev.OptAttributes, ev.DocComment);
2164 string name = full_name.GetName ();
2165 current_container.AddEnum (e);
2166 RootContext.Tree.RecordDecl (name, e);
2171 #line 1896 "mb-parser.jay"
2172 { yyVal = new ArrayList (4); }
2175 #line 1897 "mb-parser.jay"
2176 { yyVal = yyVals[0+yyTop]; }
2179 #line 1902 "mb-parser.jay"
2181 ArrayList l = new ArrayList ();
2183 l.Add (yyVals[0+yyTop]);
2188 #line 1909 "mb-parser.jay"
2190 ArrayList l = (ArrayList) yyVals[-1+yyTop];
2192 l.Add (yyVals[0+yyTop]);
2198 #line 1920 "mb-parser.jay"
2200 yyVal = new VariableDeclaration ((string) yyVals[-1+yyTop], null, lexer.Location, (Attributes) yyVals[-2+yyTop]);
2204 #line 1924 "mb-parser.jay"
2206 yyVal = lexer.Location;
2210 #line 1928 "mb-parser.jay"
2212 yyVal = new VariableDeclaration ((string) yyVals[-4+yyTop], yyVals[-1+yyTop], lexer.Location, (Attributes) yyVals[-5+yyTop]);
2216 #line 2019 "mb-parser.jay"
2218 get_implicit_value_parameter_type =
2219 (yyVals[-1+yyTop] == null) ? ((yyVals[-3+yyTop] == null) ?
2220 TypeManager.system_object_expr : (Expression) yyVals[-3+yyTop] ) : (Expression) yyVals[-1+yyTop];
2222 current_local_parameters = (Parameters) yyVals[-2+yyTop];
2223 if (current_local_parameters != Parameters.EmptyReadOnlyParameters) {
2224 get_parameters = current_local_parameters.Copy (lexer.Location);
2225 set_parameters = current_local_parameters.Copy (lexer.Location);
2227 Parameter implicit_value_parameter = new Parameter (
2228 get_implicit_value_parameter_type, "Value", Parameter.Modifier.NONE, null);
2230 set_parameters.AppendParameter (implicit_value_parameter);
2234 get_parameters = Parameters.EmptyReadOnlyParameters;
2235 set_parameters = new Parameters (null, null ,lexer.Location);
2237 Parameter implicit_value_parameter = new Parameter (
2238 get_implicit_value_parameter_type, "Value", Parameter.Modifier.NONE, null);
2240 set_parameters.AppendParameter (implicit_value_parameter);
2242 lexer.PropertyParsing = true;
2244 Location loc = lexer.Location;
2245 MemberName name = new MemberName ((string) yyVals[-4+yyTop]);
2247 Accessor get_block = new Accessor (null, 0, null, loc);
2248 Accessor set_block = new Accessor (null, 0, null, loc);
2250 Property prop = new Property (current_class, get_implicit_value_parameter_type,
2251 (int) current_modifiers, true,
2252 name, current_attributes,
2253 get_parameters, get_block,
2254 set_parameters, set_block, lexer.Location);
2256 current_container.AddProperty (prop);
2258 get_implicit_value_parameter_type = null;
2259 set_implicit_value_parameter_type = null;
2260 get_parameters = null;
2261 set_parameters = null;
2262 current_local_parameters = null;
2266 #line 2105 "mb-parser.jay"
2268 MemberName name = new MemberName ((string) yyVals[-1+yyTop]);
2270 current_class = new Interface (current_namespace, current_container,
2271 name, (int) current_modifiers,
2272 (Attributes) current_attributes, lexer.Location);
2274 current_container = current_class;
2275 RootContext.Tree.RecordDecl (name.GetName (true), current_class);
2280 #line 2117 "mb-parser.jay"
2282 current_class.Bases = (ArrayList) yyVals[0+yyTop];
2283 current_class.Register ();
2287 #line 2122 "mb-parser.jay"
2289 yyVal = current_class;
2291 current_container = current_container.Parent;
2292 current_class = current_container;
2296 #line 2132 "mb-parser.jay"
2300 #line 2133 "mb-parser.jay"
2301 { yyVal = yyVals[0+yyTop]; }
2304 #line 2139 "mb-parser.jay"
2306 ArrayList bases = (ArrayList) yyVals[-1+yyTop];
2307 bases.AddRange ((ArrayList) yyVals[0+yyTop]);
2312 #line 2147 "mb-parser.jay"
2313 { yyVal = yyVals[-1+yyTop]; }
2316 #line 2170 "mb-parser.jay"
2318 Method m = (Method) yyVals[0+yyTop];
2320 current_container.AddMethod (m);
2324 #line 2181 "mb-parser.jay"
2326 MemberName name = (MemberName) new MemberName ((string) yyVals[-2+yyTop]);
2328 GenericMethod generic = null;
2330 yyVal = new Method (current_class, generic, TypeManager.system_void_expr,
2331 (int) current_modifiers, true, name, (Parameters) yyVals[-1+yyTop],
2332 (Attributes) current_attributes, lexer.Location);
2336 #line 2192 "mb-parser.jay"
2338 MemberName name = new MemberName ((string) yyVals[-4+yyTop]);
2339 Expression return_type = (yyVals[-1+yyTop] == null) ?
2340 ((yyVals[-3+yyTop] == null) ? TypeManager.system_object_expr : (Expression) yyVals[-3+yyTop] )
2341 : (Expression) yyVals[-1+yyTop];
2343 GenericMethod generic = null;
2344 yyVal = new Method (current_class, generic, return_type, (int) current_modifiers,
2345 true, name, (Parameters) yyVals[-2+yyTop], (Attributes) current_attributes,
2350 #line 2268 "mb-parser.jay"
2352 get_implicit_value_parameter_type =
2353 (yyVals[-2+yyTop] == null) ? ((yyVals[-4+yyTop] == null) ?
2354 TypeManager.system_object_expr : (Expression) yyVals[-4+yyTop] ) : (Expression) yyVals[-2+yyTop];
2355 get_implicit_value_parameter_name = (string) yyVals[-5+yyTop];
2357 current_local_parameters = (Parameters) yyVals[-3+yyTop];
2358 if (current_local_parameters != Parameters.EmptyReadOnlyParameters) {
2359 get_parameters = current_local_parameters.Copy (lexer.Location);
2360 set_parameters = current_local_parameters.Copy (lexer.Location);
2364 get_parameters = Parameters.EmptyReadOnlyParameters;
2365 set_parameters = new Parameters (null, null ,lexer.Location);
2367 lexer.PropertyParsing = true;
2369 yyVal = lexer.Location;
2373 #line 2290 "mb-parser.jay"
2375 lexer.PropertyParsing = false;
2378 Pair pair = (Pair) yyVals[-3+yyTop];
2380 Accessor get_block = (Accessor) pair.First;
2381 Accessor set_block = (Accessor) pair.Second;
2383 Location loc = lexer.Location;
2384 MemberName name = new MemberName ((string) yyVals[-10+yyTop]);
2386 /* FIXME: Implements Clause needs to be taken care of.*/
2388 if ((current_container is Struct) && (current_modifiers == 0))
2389 current_modifiers = Modifiers.PUBLIC;
2392 prop = new Property (current_class, get_implicit_value_parameter_type,
2393 (int) current_modifiers, false,
2394 name, (Attributes) current_attributes,
2395 get_parameters, get_block,
2396 set_parameters, set_block, lexer.Location);
2398 current_container.AddProperty (prop);
2399 get_implicit_value_parameter_type = null;
2400 set_implicit_value_parameter_type = null;
2401 get_parameters = null;
2402 set_parameters = null;
2403 current_local_parameters = null;
2407 #line 2325 "mb-parser.jay"
2409 yyVal = Parameters.EmptyReadOnlyParameters;
2413 #line 2329 "mb-parser.jay"
2415 yyVal = yyVals[-1+yyTop];
2419 #line 2336 "mb-parser.jay"
2425 #line 2340 "mb-parser.jay"
2427 yyVal = yyVals[0+yyTop];
2431 #line 2347 "mb-parser.jay"
2433 MemberName mname = (MemberName) yyVals[0+yyTop];
2434 ArrayList impl_list = new ArrayList ();
2435 impl_list.Add (mname.GetTypeExpression (lexer.Location));
2440 #line 2354 "mb-parser.jay"
2442 MemberName mname = (MemberName) yyVals[0+yyTop];
2443 ArrayList impl_list = (ArrayList) yyVals[-2+yyTop];
2444 impl_list.Add (mname.GetTypeExpression (lexer.Location));
2449 #line 2364 "mb-parser.jay"
2451 yyVal = new Pair (yyVals[-1+yyTop], yyVals[0+yyTop]);
2455 #line 2368 "mb-parser.jay"
2457 yyVal = new Pair (yyVals[0+yyTop], yyVals[-1+yyTop]);
2461 #line 2374 "mb-parser.jay"
2465 #line 2379 "mb-parser.jay"
2469 #line 2385 "mb-parser.jay"
2471 if ((current_modifiers & Modifiers.WRITEONLY) != 0)
2472 Report.Error (30023, "'WriteOnly' properties cannot have a 'Get' accessor");
2474 current_local_parameters = get_parameters;
2476 lexer.PropertyParsing = false;
2481 #line 2395 "mb-parser.jay"
2483 ArrayList retval = new ArrayList ();
2484 retval.Add (new VariableDeclaration (get_implicit_value_parameter_name, get_implicit_value_parameter_type, lexer.Location));
2485 declare_local_variables (get_implicit_value_parameter_type, retval, lexer.Location);
2489 #line 2403 "mb-parser.jay"
2491 yyVal = new Accessor ((ToplevelBlock) yyVals[-3+yyTop], (int) current_modifiers,
2492 (Attributes) yyVals[-10+yyTop], lexer.Location);
2494 current_local_parameters = null;
2495 lexer.PropertyParsing = true;
2499 #line 2416 "mb-parser.jay"
2501 if ((current_modifiers & Modifiers.READONLY) != 0)
2502 Report.Error (30022, "'ReadOnly' properties cannot have a 'Set' accessor");
2504 Parameter implicit_value_parameter = new Parameter (
2505 set_implicit_value_parameter_type,
2506 set_implicit_value_parameter_name,
2507 Parameter.Modifier.NONE, null);
2509 set_parameters.AppendParameter (implicit_value_parameter);
2510 current_local_parameters = set_parameters;
2512 lexer.PropertyParsing = false;
2516 #line 2434 "mb-parser.jay"
2518 yyVal = new Accessor ((ToplevelBlock) yyVals[-3+yyTop], (int) current_modifiers,
2519 (Attributes) yyVals[-10+yyTop], lexer.Location);
2520 current_local_parameters = null;
2521 lexer.PropertyParsing = true;
2525 #line 2444 "mb-parser.jay"
2527 set_implicit_value_parameter_type = (Expression) get_implicit_value_parameter_type; /* TypeManager.system_object_expr;*/
2528 set_implicit_value_parameter_name = "Value";
2532 #line 2449 "mb-parser.jay"
2534 set_implicit_value_parameter_type = (Expression) get_implicit_value_parameter_type;
2535 set_implicit_value_parameter_name = "Value";
2539 #line 2454 "mb-parser.jay"
2541 Parameter.Modifier pm = (Parameter.Modifier)yyVals[-3+yyTop];
2542 if ((pm | Parameter.Modifier.VAL) != 0)
2543 Report.Error (31065,
2545 "Set cannot have a paremeter modifier other than 'ByVal'");
2547 set_implicit_value_parameter_type = (Expression) yyVals[-1+yyTop];
2549 if (set_implicit_value_parameter_type.ToString () != get_implicit_value_parameter_type.ToString ())
2550 Report.Error (31064,
2552 "Set value parameter type can not be different from property type");
2554 if (yyVals[-3+yyTop] != null)
2555 set_implicit_value_parameter_name = (string) yyVals[-2+yyTop];
2557 set_implicit_value_parameter_name = "Value";
2561 #line 2478 "mb-parser.jay"
2563 int mod = (int) current_modifiers;
2565 VariableDeclaration.FixupTypes ((ArrayList) yyVals[-1+yyTop]);
2566 VariableDeclaration.FixupArrayTypes ((ArrayList) yyVals[-1+yyTop]);
2568 /* if (current_container is Module)*/
2569 /* mod = mod | Modifiers.STATIC;*/
2571 /* Structure members are Public by default */
2572 if ((current_container is Struct) && (mod == 0))
2573 mod = Modifiers.PUBLIC;
2575 if ((mod & Modifiers.Accessibility) == 0)
2576 mod |= Modifiers.PRIVATE;
2578 foreach (VariableDeclaration var in (ArrayList) yyVals[-1+yyTop]){
2579 Location l = var.Location;
2580 Field field = new Field (current_class, var.type, mod,
2581 var.identifier, var.expression_or_array_initializer,
2582 (Attributes) null, l);
2584 current_container.AddField (field);
2589 #line 2555 "mb-parser.jay"
2591 Location l = lexer.Location;
2592 MemberName name = MakeName (new MemberName ((string) yyVals[-4+yyTop]));
2594 if (implicit_modifiers && ((current_modifiers & Modifiers.STATIC) != 0))
2595 current_modifiers = (current_modifiers & ~Modifiers.STATIC);
2597 Delegate del = new Delegate (current_namespace, current_container, TypeManager.system_void_expr,
2598 current_modifiers, name, (Parameters) yyVals[-2+yyTop], current_attributes, l);
2600 current_container.AddDelegate (del);
2601 RootContext.Tree.RecordDecl (name.GetName (true), del);
2605 #line 2573 "mb-parser.jay"
2607 Location l = lexer.Location;
2608 MemberName name = MakeName (new MemberName ((string) yyVals[-5+yyTop]));
2610 if (implicit_modifiers && ((current_modifiers & Modifiers.STATIC) != 0))
2611 current_modifiers = (current_modifiers & ~Modifiers.STATIC);
2613 Expression rettype = (yyVals[-1+yyTop] == null) ? TypeManager.system_object_expr : (Expression) yyVals[-1+yyTop];
2614 Delegate del = new Delegate (current_namespace, current_container, rettype,
2615 current_modifiers, name, (Parameters) yyVals[-3+yyTop], current_attributes, l);
2617 current_container.AddDelegate (del);
2618 RootContext.Tree.RecordDecl (name.GetName (true), del);
2622 #line 2592 "mb-parser.jay"
2626 #line 2619 "mb-parser.jay"
2628 current_local_parameters = (Parameters) yyVals[-1+yyTop];
2629 yyVal = new Constructor (current_class, current_container.Basename, 0, (Parameters) yyVals[-1+yyTop],
2630 (ConstructorInitializer) null, lexer.Location);
2634 #line 2627 "mb-parser.jay"
2636 Constructor c = (Constructor) yyVals[-3+yyTop];
2637 c.Block = (ToplevelBlock) yyVals[0+yyTop];
2638 c.ModFlags = (int) current_modifiers;
2639 c.OptAttributes = current_attributes;
2641 /* FIXME: Some more error checking from mcs needs to be merged here ???*/
2643 c.Initializer = CheckConstructorInitializer (ref c.Block.statements);
2645 current_container.AddConstructor(c);
2646 current_local_parameters = null;
2650 #line 2645 "mb-parser.jay"
2652 yyVal = Parameters.EmptyReadOnlyParameters;
2656 #line 2649 "mb-parser.jay"
2658 yyVal = yyVals[0+yyTop];
2662 #line 2656 "mb-parser.jay"
2664 ArrayList pars_list = (ArrayList) yyVals[0+yyTop];
2665 Parameter [] pars = null;
2666 Parameter array_parameter = null;
2667 int non_array_count = pars_list.Count;
2668 if (pars_list.Count > 0 && (((Parameter) pars_list [pars_list.Count - 1]).ModFlags & Parameter.Modifier.PARAMS) != 0) {
2669 array_parameter = (Parameter) pars_list [pars_list.Count - 1];
2670 non_array_count = pars_list.Count - 1;
2672 foreach (Parameter par in pars_list)
2673 if (par != array_parameter && (par.ModFlags & Parameter.Modifier.PARAMS) != 0) {
2674 Report.Error (30192, lexer.Location, "ParamArray parameters must be last");
2675 non_array_count = 0;
2676 array_parameter = null;
2679 if (non_array_count > 0) {
2680 pars = new Parameter [non_array_count];
2681 pars_list.CopyTo (0, pars, 0, non_array_count);
2683 yyVal = new Parameters (pars, array_parameter, lexer.Location);
2687 #line 2682 "mb-parser.jay"
2689 ArrayList pars = new ArrayList ();
2691 pars.Add (yyVals[0+yyTop]);
2696 #line 2689 "mb-parser.jay"
2698 ArrayList pars = (ArrayList) yyVals[-2+yyTop];
2700 pars.Add (yyVals[0+yyTop]);
2701 yyVal = yyVals[-2+yyTop];
2705 #line 2701 "mb-parser.jay"
2707 Parameter.Modifier pm = (Parameter.Modifier)yyVals[-5+yyTop];
2708 bool opt_parm = ((pm & Parameter.Modifier.OPTIONAL) != 0);
2711 if (opt_parm && (yyVals[0+yyTop] == null))
2712 Report.Error (30812, lexer.Location, "Optional parameters must have a default value");
2714 if (!opt_parm && (yyVals[0+yyTop] != null))
2715 Report.Error (32024, lexer.Location, "Non-Optional parameters should not have a default value");
2717 if ((pm & Parameter.Modifier.PARAMS) != 0) {
2718 if ((pm & ~Parameter.Modifier.PARAMS) != 0)
2719 Report.Error (30667, lexer.Location, "ParamArray parameters must be ByVal");
2722 if ((pm & Parameter.Modifier.REF) !=0)
2723 pm |= Parameter.Modifier.ISBYREF;
2725 if (yyVals[-3+yyTop] != null && yyVals[-1+yyTop] != null && yyVals[-3+yyTop] != yyVals[-1+yyTop])
2726 Report.Error (30302, lexer.Location, "Type character conflicts with declared type."); /* TODO: Correct error number and message text*/
2728 ptype = (Expression)((yyVals[-1+yyTop] == null) ? ((yyVals[-3+yyTop] == null) ? TypeManager.system_object_expr : yyVals[-3+yyTop]) : yyVals[-1+yyTop]);
2729 if (yyVals[-2+yyTop] != null) {
2730 string t = ptype.ToString ();
2731 if (t.IndexOf('[') >= 0)
2732 Report.Error (31087, lexer.Location, "Array types specified in too many places");
2734 ptype = DecomposeQI (t + VariableDeclaration.BuildRanks ((ArrayList) yyVals[-2+yyTop], true, lexer.Location), lexer.Location);
2736 if ((pm & Parameter.Modifier.PARAMS) != 0 && ptype.ToString ().IndexOf('[') < 0)
2737 Report.Error (30050, lexer.Location, "ParamArray parameters must be an array type");
2738 yyVal = new Parameter (ptype, (string) yyVals[-4+yyTop], pm,
2739 (Attributes) yyVals[-6+yyTop], (Expression) yyVals[0+yyTop], opt_parm);
2743 #line 2739 "mb-parser.jay"
2744 { yyVal = Parameter.Modifier.VAL; }
2747 #line 2740 "mb-parser.jay"
2748 { yyVal = yyVals[0+yyTop]; }
2751 #line 2744 "mb-parser.jay"
2752 { yyVal = (Parameter.Modifier)yyVals[-1+yyTop] | (Parameter.Modifier)yyVals[0+yyTop]; }
2755 #line 2745 "mb-parser.jay"
2756 { yyVal = yyVals[0+yyTop]; }
2759 #line 2749 "mb-parser.jay"
2760 { yyVal = Parameter.Modifier.REF | Parameter.Modifier.ISBYREF; }
2763 #line 2750 "mb-parser.jay"
2764 { yyVal = Parameter.Modifier.VAL; }
2767 #line 2751 "mb-parser.jay"
2768 { yyVal = Parameter.Modifier.OPTIONAL; }
2771 #line 2752 "mb-parser.jay"
2772 { yyVal = Parameter.Modifier.PARAMS; }
2775 #line 2768 "mb-parser.jay"
2776 { yyVal = yyVals[0+yyTop]; }
2779 #line 2773 "mb-parser.jay"
2781 if (current_block == null){
2782 current_block = new ToplevelBlock ((ToplevelBlock) top_current_block, current_local_parameters, lexer.Location);
2783 top_current_block = current_block;
2785 current_block = new Block (current_block, current_local_parameters,
2786 lexer.Location, Location.Null);
2791 #line 2787 "mb-parser.jay"
2793 while (current_block.Implicit)
2794 current_block = current_block.Parent;
2795 yyVal = current_block;
2796 current_block.SetEndLocation (lexer.Location);
2797 current_block = current_block.Parent;
2798 if (current_block == null)
2799 top_current_block = null;
2803 #line 2800 "mb-parser.jay"
2805 if (yyVals[0+yyTop] != null && (Block) yyVals[0+yyTop] != current_block){
2806 current_block.AddStatement ((Statement) yyVals[0+yyTop]);
2807 current_block = (Block) yyVals[0+yyTop];
2812 #line 2807 "mb-parser.jay"
2814 Statement s = (Statement) yyVals[0+yyTop];
2816 current_block.AddStatement ((Statement) yyVals[0+yyTop]);
2820 #line 2814 "mb-parser.jay"
2822 Location loc = lexer.Location;
2824 ExpressionStatement expr = new CompoundAssign (Binary.Operator.Addition,
2825 (Expression) yyVals[-3+yyTop], (Expression) yyVals[0+yyTop], loc);
2827 Statement stmt = new StatementExpression (expr, loc);
2829 current_block.AddStatement (stmt);
2834 #line 2827 "mb-parser.jay"
2836 Location loc = lexer.Location;
2838 ExpressionStatement expr = new CompoundAssign (Binary.Operator.Subtraction,
2839 (Expression) yyVals[-3+yyTop], (Expression) yyVals[0+yyTop], loc);
2841 Statement stmt = new StatementExpression (expr, loc);
2843 current_block.AddStatement (stmt);
2848 #line 2839 "mb-parser.jay"
2850 Location loc = lexer.Location;
2851 MemberName mname = new MemberName ((string) yyVals[-1+yyTop]);
2852 Expression expr = mname.GetTypeExpression (loc);
2854 Invocation inv_expr = new Invocation (expr, (ArrayList) yyVals[0+yyTop], loc);
2855 Statement stmt = new StatementExpression (inv_expr, loc);
2856 current_block.AddStatement (stmt);
2860 #line 2860 "mb-parser.jay"
2864 #line 2862 "mb-parser.jay"
2866 yyVal = yyVals[-1+yyTop];
2870 #line 3027 "mb-parser.jay"
2872 yyVal = new Goto (current_block, (string) yyVals[0+yyTop], lexer.Location);
2876 #line 3034 "mb-parser.jay"
2878 yyVal = new Throw ((Expression) yyVals[0+yyTop], lexer.Location);
2882 #line 3059 "mb-parser.jay"
2884 yyVal = new Return ((Expression) yyVals[0+yyTop], lexer.Location);
2888 #line 3185 "mb-parser.jay"
2890 yyVal = new Lock ((Expression) yyVals[-4+yyTop], (Statement) yyVals[-2+yyTop], lexer.Location);
2894 #line 3198 "mb-parser.jay"
2898 ArrayList c = (ArrayList)yyVals[-2+yyTop];
2899 for (int i = 0; i < c.Count; ++i) {
2900 Catch cc = (Catch) c [i];
2902 if (i != c.Count - 1)
2903 Report.Error (1017, cc.loc, "Empty catch block must be the last in a series of catch blocks");
2910 /* Now s contains the list of specific catch clauses*/
2911 /* and g contains the general one.*/
2913 yyVal = new Try ((Block) yyVals[-3+yyTop], c, g, null, ((Block) yyVals[-3+yyTop]).loc);
2917 #line 3227 "mb-parser.jay"
2920 ArrayList s = new ArrayList (4);
2921 ArrayList catch_list = (ArrayList) yyVals[-5+yyTop];
2923 if (catch_list != null){
2924 foreach (Catch cc in catch_list) {
2932 yyVal = new Try ((Block) yyVals[-6+yyTop], s, g, (Block) yyVals[-2+yyTop], ((Block) yyVals[-6+yyTop]).loc);
2936 #line 3246 "mb-parser.jay"
2940 #line 3252 "mb-parser.jay"
2942 ArrayList l = new ArrayList (4);
2944 l.Add (yyVals[0+yyTop]);
2949 #line 3259 "mb-parser.jay"
2951 ArrayList l = (ArrayList) yyVals[-1+yyTop];
2953 l.Add (yyVals[0+yyTop]);
2958 #line 3268 "mb-parser.jay"
2962 #line 3281 "mb-parser.jay"
2964 /* FIXME: opt_when needs to be hnadled*/
2965 Expression type = null;
2968 if (yyVals[-1+yyTop] != null) {
2969 DictionaryEntry cc = (DictionaryEntry) yyVals[-1+yyTop];
2970 type = (Expression) cc.Key;
2971 id = (string) cc.Value;
2974 ArrayList one = new ArrayList (4);
2975 Location loc = lexer.Location;
2977 one.Add (new VariableDeclaration (id, type, loc));
2979 yyVals[-2+yyTop] = current_block;
2980 current_block = new Block (current_block);
2981 Block b = declare_local_variables (type, one, loc);
2988 #line 3305 "mb-parser.jay"
2990 Expression type = null;
2993 if (yyVals[-3+yyTop] != null){
2994 DictionaryEntry cc = (DictionaryEntry) yyVals[-3+yyTop];
2995 type = (Expression) cc.Key;
2996 id = (string) cc.Value;
2998 if (yyVals[-4+yyTop] != null){
3000 /* FIXME: I can change this for an assignment.*/
3002 while (current_block != (Block) yyVals[-4+yyTop])
3003 current_block = current_block.Parent;
3008 yyVal = new Catch (type, id , (Block) yyVals[0+yyTop], ((Block) yyVals[0+yyTop]).loc);
3012 #line 3329 "mb-parser.jay"
3016 #line 3335 "mb-parser.jay"
3018 yyVal = new DictionaryEntry (yyVals[0+yyTop], yyVals[-2+yyTop]);
3022 #line 3388 "mb-parser.jay"
3024 oob_stack.Push (lexer.Location);
3028 #line 3396 "mb-parser.jay"
3030 Location l = (Location) oob_stack.Pop ();
3031 yyVal = new While ((Expression) yyVals[-6+yyTop], (Statement) yyVals[-2+yyTop], l);
3035 #line 3471 "mb-parser.jay"
3037 oob_stack.Push (lexer.Location);
3038 Location l = (Location) oob_stack.Pop ();
3040 yyVal = new If ((Expression) yyVals[-5+yyTop], (Statement) yyVals[-2+yyTop], l);
3042 if (RootContext.WarningLevel >= 3){
3043 if (yyVals[-2+yyTop] == EmptyStatement.Value)
3044 Report.Warning (642, lexer.Location, "Possible mistaken empty statement");
3050 #line 3489 "mb-parser.jay"
3052 oob_stack.Push (lexer.Location);
3053 Location l = (Location) oob_stack.Pop ();
3055 yyVal = new If ((Expression) yyVals[-8+yyTop], (Statement) yyVals[-5+yyTop], (Statement) yyVals[-2+yyTop], l);
3059 #line 3499 "mb-parser.jay"
3061 oob_stack.Push (lexer.Location);
3062 Location l = (Location) oob_stack.Pop ();
3064 yyVal = new If ((Expression) yyVals[-4+yyTop], (Statement) yyVals[-1+yyTop], (Statement) yyVals[0+yyTop], l);
3068 #line 3511 "mb-parser.jay"
3070 oob_stack.Push (lexer.Location);
3071 Location l = (Location) oob_stack.Pop ();
3073 yyVal = new If ((Expression) yyVals[-5+yyTop], (Statement) yyVals[-2+yyTop], l);
3075 if (RootContext.WarningLevel >= 3){
3076 if (yyVals[-2+yyTop] == EmptyStatement.Value)
3077 Report.Warning (642, lexer.Location, "Possible mistaken empty statement");
3083 #line 3529 "mb-parser.jay"
3085 oob_stack.Push (lexer.Location);
3086 Location l = (Location) oob_stack.Pop ();
3088 yyVal = new If ((Expression) yyVals[-8+yyTop], (Statement) yyVals[-5+yyTop], (Statement) yyVals[-2+yyTop], l);
3092 #line 3539 "mb-parser.jay"
3094 oob_stack.Push (lexer.Location);
3095 Location l = (Location) oob_stack.Pop ();
3097 yyVal = new If ((Expression) yyVals[-4+yyTop], (Statement) yyVals[-1+yyTop], (Statement) yyVals[0+yyTop], l);
3101 #line 3667 "mb-parser.jay"
3103 ArrayList labels = new ArrayList ();
3105 labels.Add (yyVals[0+yyTop]);
3110 #line 3674 "mb-parser.jay"
3112 ArrayList labels = (ArrayList) (yyVals[-2+yyTop]);
3113 labels.Add (yyVals[-1+yyTop]);
3119 #line 3685 "mb-parser.jay"
3121 yyVal = new SwitchLabel ((Expression) yyVals[0+yyTop], lexer.Location);
3125 #line 3710 "mb-parser.jay"
3127 yyVal = yyVals[0+yyTop];
3131 #line 3717 "mb-parser.jay"
3132 { yyVal = new StatementExpression ((ExpressionStatement) yyVals[0+yyTop], lexer.Location); }
3135 #line 3718 "mb-parser.jay"
3136 { yyVal = new StatementExpression ((ExpressionStatement) yyVals[0+yyTop], lexer.Location); }
3139 #line 3719 "mb-parser.jay"
3140 { yyVal = new StatementExpression ((ExpressionStatement) yyVals[0+yyTop], lexer.Location); }
3143 #line 3724 "mb-parser.jay"
3145 yyVal = new New ((Expression) yyVals[-3+yyTop], (ArrayList) yyVals[-1+yyTop], lexer.Location);
3149 #line 3728 "mb-parser.jay"
3151 yyVal = new New ((Expression) yyVals[0+yyTop], new ArrayList(), lexer.Location);
3155 #line 3775 "mb-parser.jay"
3157 if (yyVals[0+yyTop] != null){
3158 DictionaryEntry de = (DictionaryEntry) yyVals[0+yyTop];
3160 yyVal = declare_local_variables ((Expression) de.Key, (ArrayList) de.Value, lexer.Location);
3165 #line 3783 "mb-parser.jay"
3167 if (yyVals[0+yyTop] != null){
3168 DictionaryEntry de = (DictionaryEntry) yyVals[0+yyTop];
3170 yyVal = declare_local_constant ((Expression) de.Key, (ArrayList) de.Value);
3175 #line 3794 "mb-parser.jay"
3177 yyVal = new DictionaryEntry (DecomposeQI("_local_vars_", lexer.Location), yyVals[0+yyTop]);
3181 #line 3802 "mb-parser.jay"
3183 if (yyVals[0+yyTop] != null)
3184 yyVal = new DictionaryEntry (DecomposeQI("_local_consts_", lexer.Location), yyVals[0+yyTop]);
3190 #line 3812 "mb-parser.jay"
3192 ArrayList decl = new ArrayList ();
3193 if (yyVals[0+yyTop] != null)
3194 decl.Add (yyVals[0+yyTop]);
3200 #line 3820 "mb-parser.jay"
3202 ArrayList decls = (ArrayList) yyVals[-2+yyTop];
3203 if (yyVals[0+yyTop] != null)
3204 decls.Add (yyVals[0+yyTop]);
3206 yyVal = yyVals[-2+yyTop];
3210 #line 3831 "mb-parser.jay"
3212 VarName vname = (VarName) yyVals[-2+yyTop];
3213 string varname = (string) vname.Name;
3214 current_rank_specifiers = (ArrayList) vname.Rank;
3215 object varinit = yyVals[0+yyTop];
3216 ArrayList a_dims = null;
3218 if (varinit == null)
3220 30438, lexer.Location, "Constant should have a value"
3223 if (vname.Type != null && yyVals[-1+yyTop] != null)
3225 30302, lexer.Location,
3226 "Type character cannot be used with explicit type declaration" );
3228 Expression vartype = (yyVals[-1+yyTop] == null) ? ((vname.Type == null) ? TypeManager.system_object_expr : (Expression) vname.Type ) : (Expression) yyVals[-1+yyTop];
3230 if (current_rank_specifiers != null)
3232 Report.Error (30424, lexer.Location, "Constant doesn't support array");
3236 yyVal = new VariableDeclaration (varname, vartype, varinit, lexer.Location, null);
3240 #line 3862 "mb-parser.jay"
3242 ArrayList decl = new ArrayList ();
3243 decl.AddRange ((ArrayList) yyVals[0+yyTop]);
3248 #line 3868 "mb-parser.jay"
3250 ArrayList decls = (ArrayList) yyVals[-2+yyTop];
3251 decls.AddRange ((ArrayList) yyVals[0+yyTop]);
3252 yyVal = yyVals[-2+yyTop];
3256 #line 3877 "mb-parser.jay"
3258 ArrayList names = (ArrayList) yyVals[-2+yyTop];
3259 object varinit = yyVals[0+yyTop];
3260 ArrayList VarDeclarations = new ArrayList();
3262 ArrayList a_dims = null;
3264 if ((names.Count > 1) && (varinit != null))
3266 30671, lexer.Location,
3267 "Multiple variables with single type can not have " +
3268 "a explicit initialization" );
3271 foreach (VarName vname in names)
3273 string varname = (string) vname.Name;
3274 current_rank_specifiers = (ArrayList) vname.Rank;
3276 varinit = yyVals[0+yyTop];
3278 if(vname.Type != null && yyVals[-1+yyTop] != null)
3280 30302, lexer.Location,
3281 "Type character cannot be used with explicit type declaration" );
3283 /* Some checking is required for particularly weird declarations*/
3284 /* like Dim a As Integer(,)*/
3285 if (yyVals[-1+yyTop] is Pair) {
3286 vartype = (Expression) ((Pair) yyVals[-1+yyTop]).First;
3288 /*if ($3 != null && $3 is ArrayList)
3289 Report.Error (205, "End of statement expected.");*/
3291 ArrayList args = (ArrayList) ((Pair) yyVals[-1+yyTop]).Second;
3292 if (current_rank_specifiers != null)
3293 Report.Error (31087, lexer.Location,
3294 "Array types specified in too many places");
3296 if (VariableDeclaration.IndexesSpecifiedInRank (args))
3297 Report.Error (30638, "Array bounds cannot appear in type specifiers.");
3299 current_rank_specifiers = new ArrayList ();
3300 current_rank_specifiers.Add (args);
3303 vartype = (yyVals[-1+yyTop] == null) ? ((vname.Type == null) ? TypeManager.system_object_expr : (Expression) vname.Type ) : (Expression) yyVals[-1+yyTop];
3305 /* if the variable is an array with explicit bound*/
3306 /* and having explicit initialization throw exception*/
3307 if (current_rank_specifiers != null && varinit != null)
3309 bool broken = false;
3310 foreach (ArrayList exprs in current_rank_specifiers)
3312 foreach (Expression expr in exprs)
3314 if (!((Expression)expr is EmptyExpression ))
3317 30672, lexer.Location,
3318 "Array declared with explicit bound " +
3319 " can not have explicit initialization");
3330 Check for a declaration like Dim a(2) or Dim a(2,3)
3331 If this is the case, we must generate an ArrayCreationExpression
3332 and, in case, add the initializer after the array has been created.
3334 /* if (VariableDeclaration.IsArrayDecl (this)) { */
3335 /* if (VariableDeclaration.IndexesSpecified(current_rank_specifiers)) { */
3336 /* a_dims = (ArrayList) current_rank_specifiers;*/
3337 /* VariableDeclaration.VBFixIndexLists (ref a_dims);*/
3338 /* varinit = VariableDeclaration.BuildArrayCreator(vartype, a_dims, (ArrayList) varinit, lexer.Location);*/
3340 /* vartype = DecomposeQI (vartype.ToString() + VariableDeclaration.BuildRanks (current_rank_specifiers, false, lexer.Location), lexer.Location);*/
3343 if (vartype is New) {
3344 if (varinit != null) {
3345 Report.Error (30205, lexer.Location, "End of statement expected");
3351 vartype = ((New)vartype).RequestedType;
3354 VarDeclarations.Add (new VariableDeclaration (varname, vartype, varinit, lexer.Location, null));
3356 yyVal = VarDeclarations;
3360 #line 3982 "mb-parser.jay"
3362 ArrayList list = new ArrayList ();
3363 list.Add (yyVals[0+yyTop]);
3368 #line 3988 "mb-parser.jay"
3370 ArrayList list = (ArrayList) yyVals[-2+yyTop];
3371 list.Add (yyVals[0+yyTop]);
3376 #line 3997 "mb-parser.jay"
3378 yyVal = new VarName (yyVals[-2+yyTop], yyVals[-1+yyTop], yyVals[0+yyTop]);
3382 #line 4004 "mb-parser.jay"
3388 #line 4008 "mb-parser.jay"
3390 yyVal = (Expression) yyVals[0+yyTop];
3394 #line 4023 "mb-parser.jay"
3396 yyVal = yyVals[0+yyTop];
3400 #line 4027 "mb-parser.jay"
3402 New n = new New ((Expression)yyVals[0+yyTop], null, lexer.Location);
3403 yyVal = (Expression) n;
3407 #line 4032 "mb-parser.jay"
3409 New n = new New ((Expression)yyVals[-3+yyTop], (ArrayList) yyVals[-1+yyTop], lexer.Location);
3410 yyVal = (Expression) n;
3414 #line 4048 "mb-parser.jay"
3418 #line 4057 "mb-parser.jay"
3422 #line 4058 "mb-parser.jay"
3423 { yyVal = yyVals[0+yyTop]; }
3426 #line 4063 "mb-parser.jay"
3428 yyVal = yyVals[0+yyTop];
3432 #line 4067 "mb-parser.jay"
3434 yyVal = yyVals[0+yyTop];
3438 #line 4075 "mb-parser.jay"
3440 ArrayList list = new ArrayList ();
3445 #line 4080 "mb-parser.jay"
3447 yyVal = (ArrayList) yyVals[-1+yyTop];
3451 #line 4087 "mb-parser.jay"
3453 ArrayList list = new ArrayList ();
3454 list.Add (yyVals[0+yyTop]);
3459 #line 4093 "mb-parser.jay"
3461 ArrayList list = (ArrayList) yyVals[-2+yyTop];
3462 list.Add (yyVals[0+yyTop]);
3467 #line 4102 "mb-parser.jay"
3474 #line 4107 "mb-parser.jay"
3476 yyVal = yyVals[0+yyTop];
3480 #line 4114 "mb-parser.jay"
3482 ArrayList rs = new ArrayList();
3483 rs.Add (yyVals[0+yyTop]);
3488 #line 4120 "mb-parser.jay"
3490 ArrayList rs = (ArrayList) yyVals[-1+yyTop];
3491 rs.Add (yyVals[0+yyTop]);
3496 #line 4129 "mb-parser.jay"
3498 yyVal = yyVals[-1+yyTop];
3502 #line 4136 "mb-parser.jay"
3504 ArrayList ds = new ArrayList();
3505 ds.Add (new EmptyExpression());
3510 #line 4142 "mb-parser.jay"
3512 ArrayList ds = new ArrayList();
3513 ds.Add ((Expression) yyVals[0+yyTop]);
3518 #line 4148 "mb-parser.jay"
3520 ArrayList ds = (ArrayList) yyVals[-2+yyTop];
3521 ds.Add ((Expression) yyVals[0+yyTop]);
3526 #line 4154 "mb-parser.jay"
3528 ArrayList ds = (ArrayList) yyVals[-1+yyTop];
3529 ds.Add (new EmptyExpression());
3534 #line 4184 "mb-parser.jay"
3540 #line 4191 "mb-parser.jay"
3542 yyVal = ((MemberName) yyVals[0+yyTop]).GetTypeExpression (lexer.Location);
3546 #line 4209 "mb-parser.jay"
3547 { yyVal = new CharLiteral ((char) lexer.Value); }
3550 #line 4210 "mb-parser.jay"
3551 { yyVal = new StringLiteral ((string) lexer.Value); }
3554 #line 4211 "mb-parser.jay"
3555 { yyVal = NullLiteral.Null; }
3558 #line 4215 "mb-parser.jay"
3559 { yyVal = new FloatLiteral ((float) lexer.Value); }
3562 #line 4216 "mb-parser.jay"
3563 { yyVal = new DoubleLiteral ((double) lexer.Value); }
3566 #line 4217 "mb-parser.jay"
3567 { yyVal = new DecimalLiteral ((decimal) lexer.Value); }
3570 #line 4221 "mb-parser.jay"
3572 object v = lexer.Value;
3575 yyVal = new IntLiteral ((Int32)v);
3576 /* else if (v is short)*/
3577 /* $$ = new ShortLiteral ((Int16)v);*/
3579 yyVal = new LongLiteral ((Int64)v);
3581 Console.WriteLine ("OOPS. Unexpected result from scanner");
3586 #line 4237 "mb-parser.jay"
3587 { yyVal = new BoolLiteral (true); }
3590 #line 4238 "mb-parser.jay"
3591 { yyVal = new BoolLiteral (false); }
3594 #line 4243 "mb-parser.jay"
3595 { yyVal = yyVals[-1+yyTop]; }
3598 #line 4248 "mb-parser.jay"
3600 if (yyVals[-2+yyTop] != null) {
3601 string id_name = (string)yyVals[0+yyTop];
3602 if (id_name.ToUpper() == "NEW")
3604 yyVal = new MemberAccess ((Expression) yyVals[-2+yyTop], id_name, lexer.Location);
3608 /* if (with_stack.Count > 0) {*/
3609 /* Expression e = (Expression) with_stack.Peek();*/
3610 /* $$ = new MemberAccess (e, (string) $3, lexer.Location);*/
3620 #line 4272 "mb-parser.jay"
3622 if (yyVals[-2+yyTop] != null)
3623 yyVal = new MemberAccess ((Expression) yyVals[-2+yyTop], (string) yyVals[0+yyTop], lexer.Location);
3626 /* if (with_stack.Count > 0) {*/
3627 /* Expression e = (Expression) with_stack.Peek();*/
3628 /* $$ = new MemberAccess (e, (string) $3, lexer.Location);*/
3638 #line 4295 "mb-parser.jay"
3640 if (yyVals[-3+yyTop] == null) {
3641 Location l = lexer.Location;
3642 Report.Error (1, l, "Parse error");
3644 yyVal = new Invocation ((Expression) yyVals[-3+yyTop], (ArrayList) yyVals[-1+yyTop], lexer.Location);
3648 #line 4303 "mb-parser.jay"
3650 if (yyVals[-3+yyTop] == null) {
3651 Location l = lexer.Location;
3652 Report.Error (1, l, "THIS IS CRAZY");
3654 yyVal = new Invocation ((Expression) yyVals[-3+yyTop], (ArrayList) yyVals[-2+yyTop], lexer.Location);
3655 /* Console.WriteLine ("Invocation: {0} with {1} arguments", $2, ($3 != null) ? ((ArrayList) $3).Count : 0);*/
3659 #line 4315 "mb-parser.jay"
3661 string id_name = (string) yyVals[0+yyTop];
3662 if (id_name.ToUpper() == "NEW")
3664 yyVal = new BaseAccess (id_name, lexer.Location);
3668 #line 4329 "mb-parser.jay"
3671 The 'argument' rule returns an 'empty' argument
3672 of type NoArg (used for default arguments in invocations)
3673 if no arguments are actually passed.
3675 If there is only one argument and it is o type NoArg,
3676 we return a null (empty) list
3678 ArrayList args = (ArrayList) yyVals[0+yyTop];
3679 if (args.Count == 1 &&
3680 ((Argument)args[0]).ArgType == Argument.AType.NoArg)
3683 yyVal = yyVals[0+yyTop];
3687 #line 4349 "mb-parser.jay"
3689 ArrayList list = new ArrayList ();
3690 list.Add (yyVals[0+yyTop]);
3695 #line 4355 "mb-parser.jay"
3697 ArrayList list = (ArrayList) yyVals[-2+yyTop];
3698 list.Add (yyVals[0+yyTop]);
3703 #line 4364 "mb-parser.jay"
3705 yyVal = new Argument ((Expression) yyVals[0+yyTop], Argument.AType.Expression);
3709 #line 4368 "mb-parser.jay"
3711 yyVal = new Argument ((Expression) yyVals[0+yyTop], Argument.AType.Ref);
3715 #line 4372 "mb-parser.jay"
3717 yyVal = new Argument (new EmptyExpression (), Argument.AType.NoArg);
3721 #line 4376 "mb-parser.jay"
3723 yyVal = new Argument ((Expression) yyVals[0+yyTop], Argument.AType.AddressOf);
3727 #line 4382 "mb-parser.jay"
3728 {/* note ("section 5.4"); */ yyVal = yyVals[0+yyTop]; }
3731 #line 4387 "mb-parser.jay"
3732 { yyVal = yyVals[0+yyTop]; }
3735 #line 4398 "mb-parser.jay"
3737 yyVal = new This (current_block, lexer.Location);
3741 #line 4402 "mb-parser.jay"
3743 /* FIXME: This is actually somewhat different from Me*/
3744 /* because it is for accessing static (classifier) methods/properties/fields*/
3745 yyVal = new This (current_block, lexer.Location);
3749 #line 4411 "mb-parser.jay"
3755 #line 4415 "mb-parser.jay"
3757 yyVal = new Cast ((Expression) yyVals[-1+yyTop], (Expression) yyVals[-3+yyTop], lexer.Location);
3761 #line 4419 "mb-parser.jay"
3763 yyVal = new Cast ((Expression) yyVals[-3+yyTop], (Expression) yyVals[-1+yyTop], lexer.Location);
3767 #line 4425 "mb-parser.jay"
3768 { yyVal = TypeManager.system_boolean_expr; }
3771 #line 4426 "mb-parser.jay"
3772 { yyVal = TypeManager.system_byte_expr; }
3775 #line 4427 "mb-parser.jay"
3776 { yyVal = TypeManager.system_char_expr; }
3779 #line 4429 "mb-parser.jay"
3780 { yyVal = TypeManager.system_double_expr; }
3783 #line 4430 "mb-parser.jay"
3784 { yyVal = TypeManager.system_decimal_expr; }
3787 #line 4431 "mb-parser.jay"
3788 { yyVal = TypeManager.system_int32_expr; }
3791 #line 4432 "mb-parser.jay"
3792 { yyVal = TypeManager.system_int64_expr; }
3795 #line 4433 "mb-parser.jay"
3796 { yyVal = TypeManager.system_object_expr; }
3799 #line 4434 "mb-parser.jay"
3800 { yyVal = TypeManager.system_int16_expr; }
3803 #line 4435 "mb-parser.jay"
3804 { yyVal = TypeManager.system_single_expr; }
3807 #line 4436 "mb-parser.jay"
3808 { yyVal = TypeManager.system_string_expr; }
3811 #line 4441 "mb-parser.jay"
3813 yyVal = new TypeOf ((Expression) yyVals[-1+yyTop], lexer.Location);
3817 #line 4449 "mb-parser.jay"
3823 #line 4457 "mb-parser.jay"
3825 /*FIXME: Is this rule correctly defined ?*/
3826 yyVal = new Unary (Unary.Operator.UnaryPlus, (Expression) yyVals[0+yyTop], lexer.Location);
3830 #line 4462 "mb-parser.jay"
3832 /*FIXME: Is this rule correctly defined ?*/
3833 yyVal = new Unary (Unary.Operator.UnaryNegation, (Expression) yyVals[0+yyTop], lexer.Location);
3837 #line 4471 "mb-parser.jay"
3839 yyVal = new Binary (Binary.Operator.Multiply,
3840 (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], lexer.Location);
3844 #line 4476 "mb-parser.jay"
3846 yyVal = new Binary (Binary.Operator.Division,
3847 (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], lexer.Location);
3851 #line 4485 "mb-parser.jay"
3853 /*FIXME: Is this right ?*/
3854 yyVal = new Binary (Binary.Operator.Division,
3855 (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], lexer.Location);
3859 #line 4495 "mb-parser.jay"
3861 yyVal = new Binary (Binary.Operator.Modulus,
3862 (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], lexer.Location);
3866 #line 4504 "mb-parser.jay"
3868 yyVal = new Binary (Binary.Operator.Addition,
3869 (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], lexer.Location);
3873 #line 4509 "mb-parser.jay"
3875 yyVal = new Binary (Binary.Operator.Subtraction,
3876 (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], lexer.Location);
3880 #line 4518 "mb-parser.jay"
3882 /* FIXME: This should only work for String expressions*/
3883 /* We probably need to use something from the runtime*/
3884 yyVal = new Binary (Binary.Operator.Addition,
3885 (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], lexer.Location);
3889 #line 4529 "mb-parser.jay"
3895 #line 4533 "mb-parser.jay"
3901 #line 4541 "mb-parser.jay"
3903 yyVal = new Binary (Binary.Operator.Equality,
3904 (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], lexer.Location);
3908 #line 4546 "mb-parser.jay"
3910 yyVal = new Binary (Binary.Operator.Inequality,
3911 (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], lexer.Location);
3915 #line 4551 "mb-parser.jay"
3917 yyVal = new Binary (Binary.Operator.LessThan,
3918 (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], lexer.Location);
3922 #line 4556 "mb-parser.jay"
3924 yyVal = new Binary (Binary.Operator.GreaterThan,
3925 (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], lexer.Location);
3929 #line 4561 "mb-parser.jay"
3931 yyVal = new Binary (Binary.Operator.LessThanOrEqual,
3932 (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], lexer.Location);
3936 #line 4566 "mb-parser.jay"
3938 yyVal = new Binary (Binary.Operator.GreaterThanOrEqual,
3939 (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], lexer.Location);
3943 #line 4571 "mb-parser.jay"
3945 /*FIXME: Should be a different op for reference equality but allows tests to use Is*/
3946 yyVal = new Binary (Binary.Operator.Equality,
3947 (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], lexer.Location);
3951 #line 4577 "mb-parser.jay"
3953 /*FIXME: Is this rule correctly defined ?*/
3954 yyVal = new Is ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], lexer.Location);
3958 #line 4586 "mb-parser.jay"
3960 /*FIXME: Is this rule correctly defined ?*/
3961 yyVal = new Unary (Unary.Operator.LogicalNot, (Expression) yyVals[0+yyTop], lexer.Location);
3965 #line 4595 "mb-parser.jay"
3967 yyVal = new Binary (Binary.Operator.LogicalAnd,
3968 (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], lexer.Location);
3972 #line 4600 "mb-parser.jay"
3973 { /* FIXME: this is likely to be broken*/
3974 yyVal = new Binary (Binary.Operator.LogicalAnd,
3975 (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], lexer.Location);
3979 #line 4609 "mb-parser.jay"
3981 yyVal = new Binary (Binary.Operator.LogicalOr,
3982 (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], lexer.Location);
3986 #line 4614 "mb-parser.jay"
3987 { /* FIXME: this is likely to be broken*/
3988 yyVal = new Binary (Binary.Operator.LogicalOr,
3989 (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], lexer.Location);
3993 #line 4623 "mb-parser.jay"
3995 yyVal = new Binary (Binary.Operator.ExclusiveOr,
3996 (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], lexer.Location);
4000 #line 4631 "mb-parser.jay"
4002 yyVal = new Assign ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], lexer.Location);
4006 #line 4635 "mb-parser.jay"
4008 Location l = lexer.Location;
4010 yyVal = new CompoundAssign (
4011 Binary.Operator.Multiply, (Expression) yyVals[-3+yyTop], (Expression) yyVals[0+yyTop], l);
4015 #line 4642 "mb-parser.jay"
4017 Location l = lexer.Location;
4019 yyVal = new CompoundAssign (
4020 Binary.Operator.Division, (Expression) yyVals[-3+yyTop], (Expression) yyVals[0+yyTop], l);
4024 #line 4649 "mb-parser.jay"
4026 Location l = lexer.Location;
4028 yyVal = new CompoundAssign (
4029 Binary.Operator.Addition, (Expression) yyVals[-3+yyTop], (Expression) yyVals[0+yyTop], l);
4033 #line 4656 "mb-parser.jay"
4035 Location l = lexer.Location;
4037 yyVal = new CompoundAssign (
4038 Binary.Operator.Subtraction, (Expression) yyVals[-3+yyTop], (Expression) yyVals[0+yyTop], l);
4042 #line 4663 "mb-parser.jay"
4044 Location l = lexer.Location;
4046 yyVal = new CompoundAssign (
4047 Binary.Operator.LeftShift, (Expression) yyVals[-3+yyTop], (Expression) yyVals[0+yyTop], l);
4051 #line 4670 "mb-parser.jay"
4053 Location l = lexer.Location;
4055 yyVal = new CompoundAssign (
4056 Binary.Operator.RightShift, (Expression) yyVals[-3+yyTop], (Expression) yyVals[0+yyTop], l);
4060 #line 4677 "mb-parser.jay"
4062 Location l = lexer.Location;
4064 /* FIXME should be strings only*/
4065 yyVal = new CompoundAssign (
4066 Binary.Operator.Addition, (Expression) yyVals[-3+yyTop], (Expression) yyVals[0+yyTop], l);
4070 #line 4685 "mb-parser.jay"
4072 Location l = lexer.Location;
4074 /* TODO: $$ = new CompoundAssign (
4075 Binary.Operator.ExclusiveOr, (Expression) $1, (Expression) $4, l); */
4079 #line 4692 "mb-parser.jay"
4081 /* ArrayList args = new ArrayList();*/
4082 /* Argument arg = new Argument ((Expression) $4, Argument.AType.Expression);*/
4083 /* args.Add (arg);*/
4085 /* New n = new New ((Expression) $1, (ArrayList) args, lexer.Location);*/
4086 /* n.isDelegate = true;*/
4087 yyVal = new Assign ((Expression) yyVals[-3+yyTop], (Expression) yyVals[0+yyTop], lexer.Location);
4091 #line 4713 "mb-parser.jay"
4093 yyVal = ((MemberName) yyVals[0+yyTop]).GetTypeExpression (lexer.Location);
4097 #line 4722 "mb-parser.jay"
4099 ArrayList types = new ArrayList ();
4101 types.Add (yyVals[0+yyTop]);
4106 #line 4729 "mb-parser.jay"
4108 ArrayList types = (ArrayList) yyVals[-2+yyTop];
4110 types.Add (yyVals[0+yyTop]);
4115 #line 4742 "mb-parser.jay"
4116 { yyVal = TypeManager.system_object_expr; }
4119 #line 4748 "mb-parser.jay"
4120 { yyVal = TypeManager.system_boolean_expr; }
4123 #line 4750 "mb-parser.jay"
4124 { yyVal = TypeManager.system_char_expr; }
4127 #line 4751 "mb-parser.jay"
4128 { yyVal = TypeManager.system_string_expr; }
4131 #line 4758 "mb-parser.jay"
4132 { yyVal = TypeManager.system_decimal_expr; }
4135 #line 4763 "mb-parser.jay"
4136 { yyVal = TypeManager.system_byte_expr; }
4139 #line 4764 "mb-parser.jay"
4140 { yyVal = TypeManager.system_int16_expr; }
4143 #line 4765 "mb-parser.jay"
4144 { yyVal = TypeManager.system_int32_expr; }
4147 #line 4766 "mb-parser.jay"
4148 { yyVal = TypeManager.system_int64_expr; }
4151 #line 4770 "mb-parser.jay"
4152 { yyVal = TypeManager.system_single_expr; }
4155 #line 4771 "mb-parser.jay"
4156 { yyVal = TypeManager.system_double_expr; }
4159 #line 4776 "mb-parser.jay"
4161 /* if(tokenizerController.IsAcceptingTokens)*/
4163 /* if(in_external_source) */
4164 /* Report.Error (30580, lexer.Location, "#ExternalSource directives may not be nested");*/
4166 /* in_external_source = true;*/
4168 /* lexer.EffectiveSource = (string) $4;*/
4169 /* lexer.EffectiveLine = (int) $6;*/
4175 #line 4790 "mb-parser.jay"
4177 if(tokenizerController.IsAcceptingTokens)
4179 string id = (yyVals[-2+yyTop] as string);
4181 if(!(yyVals[-2+yyTop] as string).ToLower().Equals("region"))
4182 Report.Error (30205, lexer.Location, "Invalid Pre-processor directive");
4191 #line 4804 "mb-parser.jay"
4193 if(tokenizerController.IsAcceptingTokens)
4195 /* if( ($3 as string).ToLower().Equals("externalsource")) {*/
4196 /* if(!in_external_source)*/
4197 /* Report.Error (30578, lexer.Location, "'#End ExternalSource' must be preceded by a matching '#ExternalSource'");*/
4199 /* in_external_source = false;*/
4200 /* lexer.EffectiveSource = lexer.Source;*/
4201 /* lexer.EffectiveLine = lexer.Line;*/
4204 /* else */if((yyVals[-1+yyTop] as string).ToLower().Equals("region")) {
4205 if(in_marked_region > 0)
4208 Report.Error (30205, lexer.Location, "'#End Region' must be preceded by a matching '#Region'");
4211 Report.Error (29999, lexer.Location, "Unrecognized Pre-Processor statement");
4217 #line 4828 "mb-parser.jay"
4219 if(tokenizerController.IsAcceptingTokens)
4226 #line 4835 "mb-parser.jay"
4228 IfElseStateMachine.Token tok = IfElseStateMachine.Token.IF;
4231 ifElseStateMachine.HandleToken(tok);
4233 catch(ApplicationException) {
4234 throw new MBASException(ifElseStateMachine.Error, lexer.Location, ifElseStateMachine.ErrString);
4239 #line 4846 "mb-parser.jay"
4241 HandleConditionalDirective(IfElseStateMachine.Token.IF, (BoolLiteral)yyVals[-2+yyTop]);
4245 #line 4850 "mb-parser.jay"
4247 IfElseStateMachine.Token tok = IfElseStateMachine.Token.ELSEIF;
4249 ifElseStateMachine.HandleToken(tok);
4251 catch(ApplicationException) {
4252 throw new MBASException(ifElseStateMachine.Error, lexer.Location, ifElseStateMachine.ErrString);
4257 #line 4860 "mb-parser.jay"
4259 HandleConditionalDirective(IfElseStateMachine.Token.ELSEIF, (BoolLiteral)yyVals[-2+yyTop]);
4263 #line 4864 "mb-parser.jay"
4265 IfElseStateMachine.Token tok = IfElseStateMachine.Token.ELSE;
4267 ifElseStateMachine.HandleToken(tok);
4269 catch(ApplicationException) {
4270 throw new MBASException(ifElseStateMachine.Error, lexer.Location, ifElseStateMachine.ErrString);
4275 #line 4874 "mb-parser.jay"
4277 HandleConditionalDirective(IfElseStateMachine.Token.ELSE, new BoolLiteral(true));
4281 #line 4878 "mb-parser.jay"
4283 IfElseStateMachine.Token tok = IfElseStateMachine.Token.ENDIF;
4285 ifElseStateMachine.HandleToken(tok);
4287 catch(ApplicationException) {
4288 throw new MBASException(ifElseStateMachine.Error, lexer.Location, ifElseStateMachine.ErrString);
4293 #line 4888 "mb-parser.jay"
4295 HandleConditionalDirective(IfElseStateMachine.Token.ENDIF, new BoolLiteral(false));
4299 #line 4892 "mb-parser.jay"
4301 if(tokenizerController.IsAcceptingTokens)
4302 Report.Error(2999, lexer.Location, "Unrecognized Pre-Processor statement");
4304 Report.Warning (9999, lexer.Location, "Unrecognized Pre-Processor statement");
4309 yyTop -= yyLen[yyN];
4310 yyState = yyStates[yyTop];
4311 int yyM = yyLhs[yyN];
4312 if (yyState == 0 && yyM == 0) {
4313 if (debug != null) debug.shift(0, yyFinal);
4316 yyToken = yyLex.advance() ? yyLex.token() : 0;
4318 debug.lex(yyState, yyToken,yyname(yyToken), yyLex.value());
4321 if (debug != null) debug.accept(yyVal);
4326 if (((yyN = yyGindex[yyM]) != 0) && ((yyN += yyState) >= 0)
4327 && (yyN < yyTable.Length) && (yyCheck[yyN] == yyState))
4328 yyState = yyTable[yyN];
4330 yyState = yyDgoto[yyM];
4331 if (debug != null) debug.shift(yyStates[yyTop], yyState);
4337 static short [] yyLhs = { -1,
4338 1, 1, 2, 2, 0, 0, 4, 4, 8, 8,
4339 9, 9, 9, 13, 13, 13, 14, 14, 10, 11,
4340 12, 15, 15, 6, 6, 19, 16, 21, 16, 22,
4341 22, 22, 22, 22, 22, 23, 23, 23, 23, 23,
4342 23, 24, 24, 25, 25, 5, 5, 26, 26, 27,
4343 28, 28, 29, 29, 31, 31, 31, 7, 7, 33,
4344 35, 33, 34, 37, 37, 36, 36, 40, 38, 42,
4345 43, 38, 41, 41, 41, 39, 39, 44, 44, 45,
4346 45, 45, 46, 46, 47, 47, 49, 50, 18, 17,
4347 20, 20, 20, 20, 20, 20, 59, 62, 52, 58,
4348 58, 60, 60, 51, 51, 64, 64, 65, 65, 65,
4349 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
4350 65, 65, 67, 53, 66, 66, 68, 68, 71, 69,
4351 70, 70, 70, 70, 70, 70, 70, 75, 61, 61,
4352 79, 79, 80, 81, 81, 81, 81, 81, 81, 81,
4353 73, 73, 85, 82, 91, 92, 83, 94, 95, 56,
4354 96, 96, 93, 93, 97, 97, 98, 99, 99, 99,
4355 99, 99, 99, 77, 103, 57, 102, 102, 104, 104,
4356 105, 106, 105, 108, 111, 113, 114, 54, 110, 110,
4357 115, 115, 116, 112, 117, 117, 118, 118, 119, 120,
4358 120, 121, 121, 76, 124, 122, 109, 109, 86, 86,
4359 125, 125, 123, 123, 129, 129, 127, 127, 130, 131,
4360 126, 133, 128, 132, 132, 132, 74, 136, 136, 55,
4361 55, 84, 138, 139, 72, 32, 32, 140, 141, 141,
4362 142, 134, 134, 145, 145, 146, 146, 146, 146, 88,
4363 88, 147, 147, 149, 87, 89, 148, 148, 148, 148,
4364 148, 153, 153, 151, 151, 151, 151, 151, 159, 159,
4365 159, 161, 162, 160, 158, 157, 157, 164, 165, 166,
4366 166, 167, 167, 135, 135, 170, 168, 169, 169, 171,
4367 174, 172, 156, 175, 175, 175, 177, 177, 177, 176,
4368 176, 178, 178, 179, 179, 180, 180, 181, 181, 181,
4369 181, 182, 182, 155, 183, 183, 183, 185, 185, 187,
4370 150, 150, 188, 189, 78, 78, 190, 137, 137, 193,
4371 194, 194, 191, 101, 101, 90, 192, 192, 192, 195,
4372 144, 144, 196, 196, 197, 197, 198, 198, 143, 143,
4373 199, 199, 200, 201, 201, 201, 201, 202, 202, 202,
4374 202, 202, 202, 202, 202, 202, 202, 203, 203, 203,
4375 203, 203, 203, 212, 212, 212, 211, 210, 210, 204,
4376 208, 208, 213, 184, 184, 206, 154, 215, 215, 216,
4377 216, 216, 216, 217, 107, 163, 163, 205, 205, 209,
4378 209, 209, 219, 219, 219, 219, 219, 219, 219, 219,
4379 219, 219, 219, 207, 220, 220, 152, 152, 152, 221,
4380 221, 221, 222, 222, 223, 223, 224, 224, 224, 225,
4381 225, 226, 226, 226, 227, 227, 227, 227, 227, 227,
4382 227, 227, 227, 228, 228, 229, 229, 229, 230, 230,
4383 230, 218, 218, 186, 186, 186, 186, 186, 186, 186,
4384 186, 186, 186, 48, 173, 100, 100, 63, 63, 30,
4385 214, 214, 231, 231, 231, 231, 232, 232, 232, 233,
4386 233, 233, 233, 233, 234, 234, 3, 3, 3, 3,
4387 235, 3, 236, 3, 237, 3, 238, 3, 3,
4389 static short [] yyLen = { 2,
4390 1, 1, 1, 2, 5, 5, 0, 1, 1, 2,
4391 1, 1, 1, 0, 1, 1, 1, 1, 4, 4,
4392 4, 0, 1, 1, 2, 0, 3, 0, 3, 1,
4393 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4394 1, 0, 1, 1, 3, 0, 1, 1, 2, 3,
4395 1, 3, 1, 3, 0, 2, 3, 0, 1, 1,
4396 0, 3, 4, 0, 1, 1, 3, 0, 3, 0,
4397 0, 6, 1, 1, 1, 0, 3, 0, 1, 1,
4398 3, 1, 1, 3, 1, 3, 3, 0, 8, 2,
4399 1, 1, 1, 1, 1, 1, 0, 0, 11, 0,
4400 3, 0, 3, 0, 1, 1, 2, 1, 1, 1,
4401 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4402 1, 1, 0, 8, 0, 1, 1, 2, 0, 4,
4403 1, 1, 1, 1, 1, 1, 1, 3, 0, 1,
4404 1, 2, 3, 1, 1, 1, 1, 1, 1, 1,
4405 1, 1, 0, 13, 0, 0, 15, 0, 0, 10,
4406 0, 1, 0, 1, 1, 2, 2, 1, 1, 1,
4407 1, 1, 1, 6, 0, 9, 0, 1, 1, 2,
4408 3, 0, 6, 6, 0, 0, 0, 11, 0, 1,
4409 1, 2, 3, 1, 0, 1, 1, 2, 3, 1,
4410 1, 4, 6, 1, 0, 12, 0, 3, 0, 2,
4411 1, 3, 2, 2, 0, 1, 0, 1, 0, 0,
4412 11, 0, 11, 0, 2, 5, 3, 0, 1, 7,
4413 8, 0, 0, 0, 12, 0, 1, 1, 1, 3,
4414 7, 0, 1, 2, 1, 1, 1, 1, 1, 0,
4415 2, 1, 3, 3, 0, 0, 1, 1, 5, 5,
4416 3, 0, 3, 1, 1, 1, 1, 1, 1, 1,
4417 1, 2, 2, 2, 6, 1, 1, 6, 9, 0,
4418 1, 1, 2, 0, 1, 0, 5, 0, 1, 3,
4419 0, 9, 1, 7, 10, 6, 7, 10, 6, 0,
4420 1, 1, 3, 3, 1, 0, 1, 1, 1, 1,
4421 1, 0, 1, 1, 1, 1, 1, 5, 2, 1,
4422 1, 1, 2, 2, 1, 3, 3, 1, 3, 3,
4423 1, 3, 3, 0, 2, 1, 1, 3, 6, 0,
4424 0, 2, 1, 1, 2, 3, 1, 3, 0, 1,
4425 1, 2, 3, 0, 1, 3, 2, 1, 1, 1,
4426 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4427 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
4428 3, 3, 1, 4, 5, 3, 1, 1, 3, 1,
4429 2, 0, 2, 1, 1, 0, 1, 1, 1, 6,
4430 6, 4, 1, 1, 1, 1, 1, 1, 1, 1,
4431 1, 1, 1, 4, 1, 3, 1, 2, 2, 1,
4432 3, 3, 1, 3, 1, 3, 1, 3, 3, 1,
4433 3, 1, 3, 3, 1, 3, 3, 3, 3, 3,
4434 3, 3, 4, 1, 2, 1, 3, 3, 1, 3,
4435 3, 1, 3, 3, 4, 4, 4, 4, 4, 4,
4436 4, 4, 4, 1, 1, 1, 1, 1, 3, 1,
4437 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
4438 1, 1, 1, 1, 1, 1, 8, 4, 4, 6,
4439 0, 6, 0, 6, 0, 4, 0, 5, 3,
4441 static short [] yyDefRed = { 0,
4442 3, 0, 0, 0, 0, 4, 0, 0, 9, 11,
4443 12, 13, 0, 0, 0, 0, 0, 495, 493, 0,
4444 491, 0, 0, 0, 0, 48, 10, 17, 18, 0,
4445 16, 15, 0, 0, 499, 0, 0, 0, 497, 0,
4446 0, 0, 0, 31, 33, 34, 35, 32, 30, 0,
4447 0, 0, 51, 53, 0, 0, 0, 24, 0, 0,
4448 60, 49, 0, 0, 0, 0, 496, 379, 378, 0,
4449 0, 489, 0, 0, 488, 0, 0, 0, 0, 73,
4450 74, 44, 0, 0, 66, 70, 5, 0, 25, 6,
4451 121, 112, 119, 113, 115, 117, 114, 116, 110, 109,
4452 108, 120, 118, 111, 122, 90, 0, 106, 0, 0,
4453 0, 0, 301, 0, 498, 0, 0, 54, 45, 52,
4454 0, 0, 0, 0, 107, 0, 27, 0, 0, 0,
4455 0, 0, 0, 29, 91, 92, 93, 94, 95, 96,
4456 62, 490, 494, 492, 0, 0, 69, 67, 2, 65,
4457 0, 63, 0, 0, 0, 0, 0, 0, 0, 0,
4458 0, 0, 474, 481, 0, 403, 404, 405, 407, 406,
4459 475, 408, 409, 410, 411, 412, 413, 0, 479, 0,
4460 486, 0, 483, 484, 398, 0, 399, 0, 0, 373,
4461 471, 482, 485, 476, 0, 0, 0, 0, 377, 374,
4462 375, 376, 371, 372, 0, 0, 0, 79, 0, 0,
4463 83, 85, 464, 420, 365, 320, 366, 0, 358, 359,
4464 360, 361, 363, 364, 367, 368, 369, 370, 0, 383,
4465 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4466 446, 0, 0, 472, 473, 477, 478, 71, 0, 0,
4467 0, 0, 0, 0, 0, 0, 0, 487, 0, 0,
4468 0, 0, 0, 466, 0, 467, 445, 0, 0, 418,
4469 419, 0, 77, 0, 0, 0, 0, 0, 0, 0,
4470 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4471 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4472 0, 0, 0, 0, 0, 0, 335, 0, 0, 0,
4473 0, 158, 0, 0, 0, 0, 386, 0, 0, 380,
4474 87, 0, 84, 0, 86, 0, 0, 390, 0, 0,
4475 388, 381, 382, 0, 0, 0, 421, 422, 0, 0,
4476 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4477 0, 0, 447, 448, 0, 0, 72, 0, 0, 0,
4478 0, 0, 0, 237, 0, 239, 0, 0, 175, 0,
4479 179, 0, 186, 0, 191, 0, 0, 0, 127, 0,
4480 0, 0, 0, 0, 0, 414, 0, 443, 393, 394,
4481 391, 384, 0, 402, 0, 0, 468, 0, 98, 246,
4482 247, 248, 249, 0, 0, 245, 0, 0, 0, 0,
4483 0, 180, 0, 0, 192, 129, 0, 128, 0, 0,
4484 159, 0, 165, 0, 0, 0, 318, 389, 0, 0,
4485 0, 0, 0, 0, 244, 0, 336, 240, 0, 0,
4486 0, 0, 0, 0, 187, 194, 0, 197, 0, 0,
4487 0, 0, 229, 0, 0, 0, 173, 170, 171, 168,
4488 169, 172, 151, 152, 167, 0, 0, 166, 401, 400,
4489 0, 469, 0, 0, 0, 0, 141, 36, 37, 38,
4490 39, 40, 41, 43, 0, 0, 0, 0, 0, 0,
4491 198, 0, 137, 130, 131, 132, 133, 134, 135, 136,
4492 204, 0, 0, 0, 325, 0, 0, 0, 0, 0,
4493 0, 331, 328, 0, 0, 0, 0, 142, 0, 0,
4494 0, 351, 0, 0, 0, 0, 0, 201, 199, 200,
4495 0, 0, 340, 0, 0, 0, 337, 0, 0, 0,
4496 0, 0, 153, 0, 0, 0, 0, 0, 150, 147,
4497 146, 144, 145, 148, 149, 143, 0, 355, 0, 0,
4498 352, 0, 0, 0, 0, 0, 0, 333, 326, 0,
4499 0, 327, 0, 0, 56, 0, 0, 232, 329, 332,
4500 330, 0, 0, 353, 0, 241, 0, 0, 0, 0,
4501 0, 0, 0, 0, 343, 342, 344, 0, 155, 57,
4502 255, 0, 356, 0, 0, 0, 0, 0, 0, 345,
4503 347, 0, 0, 0, 0, 0, 0, 0, 208, 0,
4504 0, 346, 0, 0, 0, 0, 0, 0, 0, 0,
4505 0, 0, 0, 0, 0, 256, 0, 252, 257, 258,
4506 0, 264, 265, 266, 267, 268, 269, 270, 271, 276,
4507 277, 293, 314, 0, 0, 317, 321, 322, 0, 0,
4508 0, 0, 339, 348, 0, 0, 0, 0, 272, 465,
4509 0, 0, 0, 397, 274, 0, 273, 255, 234, 0,
4510 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4511 0, 156, 0, 0, 0, 261, 0, 255, 0, 0,
4512 0, 253, 0, 0, 0, 454, 0, 0, 0, 0,
4513 0, 0, 256, 0, 0, 0, 0, 0, 0, 255,
4514 0, 0, 0, 256, 0, 0, 0, 282, 0, 457,
4515 458, 463, 455, 456, 462, 461, 459, 460, 0, 0,
4516 0, 0, 0, 213, 218, 0, 216, 214, 256, 259,
4517 0, 263, 260, 0, 254, 0, 0, 289, 0, 0,
4518 283, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4519 0, 296, 275, 0, 286, 278, 255, 0, 0, 255,
4520 225, 0, 0, 0, 0, 255, 0, 294, 290, 255,
4521 0, 0, 220, 285, 0, 255, 0, 0, 0, 287,
4522 0, 0, 0, 0, 0, 0, 255, 279, 256, 226,
4523 256, 295, 0, 0, 0, 0, 0, 299, 0, 0,
4524 255, 297, 0, 0, 0, 0, 0, 0, 298,
4526 protected static short [] yyDgoto = { 2,
4527 150, 151, 6, 7, 24, 56, 362, 8, 9, 10,
4528 11, 12, 33, 30, 359, 58, 59, 127, 109, 134,
4529 110, 82, 484, 485, 206, 25, 26, 52, 53, 264,
4530 542, 363, 60, 61, 111, 84, 152, 85, 147, 121,
4531 86, 124, 302, 207, 208, 209, 210, 211, 212, 303,
4532 106, 135, 136, 137, 138, 139, 140, 361, 304, 399,
4533 475, 433, 396, 107, 108, 377, 310, 378, 379, 494,
4534 449, 458, 459, 460, 461, 499, 462, 504, 476, 477,
4535 556, 463, 464, 602, 578, 312, 699, 636, 679, 537,
4536 614, 718, 421, 382, 467, 0, 422, 423, 465, 397,
4537 437, 369, 411, 370, 371, 441, 328, 528, 592, 373,
4538 309, 445, 414, 490, 374, 375, 446, 447, 448, 529,
4539 530, 501, 715, 691, 381, 716, 744, 717, 748, 780,
4540 802, 766, 796, 404, 795, 466, 511, 601, 701, 364,
4541 365, 366, 520, 572, 405, 406, 637, 638, 700, 639,
4542 640, 214, 696, 329, 642, 643, 644, 645, 646, 647,
4543 648, 649, 675, 650, 651, 726, 727, 728, 757, 790,
4544 758, 0, 671, 0, 652, 114, 772, 0, 0, 0,
4545 0, 0, 653, 215, 216, 656, 217, 657, 658, 505,
4546 506, 538, 513, 514, 568, 596, 597, 612, 521, 522,
4547 559, 218, 219, 220, 221, 222, 223, 224, 225, 226,
4548 227, 228, 229, 230, 330, 331, 391, 231, 232, 233,
4549 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
4550 244, 245, 246, 247, 41, 38, 37, 71,
4552 protected static short [] yySindex = { -277,
4553 0, 0, -42, -263, -240, 0, -236, -244, 0, 0,
4554 0, 0, -254, -100, -100, -207, -165, 0, 0, -312,
4555 0, -383, 9, -51, -236, 0, 0, 0, 0, -277,
4556 0, 0, -277, -277, 0, -33, 92, -274, 0, 100,
4557 -274, -41, 125, 0, 0, 0, 0, 0, 0, 29,
4558 59, -250, 0, 0, -230, -247, 3240, 0, 0, 0,
4559 0, 0, 86, 86, 86, -274, 0, 0, 0, 88,
4560 188, 0, 88, 93, 0, 9, 9, 9, 86, 0,
4561 0, 0, 0, -78, 0, 0, 0, 2192, 0, 0,
4562 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4563 0, 0, 0, 0, 0, 0, 2192, 0, 177, 736,
4564 -51, 223, 0, 243, 0, 256, 119, 0, 0, 0,
4565 165, -230, -223, 179, 0, 9, 0, 9, -72, 9,
4566 9, 9, 9, 0, 0, 0, 0, 0, 0, 0,
4567 0, 0, 0, 0, 187, 3081, 0, 0, 0, 0,
4568 86, 0, 9, -91, -277, 9, 9, 343, -277, -277,
4569 -277, 304, 0, 0, 3385, 0, 0, 0, 0, 0,
4570 0, 0, 0, 0, 0, 0, 0, 206, 0, 231,
4571 0, 258, 0, 0, 0, 248, 0, 1614, 3081, 0,
4572 0, 0, 0, 0, 3233, 3081, 3233, 3233, 0, 0,
4573 0, 0, 0, 0, 238, 59, 265, 0, 270, 277,
4574 0, 0, 0, 0, 0, 0, 0, -354, 0, 0,
4575 0, 0, 0, 0, 0, 0, 0, 0, 288, 0,
4576 310, 309, 298, -113, 303, 413, 97, 312, 34, 323,
4577 0, 373, 289, 0, 0, 0, 0, 0, 86, 86,
4578 347, 348, 1614, -277, 86, 86, -299, 0, -133, 3081,
4579 3081, 1614, 290, 0, 359, 0, 0, -235, 358, 0,
4580 0, 3081, 0, 3081, 9, 2473, 9, 9, 3081, 3081,
4581 3385, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233,
4582 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3081, 3081, 3081,
4583 3081, 165, -51, 449, -51, -51, 0, -239, 450, -51,
4584 9, 0, 2473, 372, 381, 375, 0, 2473, 1614, 0,
4585 0, 277, 0, 238, 0, 3081, 3081, 0, 386, 385,
4586 0, 0, 0, 289, 390, -354, 0, 0, -113, 303,
4587 413, 413, 97, 312, 312, 34, 34, 34, 34, 34,
4588 34, 34, 0, 0, 373, 373, 0, -51, 500, 1614,
4589 482, 195, 397, 0, 398, 0, 399, 9, 0, -51,
4590 0, 1614, 0, 450, 0, 2192, 517, -51, 0, 59,
4591 417, 2192, 424, 1614, 1614, 0, 438, 0, 0, 0,
4592 0, 0, 2473, 0, 509, -217, 0, 1614, 0, 0,
4593 0, 0, 0, 9, 195, 0, 343, -51, -277, -277,
4594 554, 0, -217, -51, 0, 0, 525, 0, 9, 2149,
4595 0, 2192, 0, 0, 453, 454, 0, 0, -277, 1614,
4596 86, -217, -51, 731, 0, -277, 0, 0, 86, 86,
4597 463, 561, 86, 2192, 0, 0, -51, 0, 1957, -277,
4598 59, 9, 0, 9, 9, -116, 0, 0, 0, 0,
4599 0, 0, 0, 0, 0, 9, 567, 0, 0, 0,
4600 86, 0, 86, 2192, 574, -51, 0, 0, 0, 0,
4601 0, 0, 0, 0, 478, 86, 3081, -277, 99, 584,
4602 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
4603 0, 86, 731, -184, 0, 625, 629, 731, 488, 488,
4604 -161, 0, 0, -252, 518, 1957, 618, 0, 3081, 343,
4605 478, 0, -277, 86, 9, 9, 9, 0, 0, 0,
4606 581, 731, 0, 9, 86, 218, 0, 491, 1614, 488,
4607 87, -277, 0, 9, 86, 9, 491, -277, 0, 0,
4608 0, 0, 0, 0, 0, 0, -277, 0, 114, 491,
4609 0, 86, 731, 731, 488, -277, 503, 0, 0, 1614,
4610 2929, 0, 589, 343, 0, 506, 86, 0, 0, 0,
4611 0, 86, 86, 0, 3081, 0, 488, 503, -277, 86,
4612 -51, 343, 519, 2777, 0, 0, 0, -277, 0, 0,
4613 0, 589, 0, 343, 343, 86, 513, 589, 2473, 0,
4614 0, -80, 86, 589, 2321, -277, -277, -277, 0, -277,
4615 514, 0, 2929, -277, 3233, 9, 9, 456, 3081, 9,
4616 3233, 3081, 3081, 3081, -223, 0, -223, 0, 0, 0,
4617 919, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4618 0, 0, 0, 0, 0, 0, 0, 0, 86, 86,
4619 86, 86, 0, 0, 86, 522, 523, 526, 0, 0,
4620 88, 530, 532, 0, 0, -223, 0, 0, 0, 2321,
4621 538, 541, 2625, 547, 551, 553, 560, 563, 577, 2321,
4622 -51, 0, 688, -223, 2473, 0, 712, 0, 2321, 704,
4623 691, 0, 3081, 3081, 3081, 0, 3081, 3081, 3081, 3081,
4624 3081, 3081, 0, -272, 692, -51, -51, 2321, 3081, 0,
4625 591, 3081, 699, 0, 9, 126, 704, 0, 620, 0,
4626 0, 0, 0, 0, 0, 0, 0, 0, 705, -277,
4627 613, 661, 656, 0, 0, 713, 0, 0, 0, 0,
4628 486, 0, 0, 645, 0, 769, -223, 0, 643, -223,
4629 0, -277, 652, 86, -31, -277, -277, 739, -223, 3081,
4630 718, 0, 0, 1614, 0, 0, 0, 86, -277, 0,
4631 0, 9, 86, 86, 733, 0, 88, 0, 0, 0,
4632 740, 86, 0, 0, 343, 0, -277, 744, -223, 0,
4633 658, 2321, 640, 2321, 86, 737, 0, 0, 0, 0,
4634 0, 0, 516, 749, 757, -223, 741, 0, 745, 693,
4635 0, 0, -277, -277, 767, 86, 86, 753, 0,
4637 protected static short [] yyRindex = { 0,
4638 0, 0, 7141, 0, 0, 0, 7429, 7213, 0, 0,
4639 0, 0, 0, 772, 772, 0, 0, 0, 0, 0,
4640 0, 0, 0, 3449, 7501, 0, 0, 0, 0, 0,
4641 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4642 0, 0, 0, 0, 0, 0, 0, 0, 0, -288,
4643 5251, 0, 0, 0, 0, 8024, 728, 0, 732, 730,
4644 0, 0, 6925, 6997, 7069, 0, 0, 0, 0, 774,
4645 0, 0, 774, 0, 0, 0, 0, 0, 7285, 0,
4646 0, 0, 468, 0, 0, 0, 0, 728, 0, 0,
4647 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4648 0, 0, 0, 0, 0, 0, -19, 0, 0, 0,
4649 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4650 44, 0, 840, 0, 0, 0, 0, 0, 0, 0,
4651 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4652 0, 0, 0, 0, 0, 252, 0, 0, 0, 0,
4653 557, 0, 0, 0, 0, 0, 0, 775, 0, 0,
4654 0, 0, 0, 0, 664, 0, 0, 0, 0, 0,
4655 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4656 0, 0, 0, 0, 0, 0, 0, 5324, 664, 0,
4657 0, 0, 0, 0, 664, 664, 664, 664, 0, 0,
4658 0, 0, 0, 0, 5776, 5447, 0, 0, 673, 674,
4659 0, 0, 0, 0, 0, 0, 0, 5582, 0, 0,
4660 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4661 403, 0, 5729, 5826, 5948, 6043, 6212, 6331, 6468, 360,
4662 0, 333, 189, 0, 0, 0, 0, 0, 7573, 3558,
4663 0, 0, 122, 0, 7602, 3807, 5253, 0, 0, 664,
4664 664, 679, 0, 0, 5544, 0, 0, 0, 0, 0,
4665 0, 664, 0, 664, 0, 539, 0, 0, 664, 664,
4666 664, 664, 664, 664, 664, 664, 664, 664, 664, 664,
4667 664, 664, 664, 664, 664, 664, 664, 664, 664, 664,
4668 664, 44, 7912, 3640, 91, 91, 0, -122, 7697, 4834,
4669 0, 0, 539, 0, 0, 0, 0, 539, 6503, 0,
4670 0, 686, 0, 0, 0, 664, 664, 0, 0, 687,
4671 0, 0, 0, 389, 0, 5679, 0, 0, 5876, 5991,
4672 6093, 6162, 6262, 6381, 6431, 6540, 6590, 6627, 6640, 6706,
4673 6749, 6819, 0, 0, 1572, 1686, 0, 7952, 0, -159,
4674 3892, 60, 0, 0, 689, 0, 0, 0, 0, -117,
4675 0, -159, 0, 7732, 0, 395, 0, 4919, 0, 3974,
4676 5001, 422, 0, 679, 679, 0, 0, 0, 0, 0,
4677 0, 0, 539, 0, 0, 0, 0, -159, 0, 0,
4678 0, 0, 0, 0, -246, 0, 775, 103, 0, 682,
4679 0, 0, 0, 1808, 0, 0, 0, 0, 0, 71,
4680 0, 670, 0, 5374, 0, 0, 0, 0, 0, -159,
4681 3725, 0, 5086, -233, 0, 0, 0, 0, 925, -206,
4682 0, 0, 7667, 152, 0, 0, 2000, 0, 71, 0,
4683 4084, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4684 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4685 7357, 0, 4166, 395, 0, 5168, 0, 0, 0, 0,
4686 0, 0, 0, 0, -181, 1009, 664, 0, 0, 0,
4687 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4688 0, 1093, -88, 0, 0, -38, 0, -186, 794, -65,
4689 0, 0, 0, -114, 0, 71, 0, 0, 550, 286,
4690 -112, 0, 0, 1177, 0, 0, 0, 0, 0, 0,
4691 0, -186, 0, 0, 4251, -23, 0, -189, 30, 319,
4692 103, 0, 0, 0, 4333, 0, -189, 0, 0, 0,
4693 0, 0, 0, 0, 0, 0, 0, 0, 0, 207,
4694 0, -195, -218, -218, 794, 0, 461, 0, 0, 10,
4695 664, 0, 795, 90, 0, 0, 1553, 0, 0, 0,
4696 0, 1261, 1345, 0, 571, 0, -237, 48, 0, 1429,
4697 91, 90, 80, 664, 0, 0, 0, 0, 0, 0,
4698 0, 795, 0, 775, 775, 7762, 0, 795, 539, 0,
4699 0, 0, 4418, 795, -282, 0, 0, 0, 0, 0,
4700 0, 0, 664, 0, 664, 0, 0, 0, 664, 0,
4701 664, -151, 664, -151, 0, 0, 0, 0, 0, 0,
4702 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4703 0, 0, 0, 216, 835, 0, 0, 0, 1745, 7797,
4704 7827, 25, 0, 0, 1745, 0, -90, -45, 0, 0,
4705 -14, -13, 0, 0, 0, 0, 0, 0, 0, 268,
4706 0, 0, 664, 0, 0, 0, 0, 0, 0, -282,
4707 -262, 0, 0, 0, 539, 0, 0, 0, 371, 240,
4708 0, 0, 664, 664, 664, 0, 664, 664, 664, 664,
4709 664, 664, 0, 0, 0, -251, 156, -282, 664, 0,
4710 0, 664, 0, 0, 8, 0, 245, 0, 0, 0,
4711 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4712 799, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4713 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4714 0, 0, 0, 1937, -215, 0, 0, 0, 0, 664,
4715 0, 0, 0, 12, 0, 0, 0, 4500, 0, 0,
4716 0, -249, 2129, 4585, 0, 0, -14, 0, 0, 0,
4717 0, 4667, 0, 0, 697, 0, 0, 0, 0, 0,
4718 0, -282, 0, -282, 4752, 0, 0, 0, 0, 0,
4719 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4720 0, 0, 0, 0, 0, -287, -278, 0, 0,
4722 protected static short [] yyGindex = { 0,
4723 -394, 1, 0, 0, 0, 809, -20, 0, 1107, 0,
4724 0, 0, 1105, 0, 0, -50, 0, 0, 0, -136,
4725 0, -16, 0, 192, 23, 0, 1096, 0, 1045, 462,
4726 139, -304, 0, 1013, 0, 0, 0, 1004, 825, 0,
4727 0, 0, 0, 0, 0, 0, 856, 355, 857, 0,
4728 580, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4729 0, 0, -327, 0, 1024, 0, 0, 0, 758, 0,
4730 0, -419, -411, -210, -200, 619, -198, 515, 0, 666,
4731 0, 0, 0, 0, 0, 181, -590, -216, -137, -389,
4732 0, 0, 0, 0, 0, 0, 0, 721, 0, -183,
4733 982, 0, 0, 0, 776, 0, -52, 0, 559, 0,
4734 0, 0, 0, 0, 0, 771, 0, 0, 702, 0,
4735 0, 0, 0, 0, 0, 435, 0, 439, 0, 0,
4736 0, 0, 0, 391, 0, 0, 527, 0, 0, 0,
4737 0, 759, 0, -211, 0, 761, 0, 489, -229, 0,
4738 0, -154, 0, -305, 0, 0, 0, 0, 0, 0,
4739 0, 0, 534, 0, 0, 0, 0, 444, 0, 0,
4740 0, 0, 402, 0, 0, -73, 361, 0, 0, 0,
4741 0, 0, 0, -511, -196, 0, 0, 0, 0, 639,
4742 -457, 662, 631, 0, 0, -542, 0, 0, 0, 657,
4743 0, -143, 0, 0, 0, 0, 0, 0, 0, 416,
4744 0, 0, 0, -185, 0, 784, 0, 0, 0, 0,
4745 897, 898, 401, 899, 442, 698, 0, -94, 436, 906,
4746 0, 0, 0, 0, 0, 0, 0, 0,
4748 protected static short [] yyTable = { 116,
4749 3, 367, 266, 57, 265, 89, 50, 383, 512, 87,
4750 615, 39, 387, 536, 28, 16, 284, 436, 221, 243,
4751 44, 259, 243, 250, 13, 311, 42, 223, 55, 495,
4752 63, 1, 42, 64, 65, 88, 80, 496, 44, 68,
4753 223, 243, 270, 271, 413, 51, 740, 42, 17, 14,
4754 242, 611, 79, 242, 217, 276, 58, 45, 1, 277,
4755 119, 50, 181, 18, 19, 20, 243, 266, 690, 307,
4756 432, 55, 242, 183, 692, 43, 266, 51, 316, 42,
4757 664, 181, 46, 21, 349, 1, 512, 221, 580, 23,
4758 42, 1, 183, 213, 267, 319, 550, 242, 51, 181,
4759 51, 35, 741, 654, 551, 243, 181, 5, 81, 4,
4760 183, 155, 58, 158, 159, 160, 161, 183, 69, 341,
4761 15, 47, 42, 58, 1, 44, 44, 337, 338, 205,
4762 560, 480, 221, 266, 29, 388, 242, 336, 42, 251,
4763 252, 223, 243, 269, 51, 181, 58, 1, 154, 480,
4764 40, 58, 44, 350, 249, 250, 183, 396, 48, 255,
4765 256, 257, 546, 284, 78, 58, 243, 5, 654, 512,
4766 58, 45, 55, 242, 266, 51, 42, 42, 654, 42,
4767 55, 42, 181, 177, 599, 42, 266, 654, 178, 793,
4768 58, 42, 149, 183, 334, 58, 46, 430, 266, 266,
4769 425, 426, 608, 353, 354, 804, 654, 314, 315, 289,
4770 51, 290, 266, 181, 617, 618, 243, 1, 324, 213,
4771 42, 213, 22, 42, 183, 341, 341, 335, 509, 58,
4772 534, 349, 49, 349, 58, 47, 576, 349, 497, 400,
4773 678, 401, 680, 55, 266, 156, 472, 242, 498, 105,
4774 500, 31, 32, 544, 308, 480, 181, 205, 324, 55,
4775 332, 333, 480, 323, 396, 105, 58, 183, 105, 105,
4776 334, 58, 48, 389, 390, 51, 313, 44, 105, 105,
4777 277, 698, 88, 457, 51, 480, 607, 368, 105, 376,
4778 654, 105, 654, 105, 300, 262, 45, 36, 105, 720,
4779 350, 334, 350, 621, 334, 552, 350, 89, 282, 283,
4780 105, 4, 493, 207, 157, 553, 288, 555, 480, 105,
4781 480, 46, 77, 402, 105, 324, 42, 42, 242, 403,
4782 42, 622, 105, 380, 623, 581, 122, 88, 480, 228,
4783 58, 51, 123, 205, 105, 58, 49, 242, 586, 368,
4784 266, 410, 307, 266, 480, 573, 207, 376, 228, 58,
4785 47, 58, 775, 58, 5, 777, 105, 105, 55, 105,
4786 323, 58, 242, 58, 786, 58, 334, 334, 58, 549,
4787 334, 781, 51, 228, 266, 66, 593, 434, 338, 721,
4788 58, 480, 480, 444, 51, 480, 431, 48, 334, 205,
4789 67, 300, 262, 58, 807, 803, 51, 51, 72, 439,
4790 440, 242, 474, 443, 334, 58, 525, 74, 655, 480,
4791 51, 821, 228, 288, 480, 480, 444, 480, 480, 471,
4792 480, 759, 473, 75, 523, 503, 486, 507, 508, 510,
4793 760, 451, 58, 105, 205, 58, 480, 76, 242, 503,
4794 502, 58, 51, 70, 58, 474, 73, 58, 76, 228,
4795 641, 215, 526, 58, 76, 400, 558, 401, 723, 104,
4796 666, 49, 77, 713, 58, 532, 673, 113, 289, 58,
4797 290, 112, 724, 655, 54, 527, 44, 163, 524, 164,
4798 751, 58, 5, 655, 338, 338, 115, 452, 338, 575,
4799 171, 749, 655, 236, 535, 45, 55, 117, 563, 564,
4800 565, 545, 179, 286, 287, 104, 83, 503, 595, 181,
4801 126, 655, 242, 562, 315, 641, 584, 503, 585, 503,
4802 46, 142, 603, 228, 480, 641, 480, 118, 104, 54,
4803 480, 595, 577, 251, 641, 280, 183, 791, 582, 402,
4804 281, 143, 184, 58, 280, 403, 798, 583, 51, 281,
4805 800, 51, 570, 641, 144, 58, 590, 145, 191, 47,
4806 595, 251, 251, 251, 146, 739, 670, 813, 452, 674,
4807 676, 674, 251, 83, 55, 809, 755, 811, 266, 606,
4808 789, 825, 51, 452, 153, 192, 193, 694, 613, 162,
4809 452, 452, 194, 452, 452, 655, 48, 655, 253, 503,
4810 503, 768, 258, 672, 248, 260, 659, 660, 661, 341,
4811 662, 341, 444, 444, 665, 365, 321, 55, 323, 365,
4812 706, 315, 365, 365, 365, 298, 299, 365, 365, 365,
4813 261, 449, 365, 55, 300, 301, 250, 641, 543, 641,
4814 730, 731, 732, 291, 733, 734, 735, 736, 737, 738,
4815 365, 263, 365, 104, 78, 480, 750, 262, 444, 753,
4816 714, 814, 272, 815, 250, 250, 250, 273, 574, 104,
4817 49, 480, 104, 104, 274, 250, 341, 342, 449, 449,
4818 104, 275, 104, 104, 533, 743, 746, 453, 334, 540,
4819 334, 278, 104, 589, 334, 104, 104, 104, 756, 104,
4820 104, 395, 104, 799, 279, 444, 444, 670, 280, 104,
4821 104, 281, 449, 567, 104, 604, 207, 163, 284, 104,
4822 344, 345, 104, 104, 104, 355, 356, 449, 288, 104,
4823 764, 292, 293, 294, 449, 449, 104, 449, 449, 444,
4824 285, 104, 317, 598, 587, 588, 305, 306, 104, 295,
4825 104, 296, 778, 297, 444, 794, 783, 784, 318, 207,
4826 320, 444, 444, 104, 444, 444, 360, 372, 453, 792,
4827 104, 104, 616, 104, 480, 207, 384, 386, 620, 769,
4828 770, 771, 395, 453, 624, 385, 51, 805, 392, 393,
4829 453, 453, 394, 453, 453, 395, 398, 104, 104, 407,
4830 104, 409, 408, 1, 395, 395, 1, 395, 395, 816,
4831 770, 817, 417, 826, 827, 1, 1, 1, 1, 1,
4832 1, 419, 1, 1, 1, 1, 424, 1, 1, 1,
4833 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4834 427, 1, 429, 1, 1, 1, 1, 104, 1, 442,
4835 1, 1, 1, 450, 1, 469, 470, 1, 488, 1,
4836 1, 1, 515, 1, 1, 1, 1, 68, 1, 517,
4837 1, 487, 68, 75, 104, 1, 1, 519, 68, 531,
4838 536, 1, 268, 1, 539, 1, 1, 541, 1, 1,
4839 1, 1, 557, 548, 1, 1, 1, 1, 1, 571,
4840 566, 1, 591, 311, 1, 1, 1, 1, 600, 1,
4841 1, 1, 1, 1, 1, 619, 663, 1, 609, 1,
4842 669, 1, 1, 1, 1, 1, 693, 534, 104, 695,
4843 544, 1, 1, 1, 1, 1, 697, 1, 719, 1,
4844 1, 392, 480, 392, 104, 416, 703, 104, 104, 704,
4845 1, 420, 354, 480, 354, 707, 1, 104, 104, 708,
4846 1, 709, 722, 1, 1, 164, 1, 104, 710, 725,
4847 104, 711, 104, 357, 480, 357, 59, 104, 346, 347,
4848 348, 349, 350, 351, 352, 712, 729, 742, 59, 104,
4849 59, 420, 59, 752, 754, 1, 762, 1, 104, 1,
4850 763, 1, 104, 1, 59, 1, 28, 59, 59, 1,
4851 128, 104, 765, 489, 767, 104, 59, 59, 59, 28,
4852 741, 740, 773, 129, 774, 104, 776, 59, 779, 28,
4853 59, 788, 59, 130, 785, 801, 59, 59, 59, 806,
4854 797, 808, 810, 516, 819, 104, 104, 104, 104, 59,
4855 812, 28, 820, 823, 822, 131, 104, 824, 59, 59,
4856 28, 104, 828, 59, 132, 26, 829, 480, 59, 59,
4857 14, 59, 300, 334, 59, 80, 82, 59, 59, 59,
4858 59, 480, 59, 59, 59, 59, 64, 59, 81, 387,
4859 182, 238, 55, 209, 59, 59, 59, 224, 64, 334,
4860 64, 358, 64, 104, 27, 59, 59, 28, 59, 34,
4861 62, 133, 120, 141, 64, 148, 357, 64, 64, 322,
4862 125, 325, 104, 59, 554, 418, 64, 64, 64, 254,
4863 667, 518, 468, 316, 415, 412, 605, 64, 491, 61,
4864 64, 747, 64, 668, 745, 782, 64, 64, 64, 478,
4865 479, 480, 481, 482, 483, 435, 438, 677, 702, 64,
4866 761, 787, 569, 818, 579, 547, 428, 561, 64, 64,
4867 339, 230, 340, 64, 334, 0, 343, 0, 64, 64,
4868 0, 64, 59, 230, 64, 0, 0, 64, 64, 64,
4869 64, 0, 64, 64, 64, 64, 0, 64, 0, 230,
4870 0, 0, 230, 230, 64, 64, 64, 0, 0, 0,
4871 0, 230, 230, 230, 0, 64, 64, 0, 64, 0,
4872 230, 0, 230, 0, 0, 230, 0, 230, 0, 0,
4873 0, 230, 230, 64, 320, 0, 0, 0, 320, 0,
4874 316, 320, 320, 320, 230, 0, 320, 320, 320, 64,
4875 0, 320, 0, 230, 230, 231, 0, 0, 230, 0,
4876 0, 0, 0, 230, 230, 0, 230, 231, 0, 320,
4877 0, 320, 230, 230, 230, 0, 0, 230, 230, 230,
4878 230, 0, 230, 231, 0, 0, 231, 231, 0, 0,
4879 230, 230, 64, 0, 0, 231, 231, 231, 0, 0,
4880 230, 230, 0, 230, 231, 0, 231, 0, 0, 231,
4881 0, 231, 0, 0, 0, 231, 231, 0, 230, 0,
4882 0, 0, 0, 0, 0, 681, 682, 683, 231, 0,
4883 684, 685, 686, 0, 230, 687, 0, 231, 231, 124,
4884 0, 0, 231, 0, 0, 0, 0, 231, 231, 0,
4885 231, 124, 0, 688, 0, 689, 231, 231, 231, 0,
4886 0, 231, 231, 231, 231, 0, 231, 124, 0, 0,
4887 124, 124, 0, 0, 231, 231, 0, 230, 0, 124,
4888 124, 124, 0, 0, 231, 231, 0, 231, 124, 0,
4889 124, 0, 0, 124, 0, 124, 0, 0, 0, 124,
4890 124, 0, 231, 0, 0, 0, 0, 0, 0, 0,
4891 0, 0, 124, 0, 0, 0, 0, 0, 231, 0,
4892 0, 124, 124, 176, 0, 0, 124, 0, 0, 0,
4893 0, 124, 124, 0, 124, 176, 0, 0, 0, 0,
4894 124, 124, 124, 0, 0, 124, 124, 124, 124, 0,
4895 124, 176, 0, 0, 176, 176, 0, 0, 124, 124,
4896 0, 231, 0, 176, 176, 176, 0, 0, 124, 124,
4897 0, 124, 176, 0, 176, 0, 0, 176, 0, 176,
4898 0, 0, 0, 176, 176, 0, 124, 0, 0, 0,
4899 0, 0, 0, 0, 0, 0, 176, 0, 0, 0,
4900 0, 0, 124, 0, 0, 176, 176, 160, 0, 0,
4901 176, 0, 0, 0, 0, 176, 176, 0, 176, 160,
4902 0, 0, 0, 0, 176, 176, 176, 0, 0, 176,
4903 176, 176, 176, 0, 176, 160, 0, 0, 160, 160,
4904 0, 0, 176, 176, 0, 124, 0, 160, 160, 160,
4905 0, 0, 176, 176, 0, 176, 160, 0, 160, 0,
4906 0, 160, 0, 160, 0, 0, 0, 160, 160, 0,
4907 176, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4908 160, 0, 0, 0, 0, 0, 176, 0, 0, 160,
4909 160, 99, 0, 0, 160, 0, 0, 0, 0, 160,
4910 160, 0, 160, 99, 0, 0, 0, 0, 160, 160,
4911 160, 0, 0, 160, 160, 160, 160, 0, 160, 99,
4912 0, 0, 99, 99, 0, 0, 160, 160, 0, 176,
4913 0, 99, 99, 99, 0, 0, 160, 160, 0, 160,
4914 99, 0, 99, 0, 0, 99, 0, 99, 0, 0,
4915 0, 99, 99, 0, 160, 0, 0, 0, 0, 0,
4916 0, 0, 0, 0, 99, 0, 0, 0, 0, 0,
4917 160, 0, 0, 99, 99, 188, 0, 0, 99, 0,
4918 0, 0, 0, 99, 99, 0, 99, 188, 0, 0,
4919 0, 0, 99, 99, 99, 0, 0, 99, 99, 99,
4920 99, 0, 99, 188, 0, 0, 188, 188, 0, 0,
4921 99, 99, 0, 160, 0, 188, 188, 188, 0, 0,
4922 99, 99, 0, 99, 188, 0, 188, 0, 0, 188,
4923 0, 188, 0, 0, 0, 188, 188, 0, 99, 0,
4924 0, 0, 0, 0, 0, 0, 0, 0, 188, 0,
4925 0, 0, 0, 0, 99, 0, 0, 188, 188, 0,
4926 0, 0, 188, 0, 0, 0, 0, 188, 188, 0,
4927 188, 0, 0, 0, 0, 0, 188, 188, 188, 0,
4928 0, 188, 188, 188, 188, 0, 188, 0, 0, 0,
4929 0, 0, 0, 0, 188, 188, 0, 99, 0, 0,
4930 0, 0, 233, 0, 188, 188, 0, 188, 0, 0,
4931 0, 233, 233, 0, 233, 0, 233, 0, 0, 233,
4932 233, 233, 188, 233, 233, 233, 233, 0, 233, 233,
4933 233, 233, 233, 233, 233, 233, 0, 233, 188, 0,
4934 0, 233, 233, 0, 233, 0, 0, 0, 233, 0,
4935 0, 0, 0, 0, 0, 233, 233, 0, 0, 0,
4936 0, 0, 233, 0, 233, 0, 233, 0, 0, 0,
4937 450, 233, 44, 163, 0, 164, 0, 233, 0, 233,
4938 0, 188, 0, 0, 233, 233, 171, 233, 0, 0,
4939 233, 45, 0, 233, 233, 0, 0, 0, 179, 0,
4940 0, 0, 0, 0, 0, 181, 0, 0, 0, 233,
4941 0, 0, 0, 233, 0, 233, 46, 450, 450, 0,
4942 233, 233, 0, 0, 0, 0, 0, 233, 0, 0,
4943 233, 233, 183, 233, 0, 233, 233, 0, 184, 0,
4944 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4945 0, 450, 233, 0, 191, 47, 233, 0, 0, 233,
4946 233, 0, 0, 0, 0, 0, 450, 0, 0, 0,
4947 0, 0, 0, 450, 450, 0, 450, 450, 0, 0,
4948 0, 192, 193, 0, 451, 0, 0, 0, 194, 0,
4949 0, 233, 48, 233, 255, 233, 0, 233, 0, 233,
4950 0, 233, 0, 255, 255, 233, 255, 0, 255, 0,
4951 0, 255, 255, 255, 0, 255, 255, 255, 255, 0,
4952 255, 255, 255, 255, 255, 255, 255, 255, 0, 255,
4953 0, 451, 451, 255, 255, 0, 255, 0, 0, 0,
4954 255, 0, 0, 0, 0, 0, 0, 255, 255, 0,
4955 0, 0, 0, 0, 255, 0, 255, 0, 255, 0,
4956 0, 0, 0, 255, 0, 451, 49, 0, 0, 255,
4957 0, 255, 0, 0, 0, 0, 255, 255, 0, 255,
4958 451, 0, 255, 0, 0, 255, 255, 451, 451, 0,
4959 451, 451, 0, 0, 58, 0, 0, 0, 0, 0,
4960 0, 255, 0, 195, 0, 255, 0, 255, 0, 0,
4961 0, 0, 255, 255, 58, 58, 0, 0, 0, 255,
4962 0, 0, 255, 255, 0, 255, 0, 255, 255, 0,
4963 0, 0, 0, 0, 0, 0, 0, 58, 0, 0,
4964 0, 0, 0, 0, 255, 0, 58, 58, 255, 0,
4965 0, 255, 255, 0, 0, 58, 58, 58, 0, 0,
4966 58, 58, 58, 58, 0, 58, 0, 0, 0, 0,
4967 0, 0, 0, 58, 58, 0, 0, 0, 0, 0,
4968 0, 0, 0, 255, 58, 255, 219, 255, 0, 255,
4969 0, 255, 0, 255, 0, 219, 219, 255, 219, 0,
4970 219, 58, 0, 219, 219, 219, 0, 219, 219, 219,
4971 219, 0, 219, 219, 219, 219, 219, 219, 219, 219,
4972 0, 219, 0, 0, 0, 219, 219, 0, 219, 0,
4973 0, 128, 219, 0, 0, 452, 0, 0, 0, 219,
4974 219, 0, 0, 0, 129, 453, 219, 0, 219, 0,
4975 219, 0, 0, 0, 130, 219, 0, 454, 0, 0,
4976 0, 219, 0, 219, 455, 0, 0, 0, 219, 219,
4977 0, 219, 0, 0, 219, 0, 131, 219, 219, 0,
4978 0, 0, 0, 0, 0, 132, 58, 0, 0, 0,
4979 0, 0, 0, 219, 0, 196, 0, 219, 0, 219,
4980 0, 0, 0, 0, 219, 219, 58, 58, 0, 0,
4981 492, 219, 0, 0, 219, 219, 0, 219, 0, 219,
4982 219, 0, 0, 0, 0, 0, 0, 0, 0, 58,
4983 0, 0, 133, 456, 0, 0, 219, 0, 58, 58,
4984 219, 0, 0, 219, 219, 0, 0, 58, 58, 58,
4985 0, 0, 58, 58, 58, 58, 0, 58, 0, 0,
4986 0, 0, 0, 0, 0, 58, 58, 0, 0, 0,
4987 0, 0, 0, 0, 0, 219, 58, 219, 222, 219,
4988 0, 219, 0, 219, 0, 219, 0, 222, 222, 219,
4989 222, 0, 222, 58, 0, 222, 222, 222, 0, 222,
4990 222, 222, 222, 0, 222, 222, 222, 222, 222, 222,
4991 222, 222, 0, 222, 0, 0, 0, 222, 222, 0,
4992 222, 0, 0, 128, 222, 0, 0, 452, 0, 0,
4993 0, 222, 222, 0, 0, 0, 129, 453, 222, 0,
4994 222, 0, 222, 0, 0, 0, 130, 222, 0, 454,
4995 0, 0, 0, 222, 0, 222, 455, 0, 0, 0,
4996 222, 222, 0, 222, 0, 0, 222, 0, 131, 222,
4997 222, 0, 0, 0, 0, 0, 0, 132, 91, 0,
4998 0, 0, 0, 0, 0, 222, 0, 0, 0, 222,
4999 0, 222, 0, 0, 0, 0, 222, 222, 92, 0,
5000 0, 0, 0, 222, 0, 0, 222, 222, 0, 222,
5001 0, 222, 222, 0, 0, 0, 0, 0, 0, 0,
5002 0, 93, 0, 0, 133, 456, 0, 0, 222, 0,
5003 94, 95, 222, 0, 0, 222, 222, 0, 0, 96,
5004 97, 98, 0, 0, 99, 0, 100, 101, 0, 102,
5005 0, 0, 0, 0, 0, 0, 0, 103, 104, 0,
5006 0, 0, 0, 0, 0, 0, 0, 222, 0, 222,
5007 625, 222, 0, 222, 0, 222, 0, 222, 0, 44,
5008 163, 222, 164, 0, 165, 105, 0, 166, 167, 168,
5009 0, 169, 170, 171, 172, 0, 173, 174, 45, 626,
5010 175, 176, 177, 178, 0, 179, 0, 0, 0, 627,
5011 180, 0, 181, 0, 0, 0, 0, 0, 0, 0,
5012 0, 0, 0, 46, 68, 0, 0, 0, 0, 0,
5013 182, 0, 628, 0, 629, 0, 0, 0, 0, 183,
5014 0, 0, 0, 0, 0, 184, 0, 185, 0, 0,
5015 0, 0, 186, 187, 0, 188, 0, 0, 190, 0,
5016 0, 191, 47, 0, 0, 0, 0, 0, 0, 0,
5017 0, 0, 0, 0, 0, 0, 0, 630, 0, 0,
5018 0, 631, 0, 632, 0, 0, 0, 0, 192, 193,
5019 0, 0, 0, 0, 0, 194, 0, 0, 633, 48,
5020 0, 634, 0, 69, 635, 0, 0, 0, 0, 0,
5021 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5022 196, 0, 0, 326, 0, 0, 0, 197, 198, 0,
5023 0, 44, 163, 327, 164, 0, 165, 0, 0, 166,
5024 167, 168, 0, 169, 170, 171, 172, 0, 173, 174,
5025 45, 0, 175, 176, 177, 178, 0, 179, 0, 199,
5026 0, 200, 180, 201, 181, 202, 0, 203, 0, 204,
5027 0, 0, 0, 49, 0, 46, 68, 0, 0, 0,
5028 0, 0, 182, 0, 0, 0, 0, 0, 0, 0,
5029 0, 183, 0, 0, 0, 0, 0, 184, 0, 185,
5030 0, 0, 0, 0, 186, 187, 0, 188, 0, 189,
5031 190, 0, 0, 191, 47, 0, 0, 0, 0, 0,
5032 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5033 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5034 192, 193, 0, 0, 0, 0, 0, 194, 0, 0,
5035 0, 48, 0, 0, 0, 69, 0, 195, 0, 0,
5036 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5037 0, 0, 196, 0, 0, 705, 0, 0, 0, 197,
5038 198, 0, 0, 44, 163, 0, 164, 0, 165, 0,
5039 0, 166, 167, 168, 0, 169, 170, 171, 172, 0,
5040 173, 174, 45, 0, 175, 176, 177, 178, 0, 179,
5041 0, 199, 0, 200, 180, 201, 181, 202, 0, 203,
5042 0, 204, 0, 0, 0, 49, 0, 46, 68, 0,
5043 0, 0, 0, 0, 182, 0, 0, 0, 0, 0,
5044 0, 0, 0, 183, 0, 0, 0, 0, 0, 184,
5045 0, 185, 0, 0, 0, 0, 186, 187, 0, 188,
5046 0, 189, 190, 0, 0, 191, 47, 0, 0, 0,
5047 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5048 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5049 0, 0, 192, 193, 0, 0, 0, 0, 0, 194,
5050 0, 0, 0, 48, 0, 0, 0, 69, 0, 195,
5051 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5052 0, 0, 0, 0, 196, 0, 0, 0, 0, 0,
5053 0, 197, 198, 0, 0, 44, 163, 0, 164, 0,
5054 165, 0, 0, 166, 167, 168, 0, 169, 170, 171,
5055 172, 0, 173, 174, 45, 0, 175, 176, 177, 178,
5056 0, 179, 0, 199, 0, 200, 180, 201, 181, 202,
5057 0, 203, 0, 204, 0, 0, 0, 49, 0, 46,
5058 68, 0, 0, 0, 0, 0, 182, 0, 0, 0,
5059 0, 0, 0, 0, 0, 183, 0, 0, 0, 0,
5060 0, 184, 0, 185, 0, 0, 0, 0, 186, 187,
5061 0, 188, 0, 189, 190, 0, 0, 191, 47, 0,
5062 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5063 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5064 0, 0, 0, 0, 192, 193, 0, 0, 0, 0,
5065 0, 194, 0, 0, 0, 48, 0, 0, 0, 69,
5066 0, 195, 0, 0, 0, 0, 0, 0, 0, 0,
5067 0, 0, 0, 0, 0, 0, 196, 594, 610, 0,
5068 0, 0, 0, 197, 198, 0, 0, 44, 163, 0,
5069 164, 0, 165, 0, 0, 166, 167, 168, 0, 169,
5070 170, 171, 172, 0, 173, 174, 45, 0, 175, 176,
5071 177, 178, 0, 179, 0, 199, 0, 200, 180, 201,
5072 181, 202, 0, 203, 0, 204, 0, 0, 0, 49,
5073 0, 46, 68, 0, 0, 0, 0, 0, 182, 0,
5074 0, 0, 0, 0, 0, 0, 0, 183, 0, 0,
5075 0, 0, 0, 184, 0, 185, 0, 0, 0, 0,
5076 186, 187, 0, 188, 0, 189, 190, 0, 0, 191,
5077 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5078 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5079 0, 0, 0, 0, 0, 0, 192, 193, 0, 0,
5080 0, 0, 0, 194, 0, 0, 0, 48, 0, 0,
5081 0, 69, 0, 195, 0, 0, 0, 0, 0, 0,
5082 0, 0, 0, 0, 0, 0, 0, 0, 196, 594,
5083 0, 0, 0, 0, 0, 197, 198, 0, 0, 44,
5084 163, 0, 164, 0, 165, 0, 0, 166, 167, 168,
5085 0, 169, 170, 171, 172, 0, 173, 174, 45, 0,
5086 175, 176, 177, 178, 0, 179, 0, 199, 0, 200,
5087 180, 201, 181, 202, 0, 203, 0, 204, 0, 0,
5088 0, 49, 0, 46, 68, 0, 0, 0, 0, 0,
5089 182, 0, 0, 0, 0, 0, 0, 0, 0, 183,
5090 0, 0, 0, 0, 0, 184, 0, 185, 0, 0,
5091 0, 0, 186, 187, 0, 188, 0, 189, 190, 0,
5092 0, 191, 47, 0, 0, 0, 0, 0, 0, 0,
5093 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5094 0, 0, 0, 0, 0, 0, 0, 0, 192, 193,
5095 0, 0, 0, 0, 0, 194, 0, 0, 0, 48,
5096 0, 0, 0, 69, 0, 195, 0, 0, 0, 0,
5097 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5098 196, 0, 0, 0, 0, 0, 90, 197, 198, 0,
5099 0, 44, 163, 0, 164, 0, 165, 0, 0, 166,
5100 167, 168, 0, 169, 170, 171, 172, 0, 173, 174,
5101 45, 0, 175, 176, 177, 178, 0, 179, 0, 199,
5102 0, 200, 180, 201, 181, 202, 91, 203, 0, 204,
5103 0, 0, 0, 49, 0, 46, 68, 0, 0, 0,
5104 0, 0, 182, 0, 0, 0, 92, 0, 0, 0,
5105 0, 183, 0, 0, 0, 0, 0, 184, 0, 185,
5106 0, 0, 0, 0, 186, 187, 0, 188, 0, 93,
5107 190, 0, 0, 191, 47, 0, 0, 0, 94, 95,
5108 0, 0, 0, 0, 0, 0, 0, 96, 97, 98,
5109 0, 0, 99, 0, 100, 101, 0, 102, 0, 0,
5110 192, 193, 0, 0, 0, 103, 104, 194, 0, 0,
5111 0, 48, 0, 0, 0, 69, 0, 0, 0, 0,
5112 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5113 0, 0, 196, 105, 0, 0, 0, 0, 0, 197,
5114 198, 0, 0, 44, 163, 0, 164, 0, 165, 0,
5115 0, 166, 167, 168, 0, 169, 170, 171, 172, 0,
5116 173, 174, 45, 0, 175, 176, 177, 178, 0, 179,
5117 0, 199, 0, 200, 180, 201, 181, 202, 0, 203,
5118 0, 204, 0, 0, 0, 49, 0, 46, 68, 0,
5119 0, 0, 0, 0, 182, 58, 0, 0, 0, 0,
5120 0, 0, 0, 183, 0, 0, 0, 0, 0, 184,
5121 0, 185, 0, 0, 0, 0, 186, 187, 0, 188,
5122 0, 0, 190, 58, 0, 191, 47, 0, 0, 0,
5123 0, 0, 0, 0, 0, 58, 58, 0, 0, 0,
5124 0, 0, 0, 0, 0, 0, 58, 0, 0, 0,
5125 0, 0, 192, 193, 0, 58, 0, 0, 0, 194,
5126 0, 0, 0, 48, 0, 0, 0, 69, 58, 0,
5127 0, 0, 0, 0, 0, 0, 0, 58, 58, 0,
5128 0, 0, 58, 0, 196, 0, 0, 58, 58, 0,
5129 0, 0, 0, 0, 0, 0, 58, 58, 58, 0,
5130 0, 58, 0, 58, 58, 0, 58, 0, 0, 0,
5131 0, 0, 0, 0, 58, 58, 97, 0, 0, 0,
5132 0, 0, 0, 199, 58, 200, 0, 201, 0, 202,
5133 0, 203, 97, 204, 0, 97, 97, 49, 0, 0,
5134 0, 0, 58, 0, 97, 97, 97, 0, 0, 0,
5135 0, 0, 0, 97, 0, 97, 0, 0, 97, 0,
5136 97, 0, 0, 0, 97, 97, 0, 0, 0, 0,
5137 0, 0, 97, 0, 0, 97, 0, 97, 0, 0,
5138 0, 0, 0, 0, 0, 0, 97, 97, 0, 0,
5139 0, 0, 0, 0, 0, 0, 97, 97, 100, 97,
5140 0, 0, 0, 0, 0, 97, 97, 97, 0, 0,
5141 97, 97, 97, 97, 100, 97, 0, 100, 100, 0,
5142 0, 0, 0, 97, 97, 0, 100, 100, 100, 0,
5143 0, 0, 0, 97, 97, 100, 97, 100, 0, 0,
5144 100, 0, 100, 0, 0, 0, 100, 100, 0, 0,
5145 0, 97, 0, 0, 100, 0, 0, 0, 0, 100,
5146 0, 0, 0, 0, 0, 0, 0, 97, 100, 100,
5147 0, 0, 0, 0, 0, 0, 0, 0, 100, 100,
5148 0, 100, 0, 101, 0, 0, 0, 100, 100, 100,
5149 0, 0, 100, 100, 100, 100, 0, 100, 0, 101,
5150 0, 0, 101, 101, 0, 100, 100, 0, 0, 0,
5151 97, 101, 101, 101, 0, 100, 100, 0, 100, 0,
5152 101, 0, 101, 0, 0, 101, 0, 101, 0, 0,
5153 0, 101, 101, 100, 0, 0, 0, 0, 0, 101,
5154 0, 0, 0, 0, 101, 0, 0, 0, 0, 100,
5155 0, 0, 0, 101, 101, 0, 0, 0, 0, 0,
5156 0, 0, 0, 101, 101, 123, 101, 0, 0, 0,
5157 0, 0, 101, 101, 101, 0, 0, 101, 101, 101,
5158 101, 123, 101, 0, 123, 123, 0, 0, 0, 0,
5159 101, 101, 100, 123, 123, 123, 0, 0, 0, 0,
5160 101, 101, 123, 101, 123, 0, 0, 123, 0, 123,
5161 0, 0, 0, 123, 123, 0, 0, 0, 101, 0,
5162 0, 0, 0, 0, 0, 0, 123, 0, 0, 0,
5163 0, 0, 0, 0, 101, 123, 123, 0, 0, 0,
5164 0, 0, 0, 0, 0, 123, 123, 0, 123, 0,
5165 102, 0, 0, 0, 123, 123, 123, 0, 0, 123,
5166 123, 123, 123, 0, 123, 0, 102, 0, 0, 102,
5167 102, 0, 123, 123, 0, 0, 0, 101, 102, 102,
5168 102, 0, 123, 123, 0, 123, 0, 102, 0, 102,
5169 0, 0, 102, 0, 102, 0, 0, 0, 102, 102,
5170 123, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5171 0, 102, 0, 0, 0, 0, 123, 0, 0, 0,
5172 102, 102, 0, 0, 0, 0, 0, 0, 0, 0,
5173 102, 102, 211, 102, 0, 0, 0, 0, 0, 102,
5174 102, 102, 0, 0, 102, 102, 102, 102, 211, 102,
5175 0, 211, 211, 0, 0, 0, 0, 102, 102, 123,
5176 211, 211, 211, 0, 0, 0, 0, 102, 102, 211,
5177 102, 211, 211, 0, 211, 0, 211, 0, 0, 0,
5178 211, 211, 0, 0, 0, 102, 0, 0, 0, 0,
5179 0, 0, 0, 211, 0, 0, 0, 0, 0, 0,
5180 0, 102, 211, 211, 0, 0, 0, 0, 0, 0,
5181 0, 0, 211, 211, 0, 211, 0, 0, 0, 0,
5182 0, 211, 211, 211, 0, 0, 211, 0, 211, 211,
5183 0, 211, 0, 0, 0, 0, 0, 0, 0, 211,
5184 211, 0, 212, 0, 102, 0, 0, 0, 0, 211,
5185 211, 0, 211, 0, 0, 0, 0, 0, 212, 0,
5186 0, 212, 212, 0, 0, 0, 0, 211, 0, 0,
5187 212, 212, 212, 0, 0, 0, 0, 0, 211, 212,
5188 0, 212, 212, 0, 212, 0, 212, 0, 0, 0,
5189 212, 212, 0, 0, 0, 0, 0, 0, 0, 0,
5190 0, 0, 0, 212, 0, 0, 0, 0, 0, 0,
5191 0, 0, 212, 212, 0, 0, 0, 0, 0, 0,
5192 0, 0, 212, 212, 103, 212, 211, 0, 0, 0,
5193 0, 212, 212, 212, 0, 0, 212, 0, 212, 212,
5194 103, 212, 0, 103, 103, 0, 0, 0, 0, 212,
5195 212, 0, 103, 103, 103, 0, 0, 0, 0, 212,
5196 212, 103, 212, 103, 0, 0, 103, 0, 103, 0,
5197 0, 0, 103, 103, 0, 0, 0, 212, 0, 0,
5198 0, 0, 0, 0, 0, 103, 0, 0, 212, 0,
5199 0, 0, 0, 0, 103, 103, 0, 0, 0, 0,
5200 0, 0, 0, 0, 103, 103, 0, 103, 0, 138,
5201 0, 0, 0, 103, 103, 103, 0, 0, 103, 103,
5202 103, 103, 0, 103, 0, 138, 0, 0, 138, 138,
5203 0, 103, 103, 0, 0, 0, 212, 138, 138, 138,
5204 0, 103, 103, 0, 103, 0, 138, 0, 138, 0,
5205 0, 138, 0, 138, 0, 0, 0, 138, 138, 103,
5206 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5207 138, 0, 0, 0, 0, 103, 0, 0, 0, 138,
5208 138, 0, 0, 0, 0, 0, 0, 0, 0, 138,
5209 138, 227, 138, 0, 0, 0, 0, 0, 138, 138,
5210 138, 0, 0, 138, 138, 138, 138, 227, 138, 0,
5211 227, 227, 0, 0, 0, 0, 138, 138, 103, 227,
5212 227, 227, 0, 0, 0, 0, 138, 138, 227, 138,
5213 227, 0, 0, 227, 0, 227, 0, 0, 0, 227,
5214 227, 0, 0, 0, 138, 0, 0, 0, 0, 0,
5215 0, 0, 227, 0, 0, 0, 0, 0, 0, 0,
5216 138, 227, 227, 0, 0, 0, 0, 0, 0, 0,
5217 0, 227, 227, 0, 227, 0, 174, 0, 0, 0,
5218 227, 227, 227, 0, 0, 227, 227, 227, 227, 0,
5219 227, 0, 174, 0, 0, 174, 174, 0, 227, 227,
5220 0, 0, 0, 138, 174, 174, 174, 0, 227, 227,
5221 0, 227, 0, 174, 0, 174, 0, 0, 174, 0,
5222 174, 0, 0, 0, 174, 174, 227, 0, 0, 0,
5223 0, 0, 0, 0, 0, 0, 0, 174, 0, 0,
5224 0, 0, 227, 0, 0, 0, 174, 174, 0, 0,
5225 0, 0, 0, 0, 0, 0, 174, 174, 235, 174,
5226 0, 0, 0, 0, 0, 174, 174, 174, 0, 0,
5227 174, 174, 174, 174, 235, 174, 0, 235, 235, 0,
5228 0, 0, 0, 174, 174, 227, 235, 235, 235, 0,
5229 0, 0, 0, 174, 174, 235, 174, 235, 0, 0,
5230 235, 0, 235, 0, 0, 0, 235, 235, 0, 0,
5231 0, 174, 0, 0, 0, 0, 0, 0, 0, 235,
5232 0, 0, 0, 0, 0, 0, 0, 174, 235, 235,
5233 0, 0, 0, 0, 0, 0, 0, 0, 235, 235,
5234 0, 235, 0, 206, 0, 0, 0, 235, 235, 235,
5235 0, 0, 235, 235, 235, 235, 0, 235, 0, 206,
5236 0, 0, 206, 206, 0, 235, 235, 0, 0, 0,
5237 174, 206, 206, 206, 0, 235, 235, 0, 235, 0,
5238 206, 0, 206, 0, 0, 206, 0, 206, 0, 0,
5239 0, 206, 206, 235, 0, 0, 0, 0, 0, 0,
5240 0, 0, 0, 0, 206, 0, 0, 0, 0, 235,
5241 0, 0, 0, 206, 206, 0, 0, 0, 0, 0,
5242 0, 0, 0, 206, 206, 154, 206, 0, 0, 0,
5243 0, 0, 206, 206, 206, 0, 0, 206, 206, 206,
5244 206, 154, 206, 0, 154, 154, 0, 0, 0, 0,
5245 206, 206, 235, 154, 154, 154, 0, 0, 0, 0,
5246 206, 206, 154, 206, 154, 0, 0, 154, 0, 154,
5247 0, 0, 0, 154, 154, 0, 0, 0, 206, 0,
5248 0, 0, 0, 0, 0, 0, 154, 0, 0, 0,
5249 0, 0, 0, 0, 206, 154, 154, 0, 0, 0,
5250 0, 0, 0, 0, 0, 154, 154, 0, 154, 0,
5251 157, 0, 0, 0, 154, 154, 154, 0, 0, 154,
5252 154, 154, 154, 0, 154, 0, 157, 0, 0, 157,
5253 157, 0, 154, 154, 0, 0, 0, 206, 157, 157,
5254 157, 0, 154, 154, 0, 154, 0, 157, 0, 157,
5255 0, 0, 157, 0, 157, 0, 0, 0, 157, 157,
5256 154, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5257 0, 157, 0, 0, 0, 0, 154, 0, 0, 0,
5258 157, 157, 0, 0, 0, 0, 0, 0, 0, 0,
5259 157, 157, 58, 157, 0, 0, 0, 0, 0, 157,
5260 157, 157, 0, 0, 157, 157, 157, 157, 58, 157,
5261 0, 58, 58, 0, 0, 0, 0, 157, 157, 154,
5262 58, 58, 58, 0, 0, 0, 0, 157, 157, 125,
5263 157, 58, 0, 0, 58, 0, 58, 0, 0, 0,
5264 58, 58, 0, 0, 0, 157, 0, 0, 0, 0,
5265 0, 0, 0, 58, 0, 0, 0, 0, 0, 0,
5266 0, 157, 58, 58, 0, 0, 0, 0, 0, 0,
5267 0, 0, 58, 58, 0, 58, 0, 58, 0, 0,
5268 0, 58, 58, 58, 0, 0, 58, 58, 58, 58,
5269 0, 58, 0, 58, 0, 0, 58, 58, 0, 58,
5270 58, 0, 0, 0, 157, 58, 58, 58, 0, 58,
5271 58, 0, 58, 0, 126, 0, 58, 0, 0, 58,
5272 0, 58, 0, 0, 0, 58, 58, 58, 0, 0,
5273 0, 0, 0, 0, 0, 0, 0, 0, 58, 0,
5274 0, 0, 0, 0, 0, 0, 0, 58, 58, 0,
5275 0, 0, 0, 0, 0, 0, 0, 58, 58, 210,
5276 58, 0, 0, 0, 0, 0, 58, 58, 58, 0,
5277 0, 58, 58, 58, 58, 210, 58, 0, 210, 210,
5278 0, 0, 0, 0, 58, 58, 58, 210, 210, 210,
5279 0, 0, 0, 0, 58, 58, 210, 58, 210, 210,
5280 0, 210, 0, 210, 0, 0, 0, 210, 210, 0,
5281 0, 0, 58, 0, 0, 0, 0, 0, 0, 0,
5282 210, 0, 0, 0, 0, 0, 0, 0, 0, 210,
5283 210, 0, 0, 0, 0, 0, 0, 0, 0, 210,
5284 210, 0, 210, 0, 58, 0, 0, 0, 210, 210,
5285 210, 0, 0, 210, 0, 210, 210, 0, 210, 0,
5286 58, 0, 0, 58, 58, 0, 210, 210, 0, 0,
5287 0, 58, 58, 58, 58, 0, 210, 210, 0, 210,
5288 0, 139, 0, 58, 0, 0, 58, 0, 58, 0,
5289 0, 0, 58, 58, 210, 0, 0, 0, 0, 0,
5290 0, 0, 0, 0, 0, 58, 0, 0, 0, 0,
5291 0, 0, 0, 0, 58, 58, 0, 0, 0, 0,
5292 0, 0, 0, 0, 58, 58, 58, 58, 0, 0,
5293 0, 0, 0, 58, 58, 58, 0, 0, 58, 58,
5294 58, 58, 58, 58, 0, 58, 58, 0, 0, 0,
5295 0, 58, 58, 210, 58, 58, 58, 0, 0, 0,
5296 0, 58, 58, 140, 58, 58, 0, 0, 58, 0,
5297 58, 0, 0, 0, 58, 58, 0, 0, 0, 58,
5298 0, 0, 0, 0, 0, 0, 0, 58, 0, 0,
5299 0, 0, 0, 0, 0, 0, 58, 58, 0, 0,
5300 0, 0, 0, 470, 470, 0, 58, 58, 0, 58,
5301 0, 209, 0, 0, 0, 58, 58, 58, 0, 0,
5302 58, 58, 58, 58, 0, 58, 0, 209, 0, 0,
5303 209, 209, 0, 58, 58, 0, 0, 0, 58, 209,
5304 209, 209, 0, 58, 58, 0, 58, 0, 209, 470,
5305 209, 0, 0, 209, 0, 209, 0, 0, 0, 209,
5306 209, 58, 0, 0, 0, 470, 0, 0, 0, 0,
5307 0, 470, 209, 0, 0, 0, 480, 480, 470, 0,
5308 0, 209, 209, 0, 0, 0, 0, 0, 0, 0,
5309 0, 209, 209, 0, 209, 0, 470, 470, 0, 0,
5310 209, 209, 209, 0, 0, 209, 0, 209, 209, 0,
5311 209, 0, 0, 0, 0, 0, 0, 0, 209, 209,
5312 58, 0, 480, 0, 0, 0, 385, 385, 209, 209,
5313 470, 209, 0, 0, 0, 0, 0, 0, 0, 0,
5314 0, 0, 0, 0, 480, 470, 209, 0, 0, 0,
5315 470, 480, 470, 470, 0, 470, 470, 470, 470, 470,
5316 470, 470, 470, 470, 470, 0, 470, 470, 0, 480,
5317 480, 0, 385, 0, 0, 0, 0, 470, 0, 470,
5318 0, 470, 0, 0, 0, 470, 0, 470, 0, 0,
5319 0, 0, 0, 0, 385, 0, 0, 0, 0, 362,
5320 362, 385, 0, 480, 0, 209, 0, 0, 0, 0,
5321 0, 0, 0, 0, 0, 0, 0, 0, 480, 385,
5322 385, 0, 0, 480, 0, 480, 480, 480, 480, 480,
5323 480, 480, 480, 480, 480, 480, 480, 480, 0, 480,
5324 480, 0, 0, 0, 0, 362, 0, 0, 0, 0,
5325 480, 0, 480, 385, 480, 0, 0, 0, 480, 0,
5326 480, 0, 0, 0, 0, 0, 0, 362, 385, 0,
5327 0, 0, 0, 384, 362, 385, 385, 384, 385, 385,
5328 385, 385, 385, 385, 385, 385, 385, 385, 0, 385,
5329 385, 0, 362, 362, 0, 0, 319, 319, 0, 0,
5330 385, 0, 385, 0, 385, 0, 0, 0, 385, 0,
5331 385, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5332 0, 0, 0, 0, 0, 0, 362, 0, 0, 0,
5333 0, 0, 0, 0, 415, 415, 0, 0, 0, 0,
5334 0, 362, 319, 0, 0, 0, 362, 0, 362, 362,
5335 0, 362, 362, 362, 362, 362, 362, 362, 362, 362,
5336 362, 0, 362, 362, 319, 0, 0, 0, 0, 0,
5337 0, 319, 0, 362, 0, 362, 0, 362, 0, 0,
5338 415, 362, 0, 362, 0, 0, 0, 0, 0, 319,
5339 319, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5340 0, 0, 415, 0, 0, 0, 0, 0, 0, 415,
5341 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5342 0, 0, 0, 319, 0, 0, 0, 415, 415, 0,
5343 0, 416, 416, 0, 0, 0, 0, 0, 319, 0,
5344 0, 0, 0, 0, 0, 319, 319, 319, 319, 319,
5345 319, 319, 319, 319, 319, 319, 319, 319, 0, 319,
5346 319, 415, 0, 0, 0, 0, 0, 0, 0, 0,
5347 319, 0, 319, 0, 319, 0, 415, 416, 319, 0,
5348 319, 417, 417, 415, 415, 0, 415, 415, 415, 415,
5349 415, 415, 415, 415, 415, 415, 0, 415, 415, 416,
5350 0, 0, 0, 0, 0, 0, 416, 0, 415, 0,
5351 415, 0, 415, 0, 0, 0, 415, 0, 415, 0,
5352 0, 0, 0, 0, 416, 416, 0, 417, 44, 44,
5353 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5354 0, 0, 0, 0, 0, 0, 0, 0, 0, 417,
5355 0, 0, 0, 0, 0, 0, 417, 0, 416, 0,
5356 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5357 0, 0, 0, 416, 417, 417, 0, 0, 423, 423,
5358 416, 416, 0, 416, 416, 416, 416, 416, 416, 416,
5359 416, 416, 416, 0, 416, 416, 44, 0, 0, 0,
5360 0, 0, 0, 44, 0, 416, 0, 416, 417, 416,
5361 0, 0, 0, 416, 0, 416, 0, 0, 0, 0,
5362 0, 44, 44, 417, 423, 0, 0, 0, 424, 424,
5363 417, 417, 0, 417, 417, 417, 417, 417, 417, 417,
5364 417, 417, 0, 0, 417, 417, 423, 0, 0, 0,
5365 0, 0, 0, 423, 0, 417, 0, 417, 0, 417,
5366 0, 0, 0, 417, 0, 417, 0, 0, 0, 0,
5367 44, 423, 423, 0, 424, 44, 0, 0, 44, 44,
5368 44, 0, 44, 44, 44, 44, 44, 44, 44, 44,
5369 0, 44, 44, 0, 0, 0, 424, 0, 0, 0,
5370 425, 425, 44, 424, 44, 423, 44, 0, 0, 0,
5371 44, 0, 44, 0, 0, 0, 0, 0, 0, 0,
5372 423, 424, 424, 0, 0, 0, 0, 423, 423, 0,
5373 423, 423, 423, 423, 423, 423, 423, 0, 0, 0,
5374 0, 423, 423, 426, 426, 0, 425, 0, 0, 0,
5375 0, 0, 423, 0, 423, 424, 423, 0, 0, 0,
5376 423, 0, 423, 0, 0, 0, 0, 0, 425, 0,
5377 424, 0, 0, 0, 0, 425, 0, 424, 424, 0,
5378 424, 424, 424, 424, 424, 424, 424, 0, 0, 426,
5379 0, 424, 424, 425, 425, 427, 427, 0, 0, 0,
5380 0, 0, 424, 0, 424, 0, 424, 0, 0, 0,
5381 424, 426, 424, 0, 0, 0, 0, 0, 426, 0,
5382 0, 0, 0, 0, 0, 0, 0, 425, 0, 0,
5383 0, 0, 0, 0, 0, 0, 426, 426, 0, 0,
5384 0, 427, 425, 0, 0, 428, 428, 0, 0, 425,
5385 425, 0, 425, 425, 425, 425, 425, 425, 425, 0,
5386 0, 0, 0, 427, 425, 0, 0, 0, 0, 0,
5387 426, 0, 0, 0, 425, 0, 425, 0, 425, 0,
5388 0, 0, 425, 0, 425, 426, 0, 0, 427, 427,
5389 0, 428, 426, 426, 0, 426, 426, 426, 426, 426,
5390 426, 426, 0, 0, 0, 0, 0, 426, 0, 0,
5391 0, 0, 0, 428, 429, 429, 0, 426, 0, 426,
5392 0, 426, 427, 0, 0, 426, 0, 426, 0, 0,
5393 0, 0, 0, 0, 0, 0, 0, 427, 428, 428,
5394 0, 0, 0, 0, 427, 427, 0, 427, 427, 427,
5395 427, 427, 427, 427, 0, 0, 0, 0, 0, 427,
5396 429, 0, 0, 0, 430, 430, 0, 0, 0, 427,
5397 0, 427, 428, 427, 0, 0, 0, 427, 0, 427,
5398 0, 0, 429, 0, 0, 0, 0, 428, 0, 0,
5399 0, 0, 0, 0, 428, 428, 0, 428, 428, 428,
5400 428, 428, 428, 428, 0, 0, 0, 429, 429, 428,
5401 430, 0, 0, 0, 431, 431, 0, 0, 0, 428,
5402 0, 428, 0, 428, 0, 0, 0, 428, 0, 428,
5403 0, 0, 430, 0, 0, 0, 0, 0, 0, 0,
5404 0, 429, 0, 0, 0, 0, 0, 0, 0, 0,
5405 0, 0, 0, 0, 0, 0, 429, 430, 430, 0,
5406 431, 0, 0, 429, 429, 0, 429, 429, 429, 429,
5407 429, 429, 429, 0, 0, 0, 0, 0, 429, 0,
5408 0, 0, 431, 432, 432, 0, 0, 0, 429, 0,
5409 429, 430, 429, 0, 0, 0, 429, 0, 429, 0,
5410 0, 0, 0, 0, 0, 0, 430, 431, 431, 0,
5411 0, 0, 0, 430, 430, 0, 430, 430, 0, 0,
5412 430, 430, 430, 0, 0, 0, 0, 0, 430, 432,
5413 0, 0, 0, 433, 433, 0, 0, 0, 430, 0,
5414 430, 431, 430, 0, 0, 0, 430, 0, 430, 0,
5415 0, 432, 0, 0, 0, 0, 431, 0, 0, 0,
5416 0, 0, 0, 431, 431, 0, 431, 431, 0, 0,
5417 431, 431, 431, 0, 0, 0, 432, 432, 431, 433,
5418 0, 0, 0, 434, 434, 0, 0, 0, 431, 0,
5419 431, 0, 431, 0, 0, 0, 431, 0, 431, 0,
5420 0, 433, 0, 0, 0, 0, 0, 0, 0, 0,
5421 432, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5422 435, 435, 0, 0, 0, 432, 433, 433, 0, 434,
5423 0, 0, 432, 432, 0, 432, 432, 0, 0, 432,
5424 432, 432, 0, 0, 0, 0, 0, 0, 0, 0,
5425 0, 434, 0, 0, 0, 480, 480, 432, 0, 432,
5426 433, 432, 0, 0, 0, 432, 435, 432, 0, 0,
5427 0, 0, 0, 0, 0, 433, 434, 434, 0, 0,
5428 0, 0, 433, 433, 0, 433, 433, 0, 435, 433,
5429 433, 433, 442, 442, 0, 0, 0, 0, 0, 0,
5430 0, 480, 0, 0, 0, 0, 0, 433, 0, 433,
5431 434, 433, 0, 435, 435, 433, 0, 433, 0, 0,
5432 0, 0, 0, 480, 0, 434, 0, 0, 0, 0,
5433 0, 0, 434, 434, 0, 434, 434, 0, 442, 434,
5434 434, 434, 436, 436, 0, 0, 0, 435, 480, 480,
5435 0, 0, 0, 0, 0, 0, 0, 434, 0, 434,
5436 442, 434, 435, 0, 0, 434, 0, 434, 0, 435,
5437 435, 0, 435, 435, 0, 0, 435, 435, 435, 438,
5438 438, 0, 480, 0, 0, 442, 442, 0, 436, 0,
5439 0, 0, 439, 439, 435, 0, 435, 480, 435, 0,
5440 0, 0, 0, 0, 480, 480, 0, 480, 480, 0,
5441 436, 480, 480, 480, 0, 0, 0, 0, 0, 442,
5442 0, 0, 0, 0, 0, 438, 0, 0, 0, 480,
5443 0, 480, 0, 480, 442, 436, 436, 0, 439, 0,
5444 0, 442, 442, 0, 442, 442, 0, 438, 442, 442,
5445 442, 0, 0, 0, 0, 0, 0, 0, 440, 440,
5446 439, 0, 0, 0, 0, 0, 442, 0, 442, 436,
5447 442, 0, 438, 438, 0, 0, 0, 0, 0, 0,
5448 0, 0, 0, 0, 436, 439, 439, 0, 0, 0,
5449 0, 436, 436, 0, 436, 436, 0, 0, 436, 436,
5450 436, 441, 441, 0, 440, 0, 438, 0, 0, 0,
5451 0, 0, 0, 0, 0, 0, 436, 0, 436, 439,
5452 436, 438, 0, 0, 0, 0, 440, 0, 438, 438,
5453 0, 438, 438, 0, 439, 438, 438, 438, 0, 0,
5454 0, 439, 439, 0, 439, 439, 0, 441, 439, 439,
5455 439, 440, 440, 438, 0, 438, 0, 438, 0, 0,
5456 0, 0, 0, 0, 0, 0, 439, 0, 439, 441,
5457 439, 437, 437, 0, 0, 0, 0, 0, 0, 0,
5458 0, 0, 0, 0, 0, 440, 0, 0, 0, 0,
5459 0, 0, 0, 0, 441, 441, 0, 0, 0, 0,
5460 440, 0, 0, 0, 0, 0, 0, 440, 440, 0,
5461 440, 440, 0, 0, 440, 440, 440, 437, 0, 0,
5462 0, 0, 0, 0, 0, 0, 0, 0, 441, 0,
5463 0, 0, 440, 0, 440, 0, 440, 0, 0, 437,
5464 0, 0, 0, 441, 0, 0, 0, 0, 0, 0,
5465 441, 441, 0, 441, 441, 0, 0, 441, 441, 441,
5466 0, 0, 0, 0, 437, 437, 0, 0, 0, 0,
5467 0, 21, 0, 0, 0, 441, 0, 441, 0, 441,
5468 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5469 0, 0, 0, 0, 0, 0, 0, 0, 437, 21,
5470 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5471 0, 21, 21, 437, 0, 0, 0, 0, 0, 0,
5472 437, 437, 21, 437, 437, 0, 0, 437, 437, 437,
5473 0, 21, 0, 0, 0, 0, 0, 0, 0, 0,
5474 21, 0, 0, 19, 21, 437, 0, 437, 0, 437,
5475 0, 0, 0, 21, 21, 0, 0, 0, 21, 0,
5476 0, 0, 0, 21, 21, 0, 0, 0, 21, 0,
5477 0, 19, 21, 21, 21, 0, 0, 21, 0, 21,
5478 21, 0, 21, 19, 19, 0, 0, 0, 0, 0,
5479 21, 21, 0, 0, 19, 0, 0, 0, 0, 0,
5480 21, 0, 0, 19, 0, 0, 0, 0, 0, 0,
5481 0, 0, 19, 0, 0, 20, 19, 0, 21, 0,
5482 0, 0, 0, 0, 0, 19, 19, 0, 0, 0,
5483 19, 0, 0, 0, 21, 19, 19, 0, 0, 0,
5484 19, 0, 0, 20, 19, 19, 19, 0, 0, 19,
5485 0, 19, 19, 0, 19, 20, 20, 0, 0, 0,
5486 0, 0, 19, 19, 0, 0, 20, 0, 0, 0,
5487 0, 0, 19, 0, 0, 20, 0, 0, 0, 0,
5488 0, 0, 0, 0, 20, 0, 0, 7, 20, 0,
5489 19, 0, 0, 0, 0, 0, 0, 20, 20, 0,
5490 0, 0, 20, 0, 0, 0, 19, 20, 20, 0,
5491 0, 0, 20, 0, 0, 7, 20, 20, 20, 0,
5492 0, 20, 0, 20, 20, 0, 20, 7, 7, 0,
5493 0, 0, 0, 0, 20, 20, 0, 0, 7, 0,
5494 0, 0, 0, 0, 20, 0, 0, 7, 0, 0,
5495 0, 0, 0, 0, 0, 0, 7, 0, 0, 8,
5496 7, 0, 20, 0, 0, 0, 0, 0, 0, 7,
5497 7, 0, 0, 0, 7, 0, 0, 0, 20, 7,
5498 7, 0, 0, 0, 0, 0, 0, 8, 7, 7,
5499 7, 0, 0, 7, 0, 7, 7, 0, 7, 8,
5500 8, 0, 0, 0, 0, 0, 7, 7, 0, 0,
5501 8, 0, 0, 0, 0, 0, 7, 0, 0, 8,
5502 0, 0, 0, 0, 0, 0, 0, 0, 8, 0,
5503 0, 50, 8, 0, 7, 0, 0, 0, 0, 0,
5504 0, 8, 8, 0, 0, 0, 8, 0, 0, 0,
5505 7, 8, 8, 0, 0, 0, 0, 0, 0, 50,
5506 8, 8, 8, 0, 0, 8, 0, 8, 8, 0,
5507 8, 50, 50, 0, 0, 0, 0, 0, 8, 8,
5508 0, 0, 50, 0, 0, 0, 0, 0, 8, 0,
5509 0, 50, 0, 0, 0, 0, 0, 0, 0, 0,
5510 50, 0, 0, 89, 50, 0, 8, 0, 0, 0,
5511 0, 0, 0, 50, 50, 0, 0, 0, 50, 0,
5512 0, 0, 8, 50, 50, 0, 0, 0, 0, 0,
5513 0, 89, 50, 50, 50, 0, 0, 50, 0, 50,
5514 50, 0, 50, 89, 89, 0, 0, 0, 0, 0,
5515 50, 50, 89, 0, 89, 0, 0, 0, 0, 0,
5516 50, 0, 0, 89, 0, 0, 0, 0, 0, 0,
5517 0, 0, 0, 0, 0, 46, 89, 0, 50, 0,
5518 0, 0, 0, 0, 0, 89, 89, 0, 0, 0,
5519 89, 0, 0, 0, 50, 89, 89, 0, 0, 0,
5520 0, 0, 0, 46, 89, 89, 89, 0, 0, 89,
5521 0, 89, 89, 0, 89, 46, 46, 0, 0, 0,
5522 0, 0, 89, 89, 0, 0, 46, 0, 0, 0,
5523 0, 0, 89, 0, 0, 46, 0, 0, 0, 0,
5524 0, 0, 0, 0, 0, 0, 0, 47, 46, 0,
5525 89, 0, 0, 0, 0, 0, 0, 46, 46, 0,
5526 0, 0, 46, 0, 0, 0, 89, 46, 46, 0,
5527 0, 0, 0, 0, 0, 47, 46, 46, 46, 0,
5528 0, 46, 0, 46, 46, 0, 46, 47, 47, 0,
5529 0, 0, 0, 0, 46, 46, 0, 0, 47, 0,
5530 0, 0, 0, 0, 46, 0, 0, 47, 0, 0,
5531 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5532 47, 0, 46, 0, 0, 0, 0, 0, 0, 47,
5533 47, 0, 0, 0, 47, 0, 0, 0, 46, 47,
5534 47, 0, 0, 0, 0, 0, 0, 88, 47, 47,
5535 47, 0, 0, 47, 0, 47, 47, 0, 47, 88,
5536 88, 0, 0, 0, 0, 0, 47, 47, 88, 0,
5537 88, 0, 0, 0, 0, 0, 47, 0, 0, 88,
5538 0, 0, 0, 0, 0, 0, 0, 0, 185, 0,
5539 0, 0, 88, 0, 47, 0, 0, 185, 0, 0,
5540 0, 88, 88, 0, 0, 0, 88, 0, 185, 185,
5541 47, 88, 88, 0, 0, 0, 0, 0, 0, 185,
5542 88, 88, 88, 0, 0, 88, 0, 88, 88, 0,
5543 88, 185, 0, 0, 0, 0, 0, 0, 88, 88,
5544 185, 185, 0, 0, 0, 0, 0, 0, 88, 185,
5545 185, 185, 0, 193, 185, 185, 185, 185, 0, 185,
5546 0, 0, 193, 0, 0, 0, 88, 185, 185, 0,
5547 0, 0, 0, 193, 193, 0, 0, 0, 185, 0,
5548 0, 0, 88, 189, 193, 0, 0, 0, 0, 0,
5549 0, 0, 189, 0, 0, 185, 193, 0, 0, 0,
5550 0, 0, 0, 189, 189, 193, 193, 0, 0, 0,
5551 0, 185, 0, 0, 193, 193, 193, 0, 190, 193,
5552 193, 193, 193, 0, 193, 0, 189, 190, 0, 0,
5553 0, 0, 193, 193, 0, 189, 189, 0, 190, 190,
5554 0, 0, 0, 193, 189, 189, 189, 0, 202, 189,
5555 189, 189, 189, 0, 189, 0, 0, 202, 0, 0,
5556 193, 190, 189, 189, 0, 0, 0, 0, 202, 202,
5557 190, 190, 0, 189, 0, 0, 193, 0, 0, 190,
5558 190, 190, 0, 203, 190, 190, 190, 190, 0, 190,
5559 189, 202, 203, 0, 0, 0, 0, 190, 190, 0,
5560 202, 202, 0, 203, 203, 0, 189, 0, 190, 202,
5561 202, 202, 0, 184, 202, 202, 202, 202, 0, 202,
5562 0, 0, 184, 0, 0, 190, 203, 202, 202, 0,
5563 0, 0, 0, 184, 184, 203, 203, 0, 202, 0,
5564 0, 190, 0, 0, 203, 203, 203, 0, 0, 203,
5565 203, 203, 203, 0, 203, 202, 184, 0, 0, 0,
5566 0, 0, 203, 203, 0, 184, 184, 0, 0, 0,
5567 0, 202, 0, 203, 184, 184, 184, 0, 0, 184,
5568 184, 184, 184, 0, 184, 0, 58, 0, 0, 0,
5569 203, 0, 184, 184, 0, 0, 0, 0, 58, 58,
5570 0, 0, 0, 184, 0, 0, 203, 22, 0, 58,
5571 0, 0, 0, 0, 0, 0, 0, 0, 58, 0,
5572 184, 0, 0, 0, 0, 0, 58, 0, 0, 0,
5573 0, 58, 0, 0, 0, 0, 184, 0, 58, 58,
5574 58, 58, 0, 0, 0, 58, 0, 23, 0, 58,
5575 58, 58, 0, 0, 0, 0, 0, 0, 58, 58,
5576 58, 58, 0, 0, 58, 0, 58, 58, 0, 58,
5577 0, 58, 0, 0, 0, 0, 0, 58, 58, 0,
5578 58, 58, 0, 0, 0, 58, 0, 58, 0, 0,
5579 58, 58, 0, 0, 0, 0, 0, 0, 58, 58,
5580 58, 58, 0, 0, 58, 58, 58, 58, 0, 58,
5581 58, 58, 0, 0, 0, 0, 0, 58, 58, 0,
5582 0, 58, 0, 0, 0, 0, 0, 58, 0, 0,
5583 58, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5584 0, 0, 0, 58, 0, 58, 0, 0, 0, 0,
5585 0, 0, 58, 58, 0, 0, 0, 58, 0, 0,
5586 0, 0, 58, 58, 0, 0, 0, 0, 0, 0,
5587 0, 58, 58, 58, 0, 0, 58, 0, 58, 58,
5588 0, 58, 0, 0, 0, 0, 0, 0, 0, 58,
5589 58, 0, 0, 0, 0, 0, 0, 0, 0, 58,
5590 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5591 0, 0, 0, 0, 0, 0, 0, 58,
5593 protected static short [] yyCheck = { 73,
5594 0, 306, 188, 24, 188, 56, 23, 313, 466, 257,
5595 601, 324, 318, 266, 269, 256, 266, 407, 306, 266,
5596 309, 165, 269, 306, 288, 325, 410, 306, 266, 449,
5597 30, 309, 266, 33, 34, 56, 267, 449, 269, 314,
5598 319, 288, 197, 198, 372, 23, 319, 266, 289, 313,
5599 266, 594, 52, 269, 306, 410, 319, 288, 309, 414,
5600 77, 78, 269, 304, 305, 306, 313, 253, 659, 253,
5601 398, 309, 288, 269, 665, 459, 262, 55, 262, 266,
5602 623, 288, 313, 324, 266, 309, 544, 375, 546, 326,
5603 309, 309, 288, 146, 189, 331, 516, 313, 76, 306,
5604 78, 309, 375, 615, 516, 352, 313, 407, 339, 354,
5605 306, 128, 375, 130, 131, 132, 133, 313, 393, 309,
5606 384, 352, 309, 375, 309, 414, 415, 282, 283, 146,
5607 520, 414, 420, 319, 389, 319, 352, 281, 325, 156,
5608 157, 420, 389, 196, 122, 352, 269, 309, 126, 309,
5609 463, 269, 269, 266, 154, 155, 352, 309, 389, 159,
5610 160, 161, 415, 413, 415, 288, 413, 407, 680, 627,
5611 288, 288, 420, 389, 360, 153, 410, 266, 690, 413,
5612 420, 415, 389, 306, 574, 419, 372, 699, 306, 780,
5613 313, 410, 416, 389, 309, 313, 313, 415, 384, 385,
5614 384, 385, 592, 298, 299, 796, 718, 260, 261, 445,
5615 188, 447, 398, 420, 604, 605, 463, 309, 309, 272,
5616 309, 274, 463, 410, 420, 415, 416, 280, 345, 352,
5617 415, 413, 463, 415, 352, 352, 541, 419, 449, 271,
5618 635, 273, 637, 309, 430, 318, 430, 463, 449, 269,
5619 449, 352, 353, 415, 254, 415, 463, 274, 275, 325,
5620 277, 278, 414, 309, 416, 285, 389, 463, 288, 289,
5621 309, 389, 389, 326, 327, 253, 410, 269, 298, 299,
5622 414, 676, 303, 420, 262, 309, 591, 308, 308, 310,
5623 802, 311, 804, 313, 309, 309, 288, 463, 318, 694,
5624 413, 416, 415, 609, 419, 516, 419, 358, 422, 423,
5625 330, 354, 449, 266, 387, 516, 309, 516, 309, 339,
5626 309, 313, 414, 355, 344, 416, 415, 416, 269, 361,
5627 419, 412, 352, 311, 415, 547, 415, 358, 309, 269,
5628 463, 319, 421, 319, 364, 463, 463, 288, 560, 370,
5629 536, 368, 536, 539, 325, 539, 309, 378, 288, 269,
5630 352, 271, 757, 273, 407, 760, 386, 387, 420, 389,
5631 416, 269, 313, 271, 769, 273, 415, 416, 288, 516,
5632 419, 413, 360, 313, 570, 419, 570, 404, 309, 695,
5633 288, 415, 416, 414, 372, 419, 396, 389, 309, 375,
5634 309, 416, 416, 313, 799, 795, 384, 385, 309, 409,
5635 410, 352, 433, 413, 325, 313, 318, 459, 615, 410,
5636 398, 816, 352, 416, 415, 416, 447, 416, 419, 429,
5637 309, 306, 432, 309, 487, 452, 436, 454, 455, 456,
5638 315, 419, 352, 463, 420, 355, 325, 419, 389, 466,
5639 450, 361, 430, 38, 352, 476, 41, 355, 415, 389,
5640 615, 306, 364, 361, 421, 271, 519, 273, 698, 318,
5641 625, 463, 414, 690, 319, 492, 631, 390, 445, 389,
5642 447, 66, 699, 680, 23, 387, 269, 270, 488, 272,
5643 720, 389, 407, 690, 415, 416, 309, 309, 419, 413,
5644 283, 718, 699, 413, 504, 288, 420, 415, 525, 526,
5645 527, 511, 295, 417, 418, 364, 55, 534, 571, 302,
5646 344, 718, 463, 523, 309, 680, 413, 544, 415, 546,
5647 313, 309, 585, 463, 413, 690, 415, 76, 387, 78,
5648 419, 594, 542, 276, 699, 306, 329, 777, 548, 355,
5649 306, 309, 335, 463, 315, 361, 786, 557, 536, 315,
5650 790, 539, 345, 718, 309, 463, 566, 449, 351, 352,
5651 623, 304, 305, 306, 410, 713, 629, 807, 390, 632,
5652 633, 634, 315, 122, 266, 802, 724, 804, 774, 589,
5653 774, 821, 570, 405, 416, 378, 379, 671, 598, 413,
5654 412, 413, 385, 415, 416, 802, 389, 804, 266, 626,
5655 627, 749, 309, 630, 153, 410, 616, 617, 618, 413,
5656 620, 415, 263, 264, 624, 410, 272, 309, 274, 414,
5657 683, 416, 417, 418, 419, 263, 264, 422, 423, 424,
5658 410, 309, 427, 325, 356, 357, 276, 802, 510, 804,
5659 703, 704, 705, 331, 707, 708, 709, 710, 711, 712,
5660 445, 414, 447, 269, 413, 414, 719, 410, 309, 722,
5661 691, 809, 435, 811, 304, 305, 306, 413, 540, 285,
5662 463, 414, 288, 289, 415, 315, 286, 287, 356, 357,
5663 269, 415, 298, 299, 503, 716, 717, 309, 413, 508,
5664 415, 414, 308, 565, 419, 311, 285, 313, 725, 288,
5665 289, 309, 318, 787, 405, 356, 357, 770, 410, 298,
5666 299, 424, 390, 532, 330, 587, 266, 306, 426, 308,
5667 289, 290, 311, 339, 313, 300, 301, 405, 427, 318,
5668 740, 419, 420, 421, 412, 413, 352, 415, 416, 390,
5669 338, 330, 463, 573, 563, 564, 410, 410, 364, 437,
5670 339, 439, 762, 441, 405, 782, 766, 767, 410, 309,
5671 413, 412, 413, 352, 415, 416, 328, 328, 390, 779,
5672 386, 387, 602, 389, 414, 325, 415, 413, 608, 304,
5673 305, 306, 390, 405, 614, 415, 774, 797, 413, 415,
5674 412, 413, 413, 415, 416, 306, 325, 386, 387, 413,
5675 389, 413, 415, 257, 412, 413, 260, 415, 416, 304,
5676 305, 306, 306, 823, 824, 269, 270, 271, 272, 273,
5677 274, 415, 276, 277, 278, 279, 413, 281, 282, 283,
5678 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
5679 413, 295, 344, 297, 298, 299, 300, 463, 302, 306,
5680 304, 305, 306, 339, 308, 413, 413, 311, 308, 313,
5681 314, 315, 306, 317, 318, 319, 320, 410, 322, 306,
5682 324, 419, 415, 416, 463, 329, 330, 410, 421, 306,
5683 266, 335, 195, 337, 266, 339, 340, 410, 342, 343,
5684 344, 345, 285, 386, 348, 349, 350, 351, 352, 419,
5685 330, 355, 410, 325, 358, 359, 360, 361, 413, 363,
5686 364, 365, 366, 367, 368, 413, 413, 371, 410, 373,
5687 475, 375, 376, 377, 378, 379, 415, 415, 269, 410,
5688 415, 385, 386, 387, 388, 389, 415, 391, 261, 393,
5689 394, 413, 414, 415, 285, 376, 419, 288, 289, 419,
5690 404, 382, 413, 414, 415, 419, 410, 298, 299, 419,
5691 414, 419, 261, 417, 418, 306, 420, 308, 419, 276,
5692 311, 419, 313, 413, 414, 415, 257, 318, 291, 292,
5693 293, 294, 295, 296, 297, 419, 306, 306, 269, 330,
5694 271, 422, 273, 413, 306, 449, 387, 451, 339, 453,
5695 306, 455, 285, 457, 285, 459, 285, 288, 289, 463,
5696 285, 352, 410, 444, 364, 298, 297, 298, 299, 298,
5697 375, 319, 388, 298, 266, 308, 394, 308, 387, 308,
5698 311, 324, 313, 308, 306, 306, 317, 318, 319, 306,
5699 318, 394, 413, 474, 306, 386, 387, 330, 389, 330,
5700 324, 330, 306, 319, 324, 330, 339, 375, 339, 340,
5701 339, 344, 306, 344, 339, 344, 324, 414, 349, 350,
5702 309, 352, 309, 309, 355, 413, 413, 358, 359, 360,
5703 361, 413, 363, 364, 365, 366, 257, 368, 413, 413,
5704 419, 413, 309, 309, 375, 376, 377, 309, 269, 413,
5705 271, 303, 273, 386, 8, 386, 387, 386, 389, 15,
5706 25, 386, 78, 111, 285, 122, 302, 288, 289, 274,
5707 107, 275, 463, 404, 516, 378, 297, 298, 299, 158,
5708 626, 476, 422, 309, 374, 370, 588, 308, 447, 420,
5709 311, 717, 313, 627, 716, 765, 317, 318, 319, 429,
5710 430, 431, 432, 433, 434, 405, 408, 634, 680, 330,
5711 727, 770, 534, 813, 544, 514, 393, 521, 339, 340,
5712 284, 257, 285, 344, 279, -1, 288, -1, 349, 350,
5713 -1, 352, 463, 269, 355, -1, -1, 358, 359, 360,
5714 361, -1, 363, 364, 365, 366, -1, 368, -1, 285,
5715 -1, -1, 288, 289, 375, 376, 377, -1, -1, -1,
5716 -1, 297, 298, 299, -1, 386, 387, -1, 389, -1,
5717 306, -1, 308, -1, -1, 311, -1, 313, -1, -1,
5718 -1, 317, 318, 404, 410, -1, -1, -1, 414, -1,
5719 416, 417, 418, 419, 330, -1, 422, 423, 424, 420,
5720 -1, 427, -1, 339, 340, 257, -1, -1, 344, -1,
5721 -1, -1, -1, 349, 350, -1, 352, 269, -1, 445,
5722 -1, 447, 358, 359, 360, -1, -1, 363, 364, 365,
5723 366, -1, 368, 285, -1, -1, 288, 289, -1, -1,
5724 376, 377, 463, -1, -1, 297, 298, 299, -1, -1,
5725 386, 387, -1, 389, 306, -1, 308, -1, -1, 311,
5726 -1, 313, -1, -1, -1, 317, 318, -1, 404, -1,
5727 -1, -1, -1, -1, -1, 417, 418, 419, 330, -1,
5728 422, 423, 424, -1, 420, 427, -1, 339, 340, 257,
5729 -1, -1, 344, -1, -1, -1, -1, 349, 350, -1,
5730 352, 269, -1, 445, -1, 447, 358, 359, 360, -1,
5731 -1, 363, 364, 365, 366, -1, 368, 285, -1, -1,
5732 288, 289, -1, -1, 376, 377, -1, 463, -1, 297,
5733 298, 299, -1, -1, 386, 387, -1, 389, 306, -1,
5734 308, -1, -1, 311, -1, 313, -1, -1, -1, 317,
5735 318, -1, 404, -1, -1, -1, -1, -1, -1, -1,
5736 -1, -1, 330, -1, -1, -1, -1, -1, 420, -1,
5737 -1, 339, 340, 257, -1, -1, 344, -1, -1, -1,
5738 -1, 349, 350, -1, 352, 269, -1, -1, -1, -1,
5739 358, 359, 360, -1, -1, 363, 364, 365, 366, -1,
5740 368, 285, -1, -1, 288, 289, -1, -1, 376, 377,
5741 -1, 463, -1, 297, 298, 299, -1, -1, 386, 387,
5742 -1, 389, 306, -1, 308, -1, -1, 311, -1, 313,
5743 -1, -1, -1, 317, 318, -1, 404, -1, -1, -1,
5744 -1, -1, -1, -1, -1, -1, 330, -1, -1, -1,
5745 -1, -1, 420, -1, -1, 339, 340, 257, -1, -1,
5746 344, -1, -1, -1, -1, 349, 350, -1, 352, 269,
5747 -1, -1, -1, -1, 358, 359, 360, -1, -1, 363,
5748 364, 365, 366, -1, 368, 285, -1, -1, 288, 289,
5749 -1, -1, 376, 377, -1, 463, -1, 297, 298, 299,
5750 -1, -1, 386, 387, -1, 389, 306, -1, 308, -1,
5751 -1, 311, -1, 313, -1, -1, -1, 317, 318, -1,
5752 404, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5753 330, -1, -1, -1, -1, -1, 420, -1, -1, 339,
5754 340, 257, -1, -1, 344, -1, -1, -1, -1, 349,
5755 350, -1, 352, 269, -1, -1, -1, -1, 358, 359,
5756 360, -1, -1, 363, 364, 365, 366, -1, 368, 285,
5757 -1, -1, 288, 289, -1, -1, 376, 377, -1, 463,
5758 -1, 297, 298, 299, -1, -1, 386, 387, -1, 389,
5759 306, -1, 308, -1, -1, 311, -1, 313, -1, -1,
5760 -1, 317, 318, -1, 404, -1, -1, -1, -1, -1,
5761 -1, -1, -1, -1, 330, -1, -1, -1, -1, -1,
5762 420, -1, -1, 339, 340, 257, -1, -1, 344, -1,
5763 -1, -1, -1, 349, 350, -1, 352, 269, -1, -1,
5764 -1, -1, 358, 359, 360, -1, -1, 363, 364, 365,
5765 366, -1, 368, 285, -1, -1, 288, 289, -1, -1,
5766 376, 377, -1, 463, -1, 297, 298, 299, -1, -1,
5767 386, 387, -1, 389, 306, -1, 308, -1, -1, 311,
5768 -1, 313, -1, -1, -1, 317, 318, -1, 404, -1,
5769 -1, -1, -1, -1, -1, -1, -1, -1, 330, -1,
5770 -1, -1, -1, -1, 420, -1, -1, 339, 340, -1,
5771 -1, -1, 344, -1, -1, -1, -1, 349, 350, -1,
5772 352, -1, -1, -1, -1, -1, 358, 359, 360, -1,
5773 -1, 363, 364, 365, 366, -1, 368, -1, -1, -1,
5774 -1, -1, -1, -1, 376, 377, -1, 463, -1, -1,
5775 -1, -1, 260, -1, 386, 387, -1, 389, -1, -1,
5776 -1, 269, 270, -1, 272, -1, 274, -1, -1, 277,
5777 278, 279, 404, 281, 282, 283, 284, -1, 286, 287,
5778 288, 289, 290, 291, 292, 293, -1, 295, 420, -1,
5779 -1, 299, 300, -1, 302, -1, -1, -1, 306, -1,
5780 -1, -1, -1, -1, -1, 313, 314, -1, -1, -1,
5781 -1, -1, 320, -1, 322, -1, 324, -1, -1, -1,
5782 309, 329, 269, 270, -1, 272, -1, 335, -1, 337,
5783 -1, 463, -1, -1, 342, 343, 283, 345, -1, -1,
5784 348, 288, -1, 351, 352, -1, -1, -1, 295, -1,
5785 -1, -1, -1, -1, -1, 302, -1, -1, -1, 367,
5786 -1, -1, -1, 371, -1, 373, 313, 356, 357, -1,
5787 378, 379, -1, -1, -1, -1, -1, 385, -1, -1,
5788 388, 389, 329, 391, -1, 393, 394, -1, 335, -1,
5789 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5790 -1, 390, 410, -1, 351, 352, 414, -1, -1, 417,
5791 418, -1, -1, -1, -1, -1, 405, -1, -1, -1,
5792 -1, -1, -1, 412, 413, -1, 415, 416, -1, -1,
5793 -1, 378, 379, -1, 309, -1, -1, -1, 385, -1,
5794 -1, 449, 389, 451, 260, 453, -1, 455, -1, 457,
5795 -1, 459, -1, 269, 270, 463, 272, -1, 274, -1,
5796 -1, 277, 278, 279, -1, 281, 282, 283, 284, -1,
5797 286, 287, 288, 289, 290, 291, 292, 293, -1, 295,
5798 -1, 356, 357, 299, 300, -1, 302, -1, -1, -1,
5799 306, -1, -1, -1, -1, -1, -1, 313, 314, -1,
5800 -1, -1, -1, -1, 320, -1, 322, -1, 324, -1,
5801 -1, -1, -1, 329, -1, 390, 463, -1, -1, 335,
5802 -1, 337, -1, -1, -1, -1, 342, 343, -1, 345,
5803 405, -1, 348, -1, -1, 351, 352, 412, 413, -1,
5804 415, 416, -1, -1, 297, -1, -1, -1, -1, -1,
5805 -1, 367, -1, 306, -1, 371, -1, 373, -1, -1,
5806 -1, -1, 378, 379, 317, 318, -1, -1, -1, 385,
5807 -1, -1, 388, 389, -1, 391, -1, 393, 394, -1,
5808 -1, -1, -1, -1, -1, -1, -1, 340, -1, -1,
5809 -1, -1, -1, -1, 410, -1, 349, 350, 414, -1,
5810 -1, 417, 418, -1, -1, 358, 359, 360, -1, -1,
5811 363, 364, 365, 366, -1, 368, -1, -1, -1, -1,
5812 -1, -1, -1, 376, 377, -1, -1, -1, -1, -1,
5813 -1, -1, -1, 449, 387, 451, 260, 453, -1, 455,
5814 -1, 457, -1, 459, -1, 269, 270, 463, 272, -1,
5815 274, 404, -1, 277, 278, 279, -1, 281, 282, 283,
5816 284, -1, 286, 287, 288, 289, 290, 291, 292, 293,
5817 -1, 295, -1, -1, -1, 299, 300, -1, 302, -1,
5818 -1, 285, 306, -1, -1, 289, -1, -1, -1, 313,
5819 314, -1, -1, -1, 298, 299, 320, -1, 322, -1,
5820 324, -1, -1, -1, 308, 329, -1, 311, -1, -1,
5821 -1, 335, -1, 337, 318, -1, -1, -1, 342, 343,
5822 -1, 345, -1, -1, 348, -1, 330, 351, 352, -1,
5823 -1, -1, -1, -1, -1, 339, 297, -1, -1, -1,
5824 -1, -1, -1, 367, -1, 306, -1, 371, -1, 373,
5825 -1, -1, -1, -1, 378, 379, 317, 318, -1, -1,
5826 364, 385, -1, -1, 388, 389, -1, 391, -1, 393,
5827 394, -1, -1, -1, -1, -1, -1, -1, -1, 340,
5828 -1, -1, 386, 387, -1, -1, 410, -1, 349, 350,
5829 414, -1, -1, 417, 418, -1, -1, 358, 359, 360,
5830 -1, -1, 363, 364, 365, 366, -1, 368, -1, -1,
5831 -1, -1, -1, -1, -1, 376, 377, -1, -1, -1,
5832 -1, -1, -1, -1, -1, 449, 387, 451, 260, 453,
5833 -1, 455, -1, 457, -1, 459, -1, 269, 270, 463,
5834 272, -1, 274, 404, -1, 277, 278, 279, -1, 281,
5835 282, 283, 284, -1, 286, 287, 288, 289, 290, 291,
5836 292, 293, -1, 295, -1, -1, -1, 299, 300, -1,
5837 302, -1, -1, 285, 306, -1, -1, 289, -1, -1,
5838 -1, 313, 314, -1, -1, -1, 298, 299, 320, -1,
5839 322, -1, 324, -1, -1, -1, 308, 329, -1, 311,
5840 -1, -1, -1, 335, -1, 337, 318, -1, -1, -1,
5841 342, 343, -1, 345, -1, -1, 348, -1, 330, 351,
5842 352, -1, -1, -1, -1, -1, -1, 339, 297, -1,
5843 -1, -1, -1, -1, -1, 367, -1, -1, -1, 371,
5844 -1, 373, -1, -1, -1, -1, 378, 379, 317, -1,
5845 -1, -1, -1, 385, -1, -1, 388, 389, -1, 391,
5846 -1, 393, 394, -1, -1, -1, -1, -1, -1, -1,
5847 -1, 340, -1, -1, 386, 387, -1, -1, 410, -1,
5848 349, 350, 414, -1, -1, 417, 418, -1, -1, 358,
5849 359, 360, -1, -1, 363, -1, 365, 366, -1, 368,
5850 -1, -1, -1, -1, -1, -1, -1, 376, 377, -1,
5851 -1, -1, -1, -1, -1, -1, -1, 449, -1, 451,
5852 260, 453, -1, 455, -1, 457, -1, 459, -1, 269,
5853 270, 463, 272, -1, 274, 404, -1, 277, 278, 279,
5854 -1, 281, 282, 283, 284, -1, 286, 287, 288, 289,
5855 290, 291, 292, 293, -1, 295, -1, -1, -1, 299,
5856 300, -1, 302, -1, -1, -1, -1, -1, -1, -1,
5857 -1, -1, -1, 313, 314, -1, -1, -1, -1, -1,
5858 320, -1, 322, -1, 324, -1, -1, -1, -1, 329,
5859 -1, -1, -1, -1, -1, 335, -1, 337, -1, -1,
5860 -1, -1, 342, 343, -1, 345, -1, -1, 348, -1,
5861 -1, 351, 352, -1, -1, -1, -1, -1, -1, -1,
5862 -1, -1, -1, -1, -1, -1, -1, 367, -1, -1,
5863 -1, 371, -1, 373, -1, -1, -1, -1, 378, 379,
5864 -1, -1, -1, -1, -1, 385, -1, -1, 388, 389,
5865 -1, 391, -1, 393, 394, -1, -1, -1, -1, -1,
5866 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5867 410, -1, -1, 261, -1, -1, -1, 417, 418, -1,
5868 -1, 269, 270, 271, 272, -1, 274, -1, -1, 277,
5869 278, 279, -1, 281, 282, 283, 284, -1, 286, 287,
5870 288, -1, 290, 291, 292, 293, -1, 295, -1, 449,
5871 -1, 451, 300, 453, 302, 455, -1, 457, -1, 459,
5872 -1, -1, -1, 463, -1, 313, 314, -1, -1, -1,
5873 -1, -1, 320, -1, -1, -1, -1, -1, -1, -1,
5874 -1, 329, -1, -1, -1, -1, -1, 335, -1, 337,
5875 -1, -1, -1, -1, 342, 343, -1, 345, -1, 347,
5876 348, -1, -1, 351, 352, -1, -1, -1, -1, -1,
5877 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5878 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5879 378, 379, -1, -1, -1, -1, -1, 385, -1, -1,
5880 -1, 389, -1, -1, -1, 393, -1, 395, -1, -1,
5881 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5882 -1, -1, 410, -1, -1, 261, -1, -1, -1, 417,
5883 418, -1, -1, 269, 270, -1, 272, -1, 274, -1,
5884 -1, 277, 278, 279, -1, 281, 282, 283, 284, -1,
5885 286, 287, 288, -1, 290, 291, 292, 293, -1, 295,
5886 -1, 449, -1, 451, 300, 453, 302, 455, -1, 457,
5887 -1, 459, -1, -1, -1, 463, -1, 313, 314, -1,
5888 -1, -1, -1, -1, 320, -1, -1, -1, -1, -1,
5889 -1, -1, -1, 329, -1, -1, -1, -1, -1, 335,
5890 -1, 337, -1, -1, -1, -1, 342, 343, -1, 345,
5891 -1, 347, 348, -1, -1, 351, 352, -1, -1, -1,
5892 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5893 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5894 -1, -1, 378, 379, -1, -1, -1, -1, -1, 385,
5895 -1, -1, -1, 389, -1, -1, -1, 393, -1, 395,
5896 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5897 -1, -1, -1, -1, 410, -1, -1, -1, -1, -1,
5898 -1, 417, 418, -1, -1, 269, 270, -1, 272, -1,
5899 274, -1, -1, 277, 278, 279, -1, 281, 282, 283,
5900 284, -1, 286, 287, 288, -1, 290, 291, 292, 293,
5901 -1, 295, -1, 449, -1, 451, 300, 453, 302, 455,
5902 -1, 457, -1, 459, -1, -1, -1, 463, -1, 313,
5903 314, -1, -1, -1, -1, -1, 320, -1, -1, -1,
5904 -1, -1, -1, -1, -1, 329, -1, -1, -1, -1,
5905 -1, 335, -1, 337, -1, -1, -1, -1, 342, 343,
5906 -1, 345, -1, 347, 348, -1, -1, 351, 352, -1,
5907 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5908 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5909 -1, -1, -1, -1, 378, 379, -1, -1, -1, -1,
5910 -1, 385, -1, -1, -1, 389, -1, -1, -1, 393,
5911 -1, 395, -1, -1, -1, -1, -1, -1, -1, -1,
5912 -1, -1, -1, -1, -1, -1, 410, 411, 412, -1,
5913 -1, -1, -1, 417, 418, -1, -1, 269, 270, -1,
5914 272, -1, 274, -1, -1, 277, 278, 279, -1, 281,
5915 282, 283, 284, -1, 286, 287, 288, -1, 290, 291,
5916 292, 293, -1, 295, -1, 449, -1, 451, 300, 453,
5917 302, 455, -1, 457, -1, 459, -1, -1, -1, 463,
5918 -1, 313, 314, -1, -1, -1, -1, -1, 320, -1,
5919 -1, -1, -1, -1, -1, -1, -1, 329, -1, -1,
5920 -1, -1, -1, 335, -1, 337, -1, -1, -1, -1,
5921 342, 343, -1, 345, -1, 347, 348, -1, -1, 351,
5922 352, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5923 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5924 -1, -1, -1, -1, -1, -1, 378, 379, -1, -1,
5925 -1, -1, -1, 385, -1, -1, -1, 389, -1, -1,
5926 -1, 393, -1, 395, -1, -1, -1, -1, -1, -1,
5927 -1, -1, -1, -1, -1, -1, -1, -1, 410, 411,
5928 -1, -1, -1, -1, -1, 417, 418, -1, -1, 269,
5929 270, -1, 272, -1, 274, -1, -1, 277, 278, 279,
5930 -1, 281, 282, 283, 284, -1, 286, 287, 288, -1,
5931 290, 291, 292, 293, -1, 295, -1, 449, -1, 451,
5932 300, 453, 302, 455, -1, 457, -1, 459, -1, -1,
5933 -1, 463, -1, 313, 314, -1, -1, -1, -1, -1,
5934 320, -1, -1, -1, -1, -1, -1, -1, -1, 329,
5935 -1, -1, -1, -1, -1, 335, -1, 337, -1, -1,
5936 -1, -1, 342, 343, -1, 345, -1, 347, 348, -1,
5937 -1, 351, 352, -1, -1, -1, -1, -1, -1, -1,
5938 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5939 -1, -1, -1, -1, -1, -1, -1, -1, 378, 379,
5940 -1, -1, -1, -1, -1, 385, -1, -1, -1, 389,
5941 -1, -1, -1, 393, -1, 395, -1, -1, -1, -1,
5942 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5943 410, -1, -1, -1, -1, -1, 257, 417, 418, -1,
5944 -1, 269, 270, -1, 272, -1, 274, -1, -1, 277,
5945 278, 279, -1, 281, 282, 283, 284, -1, 286, 287,
5946 288, -1, 290, 291, 292, 293, -1, 295, -1, 449,
5947 -1, 451, 300, 453, 302, 455, 297, 457, -1, 459,
5948 -1, -1, -1, 463, -1, 313, 314, -1, -1, -1,
5949 -1, -1, 320, -1, -1, -1, 317, -1, -1, -1,
5950 -1, 329, -1, -1, -1, -1, -1, 335, -1, 337,
5951 -1, -1, -1, -1, 342, 343, -1, 345, -1, 340,
5952 348, -1, -1, 351, 352, -1, -1, -1, 349, 350,
5953 -1, -1, -1, -1, -1, -1, -1, 358, 359, 360,
5954 -1, -1, 363, -1, 365, 366, -1, 368, -1, -1,
5955 378, 379, -1, -1, -1, 376, 377, 385, -1, -1,
5956 -1, 389, -1, -1, -1, 393, -1, -1, -1, -1,
5957 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5958 -1, -1, 410, 404, -1, -1, -1, -1, -1, 417,
5959 418, -1, -1, 269, 270, -1, 272, -1, 274, -1,
5960 -1, 277, 278, 279, -1, 281, 282, 283, 284, -1,
5961 286, 287, 288, -1, 290, 291, 292, 293, -1, 295,
5962 -1, 449, -1, 451, 300, 453, 302, 455, -1, 457,
5963 -1, 459, -1, -1, -1, 463, -1, 313, 314, -1,
5964 -1, -1, -1, -1, 320, 257, -1, -1, -1, -1,
5965 -1, -1, -1, 329, -1, -1, -1, -1, -1, 335,
5966 -1, 337, -1, -1, -1, -1, 342, 343, -1, 345,
5967 -1, -1, 348, 285, -1, 351, 352, -1, -1, -1,
5968 -1, -1, -1, -1, -1, 297, 298, -1, -1, -1,
5969 -1, -1, -1, -1, -1, -1, 308, -1, -1, -1,
5970 -1, -1, 378, 379, -1, 317, -1, -1, -1, 385,
5971 -1, -1, -1, 389, -1, -1, -1, 393, 330, -1,
5972 -1, -1, -1, -1, -1, -1, -1, 339, 340, -1,
5973 -1, -1, 344, -1, 410, -1, -1, 349, 350, -1,
5974 -1, -1, -1, -1, -1, -1, 358, 359, 360, -1,
5975 -1, 363, -1, 365, 366, -1, 368, -1, -1, -1,
5976 -1, -1, -1, -1, 376, 377, 269, -1, -1, -1,
5977 -1, -1, -1, 449, 386, 451, -1, 453, -1, 455,
5978 -1, 457, 285, 459, -1, 288, 289, 463, -1, -1,
5979 -1, -1, 404, -1, 297, 298, 299, -1, -1, -1,
5980 -1, -1, -1, 306, -1, 308, -1, -1, 311, -1,
5981 313, -1, -1, -1, 317, 318, -1, -1, -1, -1,
5982 -1, -1, 325, -1, -1, 328, -1, 330, -1, -1,
5983 -1, -1, -1, -1, -1, -1, 339, 340, -1, -1,
5984 -1, -1, -1, -1, -1, -1, 349, 350, 269, 352,
5985 -1, -1, -1, -1, -1, 358, 359, 360, -1, -1,
5986 363, 364, 365, 366, 285, 368, -1, 288, 289, -1,
5987 -1, -1, -1, 376, 377, -1, 297, 298, 299, -1,
5988 -1, -1, -1, 386, 387, 306, 389, 308, -1, -1,
5989 311, -1, 313, -1, -1, -1, 317, 318, -1, -1,
5990 -1, 404, -1, -1, 325, -1, -1, -1, -1, 330,
5991 -1, -1, -1, -1, -1, -1, -1, 420, 339, 340,
5992 -1, -1, -1, -1, -1, -1, -1, -1, 349, 350,
5993 -1, 352, -1, 269, -1, -1, -1, 358, 359, 360,
5994 -1, -1, 363, 364, 365, 366, -1, 368, -1, 285,
5995 -1, -1, 288, 289, -1, 376, 377, -1, -1, -1,
5996 463, 297, 298, 299, -1, 386, 387, -1, 389, -1,
5997 306, -1, 308, -1, -1, 311, -1, 313, -1, -1,
5998 -1, 317, 318, 404, -1, -1, -1, -1, -1, 325,
5999 -1, -1, -1, -1, 330, -1, -1, -1, -1, 420,
6000 -1, -1, -1, 339, 340, -1, -1, -1, -1, -1,
6001 -1, -1, -1, 349, 350, 269, 352, -1, -1, -1,
6002 -1, -1, 358, 359, 360, -1, -1, 363, 364, 365,
6003 366, 285, 368, -1, 288, 289, -1, -1, -1, -1,
6004 376, 377, 463, 297, 298, 299, -1, -1, -1, -1,
6005 386, 387, 306, 389, 308, -1, -1, 311, -1, 313,
6006 -1, -1, -1, 317, 318, -1, -1, -1, 404, -1,
6007 -1, -1, -1, -1, -1, -1, 330, -1, -1, -1,
6008 -1, -1, -1, -1, 420, 339, 340, -1, -1, -1,
6009 -1, -1, -1, -1, -1, 349, 350, -1, 352, -1,
6010 269, -1, -1, -1, 358, 359, 360, -1, -1, 363,
6011 364, 365, 366, -1, 368, -1, 285, -1, -1, 288,
6012 289, -1, 376, 377, -1, -1, -1, 463, 297, 298,
6013 299, -1, 386, 387, -1, 389, -1, 306, -1, 308,
6014 -1, -1, 311, -1, 313, -1, -1, -1, 317, 318,
6015 404, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6016 -1, 330, -1, -1, -1, -1, 420, -1, -1, -1,
6017 339, 340, -1, -1, -1, -1, -1, -1, -1, -1,
6018 349, 350, 269, 352, -1, -1, -1, -1, -1, 358,
6019 359, 360, -1, -1, 363, 364, 365, 366, 285, 368,
6020 -1, 288, 289, -1, -1, -1, -1, 376, 377, 463,
6021 297, 298, 299, -1, -1, -1, -1, 386, 387, 306,
6022 389, 308, 309, -1, 311, -1, 313, -1, -1, -1,
6023 317, 318, -1, -1, -1, 404, -1, -1, -1, -1,
6024 -1, -1, -1, 330, -1, -1, -1, -1, -1, -1,
6025 -1, 420, 339, 340, -1, -1, -1, -1, -1, -1,
6026 -1, -1, 349, 350, -1, 352, -1, -1, -1, -1,
6027 -1, 358, 359, 360, -1, -1, 363, -1, 365, 366,
6028 -1, 368, -1, -1, -1, -1, -1, -1, -1, 376,
6029 377, -1, 269, -1, 463, -1, -1, -1, -1, 386,
6030 387, -1, 389, -1, -1, -1, -1, -1, 285, -1,
6031 -1, 288, 289, -1, -1, -1, -1, 404, -1, -1,
6032 297, 298, 299, -1, -1, -1, -1, -1, 415, 306,
6033 -1, 308, 309, -1, 311, -1, 313, -1, -1, -1,
6034 317, 318, -1, -1, -1, -1, -1, -1, -1, -1,
6035 -1, -1, -1, 330, -1, -1, -1, -1, -1, -1,
6036 -1, -1, 339, 340, -1, -1, -1, -1, -1, -1,
6037 -1, -1, 349, 350, 269, 352, 463, -1, -1, -1,
6038 -1, 358, 359, 360, -1, -1, 363, -1, 365, 366,
6039 285, 368, -1, 288, 289, -1, -1, -1, -1, 376,
6040 377, -1, 297, 298, 299, -1, -1, -1, -1, 386,
6041 387, 306, 389, 308, -1, -1, 311, -1, 313, -1,
6042 -1, -1, 317, 318, -1, -1, -1, 404, -1, -1,
6043 -1, -1, -1, -1, -1, 330, -1, -1, 415, -1,
6044 -1, -1, -1, -1, 339, 340, -1, -1, -1, -1,
6045 -1, -1, -1, -1, 349, 350, -1, 352, -1, 269,
6046 -1, -1, -1, 358, 359, 360, -1, -1, 363, 364,
6047 365, 366, -1, 368, -1, 285, -1, -1, 288, 289,
6048 -1, 376, 377, -1, -1, -1, 463, 297, 298, 299,
6049 -1, 386, 387, -1, 389, -1, 306, -1, 308, -1,
6050 -1, 311, -1, 313, -1, -1, -1, 317, 318, 404,
6051 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6052 330, -1, -1, -1, -1, 420, -1, -1, -1, 339,
6053 340, -1, -1, -1, -1, -1, -1, -1, -1, 349,
6054 350, 269, 352, -1, -1, -1, -1, -1, 358, 359,
6055 360, -1, -1, 363, 364, 365, 366, 285, 368, -1,
6056 288, 289, -1, -1, -1, -1, 376, 377, 463, 297,
6057 298, 299, -1, -1, -1, -1, 386, 387, 306, 389,
6058 308, -1, -1, 311, -1, 313, -1, -1, -1, 317,
6059 318, -1, -1, -1, 404, -1, -1, -1, -1, -1,
6060 -1, -1, 330, -1, -1, -1, -1, -1, -1, -1,
6061 420, 339, 340, -1, -1, -1, -1, -1, -1, -1,
6062 -1, 349, 350, -1, 352, -1, 269, -1, -1, -1,
6063 358, 359, 360, -1, -1, 363, 364, 365, 366, -1,
6064 368, -1, 285, -1, -1, 288, 289, -1, 376, 377,
6065 -1, -1, -1, 463, 297, 298, 299, -1, 386, 387,
6066 -1, 389, -1, 306, -1, 308, -1, -1, 311, -1,
6067 313, -1, -1, -1, 317, 318, 404, -1, -1, -1,
6068 -1, -1, -1, -1, -1, -1, -1, 330, -1, -1,
6069 -1, -1, 420, -1, -1, -1, 339, 340, -1, -1,
6070 -1, -1, -1, -1, -1, -1, 349, 350, 269, 352,
6071 -1, -1, -1, -1, -1, 358, 359, 360, -1, -1,
6072 363, 364, 365, 366, 285, 368, -1, 288, 289, -1,
6073 -1, -1, -1, 376, 377, 463, 297, 298, 299, -1,
6074 -1, -1, -1, 386, 387, 306, 389, 308, -1, -1,
6075 311, -1, 313, -1, -1, -1, 317, 318, -1, -1,
6076 -1, 404, -1, -1, -1, -1, -1, -1, -1, 330,
6077 -1, -1, -1, -1, -1, -1, -1, 420, 339, 340,
6078 -1, -1, -1, -1, -1, -1, -1, -1, 349, 350,
6079 -1, 352, -1, 269, -1, -1, -1, 358, 359, 360,
6080 -1, -1, 363, 364, 365, 366, -1, 368, -1, 285,
6081 -1, -1, 288, 289, -1, 376, 377, -1, -1, -1,
6082 463, 297, 298, 299, -1, 386, 387, -1, 389, -1,
6083 306, -1, 308, -1, -1, 311, -1, 313, -1, -1,
6084 -1, 317, 318, 404, -1, -1, -1, -1, -1, -1,
6085 -1, -1, -1, -1, 330, -1, -1, -1, -1, 420,
6086 -1, -1, -1, 339, 340, -1, -1, -1, -1, -1,
6087 -1, -1, -1, 349, 350, 269, 352, -1, -1, -1,
6088 -1, -1, 358, 359, 360, -1, -1, 363, 364, 365,
6089 366, 285, 368, -1, 288, 289, -1, -1, -1, -1,
6090 376, 377, 463, 297, 298, 299, -1, -1, -1, -1,
6091 386, 387, 306, 389, 308, -1, -1, 311, -1, 313,
6092 -1, -1, -1, 317, 318, -1, -1, -1, 404, -1,
6093 -1, -1, -1, -1, -1, -1, 330, -1, -1, -1,
6094 -1, -1, -1, -1, 420, 339, 340, -1, -1, -1,
6095 -1, -1, -1, -1, -1, 349, 350, -1, 352, -1,
6096 269, -1, -1, -1, 358, 359, 360, -1, -1, 363,
6097 364, 365, 366, -1, 368, -1, 285, -1, -1, 288,
6098 289, -1, 376, 377, -1, -1, -1, 463, 297, 298,
6099 299, -1, 386, 387, -1, 389, -1, 306, -1, 308,
6100 -1, -1, 311, -1, 313, -1, -1, -1, 317, 318,
6101 404, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6102 -1, 330, -1, -1, -1, -1, 420, -1, -1, -1,
6103 339, 340, -1, -1, -1, -1, -1, -1, -1, -1,
6104 349, 350, 269, 352, -1, -1, -1, -1, -1, 358,
6105 359, 360, -1, -1, 363, 364, 365, 366, 285, 368,
6106 -1, 288, 289, -1, -1, -1, -1, 376, 377, 463,
6107 297, 298, 299, -1, -1, -1, -1, 386, 387, 306,
6108 389, 308, -1, -1, 311, -1, 313, -1, -1, -1,
6109 317, 318, -1, -1, -1, 404, -1, -1, -1, -1,
6110 -1, -1, -1, 330, -1, -1, -1, -1, -1, -1,
6111 -1, 420, 339, 340, -1, -1, -1, -1, -1, -1,
6112 -1, -1, 349, 350, -1, 352, -1, 269, -1, -1,
6113 -1, 358, 359, 360, -1, -1, 363, 364, 365, 366,
6114 -1, 368, -1, 285, -1, -1, 288, 289, -1, 376,
6115 377, -1, -1, -1, 463, 297, 298, 299, -1, 386,
6116 387, -1, 389, -1, 306, -1, 308, -1, -1, 311,
6117 -1, 313, -1, -1, -1, 317, 318, 404, -1, -1,
6118 -1, -1, -1, -1, -1, -1, -1, -1, 330, -1,
6119 -1, -1, -1, -1, -1, -1, -1, 339, 340, -1,
6120 -1, -1, -1, -1, -1, -1, -1, 349, 350, 269,
6121 352, -1, -1, -1, -1, -1, 358, 359, 360, -1,
6122 -1, 363, 364, 365, 366, 285, 368, -1, 288, 289,
6123 -1, -1, -1, -1, 376, 377, 463, 297, 298, 299,
6124 -1, -1, -1, -1, 386, 387, 306, 389, 308, 309,
6125 -1, 311, -1, 313, -1, -1, -1, 317, 318, -1,
6126 -1, -1, 404, -1, -1, -1, -1, -1, -1, -1,
6127 330, -1, -1, -1, -1, -1, -1, -1, -1, 339,
6128 340, -1, -1, -1, -1, -1, -1, -1, -1, 349,
6129 350, -1, 352, -1, 269, -1, -1, -1, 358, 359,
6130 360, -1, -1, 363, -1, 365, 366, -1, 368, -1,
6131 285, -1, -1, 288, 289, -1, 376, 377, -1, -1,
6132 -1, 463, 297, 298, 299, -1, 386, 387, -1, 389,
6133 -1, 306, -1, 308, -1, -1, 311, -1, 313, -1,
6134 -1, -1, 317, 318, 404, -1, -1, -1, -1, -1,
6135 -1, -1, -1, -1, -1, 330, -1, -1, -1, -1,
6136 -1, -1, -1, -1, 339, 340, -1, -1, -1, -1,
6137 -1, -1, -1, -1, 349, 350, 269, 352, -1, -1,
6138 -1, -1, -1, 358, 359, 360, -1, -1, 363, 364,
6139 365, 366, 285, 368, -1, 288, 289, -1, -1, -1,
6140 -1, 376, 377, 463, 297, 298, 299, -1, -1, -1,
6141 -1, 386, 387, 306, 389, 308, -1, -1, 311, -1,
6142 313, -1, -1, -1, 317, 318, -1, -1, -1, 404,
6143 -1, -1, -1, -1, -1, -1, -1, 330, -1, -1,
6144 -1, -1, -1, -1, -1, -1, 339, 340, -1, -1,
6145 -1, -1, -1, 263, 264, -1, 349, 350, -1, 352,
6146 -1, 269, -1, -1, -1, 358, 359, 360, -1, -1,
6147 363, 364, 365, 366, -1, 368, -1, 285, -1, -1,
6148 288, 289, -1, 376, 377, -1, -1, -1, 463, 297,
6149 298, 299, -1, 386, 387, -1, 389, -1, 306, 309,
6150 308, -1, -1, 311, -1, 313, -1, -1, -1, 317,
6151 318, 404, -1, -1, -1, 325, -1, -1, -1, -1,
6152 -1, 331, 330, -1, -1, -1, 263, 264, 338, -1,
6153 -1, 339, 340, -1, -1, -1, -1, -1, -1, -1,
6154 -1, 349, 350, -1, 352, -1, 356, 357, -1, -1,
6155 358, 359, 360, -1, -1, 363, -1, 365, 366, -1,
6156 368, -1, -1, -1, -1, -1, -1, -1, 376, 377,
6157 463, -1, 309, -1, -1, -1, 263, 264, 386, 387,
6158 390, 389, -1, -1, -1, -1, -1, -1, -1, -1,
6159 -1, -1, -1, -1, 331, 405, 404, -1, -1, -1,
6160 410, 338, 412, 413, -1, 415, 416, 417, 418, 419,
6161 420, 421, 422, 423, 424, -1, 426, 427, -1, 356,
6162 357, -1, 309, -1, -1, -1, -1, 437, -1, 439,
6163 -1, 441, -1, -1, -1, 445, -1, 447, -1, -1,
6164 -1, -1, -1, -1, 331, -1, -1, -1, -1, 263,
6165 264, 338, -1, 390, -1, 463, -1, -1, -1, -1,
6166 -1, -1, -1, -1, -1, -1, -1, -1, 405, 356,
6167 357, -1, -1, 410, -1, 412, 413, 414, 415, 416,
6168 417, 418, 419, 420, 421, 422, 423, 424, -1, 426,
6169 427, -1, -1, -1, -1, 309, -1, -1, -1, -1,
6170 437, -1, 439, 390, 441, -1, -1, -1, 445, -1,
6171 447, -1, -1, -1, -1, -1, -1, 331, 405, -1,
6172 -1, -1, -1, 410, 338, 412, 413, 414, 415, 416,
6173 417, 418, 419, 420, 421, 422, 423, 424, -1, 426,
6174 427, -1, 356, 357, -1, -1, 263, 264, -1, -1,
6175 437, -1, 439, -1, 441, -1, -1, -1, 445, -1,
6176 447, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6177 -1, -1, -1, -1, -1, -1, 390, -1, -1, -1,
6178 -1, -1, -1, -1, 263, 264, -1, -1, -1, -1,
6179 -1, 405, 309, -1, -1, -1, 410, -1, 412, 413,
6180 -1, 415, 416, 417, 418, 419, 420, 421, 422, 423,
6181 424, -1, 426, 427, 331, -1, -1, -1, -1, -1,
6182 -1, 338, -1, 437, -1, 439, -1, 441, -1, -1,
6183 309, 445, -1, 447, -1, -1, -1, -1, -1, 356,
6184 357, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6185 -1, -1, 331, -1, -1, -1, -1, -1, -1, 338,
6186 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6187 -1, -1, -1, 390, -1, -1, -1, 356, 357, -1,
6188 -1, 263, 264, -1, -1, -1, -1, -1, 405, -1,
6189 -1, -1, -1, -1, -1, 412, 413, 414, 415, 416,
6190 417, 418, 419, 420, 421, 422, 423, 424, -1, 426,
6191 427, 390, -1, -1, -1, -1, -1, -1, -1, -1,
6192 437, -1, 439, -1, 441, -1, 405, 309, 445, -1,
6193 447, 263, 264, 412, 413, -1, 415, 416, 417, 418,
6194 419, 420, 421, 422, 423, 424, -1, 426, 427, 331,
6195 -1, -1, -1, -1, -1, -1, 338, -1, 437, -1,
6196 439, -1, 441, -1, -1, -1, 445, -1, 447, -1,
6197 -1, -1, -1, -1, 356, 357, -1, 309, 263, 264,
6198 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6199 -1, -1, -1, -1, -1, -1, -1, -1, -1, 331,
6200 -1, -1, -1, -1, -1, -1, 338, -1, 390, -1,
6201 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6202 -1, -1, -1, 405, 356, 357, -1, -1, 263, 264,
6203 412, 413, -1, 415, 416, 417, 418, 419, 420, 421,
6204 422, 423, 424, -1, 426, 427, 331, -1, -1, -1,
6205 -1, -1, -1, 338, -1, 437, -1, 439, 390, 441,
6206 -1, -1, -1, 445, -1, 447, -1, -1, -1, -1,
6207 -1, 356, 357, 405, 309, -1, -1, -1, 263, 264,
6208 412, 413, -1, 415, 416, 417, 418, 419, 420, 421,
6209 422, 423, -1, -1, 426, 427, 331, -1, -1, -1,
6210 -1, -1, -1, 338, -1, 437, -1, 439, -1, 441,
6211 -1, -1, -1, 445, -1, 447, -1, -1, -1, -1,
6212 405, 356, 357, -1, 309, 410, -1, -1, 413, 414,
6213 415, -1, 417, 418, 419, 420, 421, 422, 423, 424,
6214 -1, 426, 427, -1, -1, -1, 331, -1, -1, -1,
6215 263, 264, 437, 338, 439, 390, 441, -1, -1, -1,
6216 445, -1, 447, -1, -1, -1, -1, -1, -1, -1,
6217 405, 356, 357, -1, -1, -1, -1, 412, 413, -1,
6218 415, 416, 417, 418, 419, 420, 421, -1, -1, -1,
6219 -1, 426, 427, 263, 264, -1, 309, -1, -1, -1,
6220 -1, -1, 437, -1, 439, 390, 441, -1, -1, -1,
6221 445, -1, 447, -1, -1, -1, -1, -1, 331, -1,
6222 405, -1, -1, -1, -1, 338, -1, 412, 413, -1,
6223 415, 416, 417, 418, 419, 420, 421, -1, -1, 309,
6224 -1, 426, 427, 356, 357, 263, 264, -1, -1, -1,
6225 -1, -1, 437, -1, 439, -1, 441, -1, -1, -1,
6226 445, 331, 447, -1, -1, -1, -1, -1, 338, -1,
6227 -1, -1, -1, -1, -1, -1, -1, 390, -1, -1,
6228 -1, -1, -1, -1, -1, -1, 356, 357, -1, -1,
6229 -1, 309, 405, -1, -1, 263, 264, -1, -1, 412,
6230 413, -1, 415, 416, 417, 418, 419, 420, 421, -1,
6231 -1, -1, -1, 331, 427, -1, -1, -1, -1, -1,
6232 390, -1, -1, -1, 437, -1, 439, -1, 441, -1,
6233 -1, -1, 445, -1, 447, 405, -1, -1, 356, 357,
6234 -1, 309, 412, 413, -1, 415, 416, 417, 418, 419,
6235 420, 421, -1, -1, -1, -1, -1, 427, -1, -1,
6236 -1, -1, -1, 331, 263, 264, -1, 437, -1, 439,
6237 -1, 441, 390, -1, -1, 445, -1, 447, -1, -1,
6238 -1, -1, -1, -1, -1, -1, -1, 405, 356, 357,
6239 -1, -1, -1, -1, 412, 413, -1, 415, 416, 417,
6240 418, 419, 420, 421, -1, -1, -1, -1, -1, 427,
6241 309, -1, -1, -1, 263, 264, -1, -1, -1, 437,
6242 -1, 439, 390, 441, -1, -1, -1, 445, -1, 447,
6243 -1, -1, 331, -1, -1, -1, -1, 405, -1, -1,
6244 -1, -1, -1, -1, 412, 413, -1, 415, 416, 417,
6245 418, 419, 420, 421, -1, -1, -1, 356, 357, 427,
6246 309, -1, -1, -1, 263, 264, -1, -1, -1, 437,
6247 -1, 439, -1, 441, -1, -1, -1, 445, -1, 447,
6248 -1, -1, 331, -1, -1, -1, -1, -1, -1, -1,
6249 -1, 390, -1, -1, -1, -1, -1, -1, -1, -1,
6250 -1, -1, -1, -1, -1, -1, 405, 356, 357, -1,
6251 309, -1, -1, 412, 413, -1, 415, 416, 417, 418,
6252 419, 420, 421, -1, -1, -1, -1, -1, 427, -1,
6253 -1, -1, 331, 263, 264, -1, -1, -1, 437, -1,
6254 439, 390, 441, -1, -1, -1, 445, -1, 447, -1,
6255 -1, -1, -1, -1, -1, -1, 405, 356, 357, -1,
6256 -1, -1, -1, 412, 413, -1, 415, 416, -1, -1,
6257 419, 420, 421, -1, -1, -1, -1, -1, 427, 309,
6258 -1, -1, -1, 263, 264, -1, -1, -1, 437, -1,
6259 439, 390, 441, -1, -1, -1, 445, -1, 447, -1,
6260 -1, 331, -1, -1, -1, -1, 405, -1, -1, -1,
6261 -1, -1, -1, 412, 413, -1, 415, 416, -1, -1,
6262 419, 420, 421, -1, -1, -1, 356, 357, 427, 309,
6263 -1, -1, -1, 263, 264, -1, -1, -1, 437, -1,
6264 439, -1, 441, -1, -1, -1, 445, -1, 447, -1,
6265 -1, 331, -1, -1, -1, -1, -1, -1, -1, -1,
6266 390, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6267 263, 264, -1, -1, -1, 405, 356, 357, -1, 309,
6268 -1, -1, 412, 413, -1, 415, 416, -1, -1, 419,
6269 420, 421, -1, -1, -1, -1, -1, -1, -1, -1,
6270 -1, 331, -1, -1, -1, 263, 264, 437, -1, 439,
6271 390, 441, -1, -1, -1, 445, 309, 447, -1, -1,
6272 -1, -1, -1, -1, -1, 405, 356, 357, -1, -1,
6273 -1, -1, 412, 413, -1, 415, 416, -1, 331, 419,
6274 420, 421, 263, 264, -1, -1, -1, -1, -1, -1,
6275 -1, 309, -1, -1, -1, -1, -1, 437, -1, 439,
6276 390, 441, -1, 356, 357, 445, -1, 447, -1, -1,
6277 -1, -1, -1, 331, -1, 405, -1, -1, -1, -1,
6278 -1, -1, 412, 413, -1, 415, 416, -1, 309, 419,
6279 420, 421, 263, 264, -1, -1, -1, 390, 356, 357,
6280 -1, -1, -1, -1, -1, -1, -1, 437, -1, 439,
6281 331, 441, 405, -1, -1, 445, -1, 447, -1, 412,
6282 413, -1, 415, 416, -1, -1, 419, 420, 421, 263,
6283 264, -1, 390, -1, -1, 356, 357, -1, 309, -1,
6284 -1, -1, 263, 264, 437, -1, 439, 405, 441, -1,
6285 -1, -1, -1, -1, 412, 413, -1, 415, 416, -1,
6286 331, 419, 420, 421, -1, -1, -1, -1, -1, 390,
6287 -1, -1, -1, -1, -1, 309, -1, -1, -1, 437,
6288 -1, 439, -1, 441, 405, 356, 357, -1, 309, -1,
6289 -1, 412, 413, -1, 415, 416, -1, 331, 419, 420,
6290 421, -1, -1, -1, -1, -1, -1, -1, 263, 264,
6291 331, -1, -1, -1, -1, -1, 437, -1, 439, 390,
6292 441, -1, 356, 357, -1, -1, -1, -1, -1, -1,
6293 -1, -1, -1, -1, 405, 356, 357, -1, -1, -1,
6294 -1, 412, 413, -1, 415, 416, -1, -1, 419, 420,
6295 421, 263, 264, -1, 309, -1, 390, -1, -1, -1,
6296 -1, -1, -1, -1, -1, -1, 437, -1, 439, 390,
6297 441, 405, -1, -1, -1, -1, 331, -1, 412, 413,
6298 -1, 415, 416, -1, 405, 419, 420, 421, -1, -1,
6299 -1, 412, 413, -1, 415, 416, -1, 309, 419, 420,
6300 421, 356, 357, 437, -1, 439, -1, 441, -1, -1,
6301 -1, -1, -1, -1, -1, -1, 437, -1, 439, 331,
6302 441, 263, 264, -1, -1, -1, -1, -1, -1, -1,
6303 -1, -1, -1, -1, -1, 390, -1, -1, -1, -1,
6304 -1, -1, -1, -1, 356, 357, -1, -1, -1, -1,
6305 405, -1, -1, -1, -1, -1, -1, 412, 413, -1,
6306 415, 416, -1, -1, 419, 420, 421, 309, -1, -1,
6307 -1, -1, -1, -1, -1, -1, -1, -1, 390, -1,
6308 -1, -1, 437, -1, 439, -1, 441, -1, -1, 331,
6309 -1, -1, -1, 405, -1, -1, -1, -1, -1, -1,
6310 412, 413, -1, 415, 416, -1, -1, 419, 420, 421,
6311 -1, -1, -1, -1, 356, 357, -1, -1, -1, -1,
6312 -1, 257, -1, -1, -1, 437, -1, 439, -1, 441,
6313 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6314 -1, -1, -1, -1, -1, -1, -1, -1, 390, 285,
6315 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6316 -1, 297, 298, 405, -1, -1, -1, -1, -1, -1,
6317 412, 413, 308, 415, 416, -1, -1, 419, 420, 421,
6318 -1, 317, -1, -1, -1, -1, -1, -1, -1, -1,
6319 326, -1, -1, 257, 330, 437, -1, 439, -1, 441,
6320 -1, -1, -1, 339, 340, -1, -1, -1, 344, -1,
6321 -1, -1, -1, 349, 350, -1, -1, -1, 354, -1,
6322 -1, 285, 358, 359, 360, -1, -1, 363, -1, 365,
6323 366, -1, 368, 297, 298, -1, -1, -1, -1, -1,
6324 376, 377, -1, -1, 308, -1, -1, -1, -1, -1,
6325 386, -1, -1, 317, -1, -1, -1, -1, -1, -1,
6326 -1, -1, 326, -1, -1, 257, 330, -1, 404, -1,
6327 -1, -1, -1, -1, -1, 339, 340, -1, -1, -1,
6328 344, -1, -1, -1, 420, 349, 350, -1, -1, -1,
6329 354, -1, -1, 285, 358, 359, 360, -1, -1, 363,
6330 -1, 365, 366, -1, 368, 297, 298, -1, -1, -1,
6331 -1, -1, 376, 377, -1, -1, 308, -1, -1, -1,
6332 -1, -1, 386, -1, -1, 317, -1, -1, -1, -1,
6333 -1, -1, -1, -1, 326, -1, -1, 257, 330, -1,
6334 404, -1, -1, -1, -1, -1, -1, 339, 340, -1,
6335 -1, -1, 344, -1, -1, -1, 420, 349, 350, -1,
6336 -1, -1, 354, -1, -1, 285, 358, 359, 360, -1,
6337 -1, 363, -1, 365, 366, -1, 368, 297, 298, -1,
6338 -1, -1, -1, -1, 376, 377, -1, -1, 308, -1,
6339 -1, -1, -1, -1, 386, -1, -1, 317, -1, -1,
6340 -1, -1, -1, -1, -1, -1, 326, -1, -1, 257,
6341 330, -1, 404, -1, -1, -1, -1, -1, -1, 339,
6342 340, -1, -1, -1, 344, -1, -1, -1, 420, 349,
6343 350, -1, -1, -1, -1, -1, -1, 285, 358, 359,
6344 360, -1, -1, 363, -1, 365, 366, -1, 368, 297,
6345 298, -1, -1, -1, -1, -1, 376, 377, -1, -1,
6346 308, -1, -1, -1, -1, -1, 386, -1, -1, 317,
6347 -1, -1, -1, -1, -1, -1, -1, -1, 326, -1,
6348 -1, 257, 330, -1, 404, -1, -1, -1, -1, -1,
6349 -1, 339, 340, -1, -1, -1, 344, -1, -1, -1,
6350 420, 349, 350, -1, -1, -1, -1, -1, -1, 285,
6351 358, 359, 360, -1, -1, 363, -1, 365, 366, -1,
6352 368, 297, 298, -1, -1, -1, -1, -1, 376, 377,
6353 -1, -1, 308, -1, -1, -1, -1, -1, 386, -1,
6354 -1, 317, -1, -1, -1, -1, -1, -1, -1, -1,
6355 326, -1, -1, 257, 330, -1, 404, -1, -1, -1,
6356 -1, -1, -1, 339, 340, -1, -1, -1, 344, -1,
6357 -1, -1, 420, 349, 350, -1, -1, -1, -1, -1,
6358 -1, 285, 358, 359, 360, -1, -1, 363, -1, 365,
6359 366, -1, 368, 297, 298, -1, -1, -1, -1, -1,
6360 376, 377, 306, -1, 308, -1, -1, -1, -1, -1,
6361 386, -1, -1, 317, -1, -1, -1, -1, -1, -1,
6362 -1, -1, -1, -1, -1, 257, 330, -1, 404, -1,
6363 -1, -1, -1, -1, -1, 339, 340, -1, -1, -1,
6364 344, -1, -1, -1, 420, 349, 350, -1, -1, -1,
6365 -1, -1, -1, 285, 358, 359, 360, -1, -1, 363,
6366 -1, 365, 366, -1, 368, 297, 298, -1, -1, -1,
6367 -1, -1, 376, 377, -1, -1, 308, -1, -1, -1,
6368 -1, -1, 386, -1, -1, 317, -1, -1, -1, -1,
6369 -1, -1, -1, -1, -1, -1, -1, 257, 330, -1,
6370 404, -1, -1, -1, -1, -1, -1, 339, 340, -1,
6371 -1, -1, 344, -1, -1, -1, 420, 349, 350, -1,
6372 -1, -1, -1, -1, -1, 285, 358, 359, 360, -1,
6373 -1, 363, -1, 365, 366, -1, 368, 297, 298, -1,
6374 -1, -1, -1, -1, 376, 377, -1, -1, 308, -1,
6375 -1, -1, -1, -1, 386, -1, -1, 317, -1, -1,
6376 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6377 330, -1, 404, -1, -1, -1, -1, -1, -1, 339,
6378 340, -1, -1, -1, 344, -1, -1, -1, 420, 349,
6379 350, -1, -1, -1, -1, -1, -1, 285, 358, 359,
6380 360, -1, -1, 363, -1, 365, 366, -1, 368, 297,
6381 298, -1, -1, -1, -1, -1, 376, 377, 306, -1,
6382 308, -1, -1, -1, -1, -1, 386, -1, -1, 317,
6383 -1, -1, -1, -1, -1, -1, -1, -1, 297, -1,
6384 -1, -1, 330, -1, 404, -1, -1, 306, -1, -1,
6385 -1, 339, 340, -1, -1, -1, 344, -1, 317, 318,
6386 420, 349, 350, -1, -1, -1, -1, -1, -1, 328,
6387 358, 359, 360, -1, -1, 363, -1, 365, 366, -1,
6388 368, 340, -1, -1, -1, -1, -1, -1, 376, 377,
6389 349, 350, -1, -1, -1, -1, -1, -1, 386, 358,
6390 359, 360, -1, 297, 363, 364, 365, 366, -1, 368,
6391 -1, -1, 306, -1, -1, -1, 404, 376, 377, -1,
6392 -1, -1, -1, 317, 318, -1, -1, -1, 387, -1,
6393 -1, -1, 420, 297, 328, -1, -1, -1, -1, -1,
6394 -1, -1, 306, -1, -1, 404, 340, -1, -1, -1,
6395 -1, -1, -1, 317, 318, 349, 350, -1, -1, -1,
6396 -1, 420, -1, -1, 358, 359, 360, -1, 297, 363,
6397 364, 365, 366, -1, 368, -1, 340, 306, -1, -1,
6398 -1, -1, 376, 377, -1, 349, 350, -1, 317, 318,
6399 -1, -1, -1, 387, 358, 359, 360, -1, 297, 363,
6400 364, 365, 366, -1, 368, -1, -1, 306, -1, -1,
6401 404, 340, 376, 377, -1, -1, -1, -1, 317, 318,
6402 349, 350, -1, 387, -1, -1, 420, -1, -1, 358,
6403 359, 360, -1, 297, 363, 364, 365, 366, -1, 368,
6404 404, 340, 306, -1, -1, -1, -1, 376, 377, -1,
6405 349, 350, -1, 317, 318, -1, 420, -1, 387, 358,
6406 359, 360, -1, 297, 363, 364, 365, 366, -1, 368,
6407 -1, -1, 306, -1, -1, 404, 340, 376, 377, -1,
6408 -1, -1, -1, 317, 318, 349, 350, -1, 387, -1,
6409 -1, 420, -1, -1, 358, 359, 360, -1, -1, 363,
6410 364, 365, 366, -1, 368, 404, 340, -1, -1, -1,
6411 -1, -1, 376, 377, -1, 349, 350, -1, -1, -1,
6412 -1, 420, -1, 387, 358, 359, 360, -1, -1, 363,
6413 364, 365, 366, -1, 368, -1, 285, -1, -1, -1,
6414 404, -1, 376, 377, -1, -1, -1, -1, 297, 298,
6415 -1, -1, -1, 387, -1, -1, 420, 306, -1, 308,
6416 -1, -1, -1, -1, -1, -1, -1, -1, 317, -1,
6417 404, -1, -1, -1, -1, -1, 285, -1, -1, -1,
6418 -1, 330, -1, -1, -1, -1, 420, -1, 297, 298,
6419 339, 340, -1, -1, -1, 344, -1, 306, -1, 308,
6420 349, 350, -1, -1, -1, -1, -1, -1, 317, 358,
6421 359, 360, -1, -1, 363, -1, 365, 366, -1, 368,
6422 -1, 330, -1, -1, -1, -1, -1, 376, 377, -1,
6423 339, 340, -1, -1, -1, 344, -1, 386, -1, -1,
6424 349, 350, -1, -1, -1, -1, -1, -1, 285, 358,
6425 359, 360, -1, -1, 363, 404, 365, 366, -1, 368,
6426 297, 298, -1, -1, -1, -1, -1, 376, 377, -1,
6427 -1, 308, -1, -1, -1, -1, -1, 386, -1, -1,
6428 317, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6429 -1, -1, -1, 330, -1, 404, -1, -1, -1, -1,
6430 -1, -1, 339, 340, -1, -1, -1, 344, -1, -1,
6431 -1, -1, 349, 350, -1, -1, -1, -1, -1, -1,
6432 -1, 358, 359, 360, -1, -1, 363, -1, 365, 366,
6433 -1, 368, -1, -1, -1, -1, -1, -1, -1, 376,
6434 377, -1, -1, -1, -1, -1, -1, -1, -1, 386,
6435 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6436 -1, -1, -1, -1, -1, -1, -1, 404,
6439 #line 4902 "mb-parser.jay"
6444 public Tokenizer Lexer {
6450 public static Expression DecomposeQI (string name, Location loc)
6454 if (name.IndexOf ('.') == -1){
6455 return new SimpleName (name, loc);
6457 int pos = name.LastIndexOf (".");
6458 string left = name.Substring (0, pos);
6459 string right = name.Substring (pos + 1);
6461 o = DecomposeQI (left, loc);
6463 return new MemberAccess (o, right, loc);
6467 Block declare_local_variables (Expression dummy_type, ArrayList variable_declarators, Location loc)
6469 Block implicit_block;
6470 ArrayList inits = null;
6473 // We use the `Used' property to check whether statements
6474 // have been added to the current block. If so, we need
6475 // to create another block to contain the new declaration
6476 // otherwise, as an optimization, we use the same block to
6477 // add the declaration.
6479 // FIXME: A further optimization is to check if the statements
6480 // that were added were added as part of the initialization
6481 // below. In which case, no other statements have been executed
6482 // and we might be able to reduce the number of blocks for
6483 // situations like this:
6485 // int j = 1; int k = j + 1;
6488 VariableDeclaration.FixupTypes (variable_declarators);
6489 // FIXME: Should VariableDeclaration.FixupArrayTypes be called here
6491 if (current_block.Used)
6492 implicit_block = new Block (current_block, Block.Flags.Implicit, loc, Location.Null);
6494 implicit_block = current_block;
6497 foreach (VariableDeclaration decl in variable_declarators){
6498 Expression type = decl.type;
6499 if (implicit_block.AddVariable (type, decl.identifier, current_local_parameters, decl.Location) != null) {
6500 if (decl.expression_or_array_initializer != null){
6502 inits = new ArrayList ();
6509 return implicit_block;
6511 foreach (VariableDeclaration decl in inits){
6514 Expression type = decl.type;
6516 if ((decl.expression_or_array_initializer is Expression) ||
6517 (decl.expression_or_array_initializer is New)) {
6518 expr = (Expression) decl.expression_or_array_initializer;
6520 ArrayList init = (ArrayList) decl.expression_or_array_initializer;
6522 expr = new ArrayCreation (type, "", init, decl.Location);
6525 LocalVariableReference var;
6526 var = new LocalVariableReference (implicit_block, decl.identifier, loc);
6528 assign = new Assign (var, expr, decl.Location);
6530 implicit_block.AddStatement (new StatementExpression (assign, lexer.Location));
6533 return implicit_block;
6536 Block declare_local_constant (Expression dummy_type, ArrayList variable_declarators)
6538 Block implicit_block;
6539 VariableDeclaration.FixupTypes (variable_declarators);
6541 if (current_block.Used)
6542 implicit_block = new Block (current_block, Block.Flags.Implicit);
6544 implicit_block = current_block;
6546 foreach (VariableDeclaration decl in variable_declarators){
6547 Expression type = decl.type;
6548 implicit_block.AddConstant (type, decl.identifier, (Expression) decl.expression_or_array_initializer,
6549 current_local_parameters, decl.Location);
6552 return implicit_block;
6562 public VarName (object n, object t, object r)
6572 // A class used to pass around variable declarations and constants
6574 public class VariableDeclaration {
6575 public string identifier;
6576 public object expression_or_array_initializer;
6577 public Location Location;
6578 public Attributes OptAttributes;
6579 public string DocComment;
6580 public Expression type;
6581 public ArrayList dims;
6583 public VariableDeclaration (string id, Expression t, object eoai, Location l, Attributes opt_attrs)
6585 this.identifier = id;
6586 this.expression_or_array_initializer = eoai;
6588 this.OptAttributes = opt_attrs;
6593 public VariableDeclaration (string id, object eoai, Location l) : this (id, eoai, l, null)
6597 public VariableDeclaration (string id, Expression t, Location l) : this (id, t, null, l, null)
6601 public VariableDeclaration (string id, object eoai, Location l, Attributes opt_attrs) : this
6602 (id, TypeManager.system_object_expr, eoai, l, opt_attrs)
6606 public static ArrayCreation BuildArrayCreator (Expression vartype, ArrayList a_dims, ArrayList varinit, Location l)
6608 // FIXME : This is broken: only the first rank is parsed
6609 return new ArrayCreation (vartype, (ArrayList) a_dims[0], "", varinit, l);
6612 public static void FixupTypes (ArrayList vars)
6614 int varcount = vars.Count;
6615 VariableDeclaration last_var = (VariableDeclaration) vars[varcount - 1];
6617 if (last_var.type == null)
6618 last_var.type = TypeManager.system_object_expr;
6620 Expression cur_type = last_var.type;
6621 int n = varcount - 1;
6624 VariableDeclaration var = (VariableDeclaration) vars[n--];
6625 if (var.type == null)
6626 var.type = cur_type;
6628 cur_type = var.type;
6632 public static bool IndexesSpecifiedInRank (ArrayList IndexList)
6636 if (IndexList != null) {
6637 foreach (Expression e in IndexList)
6638 if (!(e is EmptyExpression)) {
6647 public static bool IndexesSpecified (ArrayList ranks)
6651 if (ranks != null) {
6652 foreach (ArrayList IndexList in ranks) {
6653 if (IndexesSpecifiedInRank (IndexList)) {
6662 public static string StripDims (string varname, ref string d)
6664 string res = varname;
6667 if (varname.IndexOf("[") >= 0) {
6668 dres = varname.Substring(varname.IndexOf("["), (varname.LastIndexOf("]") - varname.IndexOf("["))+1);
6669 res = varname.Substring(0, varname.IndexOf("["));
6675 public static string StripDims (string varname)
6679 return (StripDims(varname, ref dres));
6682 public static string StripIndexesFromDims (string dims)
6684 StringBuilder sb = new StringBuilder();
6686 foreach (char c in dims)
6687 if (c == ',' || c == ']' || c == '[')
6690 return sb.ToString();
6693 public static string BuildRank (ArrayList rank)
6696 return BuildRank(rank, out allEmpty);
6699 public static string BuildRank (ArrayList rank, out bool allEmpty)
6706 foreach (object e in rank) {
6707 if (!(e is EmptyExpression))
6718 public static string BuildRanks (ArrayList rank_specifiers, bool mustBeEmpty, Location loc)
6722 bool allEmpty = true;
6723 foreach (ArrayList rank in rank_specifiers) {
6725 res = BuildRank (rank, out tmp) + res;
6729 if (!allEmpty && mustBeEmpty)
6730 Report.Error (30638, loc, "Array bounds cannot appear in type specifiers.");
6735 public static void VBFixIndexList (ref ArrayList IndexList)
6737 if (IndexList != null) {
6738 for (int x = 0; x < IndexList.Count; x++) {
6739 Expression e = (Expression) IndexList[x];
6740 if (!(e is EmptyExpression)) {
6741 IndexList[x] = new Binary (Binary.Operator.Addition, e, new IntLiteral(1), Location.Null);
6747 // public static bool IsArrayDecl (Parser t)
6749 // // return (varname.IndexOf("[") >= 0);
6750 // return (t.current_rank_specifiers != null);
6753 public static void VBFixIndexLists (ref ArrayList ranks)
6755 if (ranks != null) {
6756 for (int x = 0; x < ranks.Count; x++) {
6757 ArrayList IndexList = (ArrayList) ranks[x];
6758 VBFixIndexList (ref IndexList);
6763 public static void FixupArrayTypes (ArrayList vars)
6765 int varcount = vars.Count;
6768 foreach (VariableDeclaration var in vars) {
6769 if (var.identifier.EndsWith(",")) {
6770 dims = "[" + var.identifier.Substring(var.identifier.IndexOf (","),
6771 var.identifier.LastIndexOf(",")) + "]";
6772 var.identifier = var.identifier.Substring (0, var.identifier.IndexOf (","));
6773 var.type = new ComposedCast (var.type, (string) dims, var.Location);
6780 // public Property BuildSimpleProperty (Expression p_type, string name,
6781 // Field p_fld, int mod_flags,
6782 // Attributes attrs, Location loc)
6785 // Block get_block, set_block;
6786 // Accessor acc_set, acc_get;
6787 // StatementExpression a_set;
6789 // Parameter [] args;
6791 // // Build SET Block
6792 // Parameter implicit_value_parameter = new Parameter (p_type, "value", Parameter.Modifier.NONE, null);
6793 // args = new Parameter [1];
6794 // args [0] = implicit_value_parameter;
6796 // Parameters set_params = new Parameters (args, null, loc);
6797 // a_set = new StatementExpression ((ExpressionStatement) new Assign ((Expression) DecomposeQI(p_fld.Name, loc),
6798 // (Expression) new SimpleName("value", loc), loc), loc);
6800 // set_block = new Block (current_block, set_params, loc, Location.Null);
6801 // set_block.AddStatement ((Statement) a_set);
6802 // acc_set = new Accessor (set_block, attrs);
6804 // // Build GET Block
6805 // a_get = (Statement) new Return ((Expression) DecomposeQI(p_fld.Name, loc), loc);
6806 // get_block = new Block (current_block, null, loc, Location.Null);
6807 // get_block.AddStatement ((Statement) a_get);
6808 // acc_get = new Accessor (get_block, attrs);
6810 // p = new Property (p_type, name, mod_flags, (Accessor) acc_get, (Accessor) acc_set, attrs, loc);
6817 if (current_block == null){
6818 current_block = new ToplevelBlock ((ToplevelBlock) top_current_block,
6819 current_local_parameters, lexer.Location);
6820 top_current_block = current_block;
6822 current_block = new Block (current_block, current_local_parameters,
6823 lexer.Location, Location.Null);
6832 while (current_block.Implicit)
6833 current_block = current_block.Parent;
6834 res = current_block;
6835 current_block.SetEndLocation (lexer.Location);
6836 current_block = current_block.Parent;
6837 if (current_block == null)
6838 top_current_block = null;
6843 // private void AddHandler (Expression evt_definition, Expression handler_exp)
6845 // AddHandler (current_block, evt_definition, handler_exp);
6848 void CheckAttributeTarget (string a)
6852 case "assembly" : case "field" : case "method" : case "param" : case "property" : case "type" :
6856 Location l = lexer.Location;
6857 Report.Error (658, l, "`" + a + "' is an invalid attribute target");
6862 // private void AddHandler (Block b, Expression evt_id, Expression handles_exp)
6864 // Expression evt_target;
6865 // Location loc = lexer.Location;
6867 // Statement addhnd = (Statement) new AddHandler (evt_id,
6871 // b.AddStatement (addhnd);
6874 // private void RaiseEvent (string evt_name, ArrayList args)
6876 // Location loc = lexer.Location;
6878 // Invocation evt_call = new Invocation (DecomposeQI(evt_name, loc), args, lexer.Location);
6879 // Statement s = (Statement)(new StatementExpression ((ExpressionStatement) evt_call, loc));
6880 // current_block.AddStatement (s);
6883 // private void RemoveHandler (Block b, Expression evt_definition, Expression handler_exp)
6885 // Expression evt_target;
6886 // Location loc = lexer.Location;
6888 // Statement rmhnd = (Statement) new RemoveHandler (evt_definition,
6891 // b.AddStatement (rmhnd);
6895 // This method is used to get at the complete string representation of
6896 // a fully-qualified type name, hiding inside a MemberAccess ;-)
6897 // This is necessary because local_variable_type admits primary_expression
6898 // as the type of the variable. So we do some extra checking
6900 string GetQualifiedIdentifier (Expression expr)
6902 if (expr is SimpleName)
6903 return ((SimpleName)expr).Name;
6904 else if (expr is MemberAccess)
6905 return GetQualifiedIdentifier (((MemberAccess)expr).Expr) + "." + ((MemberAccess) expr).Identifier;
6907 throw new Exception ("Expr has to be either SimpleName or MemberAccess! (" + expr + ")");
6911 // private void RemoveHandler (Expression evt_definition, Expression handler_exp)
6913 // RemoveHandler (current_block, evt_definition, handler_exp);
6916 // FIXME: This needs to be fixed for This and Base access because the way the name of the
6917 // mbas' constructor is changed from "New" to current_container.Basename
6919 private ConstructorInitializer CheckConstructorInitializer (ref ArrayList s)
6921 ConstructorInitializer ci = null;
6924 if (s[0] is StatementExpression && ((StatementExpression) s[0]).expr is Invocation) {
6925 Invocation i = (Invocation) ((StatementExpression) s[0]).expr;
6927 if (i.expr is BaseAccess) {
6928 BaseAccess ba = (BaseAccess) i.expr;
6929 if (ba.member == "New" || ba.member == ".ctor") {
6930 ci = new ConstructorBaseInitializer (i.Arguments, current_local_parameters, lexer.Location);
6934 if (i.expr.ToString() == "Mono.MonoBASIC.This..ctor") {
6935 ci = new ConstructorThisInitializer (i.Arguments, current_local_parameters, lexer.Location);
6943 void Error_ExpectingTypeName (Location l, Expression expr)
6945 if (expr is Invocation){
6946 Report.Error (1002, l, "; expected");
6948 Report.Error (-1, l, "Invalid Type definition");
6952 static bool AlwaysAccept (MemberInfo m, object filterCriteria) {
6956 private void ReportError9998()
6958 Report.Error (29998, lexer.Location, "This construct is only available in MonoBASIC extended syntax.");
6961 public CSharpParser (SeekableStreamReader reader, SourceFile file, ArrayList defines)
6963 current_namespace = new NamespaceEntry (null, file, null, Location.Null);
6964 this.name = file.Name;
6966 current_container = RootContext.Tree.Types;
6967 current_container.NamespaceEntry = current_namespace;
6968 oob_stack = new Stack ();
6969 switch_stack = new Stack ();
6971 lexer = new Tokenizer (reader, file, defines);
6973 ifElseStateMachine = new IfElseStateMachine();
6974 tokenizerController = new TokenizerController(lexer);
6977 public void parse ()
6980 if (yacc_verbose_flag > 1)
6981 yyparse (lexer, new yydebug.yyDebugSimple ());
6984 Tokenizer tokenizer = lexer as Tokenizer;
6985 tokenizer.cleanup ();
6986 } catch (Exception e){
6988 // Removed for production use, use parser verbose to get the output.
6990 // Console.WriteLine (e);
6991 Report.Error (-25, lexer.Location, "Parsing error");
6992 if (yacc_verbose_flag > 0)
6993 Console.WriteLine (e);
6998 // protected override int parse ()
7000 // RootContext.InitializeImports(ImportsList);
7001 // current_namespace = new Namespace (null, RootContext.RootNamespace);
7002 // current_container = RootContext.Tree.Types;
7003 // current_container.Namespace = current_namespace;
7004 // oob_stack = new Stack ();
7005 // switch_stack = new Stack ();
7006 // expr_stack = new Stack ();
7007 // tmp_blocks = new Stack();
7008 // with_stack = new Stack();
7009 // statement_stack = new Stack();
7011 // allow_global_attribs = true;
7012 // expecting_global_attribs = false;
7013 // expecting_local_attribs = false;
7014 // local_attrib_section_added = false;
7016 // UseExtendedSyntax = name.EndsWith(".mbs");
7017 // OptionExplicit = InitialOptionExplicit || UseExtendedSyntax;
7018 // OptionStrict = InitialOptionStrict || UseExtendedSyntax;
7019 // OptionCompareBinary = InitialOptionCompareBinary;
7021 // lexer = new Tokenizer (input, name, defines);
7023 // ifElseStateMachine = new IfElseStateMachine();
7024 // tokenizerController = new TokenizerController(lexer);
7026 // StringBuilder value = new StringBuilder ();
7028 // if (yacc_verbose_flag > 0)
7029 // yyparse (lexer, new yydebug.yyDebugSimple ());
7035 // catch(MBASException e) {
7036 // Report.Error(e.code, e.loc, e.Message);
7038 // catch (Exception e) {
7039 // if (Report.Stacktrace)
7040 // Console.WriteLine(e);
7041 // Report.Error (29999, lexer.Location, "Parsing error");
7044 // RootContext.VerifyImports();
7046 // return Report.Errors;
7052 // ifElseStateMachine.HandleToken(IfElseStateMachine.Token.EOF);
7054 // catch(ApplicationException) {
7055 // throw new MBASException(ifElseStateMachine.Error, lexer.Location, ifElseStateMachine.ErrString);
7058 // if(in_external_source)
7059 // Report.Error (30579, lexer.Location, "'#ExternalSource' directives must end with matching '#End ExternalSource'");
7061 // if(in_marked_region > 0)
7062 // Report.Error (30205, lexer.Location, "'#Region' directive must be followed by a matching '#End Region'");
7065 void HandleConditionalDirective(IfElseStateMachine.Token tok, BoolLiteral expr)
7068 tokenizerController.PositionTokenizerCursor(tok, expr);
7070 catch(ApplicationException) {
7071 tok = IfElseStateMachine.Token.EOF;
7073 ifElseStateMachine.HandleToken(tok);
7075 catch(ApplicationException) {
7076 throw new MBASException(ifElseStateMachine.Error, lexer.Location, ifElseStateMachine.ErrString);
7083 // Given the @class_name name, it creates a fully qualified name
7084 // based on the containing declaration space
7087 MakeName (MemberName class_name)
7089 string ns = current_namespace.FullName;
7091 if (current_container.Name == ""){
7093 return new MemberName (new MemberName (ns), class_name);
7097 return new MemberName (current_container.MemberName, class_name);
7105 internal interface yyDebug {
7106 void push (int state, Object value);
7107 void lex (int state, int token, string name, Object value);
7108 void shift (int from, int to, int errorFlag);
7109 void pop (int state);
7110 void discard (int state, int token, string name, Object value);
7111 void reduce (int from, int to, int rule, string text, int len);
7112 void shift (int from, int to);
7113 void accept (Object value);
7114 void error (string message);
7118 class yyDebugSimple : yyDebug {
7119 void println (string s){
7120 Console.Error.WriteLine (s);
7123 public void push (int state, Object value) {
7124 println ("push\tstate "+state+"\tvalue "+value);
7127 public void lex (int state, int token, string name, Object value) {
7128 println("lex\tstate "+state+"\treading "+name+"\tvalue "+value);
7131 public void shift (int from, int to, int errorFlag) {
7132 switch (errorFlag) {
7133 default: // normally
7134 println("shift\tfrom state "+from+" to "+to);
7136 case 0: case 1: case 2: // in error recovery
7137 println("shift\tfrom state "+from+" to "+to
7138 +"\t"+errorFlag+" left to recover");
7141 println("shift\tfrom state "+from+" to "+to+"\ton error");
7146 public void pop (int state) {
7147 println("pop\tstate "+state+"\ton error");
7150 public void discard (int state, int token, string name, Object value) {
7151 println("discard\tstate "+state+"\ttoken "+name+"\tvalue "+value);
7154 public void reduce (int from, int to, int rule, string text, int len) {
7155 println("reduce\tstate "+from+"\tuncover "+to
7156 +"\trule ("+rule+") "+text);
7159 public void shift (int from, int to) {
7160 println("goto\tfrom state "+from+" to "+to);
7163 public void accept (Object value) {
7164 println("accept\tvalue "+value);
7167 public void error (string message) {
7168 println("error\t"+message);
7171 public void reject () {
7179 public const int EOF = 257;
7180 public const int NONE = 258;
7181 public const int ERROR = 259;
7182 public const int ADDHANDLER = 260;
7183 public const int ADDRESSOF = 261;
7184 public const int ALIAS = 262;
7185 public const int AND = 263;
7186 public const int ANDALSO = 264;
7187 public const int ANSI = 265;
7188 public const int AS = 266;
7189 public const int ASSEMBLY = 267;
7190 public const int AUTO = 268;
7191 public const int BINARY = 269;
7192 public const int BOOLEAN = 270;
7193 public const int BYREF = 271;
7194 public const int BYTE = 272;
7195 public const int BYVAL = 273;
7196 public const int CALL = 274;
7197 public const int CASE = 275;
7198 public const int CATCH = 276;
7199 public const int CBOOL = 277;
7200 public const int CBYTE = 278;
7201 public const int CCHAR = 279;
7202 public const int CDATE = 280;
7203 public const int CDEC = 281;
7204 public const int CDBL = 282;
7205 public const int CHAR = 283;
7206 public const int CINT = 284;
7207 public const int CLASS = 285;
7208 public const int CLNG = 286;
7209 public const int COBJ = 287;
7210 public const int COMPARE = 288;
7211 public const int CONST = 289;
7212 public const int CSHORT = 290;
7213 public const int CSNG = 291;
7214 public const int CSTR = 292;
7215 public const int CTYPE = 293;
7216 public const int DATE = 294;
7217 public const int DECIMAL = 295;
7218 public const int DECLARE = 296;
7219 public const int DEFAULT = 297;
7220 public const int DELEGATE = 298;
7221 public const int DIM = 299;
7222 public const int DIRECTCAST = 300;
7223 public const int DO = 301;
7224 public const int DOUBLE = 302;
7225 public const int EACH = 303;
7226 public const int ELSE = 304;
7227 public const int ELSEIF = 305;
7228 public const int END = 306;
7229 public const int ENDIF = 307;
7230 public const int ENUM = 308;
7231 public const int EOL = 309;
7232 public const int ERASE = 310;
7233 public const int EVENT = 311;
7234 public const int EXIT = 312;
7235 public const int EXPLICIT = 313;
7236 public const int FALSE = 314;
7237 public const int FINALLY = 315;
7238 public const int FOR = 316;
7239 public const int FRIEND = 317;
7240 public const int FUNCTION = 318;
7241 public const int GET = 319;
7242 public const int GETTYPE = 320;
7243 public const int GOSUB = 321;
7244 public const int GOTO = 322;
7245 public const int HANDLES = 323;
7246 public const int IF = 324;
7247 public const int IMPLEMENTS = 325;
7248 public const int IMPORTS = 326;
7249 public const int IN = 327;
7250 public const int INHERITS = 328;
7251 public const int INTEGER = 329;
7252 public const int INTERFACE = 330;
7253 public const int IS = 331;
7254 public const int LET = 332;
7255 public const int LIB = 333;
7256 public const int LIKE = 334;
7257 public const int LONG = 335;
7258 public const int LOOP = 336;
7259 public const int ME = 337;
7260 public const int MOD = 338;
7261 public const int MODULE = 339;
7262 public const int MUSTINHERIT = 340;
7263 public const int MUSTOVERRIDE = 341;
7264 public const int MYBASE = 342;
7265 public const int MYCLASS = 343;
7266 public const int NAMESPACE = 344;
7267 public const int NEW = 345;
7268 public const int NEXT = 346;
7269 public const int NOT = 347;
7270 public const int NOTHING = 348;
7271 public const int NOTINHERITABLE = 349;
7272 public const int NOTOVERRIDABLE = 350;
7273 public const int OBJECT = 351;
7274 public const int OFF = 352;
7275 public const int ON = 353;
7276 public const int OPTION = 354;
7277 public const int OPTIONAL = 355;
7278 public const int OR = 356;
7279 public const int ORELSE = 357;
7280 public const int OVERLOADS = 358;
7281 public const int OVERRIDABLE = 359;
7282 public const int OVERRIDES = 360;
7283 public const int PARAM_ARRAY = 361;
7284 public const int PRESERVE = 362;
7285 public const int PRIVATE = 363;
7286 public const int PROPERTY = 364;
7287 public const int PROTECTED = 365;
7288 public const int PUBLIC = 366;
7289 public const int RAISEEVENT = 367;
7290 public const int READONLY = 368;
7291 public const int REDIM = 369;
7292 public const int REM = 370;
7293 public const int REMOVEHANDLER = 371;
7294 public const int RESUME = 372;
7295 public const int RETURN = 373;
7296 public const int SELECT = 374;
7297 public const int SET = 375;
7298 public const int SHADOWS = 376;
7299 public const int SHARED = 377;
7300 public const int SHORT = 378;
7301 public const int SINGLE = 379;
7302 public const int SIZEOF = 380;
7303 public const int STATIC = 381;
7304 public const int STEP = 382;
7305 public const int STOP = 383;
7306 public const int STRICT = 384;
7307 public const int STRING = 385;
7308 public const int STRUCTURE = 386;
7309 public const int SUB = 387;
7310 public const int SYNCLOCK = 388;
7311 public const int TEXT = 389;
7312 public const int THEN = 390;
7313 public const int THROW = 391;
7314 public const int TO = 392;
7315 public const int TRUE = 393;
7316 public const int TRY = 394;
7317 public const int TYPEOF = 395;
7318 public const int UNICODE = 396;
7319 public const int UNTIL = 397;
7320 public const int VARIANT = 398;
7321 public const int WEND = 399;
7322 public const int WHEN = 400;
7323 public const int WHILE = 401;
7324 public const int WITH = 402;
7325 public const int WITHEVENTS = 403;
7326 public const int WRITEONLY = 404;
7327 public const int XOR = 405;
7328 public const int YIELD = 406;
7329 public const int HASH = 407;
7330 public const int OPEN_BRACKET = 408;
7331 public const int CLOSE_BRACKET = 409;
7332 public const int OPEN_PARENS = 410;
7333 public const int OPEN_BRACE = 411;
7334 public const int CLOSE_BRACE = 412;
7335 public const int CLOSE_PARENS = 413;
7336 public const int DOT = 414;
7337 public const int COMMA = 415;
7338 public const int COLON = 416;
7339 public const int PLUS = 417;
7340 public const int MINUS = 418;
7341 public const int ASSIGN = 419;
7342 public const int OP_LT = 420;
7343 public const int OP_GT = 421;
7344 public const int STAR = 422;
7345 public const int DIV = 423;
7346 public const int OP_EXP = 424;
7347 public const int INTERR = 425;
7348 public const int OP_IDIV = 426;
7349 public const int OP_CONCAT = 427;
7350 public const int EXCLAMATION = 428;
7351 public const int PERCENT = 429;
7352 public const int LONGTYPECHAR = 430;
7353 public const int AT_SIGN = 431;
7354 public const int SINGLETYPECHAR = 432;
7355 public const int NUMBER_SIGN = 433;
7356 public const int DOLAR_SIGN = 434;
7357 public const int ATTR_ASSIGN = 435;
7358 public const int OP_LE = 437;
7359 public const int OP_GE = 439;
7360 public const int OP_NE = 441;
7361 public const int OP_XOR = 443;
7362 public const int xor = 444;
7363 public const int OP_SHIFT_LEFT = 445;
7364 public const int OP_SHIFT_RIGHT = 447;
7365 public const int LITERAL_INTEGER = 449;
7366 public const int LITERAL_SINGLE = 451;
7367 public const int LITERAL_DOUBLE = 453;
7368 public const int LITERAL_DECIMAL = 455;
7369 public const int LITERAL_CHARACTER = 457;
7370 public const int LITERAL_STRING = 459;
7371 public const int LITERAL_DATE = 461;
7372 public const int IDENTIFIER = 463;
7373 public const int LOWPREC = 464;
7374 public const int OP_OR = 465;
7375 public const int OP_AND = 466;
7376 public const int BITWISE_OR = 467;
7377 public const int BITWISE_AND = 468;
7378 public const int BITWISE_NOT = 469;
7379 public const int CARRET = 470;
7380 public const int UMINUS = 471;
7381 public const int OP_INC = 472;
7382 public const int OP_DEC = 473;
7383 public const int HIGHPREC = 474;
7384 public const int label_name = 475;
7385 public const int yyErrorCode = 256;
7387 namespace yyParser {
7389 /** thrown for irrecoverable syntax errors and stack overflow.
7391 internal class yyException : System.Exception {
7392 public yyException (string message) : base (message) {
7396 /** must be implemented by a scanner object to supply input to the parser.
7398 internal interface yyInput {
7399 /** move on to next token.
7400 @return false if positioned beyond tokens.
7401 @throws IOException on input error.
7403 bool advance (); // throws java.io.IOException;
7404 /** classifies current token.
7405 Should not be called if advance() returned false.
7406 @return current %token or single character.
7409 /** associated with current token.
7410 Should not be called if advance() returned false.
7411 @return value for token().
7416 } // close outermost namespace, that MUST HAVE BEEN opened in the prolog