kaby76 / one-parser

0 stars 2 forks source link

Many unused parser rules #6

Open kaby76 opened 1 week ago

kaby76 commented 1 week ago

There are many unused parser rules in the grammar.

$ bash /c/Users/Kenne/Documents/GitHub/g4-scripts/find-unused-parser-symbols.sh ONEParser.g4
Arguments were provided.
Finding unused parser symbols in grammars...
L228: block
      ^
L399: interface_accessor
      ^
L797: incomplete_member
      ^
L860: nullable_type
      ^
L868: pointer_type
      ^
L918: ref_type
      ^
L1078: switch_statement
       ^
L1485: cast_expression
       ^
L1489: checked_expression
       ^
L1511: conditional_access_expression
       ^
L1515: conditional_expression
       ^
L1532: element_access_expression
       ^
L1700: make_ref_expression
       ^
L1704: member_access_expression
       ^
L1773: ref_expression
       ^
L1777: ref_type_expression
       ^
L1781: ref_value_expression
       ^
L1847: throw_expression
       ^
L1978: structured_trivia
       ^
L2106: base_argument_list
       ^
L2111: base_cref_parameter_list
       ^
L2116: base_parameter_list
       ^
L2121: base_parameter
       ^
L2130: expression_or_pattern
       ^
L2144: interpolated_multi_line_raw_string_start_token
       ^
L2148: interpolated_raw_string_end_token
       ^
L2152: interpolated_single_line_raw_string_start_token
       ^
L2156: interpolated_string_text_token
       ^
kaby76 commented 1 week ago

Deleting these unused rules results in another performance gain of about 8%. => Always delete unused rules!

kaby76 commented 1 week ago

This is the script to delete the unused parser rules.

trparse -t ANTLRv4 ONEParser.g4 2> /dev/null | trquery delete ' //parserRuleSpec
        [not(doc("*")//ruleBlock//RULE_REF/text() = ./RULE_REF/text())
         and not(./ruleBlock//TOKEN_REF/text() = "EOF")]' | trsponge -c

ONEParser.g4.txt