Grammar RosettaParser ANTLR-generated HTML file from ./rosetta.g
Terence Parr, MageLang Institute
|
package org.sldl.rosetta.parser.tarp.antlr; // classes for text,file i/o import java.io.*; import org.sldl.rosetta.parser.tarp.antlr.MyCommonToken; import java.util.Vector; //import org.sldl.rosetta.rom.*; //changed to KU version (Rosetta.tools.src.org.sldl.rosetta.ROM) //the following line shouldn't need to be mentioned here anyway //import org.sldl.rosetta.ROM.*; import org.sldl.rosetta.parser.tarp.misc.SourceReference; class RosettaParser extends LLkParser design_file : ( ( LIBRARY_TOKEN name SEMICOLON_TOKEN | ) design_unit )+ EOF ; name : ( ( label FULL_STOP_TOKEN ) => qualified_name | label ) ; design_unit : optional_use_clause ( facet_declaration | package_declaration | component_declaration | domain_declaration ) ; label : ( SIMPLE_LABEL | OPERATOR_INTERPRETATION_LABEL ) ; optional_label : ( label | ) ; literal : ( real_literal | character_literal | string_literal ) ; real_literal : ( DECIMAL_LITERAL | BASED_LITERAL ) ; character_literal : ( GRAPHIC_CHARACTER_LITERAL | ENCODED_CHARACTER_LITERAL ) ; string_literal : ( STRING_LITERAL ) ; expression : precedence_0_expression ; precedence_0_expression : precedence_1_expression ( ( GREATER_THAN_SIGN_GREATER_THAN_SIGN_GREATER_THAN_SIGN_TOKEN | EQUALS_SIGN_GREATER_THAN_SIGN_GREATER_THAN_SIGN_TOKEN ) precedence_1_expression )* ; precedence_1_expression : precedence_2_expression ( EQUALS_SIGN_EQUALS_SIGN_TOKEN precedence_2_expression )* ; precedence_2_expression : precedence_3_expression ( ( EQUALS_SIGN_GREATER_THAN_SIGN_TOKEN | IMPLIES_TOKEN | LESS_THAN_SIGN_EQUALS_SIGN_TOKEN ) precedence_3_expression )* ; precedence_3_expression : precedence_4_expression ( ( OR_TOKEN | NOR_TOKEN | XOR_TOKEN | XNOR_TOKEN | MAX_TOKEN ) precedence_4_expression )* ; precedence_4_expression : precedence_5_expression ( ( AND_TOKEN | NAND_TOKEN | MIN_TOKEN ) precedence_5_expression )* ; precedence_5_expression : precedence_6_expression ( ( EQUALS_SIGN_TOKEN | SOLIDUS_EQUALS_SIGN_TOKEN | LESS_THAN_SIGN_TOKEN | GREATER_THAN_SIGN_TOKEN | EQUALS_SIGN_LESS_THAN_SIGN_TOKEN | GREATER_THAN_SIGN_EQUALS_SIGN_TOKEN | IN_TOKEN ) precedence_6_expression )* ; precedence_6_expression : precedence_7_expression ( SUB_TOKEN precedence_7_expression )* ; precedence_7_expression : precedence_8_expression ( ( PLUS_SIGN_TOKEN | HYPHEN_MINUS_TOKEN | PLUS_SIGN_FULL_STOP_FULL_STOP_TOKEN | AMPERSAND_FULL_STOP_FULL_STOP_TOKEN | AMPERSAND_TOKEN | VERTICAL_LINE_TOKEN ) precedence_8_expression )* ; precedence_8_expression : precedence_9_expression ( ( ASTERISK_TOKEN | SOLIDUS_TOKEN | MOD_TOKEN | DIV_TOKEN ) precedence_9_expression )* ; precedence_9_expression : precedence_10_expression ( CIRCUMFLEX_ACCENT_TOKEN precedence_10_expression | ) ; precedence_10_expression : ( ( NOT_TOKEN | PLUS_SIGN_TOKEN | HYPHEN_MINUS_TOKEN | ASTERISK_TOKEN | NUMBER_SIGN_TOKEN | PERCENT_SIGN_TOKEN ) )* precedence_11_expression ; precedence_11_expression : ( name COMMERCIAL_AT_TOKEN ) => at_operation | ( name APOSTROPHE_TOKEN ) => tick_operation | precedence_12_expression ; at_operation : name COMMERCIAL_AT_TOKEN precedence_12_expression ; tick_operation : name APOSTROPHE_TOKEN ; precedence_12_expression : ( ( primary LEFT_SQUARE_BRACKET_TOKEN ) => index_operation | ( primary LEFT_PARENTHESIS_TOKEN ) => function_application_or_facet_instantiation | primary ) ; primary : ( literal | name | parenthesized_expression | ( LESS_THAN_SIGN_ASTERISK_TOKEN function_signature IS_TOKEN ) => anonymous_function | ( FACET_TOKEN facet_signature IS_TOKEN ) => anonymous_facet | curly_bracket_formation | square_bracket_formation | type_formation | let_expression | if_expression | case_expression ) ; index_operation : primary LEFT_SQUARE_BRACKET_TOKEN expression RIGHT_SQUARE_BRACKET_TOKEN ; function_application_or_facet_instantiation : primary LEFT_PARENTHESIS_TOKEN argument_list RIGHT_PARENTHESIS_TOKEN ; argument_list : argument ( COMMA_TOKEN argument )* ; parenthesized_expression : LEFT_PARENTHESIS_TOKEN expression RIGHT_PARENTHESIS_TOKEN ; function_signature : LEFT_PARENTHESIS_TOKEN optional_parameter_list RIGHT_PARENTHESIS_TOKEN COLON_COLON_TOKEN expression ; anonymous_function : LESS_THAN_SIGN_ASTERISK_TOKEN function_signature IS_TOKEN expression ASTERISK_GREATER_THAN_SIGN_TOKEN ; facet_signature : LEFT_PARENTHESIS_TOKEN optional_facet_parameter_list RIGHT_PARENTHESIS_TOKEN COLON_COLON_TOKEN expression ; anonymous_facet : FACET_TOKEN facet_signature IS_TOKEN facet_body END_TOKEN FACET_TOKEN ; curly_bracket_formation : LEFT_CURLY_BRACKET_TOKEN optional_expression_list RIGHT_CURLY_BRACKET_TOKEN ; square_bracket_formation : LEFT_SQUARE_BRACKET_TOKEN optional_expression_list RIGHT_SQUARE_BRACKET_TOKEN ; type_formation : ( universal_or_subtype_formation | set_type_formation | array_type_formation | function_type_formation | facet_type_formation ) ; let_expression : LET_TOKEN LEFT_PARENTHESIS_TOKEN let_binding_list RIGHT_PARENTHESIS_TOKEN IN_TOKEN expression END_TOKEN LET_TOKEN ; if_expression : IF_TOKEN expression THEN_TOKEN expression if_expression_tail END_TOKEN IF_TOKEN ; case_expression : CASE_TOKEN expression IS_TOKEN case_alternative_list END_TOKEN CASE_TOKEN ; qualified_name : label ( FULL_STOP_TOKEN label )* ; optional_expression_list : ( expression_list | ) ; expression_list : ( expression ( COMMA_TOKEN expression )* ) ; universal_or_subtype_formation : ( universal_type_formation | subtype_formation ) ; set_type_formation : SET_TOKEN LEFT_PARENTHESIS_TOKEN expression RIGHT_PARENTHESIS_TOKEN ; array_type_formation : ARRAY_TOKEN LEFT_PARENTHESIS_TOKEN expression RIGHT_PARENTHESIS_TOKEN ; function_type_formation : LESS_THAN_SIGN_ASTERISK_TOKEN function_signature ASTERISK_GREATER_THAN_SIGN_TOKEN ; facet_type_formation : FACET_TOKEN facet_signature END_TOKEN FACET_TOKEN ; universal_type_formation : TYPE_TOKEN ; subtype_formation : SUBTYPE_TOKEN LEFT_PARENTHESIS_TOKEN expression RIGHT_PARENTHESIS_TOKEN ; let_binding_list : ( let_binding ( COMMA_TOKEN let_binding )* ) ; let_binding : ( let_function_binding | let_parameter_binding ) ; let_function_binding : label function_signature BE_TOKEN expression ; let_parameter_binding : parameter_definition BE_TOKEN expression ; parameter_definition : label COLON_COLON_TOKEN expression ; if_expression_tail : ( ( ELSIF_TOKEN ) => optional_elsif_expression | optional_else_expression ) ; optional_elsif_expression : ( elsif_expression | ) ; optional_else_expression : ( ELSE_TOKEN expression | ) ; elsif_expression : ELSIF_TOKEN expression THEN_TOKEN expression if_expression_tail ; case_alternative_list : case_alternative ( VERTICAL_LINE_TOKEN case_alternative )+ ; case_alternative : LEFT_PARENTHESIS_TOKEN expression HYPHEN_MINUS_GREATER_THAN_SIGN_TOKEN expression RIGHT_PARENTHESIS_TOKEN ; quantified_expression : name LEFT_PARENTHESIS_TOKEN optional_parameter_list VERTICAL_LINE_TOKEN expression RIGHT_PARENTHESIS_TOKEN ; optional_parameter_list : ( parameter_list | ) ; constructed_type_declaration : ( simple_constructed_type_declaration | parameterized_constructed_type_declaration ) ; simple_constructed_type_declaration : label COLON_COLON_TOKEN universal_or_subtype_formation IS_TOKEN constructed_type_definition ; parameterized_constructed_type_declaration : label parameterized_constructed_type_signature IS_TOKEN constructed_type_definition ; constructed_type_definition : DATA_TOKEN constructed_type_alternative_list ; parameterized_constructed_type_signature : LEFT_PARENTHESIS_TOKEN optional_parameter_list RIGHT_PARENTHESIS_TOKEN COLON_COLON_TOKEN universal_or_subtype_formation ; constructed_type_alternative_list : ( constructed_type_alternative ( VERTICAL_LINE_TOKEN constructed_type_alternative )* ) ; constructed_type_alternative : label LEFT_PARENTHESIS_TOKEN optional_observer_definition_list RIGHT_PARENTHESIS_TOKEN COLON_COLON_TOKEN label ; optional_observer_definition_list : ( observer_definition_list | ) ; observer_definition_list : ( observer_definition ( COMMA_TOKEN observer_definition )* ) ; observer_definition : label COLON_COLON_TOKEN expression ; enumeration_type_declaration : label COLON_COLON_TOKEN expression IS_TOKEN enumeration_type_formation SEMICOLON_TOKEN ; enumeration_type_formation : ENUMERATION_TOKEN LEFT_SQUARE_BRACKET_TOKEN enumeration_list RIGHT_SQUARE_BRACKET_TOKEN ; enumeration_list : ( enumeration_value ( COMMA_TOKEN enumeration_value )* ) ; enumeration_value : ( SIMPLE_LABEL | real_literal | character_literal ) ; optional_declaration_list : ( declaration_list | ) ; declaration_list : ( declaration_list_element )+ ; declaration_list_element : ( multiple_declaration | ( label COLON_COLON_TOKEN expression optional_is_expression SEMICOLON_TOKEN ) => simple_declaration | ( label COLON_COLON_TOKEN expression ) => enumeration_type_declaration | ( label ( COLON_COLON_TOKEN | parameterized_constructed_type_signature ) ) => constructed_type_declaration | function_declaration | design_unit ) ; multiple_declaration : label_list COLON_COLON_TOKEN expression optional_is_expression SEMICOLON_TOKEN ; optional_is_expression : ( IS_TOKEN expression | ) ; simple_declaration : label COLON_COLON_TOKEN expression optional_is_expression SEMICOLON_TOKEN ; function_declaration : label function_signature optional_is_expression SEMICOLON_TOKEN ; label_list : label ( COMMA_TOKEN label )+ ; facet_declaration : FACET_TOKEN label facet_signature optional_is_facet_body END_TOKEN FACET_TOKEN ( label | ) SEMICOLON_TOKEN ; optional_is_facet_body : ( IS_TOKEN facet_body | ) ; facet_body : optional_export_clause optional_declaration_list BEGIN_TOKEN optional_term_list ; package_declaration : PACKAGE_TOKEN label facet_signature IS_TOKEN optional_export_clause BEGIN_TOKEN optional_declaration_list END_TOKEN PACKAGE_TOKEN ( label | ) SEMICOLON_TOKEN ; optional_export_clause : ( EXPORT_TOKEN export_list SEMICOLON_TOKEN | ) ; component_declaration : COMPONENT_TOKEN label facet_signature IS_TOKEN optional_export_clause optional_declaration_list BEGIN_TOKEN assumptions_clause definitions_clause implications_clause END_TOKEN COMPONENT_TOKEN ( label | ) SEMICOLON_TOKEN ; assumptions_clause : ASSUMPTION_TOKEN optional_term_list END_TOKEN ASSUMPTION_TOKEN SEMICOLON_TOKEN ; definitions_clause : DEFINITION_TOKEN optional_term_list END_TOKEN DEFINITION_TOKEN SEMICOLON_TOKEN ; implications_clause : IMPLICATION_TOKEN optional_term_list END_TOKEN IMPLICATION_TOKEN SEMICOLON_TOKEN ; optional_term_list : ( term_list | ) ; domain_declaration : DOMAIN_TOKEN label facet_signature IS_TOKEN facet_body END_TOKEN DOMAIN_TOKEN ( label | ) SEMICOLON_TOKEN ; optional_use_clause : ( multiple_use_clause | ) ; multiple_use_clause : ( use_clause )+ ; use_clause : USE_TOKEN name_list SEMICOLON_TOKEN ; name_list : name ( COMMA_TOKEN name )* ; term_list : ( term_list_element )+ ; term_list_element : ( simple_term | let_term ) ; simple_term : label COLON_TOKEN expression SEMICOLON_TOKEN ; let_term : LET_TOKEN LEFT_PARENTHESIS_TOKEN let_binding_list RIGHT_PARENTHESIS_TOKEN IN_TOKEN optional_term_list END_TOKEN LET_TOKEN SEMICOLON_TOKEN ; parameter_list : parameter_list_element ( SEMICOLON_TOKEN parameter_list_element )* ; parameter_list_element : ( multiple_parameter_definition | parameter_definition ) ; multiple_parameter_definition : label_list COLON_COLON_TOKEN expression ; function_application : precedence_12_expression LEFT_PARENTHESIS_TOKEN argument_list RIGHT_PARENTHESIS_TOKEN ; argument : ( LOW_LINE_TOKEN | optional_expression ) ; optional_expression : ( expression | ) ; optional_facet_parameter_list : ( facet_parameter_list | ) ; facet_parameter_list : ( facet_parameter_list_element ( SEMICOLON_TOKEN facet_parameter_list_element )* ) ; facet_parameter_list_element : ( multiple_facet_parameter_definition | facet_parameter_definition ) ; multiple_facet_parameter_definition : label_list COLON_COLON_TOKEN optional_label expression ; facet_parameter_definition : label COLON_COLON_TOKEN optional_label expression ; optional_simple_label : ( label | ) ; export_list : ( label_list | ALL_TOKEN ) ; facet_instantiation : precedence_12_expression LEFT_PARENTHESIS_TOKEN argument_list RIGHT_PARENTHESIS_TOKEN ; library_logical_name : SIMPLE_LABEL ;