@scinorandex/sparse
Version:
Yet another parser generator
149 lines • 9.37 kB
Plain Text
<S> : <PROGRAM>;
<PROGRAM> : [EOF];
<PROGRAM> : <STATEMENT_LIST> [EOF];
<STATEMENT_LIST> : <STATEMENT_LIST> <STATEMENT>;
<STATEMENT_LIST> : <STATEMENT>;
<STATEMENT> : <IMPORT_STATEMENT>;
<STATEMENT> : <IF_STATEMENT>;
<STATEMENT> : <VARIABLE_DECLARATION_STATEMENT>;
<STATEMENT> : <CONSTANT_DECLARATION>;
<STATEMENT> : <BLOCK_STATEMENT>;
<STATEMENT> : <RETURN_STATEMENT>;
<STATEMENT> : <TRY_CATCH_STATEMENT>;
<STATEMENT> : <THROW_STATEMENT>;
<STATEMENT> : <SWITCH_STATEMENT>;
<STATEMENT> : <LOOP_STATEMENT>;
<STATEMENT> : <EXPRESSION_STATEMENT>;
<STATEMENT> : <OBJECT_TYPE_DECLARATION>;
<STATEMENT> : [SWITCH_BREAK] [SEMICOLON];
<STATEMENT> : [SWITCH_GOTO] [STRING_LITERAL] [SEMICOLON];
<STATEMENT> : [SWITCH_GOTO] [NUMBER_LITERAL] [SEMICOLON];
<STATEMENT> : [LOOP_BREAK] [SEMICOLON];
<STATEMENT> : [LOOP_CONTINUE] [SEMICOLON];
<IMPORT_STATEMENT> : [IMPORT] [STRING_LITERAL] [SEMICOLON];
<IF_STATEMENT> : [IF] [L_PAREN] <EXPRESSION> [R_PAREN] <STATEMENT> <ELSE_IF_STATEMENTS> [ELSE] <STATEMENT>;
<IF_STATEMENT> : [IF] [L_PAREN] <EXPRESSION> [R_PAREN] <STATEMENT> <ELSE_IF_STATEMENTS>;
<IF_STATEMENT> : [IF] [L_PAREN] <EXPRESSION> [R_PAREN] <STATEMENT> [ELSE] <STATEMENT>;
<IF_STATEMENT> : [IF] [L_PAREN] <EXPRESSION> [R_PAREN] <STATEMENT>;
<ELSE_IF_STATEMENTS> : <ELSE_IF_STATEMENTS> <ELSE_IF_STATEMENT>;
<ELSE_IF_STATEMENTS> : <ELSE_IF_STATEMENT>;
<ELSE_IF_STATEMENT> : [ELIF] [L_PAREN] <EXPRESSION> [R_PAREN] <STATEMENT>;
<VARIABLE_DECLARATION_STATEMENT> : <VARIABLE_DECLARATION> [SEMICOLON];
<VARIABLE_DECLARATION> : <VARIABLE_DECLARATION_HEADER>;
<VARIABLE_DECLARATION> : <VARIABLE_DECLARATION_HEADER> [EQUALS] <EXPRESSION>;
<VARIABLE_DECLARATION_HEADER> : [VARIABLE] [IDENTIFIER] [COLON] <TYPE>;
<CONSTANT_DECLARATION> : [CONSTANT] [IDENTIFIER] [COLON] <TYPE> [EQUALS] <EXPRESSION> [SEMICOLON];
<BLOCK_STATEMENT> : [L_CURLY_BRACE] [R_CURLY_BRACE];
<BLOCK_STATEMENT> : [L_CURLY_BRACE] <STATEMENT_LIST> [R_CURLY_BRACE];
<RETURN_STATEMENT> : [RETURN] <EXPRESSION> [SEMICOLON];
<RETURN_STATEMENT> : [RETURN] [SEMICOLON];
<TRY_CATCH_STATEMENT> : [TRY] <BLOCK_STATEMENT> [CATCH] [L_PAREN] [IDENTIFIER] [R_PAREN] <BLOCK_STATEMENT>;
<THROW_STATEMENT> : [THROW] [STRING_LITERAL] [SEMICOLON];
<SWITCH_STATEMENT> : [SWITCH] [L_PAREN] <EXPRESSION> [R_PAREN] [L_CURLY_BRACE] <SWITCH_CASE_LIST_WITH_DEFAULT> [R_CURLY_BRACE];
<SWITCH_STATEMENT> : [SWITCH] [L_PAREN] <EXPRESSION> [R_PAREN] [L_CURLY_BRACE] [R_CURLY_BRACE];
<SWITCH_CASE_LIST_WITH_DEFAULT> : <SWITCH_CASE_LIST> [DEFAULT] [COLON] <BLOCK_STATEMENT>;
<SWITCH_CASE_LIST_WITH_DEFAULT> : [DEFAULT] [COLON] <BLOCK_STATEMENT>;
<SWITCH_CASE_LIST_WITH_DEFAULT> : <SWITCH_CASE_LIST>;
<SWITCH_CASE_LIST> : <SWITCH_CASE_LIST> <SWITCH_CASE>;
<SWITCH_CASE_LIST> : <SWITCH_CASE>;
<SWITCH_CASE> : [CASE] [L_PAREN] [STRING_LITERAL] [R_PAREN] [COLON] <BLOCK_STATEMENT>;
<SWITCH_CASE> : [CASE] [L_PAREN] [NUMBER_LITERAL] [R_PAREN] [COLON] <BLOCK_STATEMENT>;
<LOOP_STATEMENT> : <FOREACH_LOOP>;
<LOOP_STATEMENT> : <COUNTER_CONTROLLED_LOOP>;
<LOOP_STATEMENT> : <WHILE_LOOP>;
<FOREACH_LOOP> : [FOR] [L_PAREN] [VARIABLE] [IDENTIFIER] [COLON] <TYPE> [OF] <EXPRESSION> [R_PAREN] <BLOCK_STATEMENT>;
<COUNTER_CONTROLLED_LOOP> : [FOR] [L_PAREN] <COUNTER_LOOP_INIT> [SEMICOLON] <EXPRESSION> [SEMICOLON] <EXPRESSION_LIST> [R_PAREN] <BLOCK_STATEMENT>;
<COUNTER_CONTROLLED_LOOP> : [FOR] [L_PAREN] [SEMICOLON] <EXPRESSION> [SEMICOLON] <EXPRESSION_LIST> [R_PAREN] <BLOCK_STATEMENT>;
<COUNTER_CONTROLLED_LOOP> : [FOR] [L_PAREN] <COUNTER_LOOP_INIT> [SEMICOLON] [SEMICOLON] <EXPRESSION_LIST> [R_PAREN] <BLOCK_STATEMENT>;
<COUNTER_CONTROLLED_LOOP> : [FOR] [L_PAREN] <COUNTER_LOOP_INIT> [SEMICOLON] <EXPRESSION> [SEMICOLON] [R_PAREN] <BLOCK_STATEMENT>;
<COUNTER_CONTROLLED_LOOP> : [FOR] [L_PAREN] [SEMICOLON] [SEMICOLON] <EXPRESSION_LIST> [R_PAREN] <BLOCK_STATEMENT>;
<COUNTER_CONTROLLED_LOOP> : [FOR] [L_PAREN] <COUNTER_LOOP_INIT> [SEMICOLON] [SEMICOLON] [R_PAREN] <BLOCK_STATEMENT>;
<COUNTER_CONTROLLED_LOOP> : [FOR] [L_PAREN] [SEMICOLON] <EXPRESSION> [SEMICOLON] [R_PAREN] <BLOCK_STATEMENT>;
<COUNTER_CONTROLLED_LOOP> : [FOR] [L_PAREN] [SEMICOLON] [SEMICOLON] [R_PAREN] <BLOCK_STATEMENT>;
<COUNTER_LOOP_INIT> : <VARIABLE_DECLARATION> [COMMA] <COUNTER_LOOP_INIT>;
<COUNTER_LOOP_INIT> : <VARIABLE_DECLARATION>;
<EXPRESSION_LIST> : <EXPRESSION> [COMMA] <EXPRESSION_LIST>;
<EXPRESSION_LIST> : <EXPRESSION>;
<WHILE_LOOP> : [WHILE] [L_PAREN] <EXPRESSION> [R_PAREN] <BLOCK_STATEMENT>;
<WHILE_LOOP> : [WHILE] [L_PAREN] [R_PAREN] <BLOCK_STATEMENT>;
<EXPRESSION_STATEMENT> : <EXPRESSION> [SEMICOLON];
<EXPRESSION> : <FUNCTION_EXPRESSION>;
<EXPRESSION> : <ARRAY_LITERAL>;
<EXPRESSION> : <OBJECT_LITERAL>;
<EXPRESSION> : <LOGICAL_EXPRESSION>;
<FUNCTION_EXPRESSION> : [FUNCTION] [L_PAREN] <PARAMETER_LIST> [R_PAREN] [COLON] <TYPE> [MINUS_R_ANGLE_BAR] <BLOCK_STATEMENT>;
<FUNCTION_EXPRESSION> : [FUNCTION] [L_PAREN] [R_PAREN] [COLON] <TYPE> [MINUS_R_ANGLE_BAR] <BLOCK_STATEMENT>;
<PARAMETER_LIST> : <VARIABLE_DECLARATION_HEADER> [COMMA] <PARAMETER_LIST>;
<PARAMETER_LIST> : <VARIABLE_DECLARATION_HEADER>;
<ARRAY_LITERAL> : [L_BRACE] <EXPRESSION_LIST> [R_BRACE];
<ARRAY_LITERAL> : [L_BRACE] [R_BRACE];
<OBJECT_LITERAL> : [L_CURLY_BRACE] <OBJECT_LITERAL_FIELD_LIST> [R_CURLY_BRACE];
<OBJECT_LITERAL> : [L_CURLY_BRACE] [R_CURLY_BRACE];
<OBJECT_LITERAL_FIELD_LIST> : <OBJECT_LITERAL_FIELD> [COMMA] <OBJECT_LITERAL_FIELD_LIST>;
<OBJECT_LITERAL_FIELD_LIST> : <OBJECT_LITERAL_FIELD>;
<OBJECT_LITERAL_FIELD> : [IDENTIFIER] [COLON] <EXPRESSION>;
<LOGICAL_EXPRESSION> : <LOGICAL_EXPRESSION> [DOUBLE_AMPERSAND] <BITWISE_EXPRESSION>;
<LOGICAL_EXPRESSION> : <LOGICAL_EXPRESSION> [DOUBLE_PIPE] <BITWISE_EXPRESSION>;
<LOGICAL_EXPRESSION> : <BITWISE_EXPRESSION>;
<BITWISE_EXPRESSION> : <BITWISE_EXPRESSION> [CARAT] <EQUALITY_EXPRESSION>;
<BITWISE_EXPRESSION> : <BITWISE_EXPRESSION> [AMPERSAND] <EQUALITY_EXPRESSION>;
<BITWISE_EXPRESSION> : <BITWISE_EXPRESSION> [PIPE] <EQUALITY_EXPRESSION>;
<BITWISE_EXPRESSION> : <EQUALITY_EXPRESSION>;
<EQUALITY_EXPRESSION> : <RELATIONAL_EXPRESSION> [DOUBLE_EQUALS] <RELATIONAL_EXPRESSION>;
<EQUALITY_EXPRESSION> : <RELATIONAL_EXPRESSION> [EXCLAMATION_EQUALS] <RELATIONAL_EXPRESSION>;
<EQUALITY_EXPRESSION> : <RELATIONAL_EXPRESSION>;
<RELATIONAL_EXPRESSION> : <SHIFT_EXPRESSION> [L_ANGLE_BAR] <SHIFT_EXPRESSION>;
<RELATIONAL_EXPRESSION> : <SHIFT_EXPRESSION> [L_ANGLE_BAR_EQUALS] <SHIFT_EXPRESSION>;
<RELATIONAL_EXPRESSION> : <SHIFT_EXPRESSION> [R_ANGLE_BAR] <SHIFT_EXPRESSION>;
<RELATIONAL_EXPRESSION> : <SHIFT_EXPRESSION> [R_ANGLE_BAR_EQUALS] <SHIFT_EXPRESSION>;
<RELATIONAL_EXPRESSION> : <SHIFT_EXPRESSION>;
<SHIFT_EXPRESSION> : <SHIFT_EXPRESSION> [DOUBLE_L_ANGLE_BAR] <TERM_EXPRESSION>;
<SHIFT_EXPRESSION> : <SHIFT_EXPRESSION> [DOUBLE_R_ANGLE_BAR] <TERM_EXPRESSION>;
<SHIFT_EXPRESSION> : <TERM_EXPRESSION>;
<TERM_EXPRESSION> : <TERM_EXPRESSION> [PLUS] <FACTOR_EXPRESSION>;
<TERM_EXPRESSION> : <TERM_EXPRESSION> [MINUS] <FACTOR_EXPRESSION>;
<TERM_EXPRESSION> : <FACTOR_EXPRESSION>;
<FACTOR_EXPRESSION> : <FACTOR_EXPRESSION> [STAR] <UNARY_EXPRESSION>;
<FACTOR_EXPRESSION> : <FACTOR_EXPRESSION> [FORWARD_SLASH] <UNARY_EXPRESSION>;
<FACTOR_EXPRESSION> : <FACTOR_EXPRESSION> [PERCENT] <UNARY_EXPRESSION>;
<FACTOR_EXPRESSION> : <UNARY_EXPRESSION>;
<UNARY_EXPRESSION> : [MINUS] <EXPONENTIATION_EXPRESSION>;
<UNARY_EXPRESSION> : [EXCLAMATION] <EXPONENTIATION_EXPRESSION>;
<UNARY_EXPRESSION> : <EXPONENTIATION_EXPRESSION>;
<EXPONENTIATION_EXPRESSION> : <ENDPOINT> [DOUBLE_STAR] <EXPONENTIATION_EXPRESSION>;
<EXPONENTIATION_EXPRESSION> : <ENDPOINT>;
<ENDPOINT> : <ASSIGNMENT_EXPRESSION>;
<ENDPOINT> : <LITERAL>;
<ENDPOINT> : <GROUPING_EXPRESSION>;
<ASSIGNMENT_EXPRESSION> : <IDENTIFIER_STACK_EXPRESSION> [DOUBLE_PLUS];
<ASSIGNMENT_EXPRESSION> : <IDENTIFIER_STACK_EXPRESSION> [DOUBLE_MINUS];
<ASSIGNMENT_EXPRESSION> : [DOUBLE_PLUS] <IDENTIFIER_STACK_EXPRESSION>;
<ASSIGNMENT_EXPRESSION> : [DOUBLE_MINUS] <IDENTIFIER_STACK_EXPRESSION>;
<ASSIGNMENT_EXPRESSION> : <IDENTIFIER_STACK_EXPRESSION> [EQUALS] <EXPRESSION>;
<ASSIGNMENT_EXPRESSION> : <IDENTIFIER_STACK_EXPRESSION>;
<IDENTIFIER_STACK_EXPRESSION> : [IDENTIFIER];
<IDENTIFIER_STACK_EXPRESSION> : <IDENTIFIER_STACK_EXPRESSION> [DOT] [IDENTIFIER];
<IDENTIFIER_STACK_EXPRESSION> : <IDENTIFIER_STACK_EXPRESSION> [L_BRACE] <EXPRESSION> [R_BRACE];
<IDENTIFIER_STACK_EXPRESSION> : <IDENTIFIER_STACK_EXPRESSION> [L_PAREN] <EXPRESSION_LIST> [R_PAREN];
<IDENTIFIER_STACK_EXPRESSION> : <IDENTIFIER_STACK_EXPRESSION> [L_PAREN] [R_PAREN];
<LITERAL> : [STRING_LITERAL];
<LITERAL> : [NUMBER_LITERAL];
<LITERAL> : [BOOLEAN_LITERAL];
<LITERAL> : [NULL_LITERAL];
<GROUPING_EXPRESSION> : [L_PAREN] <EXPRESSION> [R_PAREN];
<OBJECT_TYPE_DECLARATION> : [OBJECT] [IDENTIFIER] [L_CURLY_BRACE] <PROPERTY_LIST> [R_CURLY_BRACE];
<OBJECT_TYPE_DECLARATION> : [OBJECT] [IDENTIFIER] [L_CURLY_BRACE] [R_CURLY_BRACE];
<PROPERTY_LIST> : <PROPERTY_LIST> <PROPERTY_DEFINITION>;
<PROPERTY_LIST> : <PROPERTY_DEFINITION>;
<PROPERTY_DEFINITION> : [IDENTIFIER] [COLON] <TYPE> [SEMICOLON];
<TYPE> : <TYPE> [L_BRACE] [R_BRACE];
<TYPE> : [NUMBER_TYPE];
<TYPE> : [BOOLEAN_TYPE];
<TYPE> : [STRING_TYPE];
<TYPE> : [VOID_TYPE];
<TYPE> : [OBJECT] [IDENTIFIER];
<TYPE> : <LAMBDA_TYPE>;
<LAMBDA_TYPE> : [FUNCTION] [L_PAREN] <LAMBDA_PARAMETER_LIST> [R_PAREN] [MINUS_R_ANGLE_BAR] <TYPE>;
<LAMBDA_TYPE> : [FUNCTION] [L_PAREN] [R_PAREN] [MINUS_R_ANGLE_BAR] <TYPE>;
<LAMBDA_PARAMETER_LIST> : <TYPE> [COMMA] <LAMBDA_PARAMETER_LIST>;
<LAMBDA_PARAMETER_LIST> : <TYPE>;