/* Objective Modula-2 Compiler (objm2c) * * objm2_first_follow.h * FIRST and FOLLOW set list macros * * The contents of this file have been automatically generated by the utility * program gen_first_and_follow_sets.c - DO NOT modify the contents manually! * * The macros in this file generate comma separated argument lists containing * the element count and elements for each FIRST and each FOLLOW set of the * Objective Modula-2 grammar. The macros are provided for use in functions * that generate error messages for syntax errors. * * Copyright (C) 2009 The Objective Modula-2 Project. All rights reserved. * * License: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met * * 1) This file, or any part thereof, may NOT be hosted on websites which * contain advertising, unless specific prior written permission has been * obtained. The licensor will grant such permission upon request at its * sole discretion to websites the licensor does NOT consider abusive in * their use of advertising. Small notices in the footer of a website * naming corporate rights holders, infrastructure providers or sponsors * are not considered advertising in the context of this license. * * 2) Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 3) Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and other materials provided with the distribution. * * 4) Neither the author's name nor the names of any contributors may be used * to endorse or promote products derived from this software without * specific prior written permission. * * 5) Where this list of conditions or the following disclaimer, in part or * as a whole is overruled or nullified by applicable law, no permission * is granted to use the software. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * Content generation timestamp: * * 2009-09-20 22:59:50 +0900 */ #ifndef OBJM2_FIRST_FOLLOW_H #define OBJM2_FIRST_FOLLOW_H // FIRST set lists #define FIRST_LIST_for_compilation_unit \ 4, \ TOKEN_DEFINITION, \ TOKEN_IMPLEMENTATION, \ TOKEN_MODULE, \ TOKEN_PROTOCOL #define FIRST_LIST_for_program_module \ 1, \ TOKEN_MODULE #define FIRST_LIST_for_definition_of_module \ 1, \ TOKEN_DEFINITION #define FIRST_LIST_for_implementation_of_module \ 1, \ TOKEN_IMPLEMENTATION #define FIRST_LIST_for_protocol \ 1, \ TOKEN_PROTOCOL #define FIRST_LIST_for_import_list \ 2, \ TOKEN_FROM, \ TOKEN_IMPORT #define FIRST_LIST_for_declaration \ 6, \ TOKEN_CLASS, \ TOKEN_CONST, \ TOKEN_METHOD, \ TOKEN_PROCEDURE, \ TOKEN_TYPE, \ TOKEN_VAR #define FIRST_LIST_for_definition \ 6, \ TOKEN_CLASS, \ TOKEN_CONST, \ TOKEN_METHOD, \ TOKEN_PROCEDURE, \ TOKEN_TYPE, \ TOKEN_VAR #define FIRST_LIST_for_const_declaration \ 1, \ TOKEN_IDENTIFIER #define FIRST_LIST_for_type_declaration \ 1, \ TOKEN_IDENTIFIER #define FIRST_LIST_for_type \ 9, \ TOKEN_ARRAY, \ TOKEN_CLASS, \ TOKEN_ENUM, \ TOKEN_POINTER, \ TOKEN_PROCEDURE, \ TOKEN_RECORD, \ TOKEN_SET, \ TOKEN_IDENTIFIER, \ TOKEN_OPENING_PARENTHESIS #define FIRST_LIST_for_anonymous_type \ 4, \ TOKEN_ARRAY, \ TOKEN_POINTER, \ TOKEN_PROCEDURE, \ TOKEN_RECORD #define FIRST_LIST_for_enumeration_type \ 2, \ TOKEN_ENUM, \ TOKEN_OPENING_PARENTHESIS #define FIRST_LIST_for_array_type \ 1, \ TOKEN_ARRAY #define FIRST_LIST_for_record_type \ 1, \ TOKEN_RECORD #define FIRST_LIST_for_field_list_sequence \ 1, \ TOKEN_IDENTIFIER #define FIRST_LIST_for_field_list \ 1, \ TOKEN_IDENTIFIER #define FIRST_LIST_for_class_type \ 1, \ TOKEN_CLASS #define FIRST_LIST_for_set_type \ 1, \ TOKEN_SET #define FIRST_LIST_for_pointer_type \ 1, \ TOKEN_POINTER #define FIRST_LIST_for_procedure_type \ 1, \ TOKEN_PROCEDURE #define FIRST_LIST_for_formal_type_list \ 4, \ TOKEN_ARRAY, \ TOKEN_IMMUTABLE, \ TOKEN_VAR, \ TOKEN_IDENTIFIER #define FIRST_LIST_for_attributed_formal_type \ 4, \ TOKEN_ARRAY, \ TOKEN_IMMUTABLE, \ TOKEN_VAR, \ TOKEN_IDENTIFIER #define FIRST_LIST_for_formal_type \ 2, \ TOKEN_ARRAY, \ TOKEN_IDENTIFIER #define FIRST_LIST_for_variable_declaration \ 1, \ TOKEN_IDENTIFIER #define FIRST_LIST_for_procedure_declaration \ 1, \ TOKEN_PROCEDURE #define FIRST_LIST_for_procedure_header \ 1, \ TOKEN_PROCEDURE #define FIRST_LIST_for_formal_param_list \ 3, \ TOKEN_IMMUTABLE, \ TOKEN_VAR, \ TOKEN_IDENTIFIER #define FIRST_LIST_for_formal_params \ 3, \ TOKEN_IMMUTABLE, \ TOKEN_VAR, \ TOKEN_IDENTIFIER #define FIRST_LIST_for_method_declaration \ 2, \ TOKEN_CLASS, \ TOKEN_METHOD #define FIRST_LIST_for_method_header \ 2, \ TOKEN_CLASS, \ TOKEN_METHOD #define FIRST_LIST_for_method_arg \ 1, \ TOKEN_COLON_IDENTIFIER #define FIRST_LIST_for_statement \ 12, \ TOKEN_CASE, \ TOKEN_CRITICAL, \ TOKEN_EXIT, \ TOKEN_FOR, \ TOKEN_IF, \ TOKEN_LOOP, \ TOKEN_REPEAT, \ TOKEN_RETURN, \ TOKEN_TRY, \ TOKEN_WHILE, \ TOKEN_IDENTIFIER, \ TOKEN_OPENING_BRACKET #define FIRST_LIST_for_statement_sequence \ 12, \ TOKEN_CASE, \ TOKEN_CRITICAL, \ TOKEN_EXIT, \ TOKEN_FOR, \ TOKEN_IF, \ TOKEN_LOOP, \ TOKEN_REPEAT, \ TOKEN_RETURN, \ TOKEN_TRY, \ TOKEN_WHILE, \ TOKEN_IDENTIFIER, \ TOKEN_OPENING_BRACKET #define FIRST_LIST_for_method_invocation \ 1, \ TOKEN_OPENING_BRACKET #define FIRST_LIST_for_receiver \ 2, \ TOKEN_IDENTIFIER, \ TOKEN_OPENING_BRACKET #define FIRST_LIST_for_message \ 2, \ TOKEN_IDENTIFIER, \ TOKEN_COLON_IDENTIFIER #define FIRST_LIST_for_assignment_or_procedure_call \ 1, \ TOKEN_IDENTIFIER #define FIRST_LIST_for_if_statement \ 1, \ TOKEN_IF #define FIRST_LIST_for_case_statement \ 1, \ TOKEN_CASE #define FIRST_LIST_for_case \ 8, \ TOKEN_NOT, \ TOKEN_IDENTIFIER, \ TOKEN_NUMERIC_LITERAL, \ TOKEN_STRING_LITERAL, \ TOKEN_LOGICAL_NOT_OP, \ TOKEN_PLUS_OP, \ TOKEN_MINUS_OP, \ TOKEN_OPENING_PARENTHESIS #define FIRST_LIST_for_case_label_list \ 8, \ TOKEN_NOT, \ TOKEN_IDENTIFIER, \ TOKEN_NUMERIC_LITERAL, \ TOKEN_STRING_LITERAL, \ TOKEN_LOGICAL_NOT_OP, \ TOKEN_PLUS_OP, \ TOKEN_MINUS_OP, \ TOKEN_OPENING_PARENTHESIS #define FIRST_LIST_for_case_labels \ 8, \ TOKEN_NOT, \ TOKEN_IDENTIFIER, \ TOKEN_NUMERIC_LITERAL, \ TOKEN_STRING_LITERAL, \ TOKEN_LOGICAL_NOT_OP, \ TOKEN_PLUS_OP, \ TOKEN_MINUS_OP, \ TOKEN_OPENING_PARENTHESIS #define FIRST_LIST_for_while_statement \ 1, \ TOKEN_WHILE #define FIRST_LIST_for_repeat_statement \ 1, \ TOKEN_REPEAT #define FIRST_LIST_for_loop_statement \ 1, \ TOKEN_LOOP #define FIRST_LIST_for_for_statement \ 1, \ TOKEN_FOR #define FIRST_LIST_for_try_statement \ 1, \ TOKEN_TRY #define FIRST_LIST_for_critical_statement \ 1, \ TOKEN_CRITICAL #define FIRST_LIST_for_const_expression \ 8, \ TOKEN_NOT, \ TOKEN_IDENTIFIER, \ TOKEN_NUMERIC_LITERAL, \ TOKEN_STRING_LITERAL, \ TOKEN_LOGICAL_NOT_OP, \ TOKEN_PLUS_OP, \ TOKEN_MINUS_OP, \ TOKEN_OPENING_PARENTHESIS #define FIRST_LIST_for_relation \ 8, \ TOKEN_IN, \ TOKEN_IS, \ TOKEN_EQUAL_OP, \ TOKEN_NOT_EQUAL_OP, \ TOKEN_GREATER_OP, \ TOKEN_GREATER_OR_EQUAL_OP, \ TOKEN_LESS_OP, \ TOKEN_LESS_OR_EQUAL_OP #define FIRST_LIST_for_simple_const_expr \ 8, \ TOKEN_NOT, \ TOKEN_IDENTIFIER, \ TOKEN_NUMERIC_LITERAL, \ TOKEN_STRING_LITERAL, \ TOKEN_LOGICAL_NOT_OP, \ TOKEN_PLUS_OP, \ TOKEN_MINUS_OP, \ TOKEN_OPENING_PARENTHESIS #define FIRST_LIST_for_add_operator \ 3, \ TOKEN_OR, \ TOKEN_PLUS_OP, \ TOKEN_MINUS_OP #define FIRST_LIST_for_const_term \ 6, \ TOKEN_NOT, \ TOKEN_IDENTIFIER, \ TOKEN_NUMERIC_LITERAL, \ TOKEN_STRING_LITERAL, \ TOKEN_LOGICAL_NOT_OP, \ TOKEN_OPENING_PARENTHESIS #define FIRST_LIST_for_mul_operator \ 6, \ TOKEN_AND, \ TOKEN_DIV, \ TOKEN_MOD, \ TOKEN_LOGICAL_AND_OP, \ TOKEN_MULTIPLY_OP, \ TOKEN_DIVIDE_OP #define FIRST_LIST_for_const_factor \ 6, \ TOKEN_NOT, \ TOKEN_IDENTIFIER, \ TOKEN_NUMERIC_LITERAL, \ TOKEN_STRING_LITERAL, \ TOKEN_LOGICAL_NOT_OP, \ TOKEN_OPENING_PARENTHESIS #define FIRST_LIST_for_designator \ 1, \ TOKEN_IDENTIFIER #define FIRST_LIST_for_designator_tail \ 2, \ TOKEN_POINTER_OP, \ TOKEN_OPENING_BRACKET #define FIRST_LIST_for_expression_list \ 9, \ TOKEN_NOT, \ TOKEN_IDENTIFIER, \ TOKEN_NUMERIC_LITERAL, \ TOKEN_STRING_LITERAL, \ TOKEN_LOGICAL_NOT_OP, \ TOKEN_PLUS_OP, \ TOKEN_MINUS_OP, \ TOKEN_OPENING_PARENTHESIS, \ TOKEN_OPENING_BRACKET #define FIRST_LIST_for_expression \ 9, \ TOKEN_NOT, \ TOKEN_IDENTIFIER, \ TOKEN_NUMERIC_LITERAL, \ TOKEN_STRING_LITERAL, \ TOKEN_LOGICAL_NOT_OP, \ TOKEN_PLUS_OP, \ TOKEN_MINUS_OP, \ TOKEN_OPENING_PARENTHESIS, \ TOKEN_OPENING_BRACKET #define FIRST_LIST_for_simple_expression \ 9, \ TOKEN_NOT, \ TOKEN_IDENTIFIER, \ TOKEN_NUMERIC_LITERAL, \ TOKEN_STRING_LITERAL, \ TOKEN_LOGICAL_NOT_OP, \ TOKEN_PLUS_OP, \ TOKEN_MINUS_OP, \ TOKEN_OPENING_PARENTHESIS, \ TOKEN_OPENING_BRACKET #define FIRST_LIST_for_term \ 7, \ TOKEN_NOT, \ TOKEN_IDENTIFIER, \ TOKEN_NUMERIC_LITERAL, \ TOKEN_STRING_LITERAL, \ TOKEN_LOGICAL_NOT_OP, \ TOKEN_OPENING_PARENTHESIS, \ TOKEN_OPENING_BRACKET #define FIRST_LIST_for_factor \ 7, \ TOKEN_NOT, \ TOKEN_IDENTIFIER, \ TOKEN_NUMERIC_LITERAL, \ TOKEN_STRING_LITERAL, \ TOKEN_LOGICAL_NOT_OP, \ TOKEN_OPENING_PARENTHESIS, \ TOKEN_OPENING_BRACKET #define FIRST_LIST_for_designator_or_procedure_call \ 1, \ TOKEN_IDENTIFIER #define FIRST_LIST_for_actual_parameters \ 1, \ TOKEN_OPENING_PARENTHESIS #define FIRST_LIST_for_structured_value \ 1, \ TOKEN_OPENING_BRACE #define FIRST_LIST_for_value_component \ 8, \ TOKEN_NOT, \ TOKEN_IDENTIFIER, \ TOKEN_NUMERIC_LITERAL, \ TOKEN_STRING_LITERAL, \ TOKEN_LOGICAL_NOT_OP, \ TOKEN_PLUS_OP, \ TOKEN_MINUS_OP, \ TOKEN_OPENING_PARENTHESIS #define FIRST_LIST_for_qualident \ 1, \ TOKEN_IDENTIFIER #define FIRST_LIST_for_ident_list \ 1, \ TOKEN_IDENTIFIER // FOLLOW set lists #define FOLLOW_LIST_for_compilation_unit \ 1, \ TOKEN_EOF_MARKER #define FOLLOW_LIST_for_program_module \ 1, \ TOKEN_EOF_MARKER #define FOLLOW_LIST_for_definition_of_module \ 1, \ TOKEN_EOF_MARKER #define FOLLOW_LIST_for_implementation_of_module \ 1, \ TOKEN_EOF_MARKER #define FOLLOW_LIST_for_protocol \ 1, \ TOKEN_EOF_MARKER #define FOLLOW_LIST_for_import_list \ 8, \ TOKEN_BEGIN, \ TOKEN_CONST, \ TOKEN_END, \ TOKEN_METHOD, \ TOKEN_OPTIONAL, \ TOKEN_PROCEDURE, \ TOKEN_TYPE, \ TOKEN_VAR #define FOLLOW_LIST_for_declaration \ 2, \ TOKEN_BEGIN, \ TOKEN_END #define FOLLOW_LIST_for_definition \ 1, \ TOKEN_END #define FOLLOW_LIST_for_const_declaration \ 1, \ TOKEN_SEMICOLON #define FOLLOW_LIST_for_type_declaration \ 1, \ TOKEN_SEMICOLON #define FOLLOW_LIST_for_type \ 1, \ TOKEN_SEMICOLON #define FOLLOW_LIST_for_anonymous_type \ 1, \ TOKEN_SEMICOLON #define FOLLOW_LIST_for_enumeration_type \ 1, \ TOKEN_SEMICOLON #define FOLLOW_LIST_for_array_type \ 1, \ TOKEN_SEMICOLON #define FOLLOW_LIST_for_record_type \ 1, \ TOKEN_SEMICOLON #define FOLLOW_LIST_for_field_list_sequence \ 1, \ TOKEN_END #define FOLLOW_LIST_for_field_list \ 2, \ TOKEN_END, \ TOKEN_SEMICOLON #define FOLLOW_LIST_for_class_type \ 1, \ TOKEN_SEMICOLON #define FOLLOW_LIST_for_set_type \ 1, \ TOKEN_SEMICOLON #define FOLLOW_LIST_for_pointer_type \ 1, \ TOKEN_SEMICOLON #define FOLLOW_LIST_for_procedure_type \ 1, \ TOKEN_SEMICOLON #define FOLLOW_LIST_for_formal_type_list \ 2, \ TOKEN_COLON, \ TOKEN_SEMICOLON #define FOLLOW_LIST_for_attributed_formal_type \ 3, \ TOKEN_COMMA, \ TOKEN_COLON, \ TOKEN_SEMICOLON #define FOLLOW_LIST_for_formal_type \ 3, \ TOKEN_COMMA, \ TOKEN_COLON, \ TOKEN_SEMICOLON #define FOLLOW_LIST_for_variable_declaration \ 1, \ TOKEN_SEMICOLON #define FOLLOW_LIST_for_procedure_declaration \ 1, \ TOKEN_SEMICOLON #define FOLLOW_LIST_for_procedure_header \ 1, \ TOKEN_SEMICOLON #define FOLLOW_LIST_for_formal_param_list \ 1, \ TOKEN_CLOSING_PARENTHESIS #define FOLLOW_LIST_for_formal_params \ 3, \ TOKEN_VARIADIC, \ TOKEN_CLOSING_PARENTHESIS, \ TOKEN_SEMICOLON #define FOLLOW_LIST_for_method_declaration \ 1, \ TOKEN_SEMICOLON #define FOLLOW_LIST_for_method_header \ 1, \ TOKEN_SEMICOLON #define FOLLOW_LIST_for_method_arg \ 2, \ TOKEN_COLON, \ TOKEN_SEMICOLON #define FOLLOW_LIST_for_statement \ 7, \ TOKEN_CONTINUE, \ TOKEN_ELSE, \ TOKEN_END, \ TOKEN_ON, \ TOKEN_UNTIL, \ TOKEN_SEMICOLON, \ TOKEN_VERTICAL_BAR #define FOLLOW_LIST_for_statement_sequence \ 7, \ TOKEN_CONTINUE, \ TOKEN_ELSE, \ TOKEN_ELSIF, \ TOKEN_END, \ TOKEN_ON, \ TOKEN_UNTIL, \ TOKEN_VERTICAL_BAR #define FOLLOW_LIST_for_method_invocation \ 9, \ TOKEN_CONTINUE, \ TOKEN_ELSE, \ TOKEN_END, \ TOKEN_ON, \ TOKEN_UNTIL, \ TOKEN_IDENTIFIER, \ TOKEN_COLON_IDENTIFIER, \ TOKEN_SEMICOLON, \ TOKEN_VERTICAL_BAR #define FOLLOW_LIST_for_receiver \ 2, \ TOKEN_IDENTIFIER, \ TOKEN_COLON_IDENTIFIER #define FOLLOW_LIST_for_message \ 1, \ TOKEN_CLOSING_BRACKET #define FOLLOW_LIST_for_assignment_or_procedure_call \ 7, \ TOKEN_CONTINUE, \ TOKEN_ELSE, \ TOKEN_END, \ TOKEN_ON, \ TOKEN_UNTIL, \ TOKEN_SEMICOLON, \ TOKEN_VERTICAL_BAR #define FOLLOW_LIST_for_if_statement \ 7, \ TOKEN_CONTINUE, \ TOKEN_ELSE, \ TOKEN_END, \ TOKEN_ON, \ TOKEN_UNTIL, \ TOKEN_SEMICOLON, \ TOKEN_VERTICAL_BAR #define FOLLOW_LIST_for_case_statement \ 7, \ TOKEN_CONTINUE, \ TOKEN_ELSE, \ TOKEN_END, \ TOKEN_ON, \ TOKEN_UNTIL, \ TOKEN_SEMICOLON, \ TOKEN_VERTICAL_BAR #define FOLLOW_LIST_for_case \ 3, \ TOKEN_ELSE, \ TOKEN_END, \ TOKEN_VERTICAL_BAR #define FOLLOW_LIST_for_case_label_list \ 1, \ TOKEN_COLON #define FOLLOW_LIST_for_case_labels \ 2, \ TOKEN_COMMA, \ TOKEN_COLON #define FOLLOW_LIST_for_while_statement \ 7, \ TOKEN_CONTINUE, \ TOKEN_ELSE, \ TOKEN_END, \ TOKEN_ON, \ TOKEN_UNTIL, \ TOKEN_SEMICOLON, \ TOKEN_VERTICAL_BAR #define FOLLOW_LIST_for_repeat_statement \ 7, \ TOKEN_CONTINUE, \ TOKEN_ELSE, \ TOKEN_END, \ TOKEN_ON, \ TOKEN_UNTIL, \ TOKEN_SEMICOLON, \ TOKEN_VERTICAL_BAR #define FOLLOW_LIST_for_loop_statement \ 7, \ TOKEN_CONTINUE, \ TOKEN_ELSE, \ TOKEN_END, \ TOKEN_ON, \ TOKEN_UNTIL, \ TOKEN_SEMICOLON, \ TOKEN_VERTICAL_BAR #define FOLLOW_LIST_for_for_statement \ 7, \ TOKEN_CONTINUE, \ TOKEN_ELSE, \ TOKEN_END, \ TOKEN_ON, \ TOKEN_UNTIL, \ TOKEN_SEMICOLON, \ TOKEN_VERTICAL_BAR #define FOLLOW_LIST_for_try_statement \ 7, \ TOKEN_CONTINUE, \ TOKEN_ELSE, \ TOKEN_END, \ TOKEN_ON, \ TOKEN_UNTIL, \ TOKEN_SEMICOLON, \ TOKEN_VERTICAL_BAR #define FOLLOW_LIST_for_critical_statement \ 7, \ TOKEN_CONTINUE, \ TOKEN_ELSE, \ TOKEN_END, \ TOKEN_ON, \ TOKEN_UNTIL, \ TOKEN_SEMICOLON, \ TOKEN_VERTICAL_BAR #define FOLLOW_LIST_for_const_expression \ 11, \ TOKEN_BY, \ TOKEN_DO, \ TOKEN_OF, \ TOKEN_CLOSING_PARENTHESIS, \ TOKEN_CLOSING_BRACKET, \ TOKEN_OPENING_BRACE, \ TOKEN_CLOSING_BRACE, \ TOKEN_DOT_DOT, \ TOKEN_COMMA, \ TOKEN_COLON, \ TOKEN_SEMICOLON #define FOLLOW_LIST_for_relation \ 8, \ TOKEN_NOT, \ TOKEN_IDENTIFIER, \ TOKEN_NUMERIC_LITERAL, \ TOKEN_STRING_LITERAL, \ TOKEN_LOGICAL_NOT_OP, \ TOKEN_PLUS_OP, \ TOKEN_MINUS_OP, \ TOKEN_OPENING_PARENTHESIS #define FOLLOW_LIST_for_simple_const_expr \ 9, \ TOKEN_IN, \ TOKEN_IS, \ TOKEN_TYPE_CONVERSION_OP, \ TOKEN_EQUAL_OP, \ TOKEN_NOT_EQUAL_OP, \ TOKEN_GREATER_OP, \ TOKEN_GREATER_OR_EQUAL_OP, \ TOKEN_LESS_OP, \ TOKEN_LESS_OR_EQUAL_OP #define FOLLOW_LIST_for_add_operator \ 6, \ TOKEN_NOT, \ TOKEN_IDENTIFIER, \ TOKEN_NUMERIC_LITERAL, \ TOKEN_STRING_LITERAL, \ TOKEN_LOGICAL_NOT_OP, \ TOKEN_OPENING_PARENTHESIS #define FOLLOW_LIST_for_const_term \ 12, \ TOKEN_IN, \ TOKEN_IS, \ TOKEN_OR, \ TOKEN_TYPE_CONVERSION_OP, \ TOKEN_EQUAL_OP, \ TOKEN_NOT_EQUAL_OP, \ TOKEN_GREATER_OP, \ TOKEN_GREATER_OR_EQUAL_OP, \ TOKEN_LESS_OP, \ TOKEN_LESS_OR_EQUAL_OP, \ TOKEN_PLUS_OP, \ TOKEN_MINUS_OP #define FOLLOW_LIST_for_mul_operator \ 6, \ TOKEN_NOT, \ TOKEN_IDENTIFIER, \ TOKEN_NUMERIC_LITERAL, \ TOKEN_STRING_LITERAL, \ TOKEN_LOGICAL_NOT_OP, \ TOKEN_OPENING_PARENTHESIS #define FOLLOW_LIST_for_const_factor \ 18, \ TOKEN_AND, \ TOKEN_DIV, \ TOKEN_IN, \ TOKEN_IS, \ TOKEN_MOD, \ TOKEN_OR, \ TOKEN_TYPE_CONVERSION_OP, \ TOKEN_LOGICAL_AND_OP, \ TOKEN_EQUAL_OP, \ TOKEN_NOT_EQUAL_OP, \ TOKEN_GREATER_OP, \ TOKEN_GREATER_OR_EQUAL_OP, \ TOKEN_LESS_OP, \ TOKEN_LESS_OR_EQUAL_OP, \ TOKEN_PLUS_OP, \ TOKEN_MINUS_OP, \ TOKEN_MULTIPLY_OP, \ TOKEN_DIVIDE_OP #define FOLLOW_LIST_for_designator \ 6, \ TOKEN_END, \ TOKEN_ASSIGN_OP, \ TOKEN_INCREMENT_OP, \ TOKEN_DECREMENT_OP, \ TOKEN_OPENING_PARENTHESIS, \ TOKEN_SEMICOLON #define FOLLOW_LIST_for_designator_tail \ 6, \ TOKEN_END, \ TOKEN_ASSIGN_OP, \ TOKEN_INCREMENT_OP, \ TOKEN_DECREMENT_OP, \ TOKEN_OPENING_PARENTHESIS, \ TOKEN_SEMICOLON #define FOLLOW_LIST_for_expression_list \ 2, \ TOKEN_CLOSING_PARENTHESIS, \ TOKEN_CLOSING_BRACKET #define FOLLOW_LIST_for_expression \ 15, \ TOKEN_CONTINUE, \ TOKEN_DO, \ TOKEN_ELSE, \ TOKEN_ELSIF, \ TOKEN_END, \ TOKEN_OF, \ TOKEN_ON, \ TOKEN_THEN, \ TOKEN_TO, \ TOKEN_UNTIL, \ TOKEN_CLOSING_PARENTHESIS, \ TOKEN_CLOSING_BRACKET, \ TOKEN_COMMA, \ TOKEN_SEMICOLON, \ TOKEN_VERTICAL_BAR #define FOLLOW_LIST_for_simple_expression \ 23, \ TOKEN_CONTINUE, \ TOKEN_DO, \ TOKEN_ELSE, \ TOKEN_ELSIF, \ TOKEN_END, \ TOKEN_NOT, \ TOKEN_OF, \ TOKEN_ON, \ TOKEN_THEN, \ TOKEN_TO, \ TOKEN_UNTIL, \ TOKEN_IDENTIFIER, \ TOKEN_NUMERIC_LITERAL, \ TOKEN_STRING_LITERAL, \ TOKEN_TYPE_CONVERSION_OP, \ TOKEN_LOGICAL_NOT_OP, \ TOKEN_PLUS_OP, \ TOKEN_MINUS_OP, \ TOKEN_CLOSING_PARENTHESIS, \ TOKEN_CLOSING_BRACKET, \ TOKEN_COMMA, \ TOKEN_SEMICOLON, \ TOKEN_VERTICAL_BAR #define FOLLOW_LIST_for_term \ 24, \ TOKEN_CONTINUE, \ TOKEN_DO, \ TOKEN_ELSE, \ TOKEN_ELSIF, \ TOKEN_END, \ TOKEN_NOT, \ TOKEN_OF, \ TOKEN_ON, \ TOKEN_OR, \ TOKEN_THEN, \ TOKEN_TO, \ TOKEN_UNTIL, \ TOKEN_IDENTIFIER, \ TOKEN_NUMERIC_LITERAL, \ TOKEN_STRING_LITERAL, \ TOKEN_TYPE_CONVERSION_OP, \ TOKEN_LOGICAL_NOT_OP, \ TOKEN_PLUS_OP, \ TOKEN_MINUS_OP, \ TOKEN_CLOSING_PARENTHESIS, \ TOKEN_CLOSING_BRACKET, \ TOKEN_COMMA, \ TOKEN_SEMICOLON, \ TOKEN_VERTICAL_BAR #define FOLLOW_LIST_for_factor \ 24, \ TOKEN_CONTINUE, \ TOKEN_DO, \ TOKEN_ELSE, \ TOKEN_ELSIF, \ TOKEN_END, \ TOKEN_NOT, \ TOKEN_OF, \ TOKEN_ON, \ TOKEN_OR, \ TOKEN_THEN, \ TOKEN_TO, \ TOKEN_UNTIL, \ TOKEN_IDENTIFIER, \ TOKEN_NUMERIC_LITERAL, \ TOKEN_STRING_LITERAL, \ TOKEN_TYPE_CONVERSION_OP, \ TOKEN_LOGICAL_NOT_OP, \ TOKEN_PLUS_OP, \ TOKEN_MINUS_OP, \ TOKEN_CLOSING_PARENTHESIS, \ TOKEN_CLOSING_BRACKET, \ TOKEN_COMMA, \ TOKEN_SEMICOLON, \ TOKEN_VERTICAL_BAR #define FOLLOW_LIST_for_designator_or_procedure_call \ 24, \ TOKEN_CONTINUE, \ TOKEN_DO, \ TOKEN_ELSE, \ TOKEN_ELSIF, \ TOKEN_END, \ TOKEN_NOT, \ TOKEN_OF, \ TOKEN_ON, \ TOKEN_OR, \ TOKEN_THEN, \ TOKEN_TO, \ TOKEN_UNTIL, \ TOKEN_IDENTIFIER, \ TOKEN_NUMERIC_LITERAL, \ TOKEN_STRING_LITERAL, \ TOKEN_TYPE_CONVERSION_OP, \ TOKEN_LOGICAL_NOT_OP, \ TOKEN_PLUS_OP, \ TOKEN_MINUS_OP, \ TOKEN_CLOSING_PARENTHESIS, \ TOKEN_CLOSING_BRACKET, \ TOKEN_COMMA, \ TOKEN_SEMICOLON, \ TOKEN_VERTICAL_BAR #define FOLLOW_LIST_for_actual_parameters \ 24, \ TOKEN_CONTINUE, \ TOKEN_DO, \ TOKEN_ELSE, \ TOKEN_ELSIF, \ TOKEN_END, \ TOKEN_NOT, \ TOKEN_OF, \ TOKEN_ON, \ TOKEN_OR, \ TOKEN_THEN, \ TOKEN_TO, \ TOKEN_UNTIL, \ TOKEN_IDENTIFIER, \ TOKEN_NUMERIC_LITERAL, \ TOKEN_STRING_LITERAL, \ TOKEN_TYPE_CONVERSION_OP, \ TOKEN_LOGICAL_NOT_OP, \ TOKEN_PLUS_OP, \ TOKEN_MINUS_OP, \ TOKEN_CLOSING_PARENTHESIS, \ TOKEN_CLOSING_BRACKET, \ TOKEN_COMMA, \ TOKEN_SEMICOLON, \ TOKEN_VERTICAL_BAR #define FOLLOW_LIST_for_structured_value \ 9, \ TOKEN_CONTINUE, \ TOKEN_ELSE, \ TOKEN_END, \ TOKEN_ON, \ TOKEN_UNTIL, \ TOKEN_CLOSING_BRACE, \ TOKEN_COMMA, \ TOKEN_SEMICOLON, \ TOKEN_VERTICAL_BAR #define FOLLOW_LIST_for_value_component \ 2, \ TOKEN_CLOSING_BRACE, \ TOKEN_COMMA #define FOLLOW_LIST_for_qualident \ 39, \ TOKEN_AND, \ TOKEN_CONTINUE, \ TOKEN_DIV, \ TOKEN_DO, \ TOKEN_ELSE, \ TOKEN_ELSIF, \ TOKEN_END, \ TOKEN_IN, \ TOKEN_IS, \ TOKEN_MOD, \ TOKEN_OF, \ TOKEN_ON, \ TOKEN_OR, \ TOKEN_THEN, \ TOKEN_TO, \ TOKEN_UNTIL, \ TOKEN_ASSIGN_OP, \ TOKEN_TYPE_CONVERSION_OP, \ TOKEN_LOGICAL_AND_OP, \ TOKEN_EQUAL_OP, \ TOKEN_NOT_EQUAL_OP, \ TOKEN_GREATER_OP, \ TOKEN_GREATER_OR_EQUAL_OP, \ TOKEN_LESS_OP, \ TOKEN_LESS_OR_EQUAL_OP, \ TOKEN_PLUS_OP, \ TOKEN_INCREMENT_OP, \ TOKEN_MINUS_OP, \ TOKEN_DECREMENT_OP, \ TOKEN_MULTIPLY_OP, \ TOKEN_DIVIDE_OP, \ TOKEN_POINTER_OP, \ TOKEN_OPENING_PARENTHESIS, \ TOKEN_CLOSING_PARENTHESIS, \ TOKEN_OPENING_BRACKET, \ TOKEN_CLOSING_BRACKET, \ TOKEN_COMMA, \ TOKEN_SEMICOLON, \ TOKEN_VERTICAL_BAR #define FOLLOW_LIST_for_ident_list \ 4, \ TOKEN_END, \ TOKEN_CLOSING_PARENTHESIS, \ TOKEN_COLON, \ TOKEN_SEMICOLON #endif /* OBJM2_FIRST_FOLLOW_H */ // END OF FILE