]> git.corax.cc Git - ccc/commitdiff
grammar: Remove unused syntax node types and add RULE_INVALID in order to distinguish...
authorMatthias Kruk <m@m10k.eu>
Tue, 21 Jul 2020 15:57:09 +0000 (00:57 +0900)
committerMatthias Kruk <m@m10k.eu>
Tue, 21 Jul 2020 15:57:09 +0000 (00:57 +0900)
src/grammar.c
src/grammar.h

index e753a45e9b38fade452cf395027e83cab727f3b2..dc6a8a08888c2f98658bdedd920d63ea3bf0086c 100644 (file)
@@ -3322,7 +3322,7 @@ struct syntax_node *syntax_node_parse_production(syntax_node_type_t type, int pr
        origin = lex_getpos();
 
        for(rule = _node_descriptors[type].productions[prod], match = 1;
-           rule && match;
+           rule->type != RULE_INVALID && match;
            rule++) {
                int pos;
 
index 01c22343efe9617141e50f1b1563cad21e2c6881..4cd6eadae856864c3857681092a024ac15b85956 100644 (file)
@@ -50,18 +50,8 @@ typedef enum {
        SYNTAX_NODE_COMPOUND_STATEMENT,
        SYNTAX_NODE_STATEMENT_LIST,
        SYNTAX_NODE_SELECTION_STATEMENT,
-       SYNTAX_NODE_IF_STATEMENT,
-       SYNTAX_NODE_IF_ELSE_STATEMENT,
-       SYNTAX_NODE_SWITCH_STATEMENT,
        SYNTAX_NODE_ITERATION_STATEMENT,
-       SYNTAX_NODE_WHILE_STATEMENT,
-       SYNTAX_NODE_DO_WHILE_STATEMENT,
-       SYNTAX_NODE_FOR_STATEMENT,
        SYNTAX_NODE_JUMP_STATEMENT,
-       SYNTAX_NODE_GOTO_STATEMENT,
-       SYNTAX_NODE_CONTINUE_STATEMENT,
-       SYNTAX_NODE_BREAK_STATEMENT,
-       SYNTAX_NODE_RETURN_STATEMENT,
        SYNTAX_NODE_EXPRESSION,
        SYNTAX_NODE_ASSIGNMENT_EXPRESSION,
        SYNTAX_NODE_ASSIGNMENT_OPERATOR,
@@ -106,6 +96,7 @@ struct syntax_node {
 struct syntax_node *syntax_node_parse(syntax_node_type_t);
 
 enum rule_type {
+       RULE_INVALID,
        RULE_TERMINAL,
        RULE_NONTERMINAL
 };