STATIC ANALYSIS ~/research/papers/LL-star/ANTLR-grammars-private/tsql/ter $ wc -l `ls *.g|grep -v walker` 1420 tsql.g 1412 tsqlalter.g 188 tsqlcommon.g 1491 tsqlcreate.g 132 tsqlcursors.g 247 tsqldrop.g 823 tsqllexer.g 815 tsqlmisc.g 937 tsqlmisc2.g 224 tsqlpermissions.g 542 tsqlselect.g 8231 total ~/research/papers/LL-star/ANTLR-grammars-private/tsql/ter $ time a -report tsql.g > /tmp/j real 0m13.185s user 0m29.596s sys 0m1.917s ~/research/papers/LL-star/ANTLR-grammars-private/tsql/ter $ wc -l /tmp/j 1120 /tmp/j show all attributes: ~/research/papers/LL-star/ANTLR-grammars-private/tsql/ter $ cat /tmp/j|awk '{print $4 " " $5 " " $6}' |sort |uniq -c |sort -r -n|more 935 k=1 78 k=2 37 k=1 backtracks 13 k=4 11 k=3 10 cyclic 9 k=5 9 cyclic backtracks 6 k=6 5 k=2 backtracks sempred 2 k=5 backtracks 2 k=2 backtracks 2 k=1 backtracks sempred 1 k=4 sempred PARSE-TIME big.sql cobbled from MS sample code on site $ wc -l big.sql 794 big.sql ~/research/papers/LL-star/ANTLR-grammars-private/tsql/ter $ j Main big.sql file: /Users/parrt/research/papers/LL-star/ANTLR-grammars-private/tsql/ter/big.sql Lexer Start lexed in 0ms. Parser Start Parsed in 348ms. ANTLR Runtime Report; Profile Version 3 parser name tsql Number of rule invocations 13913 Number of unique rules visited 203 Number of decision events 17394 Overall average k per decision event 1.0825572 Number of backtracking occurrences (can be multiple per decision) 588 Overall average k per decision event that backtracks 2.6309524 Number of rule invocations while backtracking 2268 num decisions that potentially backtrack 29 num decisions that do backtrack 19 num decisions that potentially backtrack but don't 10 average % of time a potentially backtracking decision backtracks 27.009987 num unique decisions covered 309 max rule invocation nesting depth 122 rule memoization cache size 2300 number of rule memoization cache hits 32 number of rule memoization cache misses 2268 number of tokens 3317 number of hidden tokens 12568 number of char 0 number of hidden char 0 number of syntax errors 0 location n avgk maxk synpred sempred canbacktrack 1@tsql.g:76:8(batch_statements) 1 1.00 1 0 0 0 2@tsql.g:77:13(batch_statements) 84 1.00 1 0 0 0 9@tsql.g:99:1(statements) 306 1.00 1 0 0 0 11@tsql.g:121:1(sql_statements) 153 1.00 1 0 0 0 113@tsql.g:832:1(keyw_id_part) 1284 1.00 1 0 0 0 114@tsql.g:836:1(func_keyw_id) 1374 1.00 1 0 0 0 112@tsql.g:829:17(keyw_id) 512 1.00 1 0 0 0 12@tsql.g:133:17(use_statement) 2 1.00 1 0 0 0 7@tsql.g:106:14(statements) 99 1.00 1 0 0 0 8@tsql.g:107:21(statements) 100 1.01 2 0 0 0 29@tsql.g:265:5(and_predicate) 128 1.00 1 0 0 0 42@tsql.g:268:1(predicate) 128 1.00 1 0 0 0 54@tsql.g:390:1(comparison_expression) 590 1.00 1 0 0 0 56@tsql.g:408:1(atomics_no_paren) 620 1.03 2 20 0 1 57@tsql.g:417:9(collate_atomics) 606 1.00 1 0 0 0 99@tsql.g:711:1(unary) 468 1.00 1 0 0 0 59@tsql.g:434:1(functions_and_vars) 360 2.77 20 360 0 1 60@tsql.g:454:1(func_name) 363 1.00 1 0 0 0 110@tsql.g:814:1(keyw_id_orcc) 646 1.00 1 0 0 0 108@tsql.g:811:20(keyw_id_for_func) 792 1.18 2 0 0 0 61@tsql.g:463:13(function_args) 41 1.00 1 0 0 0 62@tsql.g:468:1(param_list_or_all) 31 1.00 1 0 0 0 63@tsql.g:474:4(param_list) 35 1.00 1 0 0 0 58@tsql.g:421:9(collate_atomics) 606 1.00 1 0 0 1 55@tsql.g:397:13(mdm_expression) 620 1.00 1 0 0 0 53@tsql.g:392:26(comparison_expression) 611 1.04 2 22 0 1 48@tsql.g:352:7(bxor_expression) 527 1.07 2 63 0 1 46@tsql.g:347:19(logicalExpr) 527 1.00 1 0 0 0 65@tsql.g:474:25(param_list) 61 1.00 1 0 0 0 64@tsql.g:474:33(param_list) 26 1.00 1 0 0 0 35@tsql.g:270:3(predicate) 120 1.00 1 0 0 0 34@tsql.g:295:9(predicate) 16 1.00 1 0 0 0 28@tsql.g:261:19(or_predicate) 128 1.00 1 0 0 0 27@tsql.g:257:18(search_conditions) 116 1.00 1 0 0 0 10@tsql.g:110:1(ddl_statements) 51 1.00 1 0 0 0 111@tsql.g:829:18(keyw_id) 234 1.00 1 0 0 0 26@tsql.g:239:15(keyw_id_list) 41 1.37 2 0 0 0 30@tsql.g:272:6(predicate) 23 1.00 1 0 0 0 33@tsql.g:273:5(predicate) 23 1.00 1 0 0 0 32@tsql.g:284:7(predicate) 9 1.00 1 3 0 1 101@tsql.g:738:1(atoms) 91 1.00 1 0 0 0 45@tsql.g:336:16(expression_list) 42 1.00 1 0 0 0 96@tsql.g:691:15(order_by_expression) 11 1.00 1 0 0 0 97@tsql.g:691:33(order_by_expression) 11 1.00 1 0 0 0 95@tsql.g:685:28(order_by_expression_list) 11 1.00 1 0 0 0 107@tsql.g:811:21(keyw_id_for_func) 292 1.00 1 0 0 0 47@tsql.g:353:8(bxor_expression) 63 1.00 1 0 0 0 52@tsql.g:369:1(dodgy_operators) 22 1.00 1 0 0 0 49@tsql.g:371:9(dodgy_operators) 14 1.00 1 0 0 0 106@tsql.g:790:31(good_money) 4 1.00 1 0 0 0 91@tsql.g:648:4(aggregate_windowed_functions) 21 1.00 1 0 0 0 88@tsql.g:650:18(aggregate_windowed_functions) 19 1.00 1 0 0 1 92@tsql.g:656:3(aggregate_windowed_functions) 21 1.00 1 0 0 0 50@tsql.g:378:9(dodgy_operators) 8 1.00 1 0 0 0 31@tsql.g:274:27(predicate) 14 1.00 1 0 0 0 6@tsql.g:102:29(statements) 3 1.00 1 0 0 0 5@tsql.g:92:1(statement_block) 10 1.00 1 0 0 0 4@tsql.g:93:12(statement_block) 34 1.29 2 0 0 0 90@tsql.g:652:15(aggregate_windowed_functions) 2 1.00 1 0 0 0 3@tsql.g:84:18(first_exec) 1 1.00 1 0 0 0 98@tsql.g:701:1(column_name) 7 1.00 1 0 0 0 104@tsql.g:748:3(case_expression) 6 1.00 1 0 0 0 103@tsql.g:751:6(case_expression) 16 1.00 1 0 0 0 105@tsql.g:753:3(case_expression) 6 1.00 1 0 0 0 109@tsql.g:823:51(keyw_id_orcc) 4 1.00 1 0 0 0 102@tsql.g:750:5(case_expression) 5 1.00 1 0 0 0 67@tsql.g:477:1(rowset_function) 1 1.00 1 0 0 0 66@tsql.g:498:5(rowset_function) 1 1.00 1 0 0 0 69@tsql.g:512:5(bulkRows) 1 1.00 1 0 0 0 1@tsqlmisc.g:15:1(miscellaneous_statements) 107 1.00 1 0 0 0 116@tsqlmisc.g:694:9(declare_statement) 12 2.00 2 0 0 0 119@tsqlmisc.g:717:1(declare_as_opts) 17 1.00 1 0 0 0 118@tsqlmisc.g:703:25(declare_list) 17 1.00 1 0 0 0 117@tsqlmisc.g:699:11(declare_statement) 12 1.00 1 0 0 0 2@tsqlmisc.g:59:15(begin_statement) 10 1.00 1 0 0 0 17@tsqlmisc.g:60:3(begin_statement) 10 1.00 1 0 0 0 18@tsqlmisc.g:95:9(begin_statement) 10 1.00 1 0 0 0 140@tsqlmisc.g:792:9(delete_where_clause) 1 1.00 1 0 0 0 1@tsqldrop.g:12:9(drop_statement) 20 1.00 1 0 0 0 4@tsqldrop.g:69:13(dropCommonList) 17 1.00 1 0 0 0 25@tsqldrop.g:226:9(dropTrigger) 2 1.00 1 0 0 0 3@tsqldrop.g:38:1(dropElements) 1 1.00 1 0 0 0 2@tsqldrop.g:35:13(dropCommon) 1 1.00 1 0 0 0 41@tsqlmisc2.g:244:20(if_statement) 25 1.00 1 0 0 0 42@tsqlmisc2.g:246:7(if_statement) 25 1.00 1 0 0 0 43@tsqlmisc2.g:248:7(if_statement) 25 1.00 1 0 0 0 8@tsqlmisc2.g:76:7(exec_body) 3 1.00 1 0 0 0 10@tsqlmisc2.g:86:1(exec_sp) 5 1.00 1 0 0 0 19@tsqlmisc2.g:131:7(exec_sp_func) 5 2.40 4 0 0 0 20@tsqlmisc2.g:132:15(exec_sp_func) 5 1.00 1 0 0 0 21@tsqlmisc2.g:133:7(exec_sp_func) 5 1.60 2 3 0 1 24@tsqlmisc2.g:144:7(exec_sp_param) 9 1.44 2 4 0 1 26@tsqlmisc2.g:145:9(exec_sp_param) 9 1.00 1 0 0 0 25@tsqlmisc2.g:146:26(exec_sp_param) 9 1.00 1 0 0 0 23@tsqlmisc2.g:138:24(exec_sp_param_list) 6 1.00 1 0 0 0 22@tsqlmisc2.g:134:7(exec_sp_func) 5 1.00 1 0 0 0 9@tsqlmisc2.g:81:7(exec_body) 3 1.00 1 0 0 0 69@tsqlmisc2.g:418:13(print_statement) 13 1.00 1 0 0 0 44@tsqlmisc2.g:252:24(if_else) 4 1.00 1 0 0 0 113@tsqlmisc2.g:685:9(set_statement) 23 2.00 2 0 0 0 123@tsqlmisc2.g:739:9(set_target) 13 1.00 1 0 0 0 126@tsqlmisc2.g:746:1(set_source) 13 1.00 1 0 0 0 124@tsqlmisc2.g:748:9(set_source) 12 1.00 1 0 0 0 125@tsqlmisc2.g:753:13(set_source) 12 1.00 1 0 0 0 114@tsqlmisc2.g:689:13(set_statement) 23 1.00 1 0 0 0 72@tsqlmisc2.g:430:9(raiserror_statement) 3 2.00 2 3 0 1 70@tsqlmisc2.g:437:17(raiserror_statement) 3 1.00 1 0 0 0 73@tsqlmisc2.g:443:13(raiserror_statement) 3 1.00 1 0 0 0 108@tsqlmisc2.g:646:9(rollbacksave_statement) 2 1.00 1 0 0 0 107@tsqlmisc2.g:647:27(rollbacksave_statement) 1 1.00 1 0 0 0 109@tsqlmisc2.g:651:11(rollbacksave_statement) 2 1.00 1 0 0 0 104@tsqlmisc2.g:621:13(return_statement) 3 1.00 1 0 0 0 45@tsqlmisc2.g:263:9(insert_statement) 13 1.00 1 0 0 0 49@tsqlmisc2.g:280:1(is_opt_into) 14 1.00 1 0 0 0 47@tsqlmisc2.g:272:9(insert_into) 14 1.00 1 0 0 0 48@tsqlmisc2.g:277:9(insert_into) 14 1.00 1 0 0 0 52@tsqlmisc2.g:285:1(insert_update_target) 13 1.00 1 0 0 0 50@tsqlmisc2.g:287:9(insert_update_target) 13 1.15 2 0 0 0 51@tsqlmisc2.g:292:9(insert_update_target) 13 1.00 1 0 0 0 53@tsqlmisc2.g:298:1(insert_update_target_tbl) 13 1.00 1 0 0 0 55@tsqlmisc2.g:315:1(iut_value) 39 1.00 1 0 0 0 54@tsqlmisc2.g:310:20(iut_values_list) 39 1.00 1 0 0 0 46@tsqlmisc2.g:267:9(insert_statement) 13 1.00 1 0 0 0 132@tsqlmisc2.g:807:9(update_statement) 1 1.00 1 0 0 0 134@tsqlmisc2.g:816:9(update_table) 1 1.00 1 0 0 0 135@tsqlmisc2.g:817:9(update_table) 1 1.00 1 0 0 0 144@tsqlmisc2.g:838:9(update_element) 1 1.00 1 0 0 0 141@tsqlmisc2.g:840:21(update_element) 1 1.00 1 0 0 0 143@tsqlmisc2.g:840:42(update_element) 1 1.00 1 0 0 0 140@tsqlmisc2.g:831:25(update_set_list) 1 1.00 1 0 0 0 136@tsqlmisc2.g:819:9(update_table) 1 1.00 1 0 0 0 137@tsqlmisc2.g:820:9(update_table) 1 1.00 1 0 0 0 138@tsqlmisc2.g:821:9(update_table) 1 1.00 1 0 0 0 139@tsqlmisc2.g:822:9(update_table) 1 1.00 1 0 0 0 133@tsqlmisc2.g:812:9(update_statement) 1 1.00 1 0 0 0 31@tsqlmisc2.g:179:9(waitfor_statement) 1 1.00 1 0 0 0 33@tsqlmisc2.g:188:14(wait_delay) 1 1.00 1 0 0 0 32@tsqlmisc2.g:184:13(waitfor_statement) 1 1.00 1 0 0 0 117@tsqlmisc2.g:692:1(set_flags) 10 1.00 1 0 0 0 119@tsqlmisc2.g:703:1(common_flags) 10 1.00 1 0 0 0 118@tsqlmisc2.g:698:23(common_flags_list) 10 1.00 1 0 0 0 115@tsqlmisc2.g:693:25(set_flags) 10 1.00 1 0 0 0 63@tsqlmisc2.g:386:9(open_statement) 1 1.00 1 0 0 0 64@tsqlmisc2.g:391:13(open_statement) 1 1.00 1 0 0 0 17@tsqlselect.g:42:1(query_specification) 68 1.00 1 0 0 0 9@tsqlselect.g:44:4(query_specification) 68 1.00 1 0 0 0 11@tsqlselect.g:45:4(query_specification) 68 1.00 1 0 0 0 24@tsqlselect.g:94:1(select_element) 129 1.89 3 10 0 1 23@tsqlselect.g:104:4(select_element) 108 1.43 3 23 92 1 22@tsqlselect.g:89:24(select_list) 129 1.00 1 0 0 0 12@tsqlselect.g:48:6(query_specification) 68 1.00 1 0 0 0 13@tsqlselect.g:49:6(query_specification) 68 1.00 1 0 0 0 49@tsqlselect.g:239:1(primitive_table) 71 1.00 1 0 0 0 40@tsqlselect.g:245:4(primitive_table) 70 1.89 3 2 29 1 37@tsqlselect.g:256:7(primitive_table) 68 1.91 3 33 124 1 38@tsqlselect.g:260:10(primitive_table) 68 1.00 1 0 0 0 39@tsqlselect.g:261:7(primitive_table) 68 1.03 2 2 0 1 30@tsqlselect.g:152:9(tableSourceElement) 84 1.15 2 13 0 1 28@tsqlselect.g:134:18(table_source_list) 58 1.00 1 0 0 0 14@tsqlselect.g:50:6(query_specification) 68 1.00 1 0 0 0 15@tsqlselect.g:51:6(query_specification) 68 1.00 1 0 0 0 16@tsqlselect.g:52:6(query_specification) 68 1.00 1 0 0 0 8@tsqlselect.g:27:4(query_expression) 68 1.00 1 0 0 0 1@tsqlselect.g:14:6(select_statement) 65 1.00 1 0 0 0 2@tsqlselect.g:15:6(select_statement) 66 1.00 1 0 0 0 3@tsqlselect.g:16:6(select_statement) 65 1.00 1 0 0 0 4@tsqlselect.g:17:6(select_statement) 65 1.00 1 0 0 0 5@tsqlselect.g:18:4(select_statement) 65 1.00 1 0 0 0 7@tsqlselect.g:28:5(query_expression) 3 1.00 1 0 0 0 6@tsqlselect.g:29:18(query_expression) 3 1.00 1 0 0 0 25@tsqlselect.g:124:15(as_clause) 114 1.00 1 0 0 0 26@tsqlselect.g:124:18(as_clause) 114 1.00 1 0 0 0 50@tsqlselect.g:311:6(table_hints) 2 1.00 1 0 0 0 52@tsqlselect.g:324:5(table_hint) 2 1.00 1 0 0 0 58@tsqlselect.g:326:9(table_hint) 2 1.00 1 0 0 0 57@tsqlselect.g:348:21(table_hint) 2 1.00 1 0 0 0 53@tsqlselect.g:349:35(table_hint) 1 1.00 1 0 0 0 55@tsqlselect.g:349:60(table_hint) 1 1.00 1 0 0 0 51@tsqlselect.g:318:20(table_hint_list) 2 1.00 1 0 0 0 32@tsqlselect.g:188:5(join_type_prefix) 26 1.00 1 0 0 0 33@tsqlselect.g:192:4(join_type_prefix) 26 1.00 1 0 0 0 56@tsqlselect.g:350:32(table_hint) 1 1.00 1 0 0 0 65@tsqlselect.g:387:22(compute_function_list) 1 1.00 1 0 0 0 63@tsqlselect.g:379:4(compute_clause) 1 1.00 1 0 0 0 64@tsqlselect.g:383:20(compute_by) 1 1.00 1 0 0 0 88@tsqlselect.g:505:16(group_by_clause) 6 1.00 1 0 0 0 89@tsqlselect.g:505:62(group_by_clause) 6 1.00 1 0 0 0 27@tsqlselect.g:128:1(opt_as) 17 1.00 1 0 0 0 90@tsqlselect.g:245:15(primitive_table) 2 1.00 1 0 0 0 34@tsqlselect.g:246:15(primitive_table) 2 1.00 1 0 0 0 35@tsqlselect.g:247:7(primitive_table) 2 1.00 1 0 0 1 36@tsqlselect.g:251:6(primitive_table) 2 1.00 1 0 0 1 41@tsqlselect.g:269:6(primitive_table) 1 3.00 3 1 4 1 42@tsqlselect.g:273:5(primitive_table) 1 1.00 1 0 0 1 1@tsqlalter.g:20:4(alter_statement) 5 1.00 1 0 0 0 21@tsqlalter.g:216:6(alter_database) 2 1.00 1 0 0 0 45@tsqlalter.g:320:1(ad_optionspec) 2 1.00 1 0 0 0 50@tsqlalter.g:383:1(ad_recovery_option) 2 1.00 1 0 0 0 44@tsqlalter.g:315:22(ad_optionspec_list) 2 1.00 1 0 0 0 43@tsqlalter.g:305:27(ad_set_database_options) 2 1.00 1 0 0 0 22@tsqlalter.g:223:10(alter_database) 2 1.00 1 0 0 0 152@tsqlalter.g:890:3(data_type_el) 36 1.61 2 0 0 0 151@tsqlalter.g:891:32(data_type_el) 22 1.00 1 0 0 0 212@tsqlalter.g:1270:6(alter_table) 3 1.00 1 0 0 0 230@tsqlalter.g:1358:4(with_add) 3 1.00 1 0 0 0 232@tsqlalter.g:1359:4(with_add) 3 1.00 1 0 0 0 228@tsqlalter.g:1352:16(with_list) 3 1.00 1 0 0 0 213@tsqlalter.g:1284:10(alter_table) 3 1.00 1 0 0 0 229@tsqlalter.g:1358:5(with_add) 2 1.00 1 0 0 0 231@tsqlalter.g:1363:9(with_add) 2 1.00 1 0 0 0 133@tsqlalter.g:764:4(alter_function_params) 1 1.00 1 0 0 0 149@tsqlalter.g:881:14(function_parameter_spec) 1 1.00 1 0 0 0 150@tsqlalter.g:881:27(function_parameter_spec) 1 1.00 1 0 0 0 132@tsqlalter.g:765:34(alter_function_params) 1 1.00 1 0 0 0 141@tsqlalter.g:782:3(alter_function_returns) 1 1.00 1 0 0 0 134@tsqlalter.g:794:9(alter_function_returns) 1 1.00 1 0 0 0 135@tsqlalter.g:795:9(alter_function_returns) 1 1.00 1 0 0 1 142@tsqlalter.g:815:4(afr_as) 1 1.00 1 0 0 0 143@tsqlalter.g:816:3(afr_as) 1 1.00 1 0 0 0 131@tsqlalter.g:756:7(alter_function) 1 1.00 1 0 0 0 147@tsqlalter.g:849:1(index_option) 1 1.00 1 0 0 0 146@tsqlalter.g:852:4(index_option) 1 1.00 1 0 0 0 145@tsqlalter.g:844:21(index_option_list) 1 1.00 1 0 0 0 251@tsqlcreate.g:1397:6(cr_type_data) 17 1.47 2 0 0 0 250@tsqlcreate.g:1399:6(cr_type_data) 8 1.00 1 0 0 0 248@tsqlcreate.g:1400:19(cr_type_data) 6 1.00 1 0 0 0 1@tsqlcreate.g:16:3(create_statement) 26 1.04 2 0 0 0 229@tsqlcreate.g:1280:6(create_trigger) 4 1.00 1 0 0 0 234@tsqlcreate.g:1314:9(trig_iud_stuff) 2 1.00 1 0 0 0 235@tsqlcreate.g:1316:9(trig_iud_stuff) 2 1.00 1 0 0 0 242@tsqlcreate.g:1345:23(trig_del_ins_up_list) 2 1.00 1 0 0 0 236@tsqlcreate.g:1320:15(trig_iud_stuff) 2 1.00 1 0 0 0 237@tsqlcreate.g:1321:9(trig_iud_stuff) 2 1.00 1 0 0 0 238@tsqlcreate.g:1333:3(trigger_body) 4 1.00 1 0 0 0 241@tsqlcreate.g:1339:1(unblocked_statements) 11 1.00 1 0 0 1 239@tsqlcreate.g:1341:7(unblocked_statements) 180 1.00 1 0 0 0 190@tsqlcreate.g:1124:1(ct_col_def_list_element) 44 1.02 2 0 0 0 194@tsqlcreate.g:1142:9(ct_column_definition) 42 1.95 2 0 0 0 199@tsqlcreate.g:1161:7(ct_data) 55 1.00 1 0 0 0 200@tsqlcreate.g:1161:24(ct_data) 55 1.00 1 0 0 0 201@tsqlcreate.g:1161:28(ct_data) 55 1.02 2 0 0 0 205@tsqlcreate.g:1162:15(ct_data) 55 2.07 6 19 0 1 192@tsqlcreate.g:1144:15(ct_column_definition) 40 1.00 1 0 0 0 189@tsqlcreate.g:1125:32(ct_col_def_list_element) 42 1.00 1 0 0 0 191@tsqlcreate.g:1130:9(ct_constraint_list) 74 1.00 1 0 0 0 206@tsqlcreate.g:1179:4(ct_col_table_constraint) 44 1.00 1 0 0 0 220@tsqlcreate.g:1180:3(ct_col_table_constraint) 44 1.00 1 0 0 0 207@tsqlcreate.g:1181:6(ct_col_table_constraint) 5 1.00 1 0 0 0 208@tsqlcreate.g:1182:7(ct_col_table_constraint) 5 1.00 1 0 0 0 209@tsqlcreate.g:1183:17(ct_col_table_constraint) 5 3.40 6 3 0 1 210@tsqlcreate.g:1184:7(ct_col_table_constraint) 5 1.00 1 0 0 0 211@tsqlcreate.g:1185:7(ct_col_table_constraint) 5 1.00 1 0 0 0 188@tsqlcreate.g:1119:34(ct_col_def_list) 44 1.80 5 0 0 0 183@tsqlcreate.g:1100:34(create_table) 10 1.00 1 0 0 0 184@tsqlcreate.g:1102:9(create_table) 10 1.00 1 0 0 0 185@tsqlcreate.g:1103:9(create_table) 10 1.00 1 0 0 0 186@tsqlcreate.g:1104:10(create_table) 10 1.00 1 0 0 0 197@tsqlcreate.g:1153:17(ct_constraint_identity) 3 1.00 1 0 0 1 198@tsqlcreate.g:1153:89(ct_constraint_identity) 3 1.00 1 0 0 0 217@tsqlcreate.g:1198:15(ct_col_table_constraint) 25 1.00 1 0 0 0 221@tsqlcreate.g:1216:1(opt_foreign_key) 3 1.00 1 0 0 0 212@tsqlcreate.g:1189:5(ct_col_table_constraint) 3 1.00 1 0 0 0 222@tsqlcreate.g:1223:13(ct_con_references) 3 4.00 4 3 0 1 224@tsqlcreate.g:1235:19(ct_table_con_col) 7 1.00 1 0 0 0 223@tsqlcreate.g:1228:26(ct_table_con_cols) 7 1.00 1 0 0 0 213@tsqlcreate.g:1192:5(ct_col_table_constraint) 3 1.00 1 0 0 0 214@tsqlcreate.g:1193:17(ct_col_table_constraint) 3 1.00 1 0 0 0 215@tsqlcreate.g:1194:17(ct_col_table_constraint) 3 1.00 1 0 0 0 204@tsqlcreate.g:1164:6(ct_data) 19 1.00 1 0 0 1 202@tsqlcreate.g:1165:17(ct_data) 19 1.00 1 0 0 0 216@tsqlcreate.g:1196:13(ct_col_table_constraint) 2 1.00 1 0 0 0 218@tsqlcreate.g:1200:35(ct_col_table_constraint) 4 1.00 1 0 0 0 219@tsqlcreate.g:1200:52(ct_col_table_constraint) 4 1.00 1 0 0 0 126@tsqlcreate.g:730:26(create_procedure) 7 1.00 1 0 0 0 127@tsqlcreate.g:732:6(create_procedure) 7 1.00 1 0 0 0 134@tsqlcreate.g:764:1(procedure_param_list) 7 1.00 1 0 0 0 136@tsqlcreate.g:776:17(procedure_param) 15 1.00 1 0 0 0 137@tsqlcreate.g:776:35(procedure_param) 15 1.00 1 0 0 0 138@tsqlcreate.g:776:60(procedure_param) 15 1.00 1 0 0 0 135@tsqlcreate.g:770:24(procedure_param_list_body) 15 1.00 1 0 0 0 128@tsqlcreate.g:734:6(create_procedure) 7 1.00 1 0 0 0 129@tsqlcreate.g:736:6(create_procedure) 7 1.00 1 0 0 0 131@tsqlcreate.g:744:7(cproc_as) 7 1.00 1 0 0 0 193@tsqlcreate.g:1147:17(ct_column_definition) 2 1.00 1 0 0 0 226@tsqlcreate.g:1253:9(ct_con_with) 1 1.00 1 0 0 0 187@tsqlcreate.g:1114:27(ct_partition) 2 1.00 1 0 0 0 122@tsqlcreate.g:702:3(create_partition) 3 1.00 1 0 0 0 124@tsqlcreate.g:711:19(cp_function) 2 1.00 1 0 0 0 123@tsqlcreate.g:706:10(create_partition) 3 1.00 1 0 0 0 125@tsqlcreate.g:718:6(cp_scheme) 1 1.00 1 0 0 0 231@tsqlcreate.g:1293:7(trig_ddl_stuff) 2 1.00 1 0 0 0 232@tsqlcreate.g:1295:9(trig_ddl_stuff) 2 1.00 1 0 0 0 233@tsqlcreate.g:1298:11(trig_ddl_stuff) 2 1.00 1 0 0 1 261@tsqlcreate.g:1486:32(create_xml) 1 1.00 1 0 0 0 262@tsqlcreate.g:1486:44(create_xml) 1 1.00 1 0 0 0 263@tsqlcreate.g:1487:10(create_xml) 1 1.00 1 0 0 0 249@tsqlcreate.g:1401:29(cr_type_data) 2 1.00 1 0 0 0 132@tsqlcreate.g:755:4(procedure_option_list) 2 1.00 1 0 0 0 133@tsqlcreate.g:758:1(procedure_option) 1 1.00 1 0 0 0 240@tsqlcreate.g:1341:19(unblocked_statements) 11 1.00 1 0 0 0 230@tsqlcreate.g:1285:10(create_trigger) 4 1.00 1 0 0 0 1@tsqlcommon.g:21:15(common_return) 3 2.00 4 1 1 1 10@tsqlcursors.g:56:9(common_cursor_decl) 1 1.00 1 0 0 0 14@tsqlcursors.g:72:7(dc_extended_options) 1 1.00 1 0 0 0 15@tsqlcursors.g:73:7(dc_extended_options) 1 1.00 1 0 0 0 16@tsqlcursors.g:74:7(dc_extended_options) 1 1.00 1 0 0 0 17@tsqlcursors.g:75:7(dc_extended_options) 1 1.00 1 0 0 0 11@tsqlcursors.g:59:9(common_cursor_decl) 1 1.00 1 0 0 0 26@tsqlcursors.g:121:7(open_cursor) 1 1.00 1 0 0 0 ~/research/papers/LL-star/ANTLR-grammars-private/tsql/ter $ grep '@' /tmp/j | awk 'BEGIN {FS="\t"}; {print "k=" $4}'|sort |uniq -c |sort -r -n # dec maxk histo 276 k=1 21 k=2 5 k=3 3 k=4 2 k=6 1 k=5 1 k=20 ~/research/papers/LL-star/ANTLR-grammars-private/tsql/ter $ awk 'BEGIN {FS="\t"}; {if ($7>0 && $5==0 ) print $0}' /tmp/j # those that can backtrack but don't 58@tsql.g:421:9(collate_atomics) 606 1.00 1 0 0 1 88@tsql.g:650:18(aggregate_windowed_functions) 19 1.00 1 0 0 1 35@tsqlselect.g:247:7(primitive_table) 2 1.00 1 0 0 1 36@tsqlselect.g:251:6(primitive_table) 2 1.00 1 0 0 1 42@tsqlselect.g:273:5(primitive_table) 1 1.00 1 0 0 1 135@tsqlalter.g:795:9(alter_function_returns) 1 1.00 1 0 0 1 241@tsqlcreate.g:1339:1(unblocked_statements) 11 1.00 1 0 0 1 197@tsqlcreate.g:1153:17(ct_constraint_identity) 3 1.00 1 0 0 1 204@tsqlcreate.g:1164:6(ct_data) 19 1.00 1 0 0 1 233@tsqlcreate.g:1298:11(trig_ddl_stuff) 2 1.00 1 0 0 1 SPEED ~/research/papers/LL-star/ANTLR-grammars-private/tsql/ter $ j Main big.sqlfile: /Users/parrt/research/papers/LL-star/ANTLR-grammars-private/tsql/ter/big.sql # lex, parse warm up 1000 times parse Parsed in 18ms. Parsed in 11ms. Parsed in 10ms. Parsed in 17ms. Parsed in 13ms. Parsed in 11ms. Parsed in 13ms. Parsed in 10ms. Parsed in 11ms. Parsed in 16ms. (18+11+10+17+13+11+13+10+11+16)/10 13