From f85dfcce8d77cb9349224f022446d4db181a33d1 Mon Sep 17 00:00:00 2001 From: Hezheng Yin Date: Mon, 1 Apr 2019 18:06:23 -0700 Subject: [PATCH] Restructure and remove --- .gitmodules | 3 - contribs/js-callgraph | 1 - misc/apply_patch.py | 15 - misc/gitpython.diff | 11 - persper/analytics/call_graph/java.py | 411 - persper/analytics/call_graph/java/Java8.g4 | 1771 -- .../analytics/call_graph/java/Java8.interp | 461 - .../analytics/call_graph/java/Java8.tokens | 205 - .../call_graph/java/Java8Lexer.interp | 384 - .../analytics/call_graph/java/Java8Lexer.py | 712 - .../call_graph/java/Java8Lexer.tokens | 205 - .../call_graph/java/Java8Listener.py | 2134 -- .../analytics/call_graph/java/Java8Parser.py | 21569 ---------------- .../analytics/call_graph/java/Java8Visitor.py | 1193 - persper/analytics/call_graph/java/__init__.py | 0 .../analytics/call_graph/java/ast_creater.py | 25 - persper/analytics/call_graph/java/java.py | 175 - persper/analytics/call_graph/java/java2.py | 141 - persper/analytics/cpp_tools.py | 38 - persper/analytics/go.py | 102 - persper/analytics/graph_server_http.py | 54 - persper/analytics/java.py | 96 - persper/analytics/ruby_tools.py | 53 - persper/classifier.py | 408 - persper/extractor.py | 202 - persper/labeler.py | 54 - persper/parser/java/JavaLexer.interp | 357 - persper/parser/java/JavaLexer.py | 630 - persper/parser/java/JavaLexer.tokens | 209 - persper/parser/java/JavaParser.interp | 337 - persper/parser/java/JavaParser.py | 9150 ------- persper/parser/java/JavaParser.tokens | 209 - persper/parser/java/JavaParserListener.py | 946 - persper/parser/java/README.md | 18 - persper/parser/java/__init__.py | 0 seq2seq/textsum/convert_data.py | 107 - seq2seq/textsum/convert_data.sh | 19 - seq2seq/textsum/stats_output.py | 23 - seq2seq/textsum/test.sh | 38 - seq2seq/textsum/train.sh | 33 - .../go_test_repo_temp/A/main.go | 24 - .../go_test_repo_temp/B/main.go | 29 - .../go_test_repo_temp/C/main.go | 26 - .../go_test_repo_temp/D/main.go | 29 - .../go_test_repo_temp/E/main.go | 45 - .../go_test_repo_temp/F/main.go | 52 - .../go_test_repo_temp/G/main.go | 53 - .../go_test_repo_temp/H/main.go | 61 - .../go_test_repo_temp/I/main.go | 53 - .../go_test_repo_temp/J/main.go | 59 - test/go_test_legacy/go_test_repo_temp/cg.dot | 3 - .../go_test_repo_temp/readme.md | 23 - test/go_test_legacy/test/__init__.py | 0 test/go_test_legacy/test/test_analyzer_go.py | 109 - .../go_test_legacy/test/test_analyzer_go_2.py | 76 - .../test/test_analyzer_go_call.py | 157 - .../test/test_analyzer_go_history.py | 167 - test/go_test_repos/0_common/A/main.go | 26 - test/go_test_repos/0_common/B/main.go | 35 - test/go_test_repos/0_common/C/main.go | 32 - test/go_test_repos/0_common/D/main.go | 31 - test/go_test_repos/0_common/cg.dot | 3 - .../1_1_1,2_add_remove_function/A/main.go | 14 - .../1_1_1,2_add_remove_function/B/main.go | 14 - .../1_1_1,2_add_remove_function/C/main.go | 14 - .../1_1_1,2_add_remove_function/cg.dot | 3 - .../A/main.go | 14 - .../D/main.go | 13 - .../E/main.go | 13 - .../cg.dot | 3 - .../1_1_3_3_1,2_add_remove_lines/A/main.go | 14 - .../1_1_3_3_1,2_add_remove_lines/F/main.go | 15 - .../1_1_3_3_1,2_add_remove_lines/G/main.go | 16 - .../1_1_3_3_1,2_add_remove_lines/H/main.go | 17 - .../1_1_3_3_1,2_add_remove_lines/I/main.go | 17 - .../1_1_3_3_1,2_add_remove_lines/J/main.go | 17 - .../1_1_3_3_1,2_add_remove_lines/K/main.go | 16 - .../1_1_3_3_1,2_add_remove_lines/cg.dot | 5 - .../1_1_3_3_3_update_lines/H/main.go | 17 - .../1_1_3_3_3_update_lines/L/main.go | 17 - .../1_1_3_3_3_update_lines/M/main.go | 17 - .../1_1_3_3_3_update_lines/N/main.go | 17 - .../1_1_3_3_3_update_lines/cg.dot | 5 - .../1_1_4_1_no_new_line_eof/A/main.go | 12 - .../1_1_4_1_no_new_line_eof/O/main.go | 12 - .../1_1_4_1_no_new_line_eof/P/main.go | 12 - .../1_1_4_1_no_new_line_eof/cg.dot | 3 - .../A/main.go | 14 - .../P/main.go | 12 - .../Q/main.go | 13 - .../cg.dot | 3 - .../1_2_1_1_function_call/A/main.go | 14 - .../1_2_1_1_function_call/B/main.go | 14 - .../1_2_1_1_function_call/C/main.go | 14 - .../1_2_1_1_function_call/D/main.go | 14 - .../1_2_1_1_function_call/E/main.go | 13 - .../1_2_1_1_function_call/cg.dot | 3 - .../1_2_1_2_embedded_expression/A/main.go | 14 - .../1_2_1_2_embedded_expression/F/main.go | 16 - .../1_2_1_2_embedded_expression/G/main.go | 18 - .../1_2_1_2_embedded_expression/H/main.go | 19 - .../1_2_1_2_embedded_expression/cg.dot | 4 - .../1_2_2_1_1_if_statement/A/main.go | 14 - .../1_2_2_1_1_if_statement/I/main.go | 17 - .../1_2_2_1_1_if_statement/J/main.go | 17 - .../1_2_2_1_1_if_statement/cg.dot | 3 - .../1_2_2_2_1_for_statement/A/main.go | 14 - .../1_2_2_2_1_for_statement/M/main.go | 17 - .../1_2_2_2_1_for_statement/N/main.go | 17 - .../1_2_2_2_1_for_statement/cg.dot | 3 - .../1_2_2_2_2_while_statement/A/main.go | 14 - .../1_2_2_2_2_while_statement/K/main.go | 20 - .../1_2_2_2_2_while_statement/L/main.go | 21 - .../1_2_2_2_2_while_statement/cg.dot | 3 - .../1_3_file_attribute/A/alpha.go | 5 - .../1_3_file_attribute/B/alpha.go | 5 - .../1_3_file_attribute/B/beta.go | 5 - .../1_3_file_attribute/C/alpha.go | 1 - .../1_3_file_attribute/C/beta.go | 9 - .../1_3_file_attribute/D/beta.go | 9 - .../1_3_file_attribute/D/gamma/gamma.go | 8 - test/go_test_repos/1_3_file_attribute/cg.dot | 3 - .../1_4_feature_branch/A/main.go | 14 - .../1_4_feature_branch/B/main.go | 14 - .../1_4_feature_branch/C/main.go | 14 - .../1_4_feature_branch/D/func.go | 11 - .../1_4_feature_branch/D/main.go | 14 - .../1_4_feature_branch/E/func.go | 11 - .../1_4_feature_branch/E/main.go | 15 - .../1_4_feature_branch/F/func.go | 12 - .../1_4_feature_branch/F/main.go | 14 - .../1_4_feature_branch/G/func.go | 11 - .../1_4_feature_branch/G/main.go | 13 - .../1_4_feature_branch/H/func.go | 11 - .../1_4_feature_branch/H/main.go | 13 - .../1_4_feature_branch/I/func.go | 11 - .../1_4_feature_branch/I/main.go | 14 - .../1_4_feature_branch/J/func.go | 12 - .../1_4_feature_branch/J/main.go | 13 - .../1_4_feature_branch/K/func.go | 12 - .../1_4_feature_branch/K/main.go | 13 - test/go_test_repos/1_4_feature_branch/cg.dot | 6 - .../A/calcproj/src/simplemath/add.go | 5 - .../A/calcproj/src/simplemath/add_test.go | 11 - .../A/calcproj/src/simplemath/sqrt.go | 8 - .../A/calcproj/src/simplemath/sqrt_test.go | 11 - .../2_1_package/B/calcproj/src/calc/calc.go | 54 - .../B/calcproj/src/simplemath/add.go | 5 - .../B/calcproj/src/simplemath/add_test.go | 11 - .../B/calcproj/src/simplemath/sqrt.go | 8 - .../B/calcproj/src/simplemath/sqrt_test.go | 11 - test/go_test_repos/2_1_package/cg.dot | 3 - test/go_test_repos/2_1_package/readme.md | 5 - .../java_test_feature_branch/A/CallGraph.java | 17 - .../java_test_feature_branch/B/CallGraph.java | 22 - .../java_test_feature_branch/C/CallGraph.java | 21 - .../java_test_feature_branch/D/CallGraph.java | 21 - .../D/SecondFile.java | 12 - .../java_test_feature_branch/G/CallGraph.java | 17 - .../G/SecondFile.java | 12 - test/java_test_feature_branch/cg.dot | 4 - test/java_test_repo/A/CallGraph.java | 17 - test/java_test_repo/B/CallGraph.java | 21 - test/java_test_repo/C/CallGraph.java | 18 - test/java_test_repo/D/CallGraph.java | 18 - test/java_test_repo/E/CallGraph.java | 18 - test/java_test_repo/F/CallGraph.java | 22 - test/java_test_repo/G/CallGraph.java | 20 - test/java_test_repo/I/CallGraph.java | 20 - test/java_test_repo/J/CallGraph.java | 18 - test/java_test_repo/K/CallGraph.java | 25 - test/java_test_repo/L/CallGraph.java | 25 - test/java_test_repo/M/CallGraph.java | 22 - test/java_test_repo/N/CallGraph.java | 25 - test/java_test_repo/O/CallGraph.java | 70 - test/java_test_repo/P/CallGraph.java | 83 - test/java_test_repo/Q/CallGraph.java | 83 - test/java_test_repo/Q/SecondFile.java | 12 - test/java_test_repo/R/CallGraph.java | 83 - test/java_test_repo/R/SecondFileRename.java | 12 - test/java_test_repo/README.md | 128 - test/java_test_repo/cg.dot | 3 - test/js_test_repo/A/main.js | 12 - test/js_test_repo/B/main.js | 17 - test/js_test_repo/C/main.js | 18 - test/js_test_repo/cg.dot | 3 - test/test_analytics/test_analyzer_java.py | 178 - .../test_analyzer_java_feature_branch.py | 78 - test/test_analytics/test_analyzer_js.py | 83 - test/test_analytics/test_go/__init__.py | 0 test/test_analytics/test_go/test_0_common.py | 110 - .../test_1_1_1,2_add_remove_function.py | 84 - ...1_1_3_1,2_change_function_name_argument.py | 87 - .../test_go/test_1_1_3_3_3_update_lines.py | 83 - .../test_go/test_1_1_3_3_add_remove_lines.py | 112 - .../test_go/test_1_1_4_1_no_new_line_eof.py | 75 - ...t_1_1_4_2_no_new_line_between_functions.py | 83 - .../test_go/test_1_2_1_1_function_call.py | 101 - .../test_1_2_1_2_embedded_expression.py | 97 - .../test_go/test_1_2_2_1_1_if_statement.py | 87 - .../test_go/test_1_2_2_2_1_for_statement.py | 89 - .../test_go/test_1_2_2_2_2_while_statement.py | 87 - .../test_go/test_1_3_file_attribute.py | 68 - .../test_go/test_1_4_feature_branch.py | 166 - .../test_go/test_1_5_persistence.py | 132 - .../test_go/test_2_1_package.py | 88 - .../test_analytics/test_go/test_2_1_vendor.py | 19 - .../test_analytics/utility/go_graph_server.py | 73 - test/test_analytics/utility/graph_helper.py | 38 - 209 files changed, 47616 deletions(-) delete mode 100644 .gitmodules delete mode 160000 contribs/js-callgraph delete mode 100755 misc/apply_patch.py delete mode 100644 misc/gitpython.diff delete mode 100644 persper/analytics/call_graph/java.py delete mode 100644 persper/analytics/call_graph/java/Java8.g4 delete mode 100644 persper/analytics/call_graph/java/Java8.interp delete mode 100644 persper/analytics/call_graph/java/Java8.tokens delete mode 100644 persper/analytics/call_graph/java/Java8Lexer.interp delete mode 100644 persper/analytics/call_graph/java/Java8Lexer.py delete mode 100644 persper/analytics/call_graph/java/Java8Lexer.tokens delete mode 100644 persper/analytics/call_graph/java/Java8Listener.py delete mode 100644 persper/analytics/call_graph/java/Java8Parser.py delete mode 100644 persper/analytics/call_graph/java/Java8Visitor.py delete mode 100644 persper/analytics/call_graph/java/__init__.py delete mode 100644 persper/analytics/call_graph/java/ast_creater.py delete mode 100644 persper/analytics/call_graph/java/java.py delete mode 100644 persper/analytics/call_graph/java/java2.py delete mode 100644 persper/analytics/cpp_tools.py delete mode 100644 persper/analytics/go.py delete mode 100644 persper/analytics/graph_server_http.py delete mode 100644 persper/analytics/java.py delete mode 100644 persper/analytics/ruby_tools.py delete mode 100644 persper/classifier.py delete mode 100644 persper/extractor.py delete mode 100644 persper/labeler.py delete mode 100644 persper/parser/java/JavaLexer.interp delete mode 100644 persper/parser/java/JavaLexer.py delete mode 100644 persper/parser/java/JavaLexer.tokens delete mode 100644 persper/parser/java/JavaParser.interp delete mode 100644 persper/parser/java/JavaParser.py delete mode 100644 persper/parser/java/JavaParser.tokens delete mode 100644 persper/parser/java/JavaParserListener.py delete mode 100644 persper/parser/java/README.md delete mode 100644 persper/parser/java/__init__.py delete mode 100755 seq2seq/textsum/convert_data.py delete mode 100755 seq2seq/textsum/convert_data.sh delete mode 100755 seq2seq/textsum/stats_output.py delete mode 100755 seq2seq/textsum/test.sh delete mode 100755 seq2seq/textsum/train.sh delete mode 100644 test/go_test_legacy/go_test_repo_temp/A/main.go delete mode 100644 test/go_test_legacy/go_test_repo_temp/B/main.go delete mode 100644 test/go_test_legacy/go_test_repo_temp/C/main.go delete mode 100644 test/go_test_legacy/go_test_repo_temp/D/main.go delete mode 100644 test/go_test_legacy/go_test_repo_temp/E/main.go delete mode 100644 test/go_test_legacy/go_test_repo_temp/F/main.go delete mode 100644 test/go_test_legacy/go_test_repo_temp/G/main.go delete mode 100644 test/go_test_legacy/go_test_repo_temp/H/main.go delete mode 100644 test/go_test_legacy/go_test_repo_temp/I/main.go delete mode 100644 test/go_test_legacy/go_test_repo_temp/J/main.go delete mode 100644 test/go_test_legacy/go_test_repo_temp/cg.dot delete mode 100644 test/go_test_legacy/go_test_repo_temp/readme.md delete mode 100644 test/go_test_legacy/test/__init__.py delete mode 100644 test/go_test_legacy/test/test_analyzer_go.py delete mode 100644 test/go_test_legacy/test/test_analyzer_go_2.py delete mode 100644 test/go_test_legacy/test/test_analyzer_go_call.py delete mode 100644 test/go_test_legacy/test/test_analyzer_go_history.py delete mode 100644 test/go_test_repos/0_common/A/main.go delete mode 100644 test/go_test_repos/0_common/B/main.go delete mode 100644 test/go_test_repos/0_common/C/main.go delete mode 100644 test/go_test_repos/0_common/D/main.go delete mode 100644 test/go_test_repos/0_common/cg.dot delete mode 100644 test/go_test_repos/1_1_1,2_add_remove_function/A/main.go delete mode 100644 test/go_test_repos/1_1_1,2_add_remove_function/B/main.go delete mode 100644 test/go_test_repos/1_1_1,2_add_remove_function/C/main.go delete mode 100644 test/go_test_repos/1_1_1,2_add_remove_function/cg.dot delete mode 100644 test/go_test_repos/1_1_3_1,2_change_function_name_argument/A/main.go delete mode 100644 test/go_test_repos/1_1_3_1,2_change_function_name_argument/D/main.go delete mode 100644 test/go_test_repos/1_1_3_1,2_change_function_name_argument/E/main.go delete mode 100644 test/go_test_repos/1_1_3_1,2_change_function_name_argument/cg.dot delete mode 100644 test/go_test_repos/1_1_3_3_1,2_add_remove_lines/A/main.go delete mode 100644 test/go_test_repos/1_1_3_3_1,2_add_remove_lines/F/main.go delete mode 100644 test/go_test_repos/1_1_3_3_1,2_add_remove_lines/G/main.go delete mode 100644 test/go_test_repos/1_1_3_3_1,2_add_remove_lines/H/main.go delete mode 100644 test/go_test_repos/1_1_3_3_1,2_add_remove_lines/I/main.go delete mode 100644 test/go_test_repos/1_1_3_3_1,2_add_remove_lines/J/main.go delete mode 100644 test/go_test_repos/1_1_3_3_1,2_add_remove_lines/K/main.go delete mode 100644 test/go_test_repos/1_1_3_3_1,2_add_remove_lines/cg.dot delete mode 100644 test/go_test_repos/1_1_3_3_3_update_lines/H/main.go delete mode 100644 test/go_test_repos/1_1_3_3_3_update_lines/L/main.go delete mode 100644 test/go_test_repos/1_1_3_3_3_update_lines/M/main.go delete mode 100644 test/go_test_repos/1_1_3_3_3_update_lines/N/main.go delete mode 100644 test/go_test_repos/1_1_3_3_3_update_lines/cg.dot delete mode 100644 test/go_test_repos/1_1_4_1_no_new_line_eof/A/main.go delete mode 100644 test/go_test_repos/1_1_4_1_no_new_line_eof/O/main.go delete mode 100644 test/go_test_repos/1_1_4_1_no_new_line_eof/P/main.go delete mode 100644 test/go_test_repos/1_1_4_1_no_new_line_eof/cg.dot delete mode 100644 test/go_test_repos/1_1_4_2_no_new_line_between_functions/A/main.go delete mode 100644 test/go_test_repos/1_1_4_2_no_new_line_between_functions/P/main.go delete mode 100644 test/go_test_repos/1_1_4_2_no_new_line_between_functions/Q/main.go delete mode 100644 test/go_test_repos/1_1_4_2_no_new_line_between_functions/cg.dot delete mode 100644 test/go_test_repos/1_2_1_1_function_call/A/main.go delete mode 100644 test/go_test_repos/1_2_1_1_function_call/B/main.go delete mode 100644 test/go_test_repos/1_2_1_1_function_call/C/main.go delete mode 100644 test/go_test_repos/1_2_1_1_function_call/D/main.go delete mode 100644 test/go_test_repos/1_2_1_1_function_call/E/main.go delete mode 100644 test/go_test_repos/1_2_1_1_function_call/cg.dot delete mode 100644 test/go_test_repos/1_2_1_2_embedded_expression/A/main.go delete mode 100644 test/go_test_repos/1_2_1_2_embedded_expression/F/main.go delete mode 100644 test/go_test_repos/1_2_1_2_embedded_expression/G/main.go delete mode 100644 test/go_test_repos/1_2_1_2_embedded_expression/H/main.go delete mode 100644 test/go_test_repos/1_2_1_2_embedded_expression/cg.dot delete mode 100644 test/go_test_repos/1_2_2_1_1_if_statement/A/main.go delete mode 100644 test/go_test_repos/1_2_2_1_1_if_statement/I/main.go delete mode 100644 test/go_test_repos/1_2_2_1_1_if_statement/J/main.go delete mode 100644 test/go_test_repos/1_2_2_1_1_if_statement/cg.dot delete mode 100644 test/go_test_repos/1_2_2_2_1_for_statement/A/main.go delete mode 100644 test/go_test_repos/1_2_2_2_1_for_statement/M/main.go delete mode 100644 test/go_test_repos/1_2_2_2_1_for_statement/N/main.go delete mode 100644 test/go_test_repos/1_2_2_2_1_for_statement/cg.dot delete mode 100644 test/go_test_repos/1_2_2_2_2_while_statement/A/main.go delete mode 100644 test/go_test_repos/1_2_2_2_2_while_statement/K/main.go delete mode 100644 test/go_test_repos/1_2_2_2_2_while_statement/L/main.go delete mode 100644 test/go_test_repos/1_2_2_2_2_while_statement/cg.dot delete mode 100644 test/go_test_repos/1_3_file_attribute/A/alpha.go delete mode 100644 test/go_test_repos/1_3_file_attribute/B/alpha.go delete mode 100644 test/go_test_repos/1_3_file_attribute/B/beta.go delete mode 100644 test/go_test_repos/1_3_file_attribute/C/alpha.go delete mode 100644 test/go_test_repos/1_3_file_attribute/C/beta.go delete mode 100644 test/go_test_repos/1_3_file_attribute/D/beta.go delete mode 100644 test/go_test_repos/1_3_file_attribute/D/gamma/gamma.go delete mode 100644 test/go_test_repos/1_3_file_attribute/cg.dot delete mode 100644 test/go_test_repos/1_4_feature_branch/A/main.go delete mode 100644 test/go_test_repos/1_4_feature_branch/B/main.go delete mode 100644 test/go_test_repos/1_4_feature_branch/C/main.go delete mode 100644 test/go_test_repos/1_4_feature_branch/D/func.go delete mode 100644 test/go_test_repos/1_4_feature_branch/D/main.go delete mode 100644 test/go_test_repos/1_4_feature_branch/E/func.go delete mode 100644 test/go_test_repos/1_4_feature_branch/E/main.go delete mode 100644 test/go_test_repos/1_4_feature_branch/F/func.go delete mode 100644 test/go_test_repos/1_4_feature_branch/F/main.go delete mode 100644 test/go_test_repos/1_4_feature_branch/G/func.go delete mode 100644 test/go_test_repos/1_4_feature_branch/G/main.go delete mode 100644 test/go_test_repos/1_4_feature_branch/H/func.go delete mode 100644 test/go_test_repos/1_4_feature_branch/H/main.go delete mode 100644 test/go_test_repos/1_4_feature_branch/I/func.go delete mode 100644 test/go_test_repos/1_4_feature_branch/I/main.go delete mode 100644 test/go_test_repos/1_4_feature_branch/J/func.go delete mode 100644 test/go_test_repos/1_4_feature_branch/J/main.go delete mode 100644 test/go_test_repos/1_4_feature_branch/K/func.go delete mode 100644 test/go_test_repos/1_4_feature_branch/K/main.go delete mode 100644 test/go_test_repos/1_4_feature_branch/cg.dot delete mode 100644 test/go_test_repos/2_1_package/A/calcproj/src/simplemath/add.go delete mode 100644 test/go_test_repos/2_1_package/A/calcproj/src/simplemath/add_test.go delete mode 100644 test/go_test_repos/2_1_package/A/calcproj/src/simplemath/sqrt.go delete mode 100644 test/go_test_repos/2_1_package/A/calcproj/src/simplemath/sqrt_test.go delete mode 100644 test/go_test_repos/2_1_package/B/calcproj/src/calc/calc.go delete mode 100644 test/go_test_repos/2_1_package/B/calcproj/src/simplemath/add.go delete mode 100644 test/go_test_repos/2_1_package/B/calcproj/src/simplemath/add_test.go delete mode 100644 test/go_test_repos/2_1_package/B/calcproj/src/simplemath/sqrt.go delete mode 100644 test/go_test_repos/2_1_package/B/calcproj/src/simplemath/sqrt_test.go delete mode 100644 test/go_test_repos/2_1_package/cg.dot delete mode 100644 test/go_test_repos/2_1_package/readme.md delete mode 100644 test/java_test_feature_branch/A/CallGraph.java delete mode 100644 test/java_test_feature_branch/B/CallGraph.java delete mode 100644 test/java_test_feature_branch/C/CallGraph.java delete mode 100644 test/java_test_feature_branch/D/CallGraph.java delete mode 100644 test/java_test_feature_branch/D/SecondFile.java delete mode 100644 test/java_test_feature_branch/G/CallGraph.java delete mode 100644 test/java_test_feature_branch/G/SecondFile.java delete mode 100644 test/java_test_feature_branch/cg.dot delete mode 100644 test/java_test_repo/A/CallGraph.java delete mode 100644 test/java_test_repo/B/CallGraph.java delete mode 100644 test/java_test_repo/C/CallGraph.java delete mode 100644 test/java_test_repo/D/CallGraph.java delete mode 100644 test/java_test_repo/E/CallGraph.java delete mode 100644 test/java_test_repo/F/CallGraph.java delete mode 100644 test/java_test_repo/G/CallGraph.java delete mode 100644 test/java_test_repo/I/CallGraph.java delete mode 100644 test/java_test_repo/J/CallGraph.java delete mode 100644 test/java_test_repo/K/CallGraph.java delete mode 100644 test/java_test_repo/L/CallGraph.java delete mode 100644 test/java_test_repo/M/CallGraph.java delete mode 100644 test/java_test_repo/N/CallGraph.java delete mode 100644 test/java_test_repo/O/CallGraph.java delete mode 100644 test/java_test_repo/P/CallGraph.java delete mode 100644 test/java_test_repo/Q/CallGraph.java delete mode 100644 test/java_test_repo/Q/SecondFile.java delete mode 100644 test/java_test_repo/R/CallGraph.java delete mode 100644 test/java_test_repo/R/SecondFileRename.java delete mode 100644 test/java_test_repo/README.md delete mode 100644 test/java_test_repo/cg.dot delete mode 100644 test/js_test_repo/A/main.js delete mode 100644 test/js_test_repo/B/main.js delete mode 100644 test/js_test_repo/C/main.js delete mode 100644 test/js_test_repo/cg.dot delete mode 100644 test/test_analytics/test_analyzer_java.py delete mode 100644 test/test_analytics/test_analyzer_java_feature_branch.py delete mode 100644 test/test_analytics/test_analyzer_js.py delete mode 100644 test/test_analytics/test_go/__init__.py delete mode 100644 test/test_analytics/test_go/test_0_common.py delete mode 100644 test/test_analytics/test_go/test_1_1_1,2_add_remove_function.py delete mode 100644 test/test_analytics/test_go/test_1_1_3_1,2_change_function_name_argument.py delete mode 100644 test/test_analytics/test_go/test_1_1_3_3_3_update_lines.py delete mode 100644 test/test_analytics/test_go/test_1_1_3_3_add_remove_lines.py delete mode 100644 test/test_analytics/test_go/test_1_1_4_1_no_new_line_eof.py delete mode 100644 test/test_analytics/test_go/test_1_1_4_2_no_new_line_between_functions.py delete mode 100644 test/test_analytics/test_go/test_1_2_1_1_function_call.py delete mode 100644 test/test_analytics/test_go/test_1_2_1_2_embedded_expression.py delete mode 100644 test/test_analytics/test_go/test_1_2_2_1_1_if_statement.py delete mode 100644 test/test_analytics/test_go/test_1_2_2_2_1_for_statement.py delete mode 100644 test/test_analytics/test_go/test_1_2_2_2_2_while_statement.py delete mode 100644 test/test_analytics/test_go/test_1_3_file_attribute.py delete mode 100644 test/test_analytics/test_go/test_1_4_feature_branch.py delete mode 100644 test/test_analytics/test_go/test_1_5_persistence.py delete mode 100644 test/test_analytics/test_go/test_2_1_package.py delete mode 100644 test/test_analytics/test_go/test_2_1_vendor.py delete mode 100644 test/test_analytics/utility/go_graph_server.py delete mode 100644 test/test_analytics/utility/graph_helper.py diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 7a1026e445b..00000000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "contribs/js-callgraph"] - path = contribs/js-callgraph - url = https://github.com/Persper/js-callgraph diff --git a/contribs/js-callgraph b/contribs/js-callgraph deleted file mode 160000 index c3f2e94f5be..00000000000 --- a/contribs/js-callgraph +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c3f2e94f5be81bb31ce078a8c5e6d001af391579 diff --git a/misc/apply_patch.py b/misc/apply_patch.py deleted file mode 100755 index 9b74c237d5c..00000000000 --- a/misc/apply_patch.py +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env python3 - -import os -import subprocess -import git - -def main(): - print('The patch is generated for gitpython release 2.1.1.') - print('Your gitpython version is {}'.format(git.__version__)) - src_file = os.path.join(os.path.dirname(git.__file__), 'diff.py') - cmd = 'patch {} < gitpython.diff'.format(src_file) - subprocess.call(cmd, shell=True) - -if __name__ == '__main__': - main() \ No newline at end of file diff --git a/misc/gitpython.diff b/misc/gitpython.diff deleted file mode 100644 index 910ba31fb2e..00000000000 --- a/misc/gitpython.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- diff0.py 2017-04-02 20:46:54.000000000 -0700 -+++ diff.py 2017-04-02 20:48:44.000000000 -0700 -@@ -232,7 +232,7 @@ - # precompiled regex - re_header = re.compile(br""" - ^diff[ ]--git -- [ ](?P"?a/.+?"?)[ ](?P"?b/.+?"?)\n -+ [ ](?P"?b/.+?"?)[ ](?P"?a/.+?"?)\n - (?:^old[ ]mode[ ](?P\d+)\n - ^new[ ]mode[ ](?P\d+)(?:\n|$))? - (?:^similarity[ ]index[ ]\d+%\n diff --git a/persper/analytics/call_graph/java.py b/persper/analytics/call_graph/java.py deleted file mode 100644 index 9b06f49d53b..00000000000 --- a/persper/analytics/call_graph/java.py +++ /dev/null @@ -1,411 +0,0 @@ -import networkx as nx -from lxml import etree -from persper.graphs.call_graph.utils import transform_node_to_src, remove_edges_of_node -from persper.graphs.call_graph.utils import ns, line_attr - - -def generate_fid(class_name, func_name): - return class_name + ':' + func_name - - -def decompose_fid(func_id): - return func_id.split(':') - - -def get_specifiers(node): - """Helper function to first find all specifier nodes - and then return their texts""" - return [n.text for n in node.findall('./srcml:specifier', ns)] - - -def handle_name_node(name_node): - return transform_node_to_src(name_node).strip() - - """ - child_nodes = name_node.getchildren() - text_of_itself = name_node.text or '' - if len(child_nodes) == 0: - return text_of_itself - else: - child_names = [] - for child_node in child_nodes: - child_names.append(handle_name_node(child_node)) - return text_of_itself + ''.join(child_names) - """ - - -def get_name(node): - """Helper function to first find name node and then parse name""" - return handle_name_node(node.find('srcml:name', ns)) - - -def get_type(node): - """First get type node, then get type node's name node, - finally returns node's type""" - type_node = node.find('srcml:type', ns) - return handle_name_node(type_node.find('srcml:name', ns)) - - -def handle_decl_node(decl_node): - type_node = decl_node.find('srcml:type', ns) - type_name_node = type_node.find('srcml:name', ns) - name_node = decl_node.find('srcml:name', ns) - - try: - type_name = handle_name_node(type_name_node) - var_name = handle_name_node(name_node) - except: - import pdb - pdb.set_trace() - - return type_name, var_name - - -def handle_decl_stmt_node(decl_stmt_node, local_env): - """ - Node Structure: - A node consists of one or more nodes, - each has a node and a node. - The node may or may not has a node, the following - declaration statement is an example: - - int c, char2, char3; - """ - prev_type = None - decl_nodes = decl_stmt_node.findall('./srcml:decl', ns) - for decl_node in decl_nodes: - type_node = decl_node.find('./srcml:type', ns) - type_name_node = type_node.find('./srcml:name', ns) - if type_name_node is None: - type_name = prev_type - else: - type_name = handle_name_node(type_name_node) - var_name = get_name(decl_node) - local_env[var_name] = type_name - prev_type = type_name - - -def handle_call_node(call_node, cl_name, local_env, env): - """Parse a call node and return the identifer of the function being called - Type of calls we handle: - Case 1: doSomething(args) - doSomething is a public/private static/instance - member method of cl_name - Case 2: A a = new A() - A is a class (env), A's constructor function is called in this case - Case 3: a.doSomething(args) - a is an object, could be newly instantiated in this - function (local_env), - or could be passed as a parameter (local_env), - or could be this class's public/private member variable (env) - doSomething could be either a static method or a instance method - Case 4: A.doSomething(args) - A is a class (env) - doSomething is one of A's static methods - Case 5: A.var.doSomething(args) - A is a class (env) - var is a public static member of class A (env) - Case 6: a.var.doSomething(args) - a is an object, could be newly instantiated in this - function (local_env), - or could be passed as a parameter (local_env), - or could be this class' public/private member variable (env) - var is a public (static) member of object a (local_env & env) - - Returns: - A String representing the signature of the function being called - """ - call_name = get_name(call_node) - - names_lst = [n.strip() for n in call_name.split('.')] - callee_func_name = names_lst[-1] - if len(names_lst) == 1: - previous_node = call_node.getprevious() - if previous_node is not None and previous_node.text == 'new': - # Case 1: calling constructor - callee_cl_name = callee_func_name - else: - # Case 2: calling member method - callee_cl_name = cl_name - return generate_fid(callee_cl_name, callee_func_name) - elif len(names_lst) == 2: - niq = names_lst[0] # niq => name in question - # check local_env first - if niq in local_env: - # Case 3 (local_env) - var_name = niq - callee_cl_name = local_env[var_name] - return generate_fid(callee_cl_name, callee_func_name) - elif niq in env[cl_name]['var']: - # case 3 (env) - var_name = niq - callee_cl_name = env[cl_name]['var'][var_name]['type'] - return generate_fid(callee_cl_name, callee_func_name) - elif niq in env: - # Case 4 - return generate_fid(niq, callee_func_name) - else: - # something went wrong, niq is probably a class not in env - # print("WARNING: niq not found in both env and local_env") - return generate_fid(niq, callee_func_name) - else: - # Case 5 or 6 - callee_cl_name = None - if names_lst[0] in local_env: - callee_cl_name = local_env[names_lst[0]] - for n in names_lst[1:-1]: - callee_cl_name = env[callee_cl_name]['var'][n]['type'] - return generate_fid(callee_cl_name, callee_func_name) - elif names_lst[0] in env[cl_name]['var']: - callee_cl_name = env[cl_name]['var'][names_lst[0]]['type'] - for n in names_lst[1:-1]: - callee_cl_name = env[callee_cl_name]['var'][n]['type'] - return generate_fid(callee_cl_name, callee_func_name) - elif names_lst[0] in env: - callee_cl_name = names_lst[0] - for n in names_lst[1:-1]: - callee_cl_name = env[callee_cl_name]['var'][n]['type'] - return generate_fid(callee_cl_name, callee_func_name) - else: - # something went wrong, names_lst[0] is probably a class not in env - # print("WARNING: names_lst[0] not found in both env and local_env") - approx_callee_cl_name = '.'.join(names_lst[:-1]) - return generate_fid(approx_callee_cl_name, callee_func_name) - - -def handle_param_lst_node(param_lst_node): - local_env = {} - param_nodes = param_lst_node.findall('./srcml:parameter', ns) - for param_node in param_nodes: - decl_node = param_node.find('./srcml:decl', ns) - type_name, var_name = handle_decl_node(decl_node) - local_env[var_name] = type_name - return local_env - - -def handle_func_node(func_node, class_name, G, new_func, fid_to_file, env): - """ - Args: - class_name: A String, name of the class this function belongs to - G: A nx.DiGraph object, storing the actual call graph - new_func: A dictionary, mapping a new function's identifer (fid) - to its size - fid_to_file: A dictionary, mapping fid to the file it belongs to - env: A dictionary, storing global environment - - Workflow Summary: - 1. Parse function name and generate fid - 2. Add caller function to call graph G - 3. Initialize local_env by parsing parameter list - 4. Iterate through subnodes of this function in document order - a. For node, parse it and get callee_fid, - add this new edge to call graph G - b. For node, parse it and update local_env - - Node Structure: - node's direct children include , , - , - - TODOs: - 1. Function Overload - a. Primitive type - 2. Polymorphism - 3. Collection - 4. Array - 5. Add logic to remove variable from local_env - 6. Nested class - 7. Anonymous class - """ - name_node = func_node.find('./srcml:name', ns) - block_node = func_node.find('./srcml:block', ns) - block_pos_node = block_node.find('./pos:position', ns) - if block_pos_node is None: - # probably a srcML parsing error - return - param_lst_node = func_node.find('./srcml:parameter_list', ns) - - func_name = get_name(func_node) - caller_fid = generate_fid(class_name, func_name) - start_line = int(name_node.attrib[line_attr]) - end_line = int(block_pos_node.attrib[line_attr]) - num_lines = end_line - start_line + 1 - - # local_env maps variable name to class name - try: - local_env = handle_param_lst_node(param_lst_node) - except: - print("Failed to parse parameter list for %s" % caller_fid) - return - - if caller_fid not in G: - # Case 1: hasn't been defined and hasn't been called - new_func[caller_fid] = num_lines - G.add_node(caller_fid, {'num_lines': num_lines, 'defined': True}) - elif not G.node[caller_fid]['defined']: - # Case 2: has been called but hasn't been defined - new_func[caller_fid] = num_lines - G.node[caller_fid]['defined'] = True - G.node[caller_fid]['num_lines'] = num_lines - else: - # Case 3: has been called and has been defined - # it is modified in the latest commit - # no need to add it to new_func or - # update G.node[caller_fid]['num_lines'] - pass - - fid_to_file[caller_fid] = env[class_name]['filename'] - - for node in block_node.iter('{*}call', '{*}decl_stmt'): - if 'call' in node.tag: - try: - callee_fid = handle_call_node(node, class_name, local_env, env) - except: - print("Excpetion in handle_call_node.") - continue - if callee_fid not in G: - G.add_node(callee_fid, {'num_lines': 1, 'defined': False}) - G.add_edge(caller_fid, callee_fid) - else: - handle_decl_stmt_node(node, local_env) - - -def handle_class_node(class_node, G, new_func, fid_to_file, env): - class_name = get_name(class_node) - - block_node = class_node.find('./srcml:block', ns) - func_nodes = block_node.findall('./srcml:function', ns) - for func_node in func_nodes: - handle_func_node(func_node, class_name, G, new_func, fid_to_file, env) - - -def prepare_env_class(class_node, env): - """ - Official Access Level Tutorial: - https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html - - Node Structure: - node can have node or node - as its direct child - - Assumptions and TODOs: - 1. We assume every class method has modifiers (package private is rare) - 2. We currently don't distinguish between `protected` and `public` - 3. We don't keep record of methods' return types and arguments' types - """ - class_name = get_name(class_node) - filename = class_node.getparent().attrib['filename'] - # Class members are made of 2 things: - # 1. class's variable - # 2. class's methods - cl_env = {'var': {}, 'method': {}, 'filename': filename} - env[class_name] = cl_env - - # `this` and `super` - cl_env['var']['this'] = {'is_public': False, - 'is_static': False, - 'type': class_name} - super_node = class_node.find('./srcml:super', ns) - if super_node is not None: - extends_node = super_node.find('./srcml:extends', ns) - if extends_node is not None: - super_cl_name = get_name(extends_node) - cl_env['var']['super'] = {'is_public': False, - 'is_static': True, - 'type': super_cl_name} - - block_node = class_node.find('./srcml:block', ns) - - # member variables - decl_stmt_nodes = block_node.findall('./srcml:decl_stmt', ns) - for decl_stmt_node in decl_stmt_nodes: - decl_node = decl_stmt_node.find('./srcml:decl', ns) - var_name = get_name(decl_node) - var_type = get_type(decl_node) - specifiers = get_specifiers(decl_node) - is_public = 'protected' in specifiers or 'public' in specifiers - is_static = 'static' in specifiers - cl_env['var'][var_name] = {'is_public': is_public, - 'is_static': is_static, - 'type': var_type} - - # member methods - func_nodes = block_node.findall('./srcml:function', ns) - for func_node in func_nodes: - func_name = get_name(func_node) - specifiers = get_specifiers(func_node) - is_public = 'protected' in specifiers or 'public' in specifiers - is_static = 'static' in specifiers - cl_env['method'][func_name] = {'is_public': is_public, - 'is_static': is_static} - - -def prepare_env(root, env=None): - """ - env: class_name => [var/method] => [var_name/method_name] - """ - if env is None: - env = {} - - class_nodes = root.findall('./srcml:class', ns) - for class_node in class_nodes: - prepare_env_class(class_node, env) - return env - - -def build_call_graph_java(roots, G=None, env=None): - if G is None: - G = nx.DiGraph() - - new_func = {} - fid_to_file = {} - - # Initialize global environment - for root in roots: - env = prepare_env(root, env=env) - - # Build call graph - for root in roots: - class_nodes = root.xpath('./srcml:class', namespaces=ns) - for class_node in class_nodes: - handle_class_node(class_node, G, new_func, fid_to_file, env) - return G, new_func, fid_to_file, env - - -def update_call_graph_java(G, roots, modified_func, env=None): - for fid in modified_func: - if fid in G: - remove_edges_of_node(G, fid, in_edges=False) - G.node[fid]['num_lines'] += modified_func[fid] - - # here roots should be constructed from the more recent commit - # new functions and their sizes are stored in new_func dictionary - _, new_func, _, _ = build_call_graph_java(roots, G, env=env) - return new_func - - -def get_func_ranges_java(root): - fids, func_ranges = [], [] - for class_node in root.xpath('.//srcml:class', namespaces=ns): - try: - class_name = get_name(class_node) - except: - print("Class doesn't have name.") - continue - - block_node = class_node.find('./srcml:block', ns) - for func_node in block_node.findall('./srcml:function', ns): - try: - func_name = get_name(func_node) - fid = generate_fid(class_name, func_name) - - name_node = func_node.find('./srcml:name', ns) - block_node = func_node.find('./srcml:block', ns) - block_pos_node = block_node.find('./pos:position', ns) - start_line = int(name_node.attrib[line_attr]) - end_line = int(block_pos_node.attrib[line_attr]) - except: - continue - - fids.append(fid) - func_ranges.append([start_line, end_line]) - return fids, func_ranges diff --git a/persper/analytics/call_graph/java/Java8.g4 b/persper/analytics/call_graph/java/Java8.g4 deleted file mode 100644 index 519ae81c919..00000000000 --- a/persper/analytics/call_graph/java/Java8.g4 +++ /dev/null @@ -1,1771 +0,0 @@ -/* - * [The "BSD license"] - * Copyright (c) 2014 Terence Parr - * Copyright (c) 2014 Sam Harwell - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * A Java 8 grammar for ANTLR 4 derived from the Java Language Specification - * chapter 19. - * - * NOTE: This grammar results in a generated parser that is much slower - * than the Java 7 grammar in the grammars-v4/java directory. This - * one is, however, extremely close to the spec. - * - * You can test with - * - * $ antlr4 Java8.g4 - * $ javac *.java - * $ grun Java8 compilationUnit *.java - * - * Or, -~/antlr/code/grammars-v4/java8 $ java Test . -/Users/parrt/antlr/code/grammars-v4/java8/./Java8BaseListener.java -/Users/parrt/antlr/code/grammars-v4/java8/./Java8Lexer.java -/Users/parrt/antlr/code/grammars-v4/java8/./Java8Listener.java -/Users/parrt/antlr/code/grammars-v4/java8/./Java8Parser.java -/Users/parrt/antlr/code/grammars-v4/java8/./Test.java -Total lexer+parser time 30844ms. - */ -grammar Java8; - -/* - * Productions from §3 (Lexical Structure) - */ - -literal - : IntegerLiteral - | FloatingPointLiteral - | BooleanLiteral - | CharacterLiteral - | StringLiteral - | NullLiteral - ; - -/* - * Productions from §4 (Types, Values, and Variables) - */ - -primitiveType - : annotation* numericType - | annotation* 'boolean' - ; - -numericType - : integralType - | floatingPointType - ; - -integralType - : 'byte' - | 'short' - | 'int' - | 'long' - | 'char' - ; - -floatingPointType - : 'float' - | 'double' - ; - -referenceType - : classOrInterfaceType - | typeVariable - | arrayType - ; - -classOrInterfaceType - : ( classType_lfno_classOrInterfaceType - | interfaceType_lfno_classOrInterfaceType - ) - ( classType_lf_classOrInterfaceType - | interfaceType_lf_classOrInterfaceType - )* - ; - -classType - : annotation* Identifier typeArguments? - | classOrInterfaceType '.' annotation* Identifier typeArguments? - ; - -classType_lf_classOrInterfaceType - : '.' annotation* Identifier typeArguments? - ; - -classType_lfno_classOrInterfaceType - : annotation* Identifier typeArguments? - ; - -interfaceType - : classType - ; - -interfaceType_lf_classOrInterfaceType - : classType_lf_classOrInterfaceType - ; - -interfaceType_lfno_classOrInterfaceType - : classType_lfno_classOrInterfaceType - ; - -typeVariable - : annotation* Identifier - ; - -arrayType - : primitiveType dims - | classOrInterfaceType dims - | typeVariable dims - ; - -dims - : annotation* '[' ']' (annotation* '[' ']')* - ; - -typeParameter - : typeParameterModifier* Identifier typeBound? - ; - -typeParameterModifier - : annotation - ; - -typeBound - : 'extends' typeVariable - | 'extends' classOrInterfaceType additionalBound* - ; - -additionalBound - : '&' interfaceType - ; - -typeArguments - : '<' typeArgumentList '>' - ; - -typeArgumentList - : typeArgument (',' typeArgument)* - ; - -typeArgument - : referenceType - | wildcard - ; - -wildcard - : annotation* '?' wildcardBounds? - ; - -wildcardBounds - : 'extends' referenceType - | 'super' referenceType - ; - -/* - * Productions from §6 (Names) - */ - -packageName - : Identifier - | packageName '.' Identifier - ; - -typeName - : Identifier - | packageOrTypeName '.' Identifier - ; - -packageOrTypeName - : Identifier - | packageOrTypeName '.' Identifier - ; - -expressionName - : Identifier - | ambiguousName '.' Identifier - ; - -methodName - : Identifier - ; - -ambiguousName - : Identifier - | ambiguousName '.' Identifier - ; - -/* - * Productions from §7 (Packages) - */ - -compilationUnit - : packageDeclaration? importDeclaration* typeDeclaration* EOF - ; - -packageDeclaration - : packageModifier* 'package' packageName ';' - ; - -packageModifier - : annotation - ; - -importDeclaration - : singleTypeImportDeclaration - | typeImportOnDemandDeclaration - | singleStaticImportDeclaration - | staticImportOnDemandDeclaration - ; - -singleTypeImportDeclaration - : 'import' typeName ';' - ; - -typeImportOnDemandDeclaration - : 'import' packageOrTypeName '.' '*' ';' - ; - -singleStaticImportDeclaration - : 'import' 'static' typeName '.' Identifier ';' - ; - -staticImportOnDemandDeclaration - : 'import' 'static' typeName '.' '*' ';' - ; - -typeDeclaration - : classDeclaration - | interfaceDeclaration - | ';' - ; - -/* - * Productions from §8 (Classes) - */ - -classDeclaration - : normalClassDeclaration - | enumDeclaration - ; - -normalClassDeclaration - : classModifier* 'class' Identifier typeParameters? superclass? superinterfaces? classBody - ; - -classModifier - : annotation - | 'public' - | 'protected' - | 'private' - | 'abstract' - | 'static' - | 'final' - | 'strictfp' - ; - -typeParameters - : '<' typeParameterList '>' - ; - -typeParameterList - : typeParameter (',' typeParameter)* - ; - -superclass - : 'extends' classType - ; - -superinterfaces - : 'implements' interfaceTypeList - ; - -interfaceTypeList - : interfaceType (',' interfaceType)* - ; - -classBody - : '{' classBodyDeclaration* '}' - ; - -classBodyDeclaration - : classMemberDeclaration - | instanceInitializer - | staticInitializer - | constructorDeclaration - ; - -classMemberDeclaration - : fieldDeclaration - | methodDeclaration - | classDeclaration - | interfaceDeclaration - | ';' - ; - -fieldDeclaration - : fieldModifier* unannType variableDeclaratorList ';' - ; - -fieldModifier - : annotation - | 'public' - | 'protected' - | 'private' - | 'static' - | 'final' - | 'transient' - | 'volatile' - ; - -variableDeclaratorList - : variableDeclarator (',' variableDeclarator)* - ; - -variableDeclarator - : variableDeclaratorId ('=' variableInitializer)? - ; - -variableDeclaratorId - : Identifier dims? - ; - -variableInitializer - : expression - | arrayInitializer - ; - -unannType - : unannPrimitiveType - | unannReferenceType - ; - -unannPrimitiveType - : numericType - | 'boolean' - ; - -unannReferenceType - : unannClassOrInterfaceType - | unannTypeVariable - | unannArrayType - ; - -unannClassOrInterfaceType - : ( unannClassType_lfno_unannClassOrInterfaceType - | unannInterfaceType_lfno_unannClassOrInterfaceType - ) - ( unannClassType_lf_unannClassOrInterfaceType - | unannInterfaceType_lf_unannClassOrInterfaceType - )* - ; - -unannClassType - : Identifier typeArguments? - | unannClassOrInterfaceType '.' annotation* Identifier typeArguments? - ; - -unannClassType_lf_unannClassOrInterfaceType - : '.' annotation* Identifier typeArguments? - ; - -unannClassType_lfno_unannClassOrInterfaceType - : Identifier typeArguments? - ; - -unannInterfaceType - : unannClassType - ; - -unannInterfaceType_lf_unannClassOrInterfaceType - : unannClassType_lf_unannClassOrInterfaceType - ; - -unannInterfaceType_lfno_unannClassOrInterfaceType - : unannClassType_lfno_unannClassOrInterfaceType - ; - -unannTypeVariable - : Identifier - ; - -unannArrayType - : unannPrimitiveType dims - | unannClassOrInterfaceType dims - | unannTypeVariable dims - ; - -methodDeclaration - : methodModifier* methodHeader methodBody - ; - -methodModifier - : annotation - | 'public' - | 'protected' - | 'private' - | 'abstract' - | 'static' - | 'final' - | 'synchronized' - | 'native' - | 'strictfp' - ; - -methodHeader - : result methodDeclarator throws_? - | typeParameters annotation* result methodDeclarator throws_? - ; - -result - : unannType - | 'void' - ; - -methodDeclarator - : Identifier '(' formalParameterList? ')' dims? - ; - -formalParameterList - : receiverParameter - | formalParameters ',' lastFormalParameter - | lastFormalParameter - ; - -formalParameters - : formalParameter (',' formalParameter)* - | receiverParameter (',' formalParameter)* - ; - -formalParameter - : variableModifier* unannType variableDeclaratorId - ; - -variableModifier - : annotation - | 'final' - ; - -lastFormalParameter - : variableModifier* unannType annotation* '...' variableDeclaratorId - | formalParameter - ; - -receiverParameter - : annotation* unannType (Identifier '.')? 'this' - ; - -throws_ - : 'throws' exceptionTypeList - ; - -exceptionTypeList - : exceptionType (',' exceptionType)* - ; - -exceptionType - : classType - | typeVariable - ; - -methodBody - : block - | ';' - ; - -instanceInitializer - : block - ; - -staticInitializer - : 'static' block - ; - -constructorDeclaration - : constructorModifier* constructorDeclarator throws_? constructorBody - ; - -constructorModifier - : annotation - | 'public' - | 'protected' - | 'private' - ; - -constructorDeclarator - : typeParameters? simpleTypeName '(' formalParameterList? ')' - ; - -simpleTypeName - : Identifier - ; - -constructorBody - : '{' explicitConstructorInvocation? blockStatements? '}' - ; - -explicitConstructorInvocation - : typeArguments? 'this' '(' argumentList? ')' ';' - | typeArguments? 'super' '(' argumentList? ')' ';' - | expressionName '.' typeArguments? 'super' '(' argumentList? ')' ';' - | primary '.' typeArguments? 'super' '(' argumentList? ')' ';' - ; - -enumDeclaration - : classModifier* 'enum' Identifier superinterfaces? enumBody - ; - -enumBody - : '{' enumConstantList? ','? enumBodyDeclarations? '}' - ; - -enumConstantList - : enumConstant (',' enumConstant)* - ; - -enumConstant - : enumConstantModifier* Identifier ('(' argumentList? ')')? classBody? - ; - -enumConstantModifier - : annotation - ; - -enumBodyDeclarations - : ';' classBodyDeclaration* - ; - -/* - * Productions from §9 (Interfaces) - */ - -interfaceDeclaration - : normalInterfaceDeclaration - | annotationTypeDeclaration - ; - -normalInterfaceDeclaration - : interfaceModifier* 'interface' Identifier typeParameters? extendsInterfaces? interfaceBody - ; - -interfaceModifier - : annotation - | 'public' - | 'protected' - | 'private' - | 'abstract' - | 'static' - | 'strictfp' - ; - -extendsInterfaces - : 'extends' interfaceTypeList - ; - -interfaceBody - : '{' interfaceMemberDeclaration* '}' - ; - -interfaceMemberDeclaration - : constantDeclaration - | interfaceMethodDeclaration - | classDeclaration - | interfaceDeclaration - | ';' - ; - -constantDeclaration - : constantModifier* unannType variableDeclaratorList ';' - ; - -constantModifier - : annotation - | 'public' - | 'static' - | 'final' - ; - -interfaceMethodDeclaration - : interfaceMethodModifier* methodHeader methodBody - ; - -interfaceMethodModifier - : annotation - | 'public' - | 'abstract' - | 'default' - | 'static' - | 'strictfp' - ; - -annotationTypeDeclaration - : interfaceModifier* '@' 'interface' Identifier annotationTypeBody - ; - -annotationTypeBody - : '{' annotationTypeMemberDeclaration* '}' - ; - -annotationTypeMemberDeclaration - : annotationTypeElementDeclaration - | constantDeclaration - | classDeclaration - | interfaceDeclaration - | ';' - ; - -annotationTypeElementDeclaration - : annotationTypeElementModifier* unannType Identifier '(' ')' dims? defaultValue? ';' - ; - -annotationTypeElementModifier - : annotation - | 'public' - | 'abstract' - ; - -defaultValue - : 'default' elementValue - ; - -annotation - : normalAnnotation - | markerAnnotation - | singleElementAnnotation - ; - -normalAnnotation - : '@' typeName '(' elementValuePairList? ')' - ; - -elementValuePairList - : elementValuePair (',' elementValuePair)* - ; - -elementValuePair - : Identifier '=' elementValue - ; - -elementValue - : conditionalExpression - | elementValueArrayInitializer - | annotation - ; - -elementValueArrayInitializer - : '{' elementValueList? ','? '}' - ; - -elementValueList - : elementValue (',' elementValue)* - ; - -markerAnnotation - : '@' typeName - ; - -singleElementAnnotation - : '@' typeName '(' elementValue ')' - ; - -/* - * Productions from §10 (Arrays) - */ - -arrayInitializer - : '{' variableInitializerList? ','? '}' - ; - -variableInitializerList - : variableInitializer (',' variableInitializer)* - ; - -/* - * Productions from §14 (Blocks and Statements) - */ - -block - : '{' blockStatements? '}' - ; - -blockStatements - : blockStatement+ - ; - -blockStatement - : localVariableDeclarationStatement - | classDeclaration - | statement - ; - -localVariableDeclarationStatement - : localVariableDeclaration ';' - ; - -localVariableDeclaration - : variableModifier* unannType variableDeclaratorList - ; - -statement - : statementWithoutTrailingSubstatement - | labeledStatement - | ifThenStatement - | ifThenElseStatement - | whileStatement - | forStatement - ; - -statementNoShortIf - : statementWithoutTrailingSubstatement - | labeledStatementNoShortIf - | ifThenElseStatementNoShortIf - | whileStatementNoShortIf - | forStatementNoShortIf - ; - -statementWithoutTrailingSubstatement - : block - | emptyStatement - | expressionStatement - | assertStatement - | switchStatement - | doStatement - | breakStatement - | continueStatement - | returnStatement - | synchronizedStatement - | throwStatement - | tryStatement - ; - -emptyStatement - : ';' - ; - -labeledStatement - : Identifier ':' statement - ; - -labeledStatementNoShortIf - : Identifier ':' statementNoShortIf - ; - -expressionStatement - : statementExpression ';' - ; - -statementExpression - : assignment - | preIncrementExpression - | preDecrementExpression - | postIncrementExpression - | postDecrementExpression - | methodInvocation - | classInstanceCreationExpression - ; - -ifThenStatement - : 'if' '(' expression ')' statement - ; - -ifThenElseStatement - : 'if' '(' expression ')' statementNoShortIf 'else' statement - ; - -ifThenElseStatementNoShortIf - : 'if' '(' expression ')' statementNoShortIf 'else' statementNoShortIf - ; - -assertStatement - : 'assert' expression ';' - | 'assert' expression ':' expression ';' - ; - -switchStatement - : 'switch' '(' expression ')' switchBlock - ; - -switchBlock - : '{' switchBlockStatementGroup* switchLabel* '}' - ; - -switchBlockStatementGroup - : switchLabels blockStatements - ; - -switchLabels - : switchLabel switchLabel* - ; - -switchLabel - : 'case' constantExpression ':' - | 'case' enumConstantName ':' - | 'default' ':' - ; - -enumConstantName - : Identifier - ; - -whileStatement - : 'while' '(' expression ')' statement - ; - -whileStatementNoShortIf - : 'while' '(' expression ')' statementNoShortIf - ; - -doStatement - : 'do' statement 'while' '(' expression ')' ';' - ; - -forStatement - : basicForStatement - | enhancedForStatement - ; - -forStatementNoShortIf - : basicForStatementNoShortIf - | enhancedForStatementNoShortIf - ; - -basicForStatement - : 'for' '(' forInit? ';' expression? ';' forUpdate? ')' statement - ; - -basicForStatementNoShortIf - : 'for' '(' forInit? ';' expression? ';' forUpdate? ')' statementNoShortIf - ; - -forInit - : statementExpressionList - | localVariableDeclaration - ; - -forUpdate - : statementExpressionList - ; - -statementExpressionList - : statementExpression (',' statementExpression)* - ; - -enhancedForStatement - : 'for' '(' variableModifier* unannType variableDeclaratorId ':' expression ')' statement - ; - -enhancedForStatementNoShortIf - : 'for' '(' variableModifier* unannType variableDeclaratorId ':' expression ')' statementNoShortIf - ; - -breakStatement - : 'break' Identifier? ';' - ; - -continueStatement - : 'continue' Identifier? ';' - ; - -returnStatement - : 'return' expression? ';' - ; - -throwStatement - : 'throw' expression ';' - ; - -synchronizedStatement - : 'synchronized' '(' expression ')' block - ; - -tryStatement - : 'try' block catches - | 'try' block catches? finally_ - | tryWithResourcesStatement - ; - -catches - : catchClause catchClause* - ; - -catchClause - : 'catch' '(' catchFormalParameter ')' block - ; - -catchFormalParameter - : variableModifier* catchType variableDeclaratorId - ; - -catchType - : unannClassType ('|' classType)* - ; - -finally_ - : 'finally' block - ; - -tryWithResourcesStatement - : 'try' resourceSpecification block catches? finally_? - ; - -resourceSpecification - : '(' resourceList ';'? ')' - ; - -resourceList - : resource (';' resource)* - ; - -resource - : variableModifier* unannType variableDeclaratorId '=' expression - ; - -/* - * Productions from §15 (Expressions) - */ - -primary - : ( primaryNoNewArray_lfno_primary - | arrayCreationExpression - ) - ( primaryNoNewArray_lf_primary - )* - ; - -primaryNoNewArray - : literal - | typeName ('[' ']')* '.' 'class' - | 'void' '.' 'class' - | 'this' - | typeName '.' 'this' - | '(' expression ')' - | classInstanceCreationExpression - | fieldAccess - | arrayAccess - | methodInvocation - | methodReference - ; - -primaryNoNewArray_lf_arrayAccess - : - ; - -primaryNoNewArray_lfno_arrayAccess - : literal - | typeName ('[' ']')* '.' 'class' - | 'void' '.' 'class' - | 'this' - | typeName '.' 'this' - | '(' expression ')' - | classInstanceCreationExpression - | fieldAccess - | methodInvocation - | methodReference - ; - -primaryNoNewArray_lf_primary - : classInstanceCreationExpression_lf_primary - | fieldAccess_lf_primary - | arrayAccess_lf_primary - | methodInvocation_lf_primary - | methodReference_lf_primary - ; - -primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary - : - ; - -primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary - : classInstanceCreationExpression_lf_primary - | fieldAccess_lf_primary - | methodInvocation_lf_primary - | methodReference_lf_primary - ; - -primaryNoNewArray_lfno_primary - : literal - | typeName ('[' ']')* '.' 'class' - | unannPrimitiveType ('[' ']')* '.' 'class' - | 'void' '.' 'class' - | 'this' - | typeName '.' 'this' - | '(' expression ')' - | classInstanceCreationExpression_lfno_primary - | fieldAccess_lfno_primary - | arrayAccess_lfno_primary - | methodInvocation_lfno_primary - | methodReference_lfno_primary - ; - -primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary - : - ; - -primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary - : literal - | typeName ('[' ']')* '.' 'class' - | unannPrimitiveType ('[' ']')* '.' 'class' - | 'void' '.' 'class' - | 'this' - | typeName '.' 'this' - | '(' expression ')' - | classInstanceCreationExpression_lfno_primary - | fieldAccess_lfno_primary - | methodInvocation_lfno_primary - | methodReference_lfno_primary - ; - -classInstanceCreationExpression - : 'new' typeArguments? annotation* Identifier ('.' annotation* Identifier)* typeArgumentsOrDiamond? '(' argumentList? ')' classBody? - | expressionName '.' 'new' typeArguments? annotation* Identifier typeArgumentsOrDiamond? '(' argumentList? ')' classBody? - | primary '.' 'new' typeArguments? annotation* Identifier typeArgumentsOrDiamond? '(' argumentList? ')' classBody? - ; - -classInstanceCreationExpression_lf_primary - : '.' 'new' typeArguments? annotation* Identifier typeArgumentsOrDiamond? '(' argumentList? ')' classBody? - ; - -classInstanceCreationExpression_lfno_primary - : 'new' typeArguments? annotation* Identifier ('.' annotation* Identifier)* typeArgumentsOrDiamond? '(' argumentList? ')' classBody? - | expressionName '.' 'new' typeArguments? annotation* Identifier typeArgumentsOrDiamond? '(' argumentList? ')' classBody? - ; - -typeArgumentsOrDiamond - : typeArguments - | '<' '>' - ; - -fieldAccess - : primary '.' Identifier - | 'super' '.' Identifier - | typeName '.' 'super' '.' Identifier - ; - -fieldAccess_lf_primary - : '.' Identifier - ; - -fieldAccess_lfno_primary - : 'super' '.' Identifier - | typeName '.' 'super' '.' Identifier - ; - -arrayAccess - : ( expressionName '[' expression ']' - | primaryNoNewArray_lfno_arrayAccess '[' expression ']' - ) - ( primaryNoNewArray_lf_arrayAccess '[' expression ']' - )* - ; - -arrayAccess_lf_primary - : ( primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary '[' expression ']' - ) - ( primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary '[' expression ']' - )* - ; - -arrayAccess_lfno_primary - : ( expressionName '[' expression ']' - | primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary '[' expression ']' - ) - ( primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary '[' expression ']' - )* - ; - -methodInvocation - : methodName '(' argumentList? ')' - | typeName '.' typeArguments? Identifier '(' argumentList? ')' - | expressionName '.' typeArguments? Identifier '(' argumentList? ')' - | primary '.' typeArguments? Identifier '(' argumentList? ')' - | 'super' '.' typeArguments? Identifier '(' argumentList? ')' - | typeName '.' 'super' '.' typeArguments? Identifier '(' argumentList? ')' - ; - -methodInvocation_lf_primary - : '.' typeArguments? Identifier '(' argumentList? ')' - ; - -methodInvocation_lfno_primary - : methodName '(' argumentList? ')' - | typeName '.' typeArguments? Identifier '(' argumentList? ')' - | expressionName '.' typeArguments? Identifier '(' argumentList? ')' - | 'super' '.' typeArguments? Identifier '(' argumentList? ')' - | typeName '.' 'super' '.' typeArguments? Identifier '(' argumentList? ')' - ; - -argumentList - : expression (',' expression)* - ; - -methodReference - : expressionName '::' typeArguments? Identifier - | referenceType '::' typeArguments? Identifier - | primary '::' typeArguments? Identifier - | 'super' '::' typeArguments? Identifier - | typeName '.' 'super' '::' typeArguments? Identifier - | classType '::' typeArguments? 'new' - | arrayType '::' 'new' - ; - -methodReference_lf_primary - : '::' typeArguments? Identifier - ; - -methodReference_lfno_primary - : expressionName '::' typeArguments? Identifier - | referenceType '::' typeArguments? Identifier - | 'super' '::' typeArguments? Identifier - | typeName '.' 'super' '::' typeArguments? Identifier - | classType '::' typeArguments? 'new' - | arrayType '::' 'new' - ; - -arrayCreationExpression - : 'new' primitiveType dimExprs dims? - | 'new' classOrInterfaceType dimExprs dims? - | 'new' primitiveType dims arrayInitializer - | 'new' classOrInterfaceType dims arrayInitializer - ; - -dimExprs - : dimExpr dimExpr* - ; - -dimExpr - : annotation* '[' expression ']' - ; - -constantExpression - : expression - ; - -expression - : lambdaExpression - | assignmentExpression - ; - -lambdaExpression - : lambdaParameters '->' lambdaBody - ; - -lambdaParameters - : Identifier - | '(' formalParameterList? ')' - | '(' inferredFormalParameterList ')' - ; - -inferredFormalParameterList - : Identifier (',' Identifier)* - ; - -lambdaBody - : expression - | block - ; - -assignmentExpression - : conditionalExpression - | assignment - ; - -assignment - : leftHandSide assignmentOperator expression - ; - -leftHandSide - : expressionName - | fieldAccess - | arrayAccess - ; - -assignmentOperator - : '=' - | '*=' - | '/=' - | '%=' - | '+=' - | '-=' - | '<<=' - | '>>=' - | '>>>=' - | '&=' - | '^=' - | '|=' - ; - -conditionalExpression - : conditionalOrExpression - | conditionalOrExpression '?' expression ':' conditionalExpression - ; - -conditionalOrExpression - : conditionalAndExpression - | conditionalOrExpression '||' conditionalAndExpression - ; - -conditionalAndExpression - : inclusiveOrExpression - | conditionalAndExpression '&&' inclusiveOrExpression - ; - -inclusiveOrExpression - : exclusiveOrExpression - | inclusiveOrExpression '|' exclusiveOrExpression - ; - -exclusiveOrExpression - : andExpression - | exclusiveOrExpression '^' andExpression - ; - -andExpression - : equalityExpression - | andExpression '&' equalityExpression - ; - -equalityExpression - : relationalExpression - | equalityExpression '==' relationalExpression - | equalityExpression '!=' relationalExpression - ; - -relationalExpression - : shiftExpression - | relationalExpression '<' shiftExpression - | relationalExpression '>' shiftExpression - | relationalExpression '<=' shiftExpression - | relationalExpression '>=' shiftExpression - | relationalExpression 'instanceof' referenceType - ; - -shiftExpression - : additiveExpression - | shiftExpression '<' '<' additiveExpression - | shiftExpression '>' '>' additiveExpression - | shiftExpression '>' '>' '>' additiveExpression - ; - -additiveExpression - : multiplicativeExpression - | additiveExpression '+' multiplicativeExpression - | additiveExpression '-' multiplicativeExpression - ; - -multiplicativeExpression - : unaryExpression - | multiplicativeExpression '*' unaryExpression - | multiplicativeExpression '/' unaryExpression - | multiplicativeExpression '%' unaryExpression - ; - -unaryExpression - : preIncrementExpression - | preDecrementExpression - | '+' unaryExpression - | '-' unaryExpression - | unaryExpressionNotPlusMinus - ; - -preIncrementExpression - : '++' unaryExpression - ; - -preDecrementExpression - : '--' unaryExpression - ; - -unaryExpressionNotPlusMinus - : postfixExpression - | '~' unaryExpression - | '!' unaryExpression - | castExpression - ; - -postfixExpression - : ( primary - | expressionName - ) - ( postIncrementExpression_lf_postfixExpression - | postDecrementExpression_lf_postfixExpression - )* - ; - -postIncrementExpression - : postfixExpression '++' - ; - -postIncrementExpression_lf_postfixExpression - : '++' - ; - -postDecrementExpression - : postfixExpression '--' - ; - -postDecrementExpression_lf_postfixExpression - : '--' - ; - -castExpression - : '(' primitiveType ')' unaryExpression - | '(' referenceType additionalBound* ')' unaryExpressionNotPlusMinus - | '(' referenceType additionalBound* ')' lambdaExpression - ; - -// LEXER - -// §3.9 Keywords - -ABSTRACT : 'abstract'; -ASSERT : 'assert'; -BOOLEAN : 'boolean'; -BREAK : 'break'; -BYTE : 'byte'; -CASE : 'case'; -CATCH : 'catch'; -CHAR : 'char'; -CLASS : 'class'; -CONST : 'const'; -CONTINUE : 'continue'; -DEFAULT : 'default'; -DO : 'do'; -DOUBLE : 'double'; -ELSE : 'else'; -ENUM : 'enum'; -EXTENDS : 'extends'; -FINAL : 'final'; -FINALLY : 'finally'; -FLOAT : 'float'; -FOR : 'for'; -IF : 'if'; -GOTO : 'goto'; -IMPLEMENTS : 'implements'; -IMPORT : 'import'; -INSTANCEOF : 'instanceof'; -INT : 'int'; -INTERFACE : 'interface'; -LONG : 'long'; -NATIVE : 'native'; -NEW : 'new'; -PACKAGE : 'package'; -PRIVATE : 'private'; -PROTECTED : 'protected'; -PUBLIC : 'public'; -RETURN : 'return'; -SHORT : 'short'; -STATIC : 'static'; -STRICTFP : 'strictfp'; -SUPER : 'super'; -SWITCH : 'switch'; -SYNCHRONIZED : 'synchronized'; -THIS : 'this'; -THROW : 'throw'; -THROWS : 'throws'; -TRANSIENT : 'transient'; -TRY : 'try'; -VOID : 'void'; -VOLATILE : 'volatile'; -WHILE : 'while'; - -// §3.10.1 Integer Literals - -IntegerLiteral - : DecimalIntegerLiteral - | HexIntegerLiteral - | OctalIntegerLiteral - | BinaryIntegerLiteral - ; - -fragment -DecimalIntegerLiteral - : DecimalNumeral IntegerTypeSuffix? - ; - -fragment -HexIntegerLiteral - : HexNumeral IntegerTypeSuffix? - ; - -fragment -OctalIntegerLiteral - : OctalNumeral IntegerTypeSuffix? - ; - -fragment -BinaryIntegerLiteral - : BinaryNumeral IntegerTypeSuffix? - ; - -fragment -IntegerTypeSuffix - : [lL] - ; - -fragment -DecimalNumeral - : '0' - | NonZeroDigit (Digits? | Underscores Digits) - ; - -fragment -Digits - : Digit (DigitsAndUnderscores? Digit)? - ; - -fragment -Digit - : '0' - | NonZeroDigit - ; - -fragment -NonZeroDigit - : [1-9] - ; - -fragment -DigitsAndUnderscores - : DigitOrUnderscore+ - ; - -fragment -DigitOrUnderscore - : Digit - | '_' - ; - -fragment -Underscores - : '_'+ - ; - -fragment -HexNumeral - : '0' [xX] HexDigits - ; - -fragment -HexDigits - : HexDigit (HexDigitsAndUnderscores? HexDigit)? - ; - -fragment -HexDigit - : [0-9a-fA-F] - ; - -fragment -HexDigitsAndUnderscores - : HexDigitOrUnderscore+ - ; - -fragment -HexDigitOrUnderscore - : HexDigit - | '_' - ; - -fragment -OctalNumeral - : '0' Underscores? OctalDigits - ; - -fragment -OctalDigits - : OctalDigit (OctalDigitsAndUnderscores? OctalDigit)? - ; - -fragment -OctalDigit - : [0-7] - ; - -fragment -OctalDigitsAndUnderscores - : OctalDigitOrUnderscore+ - ; - -fragment -OctalDigitOrUnderscore - : OctalDigit - | '_' - ; - -fragment -BinaryNumeral - : '0' [bB] BinaryDigits - ; - -fragment -BinaryDigits - : BinaryDigit (BinaryDigitsAndUnderscores? BinaryDigit)? - ; - -fragment -BinaryDigit - : [01] - ; - -fragment -BinaryDigitsAndUnderscores - : BinaryDigitOrUnderscore+ - ; - -fragment -BinaryDigitOrUnderscore - : BinaryDigit - | '_' - ; - -// §3.10.2 Floating-Point Literals - -FloatingPointLiteral - : DecimalFloatingPointLiteral - | HexadecimalFloatingPointLiteral - ; - -fragment -DecimalFloatingPointLiteral - : Digits '.' Digits? ExponentPart? FloatTypeSuffix? - | '.' Digits ExponentPart? FloatTypeSuffix? - | Digits ExponentPart FloatTypeSuffix? - | Digits FloatTypeSuffix - ; - -fragment -ExponentPart - : ExponentIndicator SignedInteger - ; - -fragment -ExponentIndicator - : [eE] - ; - -fragment -SignedInteger - : Sign? Digits - ; - -fragment -Sign - : [+-] - ; - -fragment -FloatTypeSuffix - : [fFdD] - ; - -fragment -HexadecimalFloatingPointLiteral - : HexSignificand BinaryExponent FloatTypeSuffix? - ; - -fragment -HexSignificand - : HexNumeral '.'? - | '0' [xX] HexDigits? '.' HexDigits - ; - -fragment -BinaryExponent - : BinaryExponentIndicator SignedInteger - ; - -fragment -BinaryExponentIndicator - : [pP] - ; - -// §3.10.3 Boolean Literals - -BooleanLiteral - : 'true' - | 'false' - ; - -// §3.10.4 Character Literals - -CharacterLiteral - : '\'' SingleCharacter '\'' - | '\'' EscapeSequence '\'' - ; - -fragment -SingleCharacter - : ~['\\\r\n] - ; - -// §3.10.5 String Literals - -StringLiteral - : '"' StringCharacters? '"' - ; - -fragment -StringCharacters - : StringCharacter+ - ; - -fragment -StringCharacter - : ~["\\\r\n] - | EscapeSequence - ; - -// §3.10.6 Escape Sequences for Character and String Literals - -fragment -EscapeSequence - : '\\' [btnfr"'\\] - | OctalEscape - | UnicodeEscape // This is not in the spec but prevents having to preprocess the input - ; - -fragment -OctalEscape - : '\\' OctalDigit - | '\\' OctalDigit OctalDigit - | '\\' ZeroToThree OctalDigit OctalDigit - ; - -fragment -ZeroToThree - : [0-3] - ; - -// This is not in the spec but prevents having to preprocess the input -fragment -UnicodeEscape - : '\\' 'u'+ HexDigit HexDigit HexDigit HexDigit - ; - -// §3.10.7 The Null Literal - -NullLiteral - : 'null' - ; - -// §3.11 Separators - -LPAREN : '('; -RPAREN : ')'; -LBRACE : '{'; -RBRACE : '}'; -LBRACK : '['; -RBRACK : ']'; -SEMI : ';'; -COMMA : ','; -DOT : '.'; - -// §3.12 Operators - -ASSIGN : '='; -GT : '>'; -LT : '<'; -BANG : '!'; -TILDE : '~'; -QUESTION : '?'; -COLON : ':'; -EQUAL : '=='; -LE : '<='; -GE : '>='; -NOTEQUAL : '!='; -AND : '&&'; -OR : '||'; -INC : '++'; -DEC : '--'; -ADD : '+'; -SUB : '-'; -MUL : '*'; -DIV : '/'; -BITAND : '&'; -BITOR : '|'; -CARET : '^'; -MOD : '%'; -ARROW : '->'; -COLONCOLON : '::'; - -ADD_ASSIGN : '+='; -SUB_ASSIGN : '-='; -MUL_ASSIGN : '*='; -DIV_ASSIGN : '/='; -AND_ASSIGN : '&='; -OR_ASSIGN : '|='; -XOR_ASSIGN : '^='; -MOD_ASSIGN : '%='; -LSHIFT_ASSIGN : '<<='; -RSHIFT_ASSIGN : '>>='; -URSHIFT_ASSIGN : '>>>='; - -// §3.8 Identifiers (must appear after all keywords in the grammar) - -Identifier - : JavaLetter JavaLetterOrDigit* - ; - -fragment -JavaLetter - : [a-zA-Z$_] // these are the "java letters" below 0x7F - | // covers all characters above 0x7F which are not a surrogate - ~[\u0000-\u007F\uD800-\uDBFF] - | // covers UTF-16 surrogate pairs encodings for U+10000 to U+10FFFF - [\uD800-\uDBFF] [\uDC00-\uDFFF] - ; - -fragment -JavaLetterOrDigit - : [a-zA-Z0-9$_] // these are the "java letters or digits" below 0x7F - | // covers all characters above 0x7F which are not a surrogate - ~[\u0000-\u007F\uD800-\uDBFF] - | // covers UTF-16 surrogate pairs encodings for U+10000 to U+10FFFF - [\uD800-\uDBFF] [\uDC00-\uDFFF] - ; - -// -// Additional symbols not defined in the lexical specification -// - -AT : '@'; -ELLIPSIS : '...'; - -// -// Whitespace and comments -// - -WS : [ \t\r\n\u000C]+ -> skip - ; - -COMMENT - : '/*' .*? '*/' -> skip - ; - -LINE_COMMENT - : '//' ~[\r\n]* -> skip - ; diff --git a/persper/analytics/call_graph/java/Java8.interp b/persper/analytics/call_graph/java/Java8.interp deleted file mode 100644 index c90e5372c9b..00000000000 --- a/persper/analytics/call_graph/java/Java8.interp +++ /dev/null @@ -1,461 +0,0 @@ -token literal names: -null -'abstract' -'assert' -'boolean' -'break' -'byte' -'case' -'catch' -'char' -'class' -'const' -'continue' -'default' -'do' -'double' -'else' -'enum' -'extends' -'final' -'finally' -'float' -'for' -'if' -'goto' -'implements' -'import' -'instanceof' -'int' -'interface' -'long' -'native' -'new' -'package' -'private' -'protected' -'public' -'return' -'short' -'static' -'strictfp' -'super' -'switch' -'synchronized' -'this' -'throw' -'throws' -'transient' -'try' -'void' -'volatile' -'while' -null -null -null -null -null -'null' -'(' -')' -'{' -'}' -'[' -']' -';' -',' -'.' -'=' -'>' -'<' -'!' -'~' -'?' -':' -'==' -'<=' -'>=' -'!=' -'&&' -'||' -'++' -'--' -'+' -'-' -'*' -'/' -'&' -'|' -'^' -'%' -'->' -'::' -'+=' -'-=' -'*=' -'/=' -'&=' -'|=' -'^=' -'%=' -'<<=' -'>>=' -'>>>=' -null -'@' -'...' -null -null -null - -token symbolic names: -null -ABSTRACT -ASSERT -BOOLEAN -BREAK -BYTE -CASE -CATCH -CHAR -CLASS -CONST -CONTINUE -DEFAULT -DO -DOUBLE -ELSE -ENUM -EXTENDS -FINAL -FINALLY -FLOAT -FOR -IF -GOTO -IMPLEMENTS -IMPORT -INSTANCEOF -INT -INTERFACE -LONG -NATIVE -NEW -PACKAGE -PRIVATE -PROTECTED -PUBLIC -RETURN -SHORT -STATIC -STRICTFP -SUPER -SWITCH -SYNCHRONIZED -THIS -THROW -THROWS -TRANSIENT -TRY -VOID -VOLATILE -WHILE -IntegerLiteral -FloatingPointLiteral -BooleanLiteral -CharacterLiteral -StringLiteral -NullLiteral -LPAREN -RPAREN -LBRACE -RBRACE -LBRACK -RBRACK -SEMI -COMMA -DOT -ASSIGN -GT -LT -BANG -TILDE -QUESTION -COLON -EQUAL -LE -GE -NOTEQUAL -AND -OR -INC -DEC -ADD -SUB -MUL -DIV -BITAND -BITOR -CARET -MOD -ARROW -COLONCOLON -ADD_ASSIGN -SUB_ASSIGN -MUL_ASSIGN -DIV_ASSIGN -AND_ASSIGN -OR_ASSIGN -XOR_ASSIGN -MOD_ASSIGN -LSHIFT_ASSIGN -RSHIFT_ASSIGN -URSHIFT_ASSIGN -Identifier -AT -ELLIPSIS -WS -COMMENT -LINE_COMMENT - -rule names: -literal -primitiveType -numericType -integralType -floatingPointType -referenceType -classOrInterfaceType -classType -classType_lf_classOrInterfaceType -classType_lfno_classOrInterfaceType -interfaceType -interfaceType_lf_classOrInterfaceType -interfaceType_lfno_classOrInterfaceType -typeVariable -arrayType -dims -typeParameter -typeParameterModifier -typeBound -additionalBound -typeArguments -typeArgumentList -typeArgument -wildcard -wildcardBounds -packageName -typeName -packageOrTypeName -expressionName -methodName -ambiguousName -compilationUnit -packageDeclaration -packageModifier -importDeclaration -singleTypeImportDeclaration -typeImportOnDemandDeclaration -singleStaticImportDeclaration -staticImportOnDemandDeclaration -typeDeclaration -classDeclaration -normalClassDeclaration -classModifier -typeParameters -typeParameterList -superclass -superinterfaces -interfaceTypeList -classBody -classBodyDeclaration -classMemberDeclaration -fieldDeclaration -fieldModifier -variableDeclaratorList -variableDeclarator -variableDeclaratorId -variableInitializer -unannType -unannPrimitiveType -unannReferenceType -unannClassOrInterfaceType -unannClassType -unannClassType_lf_unannClassOrInterfaceType -unannClassType_lfno_unannClassOrInterfaceType -unannInterfaceType -unannInterfaceType_lf_unannClassOrInterfaceType -unannInterfaceType_lfno_unannClassOrInterfaceType -unannTypeVariable -unannArrayType -methodDeclaration -methodModifier -methodHeader -result -methodDeclarator -formalParameterList -formalParameters -formalParameter -variableModifier -lastFormalParameter -receiverParameter -throws_ -exceptionTypeList -exceptionType -methodBody -instanceInitializer -staticInitializer -constructorDeclaration -constructorModifier -constructorDeclarator -simpleTypeName -constructorBody -explicitConstructorInvocation -enumDeclaration -enumBody -enumConstantList -enumConstant -enumConstantModifier -enumBodyDeclarations -interfaceDeclaration -normalInterfaceDeclaration -interfaceModifier -extendsInterfaces -interfaceBody -interfaceMemberDeclaration -constantDeclaration -constantModifier -interfaceMethodDeclaration -interfaceMethodModifier -annotationTypeDeclaration -annotationTypeBody -annotationTypeMemberDeclaration -annotationTypeElementDeclaration -annotationTypeElementModifier -defaultValue -annotation -normalAnnotation -elementValuePairList -elementValuePair -elementValue -elementValueArrayInitializer -elementValueList -markerAnnotation -singleElementAnnotation -arrayInitializer -variableInitializerList -block -blockStatements -blockStatement -localVariableDeclarationStatement -localVariableDeclaration -statement -statementNoShortIf -statementWithoutTrailingSubstatement -emptyStatement -labeledStatement -labeledStatementNoShortIf -expressionStatement -statementExpression -ifThenStatement -ifThenElseStatement -ifThenElseStatementNoShortIf -assertStatement -switchStatement -switchBlock -switchBlockStatementGroup -switchLabels -switchLabel -enumConstantName -whileStatement -whileStatementNoShortIf -doStatement -forStatement -forStatementNoShortIf -basicForStatement -basicForStatementNoShortIf -forInit -forUpdate -statementExpressionList -enhancedForStatement -enhancedForStatementNoShortIf -breakStatement -continueStatement -returnStatement -throwStatement -synchronizedStatement -tryStatement -catches -catchClause -catchFormalParameter -catchType -finally_ -tryWithResourcesStatement -resourceSpecification -resourceList -resource -primary -primaryNoNewArray -primaryNoNewArray_lf_arrayAccess -primaryNoNewArray_lfno_arrayAccess -primaryNoNewArray_lf_primary -primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary -primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary -primaryNoNewArray_lfno_primary -primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary -primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary -classInstanceCreationExpression -classInstanceCreationExpression_lf_primary -classInstanceCreationExpression_lfno_primary -typeArgumentsOrDiamond -fieldAccess -fieldAccess_lf_primary -fieldAccess_lfno_primary -arrayAccess -arrayAccess_lf_primary -arrayAccess_lfno_primary -methodInvocation -methodInvocation_lf_primary -methodInvocation_lfno_primary -argumentList -methodReference -methodReference_lf_primary -methodReference_lfno_primary -arrayCreationExpression -dimExprs -dimExpr -constantExpression -expression -lambdaExpression -lambdaParameters -inferredFormalParameterList -lambdaBody -assignmentExpression -assignment -leftHandSide -assignmentOperator -conditionalExpression -conditionalOrExpression -conditionalAndExpression -inclusiveOrExpression -exclusiveOrExpression -andExpression -equalityExpression -relationalExpression -shiftExpression -additiveExpression -multiplicativeExpression -unaryExpression -preIncrementExpression -preDecrementExpression -unaryExpressionNotPlusMinus -postfixExpression -postIncrementExpression -postIncrementExpression_lf_postfixExpression -postDecrementExpression -postDecrementExpression_lf_postfixExpression -castExpression - - -atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 109, 2846, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106, 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, 4, 111, 9, 111, 4, 112, 9, 112, 4, 113, 9, 113, 4, 114, 9, 114, 4, 115, 9, 115, 4, 116, 9, 116, 4, 117, 9, 117, 4, 118, 9, 118, 4, 119, 9, 119, 4, 120, 9, 120, 4, 121, 9, 121, 4, 122, 9, 122, 4, 123, 9, 123, 4, 124, 9, 124, 4, 125, 9, 125, 4, 126, 9, 126, 4, 127, 9, 127, 4, 128, 9, 128, 4, 129, 9, 129, 4, 130, 9, 130, 4, 131, 9, 131, 4, 132, 9, 132, 4, 133, 9, 133, 4, 134, 9, 134, 4, 135, 9, 135, 4, 136, 9, 136, 4, 137, 9, 137, 4, 138, 9, 138, 4, 139, 9, 139, 4, 140, 9, 140, 4, 141, 9, 141, 4, 142, 9, 142, 4, 143, 9, 143, 4, 144, 9, 144, 4, 145, 9, 145, 4, 146, 9, 146, 4, 147, 9, 147, 4, 148, 9, 148, 4, 149, 9, 149, 4, 150, 9, 150, 4, 151, 9, 151, 4, 152, 9, 152, 4, 153, 9, 153, 4, 154, 9, 154, 4, 155, 9, 155, 4, 156, 9, 156, 4, 157, 9, 157, 4, 158, 9, 158, 4, 159, 9, 159, 4, 160, 9, 160, 4, 161, 9, 161, 4, 162, 9, 162, 4, 163, 9, 163, 4, 164, 9, 164, 4, 165, 9, 165, 4, 166, 9, 166, 4, 167, 9, 167, 4, 168, 9, 168, 4, 169, 9, 169, 4, 170, 9, 170, 4, 171, 9, 171, 4, 172, 9, 172, 4, 173, 9, 173, 4, 174, 9, 174, 4, 175, 9, 175, 4, 176, 9, 176, 4, 177, 9, 177, 4, 178, 9, 178, 4, 179, 9, 179, 4, 180, 9, 180, 4, 181, 9, 181, 4, 182, 9, 182, 4, 183, 9, 183, 4, 184, 9, 184, 4, 185, 9, 185, 4, 186, 9, 186, 4, 187, 9, 187, 4, 188, 9, 188, 4, 189, 9, 189, 4, 190, 9, 190, 4, 191, 9, 191, 4, 192, 9, 192, 4, 193, 9, 193, 4, 194, 9, 194, 4, 195, 9, 195, 4, 196, 9, 196, 4, 197, 9, 197, 4, 198, 9, 198, 4, 199, 9, 199, 4, 200, 9, 200, 4, 201, 9, 201, 4, 202, 9, 202, 4, 203, 9, 203, 4, 204, 9, 204, 4, 205, 9, 205, 4, 206, 9, 206, 4, 207, 9, 207, 4, 208, 9, 208, 4, 209, 9, 209, 4, 210, 9, 210, 4, 211, 9, 211, 4, 212, 9, 212, 4, 213, 9, 213, 4, 214, 9, 214, 4, 215, 9, 215, 4, 216, 9, 216, 4, 217, 9, 217, 4, 218, 9, 218, 4, 219, 9, 219, 4, 220, 9, 220, 4, 221, 9, 221, 4, 222, 9, 222, 4, 223, 9, 223, 4, 224, 9, 224, 4, 225, 9, 225, 4, 226, 9, 226, 4, 227, 9, 227, 4, 228, 9, 228, 4, 229, 9, 229, 4, 230, 9, 230, 4, 231, 9, 231, 4, 232, 9, 232, 4, 233, 9, 233, 4, 234, 9, 234, 4, 235, 9, 235, 4, 236, 9, 236, 4, 237, 9, 237, 3, 2, 3, 2, 3, 3, 7, 3, 478, 10, 3, 12, 3, 14, 3, 481, 11, 3, 3, 3, 3, 3, 7, 3, 485, 10, 3, 12, 3, 14, 3, 488, 11, 3, 3, 3, 5, 3, 491, 10, 3, 3, 4, 3, 4, 5, 4, 495, 10, 4, 3, 5, 3, 5, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 5, 7, 504, 10, 7, 3, 8, 3, 8, 5, 8, 508, 10, 8, 3, 8, 3, 8, 7, 8, 512, 10, 8, 12, 8, 14, 8, 515, 11, 8, 3, 9, 7, 9, 518, 10, 9, 12, 9, 14, 9, 521, 11, 9, 3, 9, 3, 9, 5, 9, 525, 10, 9, 3, 9, 3, 9, 3, 9, 7, 9, 530, 10, 9, 12, 9, 14, 9, 533, 11, 9, 3, 9, 3, 9, 5, 9, 537, 10, 9, 5, 9, 539, 10, 9, 3, 10, 3, 10, 7, 10, 543, 10, 10, 12, 10, 14, 10, 546, 11, 10, 3, 10, 3, 10, 5, 10, 550, 10, 10, 3, 11, 7, 11, 553, 10, 11, 12, 11, 14, 11, 556, 11, 11, 3, 11, 3, 11, 5, 11, 560, 10, 11, 3, 12, 3, 12, 3, 13, 3, 13, 3, 14, 3, 14, 3, 15, 7, 15, 569, 10, 15, 12, 15, 14, 15, 572, 11, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 5, 16, 585, 10, 16, 3, 17, 7, 17, 588, 10, 17, 12, 17, 14, 17, 591, 11, 17, 3, 17, 3, 17, 3, 17, 7, 17, 596, 10, 17, 12, 17, 14, 17, 599, 11, 17, 3, 17, 3, 17, 7, 17, 603, 10, 17, 12, 17, 14, 17, 606, 11, 17, 3, 18, 7, 18, 609, 10, 18, 12, 18, 14, 18, 612, 11, 18, 3, 18, 3, 18, 5, 18, 616, 10, 18, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 7, 20, 625, 10, 20, 12, 20, 14, 20, 628, 11, 20, 5, 20, 630, 10, 20, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 7, 23, 642, 10, 23, 12, 23, 14, 23, 645, 11, 23, 3, 24, 3, 24, 5, 24, 649, 10, 24, 3, 25, 7, 25, 652, 10, 25, 12, 25, 14, 25, 655, 11, 25, 3, 25, 3, 25, 5, 25, 659, 10, 25, 3, 26, 3, 26, 3, 26, 3, 26, 5, 26, 665, 10, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 7, 27, 673, 10, 27, 12, 27, 14, 27, 676, 11, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 5, 28, 683, 10, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 7, 29, 691, 10, 29, 12, 29, 14, 29, 694, 11, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 701, 10, 30, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 7, 32, 711, 10, 32, 12, 32, 14, 32, 714, 11, 32, 3, 33, 5, 33, 717, 10, 33, 3, 33, 7, 33, 720, 10, 33, 12, 33, 14, 33, 723, 11, 33, 3, 33, 7, 33, 726, 10, 33, 12, 33, 14, 33, 729, 11, 33, 3, 33, 3, 33, 3, 34, 7, 34, 734, 10, 34, 12, 34, 14, 34, 737, 11, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 36, 5, 36, 749, 10, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 5, 41, 778, 10, 41, 3, 42, 3, 42, 5, 42, 782, 10, 42, 3, 43, 7, 43, 785, 10, 43, 12, 43, 14, 43, 788, 11, 43, 3, 43, 3, 43, 3, 43, 5, 43, 793, 10, 43, 3, 43, 5, 43, 796, 10, 43, 3, 43, 5, 43, 799, 10, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 5, 44, 811, 10, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 7, 46, 820, 10, 46, 12, 46, 14, 46, 823, 11, 46, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 7, 49, 834, 10, 49, 12, 49, 14, 49, 837, 11, 49, 3, 50, 3, 50, 7, 50, 841, 10, 50, 12, 50, 14, 50, 844, 11, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 852, 10, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 5, 52, 859, 10, 52, 3, 53, 7, 53, 862, 10, 53, 12, 53, 14, 53, 865, 11, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 5, 54, 879, 10, 54, 3, 55, 3, 55, 3, 55, 7, 55, 884, 10, 55, 12, 55, 14, 55, 887, 11, 55, 3, 56, 3, 56, 3, 56, 5, 56, 892, 10, 56, 3, 57, 3, 57, 5, 57, 896, 10, 57, 3, 58, 3, 58, 5, 58, 900, 10, 58, 3, 59, 3, 59, 5, 59, 904, 10, 59, 3, 60, 3, 60, 5, 60, 908, 10, 60, 3, 61, 3, 61, 3, 61, 5, 61, 913, 10, 61, 3, 62, 3, 62, 5, 62, 917, 10, 62, 3, 62, 3, 62, 7, 62, 921, 10, 62, 12, 62, 14, 62, 924, 11, 62, 3, 63, 3, 63, 5, 63, 928, 10, 63, 3, 63, 3, 63, 3, 63, 7, 63, 933, 10, 63, 12, 63, 14, 63, 936, 11, 63, 3, 63, 3, 63, 5, 63, 940, 10, 63, 5, 63, 942, 10, 63, 3, 64, 3, 64, 7, 64, 946, 10, 64, 12, 64, 14, 64, 949, 11, 64, 3, 64, 3, 64, 5, 64, 953, 10, 64, 3, 65, 3, 65, 5, 65, 957, 10, 65, 3, 66, 3, 66, 3, 67, 3, 67, 3, 68, 3, 68, 3, 69, 3, 69, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 5, 70, 976, 10, 70, 3, 71, 7, 71, 979, 10, 71, 12, 71, 14, 71, 982, 11, 71, 3, 71, 3, 71, 3, 71, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 5, 72, 997, 10, 72, 3, 73, 3, 73, 3, 73, 5, 73, 1002, 10, 73, 3, 73, 3, 73, 7, 73, 1006, 10, 73, 12, 73, 14, 73, 1009, 11, 73, 3, 73, 3, 73, 3, 73, 5, 73, 1014, 10, 73, 5, 73, 1016, 10, 73, 3, 74, 3, 74, 5, 74, 1020, 10, 74, 3, 75, 3, 75, 3, 75, 5, 75, 1025, 10, 75, 3, 75, 3, 75, 5, 75, 1029, 10, 75, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 5, 76, 1037, 10, 76, 3, 77, 3, 77, 3, 77, 7, 77, 1042, 10, 77, 12, 77, 14, 77, 1045, 11, 77, 3, 77, 3, 77, 3, 77, 7, 77, 1050, 10, 77, 12, 77, 14, 77, 1053, 11, 77, 5, 77, 1055, 10, 77, 3, 78, 7, 78, 1058, 10, 78, 12, 78, 14, 78, 1061, 11, 78, 3, 78, 3, 78, 3, 78, 3, 79, 3, 79, 5, 79, 1068, 10, 79, 3, 80, 7, 80, 1071, 10, 80, 12, 80, 14, 80, 1074, 11, 80, 3, 80, 3, 80, 7, 80, 1078, 10, 80, 12, 80, 14, 80, 1081, 11, 80, 3, 80, 3, 80, 3, 80, 3, 80, 5, 80, 1087, 10, 80, 3, 81, 7, 81, 1090, 10, 81, 12, 81, 14, 81, 1093, 11, 81, 3, 81, 3, 81, 3, 81, 5, 81, 1098, 10, 81, 3, 81, 3, 81, 3, 82, 3, 82, 3, 82, 3, 83, 3, 83, 3, 83, 7, 83, 1108, 10, 83, 12, 83, 14, 83, 1111, 11, 83, 3, 84, 3, 84, 5, 84, 1115, 10, 84, 3, 85, 3, 85, 5, 85, 1119, 10, 85, 3, 86, 3, 86, 3, 87, 3, 87, 3, 87, 3, 88, 7, 88, 1127, 10, 88, 12, 88, 14, 88, 1130, 11, 88, 3, 88, 3, 88, 5, 88, 1134, 10, 88, 3, 88, 3, 88, 3, 89, 3, 89, 3, 89, 3, 89, 5, 89, 1142, 10, 89, 3, 90, 5, 90, 1145, 10, 90, 3, 90, 3, 90, 3, 90, 5, 90, 1150, 10, 90, 3, 90, 3, 90, 3, 91, 3, 91, 3, 92, 3, 92, 5, 92, 1158, 10, 92, 3, 92, 5, 92, 1161, 10, 92, 3, 92, 3, 92, 3, 93, 5, 93, 1166, 10, 93, 3, 93, 3, 93, 3, 93, 5, 93, 1171, 10, 93, 3, 93, 3, 93, 3, 93, 5, 93, 1176, 10, 93, 3, 93, 3, 93, 3, 93, 5, 93, 1181, 10, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 5, 93, 1188, 10, 93, 3, 93, 3, 93, 3, 93, 5, 93, 1193, 10, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 5, 93, 1201, 10, 93, 3, 93, 3, 93, 3, 93, 5, 93, 1206, 10, 93, 3, 93, 3, 93, 3, 93, 5, 93, 1211, 10, 93, 3, 94, 7, 94, 1214, 10, 94, 12, 94, 14, 94, 1217, 11, 94, 3, 94, 3, 94, 3, 94, 5, 94, 1222, 10, 94, 3, 94, 3, 94, 3, 95, 3, 95, 5, 95, 1228, 10, 95, 3, 95, 5, 95, 1231, 10, 95, 3, 95, 5, 95, 1234, 10, 95, 3, 95, 3, 95, 3, 96, 3, 96, 3, 96, 7, 96, 1241, 10, 96, 12, 96, 14, 96, 1244, 11, 96, 3, 97, 7, 97, 1247, 10, 97, 12, 97, 14, 97, 1250, 11, 97, 3, 97, 3, 97, 3, 97, 5, 97, 1255, 10, 97, 3, 97, 5, 97, 1258, 10, 97, 3, 97, 5, 97, 1261, 10, 97, 3, 98, 3, 98, 3, 99, 3, 99, 7, 99, 1267, 10, 99, 12, 99, 14, 99, 1270, 11, 99, 3, 100, 3, 100, 5, 100, 1274, 10, 100, 3, 101, 7, 101, 1277, 10, 101, 12, 101, 14, 101, 1280, 11, 101, 3, 101, 3, 101, 3, 101, 5, 101, 1285, 10, 101, 3, 101, 5, 101, 1288, 10, 101, 3, 101, 3, 101, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 5, 102, 1299, 10, 102, 3, 103, 3, 103, 3, 103, 3, 104, 3, 104, 7, 104, 1306, 10, 104, 12, 104, 14, 104, 1309, 11, 104, 3, 104, 3, 104, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 5, 105, 1318, 10, 105, 3, 106, 7, 106, 1321, 10, 106, 12, 106, 14, 106, 1324, 11, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 107, 3, 107, 3, 107, 3, 107, 5, 107, 1334, 10, 107, 3, 108, 7, 108, 1337, 10, 108, 12, 108, 14, 108, 1340, 11, 108, 3, 108, 3, 108, 3, 108, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 5, 109, 1351, 10, 109, 3, 110, 7, 110, 1354, 10, 110, 12, 110, 14, 110, 1357, 11, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 111, 3, 111, 7, 111, 1366, 10, 111, 12, 111, 14, 111, 1369, 11, 111, 3, 111, 3, 111, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 5, 112, 1378, 10, 112, 3, 113, 7, 113, 1381, 10, 113, 12, 113, 14, 113, 1384, 11, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 5, 113, 1391, 10, 113, 3, 113, 5, 113, 1394, 10, 113, 3, 113, 3, 113, 3, 114, 3, 114, 3, 114, 5, 114, 1401, 10, 114, 3, 115, 3, 115, 3, 115, 3, 116, 3, 116, 3, 116, 5, 116, 1409, 10, 116, 3, 117, 3, 117, 3, 117, 3, 117, 5, 117, 1415, 10, 117, 3, 117, 3, 117, 3, 118, 3, 118, 3, 118, 7, 118, 1422, 10, 118, 12, 118, 14, 118, 1425, 11, 118, 3, 119, 3, 119, 3, 119, 3, 119, 3, 120, 3, 120, 3, 120, 5, 120, 1434, 10, 120, 3, 121, 3, 121, 5, 121, 1438, 10, 121, 3, 121, 5, 121, 1441, 10, 121, 3, 121, 3, 121, 3, 122, 3, 122, 3, 122, 7, 122, 1448, 10, 122, 12, 122, 14, 122, 1451, 11, 122, 3, 123, 3, 123, 3, 123, 3, 124, 3, 124, 3, 124, 3, 124, 3, 124, 3, 124, 3, 125, 3, 125, 5, 125, 1464, 10, 125, 3, 125, 5, 125, 1467, 10, 125, 3, 125, 3, 125, 3, 126, 3, 126, 3, 126, 7, 126, 1474, 10, 126, 12, 126, 14, 126, 1477, 11, 126, 3, 127, 3, 127, 5, 127, 1481, 10, 127, 3, 127, 3, 127, 3, 128, 6, 128, 1486, 10, 128, 13, 128, 14, 128, 1487, 3, 129, 3, 129, 3, 129, 5, 129, 1493, 10, 129, 3, 130, 3, 130, 3, 130, 3, 131, 7, 131, 1499, 10, 131, 12, 131, 14, 131, 1502, 11, 131, 3, 131, 3, 131, 3, 131, 3, 132, 3, 132, 3, 132, 3, 132, 3, 132, 3, 132, 5, 132, 1513, 10, 132, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 5, 133, 1520, 10, 133, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 5, 134, 1534, 10, 134, 3, 135, 3, 135, 3, 136, 3, 136, 3, 136, 3, 136, 3, 137, 3, 137, 3, 137, 3, 137, 3, 138, 3, 138, 3, 138, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 5, 139, 1556, 10, 139, 3, 140, 3, 140, 3, 140, 3, 140, 3, 140, 3, 140, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 142, 3, 142, 3, 142, 3, 142, 3, 142, 3, 142, 3, 142, 3, 142, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 5, 143, 1590, 10, 143, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 145, 3, 145, 7, 145, 1600, 10, 145, 12, 145, 14, 145, 1603, 11, 145, 3, 145, 7, 145, 1606, 10, 145, 12, 145, 14, 145, 1609, 11, 145, 3, 145, 3, 145, 3, 146, 3, 146, 3, 146, 3, 147, 3, 147, 7, 147, 1618, 10, 147, 12, 147, 14, 147, 1621, 11, 147, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 5, 148, 1633, 10, 148, 3, 149, 3, 149, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 3, 153, 3, 153, 5, 153, 1659, 10, 153, 3, 154, 3, 154, 5, 154, 1663, 10, 154, 3, 155, 3, 155, 3, 155, 5, 155, 1668, 10, 155, 3, 155, 3, 155, 5, 155, 1672, 10, 155, 3, 155, 3, 155, 5, 155, 1676, 10, 155, 3, 155, 3, 155, 3, 155, 3, 156, 3, 156, 3, 156, 5, 156, 1684, 10, 156, 3, 156, 3, 156, 5, 156, 1688, 10, 156, 3, 156, 3, 156, 5, 156, 1692, 10, 156, 3, 156, 3, 156, 3, 156, 3, 157, 3, 157, 5, 157, 1699, 10, 157, 3, 158, 3, 158, 3, 159, 3, 159, 3, 159, 7, 159, 1706, 10, 159, 12, 159, 14, 159, 1709, 11, 159, 3, 160, 3, 160, 3, 160, 7, 160, 1714, 10, 160, 12, 160, 14, 160, 1717, 11, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 161, 3, 161, 3, 161, 7, 161, 1729, 10, 161, 12, 161, 14, 161, 1732, 11, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 162, 3, 162, 5, 162, 1743, 10, 162, 3, 162, 3, 162, 3, 163, 3, 163, 5, 163, 1749, 10, 163, 3, 163, 3, 163, 3, 164, 3, 164, 5, 164, 1755, 10, 164, 3, 164, 3, 164, 3, 165, 3, 165, 3, 165, 3, 165, 3, 166, 3, 166, 3, 166, 3, 166, 3, 166, 3, 166, 3, 167, 3, 167, 3, 167, 3, 167, 3, 167, 3, 167, 3, 167, 5, 167, 1776, 10, 167, 3, 167, 3, 167, 3, 167, 5, 167, 1781, 10, 167, 3, 168, 3, 168, 7, 168, 1785, 10, 168, 12, 168, 14, 168, 1788, 11, 168, 3, 169, 3, 169, 3, 169, 3, 169, 3, 169, 3, 169, 3, 170, 7, 170, 1797, 10, 170, 12, 170, 14, 170, 1800, 11, 170, 3, 170, 3, 170, 3, 170, 3, 171, 3, 171, 3, 171, 7, 171, 1808, 10, 171, 12, 171, 14, 171, 1811, 11, 171, 3, 172, 3, 172, 3, 172, 3, 173, 3, 173, 3, 173, 3, 173, 5, 173, 1820, 10, 173, 3, 173, 5, 173, 1823, 10, 173, 3, 174, 3, 174, 3, 174, 5, 174, 1828, 10, 174, 3, 174, 3, 174, 3, 175, 3, 175, 3, 175, 7, 175, 1835, 10, 175, 12, 175, 14, 175, 1838, 11, 175, 3, 176, 7, 176, 1841, 10, 176, 12, 176, 14, 176, 1844, 11, 176, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176, 3, 177, 3, 177, 5, 177, 1853, 10, 177, 3, 177, 7, 177, 1856, 10, 177, 12, 177, 14, 177, 1859, 11, 177, 3, 178, 3, 178, 3, 178, 3, 178, 7, 178, 1865, 10, 178, 12, 178, 14, 178, 1868, 11, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 5, 178, 1890, 10, 178, 3, 179, 3, 179, 3, 180, 3, 180, 3, 180, 3, 180, 7, 180, 1898, 10, 180, 12, 180, 14, 180, 1901, 11, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 5, 180, 1922, 10, 180, 3, 181, 3, 181, 3, 181, 3, 181, 3, 181, 5, 181, 1929, 10, 181, 3, 182, 3, 182, 3, 183, 3, 183, 3, 183, 3, 183, 5, 183, 1937, 10, 183, 3, 184, 3, 184, 3, 184, 3, 184, 7, 184, 1943, 10, 184, 12, 184, 14, 184, 1946, 11, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 7, 184, 1954, 10, 184, 12, 184, 14, 184, 1957, 11, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 5, 184, 1979, 10, 184, 3, 185, 3, 185, 3, 186, 3, 186, 3, 186, 3, 186, 7, 186, 1987, 10, 186, 12, 186, 14, 186, 1990, 11, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 7, 186, 1998, 10, 186, 12, 186, 14, 186, 2001, 11, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 5, 186, 2022, 10, 186, 3, 187, 3, 187, 5, 187, 2026, 10, 187, 3, 187, 7, 187, 2029, 10, 187, 12, 187, 14, 187, 2032, 11, 187, 3, 187, 3, 187, 3, 187, 7, 187, 2037, 10, 187, 12, 187, 14, 187, 2040, 11, 187, 3, 187, 7, 187, 2043, 10, 187, 12, 187, 14, 187, 2046, 11, 187, 3, 187, 5, 187, 2049, 10, 187, 3, 187, 3, 187, 5, 187, 2053, 10, 187, 3, 187, 3, 187, 5, 187, 2057, 10, 187, 3, 187, 3, 187, 3, 187, 3, 187, 5, 187, 2063, 10, 187, 3, 187, 7, 187, 2066, 10, 187, 12, 187, 14, 187, 2069, 11, 187, 3, 187, 3, 187, 5, 187, 2073, 10, 187, 3, 187, 3, 187, 5, 187, 2077, 10, 187, 3, 187, 3, 187, 5, 187, 2081, 10, 187, 3, 187, 3, 187, 3, 187, 3, 187, 5, 187, 2087, 10, 187, 3, 187, 7, 187, 2090, 10, 187, 12, 187, 14, 187, 2093, 11, 187, 3, 187, 3, 187, 5, 187, 2097, 10, 187, 3, 187, 3, 187, 5, 187, 2101, 10, 187, 3, 187, 3, 187, 5, 187, 2105, 10, 187, 5, 187, 2107, 10, 187, 3, 188, 3, 188, 3, 188, 5, 188, 2112, 10, 188, 3, 188, 7, 188, 2115, 10, 188, 12, 188, 14, 188, 2118, 11, 188, 3, 188, 3, 188, 5, 188, 2122, 10, 188, 3, 188, 3, 188, 5, 188, 2126, 10, 188, 3, 188, 3, 188, 5, 188, 2130, 10, 188, 3, 189, 3, 189, 5, 189, 2134, 10, 189, 3, 189, 7, 189, 2137, 10, 189, 12, 189, 14, 189, 2140, 11, 189, 3, 189, 3, 189, 3, 189, 7, 189, 2145, 10, 189, 12, 189, 14, 189, 2148, 11, 189, 3, 189, 7, 189, 2151, 10, 189, 12, 189, 14, 189, 2154, 11, 189, 3, 189, 5, 189, 2157, 10, 189, 3, 189, 3, 189, 5, 189, 2161, 10, 189, 3, 189, 3, 189, 5, 189, 2165, 10, 189, 3, 189, 3, 189, 3, 189, 3, 189, 5, 189, 2171, 10, 189, 3, 189, 7, 189, 2174, 10, 189, 12, 189, 14, 189, 2177, 11, 189, 3, 189, 3, 189, 5, 189, 2181, 10, 189, 3, 189, 3, 189, 5, 189, 2185, 10, 189, 3, 189, 3, 189, 5, 189, 2189, 10, 189, 5, 189, 2191, 10, 189, 3, 190, 3, 190, 3, 190, 5, 190, 2196, 10, 190, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 5, 191, 2211, 10, 191, 3, 192, 3, 192, 3, 192, 3, 193, 3, 193, 3, 193, 3, 193, 3, 193, 3, 193, 3, 193, 3, 193, 3, 193, 5, 193, 2225, 10, 193, 3, 194, 3, 194, 3, 194, 3, 194, 3, 194, 3, 194, 3, 194, 3, 194, 3, 194, 3, 194, 5, 194, 2237, 10, 194, 3, 194, 3, 194, 3, 194, 3, 194, 3, 194, 7, 194, 2244, 10, 194, 12, 194, 14, 194, 2247, 11, 194, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 7, 195, 2259, 10, 195, 12, 195, 14, 195, 2262, 11, 195, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 5, 196, 2274, 10, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 7, 196, 2281, 10, 196, 12, 196, 14, 196, 2284, 11, 196, 3, 197, 3, 197, 3, 197, 5, 197, 2289, 10, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 5, 197, 2296, 10, 197, 3, 197, 3, 197, 3, 197, 5, 197, 2301, 10, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 5, 197, 2308, 10, 197, 3, 197, 3, 197, 3, 197, 5, 197, 2313, 10, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 5, 197, 2320, 10, 197, 3, 197, 3, 197, 3, 197, 5, 197, 2325, 10, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 5, 197, 2332, 10, 197, 3, 197, 3, 197, 3, 197, 5, 197, 2337, 10, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 5, 197, 2345, 10, 197, 3, 197, 3, 197, 3, 197, 5, 197, 2350, 10, 197, 3, 197, 3, 197, 5, 197, 2354, 10, 197, 3, 198, 3, 198, 5, 198, 2358, 10, 198, 3, 198, 3, 198, 3, 198, 5, 198, 2363, 10, 198, 3, 198, 3, 198, 3, 199, 3, 199, 3, 199, 5, 199, 2370, 10, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 5, 199, 2377, 10, 199, 3, 199, 3, 199, 3, 199, 5, 199, 2382, 10, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 5, 199, 2389, 10, 199, 3, 199, 3, 199, 3, 199, 5, 199, 2394, 10, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 5, 199, 2401, 10, 199, 3, 199, 3, 199, 3, 199, 5, 199, 2406, 10, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 5, 199, 2414, 10, 199, 3, 199, 3, 199, 3, 199, 5, 199, 2419, 10, 199, 3, 199, 3, 199, 5, 199, 2423, 10, 199, 3, 200, 3, 200, 3, 200, 7, 200, 2428, 10, 200, 12, 200, 14, 200, 2431, 11, 200, 3, 201, 3, 201, 3, 201, 5, 201, 2436, 10, 201, 3, 201, 3, 201, 3, 201, 3, 201, 3, 201, 5, 201, 2443, 10, 201, 3, 201, 3, 201, 3, 201, 3, 201, 3, 201, 5, 201, 2450, 10, 201, 3, 201, 3, 201, 3, 201, 3, 201, 3, 201, 5, 201, 2457, 10, 201, 3, 201, 3, 201, 3, 201, 3, 201, 3, 201, 3, 201, 5, 201, 2465, 10, 201, 3, 201, 3, 201, 3, 201, 3, 201, 3, 201, 5, 201, 2472, 10, 201, 3, 201, 3, 201, 3, 201, 3, 201, 3, 201, 3, 201, 5, 201, 2480, 10, 201, 3, 202, 3, 202, 5, 202, 2484, 10, 202, 3, 202, 3, 202, 3, 203, 3, 203, 3, 203, 5, 203, 2491, 10, 203, 3, 203, 3, 203, 3, 203, 3, 203, 3, 203, 5, 203, 2498, 10, 203, 3, 203, 3, 203, 3, 203, 3, 203, 3, 203, 5, 203, 2505, 10, 203, 3, 203, 3, 203, 3, 203, 3, 203, 3, 203, 3, 203, 5, 203, 2513, 10, 203, 3, 203, 3, 203, 3, 203, 3, 203, 3, 203, 5, 203, 2520, 10, 203, 3, 203, 3, 203, 3, 203, 3, 203, 3, 203, 3, 203, 5, 203, 2528, 10, 203, 3, 204, 3, 204, 3, 204, 3, 204, 5, 204, 2534, 10, 204, 3, 204, 3, 204, 3, 204, 3, 204, 5, 204, 2540, 10, 204, 3, 204, 3, 204, 3, 204, 3, 204, 3, 204, 3, 204, 3, 204, 3, 204, 3, 204, 3, 204, 5, 204, 2552, 10, 204, 3, 205, 3, 205, 7, 205, 2556, 10, 205, 12, 205, 14, 205, 2559, 11, 205, 3, 206, 7, 206, 2562, 10, 206, 12, 206, 14, 206, 2565, 11, 206, 3, 206, 3, 206, 3, 206, 3, 206, 3, 207, 3, 207, 3, 208, 3, 208, 5, 208, 2575, 10, 208, 3, 209, 3, 209, 3, 209, 3, 209, 3, 210, 3, 210, 3, 210, 5, 210, 2584, 10, 210, 3, 210, 3, 210, 3, 210, 3, 210, 3, 210, 5, 210, 2591, 10, 210, 3, 211, 3, 211, 3, 211, 7, 211, 2596, 10, 211, 12, 211, 14, 211, 2599, 11, 211, 3, 212, 3, 212, 5, 212, 2603, 10, 212, 3, 213, 3, 213, 5, 213, 2607, 10, 213, 3, 214, 3, 214, 3, 214, 3, 214, 3, 215, 3, 215, 3, 215, 5, 215, 2616, 10, 215, 3, 216, 3, 216, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 5, 217, 2627, 10, 217, 3, 218, 3, 218, 3, 218, 3, 218, 3, 218, 3, 218, 7, 218, 2635, 10, 218, 12, 218, 14, 218, 2638, 11, 218, 3, 219, 3, 219, 3, 219, 3, 219, 3, 219, 3, 219, 7, 219, 2646, 10, 219, 12, 219, 14, 219, 2649, 11, 219, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 7, 220, 2657, 10, 220, 12, 220, 14, 220, 2660, 11, 220, 3, 221, 3, 221, 3, 221, 3, 221, 3, 221, 3, 221, 7, 221, 2668, 10, 221, 12, 221, 14, 221, 2671, 11, 221, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 7, 222, 2679, 10, 222, 12, 222, 14, 222, 2682, 11, 222, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, 7, 223, 2693, 10, 223, 12, 223, 14, 223, 2696, 11, 223, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 7, 224, 2716, 10, 224, 12, 224, 14, 224, 2719, 11, 224, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 7, 225, 2737, 10, 225, 12, 225, 14, 225, 2740, 11, 225, 3, 226, 3, 226, 3, 226, 3, 226, 3, 226, 3, 226, 3, 226, 3, 226, 3, 226, 7, 226, 2751, 10, 226, 12, 226, 14, 226, 2754, 11, 226, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 7, 227, 2768, 10, 227, 12, 227, 14, 227, 2771, 11, 227, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 5, 228, 2780, 10, 228, 3, 229, 3, 229, 3, 229, 3, 230, 3, 230, 3, 230, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 5, 231, 2794, 10, 231, 3, 232, 3, 232, 5, 232, 2798, 10, 232, 3, 232, 3, 232, 7, 232, 2802, 10, 232, 12, 232, 14, 232, 2805, 11, 232, 3, 233, 3, 233, 3, 233, 3, 234, 3, 234, 3, 235, 3, 235, 3, 235, 3, 236, 3, 236, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 7, 237, 2825, 10, 237, 12, 237, 14, 237, 2828, 11, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 7, 237, 2836, 10, 237, 12, 237, 14, 237, 2839, 11, 237, 3, 237, 3, 237, 3, 237, 5, 237, 2844, 10, 237, 3, 237, 2, 15, 52, 56, 62, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 238, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 2, 6, 3, 2, 53, 58, 7, 2, 7, 7, 10, 10, 29, 29, 31, 31, 39, 39, 4, 2, 16, 16, 22, 22, 4, 2, 68, 68, 93, 103, 2, 3087, 2, 474, 3, 2, 2, 2, 4, 490, 3, 2, 2, 2, 6, 494, 3, 2, 2, 2, 8, 496, 3, 2, 2, 2, 10, 498, 3, 2, 2, 2, 12, 503, 3, 2, 2, 2, 14, 507, 3, 2, 2, 2, 16, 538, 3, 2, 2, 2, 18, 540, 3, 2, 2, 2, 20, 554, 3, 2, 2, 2, 22, 561, 3, 2, 2, 2, 24, 563, 3, 2, 2, 2, 26, 565, 3, 2, 2, 2, 28, 570, 3, 2, 2, 2, 30, 584, 3, 2, 2, 2, 32, 589, 3, 2, 2, 2, 34, 610, 3, 2, 2, 2, 36, 617, 3, 2, 2, 2, 38, 629, 3, 2, 2, 2, 40, 631, 3, 2, 2, 2, 42, 634, 3, 2, 2, 2, 44, 638, 3, 2, 2, 2, 46, 648, 3, 2, 2, 2, 48, 653, 3, 2, 2, 2, 50, 664, 3, 2, 2, 2, 52, 666, 3, 2, 2, 2, 54, 682, 3, 2, 2, 2, 56, 684, 3, 2, 2, 2, 58, 700, 3, 2, 2, 2, 60, 702, 3, 2, 2, 2, 62, 704, 3, 2, 2, 2, 64, 716, 3, 2, 2, 2, 66, 735, 3, 2, 2, 2, 68, 742, 3, 2, 2, 2, 70, 748, 3, 2, 2, 2, 72, 750, 3, 2, 2, 2, 74, 754, 3, 2, 2, 2, 76, 760, 3, 2, 2, 2, 78, 767, 3, 2, 2, 2, 80, 777, 3, 2, 2, 2, 82, 781, 3, 2, 2, 2, 84, 786, 3, 2, 2, 2, 86, 810, 3, 2, 2, 2, 88, 812, 3, 2, 2, 2, 90, 816, 3, 2, 2, 2, 92, 824, 3, 2, 2, 2, 94, 827, 3, 2, 2, 2, 96, 830, 3, 2, 2, 2, 98, 838, 3, 2, 2, 2, 100, 851, 3, 2, 2, 2, 102, 858, 3, 2, 2, 2, 104, 863, 3, 2, 2, 2, 106, 878, 3, 2, 2, 2, 108, 880, 3, 2, 2, 2, 110, 888, 3, 2, 2, 2, 112, 893, 3, 2, 2, 2, 114, 899, 3, 2, 2, 2, 116, 903, 3, 2, 2, 2, 118, 907, 3, 2, 2, 2, 120, 912, 3, 2, 2, 2, 122, 916, 3, 2, 2, 2, 124, 941, 3, 2, 2, 2, 126, 943, 3, 2, 2, 2, 128, 954, 3, 2, 2, 2, 130, 958, 3, 2, 2, 2, 132, 960, 3, 2, 2, 2, 134, 962, 3, 2, 2, 2, 136, 964, 3, 2, 2, 2, 138, 975, 3, 2, 2, 2, 140, 980, 3, 2, 2, 2, 142, 996, 3, 2, 2, 2, 144, 1015, 3, 2, 2, 2, 146, 1019, 3, 2, 2, 2, 148, 1021, 3, 2, 2, 2, 150, 1036, 3, 2, 2, 2, 152, 1054, 3, 2, 2, 2, 154, 1059, 3, 2, 2, 2, 156, 1067, 3, 2, 2, 2, 158, 1086, 3, 2, 2, 2, 160, 1091, 3, 2, 2, 2, 162, 1101, 3, 2, 2, 2, 164, 1104, 3, 2, 2, 2, 166, 1114, 3, 2, 2, 2, 168, 1118, 3, 2, 2, 2, 170, 1120, 3, 2, 2, 2, 172, 1122, 3, 2, 2, 2, 174, 1128, 3, 2, 2, 2, 176, 1141, 3, 2, 2, 2, 178, 1144, 3, 2, 2, 2, 180, 1153, 3, 2, 2, 2, 182, 1155, 3, 2, 2, 2, 184, 1210, 3, 2, 2, 2, 186, 1215, 3, 2, 2, 2, 188, 1225, 3, 2, 2, 2, 190, 1237, 3, 2, 2, 2, 192, 1248, 3, 2, 2, 2, 194, 1262, 3, 2, 2, 2, 196, 1264, 3, 2, 2, 2, 198, 1273, 3, 2, 2, 2, 200, 1278, 3, 2, 2, 2, 202, 1298, 3, 2, 2, 2, 204, 1300, 3, 2, 2, 2, 206, 1303, 3, 2, 2, 2, 208, 1317, 3, 2, 2, 2, 210, 1322, 3, 2, 2, 2, 212, 1333, 3, 2, 2, 2, 214, 1338, 3, 2, 2, 2, 216, 1350, 3, 2, 2, 2, 218, 1355, 3, 2, 2, 2, 220, 1363, 3, 2, 2, 2, 222, 1377, 3, 2, 2, 2, 224, 1382, 3, 2, 2, 2, 226, 1400, 3, 2, 2, 2, 228, 1402, 3, 2, 2, 2, 230, 1408, 3, 2, 2, 2, 232, 1410, 3, 2, 2, 2, 234, 1418, 3, 2, 2, 2, 236, 1426, 3, 2, 2, 2, 238, 1433, 3, 2, 2, 2, 240, 1435, 3, 2, 2, 2, 242, 1444, 3, 2, 2, 2, 244, 1452, 3, 2, 2, 2, 246, 1455, 3, 2, 2, 2, 248, 1461, 3, 2, 2, 2, 250, 1470, 3, 2, 2, 2, 252, 1478, 3, 2, 2, 2, 254, 1485, 3, 2, 2, 2, 256, 1492, 3, 2, 2, 2, 258, 1494, 3, 2, 2, 2, 260, 1500, 3, 2, 2, 2, 262, 1512, 3, 2, 2, 2, 264, 1519, 3, 2, 2, 2, 266, 1533, 3, 2, 2, 2, 268, 1535, 3, 2, 2, 2, 270, 1537, 3, 2, 2, 2, 272, 1541, 3, 2, 2, 2, 274, 1545, 3, 2, 2, 2, 276, 1555, 3, 2, 2, 2, 278, 1557, 3, 2, 2, 2, 280, 1563, 3, 2, 2, 2, 282, 1571, 3, 2, 2, 2, 284, 1589, 3, 2, 2, 2, 286, 1591, 3, 2, 2, 2, 288, 1597, 3, 2, 2, 2, 290, 1612, 3, 2, 2, 2, 292, 1615, 3, 2, 2, 2, 294, 1632, 3, 2, 2, 2, 296, 1634, 3, 2, 2, 2, 298, 1636, 3, 2, 2, 2, 300, 1642, 3, 2, 2, 2, 302, 1648, 3, 2, 2, 2, 304, 1658, 3, 2, 2, 2, 306, 1662, 3, 2, 2, 2, 308, 1664, 3, 2, 2, 2, 310, 1680, 3, 2, 2, 2, 312, 1698, 3, 2, 2, 2, 314, 1700, 3, 2, 2, 2, 316, 1702, 3, 2, 2, 2, 318, 1710, 3, 2, 2, 2, 320, 1725, 3, 2, 2, 2, 322, 1740, 3, 2, 2, 2, 324, 1746, 3, 2, 2, 2, 326, 1752, 3, 2, 2, 2, 328, 1758, 3, 2, 2, 2, 330, 1762, 3, 2, 2, 2, 332, 1780, 3, 2, 2, 2, 334, 1782, 3, 2, 2, 2, 336, 1789, 3, 2, 2, 2, 338, 1798, 3, 2, 2, 2, 340, 1804, 3, 2, 2, 2, 342, 1812, 3, 2, 2, 2, 344, 1815, 3, 2, 2, 2, 346, 1824, 3, 2, 2, 2, 348, 1831, 3, 2, 2, 2, 350, 1842, 3, 2, 2, 2, 352, 1852, 3, 2, 2, 2, 354, 1889, 3, 2, 2, 2, 356, 1891, 3, 2, 2, 2, 358, 1921, 3, 2, 2, 2, 360, 1928, 3, 2, 2, 2, 362, 1930, 3, 2, 2, 2, 364, 1936, 3, 2, 2, 2, 366, 1978, 3, 2, 2, 2, 368, 1980, 3, 2, 2, 2, 370, 2021, 3, 2, 2, 2, 372, 2106, 3, 2, 2, 2, 374, 2108, 3, 2, 2, 2, 376, 2190, 3, 2, 2, 2, 378, 2195, 3, 2, 2, 2, 380, 2210, 3, 2, 2, 2, 382, 2212, 3, 2, 2, 2, 384, 2224, 3, 2, 2, 2, 386, 2236, 3, 2, 2, 2, 388, 2248, 3, 2, 2, 2, 390, 2273, 3, 2, 2, 2, 392, 2353, 3, 2, 2, 2, 394, 2355, 3, 2, 2, 2, 396, 2422, 3, 2, 2, 2, 398, 2424, 3, 2, 2, 2, 400, 2479, 3, 2, 2, 2, 402, 2481, 3, 2, 2, 2, 404, 2527, 3, 2, 2, 2, 406, 2551, 3, 2, 2, 2, 408, 2553, 3, 2, 2, 2, 410, 2563, 3, 2, 2, 2, 412, 2570, 3, 2, 2, 2, 414, 2574, 3, 2, 2, 2, 416, 2576, 3, 2, 2, 2, 418, 2590, 3, 2, 2, 2, 420, 2592, 3, 2, 2, 2, 422, 2602, 3, 2, 2, 2, 424, 2606, 3, 2, 2, 2, 426, 2608, 3, 2, 2, 2, 428, 2615, 3, 2, 2, 2, 430, 2617, 3, 2, 2, 2, 432, 2626, 3, 2, 2, 2, 434, 2628, 3, 2, 2, 2, 436, 2639, 3, 2, 2, 2, 438, 2650, 3, 2, 2, 2, 440, 2661, 3, 2, 2, 2, 442, 2672, 3, 2, 2, 2, 444, 2683, 3, 2, 2, 2, 446, 2697, 3, 2, 2, 2, 448, 2720, 3, 2, 2, 2, 450, 2741, 3, 2, 2, 2, 452, 2755, 3, 2, 2, 2, 454, 2779, 3, 2, 2, 2, 456, 2781, 3, 2, 2, 2, 458, 2784, 3, 2, 2, 2, 460, 2793, 3, 2, 2, 2, 462, 2797, 3, 2, 2, 2, 464, 2806, 3, 2, 2, 2, 466, 2809, 3, 2, 2, 2, 468, 2811, 3, 2, 2, 2, 470, 2814, 3, 2, 2, 2, 472, 2843, 3, 2, 2, 2, 474, 475, 9, 2, 2, 2, 475, 3, 3, 2, 2, 2, 476, 478, 5, 230, 116, 2, 477, 476, 3, 2, 2, 2, 478, 481, 3, 2, 2, 2, 479, 477, 3, 2, 2, 2, 479, 480, 3, 2, 2, 2, 480, 482, 3, 2, 2, 2, 481, 479, 3, 2, 2, 2, 482, 491, 5, 6, 4, 2, 483, 485, 5, 230, 116, 2, 484, 483, 3, 2, 2, 2, 485, 488, 3, 2, 2, 2, 486, 484, 3, 2, 2, 2, 486, 487, 3, 2, 2, 2, 487, 489, 3, 2, 2, 2, 488, 486, 3, 2, 2, 2, 489, 491, 7, 5, 2, 2, 490, 479, 3, 2, 2, 2, 490, 486, 3, 2, 2, 2, 491, 5, 3, 2, 2, 2, 492, 495, 5, 8, 5, 2, 493, 495, 5, 10, 6, 2, 494, 492, 3, 2, 2, 2, 494, 493, 3, 2, 2, 2, 495, 7, 3, 2, 2, 2, 496, 497, 9, 3, 2, 2, 497, 9, 3, 2, 2, 2, 498, 499, 9, 4, 2, 2, 499, 11, 3, 2, 2, 2, 500, 504, 5, 14, 8, 2, 501, 504, 5, 28, 15, 2, 502, 504, 5, 30, 16, 2, 503, 500, 3, 2, 2, 2, 503, 501, 3, 2, 2, 2, 503, 502, 3, 2, 2, 2, 504, 13, 3, 2, 2, 2, 505, 508, 5, 20, 11, 2, 506, 508, 5, 26, 14, 2, 507, 505, 3, 2, 2, 2, 507, 506, 3, 2, 2, 2, 508, 513, 3, 2, 2, 2, 509, 512, 5, 18, 10, 2, 510, 512, 5, 24, 13, 2, 511, 509, 3, 2, 2, 2, 511, 510, 3, 2, 2, 2, 512, 515, 3, 2, 2, 2, 513, 511, 3, 2, 2, 2, 513, 514, 3, 2, 2, 2, 514, 15, 3, 2, 2, 2, 515, 513, 3, 2, 2, 2, 516, 518, 5, 230, 116, 2, 517, 516, 3, 2, 2, 2, 518, 521, 3, 2, 2, 2, 519, 517, 3, 2, 2, 2, 519, 520, 3, 2, 2, 2, 520, 522, 3, 2, 2, 2, 521, 519, 3, 2, 2, 2, 522, 524, 7, 104, 2, 2, 523, 525, 5, 42, 22, 2, 524, 523, 3, 2, 2, 2, 524, 525, 3, 2, 2, 2, 525, 539, 3, 2, 2, 2, 526, 527, 5, 14, 8, 2, 527, 531, 7, 67, 2, 2, 528, 530, 5, 230, 116, 2, 529, 528, 3, 2, 2, 2, 530, 533, 3, 2, 2, 2, 531, 529, 3, 2, 2, 2, 531, 532, 3, 2, 2, 2, 532, 534, 3, 2, 2, 2, 533, 531, 3, 2, 2, 2, 534, 536, 7, 104, 2, 2, 535, 537, 5, 42, 22, 2, 536, 535, 3, 2, 2, 2, 536, 537, 3, 2, 2, 2, 537, 539, 3, 2, 2, 2, 538, 519, 3, 2, 2, 2, 538, 526, 3, 2, 2, 2, 539, 17, 3, 2, 2, 2, 540, 544, 7, 67, 2, 2, 541, 543, 5, 230, 116, 2, 542, 541, 3, 2, 2, 2, 543, 546, 3, 2, 2, 2, 544, 542, 3, 2, 2, 2, 544, 545, 3, 2, 2, 2, 545, 547, 3, 2, 2, 2, 546, 544, 3, 2, 2, 2, 547, 549, 7, 104, 2, 2, 548, 550, 5, 42, 22, 2, 549, 548, 3, 2, 2, 2, 549, 550, 3, 2, 2, 2, 550, 19, 3, 2, 2, 2, 551, 553, 5, 230, 116, 2, 552, 551, 3, 2, 2, 2, 553, 556, 3, 2, 2, 2, 554, 552, 3, 2, 2, 2, 554, 555, 3, 2, 2, 2, 555, 557, 3, 2, 2, 2, 556, 554, 3, 2, 2, 2, 557, 559, 7, 104, 2, 2, 558, 560, 5, 42, 22, 2, 559, 558, 3, 2, 2, 2, 559, 560, 3, 2, 2, 2, 560, 21, 3, 2, 2, 2, 561, 562, 5, 16, 9, 2, 562, 23, 3, 2, 2, 2, 563, 564, 5, 18, 10, 2, 564, 25, 3, 2, 2, 2, 565, 566, 5, 20, 11, 2, 566, 27, 3, 2, 2, 2, 567, 569, 5, 230, 116, 2, 568, 567, 3, 2, 2, 2, 569, 572, 3, 2, 2, 2, 570, 568, 3, 2, 2, 2, 570, 571, 3, 2, 2, 2, 571, 573, 3, 2, 2, 2, 572, 570, 3, 2, 2, 2, 573, 574, 7, 104, 2, 2, 574, 29, 3, 2, 2, 2, 575, 576, 5, 4, 3, 2, 576, 577, 5, 32, 17, 2, 577, 585, 3, 2, 2, 2, 578, 579, 5, 14, 8, 2, 579, 580, 5, 32, 17, 2, 580, 585, 3, 2, 2, 2, 581, 582, 5, 28, 15, 2, 582, 583, 5, 32, 17, 2, 583, 585, 3, 2, 2, 2, 584, 575, 3, 2, 2, 2, 584, 578, 3, 2, 2, 2, 584, 581, 3, 2, 2, 2, 585, 31, 3, 2, 2, 2, 586, 588, 5, 230, 116, 2, 587, 586, 3, 2, 2, 2, 588, 591, 3, 2, 2, 2, 589, 587, 3, 2, 2, 2, 589, 590, 3, 2, 2, 2, 590, 592, 3, 2, 2, 2, 591, 589, 3, 2, 2, 2, 592, 593, 7, 63, 2, 2, 593, 604, 7, 64, 2, 2, 594, 596, 5, 230, 116, 2, 595, 594, 3, 2, 2, 2, 596, 599, 3, 2, 2, 2, 597, 595, 3, 2, 2, 2, 597, 598, 3, 2, 2, 2, 598, 600, 3, 2, 2, 2, 599, 597, 3, 2, 2, 2, 600, 601, 7, 63, 2, 2, 601, 603, 7, 64, 2, 2, 602, 597, 3, 2, 2, 2, 603, 606, 3, 2, 2, 2, 604, 602, 3, 2, 2, 2, 604, 605, 3, 2, 2, 2, 605, 33, 3, 2, 2, 2, 606, 604, 3, 2, 2, 2, 607, 609, 5, 36, 19, 2, 608, 607, 3, 2, 2, 2, 609, 612, 3, 2, 2, 2, 610, 608, 3, 2, 2, 2, 610, 611, 3, 2, 2, 2, 611, 613, 3, 2, 2, 2, 612, 610, 3, 2, 2, 2, 613, 615, 7, 104, 2, 2, 614, 616, 5, 38, 20, 2, 615, 614, 3, 2, 2, 2, 615, 616, 3, 2, 2, 2, 616, 35, 3, 2, 2, 2, 617, 618, 5, 230, 116, 2, 618, 37, 3, 2, 2, 2, 619, 620, 7, 19, 2, 2, 620, 630, 5, 28, 15, 2, 621, 622, 7, 19, 2, 2, 622, 626, 5, 14, 8, 2, 623, 625, 5, 40, 21, 2, 624, 623, 3, 2, 2, 2, 625, 628, 3, 2, 2, 2, 626, 624, 3, 2, 2, 2, 626, 627, 3, 2, 2, 2, 627, 630, 3, 2, 2, 2, 628, 626, 3, 2, 2, 2, 629, 619, 3, 2, 2, 2, 629, 621, 3, 2, 2, 2, 630, 39, 3, 2, 2, 2, 631, 632, 7, 87, 2, 2, 632, 633, 5, 22, 12, 2, 633, 41, 3, 2, 2, 2, 634, 635, 7, 70, 2, 2, 635, 636, 5, 44, 23, 2, 636, 637, 7, 69, 2, 2, 637, 43, 3, 2, 2, 2, 638, 643, 5, 46, 24, 2, 639, 640, 7, 66, 2, 2, 640, 642, 5, 46, 24, 2, 641, 639, 3, 2, 2, 2, 642, 645, 3, 2, 2, 2, 643, 641, 3, 2, 2, 2, 643, 644, 3, 2, 2, 2, 644, 45, 3, 2, 2, 2, 645, 643, 3, 2, 2, 2, 646, 649, 5, 12, 7, 2, 647, 649, 5, 48, 25, 2, 648, 646, 3, 2, 2, 2, 648, 647, 3, 2, 2, 2, 649, 47, 3, 2, 2, 2, 650, 652, 5, 230, 116, 2, 651, 650, 3, 2, 2, 2, 652, 655, 3, 2, 2, 2, 653, 651, 3, 2, 2, 2, 653, 654, 3, 2, 2, 2, 654, 656, 3, 2, 2, 2, 655, 653, 3, 2, 2, 2, 656, 658, 7, 73, 2, 2, 657, 659, 5, 50, 26, 2, 658, 657, 3, 2, 2, 2, 658, 659, 3, 2, 2, 2, 659, 49, 3, 2, 2, 2, 660, 661, 7, 19, 2, 2, 661, 665, 5, 12, 7, 2, 662, 663, 7, 42, 2, 2, 663, 665, 5, 12, 7, 2, 664, 660, 3, 2, 2, 2, 664, 662, 3, 2, 2, 2, 665, 51, 3, 2, 2, 2, 666, 667, 8, 27, 1, 2, 667, 668, 7, 104, 2, 2, 668, 674, 3, 2, 2, 2, 669, 670, 12, 3, 2, 2, 670, 671, 7, 67, 2, 2, 671, 673, 7, 104, 2, 2, 672, 669, 3, 2, 2, 2, 673, 676, 3, 2, 2, 2, 674, 672, 3, 2, 2, 2, 674, 675, 3, 2, 2, 2, 675, 53, 3, 2, 2, 2, 676, 674, 3, 2, 2, 2, 677, 683, 7, 104, 2, 2, 678, 679, 5, 56, 29, 2, 679, 680, 7, 67, 2, 2, 680, 681, 7, 104, 2, 2, 681, 683, 3, 2, 2, 2, 682, 677, 3, 2, 2, 2, 682, 678, 3, 2, 2, 2, 683, 55, 3, 2, 2, 2, 684, 685, 8, 29, 1, 2, 685, 686, 7, 104, 2, 2, 686, 692, 3, 2, 2, 2, 687, 688, 12, 3, 2, 2, 688, 689, 7, 67, 2, 2, 689, 691, 7, 104, 2, 2, 690, 687, 3, 2, 2, 2, 691, 694, 3, 2, 2, 2, 692, 690, 3, 2, 2, 2, 692, 693, 3, 2, 2, 2, 693, 57, 3, 2, 2, 2, 694, 692, 3, 2, 2, 2, 695, 701, 7, 104, 2, 2, 696, 697, 5, 62, 32, 2, 697, 698, 7, 67, 2, 2, 698, 699, 7, 104, 2, 2, 699, 701, 3, 2, 2, 2, 700, 695, 3, 2, 2, 2, 700, 696, 3, 2, 2, 2, 701, 59, 3, 2, 2, 2, 702, 703, 7, 104, 2, 2, 703, 61, 3, 2, 2, 2, 704, 705, 8, 32, 1, 2, 705, 706, 7, 104, 2, 2, 706, 712, 3, 2, 2, 2, 707, 708, 12, 3, 2, 2, 708, 709, 7, 67, 2, 2, 709, 711, 7, 104, 2, 2, 710, 707, 3, 2, 2, 2, 711, 714, 3, 2, 2, 2, 712, 710, 3, 2, 2, 2, 712, 713, 3, 2, 2, 2, 713, 63, 3, 2, 2, 2, 714, 712, 3, 2, 2, 2, 715, 717, 5, 66, 34, 2, 716, 715, 3, 2, 2, 2, 716, 717, 3, 2, 2, 2, 717, 721, 3, 2, 2, 2, 718, 720, 5, 70, 36, 2, 719, 718, 3, 2, 2, 2, 720, 723, 3, 2, 2, 2, 721, 719, 3, 2, 2, 2, 721, 722, 3, 2, 2, 2, 722, 727, 3, 2, 2, 2, 723, 721, 3, 2, 2, 2, 724, 726, 5, 80, 41, 2, 725, 724, 3, 2, 2, 2, 726, 729, 3, 2, 2, 2, 727, 725, 3, 2, 2, 2, 727, 728, 3, 2, 2, 2, 728, 730, 3, 2, 2, 2, 729, 727, 3, 2, 2, 2, 730, 731, 7, 2, 2, 3, 731, 65, 3, 2, 2, 2, 732, 734, 5, 68, 35, 2, 733, 732, 3, 2, 2, 2, 734, 737, 3, 2, 2, 2, 735, 733, 3, 2, 2, 2, 735, 736, 3, 2, 2, 2, 736, 738, 3, 2, 2, 2, 737, 735, 3, 2, 2, 2, 738, 739, 7, 34, 2, 2, 739, 740, 5, 52, 27, 2, 740, 741, 7, 65, 2, 2, 741, 67, 3, 2, 2, 2, 742, 743, 5, 230, 116, 2, 743, 69, 3, 2, 2, 2, 744, 749, 5, 72, 37, 2, 745, 749, 5, 74, 38, 2, 746, 749, 5, 76, 39, 2, 747, 749, 5, 78, 40, 2, 748, 744, 3, 2, 2, 2, 748, 745, 3, 2, 2, 2, 748, 746, 3, 2, 2, 2, 748, 747, 3, 2, 2, 2, 749, 71, 3, 2, 2, 2, 750, 751, 7, 27, 2, 2, 751, 752, 5, 54, 28, 2, 752, 753, 7, 65, 2, 2, 753, 73, 3, 2, 2, 2, 754, 755, 7, 27, 2, 2, 755, 756, 5, 56, 29, 2, 756, 757, 7, 67, 2, 2, 757, 758, 7, 85, 2, 2, 758, 759, 7, 65, 2, 2, 759, 75, 3, 2, 2, 2, 760, 761, 7, 27, 2, 2, 761, 762, 7, 40, 2, 2, 762, 763, 5, 54, 28, 2, 763, 764, 7, 67, 2, 2, 764, 765, 7, 104, 2, 2, 765, 766, 7, 65, 2, 2, 766, 77, 3, 2, 2, 2, 767, 768, 7, 27, 2, 2, 768, 769, 7, 40, 2, 2, 769, 770, 5, 54, 28, 2, 770, 771, 7, 67, 2, 2, 771, 772, 7, 85, 2, 2, 772, 773, 7, 65, 2, 2, 773, 79, 3, 2, 2, 2, 774, 778, 5, 82, 42, 2, 775, 778, 5, 198, 100, 2, 776, 778, 7, 65, 2, 2, 777, 774, 3, 2, 2, 2, 777, 775, 3, 2, 2, 2, 777, 776, 3, 2, 2, 2, 778, 81, 3, 2, 2, 2, 779, 782, 5, 84, 43, 2, 780, 782, 5, 186, 94, 2, 781, 779, 3, 2, 2, 2, 781, 780, 3, 2, 2, 2, 782, 83, 3, 2, 2, 2, 783, 785, 5, 86, 44, 2, 784, 783, 3, 2, 2, 2, 785, 788, 3, 2, 2, 2, 786, 784, 3, 2, 2, 2, 786, 787, 3, 2, 2, 2, 787, 789, 3, 2, 2, 2, 788, 786, 3, 2, 2, 2, 789, 790, 7, 11, 2, 2, 790, 792, 7, 104, 2, 2, 791, 793, 5, 88, 45, 2, 792, 791, 3, 2, 2, 2, 792, 793, 3, 2, 2, 2, 793, 795, 3, 2, 2, 2, 794, 796, 5, 92, 47, 2, 795, 794, 3, 2, 2, 2, 795, 796, 3, 2, 2, 2, 796, 798, 3, 2, 2, 2, 797, 799, 5, 94, 48, 2, 798, 797, 3, 2, 2, 2, 798, 799, 3, 2, 2, 2, 799, 800, 3, 2, 2, 2, 800, 801, 5, 98, 50, 2, 801, 85, 3, 2, 2, 2, 802, 811, 5, 230, 116, 2, 803, 811, 7, 37, 2, 2, 804, 811, 7, 36, 2, 2, 805, 811, 7, 35, 2, 2, 806, 811, 7, 3, 2, 2, 807, 811, 7, 40, 2, 2, 808, 811, 7, 20, 2, 2, 809, 811, 7, 41, 2, 2, 810, 802, 3, 2, 2, 2, 810, 803, 3, 2, 2, 2, 810, 804, 3, 2, 2, 2, 810, 805, 3, 2, 2, 2, 810, 806, 3, 2, 2, 2, 810, 807, 3, 2, 2, 2, 810, 808, 3, 2, 2, 2, 810, 809, 3, 2, 2, 2, 811, 87, 3, 2, 2, 2, 812, 813, 7, 70, 2, 2, 813, 814, 5, 90, 46, 2, 814, 815, 7, 69, 2, 2, 815, 89, 3, 2, 2, 2, 816, 821, 5, 34, 18, 2, 817, 818, 7, 66, 2, 2, 818, 820, 5, 34, 18, 2, 819, 817, 3, 2, 2, 2, 820, 823, 3, 2, 2, 2, 821, 819, 3, 2, 2, 2, 821, 822, 3, 2, 2, 2, 822, 91, 3, 2, 2, 2, 823, 821, 3, 2, 2, 2, 824, 825, 7, 19, 2, 2, 825, 826, 5, 16, 9, 2, 826, 93, 3, 2, 2, 2, 827, 828, 7, 26, 2, 2, 828, 829, 5, 96, 49, 2, 829, 95, 3, 2, 2, 2, 830, 835, 5, 22, 12, 2, 831, 832, 7, 66, 2, 2, 832, 834, 5, 22, 12, 2, 833, 831, 3, 2, 2, 2, 834, 837, 3, 2, 2, 2, 835, 833, 3, 2, 2, 2, 835, 836, 3, 2, 2, 2, 836, 97, 3, 2, 2, 2, 837, 835, 3, 2, 2, 2, 838, 842, 7, 61, 2, 2, 839, 841, 5, 100, 51, 2, 840, 839, 3, 2, 2, 2, 841, 844, 3, 2, 2, 2, 842, 840, 3, 2, 2, 2, 842, 843, 3, 2, 2, 2, 843, 845, 3, 2, 2, 2, 844, 842, 3, 2, 2, 2, 845, 846, 7, 62, 2, 2, 846, 99, 3, 2, 2, 2, 847, 852, 5, 102, 52, 2, 848, 852, 5, 170, 86, 2, 849, 852, 5, 172, 87, 2, 850, 852, 5, 174, 88, 2, 851, 847, 3, 2, 2, 2, 851, 848, 3, 2, 2, 2, 851, 849, 3, 2, 2, 2, 851, 850, 3, 2, 2, 2, 852, 101, 3, 2, 2, 2, 853, 859, 5, 104, 53, 2, 854, 859, 5, 140, 71, 2, 855, 859, 5, 82, 42, 2, 856, 859, 5, 198, 100, 2, 857, 859, 7, 65, 2, 2, 858, 853, 3, 2, 2, 2, 858, 854, 3, 2, 2, 2, 858, 855, 3, 2, 2, 2, 858, 856, 3, 2, 2, 2, 858, 857, 3, 2, 2, 2, 859, 103, 3, 2, 2, 2, 860, 862, 5, 106, 54, 2, 861, 860, 3, 2, 2, 2, 862, 865, 3, 2, 2, 2, 863, 861, 3, 2, 2, 2, 863, 864, 3, 2, 2, 2, 864, 866, 3, 2, 2, 2, 865, 863, 3, 2, 2, 2, 866, 867, 5, 116, 59, 2, 867, 868, 5, 108, 55, 2, 868, 869, 7, 65, 2, 2, 869, 105, 3, 2, 2, 2, 870, 879, 5, 230, 116, 2, 871, 879, 7, 37, 2, 2, 872, 879, 7, 36, 2, 2, 873, 879, 7, 35, 2, 2, 874, 879, 7, 40, 2, 2, 875, 879, 7, 20, 2, 2, 876, 879, 7, 48, 2, 2, 877, 879, 7, 51, 2, 2, 878, 870, 3, 2, 2, 2, 878, 871, 3, 2, 2, 2, 878, 872, 3, 2, 2, 2, 878, 873, 3, 2, 2, 2, 878, 874, 3, 2, 2, 2, 878, 875, 3, 2, 2, 2, 878, 876, 3, 2, 2, 2, 878, 877, 3, 2, 2, 2, 879, 107, 3, 2, 2, 2, 880, 885, 5, 110, 56, 2, 881, 882, 7, 66, 2, 2, 882, 884, 5, 110, 56, 2, 883, 881, 3, 2, 2, 2, 884, 887, 3, 2, 2, 2, 885, 883, 3, 2, 2, 2, 885, 886, 3, 2, 2, 2, 886, 109, 3, 2, 2, 2, 887, 885, 3, 2, 2, 2, 888, 891, 5, 112, 57, 2, 889, 890, 7, 68, 2, 2, 890, 892, 5, 114, 58, 2, 891, 889, 3, 2, 2, 2, 891, 892, 3, 2, 2, 2, 892, 111, 3, 2, 2, 2, 893, 895, 7, 104, 2, 2, 894, 896, 5, 32, 17, 2, 895, 894, 3, 2, 2, 2, 895, 896, 3, 2, 2, 2, 896, 113, 3, 2, 2, 2, 897, 900, 5, 414, 208, 2, 898, 900, 5, 248, 125, 2, 899, 897, 3, 2, 2, 2, 899, 898, 3, 2, 2, 2, 900, 115, 3, 2, 2, 2, 901, 904, 5, 118, 60, 2, 902, 904, 5, 120, 61, 2, 903, 901, 3, 2, 2, 2, 903, 902, 3, 2, 2, 2, 904, 117, 3, 2, 2, 2, 905, 908, 5, 6, 4, 2, 906, 908, 7, 5, 2, 2, 907, 905, 3, 2, 2, 2, 907, 906, 3, 2, 2, 2, 908, 119, 3, 2, 2, 2, 909, 913, 5, 122, 62, 2, 910, 913, 5, 136, 69, 2, 911, 913, 5, 138, 70, 2, 912, 909, 3, 2, 2, 2, 912, 910, 3, 2, 2, 2, 912, 911, 3, 2, 2, 2, 913, 121, 3, 2, 2, 2, 914, 917, 5, 128, 65, 2, 915, 917, 5, 134, 68, 2, 916, 914, 3, 2, 2, 2, 916, 915, 3, 2, 2, 2, 917, 922, 3, 2, 2, 2, 918, 921, 5, 126, 64, 2, 919, 921, 5, 132, 67, 2, 920, 918, 3, 2, 2, 2, 920, 919, 3, 2, 2, 2, 921, 924, 3, 2, 2, 2, 922, 920, 3, 2, 2, 2, 922, 923, 3, 2, 2, 2, 923, 123, 3, 2, 2, 2, 924, 922, 3, 2, 2, 2, 925, 927, 7, 104, 2, 2, 926, 928, 5, 42, 22, 2, 927, 926, 3, 2, 2, 2, 927, 928, 3, 2, 2, 2, 928, 942, 3, 2, 2, 2, 929, 930, 5, 122, 62, 2, 930, 934, 7, 67, 2, 2, 931, 933, 5, 230, 116, 2, 932, 931, 3, 2, 2, 2, 933, 936, 3, 2, 2, 2, 934, 932, 3, 2, 2, 2, 934, 935, 3, 2, 2, 2, 935, 937, 3, 2, 2, 2, 936, 934, 3, 2, 2, 2, 937, 939, 7, 104, 2, 2, 938, 940, 5, 42, 22, 2, 939, 938, 3, 2, 2, 2, 939, 940, 3, 2, 2, 2, 940, 942, 3, 2, 2, 2, 941, 925, 3, 2, 2, 2, 941, 929, 3, 2, 2, 2, 942, 125, 3, 2, 2, 2, 943, 947, 7, 67, 2, 2, 944, 946, 5, 230, 116, 2, 945, 944, 3, 2, 2, 2, 946, 949, 3, 2, 2, 2, 947, 945, 3, 2, 2, 2, 947, 948, 3, 2, 2, 2, 948, 950, 3, 2, 2, 2, 949, 947, 3, 2, 2, 2, 950, 952, 7, 104, 2, 2, 951, 953, 5, 42, 22, 2, 952, 951, 3, 2, 2, 2, 952, 953, 3, 2, 2, 2, 953, 127, 3, 2, 2, 2, 954, 956, 7, 104, 2, 2, 955, 957, 5, 42, 22, 2, 956, 955, 3, 2, 2, 2, 956, 957, 3, 2, 2, 2, 957, 129, 3, 2, 2, 2, 958, 959, 5, 124, 63, 2, 959, 131, 3, 2, 2, 2, 960, 961, 5, 126, 64, 2, 961, 133, 3, 2, 2, 2, 962, 963, 5, 128, 65, 2, 963, 135, 3, 2, 2, 2, 964, 965, 7, 104, 2, 2, 965, 137, 3, 2, 2, 2, 966, 967, 5, 118, 60, 2, 967, 968, 5, 32, 17, 2, 968, 976, 3, 2, 2, 2, 969, 970, 5, 122, 62, 2, 970, 971, 5, 32, 17, 2, 971, 976, 3, 2, 2, 2, 972, 973, 5, 136, 69, 2, 973, 974, 5, 32, 17, 2, 974, 976, 3, 2, 2, 2, 975, 966, 3, 2, 2, 2, 975, 969, 3, 2, 2, 2, 975, 972, 3, 2, 2, 2, 976, 139, 3, 2, 2, 2, 977, 979, 5, 142, 72, 2, 978, 977, 3, 2, 2, 2, 979, 982, 3, 2, 2, 2, 980, 978, 3, 2, 2, 2, 980, 981, 3, 2, 2, 2, 981, 983, 3, 2, 2, 2, 982, 980, 3, 2, 2, 2, 983, 984, 5, 144, 73, 2, 984, 985, 5, 168, 85, 2, 985, 141, 3, 2, 2, 2, 986, 997, 5, 230, 116, 2, 987, 997, 7, 37, 2, 2, 988, 997, 7, 36, 2, 2, 989, 997, 7, 35, 2, 2, 990, 997, 7, 3, 2, 2, 991, 997, 7, 40, 2, 2, 992, 997, 7, 20, 2, 2, 993, 997, 7, 44, 2, 2, 994, 997, 7, 32, 2, 2, 995, 997, 7, 41, 2, 2, 996, 986, 3, 2, 2, 2, 996, 987, 3, 2, 2, 2, 996, 988, 3, 2, 2, 2, 996, 989, 3, 2, 2, 2, 996, 990, 3, 2, 2, 2, 996, 991, 3, 2, 2, 2, 996, 992, 3, 2, 2, 2, 996, 993, 3, 2, 2, 2, 996, 994, 3, 2, 2, 2, 996, 995, 3, 2, 2, 2, 997, 143, 3, 2, 2, 2, 998, 999, 5, 146, 74, 2, 999, 1001, 5, 148, 75, 2, 1000, 1002, 5, 162, 82, 2, 1001, 1000, 3, 2, 2, 2, 1001, 1002, 3, 2, 2, 2, 1002, 1016, 3, 2, 2, 2, 1003, 1007, 5, 88, 45, 2, 1004, 1006, 5, 230, 116, 2, 1005, 1004, 3, 2, 2, 2, 1006, 1009, 3, 2, 2, 2, 1007, 1005, 3, 2, 2, 2, 1007, 1008, 3, 2, 2, 2, 1008, 1010, 3, 2, 2, 2, 1009, 1007, 3, 2, 2, 2, 1010, 1011, 5, 146, 74, 2, 1011, 1013, 5, 148, 75, 2, 1012, 1014, 5, 162, 82, 2, 1013, 1012, 3, 2, 2, 2, 1013, 1014, 3, 2, 2, 2, 1014, 1016, 3, 2, 2, 2, 1015, 998, 3, 2, 2, 2, 1015, 1003, 3, 2, 2, 2, 1016, 145, 3, 2, 2, 2, 1017, 1020, 5, 116, 59, 2, 1018, 1020, 7, 50, 2, 2, 1019, 1017, 3, 2, 2, 2, 1019, 1018, 3, 2, 2, 2, 1020, 147, 3, 2, 2, 2, 1021, 1022, 7, 104, 2, 2, 1022, 1024, 7, 59, 2, 2, 1023, 1025, 5, 150, 76, 2, 1024, 1023, 3, 2, 2, 2, 1024, 1025, 3, 2, 2, 2, 1025, 1026, 3, 2, 2, 2, 1026, 1028, 7, 60, 2, 2, 1027, 1029, 5, 32, 17, 2, 1028, 1027, 3, 2, 2, 2, 1028, 1029, 3, 2, 2, 2, 1029, 149, 3, 2, 2, 2, 1030, 1037, 5, 160, 81, 2, 1031, 1032, 5, 152, 77, 2, 1032, 1033, 7, 66, 2, 2, 1033, 1034, 5, 158, 80, 2, 1034, 1037, 3, 2, 2, 2, 1035, 1037, 5, 158, 80, 2, 1036, 1030, 3, 2, 2, 2, 1036, 1031, 3, 2, 2, 2, 1036, 1035, 3, 2, 2, 2, 1037, 151, 3, 2, 2, 2, 1038, 1043, 5, 154, 78, 2, 1039, 1040, 7, 66, 2, 2, 1040, 1042, 5, 154, 78, 2, 1041, 1039, 3, 2, 2, 2, 1042, 1045, 3, 2, 2, 2, 1043, 1041, 3, 2, 2, 2, 1043, 1044, 3, 2, 2, 2, 1044, 1055, 3, 2, 2, 2, 1045, 1043, 3, 2, 2, 2, 1046, 1051, 5, 160, 81, 2, 1047, 1048, 7, 66, 2, 2, 1048, 1050, 5, 154, 78, 2, 1049, 1047, 3, 2, 2, 2, 1050, 1053, 3, 2, 2, 2, 1051, 1049, 3, 2, 2, 2, 1051, 1052, 3, 2, 2, 2, 1052, 1055, 3, 2, 2, 2, 1053, 1051, 3, 2, 2, 2, 1054, 1038, 3, 2, 2, 2, 1054, 1046, 3, 2, 2, 2, 1055, 153, 3, 2, 2, 2, 1056, 1058, 5, 156, 79, 2, 1057, 1056, 3, 2, 2, 2, 1058, 1061, 3, 2, 2, 2, 1059, 1057, 3, 2, 2, 2, 1059, 1060, 3, 2, 2, 2, 1060, 1062, 3, 2, 2, 2, 1061, 1059, 3, 2, 2, 2, 1062, 1063, 5, 116, 59, 2, 1063, 1064, 5, 112, 57, 2, 1064, 155, 3, 2, 2, 2, 1065, 1068, 5, 230, 116, 2, 1066, 1068, 7, 20, 2, 2, 1067, 1065, 3, 2, 2, 2, 1067, 1066, 3, 2, 2, 2, 1068, 157, 3, 2, 2, 2, 1069, 1071, 5, 156, 79, 2, 1070, 1069, 3, 2, 2, 2, 1071, 1074, 3, 2, 2, 2, 1072, 1070, 3, 2, 2, 2, 1072, 1073, 3, 2, 2, 2, 1073, 1075, 3, 2, 2, 2, 1074, 1072, 3, 2, 2, 2, 1075, 1079, 5, 116, 59, 2, 1076, 1078, 5, 230, 116, 2, 1077, 1076, 3, 2, 2, 2, 1078, 1081, 3, 2, 2, 2, 1079, 1077, 3, 2, 2, 2, 1079, 1080, 3, 2, 2, 2, 1080, 1082, 3, 2, 2, 2, 1081, 1079, 3, 2, 2, 2, 1082, 1083, 7, 106, 2, 2, 1083, 1084, 5, 112, 57, 2, 1084, 1087, 3, 2, 2, 2, 1085, 1087, 5, 154, 78, 2, 1086, 1072, 3, 2, 2, 2, 1086, 1085, 3, 2, 2, 2, 1087, 159, 3, 2, 2, 2, 1088, 1090, 5, 230, 116, 2, 1089, 1088, 3, 2, 2, 2, 1090, 1093, 3, 2, 2, 2, 1091, 1089, 3, 2, 2, 2, 1091, 1092, 3, 2, 2, 2, 1092, 1094, 3, 2, 2, 2, 1093, 1091, 3, 2, 2, 2, 1094, 1097, 5, 116, 59, 2, 1095, 1096, 7, 104, 2, 2, 1096, 1098, 7, 67, 2, 2, 1097, 1095, 3, 2, 2, 2, 1097, 1098, 3, 2, 2, 2, 1098, 1099, 3, 2, 2, 2, 1099, 1100, 7, 45, 2, 2, 1100, 161, 3, 2, 2, 2, 1101, 1102, 7, 47, 2, 2, 1102, 1103, 5, 164, 83, 2, 1103, 163, 3, 2, 2, 2, 1104, 1109, 5, 166, 84, 2, 1105, 1106, 7, 66, 2, 2, 1106, 1108, 5, 166, 84, 2, 1107, 1105, 3, 2, 2, 2, 1108, 1111, 3, 2, 2, 2, 1109, 1107, 3, 2, 2, 2, 1109, 1110, 3, 2, 2, 2, 1110, 165, 3, 2, 2, 2, 1111, 1109, 3, 2, 2, 2, 1112, 1115, 5, 16, 9, 2, 1113, 1115, 5, 28, 15, 2, 1114, 1112, 3, 2, 2, 2, 1114, 1113, 3, 2, 2, 2, 1115, 167, 3, 2, 2, 2, 1116, 1119, 5, 252, 127, 2, 1117, 1119, 7, 65, 2, 2, 1118, 1116, 3, 2, 2, 2, 1118, 1117, 3, 2, 2, 2, 1119, 169, 3, 2, 2, 2, 1120, 1121, 5, 252, 127, 2, 1121, 171, 3, 2, 2, 2, 1122, 1123, 7, 40, 2, 2, 1123, 1124, 5, 252, 127, 2, 1124, 173, 3, 2, 2, 2, 1125, 1127, 5, 176, 89, 2, 1126, 1125, 3, 2, 2, 2, 1127, 1130, 3, 2, 2, 2, 1128, 1126, 3, 2, 2, 2, 1128, 1129, 3, 2, 2, 2, 1129, 1131, 3, 2, 2, 2, 1130, 1128, 3, 2, 2, 2, 1131, 1133, 5, 178, 90, 2, 1132, 1134, 5, 162, 82, 2, 1133, 1132, 3, 2, 2, 2, 1133, 1134, 3, 2, 2, 2, 1134, 1135, 3, 2, 2, 2, 1135, 1136, 5, 182, 92, 2, 1136, 175, 3, 2, 2, 2, 1137, 1142, 5, 230, 116, 2, 1138, 1142, 7, 37, 2, 2, 1139, 1142, 7, 36, 2, 2, 1140, 1142, 7, 35, 2, 2, 1141, 1137, 3, 2, 2, 2, 1141, 1138, 3, 2, 2, 2, 1141, 1139, 3, 2, 2, 2, 1141, 1140, 3, 2, 2, 2, 1142, 177, 3, 2, 2, 2, 1143, 1145, 5, 88, 45, 2, 1144, 1143, 3, 2, 2, 2, 1144, 1145, 3, 2, 2, 2, 1145, 1146, 3, 2, 2, 2, 1146, 1147, 5, 180, 91, 2, 1147, 1149, 7, 59, 2, 2, 1148, 1150, 5, 150, 76, 2, 1149, 1148, 3, 2, 2, 2, 1149, 1150, 3, 2, 2, 2, 1150, 1151, 3, 2, 2, 2, 1151, 1152, 7, 60, 2, 2, 1152, 179, 3, 2, 2, 2, 1153, 1154, 7, 104, 2, 2, 1154, 181, 3, 2, 2, 2, 1155, 1157, 7, 61, 2, 2, 1156, 1158, 5, 184, 93, 2, 1157, 1156, 3, 2, 2, 2, 1157, 1158, 3, 2, 2, 2, 1158, 1160, 3, 2, 2, 2, 1159, 1161, 5, 254, 128, 2, 1160, 1159, 3, 2, 2, 2, 1160, 1161, 3, 2, 2, 2, 1161, 1162, 3, 2, 2, 2, 1162, 1163, 7, 62, 2, 2, 1163, 183, 3, 2, 2, 2, 1164, 1166, 5, 42, 22, 2, 1165, 1164, 3, 2, 2, 2, 1165, 1166, 3, 2, 2, 2, 1166, 1167, 3, 2, 2, 2, 1167, 1168, 7, 45, 2, 2, 1168, 1170, 7, 59, 2, 2, 1169, 1171, 5, 398, 200, 2, 1170, 1169, 3, 2, 2, 2, 1170, 1171, 3, 2, 2, 2, 1171, 1172, 3, 2, 2, 2, 1172, 1173, 7, 60, 2, 2, 1173, 1211, 7, 65, 2, 2, 1174, 1176, 5, 42, 22, 2, 1175, 1174, 3, 2, 2, 2, 1175, 1176, 3, 2, 2, 2, 1176, 1177, 3, 2, 2, 2, 1177, 1178, 7, 42, 2, 2, 1178, 1180, 7, 59, 2, 2, 1179, 1181, 5, 398, 200, 2, 1180, 1179, 3, 2, 2, 2, 1180, 1181, 3, 2, 2, 2, 1181, 1182, 3, 2, 2, 2, 1182, 1183, 7, 60, 2, 2, 1183, 1211, 7, 65, 2, 2, 1184, 1185, 5, 58, 30, 2, 1185, 1187, 7, 67, 2, 2, 1186, 1188, 5, 42, 22, 2, 1187, 1186, 3, 2, 2, 2, 1187, 1188, 3, 2, 2, 2, 1188, 1189, 3, 2, 2, 2, 1189, 1190, 7, 42, 2, 2, 1190, 1192, 7, 59, 2, 2, 1191, 1193, 5, 398, 200, 2, 1192, 1191, 3, 2, 2, 2, 1192, 1193, 3, 2, 2, 2, 1193, 1194, 3, 2, 2, 2, 1194, 1195, 7, 60, 2, 2, 1195, 1196, 7, 65, 2, 2, 1196, 1211, 3, 2, 2, 2, 1197, 1198, 5, 352, 177, 2, 1198, 1200, 7, 67, 2, 2, 1199, 1201, 5, 42, 22, 2, 1200, 1199, 3, 2, 2, 2, 1200, 1201, 3, 2, 2, 2, 1201, 1202, 3, 2, 2, 2, 1202, 1203, 7, 42, 2, 2, 1203, 1205, 7, 59, 2, 2, 1204, 1206, 5, 398, 200, 2, 1205, 1204, 3, 2, 2, 2, 1205, 1206, 3, 2, 2, 2, 1206, 1207, 3, 2, 2, 2, 1207, 1208, 7, 60, 2, 2, 1208, 1209, 7, 65, 2, 2, 1209, 1211, 3, 2, 2, 2, 1210, 1165, 3, 2, 2, 2, 1210, 1175, 3, 2, 2, 2, 1210, 1184, 3, 2, 2, 2, 1210, 1197, 3, 2, 2, 2, 1211, 185, 3, 2, 2, 2, 1212, 1214, 5, 86, 44, 2, 1213, 1212, 3, 2, 2, 2, 1214, 1217, 3, 2, 2, 2, 1215, 1213, 3, 2, 2, 2, 1215, 1216, 3, 2, 2, 2, 1216, 1218, 3, 2, 2, 2, 1217, 1215, 3, 2, 2, 2, 1218, 1219, 7, 18, 2, 2, 1219, 1221, 7, 104, 2, 2, 1220, 1222, 5, 94, 48, 2, 1221, 1220, 3, 2, 2, 2, 1221, 1222, 3, 2, 2, 2, 1222, 1223, 3, 2, 2, 2, 1223, 1224, 5, 188, 95, 2, 1224, 187, 3, 2, 2, 2, 1225, 1227, 7, 61, 2, 2, 1226, 1228, 5, 190, 96, 2, 1227, 1226, 3, 2, 2, 2, 1227, 1228, 3, 2, 2, 2, 1228, 1230, 3, 2, 2, 2, 1229, 1231, 7, 66, 2, 2, 1230, 1229, 3, 2, 2, 2, 1230, 1231, 3, 2, 2, 2, 1231, 1233, 3, 2, 2, 2, 1232, 1234, 5, 196, 99, 2, 1233, 1232, 3, 2, 2, 2, 1233, 1234, 3, 2, 2, 2, 1234, 1235, 3, 2, 2, 2, 1235, 1236, 7, 62, 2, 2, 1236, 189, 3, 2, 2, 2, 1237, 1242, 5, 192, 97, 2, 1238, 1239, 7, 66, 2, 2, 1239, 1241, 5, 192, 97, 2, 1240, 1238, 3, 2, 2, 2, 1241, 1244, 3, 2, 2, 2, 1242, 1240, 3, 2, 2, 2, 1242, 1243, 3, 2, 2, 2, 1243, 191, 3, 2, 2, 2, 1244, 1242, 3, 2, 2, 2, 1245, 1247, 5, 194, 98, 2, 1246, 1245, 3, 2, 2, 2, 1247, 1250, 3, 2, 2, 2, 1248, 1246, 3, 2, 2, 2, 1248, 1249, 3, 2, 2, 2, 1249, 1251, 3, 2, 2, 2, 1250, 1248, 3, 2, 2, 2, 1251, 1257, 7, 104, 2, 2, 1252, 1254, 7, 59, 2, 2, 1253, 1255, 5, 398, 200, 2, 1254, 1253, 3, 2, 2, 2, 1254, 1255, 3, 2, 2, 2, 1255, 1256, 3, 2, 2, 2, 1256, 1258, 7, 60, 2, 2, 1257, 1252, 3, 2, 2, 2, 1257, 1258, 3, 2, 2, 2, 1258, 1260, 3, 2, 2, 2, 1259, 1261, 5, 98, 50, 2, 1260, 1259, 3, 2, 2, 2, 1260, 1261, 3, 2, 2, 2, 1261, 193, 3, 2, 2, 2, 1262, 1263, 5, 230, 116, 2, 1263, 195, 3, 2, 2, 2, 1264, 1268, 7, 65, 2, 2, 1265, 1267, 5, 100, 51, 2, 1266, 1265, 3, 2, 2, 2, 1267, 1270, 3, 2, 2, 2, 1268, 1266, 3, 2, 2, 2, 1268, 1269, 3, 2, 2, 2, 1269, 197, 3, 2, 2, 2, 1270, 1268, 3, 2, 2, 2, 1271, 1274, 5, 200, 101, 2, 1272, 1274, 5, 218, 110, 2, 1273, 1271, 3, 2, 2, 2, 1273, 1272, 3, 2, 2, 2, 1274, 199, 3, 2, 2, 2, 1275, 1277, 5, 202, 102, 2, 1276, 1275, 3, 2, 2, 2, 1277, 1280, 3, 2, 2, 2, 1278, 1276, 3, 2, 2, 2, 1278, 1279, 3, 2, 2, 2, 1279, 1281, 3, 2, 2, 2, 1280, 1278, 3, 2, 2, 2, 1281, 1282, 7, 30, 2, 2, 1282, 1284, 7, 104, 2, 2, 1283, 1285, 5, 88, 45, 2, 1284, 1283, 3, 2, 2, 2, 1284, 1285, 3, 2, 2, 2, 1285, 1287, 3, 2, 2, 2, 1286, 1288, 5, 204, 103, 2, 1287, 1286, 3, 2, 2, 2, 1287, 1288, 3, 2, 2, 2, 1288, 1289, 3, 2, 2, 2, 1289, 1290, 5, 206, 104, 2, 1290, 201, 3, 2, 2, 2, 1291, 1299, 5, 230, 116, 2, 1292, 1299, 7, 37, 2, 2, 1293, 1299, 7, 36, 2, 2, 1294, 1299, 7, 35, 2, 2, 1295, 1299, 7, 3, 2, 2, 1296, 1299, 7, 40, 2, 2, 1297, 1299, 7, 41, 2, 2, 1298, 1291, 3, 2, 2, 2, 1298, 1292, 3, 2, 2, 2, 1298, 1293, 3, 2, 2, 2, 1298, 1294, 3, 2, 2, 2, 1298, 1295, 3, 2, 2, 2, 1298, 1296, 3, 2, 2, 2, 1298, 1297, 3, 2, 2, 2, 1299, 203, 3, 2, 2, 2, 1300, 1301, 7, 19, 2, 2, 1301, 1302, 5, 96, 49, 2, 1302, 205, 3, 2, 2, 2, 1303, 1307, 7, 61, 2, 2, 1304, 1306, 5, 208, 105, 2, 1305, 1304, 3, 2, 2, 2, 1306, 1309, 3, 2, 2, 2, 1307, 1305, 3, 2, 2, 2, 1307, 1308, 3, 2, 2, 2, 1308, 1310, 3, 2, 2, 2, 1309, 1307, 3, 2, 2, 2, 1310, 1311, 7, 62, 2, 2, 1311, 207, 3, 2, 2, 2, 1312, 1318, 5, 210, 106, 2, 1313, 1318, 5, 214, 108, 2, 1314, 1318, 5, 82, 42, 2, 1315, 1318, 5, 198, 100, 2, 1316, 1318, 7, 65, 2, 2, 1317, 1312, 3, 2, 2, 2, 1317, 1313, 3, 2, 2, 2, 1317, 1314, 3, 2, 2, 2, 1317, 1315, 3, 2, 2, 2, 1317, 1316, 3, 2, 2, 2, 1318, 209, 3, 2, 2, 2, 1319, 1321, 5, 212, 107, 2, 1320, 1319, 3, 2, 2, 2, 1321, 1324, 3, 2, 2, 2, 1322, 1320, 3, 2, 2, 2, 1322, 1323, 3, 2, 2, 2, 1323, 1325, 3, 2, 2, 2, 1324, 1322, 3, 2, 2, 2, 1325, 1326, 5, 116, 59, 2, 1326, 1327, 5, 108, 55, 2, 1327, 1328, 7, 65, 2, 2, 1328, 211, 3, 2, 2, 2, 1329, 1334, 5, 230, 116, 2, 1330, 1334, 7, 37, 2, 2, 1331, 1334, 7, 40, 2, 2, 1332, 1334, 7, 20, 2, 2, 1333, 1329, 3, 2, 2, 2, 1333, 1330, 3, 2, 2, 2, 1333, 1331, 3, 2, 2, 2, 1333, 1332, 3, 2, 2, 2, 1334, 213, 3, 2, 2, 2, 1335, 1337, 5, 216, 109, 2, 1336, 1335, 3, 2, 2, 2, 1337, 1340, 3, 2, 2, 2, 1338, 1336, 3, 2, 2, 2, 1338, 1339, 3, 2, 2, 2, 1339, 1341, 3, 2, 2, 2, 1340, 1338, 3, 2, 2, 2, 1341, 1342, 5, 144, 73, 2, 1342, 1343, 5, 168, 85, 2, 1343, 215, 3, 2, 2, 2, 1344, 1351, 5, 230, 116, 2, 1345, 1351, 7, 37, 2, 2, 1346, 1351, 7, 3, 2, 2, 1347, 1351, 7, 14, 2, 2, 1348, 1351, 7, 40, 2, 2, 1349, 1351, 7, 41, 2, 2, 1350, 1344, 3, 2, 2, 2, 1350, 1345, 3, 2, 2, 2, 1350, 1346, 3, 2, 2, 2, 1350, 1347, 3, 2, 2, 2, 1350, 1348, 3, 2, 2, 2, 1350, 1349, 3, 2, 2, 2, 1351, 217, 3, 2, 2, 2, 1352, 1354, 5, 202, 102, 2, 1353, 1352, 3, 2, 2, 2, 1354, 1357, 3, 2, 2, 2, 1355, 1353, 3, 2, 2, 2, 1355, 1356, 3, 2, 2, 2, 1356, 1358, 3, 2, 2, 2, 1357, 1355, 3, 2, 2, 2, 1358, 1359, 7, 105, 2, 2, 1359, 1360, 7, 30, 2, 2, 1360, 1361, 7, 104, 2, 2, 1361, 1362, 5, 220, 111, 2, 1362, 219, 3, 2, 2, 2, 1363, 1367, 7, 61, 2, 2, 1364, 1366, 5, 222, 112, 2, 1365, 1364, 3, 2, 2, 2, 1366, 1369, 3, 2, 2, 2, 1367, 1365, 3, 2, 2, 2, 1367, 1368, 3, 2, 2, 2, 1368, 1370, 3, 2, 2, 2, 1369, 1367, 3, 2, 2, 2, 1370, 1371, 7, 62, 2, 2, 1371, 221, 3, 2, 2, 2, 1372, 1378, 5, 224, 113, 2, 1373, 1378, 5, 210, 106, 2, 1374, 1378, 5, 82, 42, 2, 1375, 1378, 5, 198, 100, 2, 1376, 1378, 7, 65, 2, 2, 1377, 1372, 3, 2, 2, 2, 1377, 1373, 3, 2, 2, 2, 1377, 1374, 3, 2, 2, 2, 1377, 1375, 3, 2, 2, 2, 1377, 1376, 3, 2, 2, 2, 1378, 223, 3, 2, 2, 2, 1379, 1381, 5, 226, 114, 2, 1380, 1379, 3, 2, 2, 2, 1381, 1384, 3, 2, 2, 2, 1382, 1380, 3, 2, 2, 2, 1382, 1383, 3, 2, 2, 2, 1383, 1385, 3, 2, 2, 2, 1384, 1382, 3, 2, 2, 2, 1385, 1386, 5, 116, 59, 2, 1386, 1387, 7, 104, 2, 2, 1387, 1388, 7, 59, 2, 2, 1388, 1390, 7, 60, 2, 2, 1389, 1391, 5, 32, 17, 2, 1390, 1389, 3, 2, 2, 2, 1390, 1391, 3, 2, 2, 2, 1391, 1393, 3, 2, 2, 2, 1392, 1394, 5, 228, 115, 2, 1393, 1392, 3, 2, 2, 2, 1393, 1394, 3, 2, 2, 2, 1394, 1395, 3, 2, 2, 2, 1395, 1396, 7, 65, 2, 2, 1396, 225, 3, 2, 2, 2, 1397, 1401, 5, 230, 116, 2, 1398, 1401, 7, 37, 2, 2, 1399, 1401, 7, 3, 2, 2, 1400, 1397, 3, 2, 2, 2, 1400, 1398, 3, 2, 2, 2, 1400, 1399, 3, 2, 2, 2, 1401, 227, 3, 2, 2, 2, 1402, 1403, 7, 14, 2, 2, 1403, 1404, 5, 238, 120, 2, 1404, 229, 3, 2, 2, 2, 1405, 1409, 5, 232, 117, 2, 1406, 1409, 5, 244, 123, 2, 1407, 1409, 5, 246, 124, 2, 1408, 1405, 3, 2, 2, 2, 1408, 1406, 3, 2, 2, 2, 1408, 1407, 3, 2, 2, 2, 1409, 231, 3, 2, 2, 2, 1410, 1411, 7, 105, 2, 2, 1411, 1412, 5, 54, 28, 2, 1412, 1414, 7, 59, 2, 2, 1413, 1415, 5, 234, 118, 2, 1414, 1413, 3, 2, 2, 2, 1414, 1415, 3, 2, 2, 2, 1415, 1416, 3, 2, 2, 2, 1416, 1417, 7, 60, 2, 2, 1417, 233, 3, 2, 2, 2, 1418, 1423, 5, 236, 119, 2, 1419, 1420, 7, 66, 2, 2, 1420, 1422, 5, 236, 119, 2, 1421, 1419, 3, 2, 2, 2, 1422, 1425, 3, 2, 2, 2, 1423, 1421, 3, 2, 2, 2, 1423, 1424, 3, 2, 2, 2, 1424, 235, 3, 2, 2, 2, 1425, 1423, 3, 2, 2, 2, 1426, 1427, 7, 104, 2, 2, 1427, 1428, 7, 68, 2, 2, 1428, 1429, 5, 238, 120, 2, 1429, 237, 3, 2, 2, 2, 1430, 1434, 5, 432, 217, 2, 1431, 1434, 5, 240, 121, 2, 1432, 1434, 5, 230, 116, 2, 1433, 1430, 3, 2, 2, 2, 1433, 1431, 3, 2, 2, 2, 1433, 1432, 3, 2, 2, 2, 1434, 239, 3, 2, 2, 2, 1435, 1437, 7, 61, 2, 2, 1436, 1438, 5, 242, 122, 2, 1437, 1436, 3, 2, 2, 2, 1437, 1438, 3, 2, 2, 2, 1438, 1440, 3, 2, 2, 2, 1439, 1441, 7, 66, 2, 2, 1440, 1439, 3, 2, 2, 2, 1440, 1441, 3, 2, 2, 2, 1441, 1442, 3, 2, 2, 2, 1442, 1443, 7, 62, 2, 2, 1443, 241, 3, 2, 2, 2, 1444, 1449, 5, 238, 120, 2, 1445, 1446, 7, 66, 2, 2, 1446, 1448, 5, 238, 120, 2, 1447, 1445, 3, 2, 2, 2, 1448, 1451, 3, 2, 2, 2, 1449, 1447, 3, 2, 2, 2, 1449, 1450, 3, 2, 2, 2, 1450, 243, 3, 2, 2, 2, 1451, 1449, 3, 2, 2, 2, 1452, 1453, 7, 105, 2, 2, 1453, 1454, 5, 54, 28, 2, 1454, 245, 3, 2, 2, 2, 1455, 1456, 7, 105, 2, 2, 1456, 1457, 5, 54, 28, 2, 1457, 1458, 7, 59, 2, 2, 1458, 1459, 5, 238, 120, 2, 1459, 1460, 7, 60, 2, 2, 1460, 247, 3, 2, 2, 2, 1461, 1463, 7, 61, 2, 2, 1462, 1464, 5, 250, 126, 2, 1463, 1462, 3, 2, 2, 2, 1463, 1464, 3, 2, 2, 2, 1464, 1466, 3, 2, 2, 2, 1465, 1467, 7, 66, 2, 2, 1466, 1465, 3, 2, 2, 2, 1466, 1467, 3, 2, 2, 2, 1467, 1468, 3, 2, 2, 2, 1468, 1469, 7, 62, 2, 2, 1469, 249, 3, 2, 2, 2, 1470, 1475, 5, 114, 58, 2, 1471, 1472, 7, 66, 2, 2, 1472, 1474, 5, 114, 58, 2, 1473, 1471, 3, 2, 2, 2, 1474, 1477, 3, 2, 2, 2, 1475, 1473, 3, 2, 2, 2, 1475, 1476, 3, 2, 2, 2, 1476, 251, 3, 2, 2, 2, 1477, 1475, 3, 2, 2, 2, 1478, 1480, 7, 61, 2, 2, 1479, 1481, 5, 254, 128, 2, 1480, 1479, 3, 2, 2, 2, 1480, 1481, 3, 2, 2, 2, 1481, 1482, 3, 2, 2, 2, 1482, 1483, 7, 62, 2, 2, 1483, 253, 3, 2, 2, 2, 1484, 1486, 5, 256, 129, 2, 1485, 1484, 3, 2, 2, 2, 1486, 1487, 3, 2, 2, 2, 1487, 1485, 3, 2, 2, 2, 1487, 1488, 3, 2, 2, 2, 1488, 255, 3, 2, 2, 2, 1489, 1493, 5, 258, 130, 2, 1490, 1493, 5, 82, 42, 2, 1491, 1493, 5, 262, 132, 2, 1492, 1489, 3, 2, 2, 2, 1492, 1490, 3, 2, 2, 2, 1492, 1491, 3, 2, 2, 2, 1493, 257, 3, 2, 2, 2, 1494, 1495, 5, 260, 131, 2, 1495, 1496, 7, 65, 2, 2, 1496, 259, 3, 2, 2, 2, 1497, 1499, 5, 156, 79, 2, 1498, 1497, 3, 2, 2, 2, 1499, 1502, 3, 2, 2, 2, 1500, 1498, 3, 2, 2, 2, 1500, 1501, 3, 2, 2, 2, 1501, 1503, 3, 2, 2, 2, 1502, 1500, 3, 2, 2, 2, 1503, 1504, 5, 116, 59, 2, 1504, 1505, 5, 108, 55, 2, 1505, 261, 3, 2, 2, 2, 1506, 1513, 5, 266, 134, 2, 1507, 1513, 5, 270, 136, 2, 1508, 1513, 5, 278, 140, 2, 1509, 1513, 5, 280, 141, 2, 1510, 1513, 5, 298, 150, 2, 1511, 1513, 5, 304, 153, 2, 1512, 1506, 3, 2, 2, 2, 1512, 1507, 3, 2, 2, 2, 1512, 1508, 3, 2, 2, 2, 1512, 1509, 3, 2, 2, 2, 1512, 1510, 3, 2, 2, 2, 1512, 1511, 3, 2, 2, 2, 1513, 263, 3, 2, 2, 2, 1514, 1520, 5, 266, 134, 2, 1515, 1520, 5, 272, 137, 2, 1516, 1520, 5, 282, 142, 2, 1517, 1520, 5, 300, 151, 2, 1518, 1520, 5, 306, 154, 2, 1519, 1514, 3, 2, 2, 2, 1519, 1515, 3, 2, 2, 2, 1519, 1516, 3, 2, 2, 2, 1519, 1517, 3, 2, 2, 2, 1519, 1518, 3, 2, 2, 2, 1520, 265, 3, 2, 2, 2, 1521, 1534, 5, 252, 127, 2, 1522, 1534, 5, 268, 135, 2, 1523, 1534, 5, 274, 138, 2, 1524, 1534, 5, 284, 143, 2, 1525, 1534, 5, 286, 144, 2, 1526, 1534, 5, 302, 152, 2, 1527, 1534, 5, 322, 162, 2, 1528, 1534, 5, 324, 163, 2, 1529, 1534, 5, 326, 164, 2, 1530, 1534, 5, 330, 166, 2, 1531, 1534, 5, 328, 165, 2, 1532, 1534, 5, 332, 167, 2, 1533, 1521, 3, 2, 2, 2, 1533, 1522, 3, 2, 2, 2, 1533, 1523, 3, 2, 2, 2, 1533, 1524, 3, 2, 2, 2, 1533, 1525, 3, 2, 2, 2, 1533, 1526, 3, 2, 2, 2, 1533, 1527, 3, 2, 2, 2, 1533, 1528, 3, 2, 2, 2, 1533, 1529, 3, 2, 2, 2, 1533, 1530, 3, 2, 2, 2, 1533, 1531, 3, 2, 2, 2, 1533, 1532, 3, 2, 2, 2, 1534, 267, 3, 2, 2, 2, 1535, 1536, 7, 65, 2, 2, 1536, 269, 3, 2, 2, 2, 1537, 1538, 7, 104, 2, 2, 1538, 1539, 7, 74, 2, 2, 1539, 1540, 5, 262, 132, 2, 1540, 271, 3, 2, 2, 2, 1541, 1542, 7, 104, 2, 2, 1542, 1543, 7, 74, 2, 2, 1543, 1544, 5, 264, 133, 2, 1544, 273, 3, 2, 2, 2, 1545, 1546, 5, 276, 139, 2, 1546, 1547, 7, 65, 2, 2, 1547, 275, 3, 2, 2, 2, 1548, 1556, 5, 426, 214, 2, 1549, 1556, 5, 456, 229, 2, 1550, 1556, 5, 458, 230, 2, 1551, 1556, 5, 464, 233, 2, 1552, 1556, 5, 468, 235, 2, 1553, 1556, 5, 392, 197, 2, 1554, 1556, 5, 372, 187, 2, 1555, 1548, 3, 2, 2, 2, 1555, 1549, 3, 2, 2, 2, 1555, 1550, 3, 2, 2, 2, 1555, 1551, 3, 2, 2, 2, 1555, 1552, 3, 2, 2, 2, 1555, 1553, 3, 2, 2, 2, 1555, 1554, 3, 2, 2, 2, 1556, 277, 3, 2, 2, 2, 1557, 1558, 7, 24, 2, 2, 1558, 1559, 7, 59, 2, 2, 1559, 1560, 5, 414, 208, 2, 1560, 1561, 7, 60, 2, 2, 1561, 1562, 5, 262, 132, 2, 1562, 279, 3, 2, 2, 2, 1563, 1564, 7, 24, 2, 2, 1564, 1565, 7, 59, 2, 2, 1565, 1566, 5, 414, 208, 2, 1566, 1567, 7, 60, 2, 2, 1567, 1568, 5, 264, 133, 2, 1568, 1569, 7, 17, 2, 2, 1569, 1570, 5, 262, 132, 2, 1570, 281, 3, 2, 2, 2, 1571, 1572, 7, 24, 2, 2, 1572, 1573, 7, 59, 2, 2, 1573, 1574, 5, 414, 208, 2, 1574, 1575, 7, 60, 2, 2, 1575, 1576, 5, 264, 133, 2, 1576, 1577, 7, 17, 2, 2, 1577, 1578, 5, 264, 133, 2, 1578, 283, 3, 2, 2, 2, 1579, 1580, 7, 4, 2, 2, 1580, 1581, 5, 414, 208, 2, 1581, 1582, 7, 65, 2, 2, 1582, 1590, 3, 2, 2, 2, 1583, 1584, 7, 4, 2, 2, 1584, 1585, 5, 414, 208, 2, 1585, 1586, 7, 74, 2, 2, 1586, 1587, 5, 414, 208, 2, 1587, 1588, 7, 65, 2, 2, 1588, 1590, 3, 2, 2, 2, 1589, 1579, 3, 2, 2, 2, 1589, 1583, 3, 2, 2, 2, 1590, 285, 3, 2, 2, 2, 1591, 1592, 7, 43, 2, 2, 1592, 1593, 7, 59, 2, 2, 1593, 1594, 5, 414, 208, 2, 1594, 1595, 7, 60, 2, 2, 1595, 1596, 5, 288, 145, 2, 1596, 287, 3, 2, 2, 2, 1597, 1601, 7, 61, 2, 2, 1598, 1600, 5, 290, 146, 2, 1599, 1598, 3, 2, 2, 2, 1600, 1603, 3, 2, 2, 2, 1601, 1599, 3, 2, 2, 2, 1601, 1602, 3, 2, 2, 2, 1602, 1607, 3, 2, 2, 2, 1603, 1601, 3, 2, 2, 2, 1604, 1606, 5, 294, 148, 2, 1605, 1604, 3, 2, 2, 2, 1606, 1609, 3, 2, 2, 2, 1607, 1605, 3, 2, 2, 2, 1607, 1608, 3, 2, 2, 2, 1608, 1610, 3, 2, 2, 2, 1609, 1607, 3, 2, 2, 2, 1610, 1611, 7, 62, 2, 2, 1611, 289, 3, 2, 2, 2, 1612, 1613, 5, 292, 147, 2, 1613, 1614, 5, 254, 128, 2, 1614, 291, 3, 2, 2, 2, 1615, 1619, 5, 294, 148, 2, 1616, 1618, 5, 294, 148, 2, 1617, 1616, 3, 2, 2, 2, 1618, 1621, 3, 2, 2, 2, 1619, 1617, 3, 2, 2, 2, 1619, 1620, 3, 2, 2, 2, 1620, 293, 3, 2, 2, 2, 1621, 1619, 3, 2, 2, 2, 1622, 1623, 7, 8, 2, 2, 1623, 1624, 5, 412, 207, 2, 1624, 1625, 7, 74, 2, 2, 1625, 1633, 3, 2, 2, 2, 1626, 1627, 7, 8, 2, 2, 1627, 1628, 5, 296, 149, 2, 1628, 1629, 7, 74, 2, 2, 1629, 1633, 3, 2, 2, 2, 1630, 1631, 7, 14, 2, 2, 1631, 1633, 7, 74, 2, 2, 1632, 1622, 3, 2, 2, 2, 1632, 1626, 3, 2, 2, 2, 1632, 1630, 3, 2, 2, 2, 1633, 295, 3, 2, 2, 2, 1634, 1635, 7, 104, 2, 2, 1635, 297, 3, 2, 2, 2, 1636, 1637, 7, 52, 2, 2, 1637, 1638, 7, 59, 2, 2, 1638, 1639, 5, 414, 208, 2, 1639, 1640, 7, 60, 2, 2, 1640, 1641, 5, 262, 132, 2, 1641, 299, 3, 2, 2, 2, 1642, 1643, 7, 52, 2, 2, 1643, 1644, 7, 59, 2, 2, 1644, 1645, 5, 414, 208, 2, 1645, 1646, 7, 60, 2, 2, 1646, 1647, 5, 264, 133, 2, 1647, 301, 3, 2, 2, 2, 1648, 1649, 7, 15, 2, 2, 1649, 1650, 5, 262, 132, 2, 1650, 1651, 7, 52, 2, 2, 1651, 1652, 7, 59, 2, 2, 1652, 1653, 5, 414, 208, 2, 1653, 1654, 7, 60, 2, 2, 1654, 1655, 7, 65, 2, 2, 1655, 303, 3, 2, 2, 2, 1656, 1659, 5, 308, 155, 2, 1657, 1659, 5, 318, 160, 2, 1658, 1656, 3, 2, 2, 2, 1658, 1657, 3, 2, 2, 2, 1659, 305, 3, 2, 2, 2, 1660, 1663, 5, 310, 156, 2, 1661, 1663, 5, 320, 161, 2, 1662, 1660, 3, 2, 2, 2, 1662, 1661, 3, 2, 2, 2, 1663, 307, 3, 2, 2, 2, 1664, 1665, 7, 23, 2, 2, 1665, 1667, 7, 59, 2, 2, 1666, 1668, 5, 312, 157, 2, 1667, 1666, 3, 2, 2, 2, 1667, 1668, 3, 2, 2, 2, 1668, 1669, 3, 2, 2, 2, 1669, 1671, 7, 65, 2, 2, 1670, 1672, 5, 414, 208, 2, 1671, 1670, 3, 2, 2, 2, 1671, 1672, 3, 2, 2, 2, 1672, 1673, 3, 2, 2, 2, 1673, 1675, 7, 65, 2, 2, 1674, 1676, 5, 314, 158, 2, 1675, 1674, 3, 2, 2, 2, 1675, 1676, 3, 2, 2, 2, 1676, 1677, 3, 2, 2, 2, 1677, 1678, 7, 60, 2, 2, 1678, 1679, 5, 262, 132, 2, 1679, 309, 3, 2, 2, 2, 1680, 1681, 7, 23, 2, 2, 1681, 1683, 7, 59, 2, 2, 1682, 1684, 5, 312, 157, 2, 1683, 1682, 3, 2, 2, 2, 1683, 1684, 3, 2, 2, 2, 1684, 1685, 3, 2, 2, 2, 1685, 1687, 7, 65, 2, 2, 1686, 1688, 5, 414, 208, 2, 1687, 1686, 3, 2, 2, 2, 1687, 1688, 3, 2, 2, 2, 1688, 1689, 3, 2, 2, 2, 1689, 1691, 7, 65, 2, 2, 1690, 1692, 5, 314, 158, 2, 1691, 1690, 3, 2, 2, 2, 1691, 1692, 3, 2, 2, 2, 1692, 1693, 3, 2, 2, 2, 1693, 1694, 7, 60, 2, 2, 1694, 1695, 5, 264, 133, 2, 1695, 311, 3, 2, 2, 2, 1696, 1699, 5, 316, 159, 2, 1697, 1699, 5, 260, 131, 2, 1698, 1696, 3, 2, 2, 2, 1698, 1697, 3, 2, 2, 2, 1699, 313, 3, 2, 2, 2, 1700, 1701, 5, 316, 159, 2, 1701, 315, 3, 2, 2, 2, 1702, 1707, 5, 276, 139, 2, 1703, 1704, 7, 66, 2, 2, 1704, 1706, 5, 276, 139, 2, 1705, 1703, 3, 2, 2, 2, 1706, 1709, 3, 2, 2, 2, 1707, 1705, 3, 2, 2, 2, 1707, 1708, 3, 2, 2, 2, 1708, 317, 3, 2, 2, 2, 1709, 1707, 3, 2, 2, 2, 1710, 1711, 7, 23, 2, 2, 1711, 1715, 7, 59, 2, 2, 1712, 1714, 5, 156, 79, 2, 1713, 1712, 3, 2, 2, 2, 1714, 1717, 3, 2, 2, 2, 1715, 1713, 3, 2, 2, 2, 1715, 1716, 3, 2, 2, 2, 1716, 1718, 3, 2, 2, 2, 1717, 1715, 3, 2, 2, 2, 1718, 1719, 5, 116, 59, 2, 1719, 1720, 5, 112, 57, 2, 1720, 1721, 7, 74, 2, 2, 1721, 1722, 5, 414, 208, 2, 1722, 1723, 7, 60, 2, 2, 1723, 1724, 5, 262, 132, 2, 1724, 319, 3, 2, 2, 2, 1725, 1726, 7, 23, 2, 2, 1726, 1730, 7, 59, 2, 2, 1727, 1729, 5, 156, 79, 2, 1728, 1727, 3, 2, 2, 2, 1729, 1732, 3, 2, 2, 2, 1730, 1728, 3, 2, 2, 2, 1730, 1731, 3, 2, 2, 2, 1731, 1733, 3, 2, 2, 2, 1732, 1730, 3, 2, 2, 2, 1733, 1734, 5, 116, 59, 2, 1734, 1735, 5, 112, 57, 2, 1735, 1736, 7, 74, 2, 2, 1736, 1737, 5, 414, 208, 2, 1737, 1738, 7, 60, 2, 2, 1738, 1739, 5, 264, 133, 2, 1739, 321, 3, 2, 2, 2, 1740, 1742, 7, 6, 2, 2, 1741, 1743, 7, 104, 2, 2, 1742, 1741, 3, 2, 2, 2, 1742, 1743, 3, 2, 2, 2, 1743, 1744, 3, 2, 2, 2, 1744, 1745, 7, 65, 2, 2, 1745, 323, 3, 2, 2, 2, 1746, 1748, 7, 13, 2, 2, 1747, 1749, 7, 104, 2, 2, 1748, 1747, 3, 2, 2, 2, 1748, 1749, 3, 2, 2, 2, 1749, 1750, 3, 2, 2, 2, 1750, 1751, 7, 65, 2, 2, 1751, 325, 3, 2, 2, 2, 1752, 1754, 7, 38, 2, 2, 1753, 1755, 5, 414, 208, 2, 1754, 1753, 3, 2, 2, 2, 1754, 1755, 3, 2, 2, 2, 1755, 1756, 3, 2, 2, 2, 1756, 1757, 7, 65, 2, 2, 1757, 327, 3, 2, 2, 2, 1758, 1759, 7, 46, 2, 2, 1759, 1760, 5, 414, 208, 2, 1760, 1761, 7, 65, 2, 2, 1761, 329, 3, 2, 2, 2, 1762, 1763, 7, 44, 2, 2, 1763, 1764, 7, 59, 2, 2, 1764, 1765, 5, 414, 208, 2, 1765, 1766, 7, 60, 2, 2, 1766, 1767, 5, 252, 127, 2, 1767, 331, 3, 2, 2, 2, 1768, 1769, 7, 49, 2, 2, 1769, 1770, 5, 252, 127, 2, 1770, 1771, 5, 334, 168, 2, 1771, 1781, 3, 2, 2, 2, 1772, 1773, 7, 49, 2, 2, 1773, 1775, 5, 252, 127, 2, 1774, 1776, 5, 334, 168, 2, 1775, 1774, 3, 2, 2, 2, 1775, 1776, 3, 2, 2, 2, 1776, 1777, 3, 2, 2, 2, 1777, 1778, 5, 342, 172, 2, 1778, 1781, 3, 2, 2, 2, 1779, 1781, 5, 344, 173, 2, 1780, 1768, 3, 2, 2, 2, 1780, 1772, 3, 2, 2, 2, 1780, 1779, 3, 2, 2, 2, 1781, 333, 3, 2, 2, 2, 1782, 1786, 5, 336, 169, 2, 1783, 1785, 5, 336, 169, 2, 1784, 1783, 3, 2, 2, 2, 1785, 1788, 3, 2, 2, 2, 1786, 1784, 3, 2, 2, 2, 1786, 1787, 3, 2, 2, 2, 1787, 335, 3, 2, 2, 2, 1788, 1786, 3, 2, 2, 2, 1789, 1790, 7, 9, 2, 2, 1790, 1791, 7, 59, 2, 2, 1791, 1792, 5, 338, 170, 2, 1792, 1793, 7, 60, 2, 2, 1793, 1794, 5, 252, 127, 2, 1794, 337, 3, 2, 2, 2, 1795, 1797, 5, 156, 79, 2, 1796, 1795, 3, 2, 2, 2, 1797, 1800, 3, 2, 2, 2, 1798, 1796, 3, 2, 2, 2, 1798, 1799, 3, 2, 2, 2, 1799, 1801, 3, 2, 2, 2, 1800, 1798, 3, 2, 2, 2, 1801, 1802, 5, 340, 171, 2, 1802, 1803, 5, 112, 57, 2, 1803, 339, 3, 2, 2, 2, 1804, 1809, 5, 124, 63, 2, 1805, 1806, 7, 88, 2, 2, 1806, 1808, 5, 16, 9, 2, 1807, 1805, 3, 2, 2, 2, 1808, 1811, 3, 2, 2, 2, 1809, 1807, 3, 2, 2, 2, 1809, 1810, 3, 2, 2, 2, 1810, 341, 3, 2, 2, 2, 1811, 1809, 3, 2, 2, 2, 1812, 1813, 7, 21, 2, 2, 1813, 1814, 5, 252, 127, 2, 1814, 343, 3, 2, 2, 2, 1815, 1816, 7, 49, 2, 2, 1816, 1817, 5, 346, 174, 2, 1817, 1819, 5, 252, 127, 2, 1818, 1820, 5, 334, 168, 2, 1819, 1818, 3, 2, 2, 2, 1819, 1820, 3, 2, 2, 2, 1820, 1822, 3, 2, 2, 2, 1821, 1823, 5, 342, 172, 2, 1822, 1821, 3, 2, 2, 2, 1822, 1823, 3, 2, 2, 2, 1823, 345, 3, 2, 2, 2, 1824, 1825, 7, 59, 2, 2, 1825, 1827, 5, 348, 175, 2, 1826, 1828, 7, 65, 2, 2, 1827, 1826, 3, 2, 2, 2, 1827, 1828, 3, 2, 2, 2, 1828, 1829, 3, 2, 2, 2, 1829, 1830, 7, 60, 2, 2, 1830, 347, 3, 2, 2, 2, 1831, 1836, 5, 350, 176, 2, 1832, 1833, 7, 65, 2, 2, 1833, 1835, 5, 350, 176, 2, 1834, 1832, 3, 2, 2, 2, 1835, 1838, 3, 2, 2, 2, 1836, 1834, 3, 2, 2, 2, 1836, 1837, 3, 2, 2, 2, 1837, 349, 3, 2, 2, 2, 1838, 1836, 3, 2, 2, 2, 1839, 1841, 5, 156, 79, 2, 1840, 1839, 3, 2, 2, 2, 1841, 1844, 3, 2, 2, 2, 1842, 1840, 3, 2, 2, 2, 1842, 1843, 3, 2, 2, 2, 1843, 1845, 3, 2, 2, 2, 1844, 1842, 3, 2, 2, 2, 1845, 1846, 5, 116, 59, 2, 1846, 1847, 5, 112, 57, 2, 1847, 1848, 7, 68, 2, 2, 1848, 1849, 5, 414, 208, 2, 1849, 351, 3, 2, 2, 2, 1850, 1853, 5, 366, 184, 2, 1851, 1853, 5, 406, 204, 2, 1852, 1850, 3, 2, 2, 2, 1852, 1851, 3, 2, 2, 2, 1853, 1857, 3, 2, 2, 2, 1854, 1856, 5, 360, 181, 2, 1855, 1854, 3, 2, 2, 2, 1856, 1859, 3, 2, 2, 2, 1857, 1855, 3, 2, 2, 2, 1857, 1858, 3, 2, 2, 2, 1858, 353, 3, 2, 2, 2, 1859, 1857, 3, 2, 2, 2, 1860, 1890, 5, 2, 2, 2, 1861, 1866, 5, 54, 28, 2, 1862, 1863, 7, 63, 2, 2, 1863, 1865, 7, 64, 2, 2, 1864, 1862, 3, 2, 2, 2, 1865, 1868, 3, 2, 2, 2, 1866, 1864, 3, 2, 2, 2, 1866, 1867, 3, 2, 2, 2, 1867, 1869, 3, 2, 2, 2, 1868, 1866, 3, 2, 2, 2, 1869, 1870, 7, 67, 2, 2, 1870, 1871, 7, 11, 2, 2, 1871, 1890, 3, 2, 2, 2, 1872, 1873, 7, 50, 2, 2, 1873, 1874, 7, 67, 2, 2, 1874, 1890, 7, 11, 2, 2, 1875, 1890, 7, 45, 2, 2, 1876, 1877, 5, 54, 28, 2, 1877, 1878, 7, 67, 2, 2, 1878, 1879, 7, 45, 2, 2, 1879, 1890, 3, 2, 2, 2, 1880, 1881, 7, 59, 2, 2, 1881, 1882, 5, 414, 208, 2, 1882, 1883, 7, 60, 2, 2, 1883, 1890, 3, 2, 2, 2, 1884, 1890, 5, 372, 187, 2, 1885, 1890, 5, 380, 191, 2, 1886, 1890, 5, 386, 194, 2, 1887, 1890, 5, 392, 197, 2, 1888, 1890, 5, 400, 201, 2, 1889, 1860, 3, 2, 2, 2, 1889, 1861, 3, 2, 2, 2, 1889, 1872, 3, 2, 2, 2, 1889, 1875, 3, 2, 2, 2, 1889, 1876, 3, 2, 2, 2, 1889, 1880, 3, 2, 2, 2, 1889, 1884, 3, 2, 2, 2, 1889, 1885, 3, 2, 2, 2, 1889, 1886, 3, 2, 2, 2, 1889, 1887, 3, 2, 2, 2, 1889, 1888, 3, 2, 2, 2, 1890, 355, 3, 2, 2, 2, 1891, 1892, 3, 2, 2, 2, 1892, 357, 3, 2, 2, 2, 1893, 1922, 5, 2, 2, 2, 1894, 1899, 5, 54, 28, 2, 1895, 1896, 7, 63, 2, 2, 1896, 1898, 7, 64, 2, 2, 1897, 1895, 3, 2, 2, 2, 1898, 1901, 3, 2, 2, 2, 1899, 1897, 3, 2, 2, 2, 1899, 1900, 3, 2, 2, 2, 1900, 1902, 3, 2, 2, 2, 1901, 1899, 3, 2, 2, 2, 1902, 1903, 7, 67, 2, 2, 1903, 1904, 7, 11, 2, 2, 1904, 1922, 3, 2, 2, 2, 1905, 1906, 7, 50, 2, 2, 1906, 1907, 7, 67, 2, 2, 1907, 1922, 7, 11, 2, 2, 1908, 1922, 7, 45, 2, 2, 1909, 1910, 5, 54, 28, 2, 1910, 1911, 7, 67, 2, 2, 1911, 1912, 7, 45, 2, 2, 1912, 1922, 3, 2, 2, 2, 1913, 1914, 7, 59, 2, 2, 1914, 1915, 5, 414, 208, 2, 1915, 1916, 7, 60, 2, 2, 1916, 1922, 3, 2, 2, 2, 1917, 1922, 5, 372, 187, 2, 1918, 1922, 5, 380, 191, 2, 1919, 1922, 5, 392, 197, 2, 1920, 1922, 5, 400, 201, 2, 1921, 1893, 3, 2, 2, 2, 1921, 1894, 3, 2, 2, 2, 1921, 1905, 3, 2, 2, 2, 1921, 1908, 3, 2, 2, 2, 1921, 1909, 3, 2, 2, 2, 1921, 1913, 3, 2, 2, 2, 1921, 1917, 3, 2, 2, 2, 1921, 1918, 3, 2, 2, 2, 1921, 1919, 3, 2, 2, 2, 1921, 1920, 3, 2, 2, 2, 1922, 359, 3, 2, 2, 2, 1923, 1929, 5, 374, 188, 2, 1924, 1929, 5, 382, 192, 2, 1925, 1929, 5, 388, 195, 2, 1926, 1929, 5, 394, 198, 2, 1927, 1929, 5, 402, 202, 2, 1928, 1923, 3, 2, 2, 2, 1928, 1924, 3, 2, 2, 2, 1928, 1925, 3, 2, 2, 2, 1928, 1926, 3, 2, 2, 2, 1928, 1927, 3, 2, 2, 2, 1929, 361, 3, 2, 2, 2, 1930, 1931, 3, 2, 2, 2, 1931, 363, 3, 2, 2, 2, 1932, 1937, 5, 374, 188, 2, 1933, 1937, 5, 382, 192, 2, 1934, 1937, 5, 394, 198, 2, 1935, 1937, 5, 402, 202, 2, 1936, 1932, 3, 2, 2, 2, 1936, 1933, 3, 2, 2, 2, 1936, 1934, 3, 2, 2, 2, 1936, 1935, 3, 2, 2, 2, 1937, 365, 3, 2, 2, 2, 1938, 1979, 5, 2, 2, 2, 1939, 1944, 5, 54, 28, 2, 1940, 1941, 7, 63, 2, 2, 1941, 1943, 7, 64, 2, 2, 1942, 1940, 3, 2, 2, 2, 1943, 1946, 3, 2, 2, 2, 1944, 1942, 3, 2, 2, 2, 1944, 1945, 3, 2, 2, 2, 1945, 1947, 3, 2, 2, 2, 1946, 1944, 3, 2, 2, 2, 1947, 1948, 7, 67, 2, 2, 1948, 1949, 7, 11, 2, 2, 1949, 1979, 3, 2, 2, 2, 1950, 1955, 5, 118, 60, 2, 1951, 1952, 7, 63, 2, 2, 1952, 1954, 7, 64, 2, 2, 1953, 1951, 3, 2, 2, 2, 1954, 1957, 3, 2, 2, 2, 1955, 1953, 3, 2, 2, 2, 1955, 1956, 3, 2, 2, 2, 1956, 1958, 3, 2, 2, 2, 1957, 1955, 3, 2, 2, 2, 1958, 1959, 7, 67, 2, 2, 1959, 1960, 7, 11, 2, 2, 1960, 1979, 3, 2, 2, 2, 1961, 1962, 7, 50, 2, 2, 1962, 1963, 7, 67, 2, 2, 1963, 1979, 7, 11, 2, 2, 1964, 1979, 7, 45, 2, 2, 1965, 1966, 5, 54, 28, 2, 1966, 1967, 7, 67, 2, 2, 1967, 1968, 7, 45, 2, 2, 1968, 1979, 3, 2, 2, 2, 1969, 1970, 7, 59, 2, 2, 1970, 1971, 5, 414, 208, 2, 1971, 1972, 7, 60, 2, 2, 1972, 1979, 3, 2, 2, 2, 1973, 1979, 5, 376, 189, 2, 1974, 1979, 5, 384, 193, 2, 1975, 1979, 5, 390, 196, 2, 1976, 1979, 5, 396, 199, 2, 1977, 1979, 5, 404, 203, 2, 1978, 1938, 3, 2, 2, 2, 1978, 1939, 3, 2, 2, 2, 1978, 1950, 3, 2, 2, 2, 1978, 1961, 3, 2, 2, 2, 1978, 1964, 3, 2, 2, 2, 1978, 1965, 3, 2, 2, 2, 1978, 1969, 3, 2, 2, 2, 1978, 1973, 3, 2, 2, 2, 1978, 1974, 3, 2, 2, 2, 1978, 1975, 3, 2, 2, 2, 1978, 1976, 3, 2, 2, 2, 1978, 1977, 3, 2, 2, 2, 1979, 367, 3, 2, 2, 2, 1980, 1981, 3, 2, 2, 2, 1981, 369, 3, 2, 2, 2, 1982, 2022, 5, 2, 2, 2, 1983, 1988, 5, 54, 28, 2, 1984, 1985, 7, 63, 2, 2, 1985, 1987, 7, 64, 2, 2, 1986, 1984, 3, 2, 2, 2, 1987, 1990, 3, 2, 2, 2, 1988, 1986, 3, 2, 2, 2, 1988, 1989, 3, 2, 2, 2, 1989, 1991, 3, 2, 2, 2, 1990, 1988, 3, 2, 2, 2, 1991, 1992, 7, 67, 2, 2, 1992, 1993, 7, 11, 2, 2, 1993, 2022, 3, 2, 2, 2, 1994, 1999, 5, 118, 60, 2, 1995, 1996, 7, 63, 2, 2, 1996, 1998, 7, 64, 2, 2, 1997, 1995, 3, 2, 2, 2, 1998, 2001, 3, 2, 2, 2, 1999, 1997, 3, 2, 2, 2, 1999, 2000, 3, 2, 2, 2, 2000, 2002, 3, 2, 2, 2, 2001, 1999, 3, 2, 2, 2, 2002, 2003, 7, 67, 2, 2, 2003, 2004, 7, 11, 2, 2, 2004, 2022, 3, 2, 2, 2, 2005, 2006, 7, 50, 2, 2, 2006, 2007, 7, 67, 2, 2, 2007, 2022, 7, 11, 2, 2, 2008, 2022, 7, 45, 2, 2, 2009, 2010, 5, 54, 28, 2, 2010, 2011, 7, 67, 2, 2, 2011, 2012, 7, 45, 2, 2, 2012, 2022, 3, 2, 2, 2, 2013, 2014, 7, 59, 2, 2, 2014, 2015, 5, 414, 208, 2, 2015, 2016, 7, 60, 2, 2, 2016, 2022, 3, 2, 2, 2, 2017, 2022, 5, 376, 189, 2, 2018, 2022, 5, 384, 193, 2, 2019, 2022, 5, 396, 199, 2, 2020, 2022, 5, 404, 203, 2, 2021, 1982, 3, 2, 2, 2, 2021, 1983, 3, 2, 2, 2, 2021, 1994, 3, 2, 2, 2, 2021, 2005, 3, 2, 2, 2, 2021, 2008, 3, 2, 2, 2, 2021, 2009, 3, 2, 2, 2, 2021, 2013, 3, 2, 2, 2, 2021, 2017, 3, 2, 2, 2, 2021, 2018, 3, 2, 2, 2, 2021, 2019, 3, 2, 2, 2, 2021, 2020, 3, 2, 2, 2, 2022, 371, 3, 2, 2, 2, 2023, 2025, 7, 33, 2, 2, 2024, 2026, 5, 42, 22, 2, 2025, 2024, 3, 2, 2, 2, 2025, 2026, 3, 2, 2, 2, 2026, 2030, 3, 2, 2, 2, 2027, 2029, 5, 230, 116, 2, 2028, 2027, 3, 2, 2, 2, 2029, 2032, 3, 2, 2, 2, 2030, 2028, 3, 2, 2, 2, 2030, 2031, 3, 2, 2, 2, 2031, 2033, 3, 2, 2, 2, 2032, 2030, 3, 2, 2, 2, 2033, 2044, 7, 104, 2, 2, 2034, 2038, 7, 67, 2, 2, 2035, 2037, 5, 230, 116, 2, 2036, 2035, 3, 2, 2, 2, 2037, 2040, 3, 2, 2, 2, 2038, 2036, 3, 2, 2, 2, 2038, 2039, 3, 2, 2, 2, 2039, 2041, 3, 2, 2, 2, 2040, 2038, 3, 2, 2, 2, 2041, 2043, 7, 104, 2, 2, 2042, 2034, 3, 2, 2, 2, 2043, 2046, 3, 2, 2, 2, 2044, 2042, 3, 2, 2, 2, 2044, 2045, 3, 2, 2, 2, 2045, 2048, 3, 2, 2, 2, 2046, 2044, 3, 2, 2, 2, 2047, 2049, 5, 378, 190, 2, 2048, 2047, 3, 2, 2, 2, 2048, 2049, 3, 2, 2, 2, 2049, 2050, 3, 2, 2, 2, 2050, 2052, 7, 59, 2, 2, 2051, 2053, 5, 398, 200, 2, 2052, 2051, 3, 2, 2, 2, 2052, 2053, 3, 2, 2, 2, 2053, 2054, 3, 2, 2, 2, 2054, 2056, 7, 60, 2, 2, 2055, 2057, 5, 98, 50, 2, 2056, 2055, 3, 2, 2, 2, 2056, 2057, 3, 2, 2, 2, 2057, 2107, 3, 2, 2, 2, 2058, 2059, 5, 58, 30, 2, 2059, 2060, 7, 67, 2, 2, 2060, 2062, 7, 33, 2, 2, 2061, 2063, 5, 42, 22, 2, 2062, 2061, 3, 2, 2, 2, 2062, 2063, 3, 2, 2, 2, 2063, 2067, 3, 2, 2, 2, 2064, 2066, 5, 230, 116, 2, 2065, 2064, 3, 2, 2, 2, 2066, 2069, 3, 2, 2, 2, 2067, 2065, 3, 2, 2, 2, 2067, 2068, 3, 2, 2, 2, 2068, 2070, 3, 2, 2, 2, 2069, 2067, 3, 2, 2, 2, 2070, 2072, 7, 104, 2, 2, 2071, 2073, 5, 378, 190, 2, 2072, 2071, 3, 2, 2, 2, 2072, 2073, 3, 2, 2, 2, 2073, 2074, 3, 2, 2, 2, 2074, 2076, 7, 59, 2, 2, 2075, 2077, 5, 398, 200, 2, 2076, 2075, 3, 2, 2, 2, 2076, 2077, 3, 2, 2, 2, 2077, 2078, 3, 2, 2, 2, 2078, 2080, 7, 60, 2, 2, 2079, 2081, 5, 98, 50, 2, 2080, 2079, 3, 2, 2, 2, 2080, 2081, 3, 2, 2, 2, 2081, 2107, 3, 2, 2, 2, 2082, 2083, 5, 352, 177, 2, 2083, 2084, 7, 67, 2, 2, 2084, 2086, 7, 33, 2, 2, 2085, 2087, 5, 42, 22, 2, 2086, 2085, 3, 2, 2, 2, 2086, 2087, 3, 2, 2, 2, 2087, 2091, 3, 2, 2, 2, 2088, 2090, 5, 230, 116, 2, 2089, 2088, 3, 2, 2, 2, 2090, 2093, 3, 2, 2, 2, 2091, 2089, 3, 2, 2, 2, 2091, 2092, 3, 2, 2, 2, 2092, 2094, 3, 2, 2, 2, 2093, 2091, 3, 2, 2, 2, 2094, 2096, 7, 104, 2, 2, 2095, 2097, 5, 378, 190, 2, 2096, 2095, 3, 2, 2, 2, 2096, 2097, 3, 2, 2, 2, 2097, 2098, 3, 2, 2, 2, 2098, 2100, 7, 59, 2, 2, 2099, 2101, 5, 398, 200, 2, 2100, 2099, 3, 2, 2, 2, 2100, 2101, 3, 2, 2, 2, 2101, 2102, 3, 2, 2, 2, 2102, 2104, 7, 60, 2, 2, 2103, 2105, 5, 98, 50, 2, 2104, 2103, 3, 2, 2, 2, 2104, 2105, 3, 2, 2, 2, 2105, 2107, 3, 2, 2, 2, 2106, 2023, 3, 2, 2, 2, 2106, 2058, 3, 2, 2, 2, 2106, 2082, 3, 2, 2, 2, 2107, 373, 3, 2, 2, 2, 2108, 2109, 7, 67, 2, 2, 2109, 2111, 7, 33, 2, 2, 2110, 2112, 5, 42, 22, 2, 2111, 2110, 3, 2, 2, 2, 2111, 2112, 3, 2, 2, 2, 2112, 2116, 3, 2, 2, 2, 2113, 2115, 5, 230, 116, 2, 2114, 2113, 3, 2, 2, 2, 2115, 2118, 3, 2, 2, 2, 2116, 2114, 3, 2, 2, 2, 2116, 2117, 3, 2, 2, 2, 2117, 2119, 3, 2, 2, 2, 2118, 2116, 3, 2, 2, 2, 2119, 2121, 7, 104, 2, 2, 2120, 2122, 5, 378, 190, 2, 2121, 2120, 3, 2, 2, 2, 2121, 2122, 3, 2, 2, 2, 2122, 2123, 3, 2, 2, 2, 2123, 2125, 7, 59, 2, 2, 2124, 2126, 5, 398, 200, 2, 2125, 2124, 3, 2, 2, 2, 2125, 2126, 3, 2, 2, 2, 2126, 2127, 3, 2, 2, 2, 2127, 2129, 7, 60, 2, 2, 2128, 2130, 5, 98, 50, 2, 2129, 2128, 3, 2, 2, 2, 2129, 2130, 3, 2, 2, 2, 2130, 375, 3, 2, 2, 2, 2131, 2133, 7, 33, 2, 2, 2132, 2134, 5, 42, 22, 2, 2133, 2132, 3, 2, 2, 2, 2133, 2134, 3, 2, 2, 2, 2134, 2138, 3, 2, 2, 2, 2135, 2137, 5, 230, 116, 2, 2136, 2135, 3, 2, 2, 2, 2137, 2140, 3, 2, 2, 2, 2138, 2136, 3, 2, 2, 2, 2138, 2139, 3, 2, 2, 2, 2139, 2141, 3, 2, 2, 2, 2140, 2138, 3, 2, 2, 2, 2141, 2152, 7, 104, 2, 2, 2142, 2146, 7, 67, 2, 2, 2143, 2145, 5, 230, 116, 2, 2144, 2143, 3, 2, 2, 2, 2145, 2148, 3, 2, 2, 2, 2146, 2144, 3, 2, 2, 2, 2146, 2147, 3, 2, 2, 2, 2147, 2149, 3, 2, 2, 2, 2148, 2146, 3, 2, 2, 2, 2149, 2151, 7, 104, 2, 2, 2150, 2142, 3, 2, 2, 2, 2151, 2154, 3, 2, 2, 2, 2152, 2150, 3, 2, 2, 2, 2152, 2153, 3, 2, 2, 2, 2153, 2156, 3, 2, 2, 2, 2154, 2152, 3, 2, 2, 2, 2155, 2157, 5, 378, 190, 2, 2156, 2155, 3, 2, 2, 2, 2156, 2157, 3, 2, 2, 2, 2157, 2158, 3, 2, 2, 2, 2158, 2160, 7, 59, 2, 2, 2159, 2161, 5, 398, 200, 2, 2160, 2159, 3, 2, 2, 2, 2160, 2161, 3, 2, 2, 2, 2161, 2162, 3, 2, 2, 2, 2162, 2164, 7, 60, 2, 2, 2163, 2165, 5, 98, 50, 2, 2164, 2163, 3, 2, 2, 2, 2164, 2165, 3, 2, 2, 2, 2165, 2191, 3, 2, 2, 2, 2166, 2167, 5, 58, 30, 2, 2167, 2168, 7, 67, 2, 2, 2168, 2170, 7, 33, 2, 2, 2169, 2171, 5, 42, 22, 2, 2170, 2169, 3, 2, 2, 2, 2170, 2171, 3, 2, 2, 2, 2171, 2175, 3, 2, 2, 2, 2172, 2174, 5, 230, 116, 2, 2173, 2172, 3, 2, 2, 2, 2174, 2177, 3, 2, 2, 2, 2175, 2173, 3, 2, 2, 2, 2175, 2176, 3, 2, 2, 2, 2176, 2178, 3, 2, 2, 2, 2177, 2175, 3, 2, 2, 2, 2178, 2180, 7, 104, 2, 2, 2179, 2181, 5, 378, 190, 2, 2180, 2179, 3, 2, 2, 2, 2180, 2181, 3, 2, 2, 2, 2181, 2182, 3, 2, 2, 2, 2182, 2184, 7, 59, 2, 2, 2183, 2185, 5, 398, 200, 2, 2184, 2183, 3, 2, 2, 2, 2184, 2185, 3, 2, 2, 2, 2185, 2186, 3, 2, 2, 2, 2186, 2188, 7, 60, 2, 2, 2187, 2189, 5, 98, 50, 2, 2188, 2187, 3, 2, 2, 2, 2188, 2189, 3, 2, 2, 2, 2189, 2191, 3, 2, 2, 2, 2190, 2131, 3, 2, 2, 2, 2190, 2166, 3, 2, 2, 2, 2191, 377, 3, 2, 2, 2, 2192, 2196, 5, 42, 22, 2, 2193, 2194, 7, 70, 2, 2, 2194, 2196, 7, 69, 2, 2, 2195, 2192, 3, 2, 2, 2, 2195, 2193, 3, 2, 2, 2, 2196, 379, 3, 2, 2, 2, 2197, 2198, 5, 352, 177, 2, 2198, 2199, 7, 67, 2, 2, 2199, 2200, 7, 104, 2, 2, 2200, 2211, 3, 2, 2, 2, 2201, 2202, 7, 42, 2, 2, 2202, 2203, 7, 67, 2, 2, 2203, 2211, 7, 104, 2, 2, 2204, 2205, 5, 54, 28, 2, 2205, 2206, 7, 67, 2, 2, 2206, 2207, 7, 42, 2, 2, 2207, 2208, 7, 67, 2, 2, 2208, 2209, 7, 104, 2, 2, 2209, 2211, 3, 2, 2, 2, 2210, 2197, 3, 2, 2, 2, 2210, 2201, 3, 2, 2, 2, 2210, 2204, 3, 2, 2, 2, 2211, 381, 3, 2, 2, 2, 2212, 2213, 7, 67, 2, 2, 2213, 2214, 7, 104, 2, 2, 2214, 383, 3, 2, 2, 2, 2215, 2216, 7, 42, 2, 2, 2216, 2217, 7, 67, 2, 2, 2217, 2225, 7, 104, 2, 2, 2218, 2219, 5, 54, 28, 2, 2219, 2220, 7, 67, 2, 2, 2220, 2221, 7, 42, 2, 2, 2221, 2222, 7, 67, 2, 2, 2222, 2223, 7, 104, 2, 2, 2223, 2225, 3, 2, 2, 2, 2224, 2215, 3, 2, 2, 2, 2224, 2218, 3, 2, 2, 2, 2225, 385, 3, 2, 2, 2, 2226, 2227, 5, 58, 30, 2, 2227, 2228, 7, 63, 2, 2, 2228, 2229, 5, 414, 208, 2, 2229, 2230, 7, 64, 2, 2, 2230, 2237, 3, 2, 2, 2, 2231, 2232, 5, 358, 180, 2, 2232, 2233, 7, 63, 2, 2, 2233, 2234, 5, 414, 208, 2, 2234, 2235, 7, 64, 2, 2, 2235, 2237, 3, 2, 2, 2, 2236, 2226, 3, 2, 2, 2, 2236, 2231, 3, 2, 2, 2, 2237, 2245, 3, 2, 2, 2, 2238, 2239, 5, 356, 179, 2, 2239, 2240, 7, 63, 2, 2, 2240, 2241, 5, 414, 208, 2, 2241, 2242, 7, 64, 2, 2, 2242, 2244, 3, 2, 2, 2, 2243, 2238, 3, 2, 2, 2, 2244, 2247, 3, 2, 2, 2, 2245, 2243, 3, 2, 2, 2, 2245, 2246, 3, 2, 2, 2, 2246, 387, 3, 2, 2, 2, 2247, 2245, 3, 2, 2, 2, 2248, 2249, 5, 364, 183, 2, 2249, 2250, 7, 63, 2, 2, 2250, 2251, 5, 414, 208, 2, 2251, 2252, 7, 64, 2, 2, 2252, 2260, 3, 2, 2, 2, 2253, 2254, 5, 362, 182, 2, 2254, 2255, 7, 63, 2, 2, 2255, 2256, 5, 414, 208, 2, 2256, 2257, 7, 64, 2, 2, 2257, 2259, 3, 2, 2, 2, 2258, 2253, 3, 2, 2, 2, 2259, 2262, 3, 2, 2, 2, 2260, 2258, 3, 2, 2, 2, 2260, 2261, 3, 2, 2, 2, 2261, 389, 3, 2, 2, 2, 2262, 2260, 3, 2, 2, 2, 2263, 2264, 5, 58, 30, 2, 2264, 2265, 7, 63, 2, 2, 2265, 2266, 5, 414, 208, 2, 2266, 2267, 7, 64, 2, 2, 2267, 2274, 3, 2, 2, 2, 2268, 2269, 5, 370, 186, 2, 2269, 2270, 7, 63, 2, 2, 2270, 2271, 5, 414, 208, 2, 2271, 2272, 7, 64, 2, 2, 2272, 2274, 3, 2, 2, 2, 2273, 2263, 3, 2, 2, 2, 2273, 2268, 3, 2, 2, 2, 2274, 2282, 3, 2, 2, 2, 2275, 2276, 5, 368, 185, 2, 2276, 2277, 7, 63, 2, 2, 2277, 2278, 5, 414, 208, 2, 2278, 2279, 7, 64, 2, 2, 2279, 2281, 3, 2, 2, 2, 2280, 2275, 3, 2, 2, 2, 2281, 2284, 3, 2, 2, 2, 2282, 2280, 3, 2, 2, 2, 2282, 2283, 3, 2, 2, 2, 2283, 391, 3, 2, 2, 2, 2284, 2282, 3, 2, 2, 2, 2285, 2286, 5, 60, 31, 2, 2286, 2288, 7, 59, 2, 2, 2287, 2289, 5, 398, 200, 2, 2288, 2287, 3, 2, 2, 2, 2288, 2289, 3, 2, 2, 2, 2289, 2290, 3, 2, 2, 2, 2290, 2291, 7, 60, 2, 2, 2291, 2354, 3, 2, 2, 2, 2292, 2293, 5, 54, 28, 2, 2293, 2295, 7, 67, 2, 2, 2294, 2296, 5, 42, 22, 2, 2295, 2294, 3, 2, 2, 2, 2295, 2296, 3, 2, 2, 2, 2296, 2297, 3, 2, 2, 2, 2297, 2298, 7, 104, 2, 2, 2298, 2300, 7, 59, 2, 2, 2299, 2301, 5, 398, 200, 2, 2300, 2299, 3, 2, 2, 2, 2300, 2301, 3, 2, 2, 2, 2301, 2302, 3, 2, 2, 2, 2302, 2303, 7, 60, 2, 2, 2303, 2354, 3, 2, 2, 2, 2304, 2305, 5, 58, 30, 2, 2305, 2307, 7, 67, 2, 2, 2306, 2308, 5, 42, 22, 2, 2307, 2306, 3, 2, 2, 2, 2307, 2308, 3, 2, 2, 2, 2308, 2309, 3, 2, 2, 2, 2309, 2310, 7, 104, 2, 2, 2310, 2312, 7, 59, 2, 2, 2311, 2313, 5, 398, 200, 2, 2312, 2311, 3, 2, 2, 2, 2312, 2313, 3, 2, 2, 2, 2313, 2314, 3, 2, 2, 2, 2314, 2315, 7, 60, 2, 2, 2315, 2354, 3, 2, 2, 2, 2316, 2317, 5, 352, 177, 2, 2317, 2319, 7, 67, 2, 2, 2318, 2320, 5, 42, 22, 2, 2319, 2318, 3, 2, 2, 2, 2319, 2320, 3, 2, 2, 2, 2320, 2321, 3, 2, 2, 2, 2321, 2322, 7, 104, 2, 2, 2322, 2324, 7, 59, 2, 2, 2323, 2325, 5, 398, 200, 2, 2324, 2323, 3, 2, 2, 2, 2324, 2325, 3, 2, 2, 2, 2325, 2326, 3, 2, 2, 2, 2326, 2327, 7, 60, 2, 2, 2327, 2354, 3, 2, 2, 2, 2328, 2329, 7, 42, 2, 2, 2329, 2331, 7, 67, 2, 2, 2330, 2332, 5, 42, 22, 2, 2331, 2330, 3, 2, 2, 2, 2331, 2332, 3, 2, 2, 2, 2332, 2333, 3, 2, 2, 2, 2333, 2334, 7, 104, 2, 2, 2334, 2336, 7, 59, 2, 2, 2335, 2337, 5, 398, 200, 2, 2336, 2335, 3, 2, 2, 2, 2336, 2337, 3, 2, 2, 2, 2337, 2338, 3, 2, 2, 2, 2338, 2354, 7, 60, 2, 2, 2339, 2340, 5, 54, 28, 2, 2340, 2341, 7, 67, 2, 2, 2341, 2342, 7, 42, 2, 2, 2342, 2344, 7, 67, 2, 2, 2343, 2345, 5, 42, 22, 2, 2344, 2343, 3, 2, 2, 2, 2344, 2345, 3, 2, 2, 2, 2345, 2346, 3, 2, 2, 2, 2346, 2347, 7, 104, 2, 2, 2347, 2349, 7, 59, 2, 2, 2348, 2350, 5, 398, 200, 2, 2349, 2348, 3, 2, 2, 2, 2349, 2350, 3, 2, 2, 2, 2350, 2351, 3, 2, 2, 2, 2351, 2352, 7, 60, 2, 2, 2352, 2354, 3, 2, 2, 2, 2353, 2285, 3, 2, 2, 2, 2353, 2292, 3, 2, 2, 2, 2353, 2304, 3, 2, 2, 2, 2353, 2316, 3, 2, 2, 2, 2353, 2328, 3, 2, 2, 2, 2353, 2339, 3, 2, 2, 2, 2354, 393, 3, 2, 2, 2, 2355, 2357, 7, 67, 2, 2, 2356, 2358, 5, 42, 22, 2, 2357, 2356, 3, 2, 2, 2, 2357, 2358, 3, 2, 2, 2, 2358, 2359, 3, 2, 2, 2, 2359, 2360, 7, 104, 2, 2, 2360, 2362, 7, 59, 2, 2, 2361, 2363, 5, 398, 200, 2, 2362, 2361, 3, 2, 2, 2, 2362, 2363, 3, 2, 2, 2, 2363, 2364, 3, 2, 2, 2, 2364, 2365, 7, 60, 2, 2, 2365, 395, 3, 2, 2, 2, 2366, 2367, 5, 60, 31, 2, 2367, 2369, 7, 59, 2, 2, 2368, 2370, 5, 398, 200, 2, 2369, 2368, 3, 2, 2, 2, 2369, 2370, 3, 2, 2, 2, 2370, 2371, 3, 2, 2, 2, 2371, 2372, 7, 60, 2, 2, 2372, 2423, 3, 2, 2, 2, 2373, 2374, 5, 54, 28, 2, 2374, 2376, 7, 67, 2, 2, 2375, 2377, 5, 42, 22, 2, 2376, 2375, 3, 2, 2, 2, 2376, 2377, 3, 2, 2, 2, 2377, 2378, 3, 2, 2, 2, 2378, 2379, 7, 104, 2, 2, 2379, 2381, 7, 59, 2, 2, 2380, 2382, 5, 398, 200, 2, 2381, 2380, 3, 2, 2, 2, 2381, 2382, 3, 2, 2, 2, 2382, 2383, 3, 2, 2, 2, 2383, 2384, 7, 60, 2, 2, 2384, 2423, 3, 2, 2, 2, 2385, 2386, 5, 58, 30, 2, 2386, 2388, 7, 67, 2, 2, 2387, 2389, 5, 42, 22, 2, 2388, 2387, 3, 2, 2, 2, 2388, 2389, 3, 2, 2, 2, 2389, 2390, 3, 2, 2, 2, 2390, 2391, 7, 104, 2, 2, 2391, 2393, 7, 59, 2, 2, 2392, 2394, 5, 398, 200, 2, 2393, 2392, 3, 2, 2, 2, 2393, 2394, 3, 2, 2, 2, 2394, 2395, 3, 2, 2, 2, 2395, 2396, 7, 60, 2, 2, 2396, 2423, 3, 2, 2, 2, 2397, 2398, 7, 42, 2, 2, 2398, 2400, 7, 67, 2, 2, 2399, 2401, 5, 42, 22, 2, 2400, 2399, 3, 2, 2, 2, 2400, 2401, 3, 2, 2, 2, 2401, 2402, 3, 2, 2, 2, 2402, 2403, 7, 104, 2, 2, 2403, 2405, 7, 59, 2, 2, 2404, 2406, 5, 398, 200, 2, 2405, 2404, 3, 2, 2, 2, 2405, 2406, 3, 2, 2, 2, 2406, 2407, 3, 2, 2, 2, 2407, 2423, 7, 60, 2, 2, 2408, 2409, 5, 54, 28, 2, 2409, 2410, 7, 67, 2, 2, 2410, 2411, 7, 42, 2, 2, 2411, 2413, 7, 67, 2, 2, 2412, 2414, 5, 42, 22, 2, 2413, 2412, 3, 2, 2, 2, 2413, 2414, 3, 2, 2, 2, 2414, 2415, 3, 2, 2, 2, 2415, 2416, 7, 104, 2, 2, 2416, 2418, 7, 59, 2, 2, 2417, 2419, 5, 398, 200, 2, 2418, 2417, 3, 2, 2, 2, 2418, 2419, 3, 2, 2, 2, 2419, 2420, 3, 2, 2, 2, 2420, 2421, 7, 60, 2, 2, 2421, 2423, 3, 2, 2, 2, 2422, 2366, 3, 2, 2, 2, 2422, 2373, 3, 2, 2, 2, 2422, 2385, 3, 2, 2, 2, 2422, 2397, 3, 2, 2, 2, 2422, 2408, 3, 2, 2, 2, 2423, 397, 3, 2, 2, 2, 2424, 2429, 5, 414, 208, 2, 2425, 2426, 7, 66, 2, 2, 2426, 2428, 5, 414, 208, 2, 2427, 2425, 3, 2, 2, 2, 2428, 2431, 3, 2, 2, 2, 2429, 2427, 3, 2, 2, 2, 2429, 2430, 3, 2, 2, 2, 2430, 399, 3, 2, 2, 2, 2431, 2429, 3, 2, 2, 2, 2432, 2433, 5, 58, 30, 2, 2433, 2435, 7, 92, 2, 2, 2434, 2436, 5, 42, 22, 2, 2435, 2434, 3, 2, 2, 2, 2435, 2436, 3, 2, 2, 2, 2436, 2437, 3, 2, 2, 2, 2437, 2438, 7, 104, 2, 2, 2438, 2480, 3, 2, 2, 2, 2439, 2440, 5, 12, 7, 2, 2440, 2442, 7, 92, 2, 2, 2441, 2443, 5, 42, 22, 2, 2442, 2441, 3, 2, 2, 2, 2442, 2443, 3, 2, 2, 2, 2443, 2444, 3, 2, 2, 2, 2444, 2445, 7, 104, 2, 2, 2445, 2480, 3, 2, 2, 2, 2446, 2447, 5, 352, 177, 2, 2447, 2449, 7, 92, 2, 2, 2448, 2450, 5, 42, 22, 2, 2449, 2448, 3, 2, 2, 2, 2449, 2450, 3, 2, 2, 2, 2450, 2451, 3, 2, 2, 2, 2451, 2452, 7, 104, 2, 2, 2452, 2480, 3, 2, 2, 2, 2453, 2454, 7, 42, 2, 2, 2454, 2456, 7, 92, 2, 2, 2455, 2457, 5, 42, 22, 2, 2456, 2455, 3, 2, 2, 2, 2456, 2457, 3, 2, 2, 2, 2457, 2458, 3, 2, 2, 2, 2458, 2480, 7, 104, 2, 2, 2459, 2460, 5, 54, 28, 2, 2460, 2461, 7, 67, 2, 2, 2461, 2462, 7, 42, 2, 2, 2462, 2464, 7, 92, 2, 2, 2463, 2465, 5, 42, 22, 2, 2464, 2463, 3, 2, 2, 2, 2464, 2465, 3, 2, 2, 2, 2465, 2466, 3, 2, 2, 2, 2466, 2467, 7, 104, 2, 2, 2467, 2480, 3, 2, 2, 2, 2468, 2469, 5, 16, 9, 2, 2469, 2471, 7, 92, 2, 2, 2470, 2472, 5, 42, 22, 2, 2471, 2470, 3, 2, 2, 2, 2471, 2472, 3, 2, 2, 2, 2472, 2473, 3, 2, 2, 2, 2473, 2474, 7, 33, 2, 2, 2474, 2480, 3, 2, 2, 2, 2475, 2476, 5, 30, 16, 2, 2476, 2477, 7, 92, 2, 2, 2477, 2478, 7, 33, 2, 2, 2478, 2480, 3, 2, 2, 2, 2479, 2432, 3, 2, 2, 2, 2479, 2439, 3, 2, 2, 2, 2479, 2446, 3, 2, 2, 2, 2479, 2453, 3, 2, 2, 2, 2479, 2459, 3, 2, 2, 2, 2479, 2468, 3, 2, 2, 2, 2479, 2475, 3, 2, 2, 2, 2480, 401, 3, 2, 2, 2, 2481, 2483, 7, 92, 2, 2, 2482, 2484, 5, 42, 22, 2, 2483, 2482, 3, 2, 2, 2, 2483, 2484, 3, 2, 2, 2, 2484, 2485, 3, 2, 2, 2, 2485, 2486, 7, 104, 2, 2, 2486, 403, 3, 2, 2, 2, 2487, 2488, 5, 58, 30, 2, 2488, 2490, 7, 92, 2, 2, 2489, 2491, 5, 42, 22, 2, 2490, 2489, 3, 2, 2, 2, 2490, 2491, 3, 2, 2, 2, 2491, 2492, 3, 2, 2, 2, 2492, 2493, 7, 104, 2, 2, 2493, 2528, 3, 2, 2, 2, 2494, 2495, 5, 12, 7, 2, 2495, 2497, 7, 92, 2, 2, 2496, 2498, 5, 42, 22, 2, 2497, 2496, 3, 2, 2, 2, 2497, 2498, 3, 2, 2, 2, 2498, 2499, 3, 2, 2, 2, 2499, 2500, 7, 104, 2, 2, 2500, 2528, 3, 2, 2, 2, 2501, 2502, 7, 42, 2, 2, 2502, 2504, 7, 92, 2, 2, 2503, 2505, 5, 42, 22, 2, 2504, 2503, 3, 2, 2, 2, 2504, 2505, 3, 2, 2, 2, 2505, 2506, 3, 2, 2, 2, 2506, 2528, 7, 104, 2, 2, 2507, 2508, 5, 54, 28, 2, 2508, 2509, 7, 67, 2, 2, 2509, 2510, 7, 42, 2, 2, 2510, 2512, 7, 92, 2, 2, 2511, 2513, 5, 42, 22, 2, 2512, 2511, 3, 2, 2, 2, 2512, 2513, 3, 2, 2, 2, 2513, 2514, 3, 2, 2, 2, 2514, 2515, 7, 104, 2, 2, 2515, 2528, 3, 2, 2, 2, 2516, 2517, 5, 16, 9, 2, 2517, 2519, 7, 92, 2, 2, 2518, 2520, 5, 42, 22, 2, 2519, 2518, 3, 2, 2, 2, 2519, 2520, 3, 2, 2, 2, 2520, 2521, 3, 2, 2, 2, 2521, 2522, 7, 33, 2, 2, 2522, 2528, 3, 2, 2, 2, 2523, 2524, 5, 30, 16, 2, 2524, 2525, 7, 92, 2, 2, 2525, 2526, 7, 33, 2, 2, 2526, 2528, 3, 2, 2, 2, 2527, 2487, 3, 2, 2, 2, 2527, 2494, 3, 2, 2, 2, 2527, 2501, 3, 2, 2, 2, 2527, 2507, 3, 2, 2, 2, 2527, 2516, 3, 2, 2, 2, 2527, 2523, 3, 2, 2, 2, 2528, 405, 3, 2, 2, 2, 2529, 2530, 7, 33, 2, 2, 2530, 2531, 5, 4, 3, 2, 2531, 2533, 5, 408, 205, 2, 2532, 2534, 5, 32, 17, 2, 2533, 2532, 3, 2, 2, 2, 2533, 2534, 3, 2, 2, 2, 2534, 2552, 3, 2, 2, 2, 2535, 2536, 7, 33, 2, 2, 2536, 2537, 5, 14, 8, 2, 2537, 2539, 5, 408, 205, 2, 2538, 2540, 5, 32, 17, 2, 2539, 2538, 3, 2, 2, 2, 2539, 2540, 3, 2, 2, 2, 2540, 2552, 3, 2, 2, 2, 2541, 2542, 7, 33, 2, 2, 2542, 2543, 5, 4, 3, 2, 2543, 2544, 5, 32, 17, 2, 2544, 2545, 5, 248, 125, 2, 2545, 2552, 3, 2, 2, 2, 2546, 2547, 7, 33, 2, 2, 2547, 2548, 5, 14, 8, 2, 2548, 2549, 5, 32, 17, 2, 2549, 2550, 5, 248, 125, 2, 2550, 2552, 3, 2, 2, 2, 2551, 2529, 3, 2, 2, 2, 2551, 2535, 3, 2, 2, 2, 2551, 2541, 3, 2, 2, 2, 2551, 2546, 3, 2, 2, 2, 2552, 407, 3, 2, 2, 2, 2553, 2557, 5, 410, 206, 2, 2554, 2556, 5, 410, 206, 2, 2555, 2554, 3, 2, 2, 2, 2556, 2559, 3, 2, 2, 2, 2557, 2555, 3, 2, 2, 2, 2557, 2558, 3, 2, 2, 2, 2558, 409, 3, 2, 2, 2, 2559, 2557, 3, 2, 2, 2, 2560, 2562, 5, 230, 116, 2, 2561, 2560, 3, 2, 2, 2, 2562, 2565, 3, 2, 2, 2, 2563, 2561, 3, 2, 2, 2, 2563, 2564, 3, 2, 2, 2, 2564, 2566, 3, 2, 2, 2, 2565, 2563, 3, 2, 2, 2, 2566, 2567, 7, 63, 2, 2, 2567, 2568, 5, 414, 208, 2, 2568, 2569, 7, 64, 2, 2, 2569, 411, 3, 2, 2, 2, 2570, 2571, 5, 414, 208, 2, 2571, 413, 3, 2, 2, 2, 2572, 2575, 5, 416, 209, 2, 2573, 2575, 5, 424, 213, 2, 2574, 2572, 3, 2, 2, 2, 2574, 2573, 3, 2, 2, 2, 2575, 415, 3, 2, 2, 2, 2576, 2577, 5, 418, 210, 2, 2577, 2578, 7, 91, 2, 2, 2578, 2579, 5, 422, 212, 2, 2579, 417, 3, 2, 2, 2, 2580, 2591, 7, 104, 2, 2, 2581, 2583, 7, 59, 2, 2, 2582, 2584, 5, 150, 76, 2, 2583, 2582, 3, 2, 2, 2, 2583, 2584, 3, 2, 2, 2, 2584, 2585, 3, 2, 2, 2, 2585, 2591, 7, 60, 2, 2, 2586, 2587, 7, 59, 2, 2, 2587, 2588, 5, 420, 211, 2, 2588, 2589, 7, 60, 2, 2, 2589, 2591, 3, 2, 2, 2, 2590, 2580, 3, 2, 2, 2, 2590, 2581, 3, 2, 2, 2, 2590, 2586, 3, 2, 2, 2, 2591, 419, 3, 2, 2, 2, 2592, 2597, 7, 104, 2, 2, 2593, 2594, 7, 66, 2, 2, 2594, 2596, 7, 104, 2, 2, 2595, 2593, 3, 2, 2, 2, 2596, 2599, 3, 2, 2, 2, 2597, 2595, 3, 2, 2, 2, 2597, 2598, 3, 2, 2, 2, 2598, 421, 3, 2, 2, 2, 2599, 2597, 3, 2, 2, 2, 2600, 2603, 5, 414, 208, 2, 2601, 2603, 5, 252, 127, 2, 2602, 2600, 3, 2, 2, 2, 2602, 2601, 3, 2, 2, 2, 2603, 423, 3, 2, 2, 2, 2604, 2607, 5, 432, 217, 2, 2605, 2607, 5, 426, 214, 2, 2606, 2604, 3, 2, 2, 2, 2606, 2605, 3, 2, 2, 2, 2607, 425, 3, 2, 2, 2, 2608, 2609, 5, 428, 215, 2, 2609, 2610, 5, 430, 216, 2, 2610, 2611, 5, 414, 208, 2, 2611, 427, 3, 2, 2, 2, 2612, 2616, 5, 58, 30, 2, 2613, 2616, 5, 380, 191, 2, 2614, 2616, 5, 386, 194, 2, 2615, 2612, 3, 2, 2, 2, 2615, 2613, 3, 2, 2, 2, 2615, 2614, 3, 2, 2, 2, 2616, 429, 3, 2, 2, 2, 2617, 2618, 9, 5, 2, 2, 2618, 431, 3, 2, 2, 2, 2619, 2627, 5, 434, 218, 2, 2620, 2621, 5, 434, 218, 2, 2621, 2622, 7, 73, 2, 2, 2622, 2623, 5, 414, 208, 2, 2623, 2624, 7, 74, 2, 2, 2624, 2625, 5, 432, 217, 2, 2625, 2627, 3, 2, 2, 2, 2626, 2619, 3, 2, 2, 2, 2626, 2620, 3, 2, 2, 2, 2627, 433, 3, 2, 2, 2, 2628, 2629, 8, 218, 1, 2, 2629, 2630, 5, 436, 219, 2, 2630, 2636, 3, 2, 2, 2, 2631, 2632, 12, 3, 2, 2, 2632, 2633, 7, 80, 2, 2, 2633, 2635, 5, 436, 219, 2, 2634, 2631, 3, 2, 2, 2, 2635, 2638, 3, 2, 2, 2, 2636, 2634, 3, 2, 2, 2, 2636, 2637, 3, 2, 2, 2, 2637, 435, 3, 2, 2, 2, 2638, 2636, 3, 2, 2, 2, 2639, 2640, 8, 219, 1, 2, 2640, 2641, 5, 438, 220, 2, 2641, 2647, 3, 2, 2, 2, 2642, 2643, 12, 3, 2, 2, 2643, 2644, 7, 79, 2, 2, 2644, 2646, 5, 438, 220, 2, 2645, 2642, 3, 2, 2, 2, 2646, 2649, 3, 2, 2, 2, 2647, 2645, 3, 2, 2, 2, 2647, 2648, 3, 2, 2, 2, 2648, 437, 3, 2, 2, 2, 2649, 2647, 3, 2, 2, 2, 2650, 2651, 8, 220, 1, 2, 2651, 2652, 5, 440, 221, 2, 2652, 2658, 3, 2, 2, 2, 2653, 2654, 12, 3, 2, 2, 2654, 2655, 7, 88, 2, 2, 2655, 2657, 5, 440, 221, 2, 2656, 2653, 3, 2, 2, 2, 2657, 2660, 3, 2, 2, 2, 2658, 2656, 3, 2, 2, 2, 2658, 2659, 3, 2, 2, 2, 2659, 439, 3, 2, 2, 2, 2660, 2658, 3, 2, 2, 2, 2661, 2662, 8, 221, 1, 2, 2662, 2663, 5, 442, 222, 2, 2663, 2669, 3, 2, 2, 2, 2664, 2665, 12, 3, 2, 2, 2665, 2666, 7, 89, 2, 2, 2666, 2668, 5, 442, 222, 2, 2667, 2664, 3, 2, 2, 2, 2668, 2671, 3, 2, 2, 2, 2669, 2667, 3, 2, 2, 2, 2669, 2670, 3, 2, 2, 2, 2670, 441, 3, 2, 2, 2, 2671, 2669, 3, 2, 2, 2, 2672, 2673, 8, 222, 1, 2, 2673, 2674, 5, 444, 223, 2, 2674, 2680, 3, 2, 2, 2, 2675, 2676, 12, 3, 2, 2, 2676, 2677, 7, 87, 2, 2, 2677, 2679, 5, 444, 223, 2, 2678, 2675, 3, 2, 2, 2, 2679, 2682, 3, 2, 2, 2, 2680, 2678, 3, 2, 2, 2, 2680, 2681, 3, 2, 2, 2, 2681, 443, 3, 2, 2, 2, 2682, 2680, 3, 2, 2, 2, 2683, 2684, 8, 223, 1, 2, 2684, 2685, 5, 446, 224, 2, 2685, 2694, 3, 2, 2, 2, 2686, 2687, 12, 4, 2, 2, 2687, 2688, 7, 75, 2, 2, 2688, 2693, 5, 446, 224, 2, 2689, 2690, 12, 3, 2, 2, 2690, 2691, 7, 78, 2, 2, 2691, 2693, 5, 446, 224, 2, 2692, 2686, 3, 2, 2, 2, 2692, 2689, 3, 2, 2, 2, 2693, 2696, 3, 2, 2, 2, 2694, 2692, 3, 2, 2, 2, 2694, 2695, 3, 2, 2, 2, 2695, 445, 3, 2, 2, 2, 2696, 2694, 3, 2, 2, 2, 2697, 2698, 8, 224, 1, 2, 2698, 2699, 5, 448, 225, 2, 2699, 2717, 3, 2, 2, 2, 2700, 2701, 12, 7, 2, 2, 2701, 2702, 7, 70, 2, 2, 2702, 2716, 5, 448, 225, 2, 2703, 2704, 12, 6, 2, 2, 2704, 2705, 7, 69, 2, 2, 2705, 2716, 5, 448, 225, 2, 2706, 2707, 12, 5, 2, 2, 2707, 2708, 7, 76, 2, 2, 2708, 2716, 5, 448, 225, 2, 2709, 2710, 12, 4, 2, 2, 2710, 2711, 7, 77, 2, 2, 2711, 2716, 5, 448, 225, 2, 2712, 2713, 12, 3, 2, 2, 2713, 2714, 7, 28, 2, 2, 2714, 2716, 5, 12, 7, 2, 2715, 2700, 3, 2, 2, 2, 2715, 2703, 3, 2, 2, 2, 2715, 2706, 3, 2, 2, 2, 2715, 2709, 3, 2, 2, 2, 2715, 2712, 3, 2, 2, 2, 2716, 2719, 3, 2, 2, 2, 2717, 2715, 3, 2, 2, 2, 2717, 2718, 3, 2, 2, 2, 2718, 447, 3, 2, 2, 2, 2719, 2717, 3, 2, 2, 2, 2720, 2721, 8, 225, 1, 2, 2721, 2722, 5, 450, 226, 2, 2722, 2738, 3, 2, 2, 2, 2723, 2724, 12, 5, 2, 2, 2724, 2725, 7, 70, 2, 2, 2725, 2726, 7, 70, 2, 2, 2726, 2737, 5, 450, 226, 2, 2727, 2728, 12, 4, 2, 2, 2728, 2729, 7, 69, 2, 2, 2729, 2730, 7, 69, 2, 2, 2730, 2737, 5, 450, 226, 2, 2731, 2732, 12, 3, 2, 2, 2732, 2733, 7, 69, 2, 2, 2733, 2734, 7, 69, 2, 2, 2734, 2735, 7, 69, 2, 2, 2735, 2737, 5, 450, 226, 2, 2736, 2723, 3, 2, 2, 2, 2736, 2727, 3, 2, 2, 2, 2736, 2731, 3, 2, 2, 2, 2737, 2740, 3, 2, 2, 2, 2738, 2736, 3, 2, 2, 2, 2738, 2739, 3, 2, 2, 2, 2739, 449, 3, 2, 2, 2, 2740, 2738, 3, 2, 2, 2, 2741, 2742, 8, 226, 1, 2, 2742, 2743, 5, 452, 227, 2, 2743, 2752, 3, 2, 2, 2, 2744, 2745, 12, 4, 2, 2, 2745, 2746, 7, 83, 2, 2, 2746, 2751, 5, 452, 227, 2, 2747, 2748, 12, 3, 2, 2, 2748, 2749, 7, 84, 2, 2, 2749, 2751, 5, 452, 227, 2, 2750, 2744, 3, 2, 2, 2, 2750, 2747, 3, 2, 2, 2, 2751, 2754, 3, 2, 2, 2, 2752, 2750, 3, 2, 2, 2, 2752, 2753, 3, 2, 2, 2, 2753, 451, 3, 2, 2, 2, 2754, 2752, 3, 2, 2, 2, 2755, 2756, 8, 227, 1, 2, 2756, 2757, 5, 454, 228, 2, 2757, 2769, 3, 2, 2, 2, 2758, 2759, 12, 5, 2, 2, 2759, 2760, 7, 85, 2, 2, 2760, 2768, 5, 454, 228, 2, 2761, 2762, 12, 4, 2, 2, 2762, 2763, 7, 86, 2, 2, 2763, 2768, 5, 454, 228, 2, 2764, 2765, 12, 3, 2, 2, 2765, 2766, 7, 90, 2, 2, 2766, 2768, 5, 454, 228, 2, 2767, 2758, 3, 2, 2, 2, 2767, 2761, 3, 2, 2, 2, 2767, 2764, 3, 2, 2, 2, 2768, 2771, 3, 2, 2, 2, 2769, 2767, 3, 2, 2, 2, 2769, 2770, 3, 2, 2, 2, 2770, 453, 3, 2, 2, 2, 2771, 2769, 3, 2, 2, 2, 2772, 2780, 5, 456, 229, 2, 2773, 2780, 5, 458, 230, 2, 2774, 2775, 7, 83, 2, 2, 2775, 2780, 5, 454, 228, 2, 2776, 2777, 7, 84, 2, 2, 2777, 2780, 5, 454, 228, 2, 2778, 2780, 5, 460, 231, 2, 2779, 2772, 3, 2, 2, 2, 2779, 2773, 3, 2, 2, 2, 2779, 2774, 3, 2, 2, 2, 2779, 2776, 3, 2, 2, 2, 2779, 2778, 3, 2, 2, 2, 2780, 455, 3, 2, 2, 2, 2781, 2782, 7, 81, 2, 2, 2782, 2783, 5, 454, 228, 2, 2783, 457, 3, 2, 2, 2, 2784, 2785, 7, 82, 2, 2, 2785, 2786, 5, 454, 228, 2, 2786, 459, 3, 2, 2, 2, 2787, 2794, 5, 462, 232, 2, 2788, 2789, 7, 72, 2, 2, 2789, 2794, 5, 454, 228, 2, 2790, 2791, 7, 71, 2, 2, 2791, 2794, 5, 454, 228, 2, 2792, 2794, 5, 472, 237, 2, 2793, 2787, 3, 2, 2, 2, 2793, 2788, 3, 2, 2, 2, 2793, 2790, 3, 2, 2, 2, 2793, 2792, 3, 2, 2, 2, 2794, 461, 3, 2, 2, 2, 2795, 2798, 5, 352, 177, 2, 2796, 2798, 5, 58, 30, 2, 2797, 2795, 3, 2, 2, 2, 2797, 2796, 3, 2, 2, 2, 2798, 2803, 3, 2, 2, 2, 2799, 2802, 5, 466, 234, 2, 2800, 2802, 5, 470, 236, 2, 2801, 2799, 3, 2, 2, 2, 2801, 2800, 3, 2, 2, 2, 2802, 2805, 3, 2, 2, 2, 2803, 2801, 3, 2, 2, 2, 2803, 2804, 3, 2, 2, 2, 2804, 463, 3, 2, 2, 2, 2805, 2803, 3, 2, 2, 2, 2806, 2807, 5, 462, 232, 2, 2807, 2808, 7, 81, 2, 2, 2808, 465, 3, 2, 2, 2, 2809, 2810, 7, 81, 2, 2, 2810, 467, 3, 2, 2, 2, 2811, 2812, 5, 462, 232, 2, 2812, 2813, 7, 82, 2, 2, 2813, 469, 3, 2, 2, 2, 2814, 2815, 7, 82, 2, 2, 2815, 471, 3, 2, 2, 2, 2816, 2817, 7, 59, 2, 2, 2817, 2818, 5, 4, 3, 2, 2818, 2819, 7, 60, 2, 2, 2819, 2820, 5, 454, 228, 2, 2820, 2844, 3, 2, 2, 2, 2821, 2822, 7, 59, 2, 2, 2822, 2826, 5, 12, 7, 2, 2823, 2825, 5, 40, 21, 2, 2824, 2823, 3, 2, 2, 2, 2825, 2828, 3, 2, 2, 2, 2826, 2824, 3, 2, 2, 2, 2826, 2827, 3, 2, 2, 2, 2827, 2829, 3, 2, 2, 2, 2828, 2826, 3, 2, 2, 2, 2829, 2830, 7, 60, 2, 2, 2830, 2831, 5, 460, 231, 2, 2831, 2844, 3, 2, 2, 2, 2832, 2833, 7, 59, 2, 2, 2833, 2837, 5, 12, 7, 2, 2834, 2836, 5, 40, 21, 2, 2835, 2834, 3, 2, 2, 2, 2836, 2839, 3, 2, 2, 2, 2837, 2835, 3, 2, 2, 2, 2837, 2838, 3, 2, 2, 2, 2838, 2840, 3, 2, 2, 2, 2839, 2837, 3, 2, 2, 2, 2840, 2841, 7, 60, 2, 2, 2841, 2842, 5, 416, 209, 2, 2842, 2844, 3, 2, 2, 2, 2843, 2816, 3, 2, 2, 2, 2843, 2821, 3, 2, 2, 2, 2843, 2832, 3, 2, 2, 2, 2844, 473, 3, 2, 2, 2, 324, 479, 486, 490, 494, 503, 507, 511, 513, 519, 524, 531, 536, 538, 544, 549, 554, 559, 570, 584, 589, 597, 604, 610, 615, 626, 629, 643, 648, 653, 658, 664, 674, 682, 692, 700, 712, 716, 721, 727, 735, 748, 777, 781, 786, 792, 795, 798, 810, 821, 835, 842, 851, 858, 863, 878, 885, 891, 895, 899, 903, 907, 912, 916, 920, 922, 927, 934, 939, 941, 947, 952, 956, 975, 980, 996, 1001, 1007, 1013, 1015, 1019, 1024, 1028, 1036, 1043, 1051, 1054, 1059, 1067, 1072, 1079, 1086, 1091, 1097, 1109, 1114, 1118, 1128, 1133, 1141, 1144, 1149, 1157, 1160, 1165, 1170, 1175, 1180, 1187, 1192, 1200, 1205, 1210, 1215, 1221, 1227, 1230, 1233, 1242, 1248, 1254, 1257, 1260, 1268, 1273, 1278, 1284, 1287, 1298, 1307, 1317, 1322, 1333, 1338, 1350, 1355, 1367, 1377, 1382, 1390, 1393, 1400, 1408, 1414, 1423, 1433, 1437, 1440, 1449, 1463, 1466, 1475, 1480, 1487, 1492, 1500, 1512, 1519, 1533, 1555, 1589, 1601, 1607, 1619, 1632, 1658, 1662, 1667, 1671, 1675, 1683, 1687, 1691, 1698, 1707, 1715, 1730, 1742, 1748, 1754, 1775, 1780, 1786, 1798, 1809, 1819, 1822, 1827, 1836, 1842, 1852, 1857, 1866, 1889, 1899, 1921, 1928, 1936, 1944, 1955, 1978, 1988, 1999, 2021, 2025, 2030, 2038, 2044, 2048, 2052, 2056, 2062, 2067, 2072, 2076, 2080, 2086, 2091, 2096, 2100, 2104, 2106, 2111, 2116, 2121, 2125, 2129, 2133, 2138, 2146, 2152, 2156, 2160, 2164, 2170, 2175, 2180, 2184, 2188, 2190, 2195, 2210, 2224, 2236, 2245, 2260, 2273, 2282, 2288, 2295, 2300, 2307, 2312, 2319, 2324, 2331, 2336, 2344, 2349, 2353, 2357, 2362, 2369, 2376, 2381, 2388, 2393, 2400, 2405, 2413, 2418, 2422, 2429, 2435, 2442, 2449, 2456, 2464, 2471, 2479, 2483, 2490, 2497, 2504, 2512, 2519, 2527, 2533, 2539, 2551, 2557, 2563, 2574, 2583, 2590, 2597, 2602, 2606, 2615, 2626, 2636, 2647, 2658, 2669, 2680, 2692, 2694, 2715, 2717, 2736, 2738, 2750, 2752, 2767, 2769, 2779, 2793, 2797, 2801, 2803, 2826, 2837, 2843] \ No newline at end of file diff --git a/persper/analytics/call_graph/java/Java8.tokens b/persper/analytics/call_graph/java/Java8.tokens deleted file mode 100644 index 52ef1eee3d5..00000000000 --- a/persper/analytics/call_graph/java/Java8.tokens +++ /dev/null @@ -1,205 +0,0 @@ -ABSTRACT=1 -ASSERT=2 -BOOLEAN=3 -BREAK=4 -BYTE=5 -CASE=6 -CATCH=7 -CHAR=8 -CLASS=9 -CONST=10 -CONTINUE=11 -DEFAULT=12 -DO=13 -DOUBLE=14 -ELSE=15 -ENUM=16 -EXTENDS=17 -FINAL=18 -FINALLY=19 -FLOAT=20 -FOR=21 -IF=22 -GOTO=23 -IMPLEMENTS=24 -IMPORT=25 -INSTANCEOF=26 -INT=27 -INTERFACE=28 -LONG=29 -NATIVE=30 -NEW=31 -PACKAGE=32 -PRIVATE=33 -PROTECTED=34 -PUBLIC=35 -RETURN=36 -SHORT=37 -STATIC=38 -STRICTFP=39 -SUPER=40 -SWITCH=41 -SYNCHRONIZED=42 -THIS=43 -THROW=44 -THROWS=45 -TRANSIENT=46 -TRY=47 -VOID=48 -VOLATILE=49 -WHILE=50 -IntegerLiteral=51 -FloatingPointLiteral=52 -BooleanLiteral=53 -CharacterLiteral=54 -StringLiteral=55 -NullLiteral=56 -LPAREN=57 -RPAREN=58 -LBRACE=59 -RBRACE=60 -LBRACK=61 -RBRACK=62 -SEMI=63 -COMMA=64 -DOT=65 -ASSIGN=66 -GT=67 -LT=68 -BANG=69 -TILDE=70 -QUESTION=71 -COLON=72 -EQUAL=73 -LE=74 -GE=75 -NOTEQUAL=76 -AND=77 -OR=78 -INC=79 -DEC=80 -ADD=81 -SUB=82 -MUL=83 -DIV=84 -BITAND=85 -BITOR=86 -CARET=87 -MOD=88 -ARROW=89 -COLONCOLON=90 -ADD_ASSIGN=91 -SUB_ASSIGN=92 -MUL_ASSIGN=93 -DIV_ASSIGN=94 -AND_ASSIGN=95 -OR_ASSIGN=96 -XOR_ASSIGN=97 -MOD_ASSIGN=98 -LSHIFT_ASSIGN=99 -RSHIFT_ASSIGN=100 -URSHIFT_ASSIGN=101 -Identifier=102 -AT=103 -ELLIPSIS=104 -WS=105 -COMMENT=106 -LINE_COMMENT=107 -'abstract'=1 -'assert'=2 -'boolean'=3 -'break'=4 -'byte'=5 -'case'=6 -'catch'=7 -'char'=8 -'class'=9 -'const'=10 -'continue'=11 -'default'=12 -'do'=13 -'double'=14 -'else'=15 -'enum'=16 -'extends'=17 -'final'=18 -'finally'=19 -'float'=20 -'for'=21 -'if'=22 -'goto'=23 -'implements'=24 -'import'=25 -'instanceof'=26 -'int'=27 -'interface'=28 -'long'=29 -'native'=30 -'new'=31 -'package'=32 -'private'=33 -'protected'=34 -'public'=35 -'return'=36 -'short'=37 -'static'=38 -'strictfp'=39 -'super'=40 -'switch'=41 -'synchronized'=42 -'this'=43 -'throw'=44 -'throws'=45 -'transient'=46 -'try'=47 -'void'=48 -'volatile'=49 -'while'=50 -'null'=56 -'('=57 -')'=58 -'{'=59 -'}'=60 -'['=61 -']'=62 -';'=63 -','=64 -'.'=65 -'='=66 -'>'=67 -'<'=68 -'!'=69 -'~'=70 -'?'=71 -':'=72 -'=='=73 -'<='=74 -'>='=75 -'!='=76 -'&&'=77 -'||'=78 -'++'=79 -'--'=80 -'+'=81 -'-'=82 -'*'=83 -'/'=84 -'&'=85 -'|'=86 -'^'=87 -'%'=88 -'->'=89 -'::'=90 -'+='=91 -'-='=92 -'*='=93 -'/='=94 -'&='=95 -'|='=96 -'^='=97 -'%='=98 -'<<='=99 -'>>='=100 -'>>>='=101 -'@'=103 -'...'=104 diff --git a/persper/analytics/call_graph/java/Java8Lexer.interp b/persper/analytics/call_graph/java/Java8Lexer.interp deleted file mode 100644 index 2b5857d566a..00000000000 --- a/persper/analytics/call_graph/java/Java8Lexer.interp +++ /dev/null @@ -1,384 +0,0 @@ -token literal names: -null -'abstract' -'assert' -'boolean' -'break' -'byte' -'case' -'catch' -'char' -'class' -'const' -'continue' -'default' -'do' -'double' -'else' -'enum' -'extends' -'final' -'finally' -'float' -'for' -'if' -'goto' -'implements' -'import' -'instanceof' -'int' -'interface' -'long' -'native' -'new' -'package' -'private' -'protected' -'public' -'return' -'short' -'static' -'strictfp' -'super' -'switch' -'synchronized' -'this' -'throw' -'throws' -'transient' -'try' -'void' -'volatile' -'while' -null -null -null -null -null -'null' -'(' -')' -'{' -'}' -'[' -']' -';' -',' -'.' -'=' -'>' -'<' -'!' -'~' -'?' -':' -'==' -'<=' -'>=' -'!=' -'&&' -'||' -'++' -'--' -'+' -'-' -'*' -'/' -'&' -'|' -'^' -'%' -'->' -'::' -'+=' -'-=' -'*=' -'/=' -'&=' -'|=' -'^=' -'%=' -'<<=' -'>>=' -'>>>=' -null -'@' -'...' -null -null -null - -token symbolic names: -null -ABSTRACT -ASSERT -BOOLEAN -BREAK -BYTE -CASE -CATCH -CHAR -CLASS -CONST -CONTINUE -DEFAULT -DO -DOUBLE -ELSE -ENUM -EXTENDS -FINAL -FINALLY -FLOAT -FOR -IF -GOTO -IMPLEMENTS -IMPORT -INSTANCEOF -INT -INTERFACE -LONG -NATIVE -NEW -PACKAGE -PRIVATE -PROTECTED -PUBLIC -RETURN -SHORT -STATIC -STRICTFP -SUPER -SWITCH -SYNCHRONIZED -THIS -THROW -THROWS -TRANSIENT -TRY -VOID -VOLATILE -WHILE -IntegerLiteral -FloatingPointLiteral -BooleanLiteral -CharacterLiteral -StringLiteral -NullLiteral -LPAREN -RPAREN -LBRACE -RBRACE -LBRACK -RBRACK -SEMI -COMMA -DOT -ASSIGN -GT -LT -BANG -TILDE -QUESTION -COLON -EQUAL -LE -GE -NOTEQUAL -AND -OR -INC -DEC -ADD -SUB -MUL -DIV -BITAND -BITOR -CARET -MOD -ARROW -COLONCOLON -ADD_ASSIGN -SUB_ASSIGN -MUL_ASSIGN -DIV_ASSIGN -AND_ASSIGN -OR_ASSIGN -XOR_ASSIGN -MOD_ASSIGN -LSHIFT_ASSIGN -RSHIFT_ASSIGN -URSHIFT_ASSIGN -Identifier -AT -ELLIPSIS -WS -COMMENT -LINE_COMMENT - -rule names: -ABSTRACT -ASSERT -BOOLEAN -BREAK -BYTE -CASE -CATCH -CHAR -CLASS -CONST -CONTINUE -DEFAULT -DO -DOUBLE -ELSE -ENUM -EXTENDS -FINAL -FINALLY -FLOAT -FOR -IF -GOTO -IMPLEMENTS -IMPORT -INSTANCEOF -INT -INTERFACE -LONG -NATIVE -NEW -PACKAGE -PRIVATE -PROTECTED -PUBLIC -RETURN -SHORT -STATIC -STRICTFP -SUPER -SWITCH -SYNCHRONIZED -THIS -THROW -THROWS -TRANSIENT -TRY -VOID -VOLATILE -WHILE -IntegerLiteral -DecimalIntegerLiteral -HexIntegerLiteral -OctalIntegerLiteral -BinaryIntegerLiteral -IntegerTypeSuffix -DecimalNumeral -Digits -Digit -NonZeroDigit -DigitsAndUnderscores -DigitOrUnderscore -Underscores -HexNumeral -HexDigits -HexDigit -HexDigitsAndUnderscores -HexDigitOrUnderscore -OctalNumeral -OctalDigits -OctalDigit -OctalDigitsAndUnderscores -OctalDigitOrUnderscore -BinaryNumeral -BinaryDigits -BinaryDigit -BinaryDigitsAndUnderscores -BinaryDigitOrUnderscore -FloatingPointLiteral -DecimalFloatingPointLiteral -ExponentPart -ExponentIndicator -SignedInteger -Sign -FloatTypeSuffix -HexadecimalFloatingPointLiteral -HexSignificand -BinaryExponent -BinaryExponentIndicator -BooleanLiteral -CharacterLiteral -SingleCharacter -StringLiteral -StringCharacters -StringCharacter -EscapeSequence -OctalEscape -ZeroToThree -UnicodeEscape -NullLiteral -LPAREN -RPAREN -LBRACE -RBRACE -LBRACK -RBRACK -SEMI -COMMA -DOT -ASSIGN -GT -LT -BANG -TILDE -QUESTION -COLON -EQUAL -LE -GE -NOTEQUAL -AND -OR -INC -DEC -ADD -SUB -MUL -DIV -BITAND -BITOR -CARET -MOD -ARROW -COLONCOLON -ADD_ASSIGN -SUB_ASSIGN -MUL_ASSIGN -DIV_ASSIGN -AND_ASSIGN -OR_ASSIGN -XOR_ASSIGN -MOD_ASSIGN -LSHIFT_ASSIGN -RSHIFT_ASSIGN -URSHIFT_ASSIGN -Identifier -JavaLetter -JavaLetterOrDigit -AT -ELLIPSIS -WS -COMMENT -LINE_COMMENT - -channel names: -DEFAULT_TOKEN_CHANNEL -HIDDEN - -mode names: -DEFAULT_MODE - -atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 109, 1096, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106, 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, 4, 111, 9, 111, 4, 112, 9, 112, 4, 113, 9, 113, 4, 114, 9, 114, 4, 115, 9, 115, 4, 116, 9, 116, 4, 117, 9, 117, 4, 118, 9, 118, 4, 119, 9, 119, 4, 120, 9, 120, 4, 121, 9, 121, 4, 122, 9, 122, 4, 123, 9, 123, 4, 124, 9, 124, 4, 125, 9, 125, 4, 126, 9, 126, 4, 127, 9, 127, 4, 128, 9, 128, 4, 129, 9, 129, 4, 130, 9, 130, 4, 131, 9, 131, 4, 132, 9, 132, 4, 133, 9, 133, 4, 134, 9, 134, 4, 135, 9, 135, 4, 136, 9, 136, 4, 137, 9, 137, 4, 138, 9, 138, 4, 139, 9, 139, 4, 140, 9, 140, 4, 141, 9, 141, 4, 142, 9, 142, 4, 143, 9, 143, 4, 144, 9, 144, 4, 145, 9, 145, 4, 146, 9, 146, 4, 147, 9, 147, 4, 148, 9, 148, 4, 149, 9, 149, 4, 150, 9, 150, 4, 151, 9, 151, 4, 152, 9, 152, 4, 153, 9, 153, 4, 154, 9, 154, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 52, 5, 52, 653, 10, 52, 3, 53, 3, 53, 5, 53, 657, 10, 53, 3, 54, 3, 54, 5, 54, 661, 10, 54, 3, 55, 3, 55, 5, 55, 665, 10, 55, 3, 56, 3, 56, 5, 56, 669, 10, 56, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 5, 58, 676, 10, 58, 3, 58, 3, 58, 3, 58, 5, 58, 681, 10, 58, 5, 58, 683, 10, 58, 3, 59, 3, 59, 5, 59, 687, 10, 59, 3, 59, 5, 59, 690, 10, 59, 3, 60, 3, 60, 5, 60, 694, 10, 60, 3, 61, 3, 61, 3, 62, 6, 62, 699, 10, 62, 13, 62, 14, 62, 700, 3, 63, 3, 63, 5, 63, 705, 10, 63, 3, 64, 6, 64, 708, 10, 64, 13, 64, 14, 64, 709, 3, 65, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 5, 66, 718, 10, 66, 3, 66, 5, 66, 721, 10, 66, 3, 67, 3, 67, 3, 68, 6, 68, 726, 10, 68, 13, 68, 14, 68, 727, 3, 69, 3, 69, 5, 69, 732, 10, 69, 3, 70, 3, 70, 5, 70, 736, 10, 70, 3, 70, 3, 70, 3, 71, 3, 71, 5, 71, 742, 10, 71, 3, 71, 5, 71, 745, 10, 71, 3, 72, 3, 72, 3, 73, 6, 73, 750, 10, 73, 13, 73, 14, 73, 751, 3, 74, 3, 74, 5, 74, 756, 10, 74, 3, 75, 3, 75, 3, 75, 3, 75, 3, 76, 3, 76, 5, 76, 764, 10, 76, 3, 76, 5, 76, 767, 10, 76, 3, 77, 3, 77, 3, 78, 6, 78, 772, 10, 78, 13, 78, 14, 78, 773, 3, 79, 3, 79, 5, 79, 778, 10, 79, 3, 80, 3, 80, 5, 80, 782, 10, 80, 3, 81, 3, 81, 3, 81, 5, 81, 787, 10, 81, 3, 81, 5, 81, 790, 10, 81, 3, 81, 5, 81, 793, 10, 81, 3, 81, 3, 81, 3, 81, 5, 81, 798, 10, 81, 3, 81, 5, 81, 801, 10, 81, 3, 81, 3, 81, 3, 81, 5, 81, 806, 10, 81, 3, 81, 3, 81, 3, 81, 5, 81, 811, 10, 81, 3, 82, 3, 82, 3, 82, 3, 83, 3, 83, 3, 84, 5, 84, 819, 10, 84, 3, 84, 3, 84, 3, 85, 3, 85, 3, 86, 3, 86, 3, 87, 3, 87, 3, 87, 5, 87, 830, 10, 87, 3, 88, 3, 88, 5, 88, 834, 10, 88, 3, 88, 3, 88, 3, 88, 5, 88, 839, 10, 88, 3, 88, 3, 88, 5, 88, 843, 10, 88, 3, 89, 3, 89, 3, 89, 3, 90, 3, 90, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 5, 91, 859, 10, 91, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 5, 92, 869, 10, 92, 3, 93, 3, 93, 3, 94, 3, 94, 5, 94, 875, 10, 94, 3, 94, 3, 94, 3, 95, 6, 95, 880, 10, 95, 13, 95, 14, 95, 881, 3, 96, 3, 96, 5, 96, 886, 10, 96, 3, 97, 3, 97, 3, 97, 3, 97, 5, 97, 892, 10, 97, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 5, 98, 905, 10, 98, 3, 99, 3, 99, 3, 100, 3, 100, 6, 100, 911, 10, 100, 13, 100, 14, 100, 912, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 102, 3, 102, 3, 103, 3, 103, 3, 104, 3, 104, 3, 105, 3, 105, 3, 106, 3, 106, 3, 107, 3, 107, 3, 108, 3, 108, 3, 109, 3, 109, 3, 110, 3, 110, 3, 111, 3, 111, 3, 112, 3, 112, 3, 113, 3, 113, 3, 114, 3, 114, 3, 115, 3, 115, 3, 116, 3, 116, 3, 117, 3, 117, 3, 118, 3, 118, 3, 118, 3, 119, 3, 119, 3, 119, 3, 120, 3, 120, 3, 120, 3, 121, 3, 121, 3, 121, 3, 122, 3, 122, 3, 122, 3, 123, 3, 123, 3, 123, 3, 124, 3, 124, 3, 124, 3, 125, 3, 125, 3, 125, 3, 126, 3, 126, 3, 127, 3, 127, 3, 128, 3, 128, 3, 129, 3, 129, 3, 130, 3, 130, 3, 131, 3, 131, 3, 132, 3, 132, 3, 133, 3, 133, 3, 134, 3, 134, 3, 134, 3, 135, 3, 135, 3, 135, 3, 136, 3, 136, 3, 136, 3, 137, 3, 137, 3, 137, 3, 138, 3, 138, 3, 138, 3, 139, 3, 139, 3, 139, 3, 140, 3, 140, 3, 140, 3, 141, 3, 141, 3, 141, 3, 142, 3, 142, 3, 142, 3, 143, 3, 143, 3, 143, 3, 144, 3, 144, 3, 144, 3, 144, 3, 145, 3, 145, 3, 145, 3, 145, 3, 146, 3, 146, 3, 146, 3, 146, 3, 146, 3, 147, 3, 147, 7, 147, 1042, 10, 147, 12, 147, 14, 147, 1045, 11, 147, 3, 148, 3, 148, 3, 148, 3, 148, 5, 148, 1051, 10, 148, 3, 149, 3, 149, 3, 149, 3, 149, 5, 149, 1057, 10, 149, 3, 150, 3, 150, 3, 151, 3, 151, 3, 151, 3, 151, 3, 152, 6, 152, 1066, 10, 152, 13, 152, 14, 152, 1067, 3, 152, 3, 152, 3, 153, 3, 153, 3, 153, 3, 153, 7, 153, 1076, 10, 153, 12, 153, 14, 153, 1079, 11, 153, 3, 153, 3, 153, 3, 153, 3, 153, 3, 153, 3, 154, 3, 154, 3, 154, 3, 154, 7, 154, 1090, 10, 154, 12, 154, 14, 154, 1093, 11, 154, 3, 154, 3, 154, 3, 1077, 2, 155, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 13, 25, 14, 27, 15, 29, 16, 31, 17, 33, 18, 35, 19, 37, 20, 39, 21, 41, 22, 43, 23, 45, 24, 47, 25, 49, 26, 51, 27, 53, 28, 55, 29, 57, 30, 59, 31, 61, 32, 63, 33, 65, 34, 67, 35, 69, 36, 71, 37, 73, 38, 75, 39, 77, 40, 79, 41, 81, 42, 83, 43, 85, 44, 87, 45, 89, 46, 91, 47, 93, 48, 95, 49, 97, 50, 99, 51, 101, 52, 103, 53, 105, 2, 107, 2, 109, 2, 111, 2, 113, 2, 115, 2, 117, 2, 119, 2, 121, 2, 123, 2, 125, 2, 127, 2, 129, 2, 131, 2, 133, 2, 135, 2, 137, 2, 139, 2, 141, 2, 143, 2, 145, 2, 147, 2, 149, 2, 151, 2, 153, 2, 155, 2, 157, 2, 159, 54, 161, 2, 163, 2, 165, 2, 167, 2, 169, 2, 171, 2, 173, 2, 175, 2, 177, 2, 179, 2, 181, 55, 183, 56, 185, 2, 187, 57, 189, 2, 191, 2, 193, 2, 195, 2, 197, 2, 199, 2, 201, 58, 203, 59, 205, 60, 207, 61, 209, 62, 211, 63, 213, 64, 215, 65, 217, 66, 219, 67, 221, 68, 223, 69, 225, 70, 227, 71, 229, 72, 231, 73, 233, 74, 235, 75, 237, 76, 239, 77, 241, 78, 243, 79, 245, 80, 247, 81, 249, 82, 251, 83, 253, 84, 255, 85, 257, 86, 259, 87, 261, 88, 263, 89, 265, 90, 267, 91, 269, 92, 271, 93, 273, 94, 275, 95, 277, 96, 279, 97, 281, 98, 283, 99, 285, 100, 287, 101, 289, 102, 291, 103, 293, 104, 295, 2, 297, 2, 299, 105, 301, 106, 303, 107, 305, 108, 307, 109, 3, 2, 24, 4, 2, 78, 78, 110, 110, 3, 2, 51, 59, 4, 2, 90, 90, 122, 122, 5, 2, 50, 59, 67, 72, 99, 104, 3, 2, 50, 57, 4, 2, 68, 68, 100, 100, 3, 2, 50, 51, 4, 2, 71, 71, 103, 103, 4, 2, 45, 45, 47, 47, 6, 2, 70, 70, 72, 72, 102, 102, 104, 104, 4, 2, 82, 82, 114, 114, 6, 2, 12, 12, 15, 15, 41, 41, 94, 94, 6, 2, 12, 12, 15, 15, 36, 36, 94, 94, 10, 2, 36, 36, 41, 41, 94, 94, 100, 100, 104, 104, 112, 112, 116, 116, 118, 118, 3, 2, 50, 53, 6, 2, 38, 38, 67, 92, 97, 97, 99, 124, 4, 2, 2, 129, 55298, 56321, 3, 2, 55298, 56321, 3, 2, 56322, 57345, 7, 2, 38, 38, 50, 59, 67, 92, 97, 97, 99, 124, 5, 2, 11, 12, 14, 15, 34, 34, 4, 2, 12, 12, 15, 15, 2, 1111, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 159, 3, 2, 2, 2, 2, 181, 3, 2, 2, 2, 2, 183, 3, 2, 2, 2, 2, 187, 3, 2, 2, 2, 2, 201, 3, 2, 2, 2, 2, 203, 3, 2, 2, 2, 2, 205, 3, 2, 2, 2, 2, 207, 3, 2, 2, 2, 2, 209, 3, 2, 2, 2, 2, 211, 3, 2, 2, 2, 2, 213, 3, 2, 2, 2, 2, 215, 3, 2, 2, 2, 2, 217, 3, 2, 2, 2, 2, 219, 3, 2, 2, 2, 2, 221, 3, 2, 2, 2, 2, 223, 3, 2, 2, 2, 2, 225, 3, 2, 2, 2, 2, 227, 3, 2, 2, 2, 2, 229, 3, 2, 2, 2, 2, 231, 3, 2, 2, 2, 2, 233, 3, 2, 2, 2, 2, 235, 3, 2, 2, 2, 2, 237, 3, 2, 2, 2, 2, 239, 3, 2, 2, 2, 2, 241, 3, 2, 2, 2, 2, 243, 3, 2, 2, 2, 2, 245, 3, 2, 2, 2, 2, 247, 3, 2, 2, 2, 2, 249, 3, 2, 2, 2, 2, 251, 3, 2, 2, 2, 2, 253, 3, 2, 2, 2, 2, 255, 3, 2, 2, 2, 2, 257, 3, 2, 2, 2, 2, 259, 3, 2, 2, 2, 2, 261, 3, 2, 2, 2, 2, 263, 3, 2, 2, 2, 2, 265, 3, 2, 2, 2, 2, 267, 3, 2, 2, 2, 2, 269, 3, 2, 2, 2, 2, 271, 3, 2, 2, 2, 2, 273, 3, 2, 2, 2, 2, 275, 3, 2, 2, 2, 2, 277, 3, 2, 2, 2, 2, 279, 3, 2, 2, 2, 2, 281, 3, 2, 2, 2, 2, 283, 3, 2, 2, 2, 2, 285, 3, 2, 2, 2, 2, 287, 3, 2, 2, 2, 2, 289, 3, 2, 2, 2, 2, 291, 3, 2, 2, 2, 2, 293, 3, 2, 2, 2, 2, 299, 3, 2, 2, 2, 2, 301, 3, 2, 2, 2, 2, 303, 3, 2, 2, 2, 2, 305, 3, 2, 2, 2, 2, 307, 3, 2, 2, 2, 3, 309, 3, 2, 2, 2, 5, 318, 3, 2, 2, 2, 7, 325, 3, 2, 2, 2, 9, 333, 3, 2, 2, 2, 11, 339, 3, 2, 2, 2, 13, 344, 3, 2, 2, 2, 15, 349, 3, 2, 2, 2, 17, 355, 3, 2, 2, 2, 19, 360, 3, 2, 2, 2, 21, 366, 3, 2, 2, 2, 23, 372, 3, 2, 2, 2, 25, 381, 3, 2, 2, 2, 27, 389, 3, 2, 2, 2, 29, 392, 3, 2, 2, 2, 31, 399, 3, 2, 2, 2, 33, 404, 3, 2, 2, 2, 35, 409, 3, 2, 2, 2, 37, 417, 3, 2, 2, 2, 39, 423, 3, 2, 2, 2, 41, 431, 3, 2, 2, 2, 43, 437, 3, 2, 2, 2, 45, 441, 3, 2, 2, 2, 47, 444, 3, 2, 2, 2, 49, 449, 3, 2, 2, 2, 51, 460, 3, 2, 2, 2, 53, 467, 3, 2, 2, 2, 55, 478, 3, 2, 2, 2, 57, 482, 3, 2, 2, 2, 59, 492, 3, 2, 2, 2, 61, 497, 3, 2, 2, 2, 63, 504, 3, 2, 2, 2, 65, 508, 3, 2, 2, 2, 67, 516, 3, 2, 2, 2, 69, 524, 3, 2, 2, 2, 71, 534, 3, 2, 2, 2, 73, 541, 3, 2, 2, 2, 75, 548, 3, 2, 2, 2, 77, 554, 3, 2, 2, 2, 79, 561, 3, 2, 2, 2, 81, 570, 3, 2, 2, 2, 83, 576, 3, 2, 2, 2, 85, 583, 3, 2, 2, 2, 87, 596, 3, 2, 2, 2, 89, 601, 3, 2, 2, 2, 91, 607, 3, 2, 2, 2, 93, 614, 3, 2, 2, 2, 95, 624, 3, 2, 2, 2, 97, 628, 3, 2, 2, 2, 99, 633, 3, 2, 2, 2, 101, 642, 3, 2, 2, 2, 103, 652, 3, 2, 2, 2, 105, 654, 3, 2, 2, 2, 107, 658, 3, 2, 2, 2, 109, 662, 3, 2, 2, 2, 111, 666, 3, 2, 2, 2, 113, 670, 3, 2, 2, 2, 115, 682, 3, 2, 2, 2, 117, 684, 3, 2, 2, 2, 119, 693, 3, 2, 2, 2, 121, 695, 3, 2, 2, 2, 123, 698, 3, 2, 2, 2, 125, 704, 3, 2, 2, 2, 127, 707, 3, 2, 2, 2, 129, 711, 3, 2, 2, 2, 131, 715, 3, 2, 2, 2, 133, 722, 3, 2, 2, 2, 135, 725, 3, 2, 2, 2, 137, 731, 3, 2, 2, 2, 139, 733, 3, 2, 2, 2, 141, 739, 3, 2, 2, 2, 143, 746, 3, 2, 2, 2, 145, 749, 3, 2, 2, 2, 147, 755, 3, 2, 2, 2, 149, 757, 3, 2, 2, 2, 151, 761, 3, 2, 2, 2, 153, 768, 3, 2, 2, 2, 155, 771, 3, 2, 2, 2, 157, 777, 3, 2, 2, 2, 159, 781, 3, 2, 2, 2, 161, 810, 3, 2, 2, 2, 163, 812, 3, 2, 2, 2, 165, 815, 3, 2, 2, 2, 167, 818, 3, 2, 2, 2, 169, 822, 3, 2, 2, 2, 171, 824, 3, 2, 2, 2, 173, 826, 3, 2, 2, 2, 175, 842, 3, 2, 2, 2, 177, 844, 3, 2, 2, 2, 179, 847, 3, 2, 2, 2, 181, 858, 3, 2, 2, 2, 183, 868, 3, 2, 2, 2, 185, 870, 3, 2, 2, 2, 187, 872, 3, 2, 2, 2, 189, 879, 3, 2, 2, 2, 191, 885, 3, 2, 2, 2, 193, 891, 3, 2, 2, 2, 195, 904, 3, 2, 2, 2, 197, 906, 3, 2, 2, 2, 199, 908, 3, 2, 2, 2, 201, 919, 3, 2, 2, 2, 203, 924, 3, 2, 2, 2, 205, 926, 3, 2, 2, 2, 207, 928, 3, 2, 2, 2, 209, 930, 3, 2, 2, 2, 211, 932, 3, 2, 2, 2, 213, 934, 3, 2, 2, 2, 215, 936, 3, 2, 2, 2, 217, 938, 3, 2, 2, 2, 219, 940, 3, 2, 2, 2, 221, 942, 3, 2, 2, 2, 223, 944, 3, 2, 2, 2, 225, 946, 3, 2, 2, 2, 227, 948, 3, 2, 2, 2, 229, 950, 3, 2, 2, 2, 231, 952, 3, 2, 2, 2, 233, 954, 3, 2, 2, 2, 235, 956, 3, 2, 2, 2, 237, 959, 3, 2, 2, 2, 239, 962, 3, 2, 2, 2, 241, 965, 3, 2, 2, 2, 243, 968, 3, 2, 2, 2, 245, 971, 3, 2, 2, 2, 247, 974, 3, 2, 2, 2, 249, 977, 3, 2, 2, 2, 251, 980, 3, 2, 2, 2, 253, 982, 3, 2, 2, 2, 255, 984, 3, 2, 2, 2, 257, 986, 3, 2, 2, 2, 259, 988, 3, 2, 2, 2, 261, 990, 3, 2, 2, 2, 263, 992, 3, 2, 2, 2, 265, 994, 3, 2, 2, 2, 267, 996, 3, 2, 2, 2, 269, 999, 3, 2, 2, 2, 271, 1002, 3, 2, 2, 2, 273, 1005, 3, 2, 2, 2, 275, 1008, 3, 2, 2, 2, 277, 1011, 3, 2, 2, 2, 279, 1014, 3, 2, 2, 2, 281, 1017, 3, 2, 2, 2, 283, 1020, 3, 2, 2, 2, 285, 1023, 3, 2, 2, 2, 287, 1026, 3, 2, 2, 2, 289, 1030, 3, 2, 2, 2, 291, 1034, 3, 2, 2, 2, 293, 1039, 3, 2, 2, 2, 295, 1050, 3, 2, 2, 2, 297, 1056, 3, 2, 2, 2, 299, 1058, 3, 2, 2, 2, 301, 1060, 3, 2, 2, 2, 303, 1065, 3, 2, 2, 2, 305, 1071, 3, 2, 2, 2, 307, 1085, 3, 2, 2, 2, 309, 310, 7, 99, 2, 2, 310, 311, 7, 100, 2, 2, 311, 312, 7, 117, 2, 2, 312, 313, 7, 118, 2, 2, 313, 314, 7, 116, 2, 2, 314, 315, 7, 99, 2, 2, 315, 316, 7, 101, 2, 2, 316, 317, 7, 118, 2, 2, 317, 4, 3, 2, 2, 2, 318, 319, 7, 99, 2, 2, 319, 320, 7, 117, 2, 2, 320, 321, 7, 117, 2, 2, 321, 322, 7, 103, 2, 2, 322, 323, 7, 116, 2, 2, 323, 324, 7, 118, 2, 2, 324, 6, 3, 2, 2, 2, 325, 326, 7, 100, 2, 2, 326, 327, 7, 113, 2, 2, 327, 328, 7, 113, 2, 2, 328, 329, 7, 110, 2, 2, 329, 330, 7, 103, 2, 2, 330, 331, 7, 99, 2, 2, 331, 332, 7, 112, 2, 2, 332, 8, 3, 2, 2, 2, 333, 334, 7, 100, 2, 2, 334, 335, 7, 116, 2, 2, 335, 336, 7, 103, 2, 2, 336, 337, 7, 99, 2, 2, 337, 338, 7, 109, 2, 2, 338, 10, 3, 2, 2, 2, 339, 340, 7, 100, 2, 2, 340, 341, 7, 123, 2, 2, 341, 342, 7, 118, 2, 2, 342, 343, 7, 103, 2, 2, 343, 12, 3, 2, 2, 2, 344, 345, 7, 101, 2, 2, 345, 346, 7, 99, 2, 2, 346, 347, 7, 117, 2, 2, 347, 348, 7, 103, 2, 2, 348, 14, 3, 2, 2, 2, 349, 350, 7, 101, 2, 2, 350, 351, 7, 99, 2, 2, 351, 352, 7, 118, 2, 2, 352, 353, 7, 101, 2, 2, 353, 354, 7, 106, 2, 2, 354, 16, 3, 2, 2, 2, 355, 356, 7, 101, 2, 2, 356, 357, 7, 106, 2, 2, 357, 358, 7, 99, 2, 2, 358, 359, 7, 116, 2, 2, 359, 18, 3, 2, 2, 2, 360, 361, 7, 101, 2, 2, 361, 362, 7, 110, 2, 2, 362, 363, 7, 99, 2, 2, 363, 364, 7, 117, 2, 2, 364, 365, 7, 117, 2, 2, 365, 20, 3, 2, 2, 2, 366, 367, 7, 101, 2, 2, 367, 368, 7, 113, 2, 2, 368, 369, 7, 112, 2, 2, 369, 370, 7, 117, 2, 2, 370, 371, 7, 118, 2, 2, 371, 22, 3, 2, 2, 2, 372, 373, 7, 101, 2, 2, 373, 374, 7, 113, 2, 2, 374, 375, 7, 112, 2, 2, 375, 376, 7, 118, 2, 2, 376, 377, 7, 107, 2, 2, 377, 378, 7, 112, 2, 2, 378, 379, 7, 119, 2, 2, 379, 380, 7, 103, 2, 2, 380, 24, 3, 2, 2, 2, 381, 382, 7, 102, 2, 2, 382, 383, 7, 103, 2, 2, 383, 384, 7, 104, 2, 2, 384, 385, 7, 99, 2, 2, 385, 386, 7, 119, 2, 2, 386, 387, 7, 110, 2, 2, 387, 388, 7, 118, 2, 2, 388, 26, 3, 2, 2, 2, 389, 390, 7, 102, 2, 2, 390, 391, 7, 113, 2, 2, 391, 28, 3, 2, 2, 2, 392, 393, 7, 102, 2, 2, 393, 394, 7, 113, 2, 2, 394, 395, 7, 119, 2, 2, 395, 396, 7, 100, 2, 2, 396, 397, 7, 110, 2, 2, 397, 398, 7, 103, 2, 2, 398, 30, 3, 2, 2, 2, 399, 400, 7, 103, 2, 2, 400, 401, 7, 110, 2, 2, 401, 402, 7, 117, 2, 2, 402, 403, 7, 103, 2, 2, 403, 32, 3, 2, 2, 2, 404, 405, 7, 103, 2, 2, 405, 406, 7, 112, 2, 2, 406, 407, 7, 119, 2, 2, 407, 408, 7, 111, 2, 2, 408, 34, 3, 2, 2, 2, 409, 410, 7, 103, 2, 2, 410, 411, 7, 122, 2, 2, 411, 412, 7, 118, 2, 2, 412, 413, 7, 103, 2, 2, 413, 414, 7, 112, 2, 2, 414, 415, 7, 102, 2, 2, 415, 416, 7, 117, 2, 2, 416, 36, 3, 2, 2, 2, 417, 418, 7, 104, 2, 2, 418, 419, 7, 107, 2, 2, 419, 420, 7, 112, 2, 2, 420, 421, 7, 99, 2, 2, 421, 422, 7, 110, 2, 2, 422, 38, 3, 2, 2, 2, 423, 424, 7, 104, 2, 2, 424, 425, 7, 107, 2, 2, 425, 426, 7, 112, 2, 2, 426, 427, 7, 99, 2, 2, 427, 428, 7, 110, 2, 2, 428, 429, 7, 110, 2, 2, 429, 430, 7, 123, 2, 2, 430, 40, 3, 2, 2, 2, 431, 432, 7, 104, 2, 2, 432, 433, 7, 110, 2, 2, 433, 434, 7, 113, 2, 2, 434, 435, 7, 99, 2, 2, 435, 436, 7, 118, 2, 2, 436, 42, 3, 2, 2, 2, 437, 438, 7, 104, 2, 2, 438, 439, 7, 113, 2, 2, 439, 440, 7, 116, 2, 2, 440, 44, 3, 2, 2, 2, 441, 442, 7, 107, 2, 2, 442, 443, 7, 104, 2, 2, 443, 46, 3, 2, 2, 2, 444, 445, 7, 105, 2, 2, 445, 446, 7, 113, 2, 2, 446, 447, 7, 118, 2, 2, 447, 448, 7, 113, 2, 2, 448, 48, 3, 2, 2, 2, 449, 450, 7, 107, 2, 2, 450, 451, 7, 111, 2, 2, 451, 452, 7, 114, 2, 2, 452, 453, 7, 110, 2, 2, 453, 454, 7, 103, 2, 2, 454, 455, 7, 111, 2, 2, 455, 456, 7, 103, 2, 2, 456, 457, 7, 112, 2, 2, 457, 458, 7, 118, 2, 2, 458, 459, 7, 117, 2, 2, 459, 50, 3, 2, 2, 2, 460, 461, 7, 107, 2, 2, 461, 462, 7, 111, 2, 2, 462, 463, 7, 114, 2, 2, 463, 464, 7, 113, 2, 2, 464, 465, 7, 116, 2, 2, 465, 466, 7, 118, 2, 2, 466, 52, 3, 2, 2, 2, 467, 468, 7, 107, 2, 2, 468, 469, 7, 112, 2, 2, 469, 470, 7, 117, 2, 2, 470, 471, 7, 118, 2, 2, 471, 472, 7, 99, 2, 2, 472, 473, 7, 112, 2, 2, 473, 474, 7, 101, 2, 2, 474, 475, 7, 103, 2, 2, 475, 476, 7, 113, 2, 2, 476, 477, 7, 104, 2, 2, 477, 54, 3, 2, 2, 2, 478, 479, 7, 107, 2, 2, 479, 480, 7, 112, 2, 2, 480, 481, 7, 118, 2, 2, 481, 56, 3, 2, 2, 2, 482, 483, 7, 107, 2, 2, 483, 484, 7, 112, 2, 2, 484, 485, 7, 118, 2, 2, 485, 486, 7, 103, 2, 2, 486, 487, 7, 116, 2, 2, 487, 488, 7, 104, 2, 2, 488, 489, 7, 99, 2, 2, 489, 490, 7, 101, 2, 2, 490, 491, 7, 103, 2, 2, 491, 58, 3, 2, 2, 2, 492, 493, 7, 110, 2, 2, 493, 494, 7, 113, 2, 2, 494, 495, 7, 112, 2, 2, 495, 496, 7, 105, 2, 2, 496, 60, 3, 2, 2, 2, 497, 498, 7, 112, 2, 2, 498, 499, 7, 99, 2, 2, 499, 500, 7, 118, 2, 2, 500, 501, 7, 107, 2, 2, 501, 502, 7, 120, 2, 2, 502, 503, 7, 103, 2, 2, 503, 62, 3, 2, 2, 2, 504, 505, 7, 112, 2, 2, 505, 506, 7, 103, 2, 2, 506, 507, 7, 121, 2, 2, 507, 64, 3, 2, 2, 2, 508, 509, 7, 114, 2, 2, 509, 510, 7, 99, 2, 2, 510, 511, 7, 101, 2, 2, 511, 512, 7, 109, 2, 2, 512, 513, 7, 99, 2, 2, 513, 514, 7, 105, 2, 2, 514, 515, 7, 103, 2, 2, 515, 66, 3, 2, 2, 2, 516, 517, 7, 114, 2, 2, 517, 518, 7, 116, 2, 2, 518, 519, 7, 107, 2, 2, 519, 520, 7, 120, 2, 2, 520, 521, 7, 99, 2, 2, 521, 522, 7, 118, 2, 2, 522, 523, 7, 103, 2, 2, 523, 68, 3, 2, 2, 2, 524, 525, 7, 114, 2, 2, 525, 526, 7, 116, 2, 2, 526, 527, 7, 113, 2, 2, 527, 528, 7, 118, 2, 2, 528, 529, 7, 103, 2, 2, 529, 530, 7, 101, 2, 2, 530, 531, 7, 118, 2, 2, 531, 532, 7, 103, 2, 2, 532, 533, 7, 102, 2, 2, 533, 70, 3, 2, 2, 2, 534, 535, 7, 114, 2, 2, 535, 536, 7, 119, 2, 2, 536, 537, 7, 100, 2, 2, 537, 538, 7, 110, 2, 2, 538, 539, 7, 107, 2, 2, 539, 540, 7, 101, 2, 2, 540, 72, 3, 2, 2, 2, 541, 542, 7, 116, 2, 2, 542, 543, 7, 103, 2, 2, 543, 544, 7, 118, 2, 2, 544, 545, 7, 119, 2, 2, 545, 546, 7, 116, 2, 2, 546, 547, 7, 112, 2, 2, 547, 74, 3, 2, 2, 2, 548, 549, 7, 117, 2, 2, 549, 550, 7, 106, 2, 2, 550, 551, 7, 113, 2, 2, 551, 552, 7, 116, 2, 2, 552, 553, 7, 118, 2, 2, 553, 76, 3, 2, 2, 2, 554, 555, 7, 117, 2, 2, 555, 556, 7, 118, 2, 2, 556, 557, 7, 99, 2, 2, 557, 558, 7, 118, 2, 2, 558, 559, 7, 107, 2, 2, 559, 560, 7, 101, 2, 2, 560, 78, 3, 2, 2, 2, 561, 562, 7, 117, 2, 2, 562, 563, 7, 118, 2, 2, 563, 564, 7, 116, 2, 2, 564, 565, 7, 107, 2, 2, 565, 566, 7, 101, 2, 2, 566, 567, 7, 118, 2, 2, 567, 568, 7, 104, 2, 2, 568, 569, 7, 114, 2, 2, 569, 80, 3, 2, 2, 2, 570, 571, 7, 117, 2, 2, 571, 572, 7, 119, 2, 2, 572, 573, 7, 114, 2, 2, 573, 574, 7, 103, 2, 2, 574, 575, 7, 116, 2, 2, 575, 82, 3, 2, 2, 2, 576, 577, 7, 117, 2, 2, 577, 578, 7, 121, 2, 2, 578, 579, 7, 107, 2, 2, 579, 580, 7, 118, 2, 2, 580, 581, 7, 101, 2, 2, 581, 582, 7, 106, 2, 2, 582, 84, 3, 2, 2, 2, 583, 584, 7, 117, 2, 2, 584, 585, 7, 123, 2, 2, 585, 586, 7, 112, 2, 2, 586, 587, 7, 101, 2, 2, 587, 588, 7, 106, 2, 2, 588, 589, 7, 116, 2, 2, 589, 590, 7, 113, 2, 2, 590, 591, 7, 112, 2, 2, 591, 592, 7, 107, 2, 2, 592, 593, 7, 124, 2, 2, 593, 594, 7, 103, 2, 2, 594, 595, 7, 102, 2, 2, 595, 86, 3, 2, 2, 2, 596, 597, 7, 118, 2, 2, 597, 598, 7, 106, 2, 2, 598, 599, 7, 107, 2, 2, 599, 600, 7, 117, 2, 2, 600, 88, 3, 2, 2, 2, 601, 602, 7, 118, 2, 2, 602, 603, 7, 106, 2, 2, 603, 604, 7, 116, 2, 2, 604, 605, 7, 113, 2, 2, 605, 606, 7, 121, 2, 2, 606, 90, 3, 2, 2, 2, 607, 608, 7, 118, 2, 2, 608, 609, 7, 106, 2, 2, 609, 610, 7, 116, 2, 2, 610, 611, 7, 113, 2, 2, 611, 612, 7, 121, 2, 2, 612, 613, 7, 117, 2, 2, 613, 92, 3, 2, 2, 2, 614, 615, 7, 118, 2, 2, 615, 616, 7, 116, 2, 2, 616, 617, 7, 99, 2, 2, 617, 618, 7, 112, 2, 2, 618, 619, 7, 117, 2, 2, 619, 620, 7, 107, 2, 2, 620, 621, 7, 103, 2, 2, 621, 622, 7, 112, 2, 2, 622, 623, 7, 118, 2, 2, 623, 94, 3, 2, 2, 2, 624, 625, 7, 118, 2, 2, 625, 626, 7, 116, 2, 2, 626, 627, 7, 123, 2, 2, 627, 96, 3, 2, 2, 2, 628, 629, 7, 120, 2, 2, 629, 630, 7, 113, 2, 2, 630, 631, 7, 107, 2, 2, 631, 632, 7, 102, 2, 2, 632, 98, 3, 2, 2, 2, 633, 634, 7, 120, 2, 2, 634, 635, 7, 113, 2, 2, 635, 636, 7, 110, 2, 2, 636, 637, 7, 99, 2, 2, 637, 638, 7, 118, 2, 2, 638, 639, 7, 107, 2, 2, 639, 640, 7, 110, 2, 2, 640, 641, 7, 103, 2, 2, 641, 100, 3, 2, 2, 2, 642, 643, 7, 121, 2, 2, 643, 644, 7, 106, 2, 2, 644, 645, 7, 107, 2, 2, 645, 646, 7, 110, 2, 2, 646, 647, 7, 103, 2, 2, 647, 102, 3, 2, 2, 2, 648, 653, 5, 105, 53, 2, 649, 653, 5, 107, 54, 2, 650, 653, 5, 109, 55, 2, 651, 653, 5, 111, 56, 2, 652, 648, 3, 2, 2, 2, 652, 649, 3, 2, 2, 2, 652, 650, 3, 2, 2, 2, 652, 651, 3, 2, 2, 2, 653, 104, 3, 2, 2, 2, 654, 656, 5, 115, 58, 2, 655, 657, 5, 113, 57, 2, 656, 655, 3, 2, 2, 2, 656, 657, 3, 2, 2, 2, 657, 106, 3, 2, 2, 2, 658, 660, 5, 129, 65, 2, 659, 661, 5, 113, 57, 2, 660, 659, 3, 2, 2, 2, 660, 661, 3, 2, 2, 2, 661, 108, 3, 2, 2, 2, 662, 664, 5, 139, 70, 2, 663, 665, 5, 113, 57, 2, 664, 663, 3, 2, 2, 2, 664, 665, 3, 2, 2, 2, 665, 110, 3, 2, 2, 2, 666, 668, 5, 149, 75, 2, 667, 669, 5, 113, 57, 2, 668, 667, 3, 2, 2, 2, 668, 669, 3, 2, 2, 2, 669, 112, 3, 2, 2, 2, 670, 671, 9, 2, 2, 2, 671, 114, 3, 2, 2, 2, 672, 683, 7, 50, 2, 2, 673, 680, 5, 121, 61, 2, 674, 676, 5, 117, 59, 2, 675, 674, 3, 2, 2, 2, 675, 676, 3, 2, 2, 2, 676, 681, 3, 2, 2, 2, 677, 678, 5, 127, 64, 2, 678, 679, 5, 117, 59, 2, 679, 681, 3, 2, 2, 2, 680, 675, 3, 2, 2, 2, 680, 677, 3, 2, 2, 2, 681, 683, 3, 2, 2, 2, 682, 672, 3, 2, 2, 2, 682, 673, 3, 2, 2, 2, 683, 116, 3, 2, 2, 2, 684, 689, 5, 119, 60, 2, 685, 687, 5, 123, 62, 2, 686, 685, 3, 2, 2, 2, 686, 687, 3, 2, 2, 2, 687, 688, 3, 2, 2, 2, 688, 690, 5, 119, 60, 2, 689, 686, 3, 2, 2, 2, 689, 690, 3, 2, 2, 2, 690, 118, 3, 2, 2, 2, 691, 694, 7, 50, 2, 2, 692, 694, 5, 121, 61, 2, 693, 691, 3, 2, 2, 2, 693, 692, 3, 2, 2, 2, 694, 120, 3, 2, 2, 2, 695, 696, 9, 3, 2, 2, 696, 122, 3, 2, 2, 2, 697, 699, 5, 125, 63, 2, 698, 697, 3, 2, 2, 2, 699, 700, 3, 2, 2, 2, 700, 698, 3, 2, 2, 2, 700, 701, 3, 2, 2, 2, 701, 124, 3, 2, 2, 2, 702, 705, 5, 119, 60, 2, 703, 705, 7, 97, 2, 2, 704, 702, 3, 2, 2, 2, 704, 703, 3, 2, 2, 2, 705, 126, 3, 2, 2, 2, 706, 708, 7, 97, 2, 2, 707, 706, 3, 2, 2, 2, 708, 709, 3, 2, 2, 2, 709, 707, 3, 2, 2, 2, 709, 710, 3, 2, 2, 2, 710, 128, 3, 2, 2, 2, 711, 712, 7, 50, 2, 2, 712, 713, 9, 4, 2, 2, 713, 714, 5, 131, 66, 2, 714, 130, 3, 2, 2, 2, 715, 720, 5, 133, 67, 2, 716, 718, 5, 135, 68, 2, 717, 716, 3, 2, 2, 2, 717, 718, 3, 2, 2, 2, 718, 719, 3, 2, 2, 2, 719, 721, 5, 133, 67, 2, 720, 717, 3, 2, 2, 2, 720, 721, 3, 2, 2, 2, 721, 132, 3, 2, 2, 2, 722, 723, 9, 5, 2, 2, 723, 134, 3, 2, 2, 2, 724, 726, 5, 137, 69, 2, 725, 724, 3, 2, 2, 2, 726, 727, 3, 2, 2, 2, 727, 725, 3, 2, 2, 2, 727, 728, 3, 2, 2, 2, 728, 136, 3, 2, 2, 2, 729, 732, 5, 133, 67, 2, 730, 732, 7, 97, 2, 2, 731, 729, 3, 2, 2, 2, 731, 730, 3, 2, 2, 2, 732, 138, 3, 2, 2, 2, 733, 735, 7, 50, 2, 2, 734, 736, 5, 127, 64, 2, 735, 734, 3, 2, 2, 2, 735, 736, 3, 2, 2, 2, 736, 737, 3, 2, 2, 2, 737, 738, 5, 141, 71, 2, 738, 140, 3, 2, 2, 2, 739, 744, 5, 143, 72, 2, 740, 742, 5, 145, 73, 2, 741, 740, 3, 2, 2, 2, 741, 742, 3, 2, 2, 2, 742, 743, 3, 2, 2, 2, 743, 745, 5, 143, 72, 2, 744, 741, 3, 2, 2, 2, 744, 745, 3, 2, 2, 2, 745, 142, 3, 2, 2, 2, 746, 747, 9, 6, 2, 2, 747, 144, 3, 2, 2, 2, 748, 750, 5, 147, 74, 2, 749, 748, 3, 2, 2, 2, 750, 751, 3, 2, 2, 2, 751, 749, 3, 2, 2, 2, 751, 752, 3, 2, 2, 2, 752, 146, 3, 2, 2, 2, 753, 756, 5, 143, 72, 2, 754, 756, 7, 97, 2, 2, 755, 753, 3, 2, 2, 2, 755, 754, 3, 2, 2, 2, 756, 148, 3, 2, 2, 2, 757, 758, 7, 50, 2, 2, 758, 759, 9, 7, 2, 2, 759, 760, 5, 151, 76, 2, 760, 150, 3, 2, 2, 2, 761, 766, 5, 153, 77, 2, 762, 764, 5, 155, 78, 2, 763, 762, 3, 2, 2, 2, 763, 764, 3, 2, 2, 2, 764, 765, 3, 2, 2, 2, 765, 767, 5, 153, 77, 2, 766, 763, 3, 2, 2, 2, 766, 767, 3, 2, 2, 2, 767, 152, 3, 2, 2, 2, 768, 769, 9, 8, 2, 2, 769, 154, 3, 2, 2, 2, 770, 772, 5, 157, 79, 2, 771, 770, 3, 2, 2, 2, 772, 773, 3, 2, 2, 2, 773, 771, 3, 2, 2, 2, 773, 774, 3, 2, 2, 2, 774, 156, 3, 2, 2, 2, 775, 778, 5, 153, 77, 2, 776, 778, 7, 97, 2, 2, 777, 775, 3, 2, 2, 2, 777, 776, 3, 2, 2, 2, 778, 158, 3, 2, 2, 2, 779, 782, 5, 161, 81, 2, 780, 782, 5, 173, 87, 2, 781, 779, 3, 2, 2, 2, 781, 780, 3, 2, 2, 2, 782, 160, 3, 2, 2, 2, 783, 784, 5, 117, 59, 2, 784, 786, 7, 48, 2, 2, 785, 787, 5, 117, 59, 2, 786, 785, 3, 2, 2, 2, 786, 787, 3, 2, 2, 2, 787, 789, 3, 2, 2, 2, 788, 790, 5, 163, 82, 2, 789, 788, 3, 2, 2, 2, 789, 790, 3, 2, 2, 2, 790, 792, 3, 2, 2, 2, 791, 793, 5, 171, 86, 2, 792, 791, 3, 2, 2, 2, 792, 793, 3, 2, 2, 2, 793, 811, 3, 2, 2, 2, 794, 795, 7, 48, 2, 2, 795, 797, 5, 117, 59, 2, 796, 798, 5, 163, 82, 2, 797, 796, 3, 2, 2, 2, 797, 798, 3, 2, 2, 2, 798, 800, 3, 2, 2, 2, 799, 801, 5, 171, 86, 2, 800, 799, 3, 2, 2, 2, 800, 801, 3, 2, 2, 2, 801, 811, 3, 2, 2, 2, 802, 803, 5, 117, 59, 2, 803, 805, 5, 163, 82, 2, 804, 806, 5, 171, 86, 2, 805, 804, 3, 2, 2, 2, 805, 806, 3, 2, 2, 2, 806, 811, 3, 2, 2, 2, 807, 808, 5, 117, 59, 2, 808, 809, 5, 171, 86, 2, 809, 811, 3, 2, 2, 2, 810, 783, 3, 2, 2, 2, 810, 794, 3, 2, 2, 2, 810, 802, 3, 2, 2, 2, 810, 807, 3, 2, 2, 2, 811, 162, 3, 2, 2, 2, 812, 813, 5, 165, 83, 2, 813, 814, 5, 167, 84, 2, 814, 164, 3, 2, 2, 2, 815, 816, 9, 9, 2, 2, 816, 166, 3, 2, 2, 2, 817, 819, 5, 169, 85, 2, 818, 817, 3, 2, 2, 2, 818, 819, 3, 2, 2, 2, 819, 820, 3, 2, 2, 2, 820, 821, 5, 117, 59, 2, 821, 168, 3, 2, 2, 2, 822, 823, 9, 10, 2, 2, 823, 170, 3, 2, 2, 2, 824, 825, 9, 11, 2, 2, 825, 172, 3, 2, 2, 2, 826, 827, 5, 175, 88, 2, 827, 829, 5, 177, 89, 2, 828, 830, 5, 171, 86, 2, 829, 828, 3, 2, 2, 2, 829, 830, 3, 2, 2, 2, 830, 174, 3, 2, 2, 2, 831, 833, 5, 129, 65, 2, 832, 834, 7, 48, 2, 2, 833, 832, 3, 2, 2, 2, 833, 834, 3, 2, 2, 2, 834, 843, 3, 2, 2, 2, 835, 836, 7, 50, 2, 2, 836, 838, 9, 4, 2, 2, 837, 839, 5, 131, 66, 2, 838, 837, 3, 2, 2, 2, 838, 839, 3, 2, 2, 2, 839, 840, 3, 2, 2, 2, 840, 841, 7, 48, 2, 2, 841, 843, 5, 131, 66, 2, 842, 831, 3, 2, 2, 2, 842, 835, 3, 2, 2, 2, 843, 176, 3, 2, 2, 2, 844, 845, 5, 179, 90, 2, 845, 846, 5, 167, 84, 2, 846, 178, 3, 2, 2, 2, 847, 848, 9, 12, 2, 2, 848, 180, 3, 2, 2, 2, 849, 850, 7, 118, 2, 2, 850, 851, 7, 116, 2, 2, 851, 852, 7, 119, 2, 2, 852, 859, 7, 103, 2, 2, 853, 854, 7, 104, 2, 2, 854, 855, 7, 99, 2, 2, 855, 856, 7, 110, 2, 2, 856, 857, 7, 117, 2, 2, 857, 859, 7, 103, 2, 2, 858, 849, 3, 2, 2, 2, 858, 853, 3, 2, 2, 2, 859, 182, 3, 2, 2, 2, 860, 861, 7, 41, 2, 2, 861, 862, 5, 185, 93, 2, 862, 863, 7, 41, 2, 2, 863, 869, 3, 2, 2, 2, 864, 865, 7, 41, 2, 2, 865, 866, 5, 193, 97, 2, 866, 867, 7, 41, 2, 2, 867, 869, 3, 2, 2, 2, 868, 860, 3, 2, 2, 2, 868, 864, 3, 2, 2, 2, 869, 184, 3, 2, 2, 2, 870, 871, 10, 13, 2, 2, 871, 186, 3, 2, 2, 2, 872, 874, 7, 36, 2, 2, 873, 875, 5, 189, 95, 2, 874, 873, 3, 2, 2, 2, 874, 875, 3, 2, 2, 2, 875, 876, 3, 2, 2, 2, 876, 877, 7, 36, 2, 2, 877, 188, 3, 2, 2, 2, 878, 880, 5, 191, 96, 2, 879, 878, 3, 2, 2, 2, 880, 881, 3, 2, 2, 2, 881, 879, 3, 2, 2, 2, 881, 882, 3, 2, 2, 2, 882, 190, 3, 2, 2, 2, 883, 886, 10, 14, 2, 2, 884, 886, 5, 193, 97, 2, 885, 883, 3, 2, 2, 2, 885, 884, 3, 2, 2, 2, 886, 192, 3, 2, 2, 2, 887, 888, 7, 94, 2, 2, 888, 892, 9, 15, 2, 2, 889, 892, 5, 195, 98, 2, 890, 892, 5, 199, 100, 2, 891, 887, 3, 2, 2, 2, 891, 889, 3, 2, 2, 2, 891, 890, 3, 2, 2, 2, 892, 194, 3, 2, 2, 2, 893, 894, 7, 94, 2, 2, 894, 905, 5, 143, 72, 2, 895, 896, 7, 94, 2, 2, 896, 897, 5, 143, 72, 2, 897, 898, 5, 143, 72, 2, 898, 905, 3, 2, 2, 2, 899, 900, 7, 94, 2, 2, 900, 901, 5, 197, 99, 2, 901, 902, 5, 143, 72, 2, 902, 903, 5, 143, 72, 2, 903, 905, 3, 2, 2, 2, 904, 893, 3, 2, 2, 2, 904, 895, 3, 2, 2, 2, 904, 899, 3, 2, 2, 2, 905, 196, 3, 2, 2, 2, 906, 907, 9, 16, 2, 2, 907, 198, 3, 2, 2, 2, 908, 910, 7, 94, 2, 2, 909, 911, 7, 119, 2, 2, 910, 909, 3, 2, 2, 2, 911, 912, 3, 2, 2, 2, 912, 910, 3, 2, 2, 2, 912, 913, 3, 2, 2, 2, 913, 914, 3, 2, 2, 2, 914, 915, 5, 133, 67, 2, 915, 916, 5, 133, 67, 2, 916, 917, 5, 133, 67, 2, 917, 918, 5, 133, 67, 2, 918, 200, 3, 2, 2, 2, 919, 920, 7, 112, 2, 2, 920, 921, 7, 119, 2, 2, 921, 922, 7, 110, 2, 2, 922, 923, 7, 110, 2, 2, 923, 202, 3, 2, 2, 2, 924, 925, 7, 42, 2, 2, 925, 204, 3, 2, 2, 2, 926, 927, 7, 43, 2, 2, 927, 206, 3, 2, 2, 2, 928, 929, 7, 125, 2, 2, 929, 208, 3, 2, 2, 2, 930, 931, 7, 127, 2, 2, 931, 210, 3, 2, 2, 2, 932, 933, 7, 93, 2, 2, 933, 212, 3, 2, 2, 2, 934, 935, 7, 95, 2, 2, 935, 214, 3, 2, 2, 2, 936, 937, 7, 61, 2, 2, 937, 216, 3, 2, 2, 2, 938, 939, 7, 46, 2, 2, 939, 218, 3, 2, 2, 2, 940, 941, 7, 48, 2, 2, 941, 220, 3, 2, 2, 2, 942, 943, 7, 63, 2, 2, 943, 222, 3, 2, 2, 2, 944, 945, 7, 64, 2, 2, 945, 224, 3, 2, 2, 2, 946, 947, 7, 62, 2, 2, 947, 226, 3, 2, 2, 2, 948, 949, 7, 35, 2, 2, 949, 228, 3, 2, 2, 2, 950, 951, 7, 128, 2, 2, 951, 230, 3, 2, 2, 2, 952, 953, 7, 65, 2, 2, 953, 232, 3, 2, 2, 2, 954, 955, 7, 60, 2, 2, 955, 234, 3, 2, 2, 2, 956, 957, 7, 63, 2, 2, 957, 958, 7, 63, 2, 2, 958, 236, 3, 2, 2, 2, 959, 960, 7, 62, 2, 2, 960, 961, 7, 63, 2, 2, 961, 238, 3, 2, 2, 2, 962, 963, 7, 64, 2, 2, 963, 964, 7, 63, 2, 2, 964, 240, 3, 2, 2, 2, 965, 966, 7, 35, 2, 2, 966, 967, 7, 63, 2, 2, 967, 242, 3, 2, 2, 2, 968, 969, 7, 40, 2, 2, 969, 970, 7, 40, 2, 2, 970, 244, 3, 2, 2, 2, 971, 972, 7, 126, 2, 2, 972, 973, 7, 126, 2, 2, 973, 246, 3, 2, 2, 2, 974, 975, 7, 45, 2, 2, 975, 976, 7, 45, 2, 2, 976, 248, 3, 2, 2, 2, 977, 978, 7, 47, 2, 2, 978, 979, 7, 47, 2, 2, 979, 250, 3, 2, 2, 2, 980, 981, 7, 45, 2, 2, 981, 252, 3, 2, 2, 2, 982, 983, 7, 47, 2, 2, 983, 254, 3, 2, 2, 2, 984, 985, 7, 44, 2, 2, 985, 256, 3, 2, 2, 2, 986, 987, 7, 49, 2, 2, 987, 258, 3, 2, 2, 2, 988, 989, 7, 40, 2, 2, 989, 260, 3, 2, 2, 2, 990, 991, 7, 126, 2, 2, 991, 262, 3, 2, 2, 2, 992, 993, 7, 96, 2, 2, 993, 264, 3, 2, 2, 2, 994, 995, 7, 39, 2, 2, 995, 266, 3, 2, 2, 2, 996, 997, 7, 47, 2, 2, 997, 998, 7, 64, 2, 2, 998, 268, 3, 2, 2, 2, 999, 1000, 7, 60, 2, 2, 1000, 1001, 7, 60, 2, 2, 1001, 270, 3, 2, 2, 2, 1002, 1003, 7, 45, 2, 2, 1003, 1004, 7, 63, 2, 2, 1004, 272, 3, 2, 2, 2, 1005, 1006, 7, 47, 2, 2, 1006, 1007, 7, 63, 2, 2, 1007, 274, 3, 2, 2, 2, 1008, 1009, 7, 44, 2, 2, 1009, 1010, 7, 63, 2, 2, 1010, 276, 3, 2, 2, 2, 1011, 1012, 7, 49, 2, 2, 1012, 1013, 7, 63, 2, 2, 1013, 278, 3, 2, 2, 2, 1014, 1015, 7, 40, 2, 2, 1015, 1016, 7, 63, 2, 2, 1016, 280, 3, 2, 2, 2, 1017, 1018, 7, 126, 2, 2, 1018, 1019, 7, 63, 2, 2, 1019, 282, 3, 2, 2, 2, 1020, 1021, 7, 96, 2, 2, 1021, 1022, 7, 63, 2, 2, 1022, 284, 3, 2, 2, 2, 1023, 1024, 7, 39, 2, 2, 1024, 1025, 7, 63, 2, 2, 1025, 286, 3, 2, 2, 2, 1026, 1027, 7, 62, 2, 2, 1027, 1028, 7, 62, 2, 2, 1028, 1029, 7, 63, 2, 2, 1029, 288, 3, 2, 2, 2, 1030, 1031, 7, 64, 2, 2, 1031, 1032, 7, 64, 2, 2, 1032, 1033, 7, 63, 2, 2, 1033, 290, 3, 2, 2, 2, 1034, 1035, 7, 64, 2, 2, 1035, 1036, 7, 64, 2, 2, 1036, 1037, 7, 64, 2, 2, 1037, 1038, 7, 63, 2, 2, 1038, 292, 3, 2, 2, 2, 1039, 1043, 5, 295, 148, 2, 1040, 1042, 5, 297, 149, 2, 1041, 1040, 3, 2, 2, 2, 1042, 1045, 3, 2, 2, 2, 1043, 1041, 3, 2, 2, 2, 1043, 1044, 3, 2, 2, 2, 1044, 294, 3, 2, 2, 2, 1045, 1043, 3, 2, 2, 2, 1046, 1051, 9, 17, 2, 2, 1047, 1051, 10, 18, 2, 2, 1048, 1049, 9, 19, 2, 2, 1049, 1051, 9, 20, 2, 2, 1050, 1046, 3, 2, 2, 2, 1050, 1047, 3, 2, 2, 2, 1050, 1048, 3, 2, 2, 2, 1051, 296, 3, 2, 2, 2, 1052, 1057, 9, 21, 2, 2, 1053, 1057, 10, 18, 2, 2, 1054, 1055, 9, 19, 2, 2, 1055, 1057, 9, 20, 2, 2, 1056, 1052, 3, 2, 2, 2, 1056, 1053, 3, 2, 2, 2, 1056, 1054, 3, 2, 2, 2, 1057, 298, 3, 2, 2, 2, 1058, 1059, 7, 66, 2, 2, 1059, 300, 3, 2, 2, 2, 1060, 1061, 7, 48, 2, 2, 1061, 1062, 7, 48, 2, 2, 1062, 1063, 7, 48, 2, 2, 1063, 302, 3, 2, 2, 2, 1064, 1066, 9, 22, 2, 2, 1065, 1064, 3, 2, 2, 2, 1066, 1067, 3, 2, 2, 2, 1067, 1065, 3, 2, 2, 2, 1067, 1068, 3, 2, 2, 2, 1068, 1069, 3, 2, 2, 2, 1069, 1070, 8, 152, 2, 2, 1070, 304, 3, 2, 2, 2, 1071, 1072, 7, 49, 2, 2, 1072, 1073, 7, 44, 2, 2, 1073, 1077, 3, 2, 2, 2, 1074, 1076, 11, 2, 2, 2, 1075, 1074, 3, 2, 2, 2, 1076, 1079, 3, 2, 2, 2, 1077, 1078, 3, 2, 2, 2, 1077, 1075, 3, 2, 2, 2, 1078, 1080, 3, 2, 2, 2, 1079, 1077, 3, 2, 2, 2, 1080, 1081, 7, 44, 2, 2, 1081, 1082, 7, 49, 2, 2, 1082, 1083, 3, 2, 2, 2, 1083, 1084, 8, 153, 2, 2, 1084, 306, 3, 2, 2, 2, 1085, 1086, 7, 49, 2, 2, 1086, 1087, 7, 49, 2, 2, 1087, 1091, 3, 2, 2, 2, 1088, 1090, 10, 23, 2, 2, 1089, 1088, 3, 2, 2, 2, 1090, 1093, 3, 2, 2, 2, 1091, 1089, 3, 2, 2, 2, 1091, 1092, 3, 2, 2, 2, 1092, 1094, 3, 2, 2, 2, 1093, 1091, 3, 2, 2, 2, 1094, 1095, 8, 154, 2, 2, 1095, 308, 3, 2, 2, 2, 57, 2, 652, 656, 660, 664, 668, 675, 680, 682, 686, 689, 693, 700, 704, 709, 717, 720, 727, 731, 735, 741, 744, 751, 755, 763, 766, 773, 777, 781, 786, 789, 792, 797, 800, 805, 810, 818, 829, 833, 838, 842, 858, 868, 874, 881, 885, 891, 904, 912, 1043, 1050, 1056, 1067, 1077, 1091, 3, 8, 2, 2] \ No newline at end of file diff --git a/persper/analytics/call_graph/java/Java8Lexer.py b/persper/analytics/call_graph/java/Java8Lexer.py deleted file mode 100644 index 4f2ce3773bd..00000000000 --- a/persper/analytics/call_graph/java/Java8Lexer.py +++ /dev/null @@ -1,712 +0,0 @@ -# Generated from Java8.g4 by ANTLR 4.7.2 -from antlr4 import * -from io import StringIO -from typing.io import TextIO -import sys - - - -def serializedATN(): - with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2m") - buf.write("\u0448\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7") - buf.write("\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r") - buf.write("\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23") - buf.write("\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30") - buf.write("\4\31\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36") - buf.write("\t\36\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%") - buf.write("\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.") - buf.write("\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64") - buf.write("\t\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:") - buf.write("\4;\t;\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\t") - buf.write("C\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4L\t") - buf.write("L\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT\4U\t") - buf.write("U\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4") - buf.write("^\t^\4_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4") - buf.write("g\tg\4h\th\4i\ti\4j\tj\4k\tk\4l\tl\4m\tm\4n\tn\4o\to\4") - buf.write("p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4w\tw\4x\tx\4") - buf.write("y\ty\4z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177\t\177\4\u0080") - buf.write("\t\u0080\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083") - buf.write("\4\u0084\t\u0084\4\u0085\t\u0085\4\u0086\t\u0086\4\u0087") - buf.write("\t\u0087\4\u0088\t\u0088\4\u0089\t\u0089\4\u008a\t\u008a") - buf.write("\4\u008b\t\u008b\4\u008c\t\u008c\4\u008d\t\u008d\4\u008e") - buf.write("\t\u008e\4\u008f\t\u008f\4\u0090\t\u0090\4\u0091\t\u0091") - buf.write("\4\u0092\t\u0092\4\u0093\t\u0093\4\u0094\t\u0094\4\u0095") - buf.write("\t\u0095\4\u0096\t\u0096\4\u0097\t\u0097\4\u0098\t\u0098") - buf.write("\4\u0099\t\u0099\4\u009a\t\u009a\3\2\3\2\3\2\3\2\3\2\3") - buf.write("\2\3\2\3\2\3\2\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\4\3\4\3\4") - buf.write("\3\4\3\4\3\4\3\4\3\4\3\5\3\5\3\5\3\5\3\5\3\5\3\6\3\6\3") - buf.write("\6\3\6\3\6\3\7\3\7\3\7\3\7\3\7\3\b\3\b\3\b\3\b\3\b\3\b") - buf.write("\3\t\3\t\3\t\3\t\3\t\3\n\3\n\3\n\3\n\3\n\3\n\3\13\3\13") - buf.write("\3\13\3\13\3\13\3\13\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3") - buf.write("\f\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\16\3\16\3\16\3\17") - buf.write("\3\17\3\17\3\17\3\17\3\17\3\17\3\20\3\20\3\20\3\20\3\20") - buf.write("\3\21\3\21\3\21\3\21\3\21\3\22\3\22\3\22\3\22\3\22\3\22") - buf.write("\3\22\3\22\3\23\3\23\3\23\3\23\3\23\3\23\3\24\3\24\3\24") - buf.write("\3\24\3\24\3\24\3\24\3\24\3\25\3\25\3\25\3\25\3\25\3\25") - buf.write("\3\26\3\26\3\26\3\26\3\27\3\27\3\27\3\30\3\30\3\30\3\30") - buf.write("\3\30\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31") - buf.write("\3\31\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\33\3\33\3\33") - buf.write("\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\34\3\34\3\34") - buf.write("\3\34\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35") - buf.write("\3\36\3\36\3\36\3\36\3\36\3\37\3\37\3\37\3\37\3\37\3\37") - buf.write("\3\37\3 \3 \3 \3 \3!\3!\3!\3!\3!\3!\3!\3!\3\"\3\"\3\"") - buf.write("\3\"\3\"\3\"\3\"\3\"\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3$") - buf.write("\3$\3$\3$\3$\3$\3$\3%\3%\3%\3%\3%\3%\3%\3&\3&\3&\3&\3") - buf.write("&\3&\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3(\3(\3(\3(\3(\3(\3(") - buf.write("\3(\3(\3)\3)\3)\3)\3)\3)\3*\3*\3*\3*\3*\3*\3*\3+\3+\3") - buf.write("+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3,\3,\3,\3,\3,\3-\3-\3") - buf.write("-\3-\3-\3-\3.\3.\3.\3.\3.\3.\3.\3/\3/\3/\3/\3/\3/\3/\3") - buf.write("/\3/\3/\3\60\3\60\3\60\3\60\3\61\3\61\3\61\3\61\3\61\3") - buf.write("\62\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3\63\3\63") - buf.write("\3\63\3\63\3\63\3\63\3\64\3\64\3\64\3\64\5\64\u028d\n") - buf.write("\64\3\65\3\65\5\65\u0291\n\65\3\66\3\66\5\66\u0295\n\66") - buf.write("\3\67\3\67\5\67\u0299\n\67\38\38\58\u029d\n8\39\39\3:") - buf.write("\3:\3:\5:\u02a4\n:\3:\3:\3:\5:\u02a9\n:\5:\u02ab\n:\3") - buf.write(";\3;\5;\u02af\n;\3;\5;\u02b2\n;\3<\3<\5<\u02b6\n<\3=\3") - buf.write("=\3>\6>\u02bb\n>\r>\16>\u02bc\3?\3?\5?\u02c1\n?\3@\6@") - buf.write("\u02c4\n@\r@\16@\u02c5\3A\3A\3A\3A\3B\3B\5B\u02ce\nB\3") - buf.write("B\5B\u02d1\nB\3C\3C\3D\6D\u02d6\nD\rD\16D\u02d7\3E\3E") - buf.write("\5E\u02dc\nE\3F\3F\5F\u02e0\nF\3F\3F\3G\3G\5G\u02e6\n") - buf.write("G\3G\5G\u02e9\nG\3H\3H\3I\6I\u02ee\nI\rI\16I\u02ef\3J") - buf.write("\3J\5J\u02f4\nJ\3K\3K\3K\3K\3L\3L\5L\u02fc\nL\3L\5L\u02ff") - buf.write("\nL\3M\3M\3N\6N\u0304\nN\rN\16N\u0305\3O\3O\5O\u030a\n") - buf.write("O\3P\3P\5P\u030e\nP\3Q\3Q\3Q\5Q\u0313\nQ\3Q\5Q\u0316\n") - buf.write("Q\3Q\5Q\u0319\nQ\3Q\3Q\3Q\5Q\u031e\nQ\3Q\5Q\u0321\nQ\3") - buf.write("Q\3Q\3Q\5Q\u0326\nQ\3Q\3Q\3Q\5Q\u032b\nQ\3R\3R\3R\3S\3") - buf.write("S\3T\5T\u0333\nT\3T\3T\3U\3U\3V\3V\3W\3W\3W\5W\u033e\n") - buf.write("W\3X\3X\5X\u0342\nX\3X\3X\3X\5X\u0347\nX\3X\3X\5X\u034b") - buf.write("\nX\3Y\3Y\3Y\3Z\3Z\3[\3[\3[\3[\3[\3[\3[\3[\3[\5[\u035b") - buf.write("\n[\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\\5\\\u0365\n\\\3]\3") - buf.write("]\3^\3^\5^\u036b\n^\3^\3^\3_\6_\u0370\n_\r_\16_\u0371") - buf.write("\3`\3`\5`\u0376\n`\3a\3a\3a\3a\5a\u037c\na\3b\3b\3b\3") - buf.write("b\3b\3b\3b\3b\3b\3b\3b\5b\u0389\nb\3c\3c\3d\3d\6d\u038f") - buf.write("\nd\rd\16d\u0390\3d\3d\3d\3d\3d\3e\3e\3e\3e\3e\3f\3f\3") - buf.write("g\3g\3h\3h\3i\3i\3j\3j\3k\3k\3l\3l\3m\3m\3n\3n\3o\3o\3") - buf.write("p\3p\3q\3q\3r\3r\3s\3s\3t\3t\3u\3u\3v\3v\3v\3w\3w\3w\3") - buf.write("x\3x\3x\3y\3y\3y\3z\3z\3z\3{\3{\3{\3|\3|\3|\3}\3}\3}\3") - buf.write("~\3~\3\177\3\177\3\u0080\3\u0080\3\u0081\3\u0081\3\u0082") - buf.write("\3\u0082\3\u0083\3\u0083\3\u0084\3\u0084\3\u0085\3\u0085") - buf.write("\3\u0086\3\u0086\3\u0086\3\u0087\3\u0087\3\u0087\3\u0088") - buf.write("\3\u0088\3\u0088\3\u0089\3\u0089\3\u0089\3\u008a\3\u008a") - buf.write("\3\u008a\3\u008b\3\u008b\3\u008b\3\u008c\3\u008c\3\u008c") - buf.write("\3\u008d\3\u008d\3\u008d\3\u008e\3\u008e\3\u008e\3\u008f") - buf.write("\3\u008f\3\u008f\3\u0090\3\u0090\3\u0090\3\u0090\3\u0091") - buf.write("\3\u0091\3\u0091\3\u0091\3\u0092\3\u0092\3\u0092\3\u0092") - buf.write("\3\u0092\3\u0093\3\u0093\7\u0093\u0412\n\u0093\f\u0093") - buf.write("\16\u0093\u0415\13\u0093\3\u0094\3\u0094\3\u0094\3\u0094") - buf.write("\5\u0094\u041b\n\u0094\3\u0095\3\u0095\3\u0095\3\u0095") - buf.write("\5\u0095\u0421\n\u0095\3\u0096\3\u0096\3\u0097\3\u0097") - buf.write("\3\u0097\3\u0097\3\u0098\6\u0098\u042a\n\u0098\r\u0098") - buf.write("\16\u0098\u042b\3\u0098\3\u0098\3\u0099\3\u0099\3\u0099") - buf.write("\3\u0099\7\u0099\u0434\n\u0099\f\u0099\16\u0099\u0437") - buf.write("\13\u0099\3\u0099\3\u0099\3\u0099\3\u0099\3\u0099\3\u009a") - buf.write("\3\u009a\3\u009a\3\u009a\7\u009a\u0442\n\u009a\f\u009a") - buf.write("\16\u009a\u0445\13\u009a\3\u009a\3\u009a\3\u0435\2\u009b") - buf.write("\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31") - buf.write("\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+\27-\30/\31") - buf.write("\61\32\63\33\65\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O") - buf.write(")Q*S+U,W-Y.[/]\60_\61a\62c\63e\64g\65i\2k\2m\2o\2q\2s") - buf.write("\2u\2w\2y\2{\2}\2\177\2\u0081\2\u0083\2\u0085\2\u0087") - buf.write("\2\u0089\2\u008b\2\u008d\2\u008f\2\u0091\2\u0093\2\u0095") - buf.write("\2\u0097\2\u0099\2\u009b\2\u009d\2\u009f\66\u00a1\2\u00a3") - buf.write("\2\u00a5\2\u00a7\2\u00a9\2\u00ab\2\u00ad\2\u00af\2\u00b1") - buf.write("\2\u00b3\2\u00b5\67\u00b78\u00b9\2\u00bb9\u00bd\2\u00bf") - buf.write("\2\u00c1\2\u00c3\2\u00c5\2\u00c7\2\u00c9:\u00cb;\u00cd") - buf.write("<\u00cf=\u00d1>\u00d3?\u00d5@\u00d7A\u00d9B\u00dbC\u00dd") - buf.write("D\u00dfE\u00e1F\u00e3G\u00e5H\u00e7I\u00e9J\u00ebK\u00ed") - buf.write("L\u00efM\u00f1N\u00f3O\u00f5P\u00f7Q\u00f9R\u00fbS\u00fd") - buf.write("T\u00ffU\u0101V\u0103W\u0105X\u0107Y\u0109Z\u010b[\u010d") - buf.write("\\\u010f]\u0111^\u0113_\u0115`\u0117a\u0119b\u011bc\u011d") - buf.write("d\u011fe\u0121f\u0123g\u0125h\u0127\2\u0129\2\u012bi\u012d") - buf.write("j\u012fk\u0131l\u0133m\3\2\30\4\2NNnn\3\2\63;\4\2ZZzz") - buf.write("\5\2\62;CHch\3\2\629\4\2DDdd\3\2\62\63\4\2GGgg\4\2--/") - buf.write("/\6\2FFHHffhh\4\2RRrr\6\2\f\f\17\17))^^\6\2\f\f\17\17") - buf.write("$$^^\n\2$$))^^ddhhppttvv\3\2\62\65\6\2&&C\\aac|\4\2\2") - buf.write("\u0081\ud802\udc01\3\2\ud802\udc01\3\2\udc02\ue001\7\2") - buf.write("&&\62;C\\aac|\5\2\13\f\16\17\"\"\4\2\f\f\17\17\2\u0457") - buf.write("\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13") - buf.write("\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3") - buf.write("\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2") - buf.write("\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2") - buf.write("%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2") - buf.write("\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3\2\2\2\2\67") - buf.write("\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2") - buf.write("A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2\2I\3\2\2\2") - buf.write("\2K\3\2\2\2\2M\3\2\2\2\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2") - buf.write("\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2[\3\2\2\2\2]\3\2") - buf.write("\2\2\2_\3\2\2\2\2a\3\2\2\2\2c\3\2\2\2\2e\3\2\2\2\2g\3") - buf.write("\2\2\2\2\u009f\3\2\2\2\2\u00b5\3\2\2\2\2\u00b7\3\2\2\2") - buf.write("\2\u00bb\3\2\2\2\2\u00c9\3\2\2\2\2\u00cb\3\2\2\2\2\u00cd") - buf.write("\3\2\2\2\2\u00cf\3\2\2\2\2\u00d1\3\2\2\2\2\u00d3\3\2\2") - buf.write("\2\2\u00d5\3\2\2\2\2\u00d7\3\2\2\2\2\u00d9\3\2\2\2\2\u00db") - buf.write("\3\2\2\2\2\u00dd\3\2\2\2\2\u00df\3\2\2\2\2\u00e1\3\2\2") - buf.write("\2\2\u00e3\3\2\2\2\2\u00e5\3\2\2\2\2\u00e7\3\2\2\2\2\u00e9") - buf.write("\3\2\2\2\2\u00eb\3\2\2\2\2\u00ed\3\2\2\2\2\u00ef\3\2\2") - buf.write("\2\2\u00f1\3\2\2\2\2\u00f3\3\2\2\2\2\u00f5\3\2\2\2\2\u00f7") - buf.write("\3\2\2\2\2\u00f9\3\2\2\2\2\u00fb\3\2\2\2\2\u00fd\3\2\2") - buf.write("\2\2\u00ff\3\2\2\2\2\u0101\3\2\2\2\2\u0103\3\2\2\2\2\u0105") - buf.write("\3\2\2\2\2\u0107\3\2\2\2\2\u0109\3\2\2\2\2\u010b\3\2\2") - buf.write("\2\2\u010d\3\2\2\2\2\u010f\3\2\2\2\2\u0111\3\2\2\2\2\u0113") - buf.write("\3\2\2\2\2\u0115\3\2\2\2\2\u0117\3\2\2\2\2\u0119\3\2\2") - buf.write("\2\2\u011b\3\2\2\2\2\u011d\3\2\2\2\2\u011f\3\2\2\2\2\u0121") - buf.write("\3\2\2\2\2\u0123\3\2\2\2\2\u0125\3\2\2\2\2\u012b\3\2\2") - buf.write("\2\2\u012d\3\2\2\2\2\u012f\3\2\2\2\2\u0131\3\2\2\2\2\u0133") - buf.write("\3\2\2\2\3\u0135\3\2\2\2\5\u013e\3\2\2\2\7\u0145\3\2\2") - buf.write("\2\t\u014d\3\2\2\2\13\u0153\3\2\2\2\r\u0158\3\2\2\2\17") - buf.write("\u015d\3\2\2\2\21\u0163\3\2\2\2\23\u0168\3\2\2\2\25\u016e") - buf.write("\3\2\2\2\27\u0174\3\2\2\2\31\u017d\3\2\2\2\33\u0185\3") - buf.write("\2\2\2\35\u0188\3\2\2\2\37\u018f\3\2\2\2!\u0194\3\2\2") - buf.write("\2#\u0199\3\2\2\2%\u01a1\3\2\2\2\'\u01a7\3\2\2\2)\u01af") - buf.write("\3\2\2\2+\u01b5\3\2\2\2-\u01b9\3\2\2\2/\u01bc\3\2\2\2") - buf.write("\61\u01c1\3\2\2\2\63\u01cc\3\2\2\2\65\u01d3\3\2\2\2\67") - buf.write("\u01de\3\2\2\29\u01e2\3\2\2\2;\u01ec\3\2\2\2=\u01f1\3") - buf.write("\2\2\2?\u01f8\3\2\2\2A\u01fc\3\2\2\2C\u0204\3\2\2\2E\u020c") - buf.write("\3\2\2\2G\u0216\3\2\2\2I\u021d\3\2\2\2K\u0224\3\2\2\2") - buf.write("M\u022a\3\2\2\2O\u0231\3\2\2\2Q\u023a\3\2\2\2S\u0240\3") - buf.write("\2\2\2U\u0247\3\2\2\2W\u0254\3\2\2\2Y\u0259\3\2\2\2[\u025f") - buf.write("\3\2\2\2]\u0266\3\2\2\2_\u0270\3\2\2\2a\u0274\3\2\2\2") - buf.write("c\u0279\3\2\2\2e\u0282\3\2\2\2g\u028c\3\2\2\2i\u028e\3") - buf.write("\2\2\2k\u0292\3\2\2\2m\u0296\3\2\2\2o\u029a\3\2\2\2q\u029e") - buf.write("\3\2\2\2s\u02aa\3\2\2\2u\u02ac\3\2\2\2w\u02b5\3\2\2\2") - buf.write("y\u02b7\3\2\2\2{\u02ba\3\2\2\2}\u02c0\3\2\2\2\177\u02c3") - buf.write("\3\2\2\2\u0081\u02c7\3\2\2\2\u0083\u02cb\3\2\2\2\u0085") - buf.write("\u02d2\3\2\2\2\u0087\u02d5\3\2\2\2\u0089\u02db\3\2\2\2") - buf.write("\u008b\u02dd\3\2\2\2\u008d\u02e3\3\2\2\2\u008f\u02ea\3") - buf.write("\2\2\2\u0091\u02ed\3\2\2\2\u0093\u02f3\3\2\2\2\u0095\u02f5") - buf.write("\3\2\2\2\u0097\u02f9\3\2\2\2\u0099\u0300\3\2\2\2\u009b") - buf.write("\u0303\3\2\2\2\u009d\u0309\3\2\2\2\u009f\u030d\3\2\2\2") - buf.write("\u00a1\u032a\3\2\2\2\u00a3\u032c\3\2\2\2\u00a5\u032f\3") - buf.write("\2\2\2\u00a7\u0332\3\2\2\2\u00a9\u0336\3\2\2\2\u00ab\u0338") - buf.write("\3\2\2\2\u00ad\u033a\3\2\2\2\u00af\u034a\3\2\2\2\u00b1") - buf.write("\u034c\3\2\2\2\u00b3\u034f\3\2\2\2\u00b5\u035a\3\2\2\2") - buf.write("\u00b7\u0364\3\2\2\2\u00b9\u0366\3\2\2\2\u00bb\u0368\3") - buf.write("\2\2\2\u00bd\u036f\3\2\2\2\u00bf\u0375\3\2\2\2\u00c1\u037b") - buf.write("\3\2\2\2\u00c3\u0388\3\2\2\2\u00c5\u038a\3\2\2\2\u00c7") - buf.write("\u038c\3\2\2\2\u00c9\u0397\3\2\2\2\u00cb\u039c\3\2\2\2") - buf.write("\u00cd\u039e\3\2\2\2\u00cf\u03a0\3\2\2\2\u00d1\u03a2\3") - buf.write("\2\2\2\u00d3\u03a4\3\2\2\2\u00d5\u03a6\3\2\2\2\u00d7\u03a8") - buf.write("\3\2\2\2\u00d9\u03aa\3\2\2\2\u00db\u03ac\3\2\2\2\u00dd") - buf.write("\u03ae\3\2\2\2\u00df\u03b0\3\2\2\2\u00e1\u03b2\3\2\2\2") - buf.write("\u00e3\u03b4\3\2\2\2\u00e5\u03b6\3\2\2\2\u00e7\u03b8\3") - buf.write("\2\2\2\u00e9\u03ba\3\2\2\2\u00eb\u03bc\3\2\2\2\u00ed\u03bf") - buf.write("\3\2\2\2\u00ef\u03c2\3\2\2\2\u00f1\u03c5\3\2\2\2\u00f3") - buf.write("\u03c8\3\2\2\2\u00f5\u03cb\3\2\2\2\u00f7\u03ce\3\2\2\2") - buf.write("\u00f9\u03d1\3\2\2\2\u00fb\u03d4\3\2\2\2\u00fd\u03d6\3") - buf.write("\2\2\2\u00ff\u03d8\3\2\2\2\u0101\u03da\3\2\2\2\u0103\u03dc") - buf.write("\3\2\2\2\u0105\u03de\3\2\2\2\u0107\u03e0\3\2\2\2\u0109") - buf.write("\u03e2\3\2\2\2\u010b\u03e4\3\2\2\2\u010d\u03e7\3\2\2\2") - buf.write("\u010f\u03ea\3\2\2\2\u0111\u03ed\3\2\2\2\u0113\u03f0\3") - buf.write("\2\2\2\u0115\u03f3\3\2\2\2\u0117\u03f6\3\2\2\2\u0119\u03f9") - buf.write("\3\2\2\2\u011b\u03fc\3\2\2\2\u011d\u03ff\3\2\2\2\u011f") - buf.write("\u0402\3\2\2\2\u0121\u0406\3\2\2\2\u0123\u040a\3\2\2\2") - buf.write("\u0125\u040f\3\2\2\2\u0127\u041a\3\2\2\2\u0129\u0420\3") - buf.write("\2\2\2\u012b\u0422\3\2\2\2\u012d\u0424\3\2\2\2\u012f\u0429") - buf.write("\3\2\2\2\u0131\u042f\3\2\2\2\u0133\u043d\3\2\2\2\u0135") - buf.write("\u0136\7c\2\2\u0136\u0137\7d\2\2\u0137\u0138\7u\2\2\u0138") - buf.write("\u0139\7v\2\2\u0139\u013a\7t\2\2\u013a\u013b\7c\2\2\u013b") - buf.write("\u013c\7e\2\2\u013c\u013d\7v\2\2\u013d\4\3\2\2\2\u013e") - buf.write("\u013f\7c\2\2\u013f\u0140\7u\2\2\u0140\u0141\7u\2\2\u0141") - buf.write("\u0142\7g\2\2\u0142\u0143\7t\2\2\u0143\u0144\7v\2\2\u0144") - buf.write("\6\3\2\2\2\u0145\u0146\7d\2\2\u0146\u0147\7q\2\2\u0147") - buf.write("\u0148\7q\2\2\u0148\u0149\7n\2\2\u0149\u014a\7g\2\2\u014a") - buf.write("\u014b\7c\2\2\u014b\u014c\7p\2\2\u014c\b\3\2\2\2\u014d") - buf.write("\u014e\7d\2\2\u014e\u014f\7t\2\2\u014f\u0150\7g\2\2\u0150") - buf.write("\u0151\7c\2\2\u0151\u0152\7m\2\2\u0152\n\3\2\2\2\u0153") - buf.write("\u0154\7d\2\2\u0154\u0155\7{\2\2\u0155\u0156\7v\2\2\u0156") - buf.write("\u0157\7g\2\2\u0157\f\3\2\2\2\u0158\u0159\7e\2\2\u0159") - buf.write("\u015a\7c\2\2\u015a\u015b\7u\2\2\u015b\u015c\7g\2\2\u015c") - buf.write("\16\3\2\2\2\u015d\u015e\7e\2\2\u015e\u015f\7c\2\2\u015f") - buf.write("\u0160\7v\2\2\u0160\u0161\7e\2\2\u0161\u0162\7j\2\2\u0162") - buf.write("\20\3\2\2\2\u0163\u0164\7e\2\2\u0164\u0165\7j\2\2\u0165") - buf.write("\u0166\7c\2\2\u0166\u0167\7t\2\2\u0167\22\3\2\2\2\u0168") - buf.write("\u0169\7e\2\2\u0169\u016a\7n\2\2\u016a\u016b\7c\2\2\u016b") - buf.write("\u016c\7u\2\2\u016c\u016d\7u\2\2\u016d\24\3\2\2\2\u016e") - buf.write("\u016f\7e\2\2\u016f\u0170\7q\2\2\u0170\u0171\7p\2\2\u0171") - buf.write("\u0172\7u\2\2\u0172\u0173\7v\2\2\u0173\26\3\2\2\2\u0174") - buf.write("\u0175\7e\2\2\u0175\u0176\7q\2\2\u0176\u0177\7p\2\2\u0177") - buf.write("\u0178\7v\2\2\u0178\u0179\7k\2\2\u0179\u017a\7p\2\2\u017a") - buf.write("\u017b\7w\2\2\u017b\u017c\7g\2\2\u017c\30\3\2\2\2\u017d") - buf.write("\u017e\7f\2\2\u017e\u017f\7g\2\2\u017f\u0180\7h\2\2\u0180") - buf.write("\u0181\7c\2\2\u0181\u0182\7w\2\2\u0182\u0183\7n\2\2\u0183") - buf.write("\u0184\7v\2\2\u0184\32\3\2\2\2\u0185\u0186\7f\2\2\u0186") - buf.write("\u0187\7q\2\2\u0187\34\3\2\2\2\u0188\u0189\7f\2\2\u0189") - buf.write("\u018a\7q\2\2\u018a\u018b\7w\2\2\u018b\u018c\7d\2\2\u018c") - buf.write("\u018d\7n\2\2\u018d\u018e\7g\2\2\u018e\36\3\2\2\2\u018f") - buf.write("\u0190\7g\2\2\u0190\u0191\7n\2\2\u0191\u0192\7u\2\2\u0192") - buf.write("\u0193\7g\2\2\u0193 \3\2\2\2\u0194\u0195\7g\2\2\u0195") - buf.write("\u0196\7p\2\2\u0196\u0197\7w\2\2\u0197\u0198\7o\2\2\u0198") - buf.write("\"\3\2\2\2\u0199\u019a\7g\2\2\u019a\u019b\7z\2\2\u019b") - buf.write("\u019c\7v\2\2\u019c\u019d\7g\2\2\u019d\u019e\7p\2\2\u019e") - buf.write("\u019f\7f\2\2\u019f\u01a0\7u\2\2\u01a0$\3\2\2\2\u01a1") - buf.write("\u01a2\7h\2\2\u01a2\u01a3\7k\2\2\u01a3\u01a4\7p\2\2\u01a4") - buf.write("\u01a5\7c\2\2\u01a5\u01a6\7n\2\2\u01a6&\3\2\2\2\u01a7") - buf.write("\u01a8\7h\2\2\u01a8\u01a9\7k\2\2\u01a9\u01aa\7p\2\2\u01aa") - buf.write("\u01ab\7c\2\2\u01ab\u01ac\7n\2\2\u01ac\u01ad\7n\2\2\u01ad") - buf.write("\u01ae\7{\2\2\u01ae(\3\2\2\2\u01af\u01b0\7h\2\2\u01b0") - buf.write("\u01b1\7n\2\2\u01b1\u01b2\7q\2\2\u01b2\u01b3\7c\2\2\u01b3") - buf.write("\u01b4\7v\2\2\u01b4*\3\2\2\2\u01b5\u01b6\7h\2\2\u01b6") - buf.write("\u01b7\7q\2\2\u01b7\u01b8\7t\2\2\u01b8,\3\2\2\2\u01b9") - buf.write("\u01ba\7k\2\2\u01ba\u01bb\7h\2\2\u01bb.\3\2\2\2\u01bc") - buf.write("\u01bd\7i\2\2\u01bd\u01be\7q\2\2\u01be\u01bf\7v\2\2\u01bf") - buf.write("\u01c0\7q\2\2\u01c0\60\3\2\2\2\u01c1\u01c2\7k\2\2\u01c2") - buf.write("\u01c3\7o\2\2\u01c3\u01c4\7r\2\2\u01c4\u01c5\7n\2\2\u01c5") - buf.write("\u01c6\7g\2\2\u01c6\u01c7\7o\2\2\u01c7\u01c8\7g\2\2\u01c8") - buf.write("\u01c9\7p\2\2\u01c9\u01ca\7v\2\2\u01ca\u01cb\7u\2\2\u01cb") - buf.write("\62\3\2\2\2\u01cc\u01cd\7k\2\2\u01cd\u01ce\7o\2\2\u01ce") - buf.write("\u01cf\7r\2\2\u01cf\u01d0\7q\2\2\u01d0\u01d1\7t\2\2\u01d1") - buf.write("\u01d2\7v\2\2\u01d2\64\3\2\2\2\u01d3\u01d4\7k\2\2\u01d4") - buf.write("\u01d5\7p\2\2\u01d5\u01d6\7u\2\2\u01d6\u01d7\7v\2\2\u01d7") - buf.write("\u01d8\7c\2\2\u01d8\u01d9\7p\2\2\u01d9\u01da\7e\2\2\u01da") - buf.write("\u01db\7g\2\2\u01db\u01dc\7q\2\2\u01dc\u01dd\7h\2\2\u01dd") - buf.write("\66\3\2\2\2\u01de\u01df\7k\2\2\u01df\u01e0\7p\2\2\u01e0") - buf.write("\u01e1\7v\2\2\u01e18\3\2\2\2\u01e2\u01e3\7k\2\2\u01e3") - buf.write("\u01e4\7p\2\2\u01e4\u01e5\7v\2\2\u01e5\u01e6\7g\2\2\u01e6") - buf.write("\u01e7\7t\2\2\u01e7\u01e8\7h\2\2\u01e8\u01e9\7c\2\2\u01e9") - buf.write("\u01ea\7e\2\2\u01ea\u01eb\7g\2\2\u01eb:\3\2\2\2\u01ec") - buf.write("\u01ed\7n\2\2\u01ed\u01ee\7q\2\2\u01ee\u01ef\7p\2\2\u01ef") - buf.write("\u01f0\7i\2\2\u01f0<\3\2\2\2\u01f1\u01f2\7p\2\2\u01f2") - buf.write("\u01f3\7c\2\2\u01f3\u01f4\7v\2\2\u01f4\u01f5\7k\2\2\u01f5") - buf.write("\u01f6\7x\2\2\u01f6\u01f7\7g\2\2\u01f7>\3\2\2\2\u01f8") - buf.write("\u01f9\7p\2\2\u01f9\u01fa\7g\2\2\u01fa\u01fb\7y\2\2\u01fb") - buf.write("@\3\2\2\2\u01fc\u01fd\7r\2\2\u01fd\u01fe\7c\2\2\u01fe") - buf.write("\u01ff\7e\2\2\u01ff\u0200\7m\2\2\u0200\u0201\7c\2\2\u0201") - buf.write("\u0202\7i\2\2\u0202\u0203\7g\2\2\u0203B\3\2\2\2\u0204") - buf.write("\u0205\7r\2\2\u0205\u0206\7t\2\2\u0206\u0207\7k\2\2\u0207") - buf.write("\u0208\7x\2\2\u0208\u0209\7c\2\2\u0209\u020a\7v\2\2\u020a") - buf.write("\u020b\7g\2\2\u020bD\3\2\2\2\u020c\u020d\7r\2\2\u020d") - buf.write("\u020e\7t\2\2\u020e\u020f\7q\2\2\u020f\u0210\7v\2\2\u0210") - buf.write("\u0211\7g\2\2\u0211\u0212\7e\2\2\u0212\u0213\7v\2\2\u0213") - buf.write("\u0214\7g\2\2\u0214\u0215\7f\2\2\u0215F\3\2\2\2\u0216") - buf.write("\u0217\7r\2\2\u0217\u0218\7w\2\2\u0218\u0219\7d\2\2\u0219") - buf.write("\u021a\7n\2\2\u021a\u021b\7k\2\2\u021b\u021c\7e\2\2\u021c") - buf.write("H\3\2\2\2\u021d\u021e\7t\2\2\u021e\u021f\7g\2\2\u021f") - buf.write("\u0220\7v\2\2\u0220\u0221\7w\2\2\u0221\u0222\7t\2\2\u0222") - buf.write("\u0223\7p\2\2\u0223J\3\2\2\2\u0224\u0225\7u\2\2\u0225") - buf.write("\u0226\7j\2\2\u0226\u0227\7q\2\2\u0227\u0228\7t\2\2\u0228") - buf.write("\u0229\7v\2\2\u0229L\3\2\2\2\u022a\u022b\7u\2\2\u022b") - buf.write("\u022c\7v\2\2\u022c\u022d\7c\2\2\u022d\u022e\7v\2\2\u022e") - buf.write("\u022f\7k\2\2\u022f\u0230\7e\2\2\u0230N\3\2\2\2\u0231") - buf.write("\u0232\7u\2\2\u0232\u0233\7v\2\2\u0233\u0234\7t\2\2\u0234") - buf.write("\u0235\7k\2\2\u0235\u0236\7e\2\2\u0236\u0237\7v\2\2\u0237") - buf.write("\u0238\7h\2\2\u0238\u0239\7r\2\2\u0239P\3\2\2\2\u023a") - buf.write("\u023b\7u\2\2\u023b\u023c\7w\2\2\u023c\u023d\7r\2\2\u023d") - buf.write("\u023e\7g\2\2\u023e\u023f\7t\2\2\u023fR\3\2\2\2\u0240") - buf.write("\u0241\7u\2\2\u0241\u0242\7y\2\2\u0242\u0243\7k\2\2\u0243") - buf.write("\u0244\7v\2\2\u0244\u0245\7e\2\2\u0245\u0246\7j\2\2\u0246") - buf.write("T\3\2\2\2\u0247\u0248\7u\2\2\u0248\u0249\7{\2\2\u0249") - buf.write("\u024a\7p\2\2\u024a\u024b\7e\2\2\u024b\u024c\7j\2\2\u024c") - buf.write("\u024d\7t\2\2\u024d\u024e\7q\2\2\u024e\u024f\7p\2\2\u024f") - buf.write("\u0250\7k\2\2\u0250\u0251\7|\2\2\u0251\u0252\7g\2\2\u0252") - buf.write("\u0253\7f\2\2\u0253V\3\2\2\2\u0254\u0255\7v\2\2\u0255") - buf.write("\u0256\7j\2\2\u0256\u0257\7k\2\2\u0257\u0258\7u\2\2\u0258") - buf.write("X\3\2\2\2\u0259\u025a\7v\2\2\u025a\u025b\7j\2\2\u025b") - buf.write("\u025c\7t\2\2\u025c\u025d\7q\2\2\u025d\u025e\7y\2\2\u025e") - buf.write("Z\3\2\2\2\u025f\u0260\7v\2\2\u0260\u0261\7j\2\2\u0261") - buf.write("\u0262\7t\2\2\u0262\u0263\7q\2\2\u0263\u0264\7y\2\2\u0264") - buf.write("\u0265\7u\2\2\u0265\\\3\2\2\2\u0266\u0267\7v\2\2\u0267") - buf.write("\u0268\7t\2\2\u0268\u0269\7c\2\2\u0269\u026a\7p\2\2\u026a") - buf.write("\u026b\7u\2\2\u026b\u026c\7k\2\2\u026c\u026d\7g\2\2\u026d") - buf.write("\u026e\7p\2\2\u026e\u026f\7v\2\2\u026f^\3\2\2\2\u0270") - buf.write("\u0271\7v\2\2\u0271\u0272\7t\2\2\u0272\u0273\7{\2\2\u0273") - buf.write("`\3\2\2\2\u0274\u0275\7x\2\2\u0275\u0276\7q\2\2\u0276") - buf.write("\u0277\7k\2\2\u0277\u0278\7f\2\2\u0278b\3\2\2\2\u0279") - buf.write("\u027a\7x\2\2\u027a\u027b\7q\2\2\u027b\u027c\7n\2\2\u027c") - buf.write("\u027d\7c\2\2\u027d\u027e\7v\2\2\u027e\u027f\7k\2\2\u027f") - buf.write("\u0280\7n\2\2\u0280\u0281\7g\2\2\u0281d\3\2\2\2\u0282") - buf.write("\u0283\7y\2\2\u0283\u0284\7j\2\2\u0284\u0285\7k\2\2\u0285") - buf.write("\u0286\7n\2\2\u0286\u0287\7g\2\2\u0287f\3\2\2\2\u0288") - buf.write("\u028d\5i\65\2\u0289\u028d\5k\66\2\u028a\u028d\5m\67\2") - buf.write("\u028b\u028d\5o8\2\u028c\u0288\3\2\2\2\u028c\u0289\3\2") - buf.write("\2\2\u028c\u028a\3\2\2\2\u028c\u028b\3\2\2\2\u028dh\3") - buf.write("\2\2\2\u028e\u0290\5s:\2\u028f\u0291\5q9\2\u0290\u028f") - buf.write("\3\2\2\2\u0290\u0291\3\2\2\2\u0291j\3\2\2\2\u0292\u0294") - buf.write("\5\u0081A\2\u0293\u0295\5q9\2\u0294\u0293\3\2\2\2\u0294") - buf.write("\u0295\3\2\2\2\u0295l\3\2\2\2\u0296\u0298\5\u008bF\2\u0297") - buf.write("\u0299\5q9\2\u0298\u0297\3\2\2\2\u0298\u0299\3\2\2\2\u0299") - buf.write("n\3\2\2\2\u029a\u029c\5\u0095K\2\u029b\u029d\5q9\2\u029c") - buf.write("\u029b\3\2\2\2\u029c\u029d\3\2\2\2\u029dp\3\2\2\2\u029e") - buf.write("\u029f\t\2\2\2\u029fr\3\2\2\2\u02a0\u02ab\7\62\2\2\u02a1") - buf.write("\u02a8\5y=\2\u02a2\u02a4\5u;\2\u02a3\u02a2\3\2\2\2\u02a3") - buf.write("\u02a4\3\2\2\2\u02a4\u02a9\3\2\2\2\u02a5\u02a6\5\177@") - buf.write("\2\u02a6\u02a7\5u;\2\u02a7\u02a9\3\2\2\2\u02a8\u02a3\3") - buf.write("\2\2\2\u02a8\u02a5\3\2\2\2\u02a9\u02ab\3\2\2\2\u02aa\u02a0") - buf.write("\3\2\2\2\u02aa\u02a1\3\2\2\2\u02abt\3\2\2\2\u02ac\u02b1") - buf.write("\5w<\2\u02ad\u02af\5{>\2\u02ae\u02ad\3\2\2\2\u02ae\u02af") - buf.write("\3\2\2\2\u02af\u02b0\3\2\2\2\u02b0\u02b2\5w<\2\u02b1\u02ae") - buf.write("\3\2\2\2\u02b1\u02b2\3\2\2\2\u02b2v\3\2\2\2\u02b3\u02b6") - buf.write("\7\62\2\2\u02b4\u02b6\5y=\2\u02b5\u02b3\3\2\2\2\u02b5") - buf.write("\u02b4\3\2\2\2\u02b6x\3\2\2\2\u02b7\u02b8\t\3\2\2\u02b8") - buf.write("z\3\2\2\2\u02b9\u02bb\5}?\2\u02ba\u02b9\3\2\2\2\u02bb") - buf.write("\u02bc\3\2\2\2\u02bc\u02ba\3\2\2\2\u02bc\u02bd\3\2\2\2") - buf.write("\u02bd|\3\2\2\2\u02be\u02c1\5w<\2\u02bf\u02c1\7a\2\2\u02c0") - buf.write("\u02be\3\2\2\2\u02c0\u02bf\3\2\2\2\u02c1~\3\2\2\2\u02c2") - buf.write("\u02c4\7a\2\2\u02c3\u02c2\3\2\2\2\u02c4\u02c5\3\2\2\2") - buf.write("\u02c5\u02c3\3\2\2\2\u02c5\u02c6\3\2\2\2\u02c6\u0080\3") - buf.write("\2\2\2\u02c7\u02c8\7\62\2\2\u02c8\u02c9\t\4\2\2\u02c9") - buf.write("\u02ca\5\u0083B\2\u02ca\u0082\3\2\2\2\u02cb\u02d0\5\u0085") - buf.write("C\2\u02cc\u02ce\5\u0087D\2\u02cd\u02cc\3\2\2\2\u02cd\u02ce") - buf.write("\3\2\2\2\u02ce\u02cf\3\2\2\2\u02cf\u02d1\5\u0085C\2\u02d0") - buf.write("\u02cd\3\2\2\2\u02d0\u02d1\3\2\2\2\u02d1\u0084\3\2\2\2") - buf.write("\u02d2\u02d3\t\5\2\2\u02d3\u0086\3\2\2\2\u02d4\u02d6\5") - buf.write("\u0089E\2\u02d5\u02d4\3\2\2\2\u02d6\u02d7\3\2\2\2\u02d7") - buf.write("\u02d5\3\2\2\2\u02d7\u02d8\3\2\2\2\u02d8\u0088\3\2\2\2") - buf.write("\u02d9\u02dc\5\u0085C\2\u02da\u02dc\7a\2\2\u02db\u02d9") - buf.write("\3\2\2\2\u02db\u02da\3\2\2\2\u02dc\u008a\3\2\2\2\u02dd") - buf.write("\u02df\7\62\2\2\u02de\u02e0\5\177@\2\u02df\u02de\3\2\2") - buf.write("\2\u02df\u02e0\3\2\2\2\u02e0\u02e1\3\2\2\2\u02e1\u02e2") - buf.write("\5\u008dG\2\u02e2\u008c\3\2\2\2\u02e3\u02e8\5\u008fH\2") - buf.write("\u02e4\u02e6\5\u0091I\2\u02e5\u02e4\3\2\2\2\u02e5\u02e6") - buf.write("\3\2\2\2\u02e6\u02e7\3\2\2\2\u02e7\u02e9\5\u008fH\2\u02e8") - buf.write("\u02e5\3\2\2\2\u02e8\u02e9\3\2\2\2\u02e9\u008e\3\2\2\2") - buf.write("\u02ea\u02eb\t\6\2\2\u02eb\u0090\3\2\2\2\u02ec\u02ee\5") - buf.write("\u0093J\2\u02ed\u02ec\3\2\2\2\u02ee\u02ef\3\2\2\2\u02ef") - buf.write("\u02ed\3\2\2\2\u02ef\u02f0\3\2\2\2\u02f0\u0092\3\2\2\2") - buf.write("\u02f1\u02f4\5\u008fH\2\u02f2\u02f4\7a\2\2\u02f3\u02f1") - buf.write("\3\2\2\2\u02f3\u02f2\3\2\2\2\u02f4\u0094\3\2\2\2\u02f5") - buf.write("\u02f6\7\62\2\2\u02f6\u02f7\t\7\2\2\u02f7\u02f8\5\u0097") - buf.write("L\2\u02f8\u0096\3\2\2\2\u02f9\u02fe\5\u0099M\2\u02fa\u02fc") - buf.write("\5\u009bN\2\u02fb\u02fa\3\2\2\2\u02fb\u02fc\3\2\2\2\u02fc") - buf.write("\u02fd\3\2\2\2\u02fd\u02ff\5\u0099M\2\u02fe\u02fb\3\2") - buf.write("\2\2\u02fe\u02ff\3\2\2\2\u02ff\u0098\3\2\2\2\u0300\u0301") - buf.write("\t\b\2\2\u0301\u009a\3\2\2\2\u0302\u0304\5\u009dO\2\u0303") - buf.write("\u0302\3\2\2\2\u0304\u0305\3\2\2\2\u0305\u0303\3\2\2\2") - buf.write("\u0305\u0306\3\2\2\2\u0306\u009c\3\2\2\2\u0307\u030a\5") - buf.write("\u0099M\2\u0308\u030a\7a\2\2\u0309\u0307\3\2\2\2\u0309") - buf.write("\u0308\3\2\2\2\u030a\u009e\3\2\2\2\u030b\u030e\5\u00a1") - buf.write("Q\2\u030c\u030e\5\u00adW\2\u030d\u030b\3\2\2\2\u030d\u030c") - buf.write("\3\2\2\2\u030e\u00a0\3\2\2\2\u030f\u0310\5u;\2\u0310\u0312") - buf.write("\7\60\2\2\u0311\u0313\5u;\2\u0312\u0311\3\2\2\2\u0312") - buf.write("\u0313\3\2\2\2\u0313\u0315\3\2\2\2\u0314\u0316\5\u00a3") - buf.write("R\2\u0315\u0314\3\2\2\2\u0315\u0316\3\2\2\2\u0316\u0318") - buf.write("\3\2\2\2\u0317\u0319\5\u00abV\2\u0318\u0317\3\2\2\2\u0318") - buf.write("\u0319\3\2\2\2\u0319\u032b\3\2\2\2\u031a\u031b\7\60\2") - buf.write("\2\u031b\u031d\5u;\2\u031c\u031e\5\u00a3R\2\u031d\u031c") - buf.write("\3\2\2\2\u031d\u031e\3\2\2\2\u031e\u0320\3\2\2\2\u031f") - buf.write("\u0321\5\u00abV\2\u0320\u031f\3\2\2\2\u0320\u0321\3\2") - buf.write("\2\2\u0321\u032b\3\2\2\2\u0322\u0323\5u;\2\u0323\u0325") - buf.write("\5\u00a3R\2\u0324\u0326\5\u00abV\2\u0325\u0324\3\2\2\2") - buf.write("\u0325\u0326\3\2\2\2\u0326\u032b\3\2\2\2\u0327\u0328\5") - buf.write("u;\2\u0328\u0329\5\u00abV\2\u0329\u032b\3\2\2\2\u032a") - buf.write("\u030f\3\2\2\2\u032a\u031a\3\2\2\2\u032a\u0322\3\2\2\2") - buf.write("\u032a\u0327\3\2\2\2\u032b\u00a2\3\2\2\2\u032c\u032d\5") - buf.write("\u00a5S\2\u032d\u032e\5\u00a7T\2\u032e\u00a4\3\2\2\2\u032f") - buf.write("\u0330\t\t\2\2\u0330\u00a6\3\2\2\2\u0331\u0333\5\u00a9") - buf.write("U\2\u0332\u0331\3\2\2\2\u0332\u0333\3\2\2\2\u0333\u0334") - buf.write("\3\2\2\2\u0334\u0335\5u;\2\u0335\u00a8\3\2\2\2\u0336\u0337") - buf.write("\t\n\2\2\u0337\u00aa\3\2\2\2\u0338\u0339\t\13\2\2\u0339") - buf.write("\u00ac\3\2\2\2\u033a\u033b\5\u00afX\2\u033b\u033d\5\u00b1") - buf.write("Y\2\u033c\u033e\5\u00abV\2\u033d\u033c\3\2\2\2\u033d\u033e") - buf.write("\3\2\2\2\u033e\u00ae\3\2\2\2\u033f\u0341\5\u0081A\2\u0340") - buf.write("\u0342\7\60\2\2\u0341\u0340\3\2\2\2\u0341\u0342\3\2\2") - buf.write("\2\u0342\u034b\3\2\2\2\u0343\u0344\7\62\2\2\u0344\u0346") - buf.write("\t\4\2\2\u0345\u0347\5\u0083B\2\u0346\u0345\3\2\2\2\u0346") - buf.write("\u0347\3\2\2\2\u0347\u0348\3\2\2\2\u0348\u0349\7\60\2") - buf.write("\2\u0349\u034b\5\u0083B\2\u034a\u033f\3\2\2\2\u034a\u0343") - buf.write("\3\2\2\2\u034b\u00b0\3\2\2\2\u034c\u034d\5\u00b3Z\2\u034d") - buf.write("\u034e\5\u00a7T\2\u034e\u00b2\3\2\2\2\u034f\u0350\t\f") - buf.write("\2\2\u0350\u00b4\3\2\2\2\u0351\u0352\7v\2\2\u0352\u0353") - buf.write("\7t\2\2\u0353\u0354\7w\2\2\u0354\u035b\7g\2\2\u0355\u0356") - buf.write("\7h\2\2\u0356\u0357\7c\2\2\u0357\u0358\7n\2\2\u0358\u0359") - buf.write("\7u\2\2\u0359\u035b\7g\2\2\u035a\u0351\3\2\2\2\u035a\u0355") - buf.write("\3\2\2\2\u035b\u00b6\3\2\2\2\u035c\u035d\7)\2\2\u035d") - buf.write("\u035e\5\u00b9]\2\u035e\u035f\7)\2\2\u035f\u0365\3\2\2") - buf.write("\2\u0360\u0361\7)\2\2\u0361\u0362\5\u00c1a\2\u0362\u0363") - buf.write("\7)\2\2\u0363\u0365\3\2\2\2\u0364\u035c\3\2\2\2\u0364") - buf.write("\u0360\3\2\2\2\u0365\u00b8\3\2\2\2\u0366\u0367\n\r\2\2") - buf.write("\u0367\u00ba\3\2\2\2\u0368\u036a\7$\2\2\u0369\u036b\5") - buf.write("\u00bd_\2\u036a\u0369\3\2\2\2\u036a\u036b\3\2\2\2\u036b") - buf.write("\u036c\3\2\2\2\u036c\u036d\7$\2\2\u036d\u00bc\3\2\2\2") - buf.write("\u036e\u0370\5\u00bf`\2\u036f\u036e\3\2\2\2\u0370\u0371") - buf.write("\3\2\2\2\u0371\u036f\3\2\2\2\u0371\u0372\3\2\2\2\u0372") - buf.write("\u00be\3\2\2\2\u0373\u0376\n\16\2\2\u0374\u0376\5\u00c1") - buf.write("a\2\u0375\u0373\3\2\2\2\u0375\u0374\3\2\2\2\u0376\u00c0") - buf.write("\3\2\2\2\u0377\u0378\7^\2\2\u0378\u037c\t\17\2\2\u0379") - buf.write("\u037c\5\u00c3b\2\u037a\u037c\5\u00c7d\2\u037b\u0377\3") - buf.write("\2\2\2\u037b\u0379\3\2\2\2\u037b\u037a\3\2\2\2\u037c\u00c2") - buf.write("\3\2\2\2\u037d\u037e\7^\2\2\u037e\u0389\5\u008fH\2\u037f") - buf.write("\u0380\7^\2\2\u0380\u0381\5\u008fH\2\u0381\u0382\5\u008f") - buf.write("H\2\u0382\u0389\3\2\2\2\u0383\u0384\7^\2\2\u0384\u0385") - buf.write("\5\u00c5c\2\u0385\u0386\5\u008fH\2\u0386\u0387\5\u008f") - buf.write("H\2\u0387\u0389\3\2\2\2\u0388\u037d\3\2\2\2\u0388\u037f") - buf.write("\3\2\2\2\u0388\u0383\3\2\2\2\u0389\u00c4\3\2\2\2\u038a") - buf.write("\u038b\t\20\2\2\u038b\u00c6\3\2\2\2\u038c\u038e\7^\2\2") - buf.write("\u038d\u038f\7w\2\2\u038e\u038d\3\2\2\2\u038f\u0390\3") - buf.write("\2\2\2\u0390\u038e\3\2\2\2\u0390\u0391\3\2\2\2\u0391\u0392") - buf.write("\3\2\2\2\u0392\u0393\5\u0085C\2\u0393\u0394\5\u0085C\2") - buf.write("\u0394\u0395\5\u0085C\2\u0395\u0396\5\u0085C\2\u0396\u00c8") - buf.write("\3\2\2\2\u0397\u0398\7p\2\2\u0398\u0399\7w\2\2\u0399\u039a") - buf.write("\7n\2\2\u039a\u039b\7n\2\2\u039b\u00ca\3\2\2\2\u039c\u039d") - buf.write("\7*\2\2\u039d\u00cc\3\2\2\2\u039e\u039f\7+\2\2\u039f\u00ce") - buf.write("\3\2\2\2\u03a0\u03a1\7}\2\2\u03a1\u00d0\3\2\2\2\u03a2") - buf.write("\u03a3\7\177\2\2\u03a3\u00d2\3\2\2\2\u03a4\u03a5\7]\2") - buf.write("\2\u03a5\u00d4\3\2\2\2\u03a6\u03a7\7_\2\2\u03a7\u00d6") - buf.write("\3\2\2\2\u03a8\u03a9\7=\2\2\u03a9\u00d8\3\2\2\2\u03aa") - buf.write("\u03ab\7.\2\2\u03ab\u00da\3\2\2\2\u03ac\u03ad\7\60\2\2") - buf.write("\u03ad\u00dc\3\2\2\2\u03ae\u03af\7?\2\2\u03af\u00de\3") - buf.write("\2\2\2\u03b0\u03b1\7@\2\2\u03b1\u00e0\3\2\2\2\u03b2\u03b3") - buf.write("\7>\2\2\u03b3\u00e2\3\2\2\2\u03b4\u03b5\7#\2\2\u03b5\u00e4") - buf.write("\3\2\2\2\u03b6\u03b7\7\u0080\2\2\u03b7\u00e6\3\2\2\2\u03b8") - buf.write("\u03b9\7A\2\2\u03b9\u00e8\3\2\2\2\u03ba\u03bb\7<\2\2\u03bb") - buf.write("\u00ea\3\2\2\2\u03bc\u03bd\7?\2\2\u03bd\u03be\7?\2\2\u03be") - buf.write("\u00ec\3\2\2\2\u03bf\u03c0\7>\2\2\u03c0\u03c1\7?\2\2\u03c1") - buf.write("\u00ee\3\2\2\2\u03c2\u03c3\7@\2\2\u03c3\u03c4\7?\2\2\u03c4") - buf.write("\u00f0\3\2\2\2\u03c5\u03c6\7#\2\2\u03c6\u03c7\7?\2\2\u03c7") - buf.write("\u00f2\3\2\2\2\u03c8\u03c9\7(\2\2\u03c9\u03ca\7(\2\2\u03ca") - buf.write("\u00f4\3\2\2\2\u03cb\u03cc\7~\2\2\u03cc\u03cd\7~\2\2\u03cd") - buf.write("\u00f6\3\2\2\2\u03ce\u03cf\7-\2\2\u03cf\u03d0\7-\2\2\u03d0") - buf.write("\u00f8\3\2\2\2\u03d1\u03d2\7/\2\2\u03d2\u03d3\7/\2\2\u03d3") - buf.write("\u00fa\3\2\2\2\u03d4\u03d5\7-\2\2\u03d5\u00fc\3\2\2\2") - buf.write("\u03d6\u03d7\7/\2\2\u03d7\u00fe\3\2\2\2\u03d8\u03d9\7") - buf.write(",\2\2\u03d9\u0100\3\2\2\2\u03da\u03db\7\61\2\2\u03db\u0102") - buf.write("\3\2\2\2\u03dc\u03dd\7(\2\2\u03dd\u0104\3\2\2\2\u03de") - buf.write("\u03df\7~\2\2\u03df\u0106\3\2\2\2\u03e0\u03e1\7`\2\2\u03e1") - buf.write("\u0108\3\2\2\2\u03e2\u03e3\7\'\2\2\u03e3\u010a\3\2\2\2") - buf.write("\u03e4\u03e5\7/\2\2\u03e5\u03e6\7@\2\2\u03e6\u010c\3\2") - buf.write("\2\2\u03e7\u03e8\7<\2\2\u03e8\u03e9\7<\2\2\u03e9\u010e") - buf.write("\3\2\2\2\u03ea\u03eb\7-\2\2\u03eb\u03ec\7?\2\2\u03ec\u0110") - buf.write("\3\2\2\2\u03ed\u03ee\7/\2\2\u03ee\u03ef\7?\2\2\u03ef\u0112") - buf.write("\3\2\2\2\u03f0\u03f1\7,\2\2\u03f1\u03f2\7?\2\2\u03f2\u0114") - buf.write("\3\2\2\2\u03f3\u03f4\7\61\2\2\u03f4\u03f5\7?\2\2\u03f5") - buf.write("\u0116\3\2\2\2\u03f6\u03f7\7(\2\2\u03f7\u03f8\7?\2\2\u03f8") - buf.write("\u0118\3\2\2\2\u03f9\u03fa\7~\2\2\u03fa\u03fb\7?\2\2\u03fb") - buf.write("\u011a\3\2\2\2\u03fc\u03fd\7`\2\2\u03fd\u03fe\7?\2\2\u03fe") - buf.write("\u011c\3\2\2\2\u03ff\u0400\7\'\2\2\u0400\u0401\7?\2\2") - buf.write("\u0401\u011e\3\2\2\2\u0402\u0403\7>\2\2\u0403\u0404\7") - buf.write(">\2\2\u0404\u0405\7?\2\2\u0405\u0120\3\2\2\2\u0406\u0407") - buf.write("\7@\2\2\u0407\u0408\7@\2\2\u0408\u0409\7?\2\2\u0409\u0122") - buf.write("\3\2\2\2\u040a\u040b\7@\2\2\u040b\u040c\7@\2\2\u040c\u040d") - buf.write("\7@\2\2\u040d\u040e\7?\2\2\u040e\u0124\3\2\2\2\u040f\u0413") - buf.write("\5\u0127\u0094\2\u0410\u0412\5\u0129\u0095\2\u0411\u0410") - buf.write("\3\2\2\2\u0412\u0415\3\2\2\2\u0413\u0411\3\2\2\2\u0413") - buf.write("\u0414\3\2\2\2\u0414\u0126\3\2\2\2\u0415\u0413\3\2\2\2") - buf.write("\u0416\u041b\t\21\2\2\u0417\u041b\n\22\2\2\u0418\u0419") - buf.write("\t\23\2\2\u0419\u041b\t\24\2\2\u041a\u0416\3\2\2\2\u041a") - buf.write("\u0417\3\2\2\2\u041a\u0418\3\2\2\2\u041b\u0128\3\2\2\2") - buf.write("\u041c\u0421\t\25\2\2\u041d\u0421\n\22\2\2\u041e\u041f") - buf.write("\t\23\2\2\u041f\u0421\t\24\2\2\u0420\u041c\3\2\2\2\u0420") - buf.write("\u041d\3\2\2\2\u0420\u041e\3\2\2\2\u0421\u012a\3\2\2\2") - buf.write("\u0422\u0423\7B\2\2\u0423\u012c\3\2\2\2\u0424\u0425\7") - buf.write("\60\2\2\u0425\u0426\7\60\2\2\u0426\u0427\7\60\2\2\u0427") - buf.write("\u012e\3\2\2\2\u0428\u042a\t\26\2\2\u0429\u0428\3\2\2") - buf.write("\2\u042a\u042b\3\2\2\2\u042b\u0429\3\2\2\2\u042b\u042c") - buf.write("\3\2\2\2\u042c\u042d\3\2\2\2\u042d\u042e\b\u0098\2\2\u042e") - buf.write("\u0130\3\2\2\2\u042f\u0430\7\61\2\2\u0430\u0431\7,\2\2") - buf.write("\u0431\u0435\3\2\2\2\u0432\u0434\13\2\2\2\u0433\u0432") - buf.write("\3\2\2\2\u0434\u0437\3\2\2\2\u0435\u0436\3\2\2\2\u0435") - buf.write("\u0433\3\2\2\2\u0436\u0438\3\2\2\2\u0437\u0435\3\2\2\2") - buf.write("\u0438\u0439\7,\2\2\u0439\u043a\7\61\2\2\u043a\u043b\3") - buf.write("\2\2\2\u043b\u043c\b\u0099\2\2\u043c\u0132\3\2\2\2\u043d") - buf.write("\u043e\7\61\2\2\u043e\u043f\7\61\2\2\u043f\u0443\3\2\2") - buf.write("\2\u0440\u0442\n\27\2\2\u0441\u0440\3\2\2\2\u0442\u0445") - buf.write("\3\2\2\2\u0443\u0441\3\2\2\2\u0443\u0444\3\2\2\2\u0444") - buf.write("\u0446\3\2\2\2\u0445\u0443\3\2\2\2\u0446\u0447\b\u009a") - buf.write("\2\2\u0447\u0134\3\2\2\29\2\u028c\u0290\u0294\u0298\u029c") - buf.write("\u02a3\u02a8\u02aa\u02ae\u02b1\u02b5\u02bc\u02c0\u02c5") - buf.write("\u02cd\u02d0\u02d7\u02db\u02df\u02e5\u02e8\u02ef\u02f3") - buf.write("\u02fb\u02fe\u0305\u0309\u030d\u0312\u0315\u0318\u031d") - buf.write("\u0320\u0325\u032a\u0332\u033d\u0341\u0346\u034a\u035a") - buf.write("\u0364\u036a\u0371\u0375\u037b\u0388\u0390\u0413\u041a") - buf.write("\u0420\u042b\u0435\u0443\3\b\2\2") - return buf.getvalue() - - -class Java8Lexer(Lexer): - - atn = ATNDeserializer().deserialize(serializedATN()) - - decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] - - ABSTRACT = 1 - ASSERT = 2 - BOOLEAN = 3 - BREAK = 4 - BYTE = 5 - CASE = 6 - CATCH = 7 - CHAR = 8 - CLASS = 9 - CONST = 10 - CONTINUE = 11 - DEFAULT = 12 - DO = 13 - DOUBLE = 14 - ELSE = 15 - ENUM = 16 - EXTENDS = 17 - FINAL = 18 - FINALLY = 19 - FLOAT = 20 - FOR = 21 - IF = 22 - GOTO = 23 - IMPLEMENTS = 24 - IMPORT = 25 - INSTANCEOF = 26 - INT = 27 - INTERFACE = 28 - LONG = 29 - NATIVE = 30 - NEW = 31 - PACKAGE = 32 - PRIVATE = 33 - PROTECTED = 34 - PUBLIC = 35 - RETURN = 36 - SHORT = 37 - STATIC = 38 - STRICTFP = 39 - SUPER = 40 - SWITCH = 41 - SYNCHRONIZED = 42 - THIS = 43 - THROW = 44 - THROWS = 45 - TRANSIENT = 46 - TRY = 47 - VOID = 48 - VOLATILE = 49 - WHILE = 50 - IntegerLiteral = 51 - FloatingPointLiteral = 52 - BooleanLiteral = 53 - CharacterLiteral = 54 - StringLiteral = 55 - NullLiteral = 56 - LPAREN = 57 - RPAREN = 58 - LBRACE = 59 - RBRACE = 60 - LBRACK = 61 - RBRACK = 62 - SEMI = 63 - COMMA = 64 - DOT = 65 - ASSIGN = 66 - GT = 67 - LT = 68 - BANG = 69 - TILDE = 70 - QUESTION = 71 - COLON = 72 - EQUAL = 73 - LE = 74 - GE = 75 - NOTEQUAL = 76 - AND = 77 - OR = 78 - INC = 79 - DEC = 80 - ADD = 81 - SUB = 82 - MUL = 83 - DIV = 84 - BITAND = 85 - BITOR = 86 - CARET = 87 - MOD = 88 - ARROW = 89 - COLONCOLON = 90 - ADD_ASSIGN = 91 - SUB_ASSIGN = 92 - MUL_ASSIGN = 93 - DIV_ASSIGN = 94 - AND_ASSIGN = 95 - OR_ASSIGN = 96 - XOR_ASSIGN = 97 - MOD_ASSIGN = 98 - LSHIFT_ASSIGN = 99 - RSHIFT_ASSIGN = 100 - URSHIFT_ASSIGN = 101 - Identifier = 102 - AT = 103 - ELLIPSIS = 104 - WS = 105 - COMMENT = 106 - LINE_COMMENT = 107 - - channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ] - - modeNames = [ "DEFAULT_MODE" ] - - literalNames = [ "", - "'abstract'", "'assert'", "'boolean'", "'break'", "'byte'", - "'case'", "'catch'", "'char'", "'class'", "'const'", "'continue'", - "'default'", "'do'", "'double'", "'else'", "'enum'", "'extends'", - "'final'", "'finally'", "'float'", "'for'", "'if'", "'goto'", - "'implements'", "'import'", "'instanceof'", "'int'", "'interface'", - "'long'", "'native'", "'new'", "'package'", "'private'", "'protected'", - "'public'", "'return'", "'short'", "'static'", "'strictfp'", - "'super'", "'switch'", "'synchronized'", "'this'", "'throw'", - "'throws'", "'transient'", "'try'", "'void'", "'volatile'", - "'while'", "'null'", "'('", "')'", "'{'", "'}'", "'['", "']'", - "';'", "','", "'.'", "'='", "'>'", "'<'", "'!'", "'~'", "'?'", - "':'", "'=='", "'<='", "'>='", "'!='", "'&&'", "'||'", "'++'", - "'--'", "'+'", "'-'", "'*'", "'/'", "'&'", "'|'", "'^'", "'%'", - "'->'", "'::'", "'+='", "'-='", "'*='", "'/='", "'&='", "'|='", - "'^='", "'%='", "'<<='", "'>>='", "'>>>='", "'@'", "'...'" ] - - symbolicNames = [ "", - "ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", "BYTE", "CASE", "CATCH", - "CHAR", "CLASS", "CONST", "CONTINUE", "DEFAULT", "DO", "DOUBLE", - "ELSE", "ENUM", "EXTENDS", "FINAL", "FINALLY", "FLOAT", "FOR", - "IF", "GOTO", "IMPLEMENTS", "IMPORT", "INSTANCEOF", "INT", "INTERFACE", - "LONG", "NATIVE", "NEW", "PACKAGE", "PRIVATE", "PROTECTED", - "PUBLIC", "RETURN", "SHORT", "STATIC", "STRICTFP", "SUPER", - "SWITCH", "SYNCHRONIZED", "THIS", "THROW", "THROWS", "TRANSIENT", - "TRY", "VOID", "VOLATILE", "WHILE", "IntegerLiteral", "FloatingPointLiteral", - "BooleanLiteral", "CharacterLiteral", "StringLiteral", "NullLiteral", - "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK", - "SEMI", "COMMA", "DOT", "ASSIGN", "GT", "LT", "BANG", "TILDE", - "QUESTION", "COLON", "EQUAL", "LE", "GE", "NOTEQUAL", "AND", - "OR", "INC", "DEC", "ADD", "SUB", "MUL", "DIV", "BITAND", "BITOR", - "CARET", "MOD", "ARROW", "COLONCOLON", "ADD_ASSIGN", "SUB_ASSIGN", - "MUL_ASSIGN", "DIV_ASSIGN", "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", - "MOD_ASSIGN", "LSHIFT_ASSIGN", "RSHIFT_ASSIGN", "URSHIFT_ASSIGN", - "Identifier", "AT", "ELLIPSIS", "WS", "COMMENT", "LINE_COMMENT" ] - - ruleNames = [ "ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", "BYTE", "CASE", - "CATCH", "CHAR", "CLASS", "CONST", "CONTINUE", "DEFAULT", - "DO", "DOUBLE", "ELSE", "ENUM", "EXTENDS", "FINAL", "FINALLY", - "FLOAT", "FOR", "IF", "GOTO", "IMPLEMENTS", "IMPORT", - "INSTANCEOF", "INT", "INTERFACE", "LONG", "NATIVE", "NEW", - "PACKAGE", "PRIVATE", "PROTECTED", "PUBLIC", "RETURN", - "SHORT", "STATIC", "STRICTFP", "SUPER", "SWITCH", "SYNCHRONIZED", - "THIS", "THROW", "THROWS", "TRANSIENT", "TRY", "VOID", - "VOLATILE", "WHILE", "IntegerLiteral", "DecimalIntegerLiteral", - "HexIntegerLiteral", "OctalIntegerLiteral", "BinaryIntegerLiteral", - "IntegerTypeSuffix", "DecimalNumeral", "Digits", "Digit", - "NonZeroDigit", "DigitsAndUnderscores", "DigitOrUnderscore", - "Underscores", "HexNumeral", "HexDigits", "HexDigit", - "HexDigitsAndUnderscores", "HexDigitOrUnderscore", "OctalNumeral", - "OctalDigits", "OctalDigit", "OctalDigitsAndUnderscores", - "OctalDigitOrUnderscore", "BinaryNumeral", "BinaryDigits", - "BinaryDigit", "BinaryDigitsAndUnderscores", "BinaryDigitOrUnderscore", - "FloatingPointLiteral", "DecimalFloatingPointLiteral", - "ExponentPart", "ExponentIndicator", "SignedInteger", - "Sign", "FloatTypeSuffix", "HexadecimalFloatingPointLiteral", - "HexSignificand", "BinaryExponent", "BinaryExponentIndicator", - "BooleanLiteral", "CharacterLiteral", "SingleCharacter", - "StringLiteral", "StringCharacters", "StringCharacter", - "EscapeSequence", "OctalEscape", "ZeroToThree", "UnicodeEscape", - "NullLiteral", "LPAREN", "RPAREN", "LBRACE", "RBRACE", - "LBRACK", "RBRACK", "SEMI", "COMMA", "DOT", "ASSIGN", - "GT", "LT", "BANG", "TILDE", "QUESTION", "COLON", "EQUAL", - "LE", "GE", "NOTEQUAL", "AND", "OR", "INC", "DEC", "ADD", - "SUB", "MUL", "DIV", "BITAND", "BITOR", "CARET", "MOD", - "ARROW", "COLONCOLON", "ADD_ASSIGN", "SUB_ASSIGN", "MUL_ASSIGN", - "DIV_ASSIGN", "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", - "MOD_ASSIGN", "LSHIFT_ASSIGN", "RSHIFT_ASSIGN", "URSHIFT_ASSIGN", - "Identifier", "JavaLetter", "JavaLetterOrDigit", "AT", - "ELLIPSIS", "WS", "COMMENT", "LINE_COMMENT" ] - - grammarFileName = "Java8.g4" - - def __init__(self, input=None, output:TextIO = sys.stdout): - super().__init__(input, output) - self.checkVersion("4.7.2") - self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) - self._actions = None - self._predicates = None - - diff --git a/persper/analytics/call_graph/java/Java8Lexer.tokens b/persper/analytics/call_graph/java/Java8Lexer.tokens deleted file mode 100644 index 52ef1eee3d5..00000000000 --- a/persper/analytics/call_graph/java/Java8Lexer.tokens +++ /dev/null @@ -1,205 +0,0 @@ -ABSTRACT=1 -ASSERT=2 -BOOLEAN=3 -BREAK=4 -BYTE=5 -CASE=6 -CATCH=7 -CHAR=8 -CLASS=9 -CONST=10 -CONTINUE=11 -DEFAULT=12 -DO=13 -DOUBLE=14 -ELSE=15 -ENUM=16 -EXTENDS=17 -FINAL=18 -FINALLY=19 -FLOAT=20 -FOR=21 -IF=22 -GOTO=23 -IMPLEMENTS=24 -IMPORT=25 -INSTANCEOF=26 -INT=27 -INTERFACE=28 -LONG=29 -NATIVE=30 -NEW=31 -PACKAGE=32 -PRIVATE=33 -PROTECTED=34 -PUBLIC=35 -RETURN=36 -SHORT=37 -STATIC=38 -STRICTFP=39 -SUPER=40 -SWITCH=41 -SYNCHRONIZED=42 -THIS=43 -THROW=44 -THROWS=45 -TRANSIENT=46 -TRY=47 -VOID=48 -VOLATILE=49 -WHILE=50 -IntegerLiteral=51 -FloatingPointLiteral=52 -BooleanLiteral=53 -CharacterLiteral=54 -StringLiteral=55 -NullLiteral=56 -LPAREN=57 -RPAREN=58 -LBRACE=59 -RBRACE=60 -LBRACK=61 -RBRACK=62 -SEMI=63 -COMMA=64 -DOT=65 -ASSIGN=66 -GT=67 -LT=68 -BANG=69 -TILDE=70 -QUESTION=71 -COLON=72 -EQUAL=73 -LE=74 -GE=75 -NOTEQUAL=76 -AND=77 -OR=78 -INC=79 -DEC=80 -ADD=81 -SUB=82 -MUL=83 -DIV=84 -BITAND=85 -BITOR=86 -CARET=87 -MOD=88 -ARROW=89 -COLONCOLON=90 -ADD_ASSIGN=91 -SUB_ASSIGN=92 -MUL_ASSIGN=93 -DIV_ASSIGN=94 -AND_ASSIGN=95 -OR_ASSIGN=96 -XOR_ASSIGN=97 -MOD_ASSIGN=98 -LSHIFT_ASSIGN=99 -RSHIFT_ASSIGN=100 -URSHIFT_ASSIGN=101 -Identifier=102 -AT=103 -ELLIPSIS=104 -WS=105 -COMMENT=106 -LINE_COMMENT=107 -'abstract'=1 -'assert'=2 -'boolean'=3 -'break'=4 -'byte'=5 -'case'=6 -'catch'=7 -'char'=8 -'class'=9 -'const'=10 -'continue'=11 -'default'=12 -'do'=13 -'double'=14 -'else'=15 -'enum'=16 -'extends'=17 -'final'=18 -'finally'=19 -'float'=20 -'for'=21 -'if'=22 -'goto'=23 -'implements'=24 -'import'=25 -'instanceof'=26 -'int'=27 -'interface'=28 -'long'=29 -'native'=30 -'new'=31 -'package'=32 -'private'=33 -'protected'=34 -'public'=35 -'return'=36 -'short'=37 -'static'=38 -'strictfp'=39 -'super'=40 -'switch'=41 -'synchronized'=42 -'this'=43 -'throw'=44 -'throws'=45 -'transient'=46 -'try'=47 -'void'=48 -'volatile'=49 -'while'=50 -'null'=56 -'('=57 -')'=58 -'{'=59 -'}'=60 -'['=61 -']'=62 -';'=63 -','=64 -'.'=65 -'='=66 -'>'=67 -'<'=68 -'!'=69 -'~'=70 -'?'=71 -':'=72 -'=='=73 -'<='=74 -'>='=75 -'!='=76 -'&&'=77 -'||'=78 -'++'=79 -'--'=80 -'+'=81 -'-'=82 -'*'=83 -'/'=84 -'&'=85 -'|'=86 -'^'=87 -'%'=88 -'->'=89 -'::'=90 -'+='=91 -'-='=92 -'*='=93 -'/='=94 -'&='=95 -'|='=96 -'^='=97 -'%='=98 -'<<='=99 -'>>='=100 -'>>>='=101 -'@'=103 -'...'=104 diff --git a/persper/analytics/call_graph/java/Java8Listener.py b/persper/analytics/call_graph/java/Java8Listener.py deleted file mode 100644 index f60be9b37b2..00000000000 --- a/persper/analytics/call_graph/java/Java8Listener.py +++ /dev/null @@ -1,2134 +0,0 @@ -# Generated from Java8.g4 by ANTLR 4.7.2 -from antlr4 import * -if __name__ is not None and "." in __name__: - from .Java8Parser import Java8Parser -else: - from Java8Parser import Java8Parser - -# This class defines a complete listener for a parse tree produced by Java8Parser. -class Java8Listener(ParseTreeListener): - - # Enter a parse tree produced by Java8Parser#literal. - def enterLiteral(self, ctx:Java8Parser.LiteralContext): - pass - - # Exit a parse tree produced by Java8Parser#literal. - def exitLiteral(self, ctx:Java8Parser.LiteralContext): - pass - - - # Enter a parse tree produced by Java8Parser#primitiveType. - def enterPrimitiveType(self, ctx:Java8Parser.PrimitiveTypeContext): - pass - - # Exit a parse tree produced by Java8Parser#primitiveType. - def exitPrimitiveType(self, ctx:Java8Parser.PrimitiveTypeContext): - pass - - - # Enter a parse tree produced by Java8Parser#numericType. - def enterNumericType(self, ctx:Java8Parser.NumericTypeContext): - pass - - # Exit a parse tree produced by Java8Parser#numericType. - def exitNumericType(self, ctx:Java8Parser.NumericTypeContext): - pass - - - # Enter a parse tree produced by Java8Parser#integralType. - def enterIntegralType(self, ctx:Java8Parser.IntegralTypeContext): - pass - - # Exit a parse tree produced by Java8Parser#integralType. - def exitIntegralType(self, ctx:Java8Parser.IntegralTypeContext): - pass - - - # Enter a parse tree produced by Java8Parser#floatingPointType. - def enterFloatingPointType(self, ctx:Java8Parser.FloatingPointTypeContext): - pass - - # Exit a parse tree produced by Java8Parser#floatingPointType. - def exitFloatingPointType(self, ctx:Java8Parser.FloatingPointTypeContext): - pass - - - # Enter a parse tree produced by Java8Parser#referenceType. - def enterReferenceType(self, ctx:Java8Parser.ReferenceTypeContext): - pass - - # Exit a parse tree produced by Java8Parser#referenceType. - def exitReferenceType(self, ctx:Java8Parser.ReferenceTypeContext): - pass - - - # Enter a parse tree produced by Java8Parser#classOrInterfaceType. - def enterClassOrInterfaceType(self, ctx:Java8Parser.ClassOrInterfaceTypeContext): - pass - - # Exit a parse tree produced by Java8Parser#classOrInterfaceType. - def exitClassOrInterfaceType(self, ctx:Java8Parser.ClassOrInterfaceTypeContext): - pass - - - # Enter a parse tree produced by Java8Parser#classType. - def enterClassType(self, ctx:Java8Parser.ClassTypeContext): - pass - - # Exit a parse tree produced by Java8Parser#classType. - def exitClassType(self, ctx:Java8Parser.ClassTypeContext): - pass - - - # Enter a parse tree produced by Java8Parser#classType_lf_classOrInterfaceType. - def enterClassType_lf_classOrInterfaceType(self, ctx:Java8Parser.ClassType_lf_classOrInterfaceTypeContext): - pass - - # Exit a parse tree produced by Java8Parser#classType_lf_classOrInterfaceType. - def exitClassType_lf_classOrInterfaceType(self, ctx:Java8Parser.ClassType_lf_classOrInterfaceTypeContext): - pass - - - # Enter a parse tree produced by Java8Parser#classType_lfno_classOrInterfaceType. - def enterClassType_lfno_classOrInterfaceType(self, ctx:Java8Parser.ClassType_lfno_classOrInterfaceTypeContext): - pass - - # Exit a parse tree produced by Java8Parser#classType_lfno_classOrInterfaceType. - def exitClassType_lfno_classOrInterfaceType(self, ctx:Java8Parser.ClassType_lfno_classOrInterfaceTypeContext): - pass - - - # Enter a parse tree produced by Java8Parser#interfaceType. - def enterInterfaceType(self, ctx:Java8Parser.InterfaceTypeContext): - pass - - # Exit a parse tree produced by Java8Parser#interfaceType. - def exitInterfaceType(self, ctx:Java8Parser.InterfaceTypeContext): - pass - - - # Enter a parse tree produced by Java8Parser#interfaceType_lf_classOrInterfaceType. - def enterInterfaceType_lf_classOrInterfaceType(self, ctx:Java8Parser.InterfaceType_lf_classOrInterfaceTypeContext): - pass - - # Exit a parse tree produced by Java8Parser#interfaceType_lf_classOrInterfaceType. - def exitInterfaceType_lf_classOrInterfaceType(self, ctx:Java8Parser.InterfaceType_lf_classOrInterfaceTypeContext): - pass - - - # Enter a parse tree produced by Java8Parser#interfaceType_lfno_classOrInterfaceType. - def enterInterfaceType_lfno_classOrInterfaceType(self, ctx:Java8Parser.InterfaceType_lfno_classOrInterfaceTypeContext): - pass - - # Exit a parse tree produced by Java8Parser#interfaceType_lfno_classOrInterfaceType. - def exitInterfaceType_lfno_classOrInterfaceType(self, ctx:Java8Parser.InterfaceType_lfno_classOrInterfaceTypeContext): - pass - - - # Enter a parse tree produced by Java8Parser#typeVariable. - def enterTypeVariable(self, ctx:Java8Parser.TypeVariableContext): - pass - - # Exit a parse tree produced by Java8Parser#typeVariable. - def exitTypeVariable(self, ctx:Java8Parser.TypeVariableContext): - pass - - - # Enter a parse tree produced by Java8Parser#arrayType. - def enterArrayType(self, ctx:Java8Parser.ArrayTypeContext): - pass - - # Exit a parse tree produced by Java8Parser#arrayType. - def exitArrayType(self, ctx:Java8Parser.ArrayTypeContext): - pass - - - # Enter a parse tree produced by Java8Parser#dims. - def enterDims(self, ctx:Java8Parser.DimsContext): - pass - - # Exit a parse tree produced by Java8Parser#dims. - def exitDims(self, ctx:Java8Parser.DimsContext): - pass - - - # Enter a parse tree produced by Java8Parser#typeParameter. - def enterTypeParameter(self, ctx:Java8Parser.TypeParameterContext): - pass - - # Exit a parse tree produced by Java8Parser#typeParameter. - def exitTypeParameter(self, ctx:Java8Parser.TypeParameterContext): - pass - - - # Enter a parse tree produced by Java8Parser#typeParameterModifier. - def enterTypeParameterModifier(self, ctx:Java8Parser.TypeParameterModifierContext): - pass - - # Exit a parse tree produced by Java8Parser#typeParameterModifier. - def exitTypeParameterModifier(self, ctx:Java8Parser.TypeParameterModifierContext): - pass - - - # Enter a parse tree produced by Java8Parser#typeBound. - def enterTypeBound(self, ctx:Java8Parser.TypeBoundContext): - pass - - # Exit a parse tree produced by Java8Parser#typeBound. - def exitTypeBound(self, ctx:Java8Parser.TypeBoundContext): - pass - - - # Enter a parse tree produced by Java8Parser#additionalBound. - def enterAdditionalBound(self, ctx:Java8Parser.AdditionalBoundContext): - pass - - # Exit a parse tree produced by Java8Parser#additionalBound. - def exitAdditionalBound(self, ctx:Java8Parser.AdditionalBoundContext): - pass - - - # Enter a parse tree produced by Java8Parser#typeArguments. - def enterTypeArguments(self, ctx:Java8Parser.TypeArgumentsContext): - pass - - # Exit a parse tree produced by Java8Parser#typeArguments. - def exitTypeArguments(self, ctx:Java8Parser.TypeArgumentsContext): - pass - - - # Enter a parse tree produced by Java8Parser#typeArgumentList. - def enterTypeArgumentList(self, ctx:Java8Parser.TypeArgumentListContext): - pass - - # Exit a parse tree produced by Java8Parser#typeArgumentList. - def exitTypeArgumentList(self, ctx:Java8Parser.TypeArgumentListContext): - pass - - - # Enter a parse tree produced by Java8Parser#typeArgument. - def enterTypeArgument(self, ctx:Java8Parser.TypeArgumentContext): - pass - - # Exit a parse tree produced by Java8Parser#typeArgument. - def exitTypeArgument(self, ctx:Java8Parser.TypeArgumentContext): - pass - - - # Enter a parse tree produced by Java8Parser#wildcard. - def enterWildcard(self, ctx:Java8Parser.WildcardContext): - pass - - # Exit a parse tree produced by Java8Parser#wildcard. - def exitWildcard(self, ctx:Java8Parser.WildcardContext): - pass - - - # Enter a parse tree produced by Java8Parser#wildcardBounds. - def enterWildcardBounds(self, ctx:Java8Parser.WildcardBoundsContext): - pass - - # Exit a parse tree produced by Java8Parser#wildcardBounds. - def exitWildcardBounds(self, ctx:Java8Parser.WildcardBoundsContext): - pass - - - # Enter a parse tree produced by Java8Parser#packageName. - def enterPackageName(self, ctx:Java8Parser.PackageNameContext): - pass - - # Exit a parse tree produced by Java8Parser#packageName. - def exitPackageName(self, ctx:Java8Parser.PackageNameContext): - pass - - - # Enter a parse tree produced by Java8Parser#typeName. - def enterTypeName(self, ctx:Java8Parser.TypeNameContext): - pass - - # Exit a parse tree produced by Java8Parser#typeName. - def exitTypeName(self, ctx:Java8Parser.TypeNameContext): - pass - - - # Enter a parse tree produced by Java8Parser#packageOrTypeName. - def enterPackageOrTypeName(self, ctx:Java8Parser.PackageOrTypeNameContext): - pass - - # Exit a parse tree produced by Java8Parser#packageOrTypeName. - def exitPackageOrTypeName(self, ctx:Java8Parser.PackageOrTypeNameContext): - pass - - - # Enter a parse tree produced by Java8Parser#expressionName. - def enterExpressionName(self, ctx:Java8Parser.ExpressionNameContext): - pass - - # Exit a parse tree produced by Java8Parser#expressionName. - def exitExpressionName(self, ctx:Java8Parser.ExpressionNameContext): - pass - - - # Enter a parse tree produced by Java8Parser#methodName. - def enterMethodName(self, ctx:Java8Parser.MethodNameContext): - pass - - # Exit a parse tree produced by Java8Parser#methodName. - def exitMethodName(self, ctx:Java8Parser.MethodNameContext): - pass - - - # Enter a parse tree produced by Java8Parser#ambiguousName. - def enterAmbiguousName(self, ctx:Java8Parser.AmbiguousNameContext): - pass - - # Exit a parse tree produced by Java8Parser#ambiguousName. - def exitAmbiguousName(self, ctx:Java8Parser.AmbiguousNameContext): - pass - - - # Enter a parse tree produced by Java8Parser#compilationUnit. - def enterCompilationUnit(self, ctx:Java8Parser.CompilationUnitContext): - pass - - # Exit a parse tree produced by Java8Parser#compilationUnit. - def exitCompilationUnit(self, ctx:Java8Parser.CompilationUnitContext): - pass - - - # Enter a parse tree produced by Java8Parser#packageDeclaration. - def enterPackageDeclaration(self, ctx:Java8Parser.PackageDeclarationContext): - pass - - # Exit a parse tree produced by Java8Parser#packageDeclaration. - def exitPackageDeclaration(self, ctx:Java8Parser.PackageDeclarationContext): - pass - - - # Enter a parse tree produced by Java8Parser#packageModifier. - def enterPackageModifier(self, ctx:Java8Parser.PackageModifierContext): - pass - - # Exit a parse tree produced by Java8Parser#packageModifier. - def exitPackageModifier(self, ctx:Java8Parser.PackageModifierContext): - pass - - - # Enter a parse tree produced by Java8Parser#importDeclaration. - def enterImportDeclaration(self, ctx:Java8Parser.ImportDeclarationContext): - pass - - # Exit a parse tree produced by Java8Parser#importDeclaration. - def exitImportDeclaration(self, ctx:Java8Parser.ImportDeclarationContext): - pass - - - # Enter a parse tree produced by Java8Parser#singleTypeImportDeclaration. - def enterSingleTypeImportDeclaration(self, ctx:Java8Parser.SingleTypeImportDeclarationContext): - pass - - # Exit a parse tree produced by Java8Parser#singleTypeImportDeclaration. - def exitSingleTypeImportDeclaration(self, ctx:Java8Parser.SingleTypeImportDeclarationContext): - pass - - - # Enter a parse tree produced by Java8Parser#typeImportOnDemandDeclaration. - def enterTypeImportOnDemandDeclaration(self, ctx:Java8Parser.TypeImportOnDemandDeclarationContext): - pass - - # Exit a parse tree produced by Java8Parser#typeImportOnDemandDeclaration. - def exitTypeImportOnDemandDeclaration(self, ctx:Java8Parser.TypeImportOnDemandDeclarationContext): - pass - - - # Enter a parse tree produced by Java8Parser#singleStaticImportDeclaration. - def enterSingleStaticImportDeclaration(self, ctx:Java8Parser.SingleStaticImportDeclarationContext): - pass - - # Exit a parse tree produced by Java8Parser#singleStaticImportDeclaration. - def exitSingleStaticImportDeclaration(self, ctx:Java8Parser.SingleStaticImportDeclarationContext): - pass - - - # Enter a parse tree produced by Java8Parser#staticImportOnDemandDeclaration. - def enterStaticImportOnDemandDeclaration(self, ctx:Java8Parser.StaticImportOnDemandDeclarationContext): - pass - - # Exit a parse tree produced by Java8Parser#staticImportOnDemandDeclaration. - def exitStaticImportOnDemandDeclaration(self, ctx:Java8Parser.StaticImportOnDemandDeclarationContext): - pass - - - # Enter a parse tree produced by Java8Parser#typeDeclaration. - def enterTypeDeclaration(self, ctx:Java8Parser.TypeDeclarationContext): - pass - - # Exit a parse tree produced by Java8Parser#typeDeclaration. - def exitTypeDeclaration(self, ctx:Java8Parser.TypeDeclarationContext): - pass - - - # Enter a parse tree produced by Java8Parser#classDeclaration. - def enterClassDeclaration(self, ctx:Java8Parser.ClassDeclarationContext): - pass - - # Exit a parse tree produced by Java8Parser#classDeclaration. - def exitClassDeclaration(self, ctx:Java8Parser.ClassDeclarationContext): - pass - - - # Enter a parse tree produced by Java8Parser#normalClassDeclaration. - def enterNormalClassDeclaration(self, ctx:Java8Parser.NormalClassDeclarationContext): - pass - - # Exit a parse tree produced by Java8Parser#normalClassDeclaration. - def exitNormalClassDeclaration(self, ctx:Java8Parser.NormalClassDeclarationContext): - pass - - - # Enter a parse tree produced by Java8Parser#classModifier. - def enterClassModifier(self, ctx:Java8Parser.ClassModifierContext): - pass - - # Exit a parse tree produced by Java8Parser#classModifier. - def exitClassModifier(self, ctx:Java8Parser.ClassModifierContext): - pass - - - # Enter a parse tree produced by Java8Parser#typeParameters. - def enterTypeParameters(self, ctx:Java8Parser.TypeParametersContext): - pass - - # Exit a parse tree produced by Java8Parser#typeParameters. - def exitTypeParameters(self, ctx:Java8Parser.TypeParametersContext): - pass - - - # Enter a parse tree produced by Java8Parser#typeParameterList. - def enterTypeParameterList(self, ctx:Java8Parser.TypeParameterListContext): - pass - - # Exit a parse tree produced by Java8Parser#typeParameterList. - def exitTypeParameterList(self, ctx:Java8Parser.TypeParameterListContext): - pass - - - # Enter a parse tree produced by Java8Parser#superclass. - def enterSuperclass(self, ctx:Java8Parser.SuperclassContext): - pass - - # Exit a parse tree produced by Java8Parser#superclass. - def exitSuperclass(self, ctx:Java8Parser.SuperclassContext): - pass - - - # Enter a parse tree produced by Java8Parser#superinterfaces. - def enterSuperinterfaces(self, ctx:Java8Parser.SuperinterfacesContext): - pass - - # Exit a parse tree produced by Java8Parser#superinterfaces. - def exitSuperinterfaces(self, ctx:Java8Parser.SuperinterfacesContext): - pass - - - # Enter a parse tree produced by Java8Parser#interfaceTypeList. - def enterInterfaceTypeList(self, ctx:Java8Parser.InterfaceTypeListContext): - pass - - # Exit a parse tree produced by Java8Parser#interfaceTypeList. - def exitInterfaceTypeList(self, ctx:Java8Parser.InterfaceTypeListContext): - pass - - - # Enter a parse tree produced by Java8Parser#classBody. - def enterClassBody(self, ctx:Java8Parser.ClassBodyContext): - pass - - # Exit a parse tree produced by Java8Parser#classBody. - def exitClassBody(self, ctx:Java8Parser.ClassBodyContext): - pass - - - # Enter a parse tree produced by Java8Parser#classBodyDeclaration. - def enterClassBodyDeclaration(self, ctx:Java8Parser.ClassBodyDeclarationContext): - pass - - # Exit a parse tree produced by Java8Parser#classBodyDeclaration. - def exitClassBodyDeclaration(self, ctx:Java8Parser.ClassBodyDeclarationContext): - pass - - - # Enter a parse tree produced by Java8Parser#classMemberDeclaration. - def enterClassMemberDeclaration(self, ctx:Java8Parser.ClassMemberDeclarationContext): - pass - - # Exit a parse tree produced by Java8Parser#classMemberDeclaration. - def exitClassMemberDeclaration(self, ctx:Java8Parser.ClassMemberDeclarationContext): - pass - - - # Enter a parse tree produced by Java8Parser#fieldDeclaration. - def enterFieldDeclaration(self, ctx:Java8Parser.FieldDeclarationContext): - pass - - # Exit a parse tree produced by Java8Parser#fieldDeclaration. - def exitFieldDeclaration(self, ctx:Java8Parser.FieldDeclarationContext): - pass - - - # Enter a parse tree produced by Java8Parser#fieldModifier. - def enterFieldModifier(self, ctx:Java8Parser.FieldModifierContext): - pass - - # Exit a parse tree produced by Java8Parser#fieldModifier. - def exitFieldModifier(self, ctx:Java8Parser.FieldModifierContext): - pass - - - # Enter a parse tree produced by Java8Parser#variableDeclaratorList. - def enterVariableDeclaratorList(self, ctx:Java8Parser.VariableDeclaratorListContext): - pass - - # Exit a parse tree produced by Java8Parser#variableDeclaratorList. - def exitVariableDeclaratorList(self, ctx:Java8Parser.VariableDeclaratorListContext): - pass - - - # Enter a parse tree produced by Java8Parser#variableDeclarator. - def enterVariableDeclarator(self, ctx:Java8Parser.VariableDeclaratorContext): - pass - - # Exit a parse tree produced by Java8Parser#variableDeclarator. - def exitVariableDeclarator(self, ctx:Java8Parser.VariableDeclaratorContext): - pass - - - # Enter a parse tree produced by Java8Parser#variableDeclaratorId. - def enterVariableDeclaratorId(self, ctx:Java8Parser.VariableDeclaratorIdContext): - pass - - # Exit a parse tree produced by Java8Parser#variableDeclaratorId. - def exitVariableDeclaratorId(self, ctx:Java8Parser.VariableDeclaratorIdContext): - pass - - - # Enter a parse tree produced by Java8Parser#variableInitializer. - def enterVariableInitializer(self, ctx:Java8Parser.VariableInitializerContext): - pass - - # Exit a parse tree produced by Java8Parser#variableInitializer. - def exitVariableInitializer(self, ctx:Java8Parser.VariableInitializerContext): - pass - - - # Enter a parse tree produced by Java8Parser#unannType. - def enterUnannType(self, ctx:Java8Parser.UnannTypeContext): - pass - - # Exit a parse tree produced by Java8Parser#unannType. - def exitUnannType(self, ctx:Java8Parser.UnannTypeContext): - pass - - - # Enter a parse tree produced by Java8Parser#unannPrimitiveType. - def enterUnannPrimitiveType(self, ctx:Java8Parser.UnannPrimitiveTypeContext): - pass - - # Exit a parse tree produced by Java8Parser#unannPrimitiveType. - def exitUnannPrimitiveType(self, ctx:Java8Parser.UnannPrimitiveTypeContext): - pass - - - # Enter a parse tree produced by Java8Parser#unannReferenceType. - def enterUnannReferenceType(self, ctx:Java8Parser.UnannReferenceTypeContext): - pass - - # Exit a parse tree produced by Java8Parser#unannReferenceType. - def exitUnannReferenceType(self, ctx:Java8Parser.UnannReferenceTypeContext): - pass - - - # Enter a parse tree produced by Java8Parser#unannClassOrInterfaceType. - def enterUnannClassOrInterfaceType(self, ctx:Java8Parser.UnannClassOrInterfaceTypeContext): - pass - - # Exit a parse tree produced by Java8Parser#unannClassOrInterfaceType. - def exitUnannClassOrInterfaceType(self, ctx:Java8Parser.UnannClassOrInterfaceTypeContext): - pass - - - # Enter a parse tree produced by Java8Parser#unannClassType. - def enterUnannClassType(self, ctx:Java8Parser.UnannClassTypeContext): - pass - - # Exit a parse tree produced by Java8Parser#unannClassType. - def exitUnannClassType(self, ctx:Java8Parser.UnannClassTypeContext): - pass - - - # Enter a parse tree produced by Java8Parser#unannClassType_lf_unannClassOrInterfaceType. - def enterUnannClassType_lf_unannClassOrInterfaceType(self, ctx:Java8Parser.UnannClassType_lf_unannClassOrInterfaceTypeContext): - pass - - # Exit a parse tree produced by Java8Parser#unannClassType_lf_unannClassOrInterfaceType. - def exitUnannClassType_lf_unannClassOrInterfaceType(self, ctx:Java8Parser.UnannClassType_lf_unannClassOrInterfaceTypeContext): - pass - - - # Enter a parse tree produced by Java8Parser#unannClassType_lfno_unannClassOrInterfaceType. - def enterUnannClassType_lfno_unannClassOrInterfaceType(self, ctx:Java8Parser.UnannClassType_lfno_unannClassOrInterfaceTypeContext): - pass - - # Exit a parse tree produced by Java8Parser#unannClassType_lfno_unannClassOrInterfaceType. - def exitUnannClassType_lfno_unannClassOrInterfaceType(self, ctx:Java8Parser.UnannClassType_lfno_unannClassOrInterfaceTypeContext): - pass - - - # Enter a parse tree produced by Java8Parser#unannInterfaceType. - def enterUnannInterfaceType(self, ctx:Java8Parser.UnannInterfaceTypeContext): - pass - - # Exit a parse tree produced by Java8Parser#unannInterfaceType. - def exitUnannInterfaceType(self, ctx:Java8Parser.UnannInterfaceTypeContext): - pass - - - # Enter a parse tree produced by Java8Parser#unannInterfaceType_lf_unannClassOrInterfaceType. - def enterUnannInterfaceType_lf_unannClassOrInterfaceType(self, ctx:Java8Parser.UnannInterfaceType_lf_unannClassOrInterfaceTypeContext): - pass - - # Exit a parse tree produced by Java8Parser#unannInterfaceType_lf_unannClassOrInterfaceType. - def exitUnannInterfaceType_lf_unannClassOrInterfaceType(self, ctx:Java8Parser.UnannInterfaceType_lf_unannClassOrInterfaceTypeContext): - pass - - - # Enter a parse tree produced by Java8Parser#unannInterfaceType_lfno_unannClassOrInterfaceType. - def enterUnannInterfaceType_lfno_unannClassOrInterfaceType(self, ctx:Java8Parser.UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext): - pass - - # Exit a parse tree produced by Java8Parser#unannInterfaceType_lfno_unannClassOrInterfaceType. - def exitUnannInterfaceType_lfno_unannClassOrInterfaceType(self, ctx:Java8Parser.UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext): - pass - - - # Enter a parse tree produced by Java8Parser#unannTypeVariable. - def enterUnannTypeVariable(self, ctx:Java8Parser.UnannTypeVariableContext): - pass - - # Exit a parse tree produced by Java8Parser#unannTypeVariable. - def exitUnannTypeVariable(self, ctx:Java8Parser.UnannTypeVariableContext): - pass - - - # Enter a parse tree produced by Java8Parser#unannArrayType. - def enterUnannArrayType(self, ctx:Java8Parser.UnannArrayTypeContext): - pass - - # Exit a parse tree produced by Java8Parser#unannArrayType. - def exitUnannArrayType(self, ctx:Java8Parser.UnannArrayTypeContext): - pass - - - # Enter a parse tree produced by Java8Parser#methodDeclaration. - def enterMethodDeclaration(self, ctx:Java8Parser.MethodDeclarationContext): - pass - - # Exit a parse tree produced by Java8Parser#methodDeclaration. - def exitMethodDeclaration(self, ctx:Java8Parser.MethodDeclarationContext): - pass - - - # Enter a parse tree produced by Java8Parser#methodModifier. - def enterMethodModifier(self, ctx:Java8Parser.MethodModifierContext): - pass - - # Exit a parse tree produced by Java8Parser#methodModifier. - def exitMethodModifier(self, ctx:Java8Parser.MethodModifierContext): - pass - - - # Enter a parse tree produced by Java8Parser#methodHeader. - def enterMethodHeader(self, ctx:Java8Parser.MethodHeaderContext): - pass - - # Exit a parse tree produced by Java8Parser#methodHeader. - def exitMethodHeader(self, ctx:Java8Parser.MethodHeaderContext): - pass - - - # Enter a parse tree produced by Java8Parser#result. - def enterResult(self, ctx:Java8Parser.ResultContext): - pass - - # Exit a parse tree produced by Java8Parser#result. - def exitResult(self, ctx:Java8Parser.ResultContext): - pass - - - # Enter a parse tree produced by Java8Parser#methodDeclarator. - def enterMethodDeclarator(self, ctx:Java8Parser.MethodDeclaratorContext): - pass - - # Exit a parse tree produced by Java8Parser#methodDeclarator. - def exitMethodDeclarator(self, ctx:Java8Parser.MethodDeclaratorContext): - pass - - - # Enter a parse tree produced by Java8Parser#formalParameterList. - def enterFormalParameterList(self, ctx:Java8Parser.FormalParameterListContext): - pass - - # Exit a parse tree produced by Java8Parser#formalParameterList. - def exitFormalParameterList(self, ctx:Java8Parser.FormalParameterListContext): - pass - - - # Enter a parse tree produced by Java8Parser#formalParameters. - def enterFormalParameters(self, ctx:Java8Parser.FormalParametersContext): - pass - - # Exit a parse tree produced by Java8Parser#formalParameters. - def exitFormalParameters(self, ctx:Java8Parser.FormalParametersContext): - pass - - - # Enter a parse tree produced by Java8Parser#formalParameter. - def enterFormalParameter(self, ctx:Java8Parser.FormalParameterContext): - pass - - # Exit a parse tree produced by Java8Parser#formalParameter. - def exitFormalParameter(self, ctx:Java8Parser.FormalParameterContext): - pass - - - # Enter a parse tree produced by Java8Parser#variableModifier. - def enterVariableModifier(self, ctx:Java8Parser.VariableModifierContext): - pass - - # Exit a parse tree produced by Java8Parser#variableModifier. - def exitVariableModifier(self, ctx:Java8Parser.VariableModifierContext): - pass - - - # Enter a parse tree produced by Java8Parser#lastFormalParameter. - def enterLastFormalParameter(self, ctx:Java8Parser.LastFormalParameterContext): - pass - - # Exit a parse tree produced by Java8Parser#lastFormalParameter. - def exitLastFormalParameter(self, ctx:Java8Parser.LastFormalParameterContext): - pass - - - # Enter a parse tree produced by Java8Parser#receiverParameter. - def enterReceiverParameter(self, ctx:Java8Parser.ReceiverParameterContext): - pass - - # Exit a parse tree produced by Java8Parser#receiverParameter. - def exitReceiverParameter(self, ctx:Java8Parser.ReceiverParameterContext): - pass - - - # Enter a parse tree produced by Java8Parser#throws_. - def enterThrows_(self, ctx:Java8Parser.Throws_Context): - pass - - # Exit a parse tree produced by Java8Parser#throws_. - def exitThrows_(self, ctx:Java8Parser.Throws_Context): - pass - - - # Enter a parse tree produced by Java8Parser#exceptionTypeList. - def enterExceptionTypeList(self, ctx:Java8Parser.ExceptionTypeListContext): - pass - - # Exit a parse tree produced by Java8Parser#exceptionTypeList. - def exitExceptionTypeList(self, ctx:Java8Parser.ExceptionTypeListContext): - pass - - - # Enter a parse tree produced by Java8Parser#exceptionType. - def enterExceptionType(self, ctx:Java8Parser.ExceptionTypeContext): - pass - - # Exit a parse tree produced by Java8Parser#exceptionType. - def exitExceptionType(self, ctx:Java8Parser.ExceptionTypeContext): - pass - - - # Enter a parse tree produced by Java8Parser#methodBody. - def enterMethodBody(self, ctx:Java8Parser.MethodBodyContext): - pass - - # Exit a parse tree produced by Java8Parser#methodBody. - def exitMethodBody(self, ctx:Java8Parser.MethodBodyContext): - pass - - - # Enter a parse tree produced by Java8Parser#instanceInitializer. - def enterInstanceInitializer(self, ctx:Java8Parser.InstanceInitializerContext): - pass - - # Exit a parse tree produced by Java8Parser#instanceInitializer. - def exitInstanceInitializer(self, ctx:Java8Parser.InstanceInitializerContext): - pass - - - # Enter a parse tree produced by Java8Parser#staticInitializer. - def enterStaticInitializer(self, ctx:Java8Parser.StaticInitializerContext): - pass - - # Exit a parse tree produced by Java8Parser#staticInitializer. - def exitStaticInitializer(self, ctx:Java8Parser.StaticInitializerContext): - pass - - - # Enter a parse tree produced by Java8Parser#constructorDeclaration. - def enterConstructorDeclaration(self, ctx:Java8Parser.ConstructorDeclarationContext): - pass - - # Exit a parse tree produced by Java8Parser#constructorDeclaration. - def exitConstructorDeclaration(self, ctx:Java8Parser.ConstructorDeclarationContext): - pass - - - # Enter a parse tree produced by Java8Parser#constructorModifier. - def enterConstructorModifier(self, ctx:Java8Parser.ConstructorModifierContext): - pass - - # Exit a parse tree produced by Java8Parser#constructorModifier. - def exitConstructorModifier(self, ctx:Java8Parser.ConstructorModifierContext): - pass - - - # Enter a parse tree produced by Java8Parser#constructorDeclarator. - def enterConstructorDeclarator(self, ctx:Java8Parser.ConstructorDeclaratorContext): - pass - - # Exit a parse tree produced by Java8Parser#constructorDeclarator. - def exitConstructorDeclarator(self, ctx:Java8Parser.ConstructorDeclaratorContext): - pass - - - # Enter a parse tree produced by Java8Parser#simpleTypeName. - def enterSimpleTypeName(self, ctx:Java8Parser.SimpleTypeNameContext): - pass - - # Exit a parse tree produced by Java8Parser#simpleTypeName. - def exitSimpleTypeName(self, ctx:Java8Parser.SimpleTypeNameContext): - pass - - - # Enter a parse tree produced by Java8Parser#constructorBody. - def enterConstructorBody(self, ctx:Java8Parser.ConstructorBodyContext): - pass - - # Exit a parse tree produced by Java8Parser#constructorBody. - def exitConstructorBody(self, ctx:Java8Parser.ConstructorBodyContext): - pass - - - # Enter a parse tree produced by Java8Parser#explicitConstructorInvocation. - def enterExplicitConstructorInvocation(self, ctx:Java8Parser.ExplicitConstructorInvocationContext): - pass - - # Exit a parse tree produced by Java8Parser#explicitConstructorInvocation. - def exitExplicitConstructorInvocation(self, ctx:Java8Parser.ExplicitConstructorInvocationContext): - pass - - - # Enter a parse tree produced by Java8Parser#enumDeclaration. - def enterEnumDeclaration(self, ctx:Java8Parser.EnumDeclarationContext): - pass - - # Exit a parse tree produced by Java8Parser#enumDeclaration. - def exitEnumDeclaration(self, ctx:Java8Parser.EnumDeclarationContext): - pass - - - # Enter a parse tree produced by Java8Parser#enumBody. - def enterEnumBody(self, ctx:Java8Parser.EnumBodyContext): - pass - - # Exit a parse tree produced by Java8Parser#enumBody. - def exitEnumBody(self, ctx:Java8Parser.EnumBodyContext): - pass - - - # Enter a parse tree produced by Java8Parser#enumConstantList. - def enterEnumConstantList(self, ctx:Java8Parser.EnumConstantListContext): - pass - - # Exit a parse tree produced by Java8Parser#enumConstantList. - def exitEnumConstantList(self, ctx:Java8Parser.EnumConstantListContext): - pass - - - # Enter a parse tree produced by Java8Parser#enumConstant. - def enterEnumConstant(self, ctx:Java8Parser.EnumConstantContext): - pass - - # Exit a parse tree produced by Java8Parser#enumConstant. - def exitEnumConstant(self, ctx:Java8Parser.EnumConstantContext): - pass - - - # Enter a parse tree produced by Java8Parser#enumConstantModifier. - def enterEnumConstantModifier(self, ctx:Java8Parser.EnumConstantModifierContext): - pass - - # Exit a parse tree produced by Java8Parser#enumConstantModifier. - def exitEnumConstantModifier(self, ctx:Java8Parser.EnumConstantModifierContext): - pass - - - # Enter a parse tree produced by Java8Parser#enumBodyDeclarations. - def enterEnumBodyDeclarations(self, ctx:Java8Parser.EnumBodyDeclarationsContext): - pass - - # Exit a parse tree produced by Java8Parser#enumBodyDeclarations. - def exitEnumBodyDeclarations(self, ctx:Java8Parser.EnumBodyDeclarationsContext): - pass - - - # Enter a parse tree produced by Java8Parser#interfaceDeclaration. - def enterInterfaceDeclaration(self, ctx:Java8Parser.InterfaceDeclarationContext): - pass - - # Exit a parse tree produced by Java8Parser#interfaceDeclaration. - def exitInterfaceDeclaration(self, ctx:Java8Parser.InterfaceDeclarationContext): - pass - - - # Enter a parse tree produced by Java8Parser#normalInterfaceDeclaration. - def enterNormalInterfaceDeclaration(self, ctx:Java8Parser.NormalInterfaceDeclarationContext): - pass - - # Exit a parse tree produced by Java8Parser#normalInterfaceDeclaration. - def exitNormalInterfaceDeclaration(self, ctx:Java8Parser.NormalInterfaceDeclarationContext): - pass - - - # Enter a parse tree produced by Java8Parser#interfaceModifier. - def enterInterfaceModifier(self, ctx:Java8Parser.InterfaceModifierContext): - pass - - # Exit a parse tree produced by Java8Parser#interfaceModifier. - def exitInterfaceModifier(self, ctx:Java8Parser.InterfaceModifierContext): - pass - - - # Enter a parse tree produced by Java8Parser#extendsInterfaces. - def enterExtendsInterfaces(self, ctx:Java8Parser.ExtendsInterfacesContext): - pass - - # Exit a parse tree produced by Java8Parser#extendsInterfaces. - def exitExtendsInterfaces(self, ctx:Java8Parser.ExtendsInterfacesContext): - pass - - - # Enter a parse tree produced by Java8Parser#interfaceBody. - def enterInterfaceBody(self, ctx:Java8Parser.InterfaceBodyContext): - pass - - # Exit a parse tree produced by Java8Parser#interfaceBody. - def exitInterfaceBody(self, ctx:Java8Parser.InterfaceBodyContext): - pass - - - # Enter a parse tree produced by Java8Parser#interfaceMemberDeclaration. - def enterInterfaceMemberDeclaration(self, ctx:Java8Parser.InterfaceMemberDeclarationContext): - pass - - # Exit a parse tree produced by Java8Parser#interfaceMemberDeclaration. - def exitInterfaceMemberDeclaration(self, ctx:Java8Parser.InterfaceMemberDeclarationContext): - pass - - - # Enter a parse tree produced by Java8Parser#constantDeclaration. - def enterConstantDeclaration(self, ctx:Java8Parser.ConstantDeclarationContext): - pass - - # Exit a parse tree produced by Java8Parser#constantDeclaration. - def exitConstantDeclaration(self, ctx:Java8Parser.ConstantDeclarationContext): - pass - - - # Enter a parse tree produced by Java8Parser#constantModifier. - def enterConstantModifier(self, ctx:Java8Parser.ConstantModifierContext): - pass - - # Exit a parse tree produced by Java8Parser#constantModifier. - def exitConstantModifier(self, ctx:Java8Parser.ConstantModifierContext): - pass - - - # Enter a parse tree produced by Java8Parser#interfaceMethodDeclaration. - def enterInterfaceMethodDeclaration(self, ctx:Java8Parser.InterfaceMethodDeclarationContext): - pass - - # Exit a parse tree produced by Java8Parser#interfaceMethodDeclaration. - def exitInterfaceMethodDeclaration(self, ctx:Java8Parser.InterfaceMethodDeclarationContext): - pass - - - # Enter a parse tree produced by Java8Parser#interfaceMethodModifier. - def enterInterfaceMethodModifier(self, ctx:Java8Parser.InterfaceMethodModifierContext): - pass - - # Exit a parse tree produced by Java8Parser#interfaceMethodModifier. - def exitInterfaceMethodModifier(self, ctx:Java8Parser.InterfaceMethodModifierContext): - pass - - - # Enter a parse tree produced by Java8Parser#annotationTypeDeclaration. - def enterAnnotationTypeDeclaration(self, ctx:Java8Parser.AnnotationTypeDeclarationContext): - pass - - # Exit a parse tree produced by Java8Parser#annotationTypeDeclaration. - def exitAnnotationTypeDeclaration(self, ctx:Java8Parser.AnnotationTypeDeclarationContext): - pass - - - # Enter a parse tree produced by Java8Parser#annotationTypeBody. - def enterAnnotationTypeBody(self, ctx:Java8Parser.AnnotationTypeBodyContext): - pass - - # Exit a parse tree produced by Java8Parser#annotationTypeBody. - def exitAnnotationTypeBody(self, ctx:Java8Parser.AnnotationTypeBodyContext): - pass - - - # Enter a parse tree produced by Java8Parser#annotationTypeMemberDeclaration. - def enterAnnotationTypeMemberDeclaration(self, ctx:Java8Parser.AnnotationTypeMemberDeclarationContext): - pass - - # Exit a parse tree produced by Java8Parser#annotationTypeMemberDeclaration. - def exitAnnotationTypeMemberDeclaration(self, ctx:Java8Parser.AnnotationTypeMemberDeclarationContext): - pass - - - # Enter a parse tree produced by Java8Parser#annotationTypeElementDeclaration. - def enterAnnotationTypeElementDeclaration(self, ctx:Java8Parser.AnnotationTypeElementDeclarationContext): - pass - - # Exit a parse tree produced by Java8Parser#annotationTypeElementDeclaration. - def exitAnnotationTypeElementDeclaration(self, ctx:Java8Parser.AnnotationTypeElementDeclarationContext): - pass - - - # Enter a parse tree produced by Java8Parser#annotationTypeElementModifier. - def enterAnnotationTypeElementModifier(self, ctx:Java8Parser.AnnotationTypeElementModifierContext): - pass - - # Exit a parse tree produced by Java8Parser#annotationTypeElementModifier. - def exitAnnotationTypeElementModifier(self, ctx:Java8Parser.AnnotationTypeElementModifierContext): - pass - - - # Enter a parse tree produced by Java8Parser#defaultValue. - def enterDefaultValue(self, ctx:Java8Parser.DefaultValueContext): - pass - - # Exit a parse tree produced by Java8Parser#defaultValue. - def exitDefaultValue(self, ctx:Java8Parser.DefaultValueContext): - pass - - - # Enter a parse tree produced by Java8Parser#annotation. - def enterAnnotation(self, ctx:Java8Parser.AnnotationContext): - pass - - # Exit a parse tree produced by Java8Parser#annotation. - def exitAnnotation(self, ctx:Java8Parser.AnnotationContext): - pass - - - # Enter a parse tree produced by Java8Parser#normalAnnotation. - def enterNormalAnnotation(self, ctx:Java8Parser.NormalAnnotationContext): - pass - - # Exit a parse tree produced by Java8Parser#normalAnnotation. - def exitNormalAnnotation(self, ctx:Java8Parser.NormalAnnotationContext): - pass - - - # Enter a parse tree produced by Java8Parser#elementValuePairList. - def enterElementValuePairList(self, ctx:Java8Parser.ElementValuePairListContext): - pass - - # Exit a parse tree produced by Java8Parser#elementValuePairList. - def exitElementValuePairList(self, ctx:Java8Parser.ElementValuePairListContext): - pass - - - # Enter a parse tree produced by Java8Parser#elementValuePair. - def enterElementValuePair(self, ctx:Java8Parser.ElementValuePairContext): - pass - - # Exit a parse tree produced by Java8Parser#elementValuePair. - def exitElementValuePair(self, ctx:Java8Parser.ElementValuePairContext): - pass - - - # Enter a parse tree produced by Java8Parser#elementValue. - def enterElementValue(self, ctx:Java8Parser.ElementValueContext): - pass - - # Exit a parse tree produced by Java8Parser#elementValue. - def exitElementValue(self, ctx:Java8Parser.ElementValueContext): - pass - - - # Enter a parse tree produced by Java8Parser#elementValueArrayInitializer. - def enterElementValueArrayInitializer(self, ctx:Java8Parser.ElementValueArrayInitializerContext): - pass - - # Exit a parse tree produced by Java8Parser#elementValueArrayInitializer. - def exitElementValueArrayInitializer(self, ctx:Java8Parser.ElementValueArrayInitializerContext): - pass - - - # Enter a parse tree produced by Java8Parser#elementValueList. - def enterElementValueList(self, ctx:Java8Parser.ElementValueListContext): - pass - - # Exit a parse tree produced by Java8Parser#elementValueList. - def exitElementValueList(self, ctx:Java8Parser.ElementValueListContext): - pass - - - # Enter a parse tree produced by Java8Parser#markerAnnotation. - def enterMarkerAnnotation(self, ctx:Java8Parser.MarkerAnnotationContext): - pass - - # Exit a parse tree produced by Java8Parser#markerAnnotation. - def exitMarkerAnnotation(self, ctx:Java8Parser.MarkerAnnotationContext): - pass - - - # Enter a parse tree produced by Java8Parser#singleElementAnnotation. - def enterSingleElementAnnotation(self, ctx:Java8Parser.SingleElementAnnotationContext): - pass - - # Exit a parse tree produced by Java8Parser#singleElementAnnotation. - def exitSingleElementAnnotation(self, ctx:Java8Parser.SingleElementAnnotationContext): - pass - - - # Enter a parse tree produced by Java8Parser#arrayInitializer. - def enterArrayInitializer(self, ctx:Java8Parser.ArrayInitializerContext): - pass - - # Exit a parse tree produced by Java8Parser#arrayInitializer. - def exitArrayInitializer(self, ctx:Java8Parser.ArrayInitializerContext): - pass - - - # Enter a parse tree produced by Java8Parser#variableInitializerList. - def enterVariableInitializerList(self, ctx:Java8Parser.VariableInitializerListContext): - pass - - # Exit a parse tree produced by Java8Parser#variableInitializerList. - def exitVariableInitializerList(self, ctx:Java8Parser.VariableInitializerListContext): - pass - - - # Enter a parse tree produced by Java8Parser#block. - def enterBlock(self, ctx:Java8Parser.BlockContext): - pass - - # Exit a parse tree produced by Java8Parser#block. - def exitBlock(self, ctx:Java8Parser.BlockContext): - pass - - - # Enter a parse tree produced by Java8Parser#blockStatements. - def enterBlockStatements(self, ctx:Java8Parser.BlockStatementsContext): - pass - - # Exit a parse tree produced by Java8Parser#blockStatements. - def exitBlockStatements(self, ctx:Java8Parser.BlockStatementsContext): - pass - - - # Enter a parse tree produced by Java8Parser#blockStatement. - def enterBlockStatement(self, ctx:Java8Parser.BlockStatementContext): - pass - - # Exit a parse tree produced by Java8Parser#blockStatement. - def exitBlockStatement(self, ctx:Java8Parser.BlockStatementContext): - pass - - - # Enter a parse tree produced by Java8Parser#localVariableDeclarationStatement. - def enterLocalVariableDeclarationStatement(self, ctx:Java8Parser.LocalVariableDeclarationStatementContext): - pass - - # Exit a parse tree produced by Java8Parser#localVariableDeclarationStatement. - def exitLocalVariableDeclarationStatement(self, ctx:Java8Parser.LocalVariableDeclarationStatementContext): - pass - - - # Enter a parse tree produced by Java8Parser#localVariableDeclaration. - def enterLocalVariableDeclaration(self, ctx:Java8Parser.LocalVariableDeclarationContext): - pass - - # Exit a parse tree produced by Java8Parser#localVariableDeclaration. - def exitLocalVariableDeclaration(self, ctx:Java8Parser.LocalVariableDeclarationContext): - pass - - - # Enter a parse tree produced by Java8Parser#statement. - def enterStatement(self, ctx:Java8Parser.StatementContext): - pass - - # Exit a parse tree produced by Java8Parser#statement. - def exitStatement(self, ctx:Java8Parser.StatementContext): - pass - - - # Enter a parse tree produced by Java8Parser#statementNoShortIf. - def enterStatementNoShortIf(self, ctx:Java8Parser.StatementNoShortIfContext): - pass - - # Exit a parse tree produced by Java8Parser#statementNoShortIf. - def exitStatementNoShortIf(self, ctx:Java8Parser.StatementNoShortIfContext): - pass - - - # Enter a parse tree produced by Java8Parser#statementWithoutTrailingSubstatement. - def enterStatementWithoutTrailingSubstatement(self, ctx:Java8Parser.StatementWithoutTrailingSubstatementContext): - pass - - # Exit a parse tree produced by Java8Parser#statementWithoutTrailingSubstatement. - def exitStatementWithoutTrailingSubstatement(self, ctx:Java8Parser.StatementWithoutTrailingSubstatementContext): - pass - - - # Enter a parse tree produced by Java8Parser#emptyStatement. - def enterEmptyStatement(self, ctx:Java8Parser.EmptyStatementContext): - pass - - # Exit a parse tree produced by Java8Parser#emptyStatement. - def exitEmptyStatement(self, ctx:Java8Parser.EmptyStatementContext): - pass - - - # Enter a parse tree produced by Java8Parser#labeledStatement. - def enterLabeledStatement(self, ctx:Java8Parser.LabeledStatementContext): - pass - - # Exit a parse tree produced by Java8Parser#labeledStatement. - def exitLabeledStatement(self, ctx:Java8Parser.LabeledStatementContext): - pass - - - # Enter a parse tree produced by Java8Parser#labeledStatementNoShortIf. - def enterLabeledStatementNoShortIf(self, ctx:Java8Parser.LabeledStatementNoShortIfContext): - pass - - # Exit a parse tree produced by Java8Parser#labeledStatementNoShortIf. - def exitLabeledStatementNoShortIf(self, ctx:Java8Parser.LabeledStatementNoShortIfContext): - pass - - - # Enter a parse tree produced by Java8Parser#expressionStatement. - def enterExpressionStatement(self, ctx:Java8Parser.ExpressionStatementContext): - pass - - # Exit a parse tree produced by Java8Parser#expressionStatement. - def exitExpressionStatement(self, ctx:Java8Parser.ExpressionStatementContext): - pass - - - # Enter a parse tree produced by Java8Parser#statementExpression. - def enterStatementExpression(self, ctx:Java8Parser.StatementExpressionContext): - pass - - # Exit a parse tree produced by Java8Parser#statementExpression. - def exitStatementExpression(self, ctx:Java8Parser.StatementExpressionContext): - pass - - - # Enter a parse tree produced by Java8Parser#ifThenStatement. - def enterIfThenStatement(self, ctx:Java8Parser.IfThenStatementContext): - pass - - # Exit a parse tree produced by Java8Parser#ifThenStatement. - def exitIfThenStatement(self, ctx:Java8Parser.IfThenStatementContext): - pass - - - # Enter a parse tree produced by Java8Parser#ifThenElseStatement. - def enterIfThenElseStatement(self, ctx:Java8Parser.IfThenElseStatementContext): - pass - - # Exit a parse tree produced by Java8Parser#ifThenElseStatement. - def exitIfThenElseStatement(self, ctx:Java8Parser.IfThenElseStatementContext): - pass - - - # Enter a parse tree produced by Java8Parser#ifThenElseStatementNoShortIf. - def enterIfThenElseStatementNoShortIf(self, ctx:Java8Parser.IfThenElseStatementNoShortIfContext): - pass - - # Exit a parse tree produced by Java8Parser#ifThenElseStatementNoShortIf. - def exitIfThenElseStatementNoShortIf(self, ctx:Java8Parser.IfThenElseStatementNoShortIfContext): - pass - - - # Enter a parse tree produced by Java8Parser#assertStatement. - def enterAssertStatement(self, ctx:Java8Parser.AssertStatementContext): - pass - - # Exit a parse tree produced by Java8Parser#assertStatement. - def exitAssertStatement(self, ctx:Java8Parser.AssertStatementContext): - pass - - - # Enter a parse tree produced by Java8Parser#switchStatement. - def enterSwitchStatement(self, ctx:Java8Parser.SwitchStatementContext): - pass - - # Exit a parse tree produced by Java8Parser#switchStatement. - def exitSwitchStatement(self, ctx:Java8Parser.SwitchStatementContext): - pass - - - # Enter a parse tree produced by Java8Parser#switchBlock. - def enterSwitchBlock(self, ctx:Java8Parser.SwitchBlockContext): - pass - - # Exit a parse tree produced by Java8Parser#switchBlock. - def exitSwitchBlock(self, ctx:Java8Parser.SwitchBlockContext): - pass - - - # Enter a parse tree produced by Java8Parser#switchBlockStatementGroup. - def enterSwitchBlockStatementGroup(self, ctx:Java8Parser.SwitchBlockStatementGroupContext): - pass - - # Exit a parse tree produced by Java8Parser#switchBlockStatementGroup. - def exitSwitchBlockStatementGroup(self, ctx:Java8Parser.SwitchBlockStatementGroupContext): - pass - - - # Enter a parse tree produced by Java8Parser#switchLabels. - def enterSwitchLabels(self, ctx:Java8Parser.SwitchLabelsContext): - pass - - # Exit a parse tree produced by Java8Parser#switchLabels. - def exitSwitchLabels(self, ctx:Java8Parser.SwitchLabelsContext): - pass - - - # Enter a parse tree produced by Java8Parser#switchLabel. - def enterSwitchLabel(self, ctx:Java8Parser.SwitchLabelContext): - pass - - # Exit a parse tree produced by Java8Parser#switchLabel. - def exitSwitchLabel(self, ctx:Java8Parser.SwitchLabelContext): - pass - - - # Enter a parse tree produced by Java8Parser#enumConstantName. - def enterEnumConstantName(self, ctx:Java8Parser.EnumConstantNameContext): - pass - - # Exit a parse tree produced by Java8Parser#enumConstantName. - def exitEnumConstantName(self, ctx:Java8Parser.EnumConstantNameContext): - pass - - - # Enter a parse tree produced by Java8Parser#whileStatement. - def enterWhileStatement(self, ctx:Java8Parser.WhileStatementContext): - pass - - # Exit a parse tree produced by Java8Parser#whileStatement. - def exitWhileStatement(self, ctx:Java8Parser.WhileStatementContext): - pass - - - # Enter a parse tree produced by Java8Parser#whileStatementNoShortIf. - def enterWhileStatementNoShortIf(self, ctx:Java8Parser.WhileStatementNoShortIfContext): - pass - - # Exit a parse tree produced by Java8Parser#whileStatementNoShortIf. - def exitWhileStatementNoShortIf(self, ctx:Java8Parser.WhileStatementNoShortIfContext): - pass - - - # Enter a parse tree produced by Java8Parser#doStatement. - def enterDoStatement(self, ctx:Java8Parser.DoStatementContext): - pass - - # Exit a parse tree produced by Java8Parser#doStatement. - def exitDoStatement(self, ctx:Java8Parser.DoStatementContext): - pass - - - # Enter a parse tree produced by Java8Parser#forStatement. - def enterForStatement(self, ctx:Java8Parser.ForStatementContext): - pass - - # Exit a parse tree produced by Java8Parser#forStatement. - def exitForStatement(self, ctx:Java8Parser.ForStatementContext): - pass - - - # Enter a parse tree produced by Java8Parser#forStatementNoShortIf. - def enterForStatementNoShortIf(self, ctx:Java8Parser.ForStatementNoShortIfContext): - pass - - # Exit a parse tree produced by Java8Parser#forStatementNoShortIf. - def exitForStatementNoShortIf(self, ctx:Java8Parser.ForStatementNoShortIfContext): - pass - - - # Enter a parse tree produced by Java8Parser#basicForStatement. - def enterBasicForStatement(self, ctx:Java8Parser.BasicForStatementContext): - pass - - # Exit a parse tree produced by Java8Parser#basicForStatement. - def exitBasicForStatement(self, ctx:Java8Parser.BasicForStatementContext): - pass - - - # Enter a parse tree produced by Java8Parser#basicForStatementNoShortIf. - def enterBasicForStatementNoShortIf(self, ctx:Java8Parser.BasicForStatementNoShortIfContext): - pass - - # Exit a parse tree produced by Java8Parser#basicForStatementNoShortIf. - def exitBasicForStatementNoShortIf(self, ctx:Java8Parser.BasicForStatementNoShortIfContext): - pass - - - # Enter a parse tree produced by Java8Parser#forInit. - def enterForInit(self, ctx:Java8Parser.ForInitContext): - pass - - # Exit a parse tree produced by Java8Parser#forInit. - def exitForInit(self, ctx:Java8Parser.ForInitContext): - pass - - - # Enter a parse tree produced by Java8Parser#forUpdate. - def enterForUpdate(self, ctx:Java8Parser.ForUpdateContext): - pass - - # Exit a parse tree produced by Java8Parser#forUpdate. - def exitForUpdate(self, ctx:Java8Parser.ForUpdateContext): - pass - - - # Enter a parse tree produced by Java8Parser#statementExpressionList. - def enterStatementExpressionList(self, ctx:Java8Parser.StatementExpressionListContext): - pass - - # Exit a parse tree produced by Java8Parser#statementExpressionList. - def exitStatementExpressionList(self, ctx:Java8Parser.StatementExpressionListContext): - pass - - - # Enter a parse tree produced by Java8Parser#enhancedForStatement. - def enterEnhancedForStatement(self, ctx:Java8Parser.EnhancedForStatementContext): - pass - - # Exit a parse tree produced by Java8Parser#enhancedForStatement. - def exitEnhancedForStatement(self, ctx:Java8Parser.EnhancedForStatementContext): - pass - - - # Enter a parse tree produced by Java8Parser#enhancedForStatementNoShortIf. - def enterEnhancedForStatementNoShortIf(self, ctx:Java8Parser.EnhancedForStatementNoShortIfContext): - pass - - # Exit a parse tree produced by Java8Parser#enhancedForStatementNoShortIf. - def exitEnhancedForStatementNoShortIf(self, ctx:Java8Parser.EnhancedForStatementNoShortIfContext): - pass - - - # Enter a parse tree produced by Java8Parser#breakStatement. - def enterBreakStatement(self, ctx:Java8Parser.BreakStatementContext): - pass - - # Exit a parse tree produced by Java8Parser#breakStatement. - def exitBreakStatement(self, ctx:Java8Parser.BreakStatementContext): - pass - - - # Enter a parse tree produced by Java8Parser#continueStatement. - def enterContinueStatement(self, ctx:Java8Parser.ContinueStatementContext): - pass - - # Exit a parse tree produced by Java8Parser#continueStatement. - def exitContinueStatement(self, ctx:Java8Parser.ContinueStatementContext): - pass - - - # Enter a parse tree produced by Java8Parser#returnStatement. - def enterReturnStatement(self, ctx:Java8Parser.ReturnStatementContext): - pass - - # Exit a parse tree produced by Java8Parser#returnStatement. - def exitReturnStatement(self, ctx:Java8Parser.ReturnStatementContext): - pass - - - # Enter a parse tree produced by Java8Parser#throwStatement. - def enterThrowStatement(self, ctx:Java8Parser.ThrowStatementContext): - pass - - # Exit a parse tree produced by Java8Parser#throwStatement. - def exitThrowStatement(self, ctx:Java8Parser.ThrowStatementContext): - pass - - - # Enter a parse tree produced by Java8Parser#synchronizedStatement. - def enterSynchronizedStatement(self, ctx:Java8Parser.SynchronizedStatementContext): - pass - - # Exit a parse tree produced by Java8Parser#synchronizedStatement. - def exitSynchronizedStatement(self, ctx:Java8Parser.SynchronizedStatementContext): - pass - - - # Enter a parse tree produced by Java8Parser#tryStatement. - def enterTryStatement(self, ctx:Java8Parser.TryStatementContext): - pass - - # Exit a parse tree produced by Java8Parser#tryStatement. - def exitTryStatement(self, ctx:Java8Parser.TryStatementContext): - pass - - - # Enter a parse tree produced by Java8Parser#catches. - def enterCatches(self, ctx:Java8Parser.CatchesContext): - pass - - # Exit a parse tree produced by Java8Parser#catches. - def exitCatches(self, ctx:Java8Parser.CatchesContext): - pass - - - # Enter a parse tree produced by Java8Parser#catchClause. - def enterCatchClause(self, ctx:Java8Parser.CatchClauseContext): - pass - - # Exit a parse tree produced by Java8Parser#catchClause. - def exitCatchClause(self, ctx:Java8Parser.CatchClauseContext): - pass - - - # Enter a parse tree produced by Java8Parser#catchFormalParameter. - def enterCatchFormalParameter(self, ctx:Java8Parser.CatchFormalParameterContext): - pass - - # Exit a parse tree produced by Java8Parser#catchFormalParameter. - def exitCatchFormalParameter(self, ctx:Java8Parser.CatchFormalParameterContext): - pass - - - # Enter a parse tree produced by Java8Parser#catchType. - def enterCatchType(self, ctx:Java8Parser.CatchTypeContext): - pass - - # Exit a parse tree produced by Java8Parser#catchType. - def exitCatchType(self, ctx:Java8Parser.CatchTypeContext): - pass - - - # Enter a parse tree produced by Java8Parser#finally_. - def enterFinally_(self, ctx:Java8Parser.Finally_Context): - pass - - # Exit a parse tree produced by Java8Parser#finally_. - def exitFinally_(self, ctx:Java8Parser.Finally_Context): - pass - - - # Enter a parse tree produced by Java8Parser#tryWithResourcesStatement. - def enterTryWithResourcesStatement(self, ctx:Java8Parser.TryWithResourcesStatementContext): - pass - - # Exit a parse tree produced by Java8Parser#tryWithResourcesStatement. - def exitTryWithResourcesStatement(self, ctx:Java8Parser.TryWithResourcesStatementContext): - pass - - - # Enter a parse tree produced by Java8Parser#resourceSpecification. - def enterResourceSpecification(self, ctx:Java8Parser.ResourceSpecificationContext): - pass - - # Exit a parse tree produced by Java8Parser#resourceSpecification. - def exitResourceSpecification(self, ctx:Java8Parser.ResourceSpecificationContext): - pass - - - # Enter a parse tree produced by Java8Parser#resourceList. - def enterResourceList(self, ctx:Java8Parser.ResourceListContext): - pass - - # Exit a parse tree produced by Java8Parser#resourceList. - def exitResourceList(self, ctx:Java8Parser.ResourceListContext): - pass - - - # Enter a parse tree produced by Java8Parser#resource. - def enterResource(self, ctx:Java8Parser.ResourceContext): - pass - - # Exit a parse tree produced by Java8Parser#resource. - def exitResource(self, ctx:Java8Parser.ResourceContext): - pass - - - # Enter a parse tree produced by Java8Parser#primary. - def enterPrimary(self, ctx:Java8Parser.PrimaryContext): - pass - - # Exit a parse tree produced by Java8Parser#primary. - def exitPrimary(self, ctx:Java8Parser.PrimaryContext): - pass - - - # Enter a parse tree produced by Java8Parser#primaryNoNewArray. - def enterPrimaryNoNewArray(self, ctx:Java8Parser.PrimaryNoNewArrayContext): - pass - - # Exit a parse tree produced by Java8Parser#primaryNoNewArray. - def exitPrimaryNoNewArray(self, ctx:Java8Parser.PrimaryNoNewArrayContext): - pass - - - # Enter a parse tree produced by Java8Parser#primaryNoNewArray_lf_arrayAccess. - def enterPrimaryNoNewArray_lf_arrayAccess(self, ctx:Java8Parser.PrimaryNoNewArray_lf_arrayAccessContext): - pass - - # Exit a parse tree produced by Java8Parser#primaryNoNewArray_lf_arrayAccess. - def exitPrimaryNoNewArray_lf_arrayAccess(self, ctx:Java8Parser.PrimaryNoNewArray_lf_arrayAccessContext): - pass - - - # Enter a parse tree produced by Java8Parser#primaryNoNewArray_lfno_arrayAccess. - def enterPrimaryNoNewArray_lfno_arrayAccess(self, ctx:Java8Parser.PrimaryNoNewArray_lfno_arrayAccessContext): - pass - - # Exit a parse tree produced by Java8Parser#primaryNoNewArray_lfno_arrayAccess. - def exitPrimaryNoNewArray_lfno_arrayAccess(self, ctx:Java8Parser.PrimaryNoNewArray_lfno_arrayAccessContext): - pass - - - # Enter a parse tree produced by Java8Parser#primaryNoNewArray_lf_primary. - def enterPrimaryNoNewArray_lf_primary(self, ctx:Java8Parser.PrimaryNoNewArray_lf_primaryContext): - pass - - # Exit a parse tree produced by Java8Parser#primaryNoNewArray_lf_primary. - def exitPrimaryNoNewArray_lf_primary(self, ctx:Java8Parser.PrimaryNoNewArray_lf_primaryContext): - pass - - - # Enter a parse tree produced by Java8Parser#primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary. - def enterPrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(self, ctx:Java8Parser.PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext): - pass - - # Exit a parse tree produced by Java8Parser#primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary. - def exitPrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(self, ctx:Java8Parser.PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext): - pass - - - # Enter a parse tree produced by Java8Parser#primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary. - def enterPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(self, ctx:Java8Parser.PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext): - pass - - # Exit a parse tree produced by Java8Parser#primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary. - def exitPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(self, ctx:Java8Parser.PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext): - pass - - - # Enter a parse tree produced by Java8Parser#primaryNoNewArray_lfno_primary. - def enterPrimaryNoNewArray_lfno_primary(self, ctx:Java8Parser.PrimaryNoNewArray_lfno_primaryContext): - pass - - # Exit a parse tree produced by Java8Parser#primaryNoNewArray_lfno_primary. - def exitPrimaryNoNewArray_lfno_primary(self, ctx:Java8Parser.PrimaryNoNewArray_lfno_primaryContext): - pass - - - # Enter a parse tree produced by Java8Parser#primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary. - def enterPrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(self, ctx:Java8Parser.PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext): - pass - - # Exit a parse tree produced by Java8Parser#primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary. - def exitPrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(self, ctx:Java8Parser.PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext): - pass - - - # Enter a parse tree produced by Java8Parser#primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary. - def enterPrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(self, ctx:Java8Parser.PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext): - pass - - # Exit a parse tree produced by Java8Parser#primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary. - def exitPrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(self, ctx:Java8Parser.PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext): - pass - - - # Enter a parse tree produced by Java8Parser#classInstanceCreationExpression. - def enterClassInstanceCreationExpression(self, ctx:Java8Parser.ClassInstanceCreationExpressionContext): - pass - - # Exit a parse tree produced by Java8Parser#classInstanceCreationExpression. - def exitClassInstanceCreationExpression(self, ctx:Java8Parser.ClassInstanceCreationExpressionContext): - pass - - - # Enter a parse tree produced by Java8Parser#classInstanceCreationExpression_lf_primary. - def enterClassInstanceCreationExpression_lf_primary(self, ctx:Java8Parser.ClassInstanceCreationExpression_lf_primaryContext): - pass - - # Exit a parse tree produced by Java8Parser#classInstanceCreationExpression_lf_primary. - def exitClassInstanceCreationExpression_lf_primary(self, ctx:Java8Parser.ClassInstanceCreationExpression_lf_primaryContext): - pass - - - # Enter a parse tree produced by Java8Parser#classInstanceCreationExpression_lfno_primary. - def enterClassInstanceCreationExpression_lfno_primary(self, ctx:Java8Parser.ClassInstanceCreationExpression_lfno_primaryContext): - pass - - # Exit a parse tree produced by Java8Parser#classInstanceCreationExpression_lfno_primary. - def exitClassInstanceCreationExpression_lfno_primary(self, ctx:Java8Parser.ClassInstanceCreationExpression_lfno_primaryContext): - pass - - - # Enter a parse tree produced by Java8Parser#typeArgumentsOrDiamond. - def enterTypeArgumentsOrDiamond(self, ctx:Java8Parser.TypeArgumentsOrDiamondContext): - pass - - # Exit a parse tree produced by Java8Parser#typeArgumentsOrDiamond. - def exitTypeArgumentsOrDiamond(self, ctx:Java8Parser.TypeArgumentsOrDiamondContext): - pass - - - # Enter a parse tree produced by Java8Parser#fieldAccess. - def enterFieldAccess(self, ctx:Java8Parser.FieldAccessContext): - pass - - # Exit a parse tree produced by Java8Parser#fieldAccess. - def exitFieldAccess(self, ctx:Java8Parser.FieldAccessContext): - pass - - - # Enter a parse tree produced by Java8Parser#fieldAccess_lf_primary. - def enterFieldAccess_lf_primary(self, ctx:Java8Parser.FieldAccess_lf_primaryContext): - pass - - # Exit a parse tree produced by Java8Parser#fieldAccess_lf_primary. - def exitFieldAccess_lf_primary(self, ctx:Java8Parser.FieldAccess_lf_primaryContext): - pass - - - # Enter a parse tree produced by Java8Parser#fieldAccess_lfno_primary. - def enterFieldAccess_lfno_primary(self, ctx:Java8Parser.FieldAccess_lfno_primaryContext): - pass - - # Exit a parse tree produced by Java8Parser#fieldAccess_lfno_primary. - def exitFieldAccess_lfno_primary(self, ctx:Java8Parser.FieldAccess_lfno_primaryContext): - pass - - - # Enter a parse tree produced by Java8Parser#arrayAccess. - def enterArrayAccess(self, ctx:Java8Parser.ArrayAccessContext): - pass - - # Exit a parse tree produced by Java8Parser#arrayAccess. - def exitArrayAccess(self, ctx:Java8Parser.ArrayAccessContext): - pass - - - # Enter a parse tree produced by Java8Parser#arrayAccess_lf_primary. - def enterArrayAccess_lf_primary(self, ctx:Java8Parser.ArrayAccess_lf_primaryContext): - pass - - # Exit a parse tree produced by Java8Parser#arrayAccess_lf_primary. - def exitArrayAccess_lf_primary(self, ctx:Java8Parser.ArrayAccess_lf_primaryContext): - pass - - - # Enter a parse tree produced by Java8Parser#arrayAccess_lfno_primary. - def enterArrayAccess_lfno_primary(self, ctx:Java8Parser.ArrayAccess_lfno_primaryContext): - pass - - # Exit a parse tree produced by Java8Parser#arrayAccess_lfno_primary. - def exitArrayAccess_lfno_primary(self, ctx:Java8Parser.ArrayAccess_lfno_primaryContext): - pass - - - # Enter a parse tree produced by Java8Parser#methodInvocation. - def enterMethodInvocation(self, ctx:Java8Parser.MethodInvocationContext): - pass - - # Exit a parse tree produced by Java8Parser#methodInvocation. - def exitMethodInvocation(self, ctx:Java8Parser.MethodInvocationContext): - pass - - - # Enter a parse tree produced by Java8Parser#methodInvocation_lf_primary. - def enterMethodInvocation_lf_primary(self, ctx:Java8Parser.MethodInvocation_lf_primaryContext): - pass - - # Exit a parse tree produced by Java8Parser#methodInvocation_lf_primary. - def exitMethodInvocation_lf_primary(self, ctx:Java8Parser.MethodInvocation_lf_primaryContext): - pass - - - # Enter a parse tree produced by Java8Parser#methodInvocation_lfno_primary. - def enterMethodInvocation_lfno_primary(self, ctx:Java8Parser.MethodInvocation_lfno_primaryContext): - pass - - # Exit a parse tree produced by Java8Parser#methodInvocation_lfno_primary. - def exitMethodInvocation_lfno_primary(self, ctx:Java8Parser.MethodInvocation_lfno_primaryContext): - pass - - - # Enter a parse tree produced by Java8Parser#argumentList. - def enterArgumentList(self, ctx:Java8Parser.ArgumentListContext): - pass - - # Exit a parse tree produced by Java8Parser#argumentList. - def exitArgumentList(self, ctx:Java8Parser.ArgumentListContext): - pass - - - # Enter a parse tree produced by Java8Parser#methodReference. - def enterMethodReference(self, ctx:Java8Parser.MethodReferenceContext): - pass - - # Exit a parse tree produced by Java8Parser#methodReference. - def exitMethodReference(self, ctx:Java8Parser.MethodReferenceContext): - pass - - - # Enter a parse tree produced by Java8Parser#methodReference_lf_primary. - def enterMethodReference_lf_primary(self, ctx:Java8Parser.MethodReference_lf_primaryContext): - pass - - # Exit a parse tree produced by Java8Parser#methodReference_lf_primary. - def exitMethodReference_lf_primary(self, ctx:Java8Parser.MethodReference_lf_primaryContext): - pass - - - # Enter a parse tree produced by Java8Parser#methodReference_lfno_primary. - def enterMethodReference_lfno_primary(self, ctx:Java8Parser.MethodReference_lfno_primaryContext): - pass - - # Exit a parse tree produced by Java8Parser#methodReference_lfno_primary. - def exitMethodReference_lfno_primary(self, ctx:Java8Parser.MethodReference_lfno_primaryContext): - pass - - - # Enter a parse tree produced by Java8Parser#arrayCreationExpression. - def enterArrayCreationExpression(self, ctx:Java8Parser.ArrayCreationExpressionContext): - pass - - # Exit a parse tree produced by Java8Parser#arrayCreationExpression. - def exitArrayCreationExpression(self, ctx:Java8Parser.ArrayCreationExpressionContext): - pass - - - # Enter a parse tree produced by Java8Parser#dimExprs. - def enterDimExprs(self, ctx:Java8Parser.DimExprsContext): - pass - - # Exit a parse tree produced by Java8Parser#dimExprs. - def exitDimExprs(self, ctx:Java8Parser.DimExprsContext): - pass - - - # Enter a parse tree produced by Java8Parser#dimExpr. - def enterDimExpr(self, ctx:Java8Parser.DimExprContext): - pass - - # Exit a parse tree produced by Java8Parser#dimExpr. - def exitDimExpr(self, ctx:Java8Parser.DimExprContext): - pass - - - # Enter a parse tree produced by Java8Parser#constantExpression. - def enterConstantExpression(self, ctx:Java8Parser.ConstantExpressionContext): - pass - - # Exit a parse tree produced by Java8Parser#constantExpression. - def exitConstantExpression(self, ctx:Java8Parser.ConstantExpressionContext): - pass - - - # Enter a parse tree produced by Java8Parser#expression. - def enterExpression(self, ctx:Java8Parser.ExpressionContext): - pass - - # Exit a parse tree produced by Java8Parser#expression. - def exitExpression(self, ctx:Java8Parser.ExpressionContext): - pass - - - # Enter a parse tree produced by Java8Parser#lambdaExpression. - def enterLambdaExpression(self, ctx:Java8Parser.LambdaExpressionContext): - pass - - # Exit a parse tree produced by Java8Parser#lambdaExpression. - def exitLambdaExpression(self, ctx:Java8Parser.LambdaExpressionContext): - pass - - - # Enter a parse tree produced by Java8Parser#lambdaParameters. - def enterLambdaParameters(self, ctx:Java8Parser.LambdaParametersContext): - pass - - # Exit a parse tree produced by Java8Parser#lambdaParameters. - def exitLambdaParameters(self, ctx:Java8Parser.LambdaParametersContext): - pass - - - # Enter a parse tree produced by Java8Parser#inferredFormalParameterList. - def enterInferredFormalParameterList(self, ctx:Java8Parser.InferredFormalParameterListContext): - pass - - # Exit a parse tree produced by Java8Parser#inferredFormalParameterList. - def exitInferredFormalParameterList(self, ctx:Java8Parser.InferredFormalParameterListContext): - pass - - - # Enter a parse tree produced by Java8Parser#lambdaBody. - def enterLambdaBody(self, ctx:Java8Parser.LambdaBodyContext): - pass - - # Exit a parse tree produced by Java8Parser#lambdaBody. - def exitLambdaBody(self, ctx:Java8Parser.LambdaBodyContext): - pass - - - # Enter a parse tree produced by Java8Parser#assignmentExpression. - def enterAssignmentExpression(self, ctx:Java8Parser.AssignmentExpressionContext): - pass - - # Exit a parse tree produced by Java8Parser#assignmentExpression. - def exitAssignmentExpression(self, ctx:Java8Parser.AssignmentExpressionContext): - pass - - - # Enter a parse tree produced by Java8Parser#assignment. - def enterAssignment(self, ctx:Java8Parser.AssignmentContext): - pass - - # Exit a parse tree produced by Java8Parser#assignment. - def exitAssignment(self, ctx:Java8Parser.AssignmentContext): - pass - - - # Enter a parse tree produced by Java8Parser#leftHandSide. - def enterLeftHandSide(self, ctx:Java8Parser.LeftHandSideContext): - pass - - # Exit a parse tree produced by Java8Parser#leftHandSide. - def exitLeftHandSide(self, ctx:Java8Parser.LeftHandSideContext): - pass - - - # Enter a parse tree produced by Java8Parser#assignmentOperator. - def enterAssignmentOperator(self, ctx:Java8Parser.AssignmentOperatorContext): - pass - - # Exit a parse tree produced by Java8Parser#assignmentOperator. - def exitAssignmentOperator(self, ctx:Java8Parser.AssignmentOperatorContext): - pass - - - # Enter a parse tree produced by Java8Parser#conditionalExpression. - def enterConditionalExpression(self, ctx:Java8Parser.ConditionalExpressionContext): - pass - - # Exit a parse tree produced by Java8Parser#conditionalExpression. - def exitConditionalExpression(self, ctx:Java8Parser.ConditionalExpressionContext): - pass - - - # Enter a parse tree produced by Java8Parser#conditionalOrExpression. - def enterConditionalOrExpression(self, ctx:Java8Parser.ConditionalOrExpressionContext): - pass - - # Exit a parse tree produced by Java8Parser#conditionalOrExpression. - def exitConditionalOrExpression(self, ctx:Java8Parser.ConditionalOrExpressionContext): - pass - - - # Enter a parse tree produced by Java8Parser#conditionalAndExpression. - def enterConditionalAndExpression(self, ctx:Java8Parser.ConditionalAndExpressionContext): - pass - - # Exit a parse tree produced by Java8Parser#conditionalAndExpression. - def exitConditionalAndExpression(self, ctx:Java8Parser.ConditionalAndExpressionContext): - pass - - - # Enter a parse tree produced by Java8Parser#inclusiveOrExpression. - def enterInclusiveOrExpression(self, ctx:Java8Parser.InclusiveOrExpressionContext): - pass - - # Exit a parse tree produced by Java8Parser#inclusiveOrExpression. - def exitInclusiveOrExpression(self, ctx:Java8Parser.InclusiveOrExpressionContext): - pass - - - # Enter a parse tree produced by Java8Parser#exclusiveOrExpression. - def enterExclusiveOrExpression(self, ctx:Java8Parser.ExclusiveOrExpressionContext): - pass - - # Exit a parse tree produced by Java8Parser#exclusiveOrExpression. - def exitExclusiveOrExpression(self, ctx:Java8Parser.ExclusiveOrExpressionContext): - pass - - - # Enter a parse tree produced by Java8Parser#andExpression. - def enterAndExpression(self, ctx:Java8Parser.AndExpressionContext): - pass - - # Exit a parse tree produced by Java8Parser#andExpression. - def exitAndExpression(self, ctx:Java8Parser.AndExpressionContext): - pass - - - # Enter a parse tree produced by Java8Parser#equalityExpression. - def enterEqualityExpression(self, ctx:Java8Parser.EqualityExpressionContext): - pass - - # Exit a parse tree produced by Java8Parser#equalityExpression. - def exitEqualityExpression(self, ctx:Java8Parser.EqualityExpressionContext): - pass - - - # Enter a parse tree produced by Java8Parser#relationalExpression. - def enterRelationalExpression(self, ctx:Java8Parser.RelationalExpressionContext): - pass - - # Exit a parse tree produced by Java8Parser#relationalExpression. - def exitRelationalExpression(self, ctx:Java8Parser.RelationalExpressionContext): - pass - - - # Enter a parse tree produced by Java8Parser#shiftExpression. - def enterShiftExpression(self, ctx:Java8Parser.ShiftExpressionContext): - pass - - # Exit a parse tree produced by Java8Parser#shiftExpression. - def exitShiftExpression(self, ctx:Java8Parser.ShiftExpressionContext): - pass - - - # Enter a parse tree produced by Java8Parser#additiveExpression. - def enterAdditiveExpression(self, ctx:Java8Parser.AdditiveExpressionContext): - pass - - # Exit a parse tree produced by Java8Parser#additiveExpression. - def exitAdditiveExpression(self, ctx:Java8Parser.AdditiveExpressionContext): - pass - - - # Enter a parse tree produced by Java8Parser#multiplicativeExpression. - def enterMultiplicativeExpression(self, ctx:Java8Parser.MultiplicativeExpressionContext): - pass - - # Exit a parse tree produced by Java8Parser#multiplicativeExpression. - def exitMultiplicativeExpression(self, ctx:Java8Parser.MultiplicativeExpressionContext): - pass - - - # Enter a parse tree produced by Java8Parser#unaryExpression. - def enterUnaryExpression(self, ctx:Java8Parser.UnaryExpressionContext): - pass - - # Exit a parse tree produced by Java8Parser#unaryExpression. - def exitUnaryExpression(self, ctx:Java8Parser.UnaryExpressionContext): - pass - - - # Enter a parse tree produced by Java8Parser#preIncrementExpression. - def enterPreIncrementExpression(self, ctx:Java8Parser.PreIncrementExpressionContext): - pass - - # Exit a parse tree produced by Java8Parser#preIncrementExpression. - def exitPreIncrementExpression(self, ctx:Java8Parser.PreIncrementExpressionContext): - pass - - - # Enter a parse tree produced by Java8Parser#preDecrementExpression. - def enterPreDecrementExpression(self, ctx:Java8Parser.PreDecrementExpressionContext): - pass - - # Exit a parse tree produced by Java8Parser#preDecrementExpression. - def exitPreDecrementExpression(self, ctx:Java8Parser.PreDecrementExpressionContext): - pass - - - # Enter a parse tree produced by Java8Parser#unaryExpressionNotPlusMinus. - def enterUnaryExpressionNotPlusMinus(self, ctx:Java8Parser.UnaryExpressionNotPlusMinusContext): - pass - - # Exit a parse tree produced by Java8Parser#unaryExpressionNotPlusMinus. - def exitUnaryExpressionNotPlusMinus(self, ctx:Java8Parser.UnaryExpressionNotPlusMinusContext): - pass - - - # Enter a parse tree produced by Java8Parser#postfixExpression. - def enterPostfixExpression(self, ctx:Java8Parser.PostfixExpressionContext): - pass - - # Exit a parse tree produced by Java8Parser#postfixExpression. - def exitPostfixExpression(self, ctx:Java8Parser.PostfixExpressionContext): - pass - - - # Enter a parse tree produced by Java8Parser#postIncrementExpression. - def enterPostIncrementExpression(self, ctx:Java8Parser.PostIncrementExpressionContext): - pass - - # Exit a parse tree produced by Java8Parser#postIncrementExpression. - def exitPostIncrementExpression(self, ctx:Java8Parser.PostIncrementExpressionContext): - pass - - - # Enter a parse tree produced by Java8Parser#postIncrementExpression_lf_postfixExpression. - def enterPostIncrementExpression_lf_postfixExpression(self, ctx:Java8Parser.PostIncrementExpression_lf_postfixExpressionContext): - pass - - # Exit a parse tree produced by Java8Parser#postIncrementExpression_lf_postfixExpression. - def exitPostIncrementExpression_lf_postfixExpression(self, ctx:Java8Parser.PostIncrementExpression_lf_postfixExpressionContext): - pass - - - # Enter a parse tree produced by Java8Parser#postDecrementExpression. - def enterPostDecrementExpression(self, ctx:Java8Parser.PostDecrementExpressionContext): - pass - - # Exit a parse tree produced by Java8Parser#postDecrementExpression. - def exitPostDecrementExpression(self, ctx:Java8Parser.PostDecrementExpressionContext): - pass - - - # Enter a parse tree produced by Java8Parser#postDecrementExpression_lf_postfixExpression. - def enterPostDecrementExpression_lf_postfixExpression(self, ctx:Java8Parser.PostDecrementExpression_lf_postfixExpressionContext): - pass - - # Exit a parse tree produced by Java8Parser#postDecrementExpression_lf_postfixExpression. - def exitPostDecrementExpression_lf_postfixExpression(self, ctx:Java8Parser.PostDecrementExpression_lf_postfixExpressionContext): - pass - - - # Enter a parse tree produced by Java8Parser#castExpression. - def enterCastExpression(self, ctx:Java8Parser.CastExpressionContext): - pass - - # Exit a parse tree produced by Java8Parser#castExpression. - def exitCastExpression(self, ctx:Java8Parser.CastExpressionContext): - pass - - diff --git a/persper/analytics/call_graph/java/Java8Parser.py b/persper/analytics/call_graph/java/Java8Parser.py deleted file mode 100644 index 3bfa3f0505f..00000000000 --- a/persper/analytics/call_graph/java/Java8Parser.py +++ /dev/null @@ -1,21569 +0,0 @@ -# Generated from Java8.g4 by ANTLR 4.7.2 -# encoding: utf-8 -from antlr4 import * -from io import StringIO -from typing.io import TextIO -import sys - - -def serializedATN(): - with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3m") - buf.write("\u0b1e\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7") - buf.write("\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r\4\16") - buf.write("\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23\t\23") - buf.write("\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31") - buf.write("\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36") - buf.write("\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t") - buf.write("&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.\t.\4") - buf.write("/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t\64") - buf.write("\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t") - buf.write(";\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\t") - buf.write("D\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4L\tL\4M\t") - buf.write("M\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT\4U\tU\4V\t") - buf.write("V\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4") - buf.write("_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4g\tg\4") - buf.write("h\th\4i\ti\4j\tj\4k\tk\4l\tl\4m\tm\4n\tn\4o\to\4p\tp\4") - buf.write("q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4w\tw\4x\tx\4y\ty\4") - buf.write("z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177\t\177\4\u0080\t\u0080") - buf.write("\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083\4\u0084") - buf.write("\t\u0084\4\u0085\t\u0085\4\u0086\t\u0086\4\u0087\t\u0087") - buf.write("\4\u0088\t\u0088\4\u0089\t\u0089\4\u008a\t\u008a\4\u008b") - buf.write("\t\u008b\4\u008c\t\u008c\4\u008d\t\u008d\4\u008e\t\u008e") - buf.write("\4\u008f\t\u008f\4\u0090\t\u0090\4\u0091\t\u0091\4\u0092") - buf.write("\t\u0092\4\u0093\t\u0093\4\u0094\t\u0094\4\u0095\t\u0095") - buf.write("\4\u0096\t\u0096\4\u0097\t\u0097\4\u0098\t\u0098\4\u0099") - buf.write("\t\u0099\4\u009a\t\u009a\4\u009b\t\u009b\4\u009c\t\u009c") - buf.write("\4\u009d\t\u009d\4\u009e\t\u009e\4\u009f\t\u009f\4\u00a0") - buf.write("\t\u00a0\4\u00a1\t\u00a1\4\u00a2\t\u00a2\4\u00a3\t\u00a3") - buf.write("\4\u00a4\t\u00a4\4\u00a5\t\u00a5\4\u00a6\t\u00a6\4\u00a7") - buf.write("\t\u00a7\4\u00a8\t\u00a8\4\u00a9\t\u00a9\4\u00aa\t\u00aa") - buf.write("\4\u00ab\t\u00ab\4\u00ac\t\u00ac\4\u00ad\t\u00ad\4\u00ae") - buf.write("\t\u00ae\4\u00af\t\u00af\4\u00b0\t\u00b0\4\u00b1\t\u00b1") - buf.write("\4\u00b2\t\u00b2\4\u00b3\t\u00b3\4\u00b4\t\u00b4\4\u00b5") - buf.write("\t\u00b5\4\u00b6\t\u00b6\4\u00b7\t\u00b7\4\u00b8\t\u00b8") - buf.write("\4\u00b9\t\u00b9\4\u00ba\t\u00ba\4\u00bb\t\u00bb\4\u00bc") - buf.write("\t\u00bc\4\u00bd\t\u00bd\4\u00be\t\u00be\4\u00bf\t\u00bf") - buf.write("\4\u00c0\t\u00c0\4\u00c1\t\u00c1\4\u00c2\t\u00c2\4\u00c3") - buf.write("\t\u00c3\4\u00c4\t\u00c4\4\u00c5\t\u00c5\4\u00c6\t\u00c6") - buf.write("\4\u00c7\t\u00c7\4\u00c8\t\u00c8\4\u00c9\t\u00c9\4\u00ca") - buf.write("\t\u00ca\4\u00cb\t\u00cb\4\u00cc\t\u00cc\4\u00cd\t\u00cd") - buf.write("\4\u00ce\t\u00ce\4\u00cf\t\u00cf\4\u00d0\t\u00d0\4\u00d1") - buf.write("\t\u00d1\4\u00d2\t\u00d2\4\u00d3\t\u00d3\4\u00d4\t\u00d4") - buf.write("\4\u00d5\t\u00d5\4\u00d6\t\u00d6\4\u00d7\t\u00d7\4\u00d8") - buf.write("\t\u00d8\4\u00d9\t\u00d9\4\u00da\t\u00da\4\u00db\t\u00db") - buf.write("\4\u00dc\t\u00dc\4\u00dd\t\u00dd\4\u00de\t\u00de\4\u00df") - buf.write("\t\u00df\4\u00e0\t\u00e0\4\u00e1\t\u00e1\4\u00e2\t\u00e2") - buf.write("\4\u00e3\t\u00e3\4\u00e4\t\u00e4\4\u00e5\t\u00e5\4\u00e6") - buf.write("\t\u00e6\4\u00e7\t\u00e7\4\u00e8\t\u00e8\4\u00e9\t\u00e9") - buf.write("\4\u00ea\t\u00ea\4\u00eb\t\u00eb\4\u00ec\t\u00ec\4\u00ed") - buf.write("\t\u00ed\3\2\3\2\3\3\7\3\u01de\n\3\f\3\16\3\u01e1\13\3") - buf.write("\3\3\3\3\7\3\u01e5\n\3\f\3\16\3\u01e8\13\3\3\3\5\3\u01eb") - buf.write("\n\3\3\4\3\4\5\4\u01ef\n\4\3\5\3\5\3\6\3\6\3\7\3\7\3\7") - buf.write("\5\7\u01f8\n\7\3\b\3\b\5\b\u01fc\n\b\3\b\3\b\7\b\u0200") - buf.write("\n\b\f\b\16\b\u0203\13\b\3\t\7\t\u0206\n\t\f\t\16\t\u0209") - buf.write("\13\t\3\t\3\t\5\t\u020d\n\t\3\t\3\t\3\t\7\t\u0212\n\t") - buf.write("\f\t\16\t\u0215\13\t\3\t\3\t\5\t\u0219\n\t\5\t\u021b\n") - buf.write("\t\3\n\3\n\7\n\u021f\n\n\f\n\16\n\u0222\13\n\3\n\3\n\5") - buf.write("\n\u0226\n\n\3\13\7\13\u0229\n\13\f\13\16\13\u022c\13") - buf.write("\13\3\13\3\13\5\13\u0230\n\13\3\f\3\f\3\r\3\r\3\16\3\16") - buf.write("\3\17\7\17\u0239\n\17\f\17\16\17\u023c\13\17\3\17\3\17") - buf.write("\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\5\20\u0249") - buf.write("\n\20\3\21\7\21\u024c\n\21\f\21\16\21\u024f\13\21\3\21") - buf.write("\3\21\3\21\7\21\u0254\n\21\f\21\16\21\u0257\13\21\3\21") - buf.write("\3\21\7\21\u025b\n\21\f\21\16\21\u025e\13\21\3\22\7\22") - buf.write("\u0261\n\22\f\22\16\22\u0264\13\22\3\22\3\22\5\22\u0268") - buf.write("\n\22\3\23\3\23\3\24\3\24\3\24\3\24\3\24\7\24\u0271\n") - buf.write("\24\f\24\16\24\u0274\13\24\5\24\u0276\n\24\3\25\3\25\3") - buf.write("\25\3\26\3\26\3\26\3\26\3\27\3\27\3\27\7\27\u0282\n\27") - buf.write("\f\27\16\27\u0285\13\27\3\30\3\30\5\30\u0289\n\30\3\31") - buf.write("\7\31\u028c\n\31\f\31\16\31\u028f\13\31\3\31\3\31\5\31") - buf.write("\u0293\n\31\3\32\3\32\3\32\3\32\5\32\u0299\n\32\3\33\3") - buf.write("\33\3\33\3\33\3\33\3\33\7\33\u02a1\n\33\f\33\16\33\u02a4") - buf.write("\13\33\3\34\3\34\3\34\3\34\3\34\5\34\u02ab\n\34\3\35\3") - buf.write("\35\3\35\3\35\3\35\3\35\7\35\u02b3\n\35\f\35\16\35\u02b6") - buf.write("\13\35\3\36\3\36\3\36\3\36\3\36\5\36\u02bd\n\36\3\37\3") - buf.write("\37\3 \3 \3 \3 \3 \3 \7 \u02c7\n \f \16 \u02ca\13 \3!") - buf.write("\5!\u02cd\n!\3!\7!\u02d0\n!\f!\16!\u02d3\13!\3!\7!\u02d6") - buf.write("\n!\f!\16!\u02d9\13!\3!\3!\3\"\7\"\u02de\n\"\f\"\16\"") - buf.write("\u02e1\13\"\3\"\3\"\3\"\3\"\3#\3#\3$\3$\3$\3$\5$\u02ed") - buf.write("\n$\3%\3%\3%\3%\3&\3&\3&\3&\3&\3&\3\'\3\'\3\'\3\'\3\'") - buf.write("\3\'\3\'\3(\3(\3(\3(\3(\3(\3(\3)\3)\3)\5)\u030a\n)\3*") - buf.write("\3*\5*\u030e\n*\3+\7+\u0311\n+\f+\16+\u0314\13+\3+\3+") - buf.write("\3+\5+\u0319\n+\3+\5+\u031c\n+\3+\5+\u031f\n+\3+\3+\3") - buf.write(",\3,\3,\3,\3,\3,\3,\3,\5,\u032b\n,\3-\3-\3-\3-\3.\3.\3") - buf.write(".\7.\u0334\n.\f.\16.\u0337\13.\3/\3/\3/\3\60\3\60\3\60") - buf.write("\3\61\3\61\3\61\7\61\u0342\n\61\f\61\16\61\u0345\13\61") - buf.write("\3\62\3\62\7\62\u0349\n\62\f\62\16\62\u034c\13\62\3\62") - buf.write("\3\62\3\63\3\63\3\63\3\63\5\63\u0354\n\63\3\64\3\64\3") - buf.write("\64\3\64\3\64\5\64\u035b\n\64\3\65\7\65\u035e\n\65\f\65") - buf.write("\16\65\u0361\13\65\3\65\3\65\3\65\3\65\3\66\3\66\3\66") - buf.write("\3\66\3\66\3\66\3\66\3\66\5\66\u036f\n\66\3\67\3\67\3") - buf.write("\67\7\67\u0374\n\67\f\67\16\67\u0377\13\67\38\38\38\5") - buf.write("8\u037c\n8\39\39\59\u0380\n9\3:\3:\5:\u0384\n:\3;\3;\5") - buf.write(";\u0388\n;\3<\3<\5<\u038c\n<\3=\3=\3=\5=\u0391\n=\3>\3") - buf.write(">\5>\u0395\n>\3>\3>\7>\u0399\n>\f>\16>\u039c\13>\3?\3") - buf.write("?\5?\u03a0\n?\3?\3?\3?\7?\u03a5\n?\f?\16?\u03a8\13?\3") - buf.write("?\3?\5?\u03ac\n?\5?\u03ae\n?\3@\3@\7@\u03b2\n@\f@\16@") - buf.write("\u03b5\13@\3@\3@\5@\u03b9\n@\3A\3A\5A\u03bd\nA\3B\3B\3") - buf.write("C\3C\3D\3D\3E\3E\3F\3F\3F\3F\3F\3F\3F\3F\3F\5F\u03d0\n") - buf.write("F\3G\7G\u03d3\nG\fG\16G\u03d6\13G\3G\3G\3G\3H\3H\3H\3") - buf.write("H\3H\3H\3H\3H\3H\3H\5H\u03e5\nH\3I\3I\3I\5I\u03ea\nI\3") - buf.write("I\3I\7I\u03ee\nI\fI\16I\u03f1\13I\3I\3I\3I\5I\u03f6\n") - buf.write("I\5I\u03f8\nI\3J\3J\5J\u03fc\nJ\3K\3K\3K\5K\u0401\nK\3") - buf.write("K\3K\5K\u0405\nK\3L\3L\3L\3L\3L\3L\5L\u040d\nL\3M\3M\3") - buf.write("M\7M\u0412\nM\fM\16M\u0415\13M\3M\3M\3M\7M\u041a\nM\f") - buf.write("M\16M\u041d\13M\5M\u041f\nM\3N\7N\u0422\nN\fN\16N\u0425") - buf.write("\13N\3N\3N\3N\3O\3O\5O\u042c\nO\3P\7P\u042f\nP\fP\16P") - buf.write("\u0432\13P\3P\3P\7P\u0436\nP\fP\16P\u0439\13P\3P\3P\3") - buf.write("P\3P\5P\u043f\nP\3Q\7Q\u0442\nQ\fQ\16Q\u0445\13Q\3Q\3") - buf.write("Q\3Q\5Q\u044a\nQ\3Q\3Q\3R\3R\3R\3S\3S\3S\7S\u0454\nS\f") - buf.write("S\16S\u0457\13S\3T\3T\5T\u045b\nT\3U\3U\5U\u045f\nU\3") - buf.write("V\3V\3W\3W\3W\3X\7X\u0467\nX\fX\16X\u046a\13X\3X\3X\5") - buf.write("X\u046e\nX\3X\3X\3Y\3Y\3Y\3Y\5Y\u0476\nY\3Z\5Z\u0479\n") - buf.write("Z\3Z\3Z\3Z\5Z\u047e\nZ\3Z\3Z\3[\3[\3\\\3\\\5\\\u0486\n") - buf.write("\\\3\\\5\\\u0489\n\\\3\\\3\\\3]\5]\u048e\n]\3]\3]\3]\5") - buf.write("]\u0493\n]\3]\3]\3]\5]\u0498\n]\3]\3]\3]\5]\u049d\n]\3") - buf.write("]\3]\3]\3]\3]\5]\u04a4\n]\3]\3]\3]\5]\u04a9\n]\3]\3]\3") - buf.write("]\3]\3]\3]\5]\u04b1\n]\3]\3]\3]\5]\u04b6\n]\3]\3]\3]\5") - buf.write("]\u04bb\n]\3^\7^\u04be\n^\f^\16^\u04c1\13^\3^\3^\3^\5") - buf.write("^\u04c6\n^\3^\3^\3_\3_\5_\u04cc\n_\3_\5_\u04cf\n_\3_\5") - buf.write("_\u04d2\n_\3_\3_\3`\3`\3`\7`\u04d9\n`\f`\16`\u04dc\13") - buf.write("`\3a\7a\u04df\na\fa\16a\u04e2\13a\3a\3a\3a\5a\u04e7\n") - buf.write("a\3a\5a\u04ea\na\3a\5a\u04ed\na\3b\3b\3c\3c\7c\u04f3\n") - buf.write("c\fc\16c\u04f6\13c\3d\3d\5d\u04fa\nd\3e\7e\u04fd\ne\f") - buf.write("e\16e\u0500\13e\3e\3e\3e\5e\u0505\ne\3e\5e\u0508\ne\3") - buf.write("e\3e\3f\3f\3f\3f\3f\3f\3f\5f\u0513\nf\3g\3g\3g\3h\3h\7") - buf.write("h\u051a\nh\fh\16h\u051d\13h\3h\3h\3i\3i\3i\3i\3i\5i\u0526") - buf.write("\ni\3j\7j\u0529\nj\fj\16j\u052c\13j\3j\3j\3j\3j\3k\3k") - buf.write("\3k\3k\5k\u0536\nk\3l\7l\u0539\nl\fl\16l\u053c\13l\3l") - buf.write("\3l\3l\3m\3m\3m\3m\3m\3m\5m\u0547\nm\3n\7n\u054a\nn\f") - buf.write("n\16n\u054d\13n\3n\3n\3n\3n\3n\3o\3o\7o\u0556\no\fo\16") - buf.write("o\u0559\13o\3o\3o\3p\3p\3p\3p\3p\5p\u0562\np\3q\7q\u0565") - buf.write("\nq\fq\16q\u0568\13q\3q\3q\3q\3q\3q\5q\u056f\nq\3q\5q") - buf.write("\u0572\nq\3q\3q\3r\3r\3r\5r\u0579\nr\3s\3s\3s\3t\3t\3") - buf.write("t\5t\u0581\nt\3u\3u\3u\3u\5u\u0587\nu\3u\3u\3v\3v\3v\7") - buf.write("v\u058e\nv\fv\16v\u0591\13v\3w\3w\3w\3w\3x\3x\3x\5x\u059a") - buf.write("\nx\3y\3y\5y\u059e\ny\3y\5y\u05a1\ny\3y\3y\3z\3z\3z\7") - buf.write("z\u05a8\nz\fz\16z\u05ab\13z\3{\3{\3{\3|\3|\3|\3|\3|\3") - buf.write("|\3}\3}\5}\u05b8\n}\3}\5}\u05bb\n}\3}\3}\3~\3~\3~\7~\u05c2") - buf.write("\n~\f~\16~\u05c5\13~\3\177\3\177\5\177\u05c9\n\177\3\177") - buf.write("\3\177\3\u0080\6\u0080\u05ce\n\u0080\r\u0080\16\u0080") - buf.write("\u05cf\3\u0081\3\u0081\3\u0081\5\u0081\u05d5\n\u0081\3") - buf.write("\u0082\3\u0082\3\u0082\3\u0083\7\u0083\u05db\n\u0083\f") - buf.write("\u0083\16\u0083\u05de\13\u0083\3\u0083\3\u0083\3\u0083") - buf.write("\3\u0084\3\u0084\3\u0084\3\u0084\3\u0084\3\u0084\5\u0084") - buf.write("\u05e9\n\u0084\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085") - buf.write("\5\u0085\u05f0\n\u0085\3\u0086\3\u0086\3\u0086\3\u0086") - buf.write("\3\u0086\3\u0086\3\u0086\3\u0086\3\u0086\3\u0086\3\u0086") - buf.write("\3\u0086\5\u0086\u05fe\n\u0086\3\u0087\3\u0087\3\u0088") - buf.write("\3\u0088\3\u0088\3\u0088\3\u0089\3\u0089\3\u0089\3\u0089") - buf.write("\3\u008a\3\u008a\3\u008a\3\u008b\3\u008b\3\u008b\3\u008b") - buf.write("\3\u008b\3\u008b\3\u008b\5\u008b\u0614\n\u008b\3\u008c") - buf.write("\3\u008c\3\u008c\3\u008c\3\u008c\3\u008c\3\u008d\3\u008d") - buf.write("\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d\3\u008e") - buf.write("\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e") - buf.write("\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f") - buf.write("\3\u008f\3\u008f\3\u008f\5\u008f\u0636\n\u008f\3\u0090") - buf.write("\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0091\3\u0091") - buf.write("\7\u0091\u0640\n\u0091\f\u0091\16\u0091\u0643\13\u0091") - buf.write("\3\u0091\7\u0091\u0646\n\u0091\f\u0091\16\u0091\u0649") - buf.write("\13\u0091\3\u0091\3\u0091\3\u0092\3\u0092\3\u0092\3\u0093") - buf.write("\3\u0093\7\u0093\u0652\n\u0093\f\u0093\16\u0093\u0655") - buf.write("\13\u0093\3\u0094\3\u0094\3\u0094\3\u0094\3\u0094\3\u0094") - buf.write("\3\u0094\3\u0094\3\u0094\3\u0094\5\u0094\u0661\n\u0094") - buf.write("\3\u0095\3\u0095\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096") - buf.write("\3\u0096\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097") - buf.write("\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098") - buf.write("\3\u0098\3\u0099\3\u0099\5\u0099\u067b\n\u0099\3\u009a") - buf.write("\3\u009a\5\u009a\u067f\n\u009a\3\u009b\3\u009b\3\u009b") - buf.write("\5\u009b\u0684\n\u009b\3\u009b\3\u009b\5\u009b\u0688\n") - buf.write("\u009b\3\u009b\3\u009b\5\u009b\u068c\n\u009b\3\u009b\3") - buf.write("\u009b\3\u009b\3\u009c\3\u009c\3\u009c\5\u009c\u0694\n") - buf.write("\u009c\3\u009c\3\u009c\5\u009c\u0698\n\u009c\3\u009c\3") - buf.write("\u009c\5\u009c\u069c\n\u009c\3\u009c\3\u009c\3\u009c\3") - buf.write("\u009d\3\u009d\5\u009d\u06a3\n\u009d\3\u009e\3\u009e\3") - buf.write("\u009f\3\u009f\3\u009f\7\u009f\u06aa\n\u009f\f\u009f\16") - buf.write("\u009f\u06ad\13\u009f\3\u00a0\3\u00a0\3\u00a0\7\u00a0") - buf.write("\u06b2\n\u00a0\f\u00a0\16\u00a0\u06b5\13\u00a0\3\u00a0") - buf.write("\3\u00a0\3\u00a0\3\u00a0\3\u00a0\3\u00a0\3\u00a0\3\u00a1") - buf.write("\3\u00a1\3\u00a1\7\u00a1\u06c1\n\u00a1\f\u00a1\16\u00a1") - buf.write("\u06c4\13\u00a1\3\u00a1\3\u00a1\3\u00a1\3\u00a1\3\u00a1") - buf.write("\3\u00a1\3\u00a1\3\u00a2\3\u00a2\5\u00a2\u06cf\n\u00a2") - buf.write("\3\u00a2\3\u00a2\3\u00a3\3\u00a3\5\u00a3\u06d5\n\u00a3") - buf.write("\3\u00a3\3\u00a3\3\u00a4\3\u00a4\5\u00a4\u06db\n\u00a4") - buf.write("\3\u00a4\3\u00a4\3\u00a5\3\u00a5\3\u00a5\3\u00a5\3\u00a6") - buf.write("\3\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a7\3\u00a7") - buf.write("\3\u00a7\3\u00a7\3\u00a7\3\u00a7\3\u00a7\5\u00a7\u06f0") - buf.write("\n\u00a7\3\u00a7\3\u00a7\3\u00a7\5\u00a7\u06f5\n\u00a7") - buf.write("\3\u00a8\3\u00a8\7\u00a8\u06f9\n\u00a8\f\u00a8\16\u00a8") - buf.write("\u06fc\13\u00a8\3\u00a9\3\u00a9\3\u00a9\3\u00a9\3\u00a9") - buf.write("\3\u00a9\3\u00aa\7\u00aa\u0705\n\u00aa\f\u00aa\16\u00aa") - buf.write("\u0708\13\u00aa\3\u00aa\3\u00aa\3\u00aa\3\u00ab\3\u00ab") - buf.write("\3\u00ab\7\u00ab\u0710\n\u00ab\f\u00ab\16\u00ab\u0713") - buf.write("\13\u00ab\3\u00ac\3\u00ac\3\u00ac\3\u00ad\3\u00ad\3\u00ad") - buf.write("\3\u00ad\5\u00ad\u071c\n\u00ad\3\u00ad\5\u00ad\u071f\n") - buf.write("\u00ad\3\u00ae\3\u00ae\3\u00ae\5\u00ae\u0724\n\u00ae\3") - buf.write("\u00ae\3\u00ae\3\u00af\3\u00af\3\u00af\7\u00af\u072b\n") - buf.write("\u00af\f\u00af\16\u00af\u072e\13\u00af\3\u00b0\7\u00b0") - buf.write("\u0731\n\u00b0\f\u00b0\16\u00b0\u0734\13\u00b0\3\u00b0") - buf.write("\3\u00b0\3\u00b0\3\u00b0\3\u00b0\3\u00b1\3\u00b1\5\u00b1") - buf.write("\u073d\n\u00b1\3\u00b1\7\u00b1\u0740\n\u00b1\f\u00b1\16") - buf.write("\u00b1\u0743\13\u00b1\3\u00b2\3\u00b2\3\u00b2\3\u00b2") - buf.write("\7\u00b2\u0749\n\u00b2\f\u00b2\16\u00b2\u074c\13\u00b2") - buf.write("\3\u00b2\3\u00b2\3\u00b2\3\u00b2\3\u00b2\3\u00b2\3\u00b2") - buf.write("\3\u00b2\3\u00b2\3\u00b2\3\u00b2\3\u00b2\3\u00b2\3\u00b2") - buf.write("\3\u00b2\3\u00b2\3\u00b2\3\u00b2\3\u00b2\3\u00b2\5\u00b2") - buf.write("\u0762\n\u00b2\3\u00b3\3\u00b3\3\u00b4\3\u00b4\3\u00b4") - buf.write("\3\u00b4\7\u00b4\u076a\n\u00b4\f\u00b4\16\u00b4\u076d") - buf.write("\13\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4") - buf.write("\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4") - buf.write("\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\5\u00b4") - buf.write("\u0782\n\u00b4\3\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b5") - buf.write("\5\u00b5\u0789\n\u00b5\3\u00b6\3\u00b6\3\u00b7\3\u00b7") - buf.write("\3\u00b7\3\u00b7\5\u00b7\u0791\n\u00b7\3\u00b8\3\u00b8") - buf.write("\3\u00b8\3\u00b8\7\u00b8\u0797\n\u00b8\f\u00b8\16\u00b8") - buf.write("\u079a\13\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8") - buf.write("\3\u00b8\7\u00b8\u07a2\n\u00b8\f\u00b8\16\u00b8\u07a5") - buf.write("\13\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8") - buf.write("\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8") - buf.write("\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8\3\u00b8") - buf.write("\5\u00b8\u07bb\n\u00b8\3\u00b9\3\u00b9\3\u00ba\3\u00ba") - buf.write("\3\u00ba\3\u00ba\7\u00ba\u07c3\n\u00ba\f\u00ba\16\u00ba") - buf.write("\u07c6\13\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba") - buf.write("\3\u00ba\7\u00ba\u07ce\n\u00ba\f\u00ba\16\u00ba\u07d1") - buf.write("\13\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba") - buf.write("\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba") - buf.write("\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\5\u00ba") - buf.write("\u07e6\n\u00ba\3\u00bb\3\u00bb\5\u00bb\u07ea\n\u00bb\3") - buf.write("\u00bb\7\u00bb\u07ed\n\u00bb\f\u00bb\16\u00bb\u07f0\13") - buf.write("\u00bb\3\u00bb\3\u00bb\3\u00bb\7\u00bb\u07f5\n\u00bb\f") - buf.write("\u00bb\16\u00bb\u07f8\13\u00bb\3\u00bb\7\u00bb\u07fb\n") - buf.write("\u00bb\f\u00bb\16\u00bb\u07fe\13\u00bb\3\u00bb\5\u00bb") - buf.write("\u0801\n\u00bb\3\u00bb\3\u00bb\5\u00bb\u0805\n\u00bb\3") - buf.write("\u00bb\3\u00bb\5\u00bb\u0809\n\u00bb\3\u00bb\3\u00bb\3") - buf.write("\u00bb\3\u00bb\5\u00bb\u080f\n\u00bb\3\u00bb\7\u00bb\u0812") - buf.write("\n\u00bb\f\u00bb\16\u00bb\u0815\13\u00bb\3\u00bb\3\u00bb") - buf.write("\5\u00bb\u0819\n\u00bb\3\u00bb\3\u00bb\5\u00bb\u081d\n") - buf.write("\u00bb\3\u00bb\3\u00bb\5\u00bb\u0821\n\u00bb\3\u00bb\3") - buf.write("\u00bb\3\u00bb\3\u00bb\5\u00bb\u0827\n\u00bb\3\u00bb\7") - buf.write("\u00bb\u082a\n\u00bb\f\u00bb\16\u00bb\u082d\13\u00bb\3") - buf.write("\u00bb\3\u00bb\5\u00bb\u0831\n\u00bb\3\u00bb\3\u00bb\5") - buf.write("\u00bb\u0835\n\u00bb\3\u00bb\3\u00bb\5\u00bb\u0839\n\u00bb") - buf.write("\5\u00bb\u083b\n\u00bb\3\u00bc\3\u00bc\3\u00bc\5\u00bc") - buf.write("\u0840\n\u00bc\3\u00bc\7\u00bc\u0843\n\u00bc\f\u00bc\16") - buf.write("\u00bc\u0846\13\u00bc\3\u00bc\3\u00bc\5\u00bc\u084a\n") - buf.write("\u00bc\3\u00bc\3\u00bc\5\u00bc\u084e\n\u00bc\3\u00bc\3") - buf.write("\u00bc\5\u00bc\u0852\n\u00bc\3\u00bd\3\u00bd\5\u00bd\u0856") - buf.write("\n\u00bd\3\u00bd\7\u00bd\u0859\n\u00bd\f\u00bd\16\u00bd") - buf.write("\u085c\13\u00bd\3\u00bd\3\u00bd\3\u00bd\7\u00bd\u0861") - buf.write("\n\u00bd\f\u00bd\16\u00bd\u0864\13\u00bd\3\u00bd\7\u00bd") - buf.write("\u0867\n\u00bd\f\u00bd\16\u00bd\u086a\13\u00bd\3\u00bd") - buf.write("\5\u00bd\u086d\n\u00bd\3\u00bd\3\u00bd\5\u00bd\u0871\n") - buf.write("\u00bd\3\u00bd\3\u00bd\5\u00bd\u0875\n\u00bd\3\u00bd\3") - buf.write("\u00bd\3\u00bd\3\u00bd\5\u00bd\u087b\n\u00bd\3\u00bd\7") - buf.write("\u00bd\u087e\n\u00bd\f\u00bd\16\u00bd\u0881\13\u00bd\3") - buf.write("\u00bd\3\u00bd\5\u00bd\u0885\n\u00bd\3\u00bd\3\u00bd\5") - buf.write("\u00bd\u0889\n\u00bd\3\u00bd\3\u00bd\5\u00bd\u088d\n\u00bd") - buf.write("\5\u00bd\u088f\n\u00bd\3\u00be\3\u00be\3\u00be\5\u00be") - buf.write("\u0894\n\u00be\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf") - buf.write("\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf") - buf.write("\3\u00bf\5\u00bf\u08a3\n\u00bf\3\u00c0\3\u00c0\3\u00c0") - buf.write("\3\u00c1\3\u00c1\3\u00c1\3\u00c1\3\u00c1\3\u00c1\3\u00c1") - buf.write("\3\u00c1\3\u00c1\5\u00c1\u08b1\n\u00c1\3\u00c2\3\u00c2") - buf.write("\3\u00c2\3\u00c2\3\u00c2\3\u00c2\3\u00c2\3\u00c2\3\u00c2") - buf.write("\3\u00c2\5\u00c2\u08bd\n\u00c2\3\u00c2\3\u00c2\3\u00c2") - buf.write("\3\u00c2\3\u00c2\7\u00c2\u08c4\n\u00c2\f\u00c2\16\u00c2") - buf.write("\u08c7\13\u00c2\3\u00c3\3\u00c3\3\u00c3\3\u00c3\3\u00c3") - buf.write("\3\u00c3\3\u00c3\3\u00c3\3\u00c3\3\u00c3\7\u00c3\u08d3") - buf.write("\n\u00c3\f\u00c3\16\u00c3\u08d6\13\u00c3\3\u00c4\3\u00c4") - buf.write("\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4") - buf.write("\3\u00c4\5\u00c4\u08e2\n\u00c4\3\u00c4\3\u00c4\3\u00c4") - buf.write("\3\u00c4\3\u00c4\7\u00c4\u08e9\n\u00c4\f\u00c4\16\u00c4") - buf.write("\u08ec\13\u00c4\3\u00c5\3\u00c5\3\u00c5\5\u00c5\u08f1") - buf.write("\n\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\5\u00c5") - buf.write("\u08f8\n\u00c5\3\u00c5\3\u00c5\3\u00c5\5\u00c5\u08fd\n") - buf.write("\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\5\u00c5") - buf.write("\u0904\n\u00c5\3\u00c5\3\u00c5\3\u00c5\5\u00c5\u0909\n") - buf.write("\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\5\u00c5") - buf.write("\u0910\n\u00c5\3\u00c5\3\u00c5\3\u00c5\5\u00c5\u0915\n") - buf.write("\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\5\u00c5") - buf.write("\u091c\n\u00c5\3\u00c5\3\u00c5\3\u00c5\5\u00c5\u0921\n") - buf.write("\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5") - buf.write("\5\u00c5\u0929\n\u00c5\3\u00c5\3\u00c5\3\u00c5\5\u00c5") - buf.write("\u092e\n\u00c5\3\u00c5\3\u00c5\5\u00c5\u0932\n\u00c5\3") - buf.write("\u00c6\3\u00c6\5\u00c6\u0936\n\u00c6\3\u00c6\3\u00c6\3") - buf.write("\u00c6\5\u00c6\u093b\n\u00c6\3\u00c6\3\u00c6\3\u00c7\3") - buf.write("\u00c7\3\u00c7\5\u00c7\u0942\n\u00c7\3\u00c7\3\u00c7\3") - buf.write("\u00c7\3\u00c7\3\u00c7\5\u00c7\u0949\n\u00c7\3\u00c7\3") - buf.write("\u00c7\3\u00c7\5\u00c7\u094e\n\u00c7\3\u00c7\3\u00c7\3") - buf.write("\u00c7\3\u00c7\3\u00c7\5\u00c7\u0955\n\u00c7\3\u00c7\3") - buf.write("\u00c7\3\u00c7\5\u00c7\u095a\n\u00c7\3\u00c7\3\u00c7\3") - buf.write("\u00c7\3\u00c7\3\u00c7\5\u00c7\u0961\n\u00c7\3\u00c7\3") - buf.write("\u00c7\3\u00c7\5\u00c7\u0966\n\u00c7\3\u00c7\3\u00c7\3") - buf.write("\u00c7\3\u00c7\3\u00c7\3\u00c7\5\u00c7\u096e\n\u00c7\3") - buf.write("\u00c7\3\u00c7\3\u00c7\5\u00c7\u0973\n\u00c7\3\u00c7\3") - buf.write("\u00c7\5\u00c7\u0977\n\u00c7\3\u00c8\3\u00c8\3\u00c8\7") - buf.write("\u00c8\u097c\n\u00c8\f\u00c8\16\u00c8\u097f\13\u00c8\3") - buf.write("\u00c9\3\u00c9\3\u00c9\5\u00c9\u0984\n\u00c9\3\u00c9\3") - buf.write("\u00c9\3\u00c9\3\u00c9\3\u00c9\5\u00c9\u098b\n\u00c9\3") - buf.write("\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\5\u00c9\u0992\n") - buf.write("\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\5\u00c9") - buf.write("\u0999\n\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9") - buf.write("\3\u00c9\5\u00c9\u09a1\n\u00c9\3\u00c9\3\u00c9\3\u00c9") - buf.write("\3\u00c9\3\u00c9\5\u00c9\u09a8\n\u00c9\3\u00c9\3\u00c9") - buf.write("\3\u00c9\3\u00c9\3\u00c9\3\u00c9\5\u00c9\u09b0\n\u00c9") - buf.write("\3\u00ca\3\u00ca\5\u00ca\u09b4\n\u00ca\3\u00ca\3\u00ca") - buf.write("\3\u00cb\3\u00cb\3\u00cb\5\u00cb\u09bb\n\u00cb\3\u00cb") - buf.write("\3\u00cb\3\u00cb\3\u00cb\3\u00cb\5\u00cb\u09c2\n\u00cb") - buf.write("\3\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb\5\u00cb\u09c9") - buf.write("\n\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb") - buf.write("\5\u00cb\u09d1\n\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb") - buf.write("\3\u00cb\5\u00cb\u09d8\n\u00cb\3\u00cb\3\u00cb\3\u00cb") - buf.write("\3\u00cb\3\u00cb\3\u00cb\5\u00cb\u09e0\n\u00cb\3\u00cc") - buf.write("\3\u00cc\3\u00cc\3\u00cc\5\u00cc\u09e6\n\u00cc\3\u00cc") - buf.write("\3\u00cc\3\u00cc\3\u00cc\5\u00cc\u09ec\n\u00cc\3\u00cc") - buf.write("\3\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc") - buf.write("\3\u00cc\3\u00cc\5\u00cc\u09f8\n\u00cc\3\u00cd\3\u00cd") - buf.write("\7\u00cd\u09fc\n\u00cd\f\u00cd\16\u00cd\u09ff\13\u00cd") - buf.write("\3\u00ce\7\u00ce\u0a02\n\u00ce\f\u00ce\16\u00ce\u0a05") - buf.write("\13\u00ce\3\u00ce\3\u00ce\3\u00ce\3\u00ce\3\u00cf\3\u00cf") - buf.write("\3\u00d0\3\u00d0\5\u00d0\u0a0f\n\u00d0\3\u00d1\3\u00d1") - buf.write("\3\u00d1\3\u00d1\3\u00d2\3\u00d2\3\u00d2\5\u00d2\u0a18") - buf.write("\n\u00d2\3\u00d2\3\u00d2\3\u00d2\3\u00d2\3\u00d2\5\u00d2") - buf.write("\u0a1f\n\u00d2\3\u00d3\3\u00d3\3\u00d3\7\u00d3\u0a24\n") - buf.write("\u00d3\f\u00d3\16\u00d3\u0a27\13\u00d3\3\u00d4\3\u00d4") - buf.write("\5\u00d4\u0a2b\n\u00d4\3\u00d5\3\u00d5\5\u00d5\u0a2f\n") - buf.write("\u00d5\3\u00d6\3\u00d6\3\u00d6\3\u00d6\3\u00d7\3\u00d7") - buf.write("\3\u00d7\5\u00d7\u0a38\n\u00d7\3\u00d8\3\u00d8\3\u00d9") - buf.write("\3\u00d9\3\u00d9\3\u00d9\3\u00d9\3\u00d9\3\u00d9\5\u00d9") - buf.write("\u0a43\n\u00d9\3\u00da\3\u00da\3\u00da\3\u00da\3\u00da") - buf.write("\3\u00da\7\u00da\u0a4b\n\u00da\f\u00da\16\u00da\u0a4e") - buf.write("\13\u00da\3\u00db\3\u00db\3\u00db\3\u00db\3\u00db\3\u00db") - buf.write("\7\u00db\u0a56\n\u00db\f\u00db\16\u00db\u0a59\13\u00db") - buf.write("\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dc\7\u00dc") - buf.write("\u0a61\n\u00dc\f\u00dc\16\u00dc\u0a64\13\u00dc\3\u00dd") - buf.write("\3\u00dd\3\u00dd\3\u00dd\3\u00dd\3\u00dd\7\u00dd\u0a6c") - buf.write("\n\u00dd\f\u00dd\16\u00dd\u0a6f\13\u00dd\3\u00de\3\u00de") - buf.write("\3\u00de\3\u00de\3\u00de\3\u00de\7\u00de\u0a77\n\u00de") - buf.write("\f\u00de\16\u00de\u0a7a\13\u00de\3\u00df\3\u00df\3\u00df") - buf.write("\3\u00df\3\u00df\3\u00df\3\u00df\3\u00df\3\u00df\7\u00df") - buf.write("\u0a85\n\u00df\f\u00df\16\u00df\u0a88\13\u00df\3\u00e0") - buf.write("\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0") - buf.write("\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0") - buf.write("\3\u00e0\3\u00e0\3\u00e0\7\u00e0\u0a9c\n\u00e0\f\u00e0") - buf.write("\16\u00e0\u0a9f\13\u00e0\3\u00e1\3\u00e1\3\u00e1\3\u00e1") - buf.write("\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1") - buf.write("\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1\7\u00e1\u0ab1") - buf.write("\n\u00e1\f\u00e1\16\u00e1\u0ab4\13\u00e1\3\u00e2\3\u00e2") - buf.write("\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2") - buf.write("\7\u00e2\u0abf\n\u00e2\f\u00e2\16\u00e2\u0ac2\13\u00e2") - buf.write("\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3") - buf.write("\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3\7\u00e3\u0ad0") - buf.write("\n\u00e3\f\u00e3\16\u00e3\u0ad3\13\u00e3\3\u00e4\3\u00e4") - buf.write("\3\u00e4\3\u00e4\3\u00e4\3\u00e4\3\u00e4\5\u00e4\u0adc") - buf.write("\n\u00e4\3\u00e5\3\u00e5\3\u00e5\3\u00e6\3\u00e6\3\u00e6") - buf.write("\3\u00e7\3\u00e7\3\u00e7\3\u00e7\3\u00e7\3\u00e7\5\u00e7") - buf.write("\u0aea\n\u00e7\3\u00e8\3\u00e8\5\u00e8\u0aee\n\u00e8\3") - buf.write("\u00e8\3\u00e8\7\u00e8\u0af2\n\u00e8\f\u00e8\16\u00e8") - buf.write("\u0af5\13\u00e8\3\u00e9\3\u00e9\3\u00e9\3\u00ea\3\u00ea") - buf.write("\3\u00eb\3\u00eb\3\u00eb\3\u00ec\3\u00ec\3\u00ed\3\u00ed") - buf.write("\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed\7\u00ed") - buf.write("\u0b09\n\u00ed\f\u00ed\16\u00ed\u0b0c\13\u00ed\3\u00ed") - buf.write("\3\u00ed\3\u00ed\3\u00ed\3\u00ed\3\u00ed\7\u00ed\u0b14") - buf.write("\n\u00ed\f\u00ed\16\u00ed\u0b17\13\u00ed\3\u00ed\3\u00ed") - buf.write("\3\u00ed\5\u00ed\u0b1c\n\u00ed\3\u00ed\2\17\648>\u01b2") - buf.write("\u01b4\u01b6\u01b8\u01ba\u01bc\u01be\u01c0\u01c2\u01c4") - buf.write("\u00ee\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,") - buf.write(".\60\62\64\668:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080") - buf.write("\u0082\u0084\u0086\u0088\u008a\u008c\u008e\u0090\u0092") - buf.write("\u0094\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2\u00a4") - buf.write("\u00a6\u00a8\u00aa\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6") - buf.write("\u00b8\u00ba\u00bc\u00be\u00c0\u00c2\u00c4\u00c6\u00c8") - buf.write("\u00ca\u00cc\u00ce\u00d0\u00d2\u00d4\u00d6\u00d8\u00da") - buf.write("\u00dc\u00de\u00e0\u00e2\u00e4\u00e6\u00e8\u00ea\u00ec") - buf.write("\u00ee\u00f0\u00f2\u00f4\u00f6\u00f8\u00fa\u00fc\u00fe") - buf.write("\u0100\u0102\u0104\u0106\u0108\u010a\u010c\u010e\u0110") - buf.write("\u0112\u0114\u0116\u0118\u011a\u011c\u011e\u0120\u0122") - buf.write("\u0124\u0126\u0128\u012a\u012c\u012e\u0130\u0132\u0134") - buf.write("\u0136\u0138\u013a\u013c\u013e\u0140\u0142\u0144\u0146") - buf.write("\u0148\u014a\u014c\u014e\u0150\u0152\u0154\u0156\u0158") - buf.write("\u015a\u015c\u015e\u0160\u0162\u0164\u0166\u0168\u016a") - buf.write("\u016c\u016e\u0170\u0172\u0174\u0176\u0178\u017a\u017c") - buf.write("\u017e\u0180\u0182\u0184\u0186\u0188\u018a\u018c\u018e") - buf.write("\u0190\u0192\u0194\u0196\u0198\u019a\u019c\u019e\u01a0") - buf.write("\u01a2\u01a4\u01a6\u01a8\u01aa\u01ac\u01ae\u01b0\u01b2") - buf.write("\u01b4\u01b6\u01b8\u01ba\u01bc\u01be\u01c0\u01c2\u01c4") - buf.write("\u01c6\u01c8\u01ca\u01cc\u01ce\u01d0\u01d2\u01d4\u01d6") - buf.write("\u01d8\2\6\3\2\65:\7\2\7\7\n\n\35\35\37\37\'\'\4\2\20") - buf.write("\20\26\26\4\2DD]g\2\u0c0f\2\u01da\3\2\2\2\4\u01ea\3\2") - buf.write("\2\2\6\u01ee\3\2\2\2\b\u01f0\3\2\2\2\n\u01f2\3\2\2\2\f") - buf.write("\u01f7\3\2\2\2\16\u01fb\3\2\2\2\20\u021a\3\2\2\2\22\u021c") - buf.write("\3\2\2\2\24\u022a\3\2\2\2\26\u0231\3\2\2\2\30\u0233\3") - buf.write("\2\2\2\32\u0235\3\2\2\2\34\u023a\3\2\2\2\36\u0248\3\2") - buf.write("\2\2 \u024d\3\2\2\2\"\u0262\3\2\2\2$\u0269\3\2\2\2&\u0275") - buf.write("\3\2\2\2(\u0277\3\2\2\2*\u027a\3\2\2\2,\u027e\3\2\2\2") - buf.write(".\u0288\3\2\2\2\60\u028d\3\2\2\2\62\u0298\3\2\2\2\64\u029a") - buf.write("\3\2\2\2\66\u02aa\3\2\2\28\u02ac\3\2\2\2:\u02bc\3\2\2") - buf.write("\2<\u02be\3\2\2\2>\u02c0\3\2\2\2@\u02cc\3\2\2\2B\u02df") - buf.write("\3\2\2\2D\u02e6\3\2\2\2F\u02ec\3\2\2\2H\u02ee\3\2\2\2") - buf.write("J\u02f2\3\2\2\2L\u02f8\3\2\2\2N\u02ff\3\2\2\2P\u0309\3") - buf.write("\2\2\2R\u030d\3\2\2\2T\u0312\3\2\2\2V\u032a\3\2\2\2X\u032c") - buf.write("\3\2\2\2Z\u0330\3\2\2\2\\\u0338\3\2\2\2^\u033b\3\2\2\2") - buf.write("`\u033e\3\2\2\2b\u0346\3\2\2\2d\u0353\3\2\2\2f\u035a\3") - buf.write("\2\2\2h\u035f\3\2\2\2j\u036e\3\2\2\2l\u0370\3\2\2\2n\u0378") - buf.write("\3\2\2\2p\u037d\3\2\2\2r\u0383\3\2\2\2t\u0387\3\2\2\2") - buf.write("v\u038b\3\2\2\2x\u0390\3\2\2\2z\u0394\3\2\2\2|\u03ad\3") - buf.write("\2\2\2~\u03af\3\2\2\2\u0080\u03ba\3\2\2\2\u0082\u03be") - buf.write("\3\2\2\2\u0084\u03c0\3\2\2\2\u0086\u03c2\3\2\2\2\u0088") - buf.write("\u03c4\3\2\2\2\u008a\u03cf\3\2\2\2\u008c\u03d4\3\2\2\2") - buf.write("\u008e\u03e4\3\2\2\2\u0090\u03f7\3\2\2\2\u0092\u03fb\3") - buf.write("\2\2\2\u0094\u03fd\3\2\2\2\u0096\u040c\3\2\2\2\u0098\u041e") - buf.write("\3\2\2\2\u009a\u0423\3\2\2\2\u009c\u042b\3\2\2\2\u009e") - buf.write("\u043e\3\2\2\2\u00a0\u0443\3\2\2\2\u00a2\u044d\3\2\2\2") - buf.write("\u00a4\u0450\3\2\2\2\u00a6\u045a\3\2\2\2\u00a8\u045e\3") - buf.write("\2\2\2\u00aa\u0460\3\2\2\2\u00ac\u0462\3\2\2\2\u00ae\u0468") - buf.write("\3\2\2\2\u00b0\u0475\3\2\2\2\u00b2\u0478\3\2\2\2\u00b4") - buf.write("\u0481\3\2\2\2\u00b6\u0483\3\2\2\2\u00b8\u04ba\3\2\2\2") - buf.write("\u00ba\u04bf\3\2\2\2\u00bc\u04c9\3\2\2\2\u00be\u04d5\3") - buf.write("\2\2\2\u00c0\u04e0\3\2\2\2\u00c2\u04ee\3\2\2\2\u00c4\u04f0") - buf.write("\3\2\2\2\u00c6\u04f9\3\2\2\2\u00c8\u04fe\3\2\2\2\u00ca") - buf.write("\u0512\3\2\2\2\u00cc\u0514\3\2\2\2\u00ce\u0517\3\2\2\2") - buf.write("\u00d0\u0525\3\2\2\2\u00d2\u052a\3\2\2\2\u00d4\u0535\3") - buf.write("\2\2\2\u00d6\u053a\3\2\2\2\u00d8\u0546\3\2\2\2\u00da\u054b") - buf.write("\3\2\2\2\u00dc\u0553\3\2\2\2\u00de\u0561\3\2\2\2\u00e0") - buf.write("\u0566\3\2\2\2\u00e2\u0578\3\2\2\2\u00e4\u057a\3\2\2\2") - buf.write("\u00e6\u0580\3\2\2\2\u00e8\u0582\3\2\2\2\u00ea\u058a\3") - buf.write("\2\2\2\u00ec\u0592\3\2\2\2\u00ee\u0599\3\2\2\2\u00f0\u059b") - buf.write("\3\2\2\2\u00f2\u05a4\3\2\2\2\u00f4\u05ac\3\2\2\2\u00f6") - buf.write("\u05af\3\2\2\2\u00f8\u05b5\3\2\2\2\u00fa\u05be\3\2\2\2") - buf.write("\u00fc\u05c6\3\2\2\2\u00fe\u05cd\3\2\2\2\u0100\u05d4\3") - buf.write("\2\2\2\u0102\u05d6\3\2\2\2\u0104\u05dc\3\2\2\2\u0106\u05e8") - buf.write("\3\2\2\2\u0108\u05ef\3\2\2\2\u010a\u05fd\3\2\2\2\u010c") - buf.write("\u05ff\3\2\2\2\u010e\u0601\3\2\2\2\u0110\u0605\3\2\2\2") - buf.write("\u0112\u0609\3\2\2\2\u0114\u0613\3\2\2\2\u0116\u0615\3") - buf.write("\2\2\2\u0118\u061b\3\2\2\2\u011a\u0623\3\2\2\2\u011c\u0635") - buf.write("\3\2\2\2\u011e\u0637\3\2\2\2\u0120\u063d\3\2\2\2\u0122") - buf.write("\u064c\3\2\2\2\u0124\u064f\3\2\2\2\u0126\u0660\3\2\2\2") - buf.write("\u0128\u0662\3\2\2\2\u012a\u0664\3\2\2\2\u012c\u066a\3") - buf.write("\2\2\2\u012e\u0670\3\2\2\2\u0130\u067a\3\2\2\2\u0132\u067e") - buf.write("\3\2\2\2\u0134\u0680\3\2\2\2\u0136\u0690\3\2\2\2\u0138") - buf.write("\u06a2\3\2\2\2\u013a\u06a4\3\2\2\2\u013c\u06a6\3\2\2\2") - buf.write("\u013e\u06ae\3\2\2\2\u0140\u06bd\3\2\2\2\u0142\u06cc\3") - buf.write("\2\2\2\u0144\u06d2\3\2\2\2\u0146\u06d8\3\2\2\2\u0148\u06de") - buf.write("\3\2\2\2\u014a\u06e2\3\2\2\2\u014c\u06f4\3\2\2\2\u014e") - buf.write("\u06f6\3\2\2\2\u0150\u06fd\3\2\2\2\u0152\u0706\3\2\2\2") - buf.write("\u0154\u070c\3\2\2\2\u0156\u0714\3\2\2\2\u0158\u0717\3") - buf.write("\2\2\2\u015a\u0720\3\2\2\2\u015c\u0727\3\2\2\2\u015e\u0732") - buf.write("\3\2\2\2\u0160\u073c\3\2\2\2\u0162\u0761\3\2\2\2\u0164") - buf.write("\u0763\3\2\2\2\u0166\u0781\3\2\2\2\u0168\u0788\3\2\2\2") - buf.write("\u016a\u078a\3\2\2\2\u016c\u0790\3\2\2\2\u016e\u07ba\3") - buf.write("\2\2\2\u0170\u07bc\3\2\2\2\u0172\u07e5\3\2\2\2\u0174\u083a") - buf.write("\3\2\2\2\u0176\u083c\3\2\2\2\u0178\u088e\3\2\2\2\u017a") - buf.write("\u0893\3\2\2\2\u017c\u08a2\3\2\2\2\u017e\u08a4\3\2\2\2") - buf.write("\u0180\u08b0\3\2\2\2\u0182\u08bc\3\2\2\2\u0184\u08c8\3") - buf.write("\2\2\2\u0186\u08e1\3\2\2\2\u0188\u0931\3\2\2\2\u018a\u0933") - buf.write("\3\2\2\2\u018c\u0976\3\2\2\2\u018e\u0978\3\2\2\2\u0190") - buf.write("\u09af\3\2\2\2\u0192\u09b1\3\2\2\2\u0194\u09df\3\2\2\2") - buf.write("\u0196\u09f7\3\2\2\2\u0198\u09f9\3\2\2\2\u019a\u0a03\3") - buf.write("\2\2\2\u019c\u0a0a\3\2\2\2\u019e\u0a0e\3\2\2\2\u01a0\u0a10") - buf.write("\3\2\2\2\u01a2\u0a1e\3\2\2\2\u01a4\u0a20\3\2\2\2\u01a6") - buf.write("\u0a2a\3\2\2\2\u01a8\u0a2e\3\2\2\2\u01aa\u0a30\3\2\2\2") - buf.write("\u01ac\u0a37\3\2\2\2\u01ae\u0a39\3\2\2\2\u01b0\u0a42\3") - buf.write("\2\2\2\u01b2\u0a44\3\2\2\2\u01b4\u0a4f\3\2\2\2\u01b6\u0a5a") - buf.write("\3\2\2\2\u01b8\u0a65\3\2\2\2\u01ba\u0a70\3\2\2\2\u01bc") - buf.write("\u0a7b\3\2\2\2\u01be\u0a89\3\2\2\2\u01c0\u0aa0\3\2\2\2") - buf.write("\u01c2\u0ab5\3\2\2\2\u01c4\u0ac3\3\2\2\2\u01c6\u0adb\3") - buf.write("\2\2\2\u01c8\u0add\3\2\2\2\u01ca\u0ae0\3\2\2\2\u01cc\u0ae9") - buf.write("\3\2\2\2\u01ce\u0aed\3\2\2\2\u01d0\u0af6\3\2\2\2\u01d2") - buf.write("\u0af9\3\2\2\2\u01d4\u0afb\3\2\2\2\u01d6\u0afe\3\2\2\2") - buf.write("\u01d8\u0b1b\3\2\2\2\u01da\u01db\t\2\2\2\u01db\3\3\2\2") - buf.write("\2\u01dc\u01de\5\u00e6t\2\u01dd\u01dc\3\2\2\2\u01de\u01e1") - buf.write("\3\2\2\2\u01df\u01dd\3\2\2\2\u01df\u01e0\3\2\2\2\u01e0") - buf.write("\u01e2\3\2\2\2\u01e1\u01df\3\2\2\2\u01e2\u01eb\5\6\4\2") - buf.write("\u01e3\u01e5\5\u00e6t\2\u01e4\u01e3\3\2\2\2\u01e5\u01e8") - buf.write("\3\2\2\2\u01e6\u01e4\3\2\2\2\u01e6\u01e7\3\2\2\2\u01e7") - buf.write("\u01e9\3\2\2\2\u01e8\u01e6\3\2\2\2\u01e9\u01eb\7\5\2\2") - buf.write("\u01ea\u01df\3\2\2\2\u01ea\u01e6\3\2\2\2\u01eb\5\3\2\2") - buf.write("\2\u01ec\u01ef\5\b\5\2\u01ed\u01ef\5\n\6\2\u01ee\u01ec") - buf.write("\3\2\2\2\u01ee\u01ed\3\2\2\2\u01ef\7\3\2\2\2\u01f0\u01f1") - buf.write("\t\3\2\2\u01f1\t\3\2\2\2\u01f2\u01f3\t\4\2\2\u01f3\13") - buf.write("\3\2\2\2\u01f4\u01f8\5\16\b\2\u01f5\u01f8\5\34\17\2\u01f6") - buf.write("\u01f8\5\36\20\2\u01f7\u01f4\3\2\2\2\u01f7\u01f5\3\2\2") - buf.write("\2\u01f7\u01f6\3\2\2\2\u01f8\r\3\2\2\2\u01f9\u01fc\5\24") - buf.write("\13\2\u01fa\u01fc\5\32\16\2\u01fb\u01f9\3\2\2\2\u01fb") - buf.write("\u01fa\3\2\2\2\u01fc\u0201\3\2\2\2\u01fd\u0200\5\22\n") - buf.write("\2\u01fe\u0200\5\30\r\2\u01ff\u01fd\3\2\2\2\u01ff\u01fe") - buf.write("\3\2\2\2\u0200\u0203\3\2\2\2\u0201\u01ff\3\2\2\2\u0201") - buf.write("\u0202\3\2\2\2\u0202\17\3\2\2\2\u0203\u0201\3\2\2\2\u0204") - buf.write("\u0206\5\u00e6t\2\u0205\u0204\3\2\2\2\u0206\u0209\3\2") - buf.write("\2\2\u0207\u0205\3\2\2\2\u0207\u0208\3\2\2\2\u0208\u020a") - buf.write("\3\2\2\2\u0209\u0207\3\2\2\2\u020a\u020c\7h\2\2\u020b") - buf.write("\u020d\5*\26\2\u020c\u020b\3\2\2\2\u020c\u020d\3\2\2\2") - buf.write("\u020d\u021b\3\2\2\2\u020e\u020f\5\16\b\2\u020f\u0213") - buf.write("\7C\2\2\u0210\u0212\5\u00e6t\2\u0211\u0210\3\2\2\2\u0212") - buf.write("\u0215\3\2\2\2\u0213\u0211\3\2\2\2\u0213\u0214\3\2\2\2") - buf.write("\u0214\u0216\3\2\2\2\u0215\u0213\3\2\2\2\u0216\u0218\7") - buf.write("h\2\2\u0217\u0219\5*\26\2\u0218\u0217\3\2\2\2\u0218\u0219") - buf.write("\3\2\2\2\u0219\u021b\3\2\2\2\u021a\u0207\3\2\2\2\u021a") - buf.write("\u020e\3\2\2\2\u021b\21\3\2\2\2\u021c\u0220\7C\2\2\u021d") - buf.write("\u021f\5\u00e6t\2\u021e\u021d\3\2\2\2\u021f\u0222\3\2") - buf.write("\2\2\u0220\u021e\3\2\2\2\u0220\u0221\3\2\2\2\u0221\u0223") - buf.write("\3\2\2\2\u0222\u0220\3\2\2\2\u0223\u0225\7h\2\2\u0224") - buf.write("\u0226\5*\26\2\u0225\u0224\3\2\2\2\u0225\u0226\3\2\2\2") - buf.write("\u0226\23\3\2\2\2\u0227\u0229\5\u00e6t\2\u0228\u0227\3") - buf.write("\2\2\2\u0229\u022c\3\2\2\2\u022a\u0228\3\2\2\2\u022a\u022b") - buf.write("\3\2\2\2\u022b\u022d\3\2\2\2\u022c\u022a\3\2\2\2\u022d") - buf.write("\u022f\7h\2\2\u022e\u0230\5*\26\2\u022f\u022e\3\2\2\2") - buf.write("\u022f\u0230\3\2\2\2\u0230\25\3\2\2\2\u0231\u0232\5\20") - buf.write("\t\2\u0232\27\3\2\2\2\u0233\u0234\5\22\n\2\u0234\31\3") - buf.write("\2\2\2\u0235\u0236\5\24\13\2\u0236\33\3\2\2\2\u0237\u0239") - buf.write("\5\u00e6t\2\u0238\u0237\3\2\2\2\u0239\u023c\3\2\2\2\u023a") - buf.write("\u0238\3\2\2\2\u023a\u023b\3\2\2\2\u023b\u023d\3\2\2\2") - buf.write("\u023c\u023a\3\2\2\2\u023d\u023e\7h\2\2\u023e\35\3\2\2") - buf.write("\2\u023f\u0240\5\4\3\2\u0240\u0241\5 \21\2\u0241\u0249") - buf.write("\3\2\2\2\u0242\u0243\5\16\b\2\u0243\u0244\5 \21\2\u0244") - buf.write("\u0249\3\2\2\2\u0245\u0246\5\34\17\2\u0246\u0247\5 \21") - buf.write("\2\u0247\u0249\3\2\2\2\u0248\u023f\3\2\2\2\u0248\u0242") - buf.write("\3\2\2\2\u0248\u0245\3\2\2\2\u0249\37\3\2\2\2\u024a\u024c") - buf.write("\5\u00e6t\2\u024b\u024a\3\2\2\2\u024c\u024f\3\2\2\2\u024d") - buf.write("\u024b\3\2\2\2\u024d\u024e\3\2\2\2\u024e\u0250\3\2\2\2") - buf.write("\u024f\u024d\3\2\2\2\u0250\u0251\7?\2\2\u0251\u025c\7") - buf.write("@\2\2\u0252\u0254\5\u00e6t\2\u0253\u0252\3\2\2\2\u0254") - buf.write("\u0257\3\2\2\2\u0255\u0253\3\2\2\2\u0255\u0256\3\2\2\2") - buf.write("\u0256\u0258\3\2\2\2\u0257\u0255\3\2\2\2\u0258\u0259\7") - buf.write("?\2\2\u0259\u025b\7@\2\2\u025a\u0255\3\2\2\2\u025b\u025e") - buf.write("\3\2\2\2\u025c\u025a\3\2\2\2\u025c\u025d\3\2\2\2\u025d") - buf.write("!\3\2\2\2\u025e\u025c\3\2\2\2\u025f\u0261\5$\23\2\u0260") - buf.write("\u025f\3\2\2\2\u0261\u0264\3\2\2\2\u0262\u0260\3\2\2\2") - buf.write("\u0262\u0263\3\2\2\2\u0263\u0265\3\2\2\2\u0264\u0262\3") - buf.write("\2\2\2\u0265\u0267\7h\2\2\u0266\u0268\5&\24\2\u0267\u0266") - buf.write("\3\2\2\2\u0267\u0268\3\2\2\2\u0268#\3\2\2\2\u0269\u026a") - buf.write("\5\u00e6t\2\u026a%\3\2\2\2\u026b\u026c\7\23\2\2\u026c") - buf.write("\u0276\5\34\17\2\u026d\u026e\7\23\2\2\u026e\u0272\5\16") - buf.write("\b\2\u026f\u0271\5(\25\2\u0270\u026f\3\2\2\2\u0271\u0274") - buf.write("\3\2\2\2\u0272\u0270\3\2\2\2\u0272\u0273\3\2\2\2\u0273") - buf.write("\u0276\3\2\2\2\u0274\u0272\3\2\2\2\u0275\u026b\3\2\2\2") - buf.write("\u0275\u026d\3\2\2\2\u0276\'\3\2\2\2\u0277\u0278\7W\2") - buf.write("\2\u0278\u0279\5\26\f\2\u0279)\3\2\2\2\u027a\u027b\7F") - buf.write("\2\2\u027b\u027c\5,\27\2\u027c\u027d\7E\2\2\u027d+\3\2") - buf.write("\2\2\u027e\u0283\5.\30\2\u027f\u0280\7B\2\2\u0280\u0282") - buf.write("\5.\30\2\u0281\u027f\3\2\2\2\u0282\u0285\3\2\2\2\u0283") - buf.write("\u0281\3\2\2\2\u0283\u0284\3\2\2\2\u0284-\3\2\2\2\u0285") - buf.write("\u0283\3\2\2\2\u0286\u0289\5\f\7\2\u0287\u0289\5\60\31") - buf.write("\2\u0288\u0286\3\2\2\2\u0288\u0287\3\2\2\2\u0289/\3\2") - buf.write("\2\2\u028a\u028c\5\u00e6t\2\u028b\u028a\3\2\2\2\u028c") - buf.write("\u028f\3\2\2\2\u028d\u028b\3\2\2\2\u028d\u028e\3\2\2\2") - buf.write("\u028e\u0290\3\2\2\2\u028f\u028d\3\2\2\2\u0290\u0292\7") - buf.write("I\2\2\u0291\u0293\5\62\32\2\u0292\u0291\3\2\2\2\u0292") - buf.write("\u0293\3\2\2\2\u0293\61\3\2\2\2\u0294\u0295\7\23\2\2\u0295") - buf.write("\u0299\5\f\7\2\u0296\u0297\7*\2\2\u0297\u0299\5\f\7\2") - buf.write("\u0298\u0294\3\2\2\2\u0298\u0296\3\2\2\2\u0299\63\3\2") - buf.write("\2\2\u029a\u029b\b\33\1\2\u029b\u029c\7h\2\2\u029c\u02a2") - buf.write("\3\2\2\2\u029d\u029e\f\3\2\2\u029e\u029f\7C\2\2\u029f") - buf.write("\u02a1\7h\2\2\u02a0\u029d\3\2\2\2\u02a1\u02a4\3\2\2\2") - buf.write("\u02a2\u02a0\3\2\2\2\u02a2\u02a3\3\2\2\2\u02a3\65\3\2") - buf.write("\2\2\u02a4\u02a2\3\2\2\2\u02a5\u02ab\7h\2\2\u02a6\u02a7") - buf.write("\58\35\2\u02a7\u02a8\7C\2\2\u02a8\u02a9\7h\2\2\u02a9\u02ab") - buf.write("\3\2\2\2\u02aa\u02a5\3\2\2\2\u02aa\u02a6\3\2\2\2\u02ab") - buf.write("\67\3\2\2\2\u02ac\u02ad\b\35\1\2\u02ad\u02ae\7h\2\2\u02ae") - buf.write("\u02b4\3\2\2\2\u02af\u02b0\f\3\2\2\u02b0\u02b1\7C\2\2") - buf.write("\u02b1\u02b3\7h\2\2\u02b2\u02af\3\2\2\2\u02b3\u02b6\3") - buf.write("\2\2\2\u02b4\u02b2\3\2\2\2\u02b4\u02b5\3\2\2\2\u02b59") - buf.write("\3\2\2\2\u02b6\u02b4\3\2\2\2\u02b7\u02bd\7h\2\2\u02b8") - buf.write("\u02b9\5> \2\u02b9\u02ba\7C\2\2\u02ba\u02bb\7h\2\2\u02bb") - buf.write("\u02bd\3\2\2\2\u02bc\u02b7\3\2\2\2\u02bc\u02b8\3\2\2\2") - buf.write("\u02bd;\3\2\2\2\u02be\u02bf\7h\2\2\u02bf=\3\2\2\2\u02c0") - buf.write("\u02c1\b \1\2\u02c1\u02c2\7h\2\2\u02c2\u02c8\3\2\2\2\u02c3") - buf.write("\u02c4\f\3\2\2\u02c4\u02c5\7C\2\2\u02c5\u02c7\7h\2\2\u02c6") - buf.write("\u02c3\3\2\2\2\u02c7\u02ca\3\2\2\2\u02c8\u02c6\3\2\2\2") - buf.write("\u02c8\u02c9\3\2\2\2\u02c9?\3\2\2\2\u02ca\u02c8\3\2\2") - buf.write("\2\u02cb\u02cd\5B\"\2\u02cc\u02cb\3\2\2\2\u02cc\u02cd") - buf.write("\3\2\2\2\u02cd\u02d1\3\2\2\2\u02ce\u02d0\5F$\2\u02cf\u02ce") - buf.write("\3\2\2\2\u02d0\u02d3\3\2\2\2\u02d1\u02cf\3\2\2\2\u02d1") - buf.write("\u02d2\3\2\2\2\u02d2\u02d7\3\2\2\2\u02d3\u02d1\3\2\2\2") - buf.write("\u02d4\u02d6\5P)\2\u02d5\u02d4\3\2\2\2\u02d6\u02d9\3\2") - buf.write("\2\2\u02d7\u02d5\3\2\2\2\u02d7\u02d8\3\2\2\2\u02d8\u02da") - buf.write("\3\2\2\2\u02d9\u02d7\3\2\2\2\u02da\u02db\7\2\2\3\u02db") - buf.write("A\3\2\2\2\u02dc\u02de\5D#\2\u02dd\u02dc\3\2\2\2\u02de") - buf.write("\u02e1\3\2\2\2\u02df\u02dd\3\2\2\2\u02df\u02e0\3\2\2\2") - buf.write("\u02e0\u02e2\3\2\2\2\u02e1\u02df\3\2\2\2\u02e2\u02e3\7") - buf.write("\"\2\2\u02e3\u02e4\5\64\33\2\u02e4\u02e5\7A\2\2\u02e5") - buf.write("C\3\2\2\2\u02e6\u02e7\5\u00e6t\2\u02e7E\3\2\2\2\u02e8") - buf.write("\u02ed\5H%\2\u02e9\u02ed\5J&\2\u02ea\u02ed\5L\'\2\u02eb") - buf.write("\u02ed\5N(\2\u02ec\u02e8\3\2\2\2\u02ec\u02e9\3\2\2\2\u02ec") - buf.write("\u02ea\3\2\2\2\u02ec\u02eb\3\2\2\2\u02edG\3\2\2\2\u02ee") - buf.write("\u02ef\7\33\2\2\u02ef\u02f0\5\66\34\2\u02f0\u02f1\7A\2") - buf.write("\2\u02f1I\3\2\2\2\u02f2\u02f3\7\33\2\2\u02f3\u02f4\58") - buf.write("\35\2\u02f4\u02f5\7C\2\2\u02f5\u02f6\7U\2\2\u02f6\u02f7") - buf.write("\7A\2\2\u02f7K\3\2\2\2\u02f8\u02f9\7\33\2\2\u02f9\u02fa") - buf.write("\7(\2\2\u02fa\u02fb\5\66\34\2\u02fb\u02fc\7C\2\2\u02fc") - buf.write("\u02fd\7h\2\2\u02fd\u02fe\7A\2\2\u02feM\3\2\2\2\u02ff") - buf.write("\u0300\7\33\2\2\u0300\u0301\7(\2\2\u0301\u0302\5\66\34") - buf.write("\2\u0302\u0303\7C\2\2\u0303\u0304\7U\2\2\u0304\u0305\7") - buf.write("A\2\2\u0305O\3\2\2\2\u0306\u030a\5R*\2\u0307\u030a\5\u00c6") - buf.write("d\2\u0308\u030a\7A\2\2\u0309\u0306\3\2\2\2\u0309\u0307") - buf.write("\3\2\2\2\u0309\u0308\3\2\2\2\u030aQ\3\2\2\2\u030b\u030e") - buf.write("\5T+\2\u030c\u030e\5\u00ba^\2\u030d\u030b\3\2\2\2\u030d") - buf.write("\u030c\3\2\2\2\u030eS\3\2\2\2\u030f\u0311\5V,\2\u0310") - buf.write("\u030f\3\2\2\2\u0311\u0314\3\2\2\2\u0312\u0310\3\2\2\2") - buf.write("\u0312\u0313\3\2\2\2\u0313\u0315\3\2\2\2\u0314\u0312\3") - buf.write("\2\2\2\u0315\u0316\7\13\2\2\u0316\u0318\7h\2\2\u0317\u0319") - buf.write("\5X-\2\u0318\u0317\3\2\2\2\u0318\u0319\3\2\2\2\u0319\u031b") - buf.write("\3\2\2\2\u031a\u031c\5\\/\2\u031b\u031a\3\2\2\2\u031b") - buf.write("\u031c\3\2\2\2\u031c\u031e\3\2\2\2\u031d\u031f\5^\60\2") - buf.write("\u031e\u031d\3\2\2\2\u031e\u031f\3\2\2\2\u031f\u0320\3") - buf.write("\2\2\2\u0320\u0321\5b\62\2\u0321U\3\2\2\2\u0322\u032b") - buf.write("\5\u00e6t\2\u0323\u032b\7%\2\2\u0324\u032b\7$\2\2\u0325") - buf.write("\u032b\7#\2\2\u0326\u032b\7\3\2\2\u0327\u032b\7(\2\2\u0328") - buf.write("\u032b\7\24\2\2\u0329\u032b\7)\2\2\u032a\u0322\3\2\2\2") - buf.write("\u032a\u0323\3\2\2\2\u032a\u0324\3\2\2\2\u032a\u0325\3") - buf.write("\2\2\2\u032a\u0326\3\2\2\2\u032a\u0327\3\2\2\2\u032a\u0328") - buf.write("\3\2\2\2\u032a\u0329\3\2\2\2\u032bW\3\2\2\2\u032c\u032d") - buf.write("\7F\2\2\u032d\u032e\5Z.\2\u032e\u032f\7E\2\2\u032fY\3") - buf.write("\2\2\2\u0330\u0335\5\"\22\2\u0331\u0332\7B\2\2\u0332\u0334") - buf.write("\5\"\22\2\u0333\u0331\3\2\2\2\u0334\u0337\3\2\2\2\u0335") - buf.write("\u0333\3\2\2\2\u0335\u0336\3\2\2\2\u0336[\3\2\2\2\u0337") - buf.write("\u0335\3\2\2\2\u0338\u0339\7\23\2\2\u0339\u033a\5\20\t") - buf.write("\2\u033a]\3\2\2\2\u033b\u033c\7\32\2\2\u033c\u033d\5`") - buf.write("\61\2\u033d_\3\2\2\2\u033e\u0343\5\26\f\2\u033f\u0340") - buf.write("\7B\2\2\u0340\u0342\5\26\f\2\u0341\u033f\3\2\2\2\u0342") - buf.write("\u0345\3\2\2\2\u0343\u0341\3\2\2\2\u0343\u0344\3\2\2\2") - buf.write("\u0344a\3\2\2\2\u0345\u0343\3\2\2\2\u0346\u034a\7=\2\2") - buf.write("\u0347\u0349\5d\63\2\u0348\u0347\3\2\2\2\u0349\u034c\3") - buf.write("\2\2\2\u034a\u0348\3\2\2\2\u034a\u034b\3\2\2\2\u034b\u034d") - buf.write("\3\2\2\2\u034c\u034a\3\2\2\2\u034d\u034e\7>\2\2\u034e") - buf.write("c\3\2\2\2\u034f\u0354\5f\64\2\u0350\u0354\5\u00aaV\2\u0351") - buf.write("\u0354\5\u00acW\2\u0352\u0354\5\u00aeX\2\u0353\u034f\3") - buf.write("\2\2\2\u0353\u0350\3\2\2\2\u0353\u0351\3\2\2\2\u0353\u0352") - buf.write("\3\2\2\2\u0354e\3\2\2\2\u0355\u035b\5h\65\2\u0356\u035b") - buf.write("\5\u008cG\2\u0357\u035b\5R*\2\u0358\u035b\5\u00c6d\2\u0359") - buf.write("\u035b\7A\2\2\u035a\u0355\3\2\2\2\u035a\u0356\3\2\2\2") - buf.write("\u035a\u0357\3\2\2\2\u035a\u0358\3\2\2\2\u035a\u0359\3") - buf.write("\2\2\2\u035bg\3\2\2\2\u035c\u035e\5j\66\2\u035d\u035c") - buf.write("\3\2\2\2\u035e\u0361\3\2\2\2\u035f\u035d\3\2\2\2\u035f") - buf.write("\u0360\3\2\2\2\u0360\u0362\3\2\2\2\u0361\u035f\3\2\2\2") - buf.write("\u0362\u0363\5t;\2\u0363\u0364\5l\67\2\u0364\u0365\7A") - buf.write("\2\2\u0365i\3\2\2\2\u0366\u036f\5\u00e6t\2\u0367\u036f") - buf.write("\7%\2\2\u0368\u036f\7$\2\2\u0369\u036f\7#\2\2\u036a\u036f") - buf.write("\7(\2\2\u036b\u036f\7\24\2\2\u036c\u036f\7\60\2\2\u036d") - buf.write("\u036f\7\63\2\2\u036e\u0366\3\2\2\2\u036e\u0367\3\2\2") - buf.write("\2\u036e\u0368\3\2\2\2\u036e\u0369\3\2\2\2\u036e\u036a") - buf.write("\3\2\2\2\u036e\u036b\3\2\2\2\u036e\u036c\3\2\2\2\u036e") - buf.write("\u036d\3\2\2\2\u036fk\3\2\2\2\u0370\u0375\5n8\2\u0371") - buf.write("\u0372\7B\2\2\u0372\u0374\5n8\2\u0373\u0371\3\2\2\2\u0374") - buf.write("\u0377\3\2\2\2\u0375\u0373\3\2\2\2\u0375\u0376\3\2\2\2") - buf.write("\u0376m\3\2\2\2\u0377\u0375\3\2\2\2\u0378\u037b\5p9\2") - buf.write("\u0379\u037a\7D\2\2\u037a\u037c\5r:\2\u037b\u0379\3\2") - buf.write("\2\2\u037b\u037c\3\2\2\2\u037co\3\2\2\2\u037d\u037f\7") - buf.write("h\2\2\u037e\u0380\5 \21\2\u037f\u037e\3\2\2\2\u037f\u0380") - buf.write("\3\2\2\2\u0380q\3\2\2\2\u0381\u0384\5\u019e\u00d0\2\u0382") - buf.write("\u0384\5\u00f8}\2\u0383\u0381\3\2\2\2\u0383\u0382\3\2") - buf.write("\2\2\u0384s\3\2\2\2\u0385\u0388\5v<\2\u0386\u0388\5x=") - buf.write("\2\u0387\u0385\3\2\2\2\u0387\u0386\3\2\2\2\u0388u\3\2") - buf.write("\2\2\u0389\u038c\5\6\4\2\u038a\u038c\7\5\2\2\u038b\u0389") - buf.write("\3\2\2\2\u038b\u038a\3\2\2\2\u038cw\3\2\2\2\u038d\u0391") - buf.write("\5z>\2\u038e\u0391\5\u0088E\2\u038f\u0391\5\u008aF\2\u0390") - buf.write("\u038d\3\2\2\2\u0390\u038e\3\2\2\2\u0390\u038f\3\2\2\2") - buf.write("\u0391y\3\2\2\2\u0392\u0395\5\u0080A\2\u0393\u0395\5\u0086") - buf.write("D\2\u0394\u0392\3\2\2\2\u0394\u0393\3\2\2\2\u0395\u039a") - buf.write("\3\2\2\2\u0396\u0399\5~@\2\u0397\u0399\5\u0084C\2\u0398") - buf.write("\u0396\3\2\2\2\u0398\u0397\3\2\2\2\u0399\u039c\3\2\2\2") - buf.write("\u039a\u0398\3\2\2\2\u039a\u039b\3\2\2\2\u039b{\3\2\2") - buf.write("\2\u039c\u039a\3\2\2\2\u039d\u039f\7h\2\2\u039e\u03a0") - buf.write("\5*\26\2\u039f\u039e\3\2\2\2\u039f\u03a0\3\2\2\2\u03a0") - buf.write("\u03ae\3\2\2\2\u03a1\u03a2\5z>\2\u03a2\u03a6\7C\2\2\u03a3") - buf.write("\u03a5\5\u00e6t\2\u03a4\u03a3\3\2\2\2\u03a5\u03a8\3\2") - buf.write("\2\2\u03a6\u03a4\3\2\2\2\u03a6\u03a7\3\2\2\2\u03a7\u03a9") - buf.write("\3\2\2\2\u03a8\u03a6\3\2\2\2\u03a9\u03ab\7h\2\2\u03aa") - buf.write("\u03ac\5*\26\2\u03ab\u03aa\3\2\2\2\u03ab\u03ac\3\2\2\2") - buf.write("\u03ac\u03ae\3\2\2\2\u03ad\u039d\3\2\2\2\u03ad\u03a1\3") - buf.write("\2\2\2\u03ae}\3\2\2\2\u03af\u03b3\7C\2\2\u03b0\u03b2\5") - buf.write("\u00e6t\2\u03b1\u03b0\3\2\2\2\u03b2\u03b5\3\2\2\2\u03b3") - buf.write("\u03b1\3\2\2\2\u03b3\u03b4\3\2\2\2\u03b4\u03b6\3\2\2\2") - buf.write("\u03b5\u03b3\3\2\2\2\u03b6\u03b8\7h\2\2\u03b7\u03b9\5") - buf.write("*\26\2\u03b8\u03b7\3\2\2\2\u03b8\u03b9\3\2\2\2\u03b9\177") - buf.write("\3\2\2\2\u03ba\u03bc\7h\2\2\u03bb\u03bd\5*\26\2\u03bc") - buf.write("\u03bb\3\2\2\2\u03bc\u03bd\3\2\2\2\u03bd\u0081\3\2\2\2") - buf.write("\u03be\u03bf\5|?\2\u03bf\u0083\3\2\2\2\u03c0\u03c1\5~") - buf.write("@\2\u03c1\u0085\3\2\2\2\u03c2\u03c3\5\u0080A\2\u03c3\u0087") - buf.write("\3\2\2\2\u03c4\u03c5\7h\2\2\u03c5\u0089\3\2\2\2\u03c6") - buf.write("\u03c7\5v<\2\u03c7\u03c8\5 \21\2\u03c8\u03d0\3\2\2\2\u03c9") - buf.write("\u03ca\5z>\2\u03ca\u03cb\5 \21\2\u03cb\u03d0\3\2\2\2\u03cc") - buf.write("\u03cd\5\u0088E\2\u03cd\u03ce\5 \21\2\u03ce\u03d0\3\2") - buf.write("\2\2\u03cf\u03c6\3\2\2\2\u03cf\u03c9\3\2\2\2\u03cf\u03cc") - buf.write("\3\2\2\2\u03d0\u008b\3\2\2\2\u03d1\u03d3\5\u008eH\2\u03d2") - buf.write("\u03d1\3\2\2\2\u03d3\u03d6\3\2\2\2\u03d4\u03d2\3\2\2\2") - buf.write("\u03d4\u03d5\3\2\2\2\u03d5\u03d7\3\2\2\2\u03d6\u03d4\3") - buf.write("\2\2\2\u03d7\u03d8\5\u0090I\2\u03d8\u03d9\5\u00a8U\2\u03d9") - buf.write("\u008d\3\2\2\2\u03da\u03e5\5\u00e6t\2\u03db\u03e5\7%\2") - buf.write("\2\u03dc\u03e5\7$\2\2\u03dd\u03e5\7#\2\2\u03de\u03e5\7") - buf.write("\3\2\2\u03df\u03e5\7(\2\2\u03e0\u03e5\7\24\2\2\u03e1\u03e5") - buf.write("\7,\2\2\u03e2\u03e5\7 \2\2\u03e3\u03e5\7)\2\2\u03e4\u03da") - buf.write("\3\2\2\2\u03e4\u03db\3\2\2\2\u03e4\u03dc\3\2\2\2\u03e4") - buf.write("\u03dd\3\2\2\2\u03e4\u03de\3\2\2\2\u03e4\u03df\3\2\2\2") - buf.write("\u03e4\u03e0\3\2\2\2\u03e4\u03e1\3\2\2\2\u03e4\u03e2\3") - buf.write("\2\2\2\u03e4\u03e3\3\2\2\2\u03e5\u008f\3\2\2\2\u03e6\u03e7") - buf.write("\5\u0092J\2\u03e7\u03e9\5\u0094K\2\u03e8\u03ea\5\u00a2") - buf.write("R\2\u03e9\u03e8\3\2\2\2\u03e9\u03ea\3\2\2\2\u03ea\u03f8") - buf.write("\3\2\2\2\u03eb\u03ef\5X-\2\u03ec\u03ee\5\u00e6t\2\u03ed") - buf.write("\u03ec\3\2\2\2\u03ee\u03f1\3\2\2\2\u03ef\u03ed\3\2\2\2") - buf.write("\u03ef\u03f0\3\2\2\2\u03f0\u03f2\3\2\2\2\u03f1\u03ef\3") - buf.write("\2\2\2\u03f2\u03f3\5\u0092J\2\u03f3\u03f5\5\u0094K\2\u03f4") - buf.write("\u03f6\5\u00a2R\2\u03f5\u03f4\3\2\2\2\u03f5\u03f6\3\2") - buf.write("\2\2\u03f6\u03f8\3\2\2\2\u03f7\u03e6\3\2\2\2\u03f7\u03eb") - buf.write("\3\2\2\2\u03f8\u0091\3\2\2\2\u03f9\u03fc\5t;\2\u03fa\u03fc") - buf.write("\7\62\2\2\u03fb\u03f9\3\2\2\2\u03fb\u03fa\3\2\2\2\u03fc") - buf.write("\u0093\3\2\2\2\u03fd\u03fe\7h\2\2\u03fe\u0400\7;\2\2\u03ff") - buf.write("\u0401\5\u0096L\2\u0400\u03ff\3\2\2\2\u0400\u0401\3\2") - buf.write("\2\2\u0401\u0402\3\2\2\2\u0402\u0404\7<\2\2\u0403\u0405") - buf.write("\5 \21\2\u0404\u0403\3\2\2\2\u0404\u0405\3\2\2\2\u0405") - buf.write("\u0095\3\2\2\2\u0406\u040d\5\u00a0Q\2\u0407\u0408\5\u0098") - buf.write("M\2\u0408\u0409\7B\2\2\u0409\u040a\5\u009eP\2\u040a\u040d") - buf.write("\3\2\2\2\u040b\u040d\5\u009eP\2\u040c\u0406\3\2\2\2\u040c") - buf.write("\u0407\3\2\2\2\u040c\u040b\3\2\2\2\u040d\u0097\3\2\2\2") - buf.write("\u040e\u0413\5\u009aN\2\u040f\u0410\7B\2\2\u0410\u0412") - buf.write("\5\u009aN\2\u0411\u040f\3\2\2\2\u0412\u0415\3\2\2\2\u0413") - buf.write("\u0411\3\2\2\2\u0413\u0414\3\2\2\2\u0414\u041f\3\2\2\2") - buf.write("\u0415\u0413\3\2\2\2\u0416\u041b\5\u00a0Q\2\u0417\u0418") - buf.write("\7B\2\2\u0418\u041a\5\u009aN\2\u0419\u0417\3\2\2\2\u041a") - buf.write("\u041d\3\2\2\2\u041b\u0419\3\2\2\2\u041b\u041c\3\2\2\2") - buf.write("\u041c\u041f\3\2\2\2\u041d\u041b\3\2\2\2\u041e\u040e\3") - buf.write("\2\2\2\u041e\u0416\3\2\2\2\u041f\u0099\3\2\2\2\u0420\u0422") - buf.write("\5\u009cO\2\u0421\u0420\3\2\2\2\u0422\u0425\3\2\2\2\u0423") - buf.write("\u0421\3\2\2\2\u0423\u0424\3\2\2\2\u0424\u0426\3\2\2\2") - buf.write("\u0425\u0423\3\2\2\2\u0426\u0427\5t;\2\u0427\u0428\5p") - buf.write("9\2\u0428\u009b\3\2\2\2\u0429\u042c\5\u00e6t\2\u042a\u042c") - buf.write("\7\24\2\2\u042b\u0429\3\2\2\2\u042b\u042a\3\2\2\2\u042c") - buf.write("\u009d\3\2\2\2\u042d\u042f\5\u009cO\2\u042e\u042d\3\2") - buf.write("\2\2\u042f\u0432\3\2\2\2\u0430\u042e\3\2\2\2\u0430\u0431") - buf.write("\3\2\2\2\u0431\u0433\3\2\2\2\u0432\u0430\3\2\2\2\u0433") - buf.write("\u0437\5t;\2\u0434\u0436\5\u00e6t\2\u0435\u0434\3\2\2") - buf.write("\2\u0436\u0439\3\2\2\2\u0437\u0435\3\2\2\2\u0437\u0438") - buf.write("\3\2\2\2\u0438\u043a\3\2\2\2\u0439\u0437\3\2\2\2\u043a") - buf.write("\u043b\7j\2\2\u043b\u043c\5p9\2\u043c\u043f\3\2\2\2\u043d") - buf.write("\u043f\5\u009aN\2\u043e\u0430\3\2\2\2\u043e\u043d\3\2") - buf.write("\2\2\u043f\u009f\3\2\2\2\u0440\u0442\5\u00e6t\2\u0441") - buf.write("\u0440\3\2\2\2\u0442\u0445\3\2\2\2\u0443\u0441\3\2\2\2") - buf.write("\u0443\u0444\3\2\2\2\u0444\u0446\3\2\2\2\u0445\u0443\3") - buf.write("\2\2\2\u0446\u0449\5t;\2\u0447\u0448\7h\2\2\u0448\u044a") - buf.write("\7C\2\2\u0449\u0447\3\2\2\2\u0449\u044a\3\2\2\2\u044a") - buf.write("\u044b\3\2\2\2\u044b\u044c\7-\2\2\u044c\u00a1\3\2\2\2") - buf.write("\u044d\u044e\7/\2\2\u044e\u044f\5\u00a4S\2\u044f\u00a3") - buf.write("\3\2\2\2\u0450\u0455\5\u00a6T\2\u0451\u0452\7B\2\2\u0452") - buf.write("\u0454\5\u00a6T\2\u0453\u0451\3\2\2\2\u0454\u0457\3\2") - buf.write("\2\2\u0455\u0453\3\2\2\2\u0455\u0456\3\2\2\2\u0456\u00a5") - buf.write("\3\2\2\2\u0457\u0455\3\2\2\2\u0458\u045b\5\20\t\2\u0459") - buf.write("\u045b\5\34\17\2\u045a\u0458\3\2\2\2\u045a\u0459\3\2\2") - buf.write("\2\u045b\u00a7\3\2\2\2\u045c\u045f\5\u00fc\177\2\u045d") - buf.write("\u045f\7A\2\2\u045e\u045c\3\2\2\2\u045e\u045d\3\2\2\2") - buf.write("\u045f\u00a9\3\2\2\2\u0460\u0461\5\u00fc\177\2\u0461\u00ab") - buf.write("\3\2\2\2\u0462\u0463\7(\2\2\u0463\u0464\5\u00fc\177\2") - buf.write("\u0464\u00ad\3\2\2\2\u0465\u0467\5\u00b0Y\2\u0466\u0465") - buf.write("\3\2\2\2\u0467\u046a\3\2\2\2\u0468\u0466\3\2\2\2\u0468") - buf.write("\u0469\3\2\2\2\u0469\u046b\3\2\2\2\u046a\u0468\3\2\2\2") - buf.write("\u046b\u046d\5\u00b2Z\2\u046c\u046e\5\u00a2R\2\u046d\u046c") - buf.write("\3\2\2\2\u046d\u046e\3\2\2\2\u046e\u046f\3\2\2\2\u046f") - buf.write("\u0470\5\u00b6\\\2\u0470\u00af\3\2\2\2\u0471\u0476\5\u00e6") - buf.write("t\2\u0472\u0476\7%\2\2\u0473\u0476\7$\2\2\u0474\u0476") - buf.write("\7#\2\2\u0475\u0471\3\2\2\2\u0475\u0472\3\2\2\2\u0475") - buf.write("\u0473\3\2\2\2\u0475\u0474\3\2\2\2\u0476\u00b1\3\2\2\2") - buf.write("\u0477\u0479\5X-\2\u0478\u0477\3\2\2\2\u0478\u0479\3\2") - buf.write("\2\2\u0479\u047a\3\2\2\2\u047a\u047b\5\u00b4[\2\u047b") - buf.write("\u047d\7;\2\2\u047c\u047e\5\u0096L\2\u047d\u047c\3\2\2") - buf.write("\2\u047d\u047e\3\2\2\2\u047e\u047f\3\2\2\2\u047f\u0480") - buf.write("\7<\2\2\u0480\u00b3\3\2\2\2\u0481\u0482\7h\2\2\u0482\u00b5") - buf.write("\3\2\2\2\u0483\u0485\7=\2\2\u0484\u0486\5\u00b8]\2\u0485") - buf.write("\u0484\3\2\2\2\u0485\u0486\3\2\2\2\u0486\u0488\3\2\2\2") - buf.write("\u0487\u0489\5\u00fe\u0080\2\u0488\u0487\3\2\2\2\u0488") - buf.write("\u0489\3\2\2\2\u0489\u048a\3\2\2\2\u048a\u048b\7>\2\2") - buf.write("\u048b\u00b7\3\2\2\2\u048c\u048e\5*\26\2\u048d\u048c\3") - buf.write("\2\2\2\u048d\u048e\3\2\2\2\u048e\u048f\3\2\2\2\u048f\u0490") - buf.write("\7-\2\2\u0490\u0492\7;\2\2\u0491\u0493\5\u018e\u00c8\2") - buf.write("\u0492\u0491\3\2\2\2\u0492\u0493\3\2\2\2\u0493\u0494\3") - buf.write("\2\2\2\u0494\u0495\7<\2\2\u0495\u04bb\7A\2\2\u0496\u0498") - buf.write("\5*\26\2\u0497\u0496\3\2\2\2\u0497\u0498\3\2\2\2\u0498") - buf.write("\u0499\3\2\2\2\u0499\u049a\7*\2\2\u049a\u049c\7;\2\2\u049b") - buf.write("\u049d\5\u018e\u00c8\2\u049c\u049b\3\2\2\2\u049c\u049d") - buf.write("\3\2\2\2\u049d\u049e\3\2\2\2\u049e\u049f\7<\2\2\u049f") - buf.write("\u04bb\7A\2\2\u04a0\u04a1\5:\36\2\u04a1\u04a3\7C\2\2\u04a2") - buf.write("\u04a4\5*\26\2\u04a3\u04a2\3\2\2\2\u04a3\u04a4\3\2\2\2") - buf.write("\u04a4\u04a5\3\2\2\2\u04a5\u04a6\7*\2\2\u04a6\u04a8\7") - buf.write(";\2\2\u04a7\u04a9\5\u018e\u00c8\2\u04a8\u04a7\3\2\2\2") - buf.write("\u04a8\u04a9\3\2\2\2\u04a9\u04aa\3\2\2\2\u04aa\u04ab\7") - buf.write("<\2\2\u04ab\u04ac\7A\2\2\u04ac\u04bb\3\2\2\2\u04ad\u04ae") - buf.write("\5\u0160\u00b1\2\u04ae\u04b0\7C\2\2\u04af\u04b1\5*\26") - buf.write("\2\u04b0\u04af\3\2\2\2\u04b0\u04b1\3\2\2\2\u04b1\u04b2") - buf.write("\3\2\2\2\u04b2\u04b3\7*\2\2\u04b3\u04b5\7;\2\2\u04b4\u04b6") - buf.write("\5\u018e\u00c8\2\u04b5\u04b4\3\2\2\2\u04b5\u04b6\3\2\2") - buf.write("\2\u04b6\u04b7\3\2\2\2\u04b7\u04b8\7<\2\2\u04b8\u04b9") - buf.write("\7A\2\2\u04b9\u04bb\3\2\2\2\u04ba\u048d\3\2\2\2\u04ba") - buf.write("\u0497\3\2\2\2\u04ba\u04a0\3\2\2\2\u04ba\u04ad\3\2\2\2") - buf.write("\u04bb\u00b9\3\2\2\2\u04bc\u04be\5V,\2\u04bd\u04bc\3\2") - buf.write("\2\2\u04be\u04c1\3\2\2\2\u04bf\u04bd\3\2\2\2\u04bf\u04c0") - buf.write("\3\2\2\2\u04c0\u04c2\3\2\2\2\u04c1\u04bf\3\2\2\2\u04c2") - buf.write("\u04c3\7\22\2\2\u04c3\u04c5\7h\2\2\u04c4\u04c6\5^\60\2") - buf.write("\u04c5\u04c4\3\2\2\2\u04c5\u04c6\3\2\2\2\u04c6\u04c7\3") - buf.write("\2\2\2\u04c7\u04c8\5\u00bc_\2\u04c8\u00bb\3\2\2\2\u04c9") - buf.write("\u04cb\7=\2\2\u04ca\u04cc\5\u00be`\2\u04cb\u04ca\3\2\2") - buf.write("\2\u04cb\u04cc\3\2\2\2\u04cc\u04ce\3\2\2\2\u04cd\u04cf") - buf.write("\7B\2\2\u04ce\u04cd\3\2\2\2\u04ce\u04cf\3\2\2\2\u04cf") - buf.write("\u04d1\3\2\2\2\u04d0\u04d2\5\u00c4c\2\u04d1\u04d0\3\2") - buf.write("\2\2\u04d1\u04d2\3\2\2\2\u04d2\u04d3\3\2\2\2\u04d3\u04d4") - buf.write("\7>\2\2\u04d4\u00bd\3\2\2\2\u04d5\u04da\5\u00c0a\2\u04d6") - buf.write("\u04d7\7B\2\2\u04d7\u04d9\5\u00c0a\2\u04d8\u04d6\3\2\2") - buf.write("\2\u04d9\u04dc\3\2\2\2\u04da\u04d8\3\2\2\2\u04da\u04db") - buf.write("\3\2\2\2\u04db\u00bf\3\2\2\2\u04dc\u04da\3\2\2\2\u04dd") - buf.write("\u04df\5\u00c2b\2\u04de\u04dd\3\2\2\2\u04df\u04e2\3\2") - buf.write("\2\2\u04e0\u04de\3\2\2\2\u04e0\u04e1\3\2\2\2\u04e1\u04e3") - buf.write("\3\2\2\2\u04e2\u04e0\3\2\2\2\u04e3\u04e9\7h\2\2\u04e4") - buf.write("\u04e6\7;\2\2\u04e5\u04e7\5\u018e\u00c8\2\u04e6\u04e5") - buf.write("\3\2\2\2\u04e6\u04e7\3\2\2\2\u04e7\u04e8\3\2\2\2\u04e8") - buf.write("\u04ea\7<\2\2\u04e9\u04e4\3\2\2\2\u04e9\u04ea\3\2\2\2") - buf.write("\u04ea\u04ec\3\2\2\2\u04eb\u04ed\5b\62\2\u04ec\u04eb\3") - buf.write("\2\2\2\u04ec\u04ed\3\2\2\2\u04ed\u00c1\3\2\2\2\u04ee\u04ef") - buf.write("\5\u00e6t\2\u04ef\u00c3\3\2\2\2\u04f0\u04f4\7A\2\2\u04f1") - buf.write("\u04f3\5d\63\2\u04f2\u04f1\3\2\2\2\u04f3\u04f6\3\2\2\2") - buf.write("\u04f4\u04f2\3\2\2\2\u04f4\u04f5\3\2\2\2\u04f5\u00c5\3") - buf.write("\2\2\2\u04f6\u04f4\3\2\2\2\u04f7\u04fa\5\u00c8e\2\u04f8") - buf.write("\u04fa\5\u00dan\2\u04f9\u04f7\3\2\2\2\u04f9\u04f8\3\2") - buf.write("\2\2\u04fa\u00c7\3\2\2\2\u04fb\u04fd\5\u00caf\2\u04fc") - buf.write("\u04fb\3\2\2\2\u04fd\u0500\3\2\2\2\u04fe\u04fc\3\2\2\2") - buf.write("\u04fe\u04ff\3\2\2\2\u04ff\u0501\3\2\2\2\u0500\u04fe\3") - buf.write("\2\2\2\u0501\u0502\7\36\2\2\u0502\u0504\7h\2\2\u0503\u0505") - buf.write("\5X-\2\u0504\u0503\3\2\2\2\u0504\u0505\3\2\2\2\u0505\u0507") - buf.write("\3\2\2\2\u0506\u0508\5\u00ccg\2\u0507\u0506\3\2\2\2\u0507") - buf.write("\u0508\3\2\2\2\u0508\u0509\3\2\2\2\u0509\u050a\5\u00ce") - buf.write("h\2\u050a\u00c9\3\2\2\2\u050b\u0513\5\u00e6t\2\u050c\u0513") - buf.write("\7%\2\2\u050d\u0513\7$\2\2\u050e\u0513\7#\2\2\u050f\u0513") - buf.write("\7\3\2\2\u0510\u0513\7(\2\2\u0511\u0513\7)\2\2\u0512\u050b") - buf.write("\3\2\2\2\u0512\u050c\3\2\2\2\u0512\u050d\3\2\2\2\u0512") - buf.write("\u050e\3\2\2\2\u0512\u050f\3\2\2\2\u0512\u0510\3\2\2\2") - buf.write("\u0512\u0511\3\2\2\2\u0513\u00cb\3\2\2\2\u0514\u0515\7") - buf.write("\23\2\2\u0515\u0516\5`\61\2\u0516\u00cd\3\2\2\2\u0517") - buf.write("\u051b\7=\2\2\u0518\u051a\5\u00d0i\2\u0519\u0518\3\2\2") - buf.write("\2\u051a\u051d\3\2\2\2\u051b\u0519\3\2\2\2\u051b\u051c") - buf.write("\3\2\2\2\u051c\u051e\3\2\2\2\u051d\u051b\3\2\2\2\u051e") - buf.write("\u051f\7>\2\2\u051f\u00cf\3\2\2\2\u0520\u0526\5\u00d2") - buf.write("j\2\u0521\u0526\5\u00d6l\2\u0522\u0526\5R*\2\u0523\u0526") - buf.write("\5\u00c6d\2\u0524\u0526\7A\2\2\u0525\u0520\3\2\2\2\u0525") - buf.write("\u0521\3\2\2\2\u0525\u0522\3\2\2\2\u0525\u0523\3\2\2\2") - buf.write("\u0525\u0524\3\2\2\2\u0526\u00d1\3\2\2\2\u0527\u0529\5") - buf.write("\u00d4k\2\u0528\u0527\3\2\2\2\u0529\u052c\3\2\2\2\u052a") - buf.write("\u0528\3\2\2\2\u052a\u052b\3\2\2\2\u052b\u052d\3\2\2\2") - buf.write("\u052c\u052a\3\2\2\2\u052d\u052e\5t;\2\u052e\u052f\5l") - buf.write("\67\2\u052f\u0530\7A\2\2\u0530\u00d3\3\2\2\2\u0531\u0536") - buf.write("\5\u00e6t\2\u0532\u0536\7%\2\2\u0533\u0536\7(\2\2\u0534") - buf.write("\u0536\7\24\2\2\u0535\u0531\3\2\2\2\u0535\u0532\3\2\2") - buf.write("\2\u0535\u0533\3\2\2\2\u0535\u0534\3\2\2\2\u0536\u00d5") - buf.write("\3\2\2\2\u0537\u0539\5\u00d8m\2\u0538\u0537\3\2\2\2\u0539") - buf.write("\u053c\3\2\2\2\u053a\u0538\3\2\2\2\u053a\u053b\3\2\2\2") - buf.write("\u053b\u053d\3\2\2\2\u053c\u053a\3\2\2\2\u053d\u053e\5") - buf.write("\u0090I\2\u053e\u053f\5\u00a8U\2\u053f\u00d7\3\2\2\2\u0540") - buf.write("\u0547\5\u00e6t\2\u0541\u0547\7%\2\2\u0542\u0547\7\3\2") - buf.write("\2\u0543\u0547\7\16\2\2\u0544\u0547\7(\2\2\u0545\u0547") - buf.write("\7)\2\2\u0546\u0540\3\2\2\2\u0546\u0541\3\2\2\2\u0546") - buf.write("\u0542\3\2\2\2\u0546\u0543\3\2\2\2\u0546\u0544\3\2\2\2") - buf.write("\u0546\u0545\3\2\2\2\u0547\u00d9\3\2\2\2\u0548\u054a\5") - buf.write("\u00caf\2\u0549\u0548\3\2\2\2\u054a\u054d\3\2\2\2\u054b") - buf.write("\u0549\3\2\2\2\u054b\u054c\3\2\2\2\u054c\u054e\3\2\2\2") - buf.write("\u054d\u054b\3\2\2\2\u054e\u054f\7i\2\2\u054f\u0550\7") - buf.write("\36\2\2\u0550\u0551\7h\2\2\u0551\u0552\5\u00dco\2\u0552") - buf.write("\u00db\3\2\2\2\u0553\u0557\7=\2\2\u0554\u0556\5\u00de") - buf.write("p\2\u0555\u0554\3\2\2\2\u0556\u0559\3\2\2\2\u0557\u0555") - buf.write("\3\2\2\2\u0557\u0558\3\2\2\2\u0558\u055a\3\2\2\2\u0559") - buf.write("\u0557\3\2\2\2\u055a\u055b\7>\2\2\u055b\u00dd\3\2\2\2") - buf.write("\u055c\u0562\5\u00e0q\2\u055d\u0562\5\u00d2j\2\u055e\u0562") - buf.write("\5R*\2\u055f\u0562\5\u00c6d\2\u0560\u0562\7A\2\2\u0561") - buf.write("\u055c\3\2\2\2\u0561\u055d\3\2\2\2\u0561\u055e\3\2\2\2") - buf.write("\u0561\u055f\3\2\2\2\u0561\u0560\3\2\2\2\u0562\u00df\3") - buf.write("\2\2\2\u0563\u0565\5\u00e2r\2\u0564\u0563\3\2\2\2\u0565") - buf.write("\u0568\3\2\2\2\u0566\u0564\3\2\2\2\u0566\u0567\3\2\2\2") - buf.write("\u0567\u0569\3\2\2\2\u0568\u0566\3\2\2\2\u0569\u056a\5") - buf.write("t;\2\u056a\u056b\7h\2\2\u056b\u056c\7;\2\2\u056c\u056e") - buf.write("\7<\2\2\u056d\u056f\5 \21\2\u056e\u056d\3\2\2\2\u056e") - buf.write("\u056f\3\2\2\2\u056f\u0571\3\2\2\2\u0570\u0572\5\u00e4") - buf.write("s\2\u0571\u0570\3\2\2\2\u0571\u0572\3\2\2\2\u0572\u0573") - buf.write("\3\2\2\2\u0573\u0574\7A\2\2\u0574\u00e1\3\2\2\2\u0575") - buf.write("\u0579\5\u00e6t\2\u0576\u0579\7%\2\2\u0577\u0579\7\3\2") - buf.write("\2\u0578\u0575\3\2\2\2\u0578\u0576\3\2\2\2\u0578\u0577") - buf.write("\3\2\2\2\u0579\u00e3\3\2\2\2\u057a\u057b\7\16\2\2\u057b") - buf.write("\u057c\5\u00eex\2\u057c\u00e5\3\2\2\2\u057d\u0581\5\u00e8") - buf.write("u\2\u057e\u0581\5\u00f4{\2\u057f\u0581\5\u00f6|\2\u0580") - buf.write("\u057d\3\2\2\2\u0580\u057e\3\2\2\2\u0580\u057f\3\2\2\2") - buf.write("\u0581\u00e7\3\2\2\2\u0582\u0583\7i\2\2\u0583\u0584\5") - buf.write("\66\34\2\u0584\u0586\7;\2\2\u0585\u0587\5\u00eav\2\u0586") - buf.write("\u0585\3\2\2\2\u0586\u0587\3\2\2\2\u0587\u0588\3\2\2\2") - buf.write("\u0588\u0589\7<\2\2\u0589\u00e9\3\2\2\2\u058a\u058f\5") - buf.write("\u00ecw\2\u058b\u058c\7B\2\2\u058c\u058e\5\u00ecw\2\u058d") - buf.write("\u058b\3\2\2\2\u058e\u0591\3\2\2\2\u058f\u058d\3\2\2\2") - buf.write("\u058f\u0590\3\2\2\2\u0590\u00eb\3\2\2\2\u0591\u058f\3") - buf.write("\2\2\2\u0592\u0593\7h\2\2\u0593\u0594\7D\2\2\u0594\u0595") - buf.write("\5\u00eex\2\u0595\u00ed\3\2\2\2\u0596\u059a\5\u01b0\u00d9") - buf.write("\2\u0597\u059a\5\u00f0y\2\u0598\u059a\5\u00e6t\2\u0599") - buf.write("\u0596\3\2\2\2\u0599\u0597\3\2\2\2\u0599\u0598\3\2\2\2") - buf.write("\u059a\u00ef\3\2\2\2\u059b\u059d\7=\2\2\u059c\u059e\5") - buf.write("\u00f2z\2\u059d\u059c\3\2\2\2\u059d\u059e\3\2\2\2\u059e") - buf.write("\u05a0\3\2\2\2\u059f\u05a1\7B\2\2\u05a0\u059f\3\2\2\2") - buf.write("\u05a0\u05a1\3\2\2\2\u05a1\u05a2\3\2\2\2\u05a2\u05a3\7") - buf.write(">\2\2\u05a3\u00f1\3\2\2\2\u05a4\u05a9\5\u00eex\2\u05a5") - buf.write("\u05a6\7B\2\2\u05a6\u05a8\5\u00eex\2\u05a7\u05a5\3\2\2") - buf.write("\2\u05a8\u05ab\3\2\2\2\u05a9\u05a7\3\2\2\2\u05a9\u05aa") - buf.write("\3\2\2\2\u05aa\u00f3\3\2\2\2\u05ab\u05a9\3\2\2\2\u05ac") - buf.write("\u05ad\7i\2\2\u05ad\u05ae\5\66\34\2\u05ae\u00f5\3\2\2") - buf.write("\2\u05af\u05b0\7i\2\2\u05b0\u05b1\5\66\34\2\u05b1\u05b2") - buf.write("\7;\2\2\u05b2\u05b3\5\u00eex\2\u05b3\u05b4\7<\2\2\u05b4") - buf.write("\u00f7\3\2\2\2\u05b5\u05b7\7=\2\2\u05b6\u05b8\5\u00fa") - buf.write("~\2\u05b7\u05b6\3\2\2\2\u05b7\u05b8\3\2\2\2\u05b8\u05ba") - buf.write("\3\2\2\2\u05b9\u05bb\7B\2\2\u05ba\u05b9\3\2\2\2\u05ba") - buf.write("\u05bb\3\2\2\2\u05bb\u05bc\3\2\2\2\u05bc\u05bd\7>\2\2") - buf.write("\u05bd\u00f9\3\2\2\2\u05be\u05c3\5r:\2\u05bf\u05c0\7B") - buf.write("\2\2\u05c0\u05c2\5r:\2\u05c1\u05bf\3\2\2\2\u05c2\u05c5") - buf.write("\3\2\2\2\u05c3\u05c1\3\2\2\2\u05c3\u05c4\3\2\2\2\u05c4") - buf.write("\u00fb\3\2\2\2\u05c5\u05c3\3\2\2\2\u05c6\u05c8\7=\2\2") - buf.write("\u05c7\u05c9\5\u00fe\u0080\2\u05c8\u05c7\3\2\2\2\u05c8") - buf.write("\u05c9\3\2\2\2\u05c9\u05ca\3\2\2\2\u05ca\u05cb\7>\2\2") - buf.write("\u05cb\u00fd\3\2\2\2\u05cc\u05ce\5\u0100\u0081\2\u05cd") - buf.write("\u05cc\3\2\2\2\u05ce\u05cf\3\2\2\2\u05cf\u05cd\3\2\2\2") - buf.write("\u05cf\u05d0\3\2\2\2\u05d0\u00ff\3\2\2\2\u05d1\u05d5\5") - buf.write("\u0102\u0082\2\u05d2\u05d5\5R*\2\u05d3\u05d5\5\u0106\u0084") - buf.write("\2\u05d4\u05d1\3\2\2\2\u05d4\u05d2\3\2\2\2\u05d4\u05d3") - buf.write("\3\2\2\2\u05d5\u0101\3\2\2\2\u05d6\u05d7\5\u0104\u0083") - buf.write("\2\u05d7\u05d8\7A\2\2\u05d8\u0103\3\2\2\2\u05d9\u05db") - buf.write("\5\u009cO\2\u05da\u05d9\3\2\2\2\u05db\u05de\3\2\2\2\u05dc") - buf.write("\u05da\3\2\2\2\u05dc\u05dd\3\2\2\2\u05dd\u05df\3\2\2\2") - buf.write("\u05de\u05dc\3\2\2\2\u05df\u05e0\5t;\2\u05e0\u05e1\5l") - buf.write("\67\2\u05e1\u0105\3\2\2\2\u05e2\u05e9\5\u010a\u0086\2") - buf.write("\u05e3\u05e9\5\u010e\u0088\2\u05e4\u05e9\5\u0116\u008c") - buf.write("\2\u05e5\u05e9\5\u0118\u008d\2\u05e6\u05e9\5\u012a\u0096") - buf.write("\2\u05e7\u05e9\5\u0130\u0099\2\u05e8\u05e2\3\2\2\2\u05e8") - buf.write("\u05e3\3\2\2\2\u05e8\u05e4\3\2\2\2\u05e8\u05e5\3\2\2\2") - buf.write("\u05e8\u05e6\3\2\2\2\u05e8\u05e7\3\2\2\2\u05e9\u0107\3") - buf.write("\2\2\2\u05ea\u05f0\5\u010a\u0086\2\u05eb\u05f0\5\u0110") - buf.write("\u0089\2\u05ec\u05f0\5\u011a\u008e\2\u05ed\u05f0\5\u012c") - buf.write("\u0097\2\u05ee\u05f0\5\u0132\u009a\2\u05ef\u05ea\3\2\2") - buf.write("\2\u05ef\u05eb\3\2\2\2\u05ef\u05ec\3\2\2\2\u05ef\u05ed") - buf.write("\3\2\2\2\u05ef\u05ee\3\2\2\2\u05f0\u0109\3\2\2\2\u05f1") - buf.write("\u05fe\5\u00fc\177\2\u05f2\u05fe\5\u010c\u0087\2\u05f3") - buf.write("\u05fe\5\u0112\u008a\2\u05f4\u05fe\5\u011c\u008f\2\u05f5") - buf.write("\u05fe\5\u011e\u0090\2\u05f6\u05fe\5\u012e\u0098\2\u05f7") - buf.write("\u05fe\5\u0142\u00a2\2\u05f8\u05fe\5\u0144\u00a3\2\u05f9") - buf.write("\u05fe\5\u0146\u00a4\2\u05fa\u05fe\5\u014a\u00a6\2\u05fb") - buf.write("\u05fe\5\u0148\u00a5\2\u05fc\u05fe\5\u014c\u00a7\2\u05fd") - buf.write("\u05f1\3\2\2\2\u05fd\u05f2\3\2\2\2\u05fd\u05f3\3\2\2\2") - buf.write("\u05fd\u05f4\3\2\2\2\u05fd\u05f5\3\2\2\2\u05fd\u05f6\3") - buf.write("\2\2\2\u05fd\u05f7\3\2\2\2\u05fd\u05f8\3\2\2\2\u05fd\u05f9") - buf.write("\3\2\2\2\u05fd\u05fa\3\2\2\2\u05fd\u05fb\3\2\2\2\u05fd") - buf.write("\u05fc\3\2\2\2\u05fe\u010b\3\2\2\2\u05ff\u0600\7A\2\2") - buf.write("\u0600\u010d\3\2\2\2\u0601\u0602\7h\2\2\u0602\u0603\7") - buf.write("J\2\2\u0603\u0604\5\u0106\u0084\2\u0604\u010f\3\2\2\2") - buf.write("\u0605\u0606\7h\2\2\u0606\u0607\7J\2\2\u0607\u0608\5\u0108") - buf.write("\u0085\2\u0608\u0111\3\2\2\2\u0609\u060a\5\u0114\u008b") - buf.write("\2\u060a\u060b\7A\2\2\u060b\u0113\3\2\2\2\u060c\u0614") - buf.write("\5\u01aa\u00d6\2\u060d\u0614\5\u01c8\u00e5\2\u060e\u0614") - buf.write("\5\u01ca\u00e6\2\u060f\u0614\5\u01d0\u00e9\2\u0610\u0614") - buf.write("\5\u01d4\u00eb\2\u0611\u0614\5\u0188\u00c5\2\u0612\u0614") - buf.write("\5\u0174\u00bb\2\u0613\u060c\3\2\2\2\u0613\u060d\3\2\2") - buf.write("\2\u0613\u060e\3\2\2\2\u0613\u060f\3\2\2\2\u0613\u0610") - buf.write("\3\2\2\2\u0613\u0611\3\2\2\2\u0613\u0612\3\2\2\2\u0614") - buf.write("\u0115\3\2\2\2\u0615\u0616\7\30\2\2\u0616\u0617\7;\2\2") - buf.write("\u0617\u0618\5\u019e\u00d0\2\u0618\u0619\7<\2\2\u0619") - buf.write("\u061a\5\u0106\u0084\2\u061a\u0117\3\2\2\2\u061b\u061c") - buf.write("\7\30\2\2\u061c\u061d\7;\2\2\u061d\u061e\5\u019e\u00d0") - buf.write("\2\u061e\u061f\7<\2\2\u061f\u0620\5\u0108\u0085\2\u0620") - buf.write("\u0621\7\21\2\2\u0621\u0622\5\u0106\u0084\2\u0622\u0119") - buf.write("\3\2\2\2\u0623\u0624\7\30\2\2\u0624\u0625\7;\2\2\u0625") - buf.write("\u0626\5\u019e\u00d0\2\u0626\u0627\7<\2\2\u0627\u0628") - buf.write("\5\u0108\u0085\2\u0628\u0629\7\21\2\2\u0629\u062a\5\u0108") - buf.write("\u0085\2\u062a\u011b\3\2\2\2\u062b\u062c\7\4\2\2\u062c") - buf.write("\u062d\5\u019e\u00d0\2\u062d\u062e\7A\2\2\u062e\u0636") - buf.write("\3\2\2\2\u062f\u0630\7\4\2\2\u0630\u0631\5\u019e\u00d0") - buf.write("\2\u0631\u0632\7J\2\2\u0632\u0633\5\u019e\u00d0\2\u0633") - buf.write("\u0634\7A\2\2\u0634\u0636\3\2\2\2\u0635\u062b\3\2\2\2") - buf.write("\u0635\u062f\3\2\2\2\u0636\u011d\3\2\2\2\u0637\u0638\7") - buf.write("+\2\2\u0638\u0639\7;\2\2\u0639\u063a\5\u019e\u00d0\2\u063a") - buf.write("\u063b\7<\2\2\u063b\u063c\5\u0120\u0091\2\u063c\u011f") - buf.write("\3\2\2\2\u063d\u0641\7=\2\2\u063e\u0640\5\u0122\u0092") - buf.write("\2\u063f\u063e\3\2\2\2\u0640\u0643\3\2\2\2\u0641\u063f") - buf.write("\3\2\2\2\u0641\u0642\3\2\2\2\u0642\u0647\3\2\2\2\u0643") - buf.write("\u0641\3\2\2\2\u0644\u0646\5\u0126\u0094\2\u0645\u0644") - buf.write("\3\2\2\2\u0646\u0649\3\2\2\2\u0647\u0645\3\2\2\2\u0647") - buf.write("\u0648\3\2\2\2\u0648\u064a\3\2\2\2\u0649\u0647\3\2\2\2") - buf.write("\u064a\u064b\7>\2\2\u064b\u0121\3\2\2\2\u064c\u064d\5") - buf.write("\u0124\u0093\2\u064d\u064e\5\u00fe\u0080\2\u064e\u0123") - buf.write("\3\2\2\2\u064f\u0653\5\u0126\u0094\2\u0650\u0652\5\u0126") - buf.write("\u0094\2\u0651\u0650\3\2\2\2\u0652\u0655\3\2\2\2\u0653") - buf.write("\u0651\3\2\2\2\u0653\u0654\3\2\2\2\u0654\u0125\3\2\2\2") - buf.write("\u0655\u0653\3\2\2\2\u0656\u0657\7\b\2\2\u0657\u0658\5") - buf.write("\u019c\u00cf\2\u0658\u0659\7J\2\2\u0659\u0661\3\2\2\2") - buf.write("\u065a\u065b\7\b\2\2\u065b\u065c\5\u0128\u0095\2\u065c") - buf.write("\u065d\7J\2\2\u065d\u0661\3\2\2\2\u065e\u065f\7\16\2\2") - buf.write("\u065f\u0661\7J\2\2\u0660\u0656\3\2\2\2\u0660\u065a\3") - buf.write("\2\2\2\u0660\u065e\3\2\2\2\u0661\u0127\3\2\2\2\u0662\u0663") - buf.write("\7h\2\2\u0663\u0129\3\2\2\2\u0664\u0665\7\64\2\2\u0665") - buf.write("\u0666\7;\2\2\u0666\u0667\5\u019e\u00d0\2\u0667\u0668") - buf.write("\7<\2\2\u0668\u0669\5\u0106\u0084\2\u0669\u012b\3\2\2") - buf.write("\2\u066a\u066b\7\64\2\2\u066b\u066c\7;\2\2\u066c\u066d") - buf.write("\5\u019e\u00d0\2\u066d\u066e\7<\2\2\u066e\u066f\5\u0108") - buf.write("\u0085\2\u066f\u012d\3\2\2\2\u0670\u0671\7\17\2\2\u0671") - buf.write("\u0672\5\u0106\u0084\2\u0672\u0673\7\64\2\2\u0673\u0674") - buf.write("\7;\2\2\u0674\u0675\5\u019e\u00d0\2\u0675\u0676\7<\2\2") - buf.write("\u0676\u0677\7A\2\2\u0677\u012f\3\2\2\2\u0678\u067b\5") - buf.write("\u0134\u009b\2\u0679\u067b\5\u013e\u00a0\2\u067a\u0678") - buf.write("\3\2\2\2\u067a\u0679\3\2\2\2\u067b\u0131\3\2\2\2\u067c") - buf.write("\u067f\5\u0136\u009c\2\u067d\u067f\5\u0140\u00a1\2\u067e") - buf.write("\u067c\3\2\2\2\u067e\u067d\3\2\2\2\u067f\u0133\3\2\2\2") - buf.write("\u0680\u0681\7\27\2\2\u0681\u0683\7;\2\2\u0682\u0684\5") - buf.write("\u0138\u009d\2\u0683\u0682\3\2\2\2\u0683\u0684\3\2\2\2") - buf.write("\u0684\u0685\3\2\2\2\u0685\u0687\7A\2\2\u0686\u0688\5") - buf.write("\u019e\u00d0\2\u0687\u0686\3\2\2\2\u0687\u0688\3\2\2\2") - buf.write("\u0688\u0689\3\2\2\2\u0689\u068b\7A\2\2\u068a\u068c\5") - buf.write("\u013a\u009e\2\u068b\u068a\3\2\2\2\u068b\u068c\3\2\2\2") - buf.write("\u068c\u068d\3\2\2\2\u068d\u068e\7<\2\2\u068e\u068f\5") - buf.write("\u0106\u0084\2\u068f\u0135\3\2\2\2\u0690\u0691\7\27\2") - buf.write("\2\u0691\u0693\7;\2\2\u0692\u0694\5\u0138\u009d\2\u0693") - buf.write("\u0692\3\2\2\2\u0693\u0694\3\2\2\2\u0694\u0695\3\2\2\2") - buf.write("\u0695\u0697\7A\2\2\u0696\u0698\5\u019e\u00d0\2\u0697") - buf.write("\u0696\3\2\2\2\u0697\u0698\3\2\2\2\u0698\u0699\3\2\2\2") - buf.write("\u0699\u069b\7A\2\2\u069a\u069c\5\u013a\u009e\2\u069b") - buf.write("\u069a\3\2\2\2\u069b\u069c\3\2\2\2\u069c\u069d\3\2\2\2") - buf.write("\u069d\u069e\7<\2\2\u069e\u069f\5\u0108\u0085\2\u069f") - buf.write("\u0137\3\2\2\2\u06a0\u06a3\5\u013c\u009f\2\u06a1\u06a3") - buf.write("\5\u0104\u0083\2\u06a2\u06a0\3\2\2\2\u06a2\u06a1\3\2\2") - buf.write("\2\u06a3\u0139\3\2\2\2\u06a4\u06a5\5\u013c\u009f\2\u06a5") - buf.write("\u013b\3\2\2\2\u06a6\u06ab\5\u0114\u008b\2\u06a7\u06a8") - buf.write("\7B\2\2\u06a8\u06aa\5\u0114\u008b\2\u06a9\u06a7\3\2\2") - buf.write("\2\u06aa\u06ad\3\2\2\2\u06ab\u06a9\3\2\2\2\u06ab\u06ac") - buf.write("\3\2\2\2\u06ac\u013d\3\2\2\2\u06ad\u06ab\3\2\2\2\u06ae") - buf.write("\u06af\7\27\2\2\u06af\u06b3\7;\2\2\u06b0\u06b2\5\u009c") - buf.write("O\2\u06b1\u06b0\3\2\2\2\u06b2\u06b5\3\2\2\2\u06b3\u06b1") - buf.write("\3\2\2\2\u06b3\u06b4\3\2\2\2\u06b4\u06b6\3\2\2\2\u06b5") - buf.write("\u06b3\3\2\2\2\u06b6\u06b7\5t;\2\u06b7\u06b8\5p9\2\u06b8") - buf.write("\u06b9\7J\2\2\u06b9\u06ba\5\u019e\u00d0\2\u06ba\u06bb") - buf.write("\7<\2\2\u06bb\u06bc\5\u0106\u0084\2\u06bc\u013f\3\2\2") - buf.write("\2\u06bd\u06be\7\27\2\2\u06be\u06c2\7;\2\2\u06bf\u06c1") - buf.write("\5\u009cO\2\u06c0\u06bf\3\2\2\2\u06c1\u06c4\3\2\2\2\u06c2") - buf.write("\u06c0\3\2\2\2\u06c2\u06c3\3\2\2\2\u06c3\u06c5\3\2\2\2") - buf.write("\u06c4\u06c2\3\2\2\2\u06c5\u06c6\5t;\2\u06c6\u06c7\5p") - buf.write("9\2\u06c7\u06c8\7J\2\2\u06c8\u06c9\5\u019e\u00d0\2\u06c9") - buf.write("\u06ca\7<\2\2\u06ca\u06cb\5\u0108\u0085\2\u06cb\u0141") - buf.write("\3\2\2\2\u06cc\u06ce\7\6\2\2\u06cd\u06cf\7h\2\2\u06ce") - buf.write("\u06cd\3\2\2\2\u06ce\u06cf\3\2\2\2\u06cf\u06d0\3\2\2\2") - buf.write("\u06d0\u06d1\7A\2\2\u06d1\u0143\3\2\2\2\u06d2\u06d4\7") - buf.write("\r\2\2\u06d3\u06d5\7h\2\2\u06d4\u06d3\3\2\2\2\u06d4\u06d5") - buf.write("\3\2\2\2\u06d5\u06d6\3\2\2\2\u06d6\u06d7\7A\2\2\u06d7") - buf.write("\u0145\3\2\2\2\u06d8\u06da\7&\2\2\u06d9\u06db\5\u019e") - buf.write("\u00d0\2\u06da\u06d9\3\2\2\2\u06da\u06db\3\2\2\2\u06db") - buf.write("\u06dc\3\2\2\2\u06dc\u06dd\7A\2\2\u06dd\u0147\3\2\2\2") - buf.write("\u06de\u06df\7.\2\2\u06df\u06e0\5\u019e\u00d0\2\u06e0") - buf.write("\u06e1\7A\2\2\u06e1\u0149\3\2\2\2\u06e2\u06e3\7,\2\2\u06e3") - buf.write("\u06e4\7;\2\2\u06e4\u06e5\5\u019e\u00d0\2\u06e5\u06e6") - buf.write("\7<\2\2\u06e6\u06e7\5\u00fc\177\2\u06e7\u014b\3\2\2\2") - buf.write("\u06e8\u06e9\7\61\2\2\u06e9\u06ea\5\u00fc\177\2\u06ea") - buf.write("\u06eb\5\u014e\u00a8\2\u06eb\u06f5\3\2\2\2\u06ec\u06ed") - buf.write("\7\61\2\2\u06ed\u06ef\5\u00fc\177\2\u06ee\u06f0\5\u014e") - buf.write("\u00a8\2\u06ef\u06ee\3\2\2\2\u06ef\u06f0\3\2\2\2\u06f0") - buf.write("\u06f1\3\2\2\2\u06f1\u06f2\5\u0156\u00ac\2\u06f2\u06f5") - buf.write("\3\2\2\2\u06f3\u06f5\5\u0158\u00ad\2\u06f4\u06e8\3\2\2") - buf.write("\2\u06f4\u06ec\3\2\2\2\u06f4\u06f3\3\2\2\2\u06f5\u014d") - buf.write("\3\2\2\2\u06f6\u06fa\5\u0150\u00a9\2\u06f7\u06f9\5\u0150") - buf.write("\u00a9\2\u06f8\u06f7\3\2\2\2\u06f9\u06fc\3\2\2\2\u06fa") - buf.write("\u06f8\3\2\2\2\u06fa\u06fb\3\2\2\2\u06fb\u014f\3\2\2\2") - buf.write("\u06fc\u06fa\3\2\2\2\u06fd\u06fe\7\t\2\2\u06fe\u06ff\7") - buf.write(";\2\2\u06ff\u0700\5\u0152\u00aa\2\u0700\u0701\7<\2\2\u0701") - buf.write("\u0702\5\u00fc\177\2\u0702\u0151\3\2\2\2\u0703\u0705\5") - buf.write("\u009cO\2\u0704\u0703\3\2\2\2\u0705\u0708\3\2\2\2\u0706") - buf.write("\u0704\3\2\2\2\u0706\u0707\3\2\2\2\u0707\u0709\3\2\2\2") - buf.write("\u0708\u0706\3\2\2\2\u0709\u070a\5\u0154\u00ab\2\u070a") - buf.write("\u070b\5p9\2\u070b\u0153\3\2\2\2\u070c\u0711\5|?\2\u070d") - buf.write("\u070e\7X\2\2\u070e\u0710\5\20\t\2\u070f\u070d\3\2\2\2") - buf.write("\u0710\u0713\3\2\2\2\u0711\u070f\3\2\2\2\u0711\u0712\3") - buf.write("\2\2\2\u0712\u0155\3\2\2\2\u0713\u0711\3\2\2\2\u0714\u0715") - buf.write("\7\25\2\2\u0715\u0716\5\u00fc\177\2\u0716\u0157\3\2\2") - buf.write("\2\u0717\u0718\7\61\2\2\u0718\u0719\5\u015a\u00ae\2\u0719") - buf.write("\u071b\5\u00fc\177\2\u071a\u071c\5\u014e\u00a8\2\u071b") - buf.write("\u071a\3\2\2\2\u071b\u071c\3\2\2\2\u071c\u071e\3\2\2\2") - buf.write("\u071d\u071f\5\u0156\u00ac\2\u071e\u071d\3\2\2\2\u071e") - buf.write("\u071f\3\2\2\2\u071f\u0159\3\2\2\2\u0720\u0721\7;\2\2") - buf.write("\u0721\u0723\5\u015c\u00af\2\u0722\u0724\7A\2\2\u0723") - buf.write("\u0722\3\2\2\2\u0723\u0724\3\2\2\2\u0724\u0725\3\2\2\2") - buf.write("\u0725\u0726\7<\2\2\u0726\u015b\3\2\2\2\u0727\u072c\5") - buf.write("\u015e\u00b0\2\u0728\u0729\7A\2\2\u0729\u072b\5\u015e") - buf.write("\u00b0\2\u072a\u0728\3\2\2\2\u072b\u072e\3\2\2\2\u072c") - buf.write("\u072a\3\2\2\2\u072c\u072d\3\2\2\2\u072d\u015d\3\2\2\2") - buf.write("\u072e\u072c\3\2\2\2\u072f\u0731\5\u009cO\2\u0730\u072f") - buf.write("\3\2\2\2\u0731\u0734\3\2\2\2\u0732\u0730\3\2\2\2\u0732") - buf.write("\u0733\3\2\2\2\u0733\u0735\3\2\2\2\u0734\u0732\3\2\2\2") - buf.write("\u0735\u0736\5t;\2\u0736\u0737\5p9\2\u0737\u0738\7D\2") - buf.write("\2\u0738\u0739\5\u019e\u00d0\2\u0739\u015f\3\2\2\2\u073a") - buf.write("\u073d\5\u016e\u00b8\2\u073b\u073d\5\u0196\u00cc\2\u073c") - buf.write("\u073a\3\2\2\2\u073c\u073b\3\2\2\2\u073d\u0741\3\2\2\2") - buf.write("\u073e\u0740\5\u0168\u00b5\2\u073f\u073e\3\2\2\2\u0740") - buf.write("\u0743\3\2\2\2\u0741\u073f\3\2\2\2\u0741\u0742\3\2\2\2") - buf.write("\u0742\u0161\3\2\2\2\u0743\u0741\3\2\2\2\u0744\u0762\5") - buf.write("\2\2\2\u0745\u074a\5\66\34\2\u0746\u0747\7?\2\2\u0747") - buf.write("\u0749\7@\2\2\u0748\u0746\3\2\2\2\u0749\u074c\3\2\2\2") - buf.write("\u074a\u0748\3\2\2\2\u074a\u074b\3\2\2\2\u074b\u074d\3") - buf.write("\2\2\2\u074c\u074a\3\2\2\2\u074d\u074e\7C\2\2\u074e\u074f") - buf.write("\7\13\2\2\u074f\u0762\3\2\2\2\u0750\u0751\7\62\2\2\u0751") - buf.write("\u0752\7C\2\2\u0752\u0762\7\13\2\2\u0753\u0762\7-\2\2") - buf.write("\u0754\u0755\5\66\34\2\u0755\u0756\7C\2\2\u0756\u0757") - buf.write("\7-\2\2\u0757\u0762\3\2\2\2\u0758\u0759\7;\2\2\u0759\u075a") - buf.write("\5\u019e\u00d0\2\u075a\u075b\7<\2\2\u075b\u0762\3\2\2") - buf.write("\2\u075c\u0762\5\u0174\u00bb\2\u075d\u0762\5\u017c\u00bf") - buf.write("\2\u075e\u0762\5\u0182\u00c2\2\u075f\u0762\5\u0188\u00c5") - buf.write("\2\u0760\u0762\5\u0190\u00c9\2\u0761\u0744\3\2\2\2\u0761") - buf.write("\u0745\3\2\2\2\u0761\u0750\3\2\2\2\u0761\u0753\3\2\2\2") - buf.write("\u0761\u0754\3\2\2\2\u0761\u0758\3\2\2\2\u0761\u075c\3") - buf.write("\2\2\2\u0761\u075d\3\2\2\2\u0761\u075e\3\2\2\2\u0761\u075f") - buf.write("\3\2\2\2\u0761\u0760\3\2\2\2\u0762\u0163\3\2\2\2\u0763") - buf.write("\u0764\3\2\2\2\u0764\u0165\3\2\2\2\u0765\u0782\5\2\2\2") - buf.write("\u0766\u076b\5\66\34\2\u0767\u0768\7?\2\2\u0768\u076a") - buf.write("\7@\2\2\u0769\u0767\3\2\2\2\u076a\u076d\3\2\2\2\u076b") - buf.write("\u0769\3\2\2\2\u076b\u076c\3\2\2\2\u076c\u076e\3\2\2\2") - buf.write("\u076d\u076b\3\2\2\2\u076e\u076f\7C\2\2\u076f\u0770\7") - buf.write("\13\2\2\u0770\u0782\3\2\2\2\u0771\u0772\7\62\2\2\u0772") - buf.write("\u0773\7C\2\2\u0773\u0782\7\13\2\2\u0774\u0782\7-\2\2") - buf.write("\u0775\u0776\5\66\34\2\u0776\u0777\7C\2\2\u0777\u0778") - buf.write("\7-\2\2\u0778\u0782\3\2\2\2\u0779\u077a\7;\2\2\u077a\u077b") - buf.write("\5\u019e\u00d0\2\u077b\u077c\7<\2\2\u077c\u0782\3\2\2") - buf.write("\2\u077d\u0782\5\u0174\u00bb\2\u077e\u0782\5\u017c\u00bf") - buf.write("\2\u077f\u0782\5\u0188\u00c5\2\u0780\u0782\5\u0190\u00c9") - buf.write("\2\u0781\u0765\3\2\2\2\u0781\u0766\3\2\2\2\u0781\u0771") - buf.write("\3\2\2\2\u0781\u0774\3\2\2\2\u0781\u0775\3\2\2\2\u0781") - buf.write("\u0779\3\2\2\2\u0781\u077d\3\2\2\2\u0781\u077e\3\2\2\2") - buf.write("\u0781\u077f\3\2\2\2\u0781\u0780\3\2\2\2\u0782\u0167\3") - buf.write("\2\2\2\u0783\u0789\5\u0176\u00bc\2\u0784\u0789\5\u017e") - buf.write("\u00c0\2\u0785\u0789\5\u0184\u00c3\2\u0786\u0789\5\u018a") - buf.write("\u00c6\2\u0787\u0789\5\u0192\u00ca\2\u0788\u0783\3\2\2") - buf.write("\2\u0788\u0784\3\2\2\2\u0788\u0785\3\2\2\2\u0788\u0786") - buf.write("\3\2\2\2\u0788\u0787\3\2\2\2\u0789\u0169\3\2\2\2\u078a") - buf.write("\u078b\3\2\2\2\u078b\u016b\3\2\2\2\u078c\u0791\5\u0176") - buf.write("\u00bc\2\u078d\u0791\5\u017e\u00c0\2\u078e\u0791\5\u018a") - buf.write("\u00c6\2\u078f\u0791\5\u0192\u00ca\2\u0790\u078c\3\2\2") - buf.write("\2\u0790\u078d\3\2\2\2\u0790\u078e\3\2\2\2\u0790\u078f") - buf.write("\3\2\2\2\u0791\u016d\3\2\2\2\u0792\u07bb\5\2\2\2\u0793") - buf.write("\u0798\5\66\34\2\u0794\u0795\7?\2\2\u0795\u0797\7@\2\2") - buf.write("\u0796\u0794\3\2\2\2\u0797\u079a\3\2\2\2\u0798\u0796\3") - buf.write("\2\2\2\u0798\u0799\3\2\2\2\u0799\u079b\3\2\2\2\u079a\u0798") - buf.write("\3\2\2\2\u079b\u079c\7C\2\2\u079c\u079d\7\13\2\2\u079d") - buf.write("\u07bb\3\2\2\2\u079e\u07a3\5v<\2\u079f\u07a0\7?\2\2\u07a0") - buf.write("\u07a2\7@\2\2\u07a1\u079f\3\2\2\2\u07a2\u07a5\3\2\2\2") - buf.write("\u07a3\u07a1\3\2\2\2\u07a3\u07a4\3\2\2\2\u07a4\u07a6\3") - buf.write("\2\2\2\u07a5\u07a3\3\2\2\2\u07a6\u07a7\7C\2\2\u07a7\u07a8") - buf.write("\7\13\2\2\u07a8\u07bb\3\2\2\2\u07a9\u07aa\7\62\2\2\u07aa") - buf.write("\u07ab\7C\2\2\u07ab\u07bb\7\13\2\2\u07ac\u07bb\7-\2\2") - buf.write("\u07ad\u07ae\5\66\34\2\u07ae\u07af\7C\2\2\u07af\u07b0") - buf.write("\7-\2\2\u07b0\u07bb\3\2\2\2\u07b1\u07b2\7;\2\2\u07b2\u07b3") - buf.write("\5\u019e\u00d0\2\u07b3\u07b4\7<\2\2\u07b4\u07bb\3\2\2") - buf.write("\2\u07b5\u07bb\5\u0178\u00bd\2\u07b6\u07bb\5\u0180\u00c1") - buf.write("\2\u07b7\u07bb\5\u0186\u00c4\2\u07b8\u07bb\5\u018c\u00c7") - buf.write("\2\u07b9\u07bb\5\u0194\u00cb\2\u07ba\u0792\3\2\2\2\u07ba") - buf.write("\u0793\3\2\2\2\u07ba\u079e\3\2\2\2\u07ba\u07a9\3\2\2\2") - buf.write("\u07ba\u07ac\3\2\2\2\u07ba\u07ad\3\2\2\2\u07ba\u07b1\3") - buf.write("\2\2\2\u07ba\u07b5\3\2\2\2\u07ba\u07b6\3\2\2\2\u07ba\u07b7") - buf.write("\3\2\2\2\u07ba\u07b8\3\2\2\2\u07ba\u07b9\3\2\2\2\u07bb") - buf.write("\u016f\3\2\2\2\u07bc\u07bd\3\2\2\2\u07bd\u0171\3\2\2\2") - buf.write("\u07be\u07e6\5\2\2\2\u07bf\u07c4\5\66\34\2\u07c0\u07c1") - buf.write("\7?\2\2\u07c1\u07c3\7@\2\2\u07c2\u07c0\3\2\2\2\u07c3\u07c6") - buf.write("\3\2\2\2\u07c4\u07c2\3\2\2\2\u07c4\u07c5\3\2\2\2\u07c5") - buf.write("\u07c7\3\2\2\2\u07c6\u07c4\3\2\2\2\u07c7\u07c8\7C\2\2") - buf.write("\u07c8\u07c9\7\13\2\2\u07c9\u07e6\3\2\2\2\u07ca\u07cf") - buf.write("\5v<\2\u07cb\u07cc\7?\2\2\u07cc\u07ce\7@\2\2\u07cd\u07cb") - buf.write("\3\2\2\2\u07ce\u07d1\3\2\2\2\u07cf\u07cd\3\2\2\2\u07cf") - buf.write("\u07d0\3\2\2\2\u07d0\u07d2\3\2\2\2\u07d1\u07cf\3\2\2\2") - buf.write("\u07d2\u07d3\7C\2\2\u07d3\u07d4\7\13\2\2\u07d4\u07e6\3") - buf.write("\2\2\2\u07d5\u07d6\7\62\2\2\u07d6\u07d7\7C\2\2\u07d7\u07e6") - buf.write("\7\13\2\2\u07d8\u07e6\7-\2\2\u07d9\u07da\5\66\34\2\u07da") - buf.write("\u07db\7C\2\2\u07db\u07dc\7-\2\2\u07dc\u07e6\3\2\2\2\u07dd") - buf.write("\u07de\7;\2\2\u07de\u07df\5\u019e\u00d0\2\u07df\u07e0") - buf.write("\7<\2\2\u07e0\u07e6\3\2\2\2\u07e1\u07e6\5\u0178\u00bd") - buf.write("\2\u07e2\u07e6\5\u0180\u00c1\2\u07e3\u07e6\5\u018c\u00c7") - buf.write("\2\u07e4\u07e6\5\u0194\u00cb\2\u07e5\u07be\3\2\2\2\u07e5") - buf.write("\u07bf\3\2\2\2\u07e5\u07ca\3\2\2\2\u07e5\u07d5\3\2\2\2") - buf.write("\u07e5\u07d8\3\2\2\2\u07e5\u07d9\3\2\2\2\u07e5\u07dd\3") - buf.write("\2\2\2\u07e5\u07e1\3\2\2\2\u07e5\u07e2\3\2\2\2\u07e5\u07e3") - buf.write("\3\2\2\2\u07e5\u07e4\3\2\2\2\u07e6\u0173\3\2\2\2\u07e7") - buf.write("\u07e9\7!\2\2\u07e8\u07ea\5*\26\2\u07e9\u07e8\3\2\2\2") - buf.write("\u07e9\u07ea\3\2\2\2\u07ea\u07ee\3\2\2\2\u07eb\u07ed\5") - buf.write("\u00e6t\2\u07ec\u07eb\3\2\2\2\u07ed\u07f0\3\2\2\2\u07ee") - buf.write("\u07ec\3\2\2\2\u07ee\u07ef\3\2\2\2\u07ef\u07f1\3\2\2\2") - buf.write("\u07f0\u07ee\3\2\2\2\u07f1\u07fc\7h\2\2\u07f2\u07f6\7") - buf.write("C\2\2\u07f3\u07f5\5\u00e6t\2\u07f4\u07f3\3\2\2\2\u07f5") - buf.write("\u07f8\3\2\2\2\u07f6\u07f4\3\2\2\2\u07f6\u07f7\3\2\2\2") - buf.write("\u07f7\u07f9\3\2\2\2\u07f8\u07f6\3\2\2\2\u07f9\u07fb\7") - buf.write("h\2\2\u07fa\u07f2\3\2\2\2\u07fb\u07fe\3\2\2\2\u07fc\u07fa") - buf.write("\3\2\2\2\u07fc\u07fd\3\2\2\2\u07fd\u0800\3\2\2\2\u07fe") - buf.write("\u07fc\3\2\2\2\u07ff\u0801\5\u017a\u00be\2\u0800\u07ff") - buf.write("\3\2\2\2\u0800\u0801\3\2\2\2\u0801\u0802\3\2\2\2\u0802") - buf.write("\u0804\7;\2\2\u0803\u0805\5\u018e\u00c8\2\u0804\u0803") - buf.write("\3\2\2\2\u0804\u0805\3\2\2\2\u0805\u0806\3\2\2\2\u0806") - buf.write("\u0808\7<\2\2\u0807\u0809\5b\62\2\u0808\u0807\3\2\2\2") - buf.write("\u0808\u0809\3\2\2\2\u0809\u083b\3\2\2\2\u080a\u080b\5") - buf.write(":\36\2\u080b\u080c\7C\2\2\u080c\u080e\7!\2\2\u080d\u080f") - buf.write("\5*\26\2\u080e\u080d\3\2\2\2\u080e\u080f\3\2\2\2\u080f") - buf.write("\u0813\3\2\2\2\u0810\u0812\5\u00e6t\2\u0811\u0810\3\2") - buf.write("\2\2\u0812\u0815\3\2\2\2\u0813\u0811\3\2\2\2\u0813\u0814") - buf.write("\3\2\2\2\u0814\u0816\3\2\2\2\u0815\u0813\3\2\2\2\u0816") - buf.write("\u0818\7h\2\2\u0817\u0819\5\u017a\u00be\2\u0818\u0817") - buf.write("\3\2\2\2\u0818\u0819\3\2\2\2\u0819\u081a\3\2\2\2\u081a") - buf.write("\u081c\7;\2\2\u081b\u081d\5\u018e\u00c8\2\u081c\u081b") - buf.write("\3\2\2\2\u081c\u081d\3\2\2\2\u081d\u081e\3\2\2\2\u081e") - buf.write("\u0820\7<\2\2\u081f\u0821\5b\62\2\u0820\u081f\3\2\2\2") - buf.write("\u0820\u0821\3\2\2\2\u0821\u083b\3\2\2\2\u0822\u0823\5") - buf.write("\u0160\u00b1\2\u0823\u0824\7C\2\2\u0824\u0826\7!\2\2\u0825") - buf.write("\u0827\5*\26\2\u0826\u0825\3\2\2\2\u0826\u0827\3\2\2\2") - buf.write("\u0827\u082b\3\2\2\2\u0828\u082a\5\u00e6t\2\u0829\u0828") - buf.write("\3\2\2\2\u082a\u082d\3\2\2\2\u082b\u0829\3\2\2\2\u082b") - buf.write("\u082c\3\2\2\2\u082c\u082e\3\2\2\2\u082d\u082b\3\2\2\2") - buf.write("\u082e\u0830\7h\2\2\u082f\u0831\5\u017a\u00be\2\u0830") - buf.write("\u082f\3\2\2\2\u0830\u0831\3\2\2\2\u0831\u0832\3\2\2\2") - buf.write("\u0832\u0834\7;\2\2\u0833\u0835\5\u018e\u00c8\2\u0834") - buf.write("\u0833\3\2\2\2\u0834\u0835\3\2\2\2\u0835\u0836\3\2\2\2") - buf.write("\u0836\u0838\7<\2\2\u0837\u0839\5b\62\2\u0838\u0837\3") - buf.write("\2\2\2\u0838\u0839\3\2\2\2\u0839\u083b\3\2\2\2\u083a\u07e7") - buf.write("\3\2\2\2\u083a\u080a\3\2\2\2\u083a\u0822\3\2\2\2\u083b") - buf.write("\u0175\3\2\2\2\u083c\u083d\7C\2\2\u083d\u083f\7!\2\2\u083e") - buf.write("\u0840\5*\26\2\u083f\u083e\3\2\2\2\u083f\u0840\3\2\2\2") - buf.write("\u0840\u0844\3\2\2\2\u0841\u0843\5\u00e6t\2\u0842\u0841") - buf.write("\3\2\2\2\u0843\u0846\3\2\2\2\u0844\u0842\3\2\2\2\u0844") - buf.write("\u0845\3\2\2\2\u0845\u0847\3\2\2\2\u0846\u0844\3\2\2\2") - buf.write("\u0847\u0849\7h\2\2\u0848\u084a\5\u017a\u00be\2\u0849") - buf.write("\u0848\3\2\2\2\u0849\u084a\3\2\2\2\u084a\u084b\3\2\2\2") - buf.write("\u084b\u084d\7;\2\2\u084c\u084e\5\u018e\u00c8\2\u084d") - buf.write("\u084c\3\2\2\2\u084d\u084e\3\2\2\2\u084e\u084f\3\2\2\2") - buf.write("\u084f\u0851\7<\2\2\u0850\u0852\5b\62\2\u0851\u0850\3") - buf.write("\2\2\2\u0851\u0852\3\2\2\2\u0852\u0177\3\2\2\2\u0853\u0855") - buf.write("\7!\2\2\u0854\u0856\5*\26\2\u0855\u0854\3\2\2\2\u0855") - buf.write("\u0856\3\2\2\2\u0856\u085a\3\2\2\2\u0857\u0859\5\u00e6") - buf.write("t\2\u0858\u0857\3\2\2\2\u0859\u085c\3\2\2\2\u085a\u0858") - buf.write("\3\2\2\2\u085a\u085b\3\2\2\2\u085b\u085d\3\2\2\2\u085c") - buf.write("\u085a\3\2\2\2\u085d\u0868\7h\2\2\u085e\u0862\7C\2\2\u085f") - buf.write("\u0861\5\u00e6t\2\u0860\u085f\3\2\2\2\u0861\u0864\3\2") - buf.write("\2\2\u0862\u0860\3\2\2\2\u0862\u0863\3\2\2\2\u0863\u0865") - buf.write("\3\2\2\2\u0864\u0862\3\2\2\2\u0865\u0867\7h\2\2\u0866") - buf.write("\u085e\3\2\2\2\u0867\u086a\3\2\2\2\u0868\u0866\3\2\2\2") - buf.write("\u0868\u0869\3\2\2\2\u0869\u086c\3\2\2\2\u086a\u0868\3") - buf.write("\2\2\2\u086b\u086d\5\u017a\u00be\2\u086c\u086b\3\2\2\2") - buf.write("\u086c\u086d\3\2\2\2\u086d\u086e\3\2\2\2\u086e\u0870\7") - buf.write(";\2\2\u086f\u0871\5\u018e\u00c8\2\u0870\u086f\3\2\2\2") - buf.write("\u0870\u0871\3\2\2\2\u0871\u0872\3\2\2\2\u0872\u0874\7") - buf.write("<\2\2\u0873\u0875\5b\62\2\u0874\u0873\3\2\2\2\u0874\u0875") - buf.write("\3\2\2\2\u0875\u088f\3\2\2\2\u0876\u0877\5:\36\2\u0877") - buf.write("\u0878\7C\2\2\u0878\u087a\7!\2\2\u0879\u087b\5*\26\2\u087a") - buf.write("\u0879\3\2\2\2\u087a\u087b\3\2\2\2\u087b\u087f\3\2\2\2") - buf.write("\u087c\u087e\5\u00e6t\2\u087d\u087c\3\2\2\2\u087e\u0881") - buf.write("\3\2\2\2\u087f\u087d\3\2\2\2\u087f\u0880\3\2\2\2\u0880") - buf.write("\u0882\3\2\2\2\u0881\u087f\3\2\2\2\u0882\u0884\7h\2\2") - buf.write("\u0883\u0885\5\u017a\u00be\2\u0884\u0883\3\2\2\2\u0884") - buf.write("\u0885\3\2\2\2\u0885\u0886\3\2\2\2\u0886\u0888\7;\2\2") - buf.write("\u0887\u0889\5\u018e\u00c8\2\u0888\u0887\3\2\2\2\u0888") - buf.write("\u0889\3\2\2\2\u0889\u088a\3\2\2\2\u088a\u088c\7<\2\2") - buf.write("\u088b\u088d\5b\62\2\u088c\u088b\3\2\2\2\u088c\u088d\3") - buf.write("\2\2\2\u088d\u088f\3\2\2\2\u088e\u0853\3\2\2\2\u088e\u0876") - buf.write("\3\2\2\2\u088f\u0179\3\2\2\2\u0890\u0894\5*\26\2\u0891") - buf.write("\u0892\7F\2\2\u0892\u0894\7E\2\2\u0893\u0890\3\2\2\2\u0893") - buf.write("\u0891\3\2\2\2\u0894\u017b\3\2\2\2\u0895\u0896\5\u0160") - buf.write("\u00b1\2\u0896\u0897\7C\2\2\u0897\u0898\7h\2\2\u0898\u08a3") - buf.write("\3\2\2\2\u0899\u089a\7*\2\2\u089a\u089b\7C\2\2\u089b\u08a3") - buf.write("\7h\2\2\u089c\u089d\5\66\34\2\u089d\u089e\7C\2\2\u089e") - buf.write("\u089f\7*\2\2\u089f\u08a0\7C\2\2\u08a0\u08a1\7h\2\2\u08a1") - buf.write("\u08a3\3\2\2\2\u08a2\u0895\3\2\2\2\u08a2\u0899\3\2\2\2") - buf.write("\u08a2\u089c\3\2\2\2\u08a3\u017d\3\2\2\2\u08a4\u08a5\7") - buf.write("C\2\2\u08a5\u08a6\7h\2\2\u08a6\u017f\3\2\2\2\u08a7\u08a8") - buf.write("\7*\2\2\u08a8\u08a9\7C\2\2\u08a9\u08b1\7h\2\2\u08aa\u08ab") - buf.write("\5\66\34\2\u08ab\u08ac\7C\2\2\u08ac\u08ad\7*\2\2\u08ad") - buf.write("\u08ae\7C\2\2\u08ae\u08af\7h\2\2\u08af\u08b1\3\2\2\2\u08b0") - buf.write("\u08a7\3\2\2\2\u08b0\u08aa\3\2\2\2\u08b1\u0181\3\2\2\2") - buf.write("\u08b2\u08b3\5:\36\2\u08b3\u08b4\7?\2\2\u08b4\u08b5\5") - buf.write("\u019e\u00d0\2\u08b5\u08b6\7@\2\2\u08b6\u08bd\3\2\2\2") - buf.write("\u08b7\u08b8\5\u0166\u00b4\2\u08b8\u08b9\7?\2\2\u08b9") - buf.write("\u08ba\5\u019e\u00d0\2\u08ba\u08bb\7@\2\2\u08bb\u08bd") - buf.write("\3\2\2\2\u08bc\u08b2\3\2\2\2\u08bc\u08b7\3\2\2\2\u08bd") - buf.write("\u08c5\3\2\2\2\u08be\u08bf\5\u0164\u00b3\2\u08bf\u08c0") - buf.write("\7?\2\2\u08c0\u08c1\5\u019e\u00d0\2\u08c1\u08c2\7@\2\2") - buf.write("\u08c2\u08c4\3\2\2\2\u08c3\u08be\3\2\2\2\u08c4\u08c7\3") - buf.write("\2\2\2\u08c5\u08c3\3\2\2\2\u08c5\u08c6\3\2\2\2\u08c6\u0183") - buf.write("\3\2\2\2\u08c7\u08c5\3\2\2\2\u08c8\u08c9\5\u016c\u00b7") - buf.write("\2\u08c9\u08ca\7?\2\2\u08ca\u08cb\5\u019e\u00d0\2\u08cb") - buf.write("\u08cc\7@\2\2\u08cc\u08d4\3\2\2\2\u08cd\u08ce\5\u016a") - buf.write("\u00b6\2\u08ce\u08cf\7?\2\2\u08cf\u08d0\5\u019e\u00d0") - buf.write("\2\u08d0\u08d1\7@\2\2\u08d1\u08d3\3\2\2\2\u08d2\u08cd") - buf.write("\3\2\2\2\u08d3\u08d6\3\2\2\2\u08d4\u08d2\3\2\2\2\u08d4") - buf.write("\u08d5\3\2\2\2\u08d5\u0185\3\2\2\2\u08d6\u08d4\3\2\2\2") - buf.write("\u08d7\u08d8\5:\36\2\u08d8\u08d9\7?\2\2\u08d9\u08da\5") - buf.write("\u019e\u00d0\2\u08da\u08db\7@\2\2\u08db\u08e2\3\2\2\2") - buf.write("\u08dc\u08dd\5\u0172\u00ba\2\u08dd\u08de\7?\2\2\u08de") - buf.write("\u08df\5\u019e\u00d0\2\u08df\u08e0\7@\2\2\u08e0\u08e2") - buf.write("\3\2\2\2\u08e1\u08d7\3\2\2\2\u08e1\u08dc\3\2\2\2\u08e2") - buf.write("\u08ea\3\2\2\2\u08e3\u08e4\5\u0170\u00b9\2\u08e4\u08e5") - buf.write("\7?\2\2\u08e5\u08e6\5\u019e\u00d0\2\u08e6\u08e7\7@\2\2") - buf.write("\u08e7\u08e9\3\2\2\2\u08e8\u08e3\3\2\2\2\u08e9\u08ec\3") - buf.write("\2\2\2\u08ea\u08e8\3\2\2\2\u08ea\u08eb\3\2\2\2\u08eb\u0187") - buf.write("\3\2\2\2\u08ec\u08ea\3\2\2\2\u08ed\u08ee\5<\37\2\u08ee") - buf.write("\u08f0\7;\2\2\u08ef\u08f1\5\u018e\u00c8\2\u08f0\u08ef") - buf.write("\3\2\2\2\u08f0\u08f1\3\2\2\2\u08f1\u08f2\3\2\2\2\u08f2") - buf.write("\u08f3\7<\2\2\u08f3\u0932\3\2\2\2\u08f4\u08f5\5\66\34") - buf.write("\2\u08f5\u08f7\7C\2\2\u08f6\u08f8\5*\26\2\u08f7\u08f6") - buf.write("\3\2\2\2\u08f7\u08f8\3\2\2\2\u08f8\u08f9\3\2\2\2\u08f9") - buf.write("\u08fa\7h\2\2\u08fa\u08fc\7;\2\2\u08fb\u08fd\5\u018e\u00c8") - buf.write("\2\u08fc\u08fb\3\2\2\2\u08fc\u08fd\3\2\2\2\u08fd\u08fe") - buf.write("\3\2\2\2\u08fe\u08ff\7<\2\2\u08ff\u0932\3\2\2\2\u0900") - buf.write("\u0901\5:\36\2\u0901\u0903\7C\2\2\u0902\u0904\5*\26\2") - buf.write("\u0903\u0902\3\2\2\2\u0903\u0904\3\2\2\2\u0904\u0905\3") - buf.write("\2\2\2\u0905\u0906\7h\2\2\u0906\u0908\7;\2\2\u0907\u0909") - buf.write("\5\u018e\u00c8\2\u0908\u0907\3\2\2\2\u0908\u0909\3\2\2") - buf.write("\2\u0909\u090a\3\2\2\2\u090a\u090b\7<\2\2\u090b\u0932") - buf.write("\3\2\2\2\u090c\u090d\5\u0160\u00b1\2\u090d\u090f\7C\2") - buf.write("\2\u090e\u0910\5*\26\2\u090f\u090e\3\2\2\2\u090f\u0910") - buf.write("\3\2\2\2\u0910\u0911\3\2\2\2\u0911\u0912\7h\2\2\u0912") - buf.write("\u0914\7;\2\2\u0913\u0915\5\u018e\u00c8\2\u0914\u0913") - buf.write("\3\2\2\2\u0914\u0915\3\2\2\2\u0915\u0916\3\2\2\2\u0916") - buf.write("\u0917\7<\2\2\u0917\u0932\3\2\2\2\u0918\u0919\7*\2\2\u0919") - buf.write("\u091b\7C\2\2\u091a\u091c\5*\26\2\u091b\u091a\3\2\2\2") - buf.write("\u091b\u091c\3\2\2\2\u091c\u091d\3\2\2\2\u091d\u091e\7") - buf.write("h\2\2\u091e\u0920\7;\2\2\u091f\u0921\5\u018e\u00c8\2\u0920") - buf.write("\u091f\3\2\2\2\u0920\u0921\3\2\2\2\u0921\u0922\3\2\2\2") - buf.write("\u0922\u0932\7<\2\2\u0923\u0924\5\66\34\2\u0924\u0925") - buf.write("\7C\2\2\u0925\u0926\7*\2\2\u0926\u0928\7C\2\2\u0927\u0929") - buf.write("\5*\26\2\u0928\u0927\3\2\2\2\u0928\u0929\3\2\2\2\u0929") - buf.write("\u092a\3\2\2\2\u092a\u092b\7h\2\2\u092b\u092d\7;\2\2\u092c") - buf.write("\u092e\5\u018e\u00c8\2\u092d\u092c\3\2\2\2\u092d\u092e") - buf.write("\3\2\2\2\u092e\u092f\3\2\2\2\u092f\u0930\7<\2\2\u0930") - buf.write("\u0932\3\2\2\2\u0931\u08ed\3\2\2\2\u0931\u08f4\3\2\2\2") - buf.write("\u0931\u0900\3\2\2\2\u0931\u090c\3\2\2\2\u0931\u0918\3") - buf.write("\2\2\2\u0931\u0923\3\2\2\2\u0932\u0189\3\2\2\2\u0933\u0935") - buf.write("\7C\2\2\u0934\u0936\5*\26\2\u0935\u0934\3\2\2\2\u0935") - buf.write("\u0936\3\2\2\2\u0936\u0937\3\2\2\2\u0937\u0938\7h\2\2") - buf.write("\u0938\u093a\7;\2\2\u0939\u093b\5\u018e\u00c8\2\u093a") - buf.write("\u0939\3\2\2\2\u093a\u093b\3\2\2\2\u093b\u093c\3\2\2\2") - buf.write("\u093c\u093d\7<\2\2\u093d\u018b\3\2\2\2\u093e\u093f\5") - buf.write("<\37\2\u093f\u0941\7;\2\2\u0940\u0942\5\u018e\u00c8\2") - buf.write("\u0941\u0940\3\2\2\2\u0941\u0942\3\2\2\2\u0942\u0943\3") - buf.write("\2\2\2\u0943\u0944\7<\2\2\u0944\u0977\3\2\2\2\u0945\u0946") - buf.write("\5\66\34\2\u0946\u0948\7C\2\2\u0947\u0949\5*\26\2\u0948") - buf.write("\u0947\3\2\2\2\u0948\u0949\3\2\2\2\u0949\u094a\3\2\2\2") - buf.write("\u094a\u094b\7h\2\2\u094b\u094d\7;\2\2\u094c\u094e\5\u018e") - buf.write("\u00c8\2\u094d\u094c\3\2\2\2\u094d\u094e\3\2\2\2\u094e") - buf.write("\u094f\3\2\2\2\u094f\u0950\7<\2\2\u0950\u0977\3\2\2\2") - buf.write("\u0951\u0952\5:\36\2\u0952\u0954\7C\2\2\u0953\u0955\5") - buf.write("*\26\2\u0954\u0953\3\2\2\2\u0954\u0955\3\2\2\2\u0955\u0956") - buf.write("\3\2\2\2\u0956\u0957\7h\2\2\u0957\u0959\7;\2\2\u0958\u095a") - buf.write("\5\u018e\u00c8\2\u0959\u0958\3\2\2\2\u0959\u095a\3\2\2") - buf.write("\2\u095a\u095b\3\2\2\2\u095b\u095c\7<\2\2\u095c\u0977") - buf.write("\3\2\2\2\u095d\u095e\7*\2\2\u095e\u0960\7C\2\2\u095f\u0961") - buf.write("\5*\26\2\u0960\u095f\3\2\2\2\u0960\u0961\3\2\2\2\u0961") - buf.write("\u0962\3\2\2\2\u0962\u0963\7h\2\2\u0963\u0965\7;\2\2\u0964") - buf.write("\u0966\5\u018e\u00c8\2\u0965\u0964\3\2\2\2\u0965\u0966") - buf.write("\3\2\2\2\u0966\u0967\3\2\2\2\u0967\u0977\7<\2\2\u0968") - buf.write("\u0969\5\66\34\2\u0969\u096a\7C\2\2\u096a\u096b\7*\2\2") - buf.write("\u096b\u096d\7C\2\2\u096c\u096e\5*\26\2\u096d\u096c\3") - buf.write("\2\2\2\u096d\u096e\3\2\2\2\u096e\u096f\3\2\2\2\u096f\u0970") - buf.write("\7h\2\2\u0970\u0972\7;\2\2\u0971\u0973\5\u018e\u00c8\2") - buf.write("\u0972\u0971\3\2\2\2\u0972\u0973\3\2\2\2\u0973\u0974\3") - buf.write("\2\2\2\u0974\u0975\7<\2\2\u0975\u0977\3\2\2\2\u0976\u093e") - buf.write("\3\2\2\2\u0976\u0945\3\2\2\2\u0976\u0951\3\2\2\2\u0976") - buf.write("\u095d\3\2\2\2\u0976\u0968\3\2\2\2\u0977\u018d\3\2\2\2") - buf.write("\u0978\u097d\5\u019e\u00d0\2\u0979\u097a\7B\2\2\u097a") - buf.write("\u097c\5\u019e\u00d0\2\u097b\u0979\3\2\2\2\u097c\u097f") - buf.write("\3\2\2\2\u097d\u097b\3\2\2\2\u097d\u097e\3\2\2\2\u097e") - buf.write("\u018f\3\2\2\2\u097f\u097d\3\2\2\2\u0980\u0981\5:\36\2") - buf.write("\u0981\u0983\7\\\2\2\u0982\u0984\5*\26\2\u0983\u0982\3") - buf.write("\2\2\2\u0983\u0984\3\2\2\2\u0984\u0985\3\2\2\2\u0985\u0986") - buf.write("\7h\2\2\u0986\u09b0\3\2\2\2\u0987\u0988\5\f\7\2\u0988") - buf.write("\u098a\7\\\2\2\u0989\u098b\5*\26\2\u098a\u0989\3\2\2\2") - buf.write("\u098a\u098b\3\2\2\2\u098b\u098c\3\2\2\2\u098c\u098d\7") - buf.write("h\2\2\u098d\u09b0\3\2\2\2\u098e\u098f\5\u0160\u00b1\2") - buf.write("\u098f\u0991\7\\\2\2\u0990\u0992\5*\26\2\u0991\u0990\3") - buf.write("\2\2\2\u0991\u0992\3\2\2\2\u0992\u0993\3\2\2\2\u0993\u0994") - buf.write("\7h\2\2\u0994\u09b0\3\2\2\2\u0995\u0996\7*\2\2\u0996\u0998") - buf.write("\7\\\2\2\u0997\u0999\5*\26\2\u0998\u0997\3\2\2\2\u0998") - buf.write("\u0999\3\2\2\2\u0999\u099a\3\2\2\2\u099a\u09b0\7h\2\2") - buf.write("\u099b\u099c\5\66\34\2\u099c\u099d\7C\2\2\u099d\u099e") - buf.write("\7*\2\2\u099e\u09a0\7\\\2\2\u099f\u09a1\5*\26\2\u09a0") - buf.write("\u099f\3\2\2\2\u09a0\u09a1\3\2\2\2\u09a1\u09a2\3\2\2\2") - buf.write("\u09a2\u09a3\7h\2\2\u09a3\u09b0\3\2\2\2\u09a4\u09a5\5") - buf.write("\20\t\2\u09a5\u09a7\7\\\2\2\u09a6\u09a8\5*\26\2\u09a7") - buf.write("\u09a6\3\2\2\2\u09a7\u09a8\3\2\2\2\u09a8\u09a9\3\2\2\2") - buf.write("\u09a9\u09aa\7!\2\2\u09aa\u09b0\3\2\2\2\u09ab\u09ac\5") - buf.write("\36\20\2\u09ac\u09ad\7\\\2\2\u09ad\u09ae\7!\2\2\u09ae") - buf.write("\u09b0\3\2\2\2\u09af\u0980\3\2\2\2\u09af\u0987\3\2\2\2") - buf.write("\u09af\u098e\3\2\2\2\u09af\u0995\3\2\2\2\u09af\u099b\3") - buf.write("\2\2\2\u09af\u09a4\3\2\2\2\u09af\u09ab\3\2\2\2\u09b0\u0191") - buf.write("\3\2\2\2\u09b1\u09b3\7\\\2\2\u09b2\u09b4\5*\26\2\u09b3") - buf.write("\u09b2\3\2\2\2\u09b3\u09b4\3\2\2\2\u09b4\u09b5\3\2\2\2") - buf.write("\u09b5\u09b6\7h\2\2\u09b6\u0193\3\2\2\2\u09b7\u09b8\5") - buf.write(":\36\2\u09b8\u09ba\7\\\2\2\u09b9\u09bb\5*\26\2\u09ba\u09b9") - buf.write("\3\2\2\2\u09ba\u09bb\3\2\2\2\u09bb\u09bc\3\2\2\2\u09bc") - buf.write("\u09bd\7h\2\2\u09bd\u09e0\3\2\2\2\u09be\u09bf\5\f\7\2") - buf.write("\u09bf\u09c1\7\\\2\2\u09c0\u09c2\5*\26\2\u09c1\u09c0\3") - buf.write("\2\2\2\u09c1\u09c2\3\2\2\2\u09c2\u09c3\3\2\2\2\u09c3\u09c4") - buf.write("\7h\2\2\u09c4\u09e0\3\2\2\2\u09c5\u09c6\7*\2\2\u09c6\u09c8") - buf.write("\7\\\2\2\u09c7\u09c9\5*\26\2\u09c8\u09c7\3\2\2\2\u09c8") - buf.write("\u09c9\3\2\2\2\u09c9\u09ca\3\2\2\2\u09ca\u09e0\7h\2\2") - buf.write("\u09cb\u09cc\5\66\34\2\u09cc\u09cd\7C\2\2\u09cd\u09ce") - buf.write("\7*\2\2\u09ce\u09d0\7\\\2\2\u09cf\u09d1\5*\26\2\u09d0") - buf.write("\u09cf\3\2\2\2\u09d0\u09d1\3\2\2\2\u09d1\u09d2\3\2\2\2") - buf.write("\u09d2\u09d3\7h\2\2\u09d3\u09e0\3\2\2\2\u09d4\u09d5\5") - buf.write("\20\t\2\u09d5\u09d7\7\\\2\2\u09d6\u09d8\5*\26\2\u09d7") - buf.write("\u09d6\3\2\2\2\u09d7\u09d8\3\2\2\2\u09d8\u09d9\3\2\2\2") - buf.write("\u09d9\u09da\7!\2\2\u09da\u09e0\3\2\2\2\u09db\u09dc\5") - buf.write("\36\20\2\u09dc\u09dd\7\\\2\2\u09dd\u09de\7!\2\2\u09de") - buf.write("\u09e0\3\2\2\2\u09df\u09b7\3\2\2\2\u09df\u09be\3\2\2\2") - buf.write("\u09df\u09c5\3\2\2\2\u09df\u09cb\3\2\2\2\u09df\u09d4\3") - buf.write("\2\2\2\u09df\u09db\3\2\2\2\u09e0\u0195\3\2\2\2\u09e1\u09e2") - buf.write("\7!\2\2\u09e2\u09e3\5\4\3\2\u09e3\u09e5\5\u0198\u00cd") - buf.write("\2\u09e4\u09e6\5 \21\2\u09e5\u09e4\3\2\2\2\u09e5\u09e6") - buf.write("\3\2\2\2\u09e6\u09f8\3\2\2\2\u09e7\u09e8\7!\2\2\u09e8") - buf.write("\u09e9\5\16\b\2\u09e9\u09eb\5\u0198\u00cd\2\u09ea\u09ec") - buf.write("\5 \21\2\u09eb\u09ea\3\2\2\2\u09eb\u09ec\3\2\2\2\u09ec") - buf.write("\u09f8\3\2\2\2\u09ed\u09ee\7!\2\2\u09ee\u09ef\5\4\3\2") - buf.write("\u09ef\u09f0\5 \21\2\u09f0\u09f1\5\u00f8}\2\u09f1\u09f8") - buf.write("\3\2\2\2\u09f2\u09f3\7!\2\2\u09f3\u09f4\5\16\b\2\u09f4") - buf.write("\u09f5\5 \21\2\u09f5\u09f6\5\u00f8}\2\u09f6\u09f8\3\2") - buf.write("\2\2\u09f7\u09e1\3\2\2\2\u09f7\u09e7\3\2\2\2\u09f7\u09ed") - buf.write("\3\2\2\2\u09f7\u09f2\3\2\2\2\u09f8\u0197\3\2\2\2\u09f9") - buf.write("\u09fd\5\u019a\u00ce\2\u09fa\u09fc\5\u019a\u00ce\2\u09fb") - buf.write("\u09fa\3\2\2\2\u09fc\u09ff\3\2\2\2\u09fd\u09fb\3\2\2\2") - buf.write("\u09fd\u09fe\3\2\2\2\u09fe\u0199\3\2\2\2\u09ff\u09fd\3") - buf.write("\2\2\2\u0a00\u0a02\5\u00e6t\2\u0a01\u0a00\3\2\2\2\u0a02") - buf.write("\u0a05\3\2\2\2\u0a03\u0a01\3\2\2\2\u0a03\u0a04\3\2\2\2") - buf.write("\u0a04\u0a06\3\2\2\2\u0a05\u0a03\3\2\2\2\u0a06\u0a07\7") - buf.write("?\2\2\u0a07\u0a08\5\u019e\u00d0\2\u0a08\u0a09\7@\2\2\u0a09") - buf.write("\u019b\3\2\2\2\u0a0a\u0a0b\5\u019e\u00d0\2\u0a0b\u019d") - buf.write("\3\2\2\2\u0a0c\u0a0f\5\u01a0\u00d1\2\u0a0d\u0a0f\5\u01a8") - buf.write("\u00d5\2\u0a0e\u0a0c\3\2\2\2\u0a0e\u0a0d\3\2\2\2\u0a0f") - buf.write("\u019f\3\2\2\2\u0a10\u0a11\5\u01a2\u00d2\2\u0a11\u0a12") - buf.write("\7[\2\2\u0a12\u0a13\5\u01a6\u00d4\2\u0a13\u01a1\3\2\2") - buf.write("\2\u0a14\u0a1f\7h\2\2\u0a15\u0a17\7;\2\2\u0a16\u0a18\5") - buf.write("\u0096L\2\u0a17\u0a16\3\2\2\2\u0a17\u0a18\3\2\2\2\u0a18") - buf.write("\u0a19\3\2\2\2\u0a19\u0a1f\7<\2\2\u0a1a\u0a1b\7;\2\2\u0a1b") - buf.write("\u0a1c\5\u01a4\u00d3\2\u0a1c\u0a1d\7<\2\2\u0a1d\u0a1f") - buf.write("\3\2\2\2\u0a1e\u0a14\3\2\2\2\u0a1e\u0a15\3\2\2\2\u0a1e") - buf.write("\u0a1a\3\2\2\2\u0a1f\u01a3\3\2\2\2\u0a20\u0a25\7h\2\2") - buf.write("\u0a21\u0a22\7B\2\2\u0a22\u0a24\7h\2\2\u0a23\u0a21\3\2") - buf.write("\2\2\u0a24\u0a27\3\2\2\2\u0a25\u0a23\3\2\2\2\u0a25\u0a26") - buf.write("\3\2\2\2\u0a26\u01a5\3\2\2\2\u0a27\u0a25\3\2\2\2\u0a28") - buf.write("\u0a2b\5\u019e\u00d0\2\u0a29\u0a2b\5\u00fc\177\2\u0a2a") - buf.write("\u0a28\3\2\2\2\u0a2a\u0a29\3\2\2\2\u0a2b\u01a7\3\2\2\2") - buf.write("\u0a2c\u0a2f\5\u01b0\u00d9\2\u0a2d\u0a2f\5\u01aa\u00d6") - buf.write("\2\u0a2e\u0a2c\3\2\2\2\u0a2e\u0a2d\3\2\2\2\u0a2f\u01a9") - buf.write("\3\2\2\2\u0a30\u0a31\5\u01ac\u00d7\2\u0a31\u0a32\5\u01ae") - buf.write("\u00d8\2\u0a32\u0a33\5\u019e\u00d0\2\u0a33\u01ab\3\2\2") - buf.write("\2\u0a34\u0a38\5:\36\2\u0a35\u0a38\5\u017c\u00bf\2\u0a36") - buf.write("\u0a38\5\u0182\u00c2\2\u0a37\u0a34\3\2\2\2\u0a37\u0a35") - buf.write("\3\2\2\2\u0a37\u0a36\3\2\2\2\u0a38\u01ad\3\2\2\2\u0a39") - buf.write("\u0a3a\t\5\2\2\u0a3a\u01af\3\2\2\2\u0a3b\u0a43\5\u01b2") - buf.write("\u00da\2\u0a3c\u0a3d\5\u01b2\u00da\2\u0a3d\u0a3e\7I\2") - buf.write("\2\u0a3e\u0a3f\5\u019e\u00d0\2\u0a3f\u0a40\7J\2\2\u0a40") - buf.write("\u0a41\5\u01b0\u00d9\2\u0a41\u0a43\3\2\2\2\u0a42\u0a3b") - buf.write("\3\2\2\2\u0a42\u0a3c\3\2\2\2\u0a43\u01b1\3\2\2\2\u0a44") - buf.write("\u0a45\b\u00da\1\2\u0a45\u0a46\5\u01b4\u00db\2\u0a46\u0a4c") - buf.write("\3\2\2\2\u0a47\u0a48\f\3\2\2\u0a48\u0a49\7P\2\2\u0a49") - buf.write("\u0a4b\5\u01b4\u00db\2\u0a4a\u0a47\3\2\2\2\u0a4b\u0a4e") - buf.write("\3\2\2\2\u0a4c\u0a4a\3\2\2\2\u0a4c\u0a4d\3\2\2\2\u0a4d") - buf.write("\u01b3\3\2\2\2\u0a4e\u0a4c\3\2\2\2\u0a4f\u0a50\b\u00db") - buf.write("\1\2\u0a50\u0a51\5\u01b6\u00dc\2\u0a51\u0a57\3\2\2\2\u0a52") - buf.write("\u0a53\f\3\2\2\u0a53\u0a54\7O\2\2\u0a54\u0a56\5\u01b6") - buf.write("\u00dc\2\u0a55\u0a52\3\2\2\2\u0a56\u0a59\3\2\2\2\u0a57") - buf.write("\u0a55\3\2\2\2\u0a57\u0a58\3\2\2\2\u0a58\u01b5\3\2\2\2") - buf.write("\u0a59\u0a57\3\2\2\2\u0a5a\u0a5b\b\u00dc\1\2\u0a5b\u0a5c") - buf.write("\5\u01b8\u00dd\2\u0a5c\u0a62\3\2\2\2\u0a5d\u0a5e\f\3\2") - buf.write("\2\u0a5e\u0a5f\7X\2\2\u0a5f\u0a61\5\u01b8\u00dd\2\u0a60") - buf.write("\u0a5d\3\2\2\2\u0a61\u0a64\3\2\2\2\u0a62\u0a60\3\2\2\2") - buf.write("\u0a62\u0a63\3\2\2\2\u0a63\u01b7\3\2\2\2\u0a64\u0a62\3") - buf.write("\2\2\2\u0a65\u0a66\b\u00dd\1\2\u0a66\u0a67\5\u01ba\u00de") - buf.write("\2\u0a67\u0a6d\3\2\2\2\u0a68\u0a69\f\3\2\2\u0a69\u0a6a") - buf.write("\7Y\2\2\u0a6a\u0a6c\5\u01ba\u00de\2\u0a6b\u0a68\3\2\2") - buf.write("\2\u0a6c\u0a6f\3\2\2\2\u0a6d\u0a6b\3\2\2\2\u0a6d\u0a6e") - buf.write("\3\2\2\2\u0a6e\u01b9\3\2\2\2\u0a6f\u0a6d\3\2\2\2\u0a70") - buf.write("\u0a71\b\u00de\1\2\u0a71\u0a72\5\u01bc\u00df\2\u0a72\u0a78") - buf.write("\3\2\2\2\u0a73\u0a74\f\3\2\2\u0a74\u0a75\7W\2\2\u0a75") - buf.write("\u0a77\5\u01bc\u00df\2\u0a76\u0a73\3\2\2\2\u0a77\u0a7a") - buf.write("\3\2\2\2\u0a78\u0a76\3\2\2\2\u0a78\u0a79\3\2\2\2\u0a79") - buf.write("\u01bb\3\2\2\2\u0a7a\u0a78\3\2\2\2\u0a7b\u0a7c\b\u00df") - buf.write("\1\2\u0a7c\u0a7d\5\u01be\u00e0\2\u0a7d\u0a86\3\2\2\2\u0a7e") - buf.write("\u0a7f\f\4\2\2\u0a7f\u0a80\7K\2\2\u0a80\u0a85\5\u01be") - buf.write("\u00e0\2\u0a81\u0a82\f\3\2\2\u0a82\u0a83\7N\2\2\u0a83") - buf.write("\u0a85\5\u01be\u00e0\2\u0a84\u0a7e\3\2\2\2\u0a84\u0a81") - buf.write("\3\2\2\2\u0a85\u0a88\3\2\2\2\u0a86\u0a84\3\2\2\2\u0a86") - buf.write("\u0a87\3\2\2\2\u0a87\u01bd\3\2\2\2\u0a88\u0a86\3\2\2\2") - buf.write("\u0a89\u0a8a\b\u00e0\1\2\u0a8a\u0a8b\5\u01c0\u00e1\2\u0a8b") - buf.write("\u0a9d\3\2\2\2\u0a8c\u0a8d\f\7\2\2\u0a8d\u0a8e\7F\2\2") - buf.write("\u0a8e\u0a9c\5\u01c0\u00e1\2\u0a8f\u0a90\f\6\2\2\u0a90") - buf.write("\u0a91\7E\2\2\u0a91\u0a9c\5\u01c0\u00e1\2\u0a92\u0a93") - buf.write("\f\5\2\2\u0a93\u0a94\7L\2\2\u0a94\u0a9c\5\u01c0\u00e1") - buf.write("\2\u0a95\u0a96\f\4\2\2\u0a96\u0a97\7M\2\2\u0a97\u0a9c") - buf.write("\5\u01c0\u00e1\2\u0a98\u0a99\f\3\2\2\u0a99\u0a9a\7\34") - buf.write("\2\2\u0a9a\u0a9c\5\f\7\2\u0a9b\u0a8c\3\2\2\2\u0a9b\u0a8f") - buf.write("\3\2\2\2\u0a9b\u0a92\3\2\2\2\u0a9b\u0a95\3\2\2\2\u0a9b") - buf.write("\u0a98\3\2\2\2\u0a9c\u0a9f\3\2\2\2\u0a9d\u0a9b\3\2\2\2") - buf.write("\u0a9d\u0a9e\3\2\2\2\u0a9e\u01bf\3\2\2\2\u0a9f\u0a9d\3") - buf.write("\2\2\2\u0aa0\u0aa1\b\u00e1\1\2\u0aa1\u0aa2\5\u01c2\u00e2") - buf.write("\2\u0aa2\u0ab2\3\2\2\2\u0aa3\u0aa4\f\5\2\2\u0aa4\u0aa5") - buf.write("\7F\2\2\u0aa5\u0aa6\7F\2\2\u0aa6\u0ab1\5\u01c2\u00e2\2") - buf.write("\u0aa7\u0aa8\f\4\2\2\u0aa8\u0aa9\7E\2\2\u0aa9\u0aaa\7") - buf.write("E\2\2\u0aaa\u0ab1\5\u01c2\u00e2\2\u0aab\u0aac\f\3\2\2") - buf.write("\u0aac\u0aad\7E\2\2\u0aad\u0aae\7E\2\2\u0aae\u0aaf\7E") - buf.write("\2\2\u0aaf\u0ab1\5\u01c2\u00e2\2\u0ab0\u0aa3\3\2\2\2\u0ab0") - buf.write("\u0aa7\3\2\2\2\u0ab0\u0aab\3\2\2\2\u0ab1\u0ab4\3\2\2\2") - buf.write("\u0ab2\u0ab0\3\2\2\2\u0ab2\u0ab3\3\2\2\2\u0ab3\u01c1\3") - buf.write("\2\2\2\u0ab4\u0ab2\3\2\2\2\u0ab5\u0ab6\b\u00e2\1\2\u0ab6") - buf.write("\u0ab7\5\u01c4\u00e3\2\u0ab7\u0ac0\3\2\2\2\u0ab8\u0ab9") - buf.write("\f\4\2\2\u0ab9\u0aba\7S\2\2\u0aba\u0abf\5\u01c4\u00e3") - buf.write("\2\u0abb\u0abc\f\3\2\2\u0abc\u0abd\7T\2\2\u0abd\u0abf") - buf.write("\5\u01c4\u00e3\2\u0abe\u0ab8\3\2\2\2\u0abe\u0abb\3\2\2") - buf.write("\2\u0abf\u0ac2\3\2\2\2\u0ac0\u0abe\3\2\2\2\u0ac0\u0ac1") - buf.write("\3\2\2\2\u0ac1\u01c3\3\2\2\2\u0ac2\u0ac0\3\2\2\2\u0ac3") - buf.write("\u0ac4\b\u00e3\1\2\u0ac4\u0ac5\5\u01c6\u00e4\2\u0ac5\u0ad1") - buf.write("\3\2\2\2\u0ac6\u0ac7\f\5\2\2\u0ac7\u0ac8\7U\2\2\u0ac8") - buf.write("\u0ad0\5\u01c6\u00e4\2\u0ac9\u0aca\f\4\2\2\u0aca\u0acb") - buf.write("\7V\2\2\u0acb\u0ad0\5\u01c6\u00e4\2\u0acc\u0acd\f\3\2") - buf.write("\2\u0acd\u0ace\7Z\2\2\u0ace\u0ad0\5\u01c6\u00e4\2\u0acf") - buf.write("\u0ac6\3\2\2\2\u0acf\u0ac9\3\2\2\2\u0acf\u0acc\3\2\2\2") - buf.write("\u0ad0\u0ad3\3\2\2\2\u0ad1\u0acf\3\2\2\2\u0ad1\u0ad2\3") - buf.write("\2\2\2\u0ad2\u01c5\3\2\2\2\u0ad3\u0ad1\3\2\2\2\u0ad4\u0adc") - buf.write("\5\u01c8\u00e5\2\u0ad5\u0adc\5\u01ca\u00e6\2\u0ad6\u0ad7") - buf.write("\7S\2\2\u0ad7\u0adc\5\u01c6\u00e4\2\u0ad8\u0ad9\7T\2\2") - buf.write("\u0ad9\u0adc\5\u01c6\u00e4\2\u0ada\u0adc\5\u01cc\u00e7") - buf.write("\2\u0adb\u0ad4\3\2\2\2\u0adb\u0ad5\3\2\2\2\u0adb\u0ad6") - buf.write("\3\2\2\2\u0adb\u0ad8\3\2\2\2\u0adb\u0ada\3\2\2\2\u0adc") - buf.write("\u01c7\3\2\2\2\u0add\u0ade\7Q\2\2\u0ade\u0adf\5\u01c6") - buf.write("\u00e4\2\u0adf\u01c9\3\2\2\2\u0ae0\u0ae1\7R\2\2\u0ae1") - buf.write("\u0ae2\5\u01c6\u00e4\2\u0ae2\u01cb\3\2\2\2\u0ae3\u0aea") - buf.write("\5\u01ce\u00e8\2\u0ae4\u0ae5\7H\2\2\u0ae5\u0aea\5\u01c6") - buf.write("\u00e4\2\u0ae6\u0ae7\7G\2\2\u0ae7\u0aea\5\u01c6\u00e4") - buf.write("\2\u0ae8\u0aea\5\u01d8\u00ed\2\u0ae9\u0ae3\3\2\2\2\u0ae9") - buf.write("\u0ae4\3\2\2\2\u0ae9\u0ae6\3\2\2\2\u0ae9\u0ae8\3\2\2\2") - buf.write("\u0aea\u01cd\3\2\2\2\u0aeb\u0aee\5\u0160\u00b1\2\u0aec") - buf.write("\u0aee\5:\36\2\u0aed\u0aeb\3\2\2\2\u0aed\u0aec\3\2\2\2") - buf.write("\u0aee\u0af3\3\2\2\2\u0aef\u0af2\5\u01d2\u00ea\2\u0af0") - buf.write("\u0af2\5\u01d6\u00ec\2\u0af1\u0aef\3\2\2\2\u0af1\u0af0") - buf.write("\3\2\2\2\u0af2\u0af5\3\2\2\2\u0af3\u0af1\3\2\2\2\u0af3") - buf.write("\u0af4\3\2\2\2\u0af4\u01cf\3\2\2\2\u0af5\u0af3\3\2\2\2") - buf.write("\u0af6\u0af7\5\u01ce\u00e8\2\u0af7\u0af8\7Q\2\2\u0af8") - buf.write("\u01d1\3\2\2\2\u0af9\u0afa\7Q\2\2\u0afa\u01d3\3\2\2\2") - buf.write("\u0afb\u0afc\5\u01ce\u00e8\2\u0afc\u0afd\7R\2\2\u0afd") - buf.write("\u01d5\3\2\2\2\u0afe\u0aff\7R\2\2\u0aff\u01d7\3\2\2\2") - buf.write("\u0b00\u0b01\7;\2\2\u0b01\u0b02\5\4\3\2\u0b02\u0b03\7") - buf.write("<\2\2\u0b03\u0b04\5\u01c6\u00e4\2\u0b04\u0b1c\3\2\2\2") - buf.write("\u0b05\u0b06\7;\2\2\u0b06\u0b0a\5\f\7\2\u0b07\u0b09\5") - buf.write("(\25\2\u0b08\u0b07\3\2\2\2\u0b09\u0b0c\3\2\2\2\u0b0a\u0b08") - buf.write("\3\2\2\2\u0b0a\u0b0b\3\2\2\2\u0b0b\u0b0d\3\2\2\2\u0b0c") - buf.write("\u0b0a\3\2\2\2\u0b0d\u0b0e\7<\2\2\u0b0e\u0b0f\5\u01cc") - buf.write("\u00e7\2\u0b0f\u0b1c\3\2\2\2\u0b10\u0b11\7;\2\2\u0b11") - buf.write("\u0b15\5\f\7\2\u0b12\u0b14\5(\25\2\u0b13\u0b12\3\2\2\2") - buf.write("\u0b14\u0b17\3\2\2\2\u0b15\u0b13\3\2\2\2\u0b15\u0b16\3") - buf.write("\2\2\2\u0b16\u0b18\3\2\2\2\u0b17\u0b15\3\2\2\2\u0b18\u0b19") - buf.write("\7<\2\2\u0b19\u0b1a\5\u01a0\u00d1\2\u0b1a\u0b1c\3\2\2") - buf.write("\2\u0b1b\u0b00\3\2\2\2\u0b1b\u0b05\3\2\2\2\u0b1b\u0b10") - buf.write("\3\2\2\2\u0b1c\u01d9\3\2\2\2\u0144\u01df\u01e6\u01ea\u01ee") - buf.write("\u01f7\u01fb\u01ff\u0201\u0207\u020c\u0213\u0218\u021a") - buf.write("\u0220\u0225\u022a\u022f\u023a\u0248\u024d\u0255\u025c") - buf.write("\u0262\u0267\u0272\u0275\u0283\u0288\u028d\u0292\u0298") - buf.write("\u02a2\u02aa\u02b4\u02bc\u02c8\u02cc\u02d1\u02d7\u02df") - buf.write("\u02ec\u0309\u030d\u0312\u0318\u031b\u031e\u032a\u0335") - buf.write("\u0343\u034a\u0353\u035a\u035f\u036e\u0375\u037b\u037f") - buf.write("\u0383\u0387\u038b\u0390\u0394\u0398\u039a\u039f\u03a6") - buf.write("\u03ab\u03ad\u03b3\u03b8\u03bc\u03cf\u03d4\u03e4\u03e9") - buf.write("\u03ef\u03f5\u03f7\u03fb\u0400\u0404\u040c\u0413\u041b") - buf.write("\u041e\u0423\u042b\u0430\u0437\u043e\u0443\u0449\u0455") - buf.write("\u045a\u045e\u0468\u046d\u0475\u0478\u047d\u0485\u0488") - buf.write("\u048d\u0492\u0497\u049c\u04a3\u04a8\u04b0\u04b5\u04ba") - buf.write("\u04bf\u04c5\u04cb\u04ce\u04d1\u04da\u04e0\u04e6\u04e9") - buf.write("\u04ec\u04f4\u04f9\u04fe\u0504\u0507\u0512\u051b\u0525") - buf.write("\u052a\u0535\u053a\u0546\u054b\u0557\u0561\u0566\u056e") - buf.write("\u0571\u0578\u0580\u0586\u058f\u0599\u059d\u05a0\u05a9") - buf.write("\u05b7\u05ba\u05c3\u05c8\u05cf\u05d4\u05dc\u05e8\u05ef") - buf.write("\u05fd\u0613\u0635\u0641\u0647\u0653\u0660\u067a\u067e") - buf.write("\u0683\u0687\u068b\u0693\u0697\u069b\u06a2\u06ab\u06b3") - buf.write("\u06c2\u06ce\u06d4\u06da\u06ef\u06f4\u06fa\u0706\u0711") - buf.write("\u071b\u071e\u0723\u072c\u0732\u073c\u0741\u074a\u0761") - buf.write("\u076b\u0781\u0788\u0790\u0798\u07a3\u07ba\u07c4\u07cf") - buf.write("\u07e5\u07e9\u07ee\u07f6\u07fc\u0800\u0804\u0808\u080e") - buf.write("\u0813\u0818\u081c\u0820\u0826\u082b\u0830\u0834\u0838") - buf.write("\u083a\u083f\u0844\u0849\u084d\u0851\u0855\u085a\u0862") - buf.write("\u0868\u086c\u0870\u0874\u087a\u087f\u0884\u0888\u088c") - buf.write("\u088e\u0893\u08a2\u08b0\u08bc\u08c5\u08d4\u08e1\u08ea") - buf.write("\u08f0\u08f7\u08fc\u0903\u0908\u090f\u0914\u091b\u0920") - buf.write("\u0928\u092d\u0931\u0935\u093a\u0941\u0948\u094d\u0954") - buf.write("\u0959\u0960\u0965\u096d\u0972\u0976\u097d\u0983\u098a") - buf.write("\u0991\u0998\u09a0\u09a7\u09af\u09b3\u09ba\u09c1\u09c8") - buf.write("\u09d0\u09d7\u09df\u09e5\u09eb\u09f7\u09fd\u0a03\u0a0e") - buf.write("\u0a17\u0a1e\u0a25\u0a2a\u0a2e\u0a37\u0a42\u0a4c\u0a57") - buf.write("\u0a62\u0a6d\u0a78\u0a84\u0a86\u0a9b\u0a9d\u0ab0\u0ab2") - buf.write("\u0abe\u0ac0\u0acf\u0ad1\u0adb\u0ae9\u0aed\u0af1\u0af3") - buf.write("\u0b0a\u0b15\u0b1b") - return buf.getvalue() - - -class Java8Parser ( Parser ): - - grammarFileName = "Java8.g4" - - atn = ATNDeserializer().deserialize(serializedATN()) - - decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] - - sharedContextCache = PredictionContextCache() - - literalNames = [ "", "'abstract'", "'assert'", "'boolean'", - "'break'", "'byte'", "'case'", "'catch'", "'char'", - "'class'", "'const'", "'continue'", "'default'", "'do'", - "'double'", "'else'", "'enum'", "'extends'", "'final'", - "'finally'", "'float'", "'for'", "'if'", "'goto'", - "'implements'", "'import'", "'instanceof'", "'int'", - "'interface'", "'long'", "'native'", "'new'", "'package'", - "'private'", "'protected'", "'public'", "'return'", - "'short'", "'static'", "'strictfp'", "'super'", "'switch'", - "'synchronized'", "'this'", "'throw'", "'throws'", - "'transient'", "'try'", "'void'", "'volatile'", "'while'", - "", "", "", "", - "", "'null'", "'('", "')'", "'{'", "'}'", - "'['", "']'", "';'", "','", "'.'", "'='", "'>'", "'<'", - "'!'", "'~'", "'?'", "':'", "'=='", "'<='", "'>='", - "'!='", "'&&'", "'||'", "'++'", "'--'", "'+'", "'-'", - "'*'", "'/'", "'&'", "'|'", "'^'", "'%'", "'->'", "'::'", - "'+='", "'-='", "'*='", "'/='", "'&='", "'|='", "'^='", - "'%='", "'<<='", "'>>='", "'>>>='", "", "'@'", - "'...'" ] - - symbolicNames = [ "", "ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", - "BYTE", "CASE", "CATCH", "CHAR", "CLASS", "CONST", - "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE", "ENUM", - "EXTENDS", "FINAL", "FINALLY", "FLOAT", "FOR", "IF", - "GOTO", "IMPLEMENTS", "IMPORT", "INSTANCEOF", "INT", - "INTERFACE", "LONG", "NATIVE", "NEW", "PACKAGE", "PRIVATE", - "PROTECTED", "PUBLIC", "RETURN", "SHORT", "STATIC", - "STRICTFP", "SUPER", "SWITCH", "SYNCHRONIZED", "THIS", - "THROW", "THROWS", "TRANSIENT", "TRY", "VOID", "VOLATILE", - "WHILE", "IntegerLiteral", "FloatingPointLiteral", - "BooleanLiteral", "CharacterLiteral", "StringLiteral", - "NullLiteral", "LPAREN", "RPAREN", "LBRACE", "RBRACE", - "LBRACK", "RBRACK", "SEMI", "COMMA", "DOT", "ASSIGN", - "GT", "LT", "BANG", "TILDE", "QUESTION", "COLON", - "EQUAL", "LE", "GE", "NOTEQUAL", "AND", "OR", "INC", - "DEC", "ADD", "SUB", "MUL", "DIV", "BITAND", "BITOR", - "CARET", "MOD", "ARROW", "COLONCOLON", "ADD_ASSIGN", - "SUB_ASSIGN", "MUL_ASSIGN", "DIV_ASSIGN", "AND_ASSIGN", - "OR_ASSIGN", "XOR_ASSIGN", "MOD_ASSIGN", "LSHIFT_ASSIGN", - "RSHIFT_ASSIGN", "URSHIFT_ASSIGN", "Identifier", "AT", - "ELLIPSIS", "WS", "COMMENT", "LINE_COMMENT" ] - - RULE_literal = 0 - RULE_primitiveType = 1 - RULE_numericType = 2 - RULE_integralType = 3 - RULE_floatingPointType = 4 - RULE_referenceType = 5 - RULE_classOrInterfaceType = 6 - RULE_classType = 7 - RULE_classType_lf_classOrInterfaceType = 8 - RULE_classType_lfno_classOrInterfaceType = 9 - RULE_interfaceType = 10 - RULE_interfaceType_lf_classOrInterfaceType = 11 - RULE_interfaceType_lfno_classOrInterfaceType = 12 - RULE_typeVariable = 13 - RULE_arrayType = 14 - RULE_dims = 15 - RULE_typeParameter = 16 - RULE_typeParameterModifier = 17 - RULE_typeBound = 18 - RULE_additionalBound = 19 - RULE_typeArguments = 20 - RULE_typeArgumentList = 21 - RULE_typeArgument = 22 - RULE_wildcard = 23 - RULE_wildcardBounds = 24 - RULE_packageName = 25 - RULE_typeName = 26 - RULE_packageOrTypeName = 27 - RULE_expressionName = 28 - RULE_methodName = 29 - RULE_ambiguousName = 30 - RULE_compilationUnit = 31 - RULE_packageDeclaration = 32 - RULE_packageModifier = 33 - RULE_importDeclaration = 34 - RULE_singleTypeImportDeclaration = 35 - RULE_typeImportOnDemandDeclaration = 36 - RULE_singleStaticImportDeclaration = 37 - RULE_staticImportOnDemandDeclaration = 38 - RULE_typeDeclaration = 39 - RULE_classDeclaration = 40 - RULE_normalClassDeclaration = 41 - RULE_classModifier = 42 - RULE_typeParameters = 43 - RULE_typeParameterList = 44 - RULE_superclass = 45 - RULE_superinterfaces = 46 - RULE_interfaceTypeList = 47 - RULE_classBody = 48 - RULE_classBodyDeclaration = 49 - RULE_classMemberDeclaration = 50 - RULE_fieldDeclaration = 51 - RULE_fieldModifier = 52 - RULE_variableDeclaratorList = 53 - RULE_variableDeclarator = 54 - RULE_variableDeclaratorId = 55 - RULE_variableInitializer = 56 - RULE_unannType = 57 - RULE_unannPrimitiveType = 58 - RULE_unannReferenceType = 59 - RULE_unannClassOrInterfaceType = 60 - RULE_unannClassType = 61 - RULE_unannClassType_lf_unannClassOrInterfaceType = 62 - RULE_unannClassType_lfno_unannClassOrInterfaceType = 63 - RULE_unannInterfaceType = 64 - RULE_unannInterfaceType_lf_unannClassOrInterfaceType = 65 - RULE_unannInterfaceType_lfno_unannClassOrInterfaceType = 66 - RULE_unannTypeVariable = 67 - RULE_unannArrayType = 68 - RULE_methodDeclaration = 69 - RULE_methodModifier = 70 - RULE_methodHeader = 71 - RULE_result = 72 - RULE_methodDeclarator = 73 - RULE_formalParameterList = 74 - RULE_formalParameters = 75 - RULE_formalParameter = 76 - RULE_variableModifier = 77 - RULE_lastFormalParameter = 78 - RULE_receiverParameter = 79 - RULE_throws_ = 80 - RULE_exceptionTypeList = 81 - RULE_exceptionType = 82 - RULE_methodBody = 83 - RULE_instanceInitializer = 84 - RULE_staticInitializer = 85 - RULE_constructorDeclaration = 86 - RULE_constructorModifier = 87 - RULE_constructorDeclarator = 88 - RULE_simpleTypeName = 89 - RULE_constructorBody = 90 - RULE_explicitConstructorInvocation = 91 - RULE_enumDeclaration = 92 - RULE_enumBody = 93 - RULE_enumConstantList = 94 - RULE_enumConstant = 95 - RULE_enumConstantModifier = 96 - RULE_enumBodyDeclarations = 97 - RULE_interfaceDeclaration = 98 - RULE_normalInterfaceDeclaration = 99 - RULE_interfaceModifier = 100 - RULE_extendsInterfaces = 101 - RULE_interfaceBody = 102 - RULE_interfaceMemberDeclaration = 103 - RULE_constantDeclaration = 104 - RULE_constantModifier = 105 - RULE_interfaceMethodDeclaration = 106 - RULE_interfaceMethodModifier = 107 - RULE_annotationTypeDeclaration = 108 - RULE_annotationTypeBody = 109 - RULE_annotationTypeMemberDeclaration = 110 - RULE_annotationTypeElementDeclaration = 111 - RULE_annotationTypeElementModifier = 112 - RULE_defaultValue = 113 - RULE_annotation = 114 - RULE_normalAnnotation = 115 - RULE_elementValuePairList = 116 - RULE_elementValuePair = 117 - RULE_elementValue = 118 - RULE_elementValueArrayInitializer = 119 - RULE_elementValueList = 120 - RULE_markerAnnotation = 121 - RULE_singleElementAnnotation = 122 - RULE_arrayInitializer = 123 - RULE_variableInitializerList = 124 - RULE_block = 125 - RULE_blockStatements = 126 - RULE_blockStatement = 127 - RULE_localVariableDeclarationStatement = 128 - RULE_localVariableDeclaration = 129 - RULE_statement = 130 - RULE_statementNoShortIf = 131 - RULE_statementWithoutTrailingSubstatement = 132 - RULE_emptyStatement = 133 - RULE_labeledStatement = 134 - RULE_labeledStatementNoShortIf = 135 - RULE_expressionStatement = 136 - RULE_statementExpression = 137 - RULE_ifThenStatement = 138 - RULE_ifThenElseStatement = 139 - RULE_ifThenElseStatementNoShortIf = 140 - RULE_assertStatement = 141 - RULE_switchStatement = 142 - RULE_switchBlock = 143 - RULE_switchBlockStatementGroup = 144 - RULE_switchLabels = 145 - RULE_switchLabel = 146 - RULE_enumConstantName = 147 - RULE_whileStatement = 148 - RULE_whileStatementNoShortIf = 149 - RULE_doStatement = 150 - RULE_forStatement = 151 - RULE_forStatementNoShortIf = 152 - RULE_basicForStatement = 153 - RULE_basicForStatementNoShortIf = 154 - RULE_forInit = 155 - RULE_forUpdate = 156 - RULE_statementExpressionList = 157 - RULE_enhancedForStatement = 158 - RULE_enhancedForStatementNoShortIf = 159 - RULE_breakStatement = 160 - RULE_continueStatement = 161 - RULE_returnStatement = 162 - RULE_throwStatement = 163 - RULE_synchronizedStatement = 164 - RULE_tryStatement = 165 - RULE_catches = 166 - RULE_catchClause = 167 - RULE_catchFormalParameter = 168 - RULE_catchType = 169 - RULE_finally_ = 170 - RULE_tryWithResourcesStatement = 171 - RULE_resourceSpecification = 172 - RULE_resourceList = 173 - RULE_resource = 174 - RULE_primary = 175 - RULE_primaryNoNewArray = 176 - RULE_primaryNoNewArray_lf_arrayAccess = 177 - RULE_primaryNoNewArray_lfno_arrayAccess = 178 - RULE_primaryNoNewArray_lf_primary = 179 - RULE_primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary = 180 - RULE_primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary = 181 - RULE_primaryNoNewArray_lfno_primary = 182 - RULE_primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary = 183 - RULE_primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary = 184 - RULE_classInstanceCreationExpression = 185 - RULE_classInstanceCreationExpression_lf_primary = 186 - RULE_classInstanceCreationExpression_lfno_primary = 187 - RULE_typeArgumentsOrDiamond = 188 - RULE_fieldAccess = 189 - RULE_fieldAccess_lf_primary = 190 - RULE_fieldAccess_lfno_primary = 191 - RULE_arrayAccess = 192 - RULE_arrayAccess_lf_primary = 193 - RULE_arrayAccess_lfno_primary = 194 - RULE_methodInvocation = 195 - RULE_methodInvocation_lf_primary = 196 - RULE_methodInvocation_lfno_primary = 197 - RULE_argumentList = 198 - RULE_methodReference = 199 - RULE_methodReference_lf_primary = 200 - RULE_methodReference_lfno_primary = 201 - RULE_arrayCreationExpression = 202 - RULE_dimExprs = 203 - RULE_dimExpr = 204 - RULE_constantExpression = 205 - RULE_expression = 206 - RULE_lambdaExpression = 207 - RULE_lambdaParameters = 208 - RULE_inferredFormalParameterList = 209 - RULE_lambdaBody = 210 - RULE_assignmentExpression = 211 - RULE_assignment = 212 - RULE_leftHandSide = 213 - RULE_assignmentOperator = 214 - RULE_conditionalExpression = 215 - RULE_conditionalOrExpression = 216 - RULE_conditionalAndExpression = 217 - RULE_inclusiveOrExpression = 218 - RULE_exclusiveOrExpression = 219 - RULE_andExpression = 220 - RULE_equalityExpression = 221 - RULE_relationalExpression = 222 - RULE_shiftExpression = 223 - RULE_additiveExpression = 224 - RULE_multiplicativeExpression = 225 - RULE_unaryExpression = 226 - RULE_preIncrementExpression = 227 - RULE_preDecrementExpression = 228 - RULE_unaryExpressionNotPlusMinus = 229 - RULE_postfixExpression = 230 - RULE_postIncrementExpression = 231 - RULE_postIncrementExpression_lf_postfixExpression = 232 - RULE_postDecrementExpression = 233 - RULE_postDecrementExpression_lf_postfixExpression = 234 - RULE_castExpression = 235 - - ruleNames = [ "literal", "primitiveType", "numericType", "integralType", - "floatingPointType", "referenceType", "classOrInterfaceType", - "classType", "classType_lf_classOrInterfaceType", "classType_lfno_classOrInterfaceType", - "interfaceType", "interfaceType_lf_classOrInterfaceType", - "interfaceType_lfno_classOrInterfaceType", "typeVariable", - "arrayType", "dims", "typeParameter", "typeParameterModifier", - "typeBound", "additionalBound", "typeArguments", "typeArgumentList", - "typeArgument", "wildcard", "wildcardBounds", "packageName", - "typeName", "packageOrTypeName", "expressionName", "methodName", - "ambiguousName", "compilationUnit", "packageDeclaration", - "packageModifier", "importDeclaration", "singleTypeImportDeclaration", - "typeImportOnDemandDeclaration", "singleStaticImportDeclaration", - "staticImportOnDemandDeclaration", "typeDeclaration", - "classDeclaration", "normalClassDeclaration", "classModifier", - "typeParameters", "typeParameterList", "superclass", - "superinterfaces", "interfaceTypeList", "classBody", - "classBodyDeclaration", "classMemberDeclaration", "fieldDeclaration", - "fieldModifier", "variableDeclaratorList", "variableDeclarator", - "variableDeclaratorId", "variableInitializer", "unannType", - "unannPrimitiveType", "unannReferenceType", "unannClassOrInterfaceType", - "unannClassType", "unannClassType_lf_unannClassOrInterfaceType", - "unannClassType_lfno_unannClassOrInterfaceType", "unannInterfaceType", - "unannInterfaceType_lf_unannClassOrInterfaceType", "unannInterfaceType_lfno_unannClassOrInterfaceType", - "unannTypeVariable", "unannArrayType", "methodDeclaration", - "methodModifier", "methodHeader", "result", "methodDeclarator", - "formalParameterList", "formalParameters", "formalParameter", - "variableModifier", "lastFormalParameter", "receiverParameter", - "throws_", "exceptionTypeList", "exceptionType", "methodBody", - "instanceInitializer", "staticInitializer", "constructorDeclaration", - "constructorModifier", "constructorDeclarator", "simpleTypeName", - "constructorBody", "explicitConstructorInvocation", "enumDeclaration", - "enumBody", "enumConstantList", "enumConstant", "enumConstantModifier", - "enumBodyDeclarations", "interfaceDeclaration", "normalInterfaceDeclaration", - "interfaceModifier", "extendsInterfaces", "interfaceBody", - "interfaceMemberDeclaration", "constantDeclaration", - "constantModifier", "interfaceMethodDeclaration", "interfaceMethodModifier", - "annotationTypeDeclaration", "annotationTypeBody", "annotationTypeMemberDeclaration", - "annotationTypeElementDeclaration", "annotationTypeElementModifier", - "defaultValue", "annotation", "normalAnnotation", "elementValuePairList", - "elementValuePair", "elementValue", "elementValueArrayInitializer", - "elementValueList", "markerAnnotation", "singleElementAnnotation", - "arrayInitializer", "variableInitializerList", "block", - "blockStatements", "blockStatement", "localVariableDeclarationStatement", - "localVariableDeclaration", "statement", "statementNoShortIf", - "statementWithoutTrailingSubstatement", "emptyStatement", - "labeledStatement", "labeledStatementNoShortIf", "expressionStatement", - "statementExpression", "ifThenStatement", "ifThenElseStatement", - "ifThenElseStatementNoShortIf", "assertStatement", "switchStatement", - "switchBlock", "switchBlockStatementGroup", "switchLabels", - "switchLabel", "enumConstantName", "whileStatement", - "whileStatementNoShortIf", "doStatement", "forStatement", - "forStatementNoShortIf", "basicForStatement", "basicForStatementNoShortIf", - "forInit", "forUpdate", "statementExpressionList", "enhancedForStatement", - "enhancedForStatementNoShortIf", "breakStatement", "continueStatement", - "returnStatement", "throwStatement", "synchronizedStatement", - "tryStatement", "catches", "catchClause", "catchFormalParameter", - "catchType", "finally_", "tryWithResourcesStatement", - "resourceSpecification", "resourceList", "resource", - "primary", "primaryNoNewArray", "primaryNoNewArray_lf_arrayAccess", - "primaryNoNewArray_lfno_arrayAccess", "primaryNoNewArray_lf_primary", - "primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary", - "primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary", - "primaryNoNewArray_lfno_primary", "primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary", - "primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary", - "classInstanceCreationExpression", "classInstanceCreationExpression_lf_primary", - "classInstanceCreationExpression_lfno_primary", "typeArgumentsOrDiamond", - "fieldAccess", "fieldAccess_lf_primary", "fieldAccess_lfno_primary", - "arrayAccess", "arrayAccess_lf_primary", "arrayAccess_lfno_primary", - "methodInvocation", "methodInvocation_lf_primary", "methodInvocation_lfno_primary", - "argumentList", "methodReference", "methodReference_lf_primary", - "methodReference_lfno_primary", "arrayCreationExpression", - "dimExprs", "dimExpr", "constantExpression", "expression", - "lambdaExpression", "lambdaParameters", "inferredFormalParameterList", - "lambdaBody", "assignmentExpression", "assignment", "leftHandSide", - "assignmentOperator", "conditionalExpression", "conditionalOrExpression", - "conditionalAndExpression", "inclusiveOrExpression", - "exclusiveOrExpression", "andExpression", "equalityExpression", - "relationalExpression", "shiftExpression", "additiveExpression", - "multiplicativeExpression", "unaryExpression", "preIncrementExpression", - "preDecrementExpression", "unaryExpressionNotPlusMinus", - "postfixExpression", "postIncrementExpression", "postIncrementExpression_lf_postfixExpression", - "postDecrementExpression", "postDecrementExpression_lf_postfixExpression", - "castExpression" ] - - EOF = Token.EOF - ABSTRACT=1 - ASSERT=2 - BOOLEAN=3 - BREAK=4 - BYTE=5 - CASE=6 - CATCH=7 - CHAR=8 - CLASS=9 - CONST=10 - CONTINUE=11 - DEFAULT=12 - DO=13 - DOUBLE=14 - ELSE=15 - ENUM=16 - EXTENDS=17 - FINAL=18 - FINALLY=19 - FLOAT=20 - FOR=21 - IF=22 - GOTO=23 - IMPLEMENTS=24 - IMPORT=25 - INSTANCEOF=26 - INT=27 - INTERFACE=28 - LONG=29 - NATIVE=30 - NEW=31 - PACKAGE=32 - PRIVATE=33 - PROTECTED=34 - PUBLIC=35 - RETURN=36 - SHORT=37 - STATIC=38 - STRICTFP=39 - SUPER=40 - SWITCH=41 - SYNCHRONIZED=42 - THIS=43 - THROW=44 - THROWS=45 - TRANSIENT=46 - TRY=47 - VOID=48 - VOLATILE=49 - WHILE=50 - IntegerLiteral=51 - FloatingPointLiteral=52 - BooleanLiteral=53 - CharacterLiteral=54 - StringLiteral=55 - NullLiteral=56 - LPAREN=57 - RPAREN=58 - LBRACE=59 - RBRACE=60 - LBRACK=61 - RBRACK=62 - SEMI=63 - COMMA=64 - DOT=65 - ASSIGN=66 - GT=67 - LT=68 - BANG=69 - TILDE=70 - QUESTION=71 - COLON=72 - EQUAL=73 - LE=74 - GE=75 - NOTEQUAL=76 - AND=77 - OR=78 - INC=79 - DEC=80 - ADD=81 - SUB=82 - MUL=83 - DIV=84 - BITAND=85 - BITOR=86 - CARET=87 - MOD=88 - ARROW=89 - COLONCOLON=90 - ADD_ASSIGN=91 - SUB_ASSIGN=92 - MUL_ASSIGN=93 - DIV_ASSIGN=94 - AND_ASSIGN=95 - OR_ASSIGN=96 - XOR_ASSIGN=97 - MOD_ASSIGN=98 - LSHIFT_ASSIGN=99 - RSHIFT_ASSIGN=100 - URSHIFT_ASSIGN=101 - Identifier=102 - AT=103 - ELLIPSIS=104 - WS=105 - COMMENT=106 - LINE_COMMENT=107 - - def __init__(self, input:TokenStream, output:TextIO = sys.stdout): - super().__init__(input, output) - self.checkVersion("4.7.2") - self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) - self._predicates = None - - - - - class LiteralContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IntegerLiteral(self): - return self.getToken(Java8Parser.IntegerLiteral, 0) - - def FloatingPointLiteral(self): - return self.getToken(Java8Parser.FloatingPointLiteral, 0) - - def BooleanLiteral(self): - return self.getToken(Java8Parser.BooleanLiteral, 0) - - def CharacterLiteral(self): - return self.getToken(Java8Parser.CharacterLiteral, 0) - - def StringLiteral(self): - return self.getToken(Java8Parser.StringLiteral, 0) - - def NullLiteral(self): - return self.getToken(Java8Parser.NullLiteral, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_literal - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLiteral" ): - listener.enterLiteral(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLiteral" ): - listener.exitLiteral(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLiteral" ): - return visitor.visitLiteral(self) - else: - return visitor.visitChildren(self) - - - - - def literal(self): - - localctx = Java8Parser.LiteralContext(self, self._ctx, self.state) - self.enterRule(localctx, 0, self.RULE_literal) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 472 - _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral))) != 0)): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PrimitiveTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def numericType(self): - return self.getTypedRuleContext(Java8Parser.NumericTypeContext,0) - - - def annotation(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.AnnotationContext) - else: - return self.getTypedRuleContext(Java8Parser.AnnotationContext,i) - - - def BOOLEAN(self): - return self.getToken(Java8Parser.BOOLEAN, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_primitiveType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPrimitiveType" ): - listener.enterPrimitiveType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPrimitiveType" ): - listener.exitPrimitiveType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPrimitiveType" ): - return visitor.visitPrimitiveType(self) - else: - return visitor.visitChildren(self) - - - - - def primitiveType(self): - - localctx = Java8Parser.PrimitiveTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 2, self.RULE_primitiveType) - self._la = 0 # Token type - try: - self.state = 488 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,2,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 477 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.AT: - self.state = 474 - self.annotation() - self.state = 479 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 480 - self.numericType() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 484 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.AT: - self.state = 481 - self.annotation() - self.state = 486 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 487 - self.match(Java8Parser.BOOLEAN) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class NumericTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def integralType(self): - return self.getTypedRuleContext(Java8Parser.IntegralTypeContext,0) - - - def floatingPointType(self): - return self.getTypedRuleContext(Java8Parser.FloatingPointTypeContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_numericType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNumericType" ): - listener.enterNumericType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNumericType" ): - listener.exitNumericType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNumericType" ): - return visitor.visitNumericType(self) - else: - return visitor.visitChildren(self) - - - - - def numericType(self): - - localctx = Java8Parser.NumericTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 4, self.RULE_numericType) - try: - self.state = 492 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [Java8Parser.BYTE, Java8Parser.CHAR, Java8Parser.INT, Java8Parser.LONG, Java8Parser.SHORT]: - self.enterOuterAlt(localctx, 1) - self.state = 490 - self.integralType() - pass - elif token in [Java8Parser.DOUBLE, Java8Parser.FLOAT]: - self.enterOuterAlt(localctx, 2) - self.state = 491 - self.floatingPointType() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class IntegralTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def BYTE(self): - return self.getToken(Java8Parser.BYTE, 0) - - def SHORT(self): - return self.getToken(Java8Parser.SHORT, 0) - - def INT(self): - return self.getToken(Java8Parser.INT, 0) - - def LONG(self): - return self.getToken(Java8Parser.LONG, 0) - - def CHAR(self): - return self.getToken(Java8Parser.CHAR, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_integralType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterIntegralType" ): - listener.enterIntegralType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitIntegralType" ): - listener.exitIntegralType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitIntegralType" ): - return visitor.visitIntegralType(self) - else: - return visitor.visitChildren(self) - - - - - def integralType(self): - - localctx = Java8Parser.IntegralTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 6, self.RULE_integralType) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 494 - _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.SHORT))) != 0)): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class FloatingPointTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FLOAT(self): - return self.getToken(Java8Parser.FLOAT, 0) - - def DOUBLE(self): - return self.getToken(Java8Parser.DOUBLE, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_floatingPointType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFloatingPointType" ): - listener.enterFloatingPointType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFloatingPointType" ): - listener.exitFloatingPointType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFloatingPointType" ): - return visitor.visitFloatingPointType(self) - else: - return visitor.visitChildren(self) - - - - - def floatingPointType(self): - - localctx = Java8Parser.FloatingPointTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 8, self.RULE_floatingPointType) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 496 - _la = self._input.LA(1) - if not(_la==Java8Parser.DOUBLE or _la==Java8Parser.FLOAT): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ReferenceTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def classOrInterfaceType(self): - return self.getTypedRuleContext(Java8Parser.ClassOrInterfaceTypeContext,0) - - - def typeVariable(self): - return self.getTypedRuleContext(Java8Parser.TypeVariableContext,0) - - - def arrayType(self): - return self.getTypedRuleContext(Java8Parser.ArrayTypeContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_referenceType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterReferenceType" ): - listener.enterReferenceType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitReferenceType" ): - listener.exitReferenceType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitReferenceType" ): - return visitor.visitReferenceType(self) - else: - return visitor.visitChildren(self) - - - - - def referenceType(self): - - localctx = Java8Parser.ReferenceTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 10, self.RULE_referenceType) - try: - self.state = 501 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,4,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 498 - self.classOrInterfaceType() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 499 - self.typeVariable() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 500 - self.arrayType() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ClassOrInterfaceTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def classType_lfno_classOrInterfaceType(self): - return self.getTypedRuleContext(Java8Parser.ClassType_lfno_classOrInterfaceTypeContext,0) - - - def interfaceType_lfno_classOrInterfaceType(self): - return self.getTypedRuleContext(Java8Parser.InterfaceType_lfno_classOrInterfaceTypeContext,0) - - - def classType_lf_classOrInterfaceType(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.ClassType_lf_classOrInterfaceTypeContext) - else: - return self.getTypedRuleContext(Java8Parser.ClassType_lf_classOrInterfaceTypeContext,i) - - - def interfaceType_lf_classOrInterfaceType(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.InterfaceType_lf_classOrInterfaceTypeContext) - else: - return self.getTypedRuleContext(Java8Parser.InterfaceType_lf_classOrInterfaceTypeContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_classOrInterfaceType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterClassOrInterfaceType" ): - listener.enterClassOrInterfaceType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitClassOrInterfaceType" ): - listener.exitClassOrInterfaceType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitClassOrInterfaceType" ): - return visitor.visitClassOrInterfaceType(self) - else: - return visitor.visitChildren(self) - - - - - def classOrInterfaceType(self): - - localctx = Java8Parser.ClassOrInterfaceTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 12, self.RULE_classOrInterfaceType) - try: - self.enterOuterAlt(localctx, 1) - self.state = 505 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,5,self._ctx) - if la_ == 1: - self.state = 503 - self.classType_lfno_classOrInterfaceType() - pass - - elif la_ == 2: - self.state = 504 - self.interfaceType_lfno_classOrInterfaceType() - pass - - - self.state = 511 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,7,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 509 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,6,self._ctx) - if la_ == 1: - self.state = 507 - self.classType_lf_classOrInterfaceType() - pass - - elif la_ == 2: - self.state = 508 - self.interfaceType_lf_classOrInterfaceType() - pass - - - self.state = 513 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,7,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ClassTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def annotation(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.AnnotationContext) - else: - return self.getTypedRuleContext(Java8Parser.AnnotationContext,i) - - - def typeArguments(self): - return self.getTypedRuleContext(Java8Parser.TypeArgumentsContext,0) - - - def classOrInterfaceType(self): - return self.getTypedRuleContext(Java8Parser.ClassOrInterfaceTypeContext,0) - - - def DOT(self): - return self.getToken(Java8Parser.DOT, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_classType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterClassType" ): - listener.enterClassType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitClassType" ): - listener.exitClassType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitClassType" ): - return visitor.visitClassType(self) - else: - return visitor.visitChildren(self) - - - - - def classType(self): - - localctx = Java8Parser.ClassTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 14, self.RULE_classType) - self._la = 0 # Token type - try: - self.state = 536 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,12,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 517 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.AT: - self.state = 514 - self.annotation() - self.state = 519 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 520 - self.match(Java8Parser.Identifier) - self.state = 522 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 521 - self.typeArguments() - - - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 524 - self.classOrInterfaceType() - self.state = 525 - self.match(Java8Parser.DOT) - self.state = 529 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.AT: - self.state = 526 - self.annotation() - self.state = 531 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 532 - self.match(Java8Parser.Identifier) - self.state = 534 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 533 - self.typeArguments() - - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ClassType_lf_classOrInterfaceTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DOT(self): - return self.getToken(Java8Parser.DOT, 0) - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def annotation(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.AnnotationContext) - else: - return self.getTypedRuleContext(Java8Parser.AnnotationContext,i) - - - def typeArguments(self): - return self.getTypedRuleContext(Java8Parser.TypeArgumentsContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_classType_lf_classOrInterfaceType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterClassType_lf_classOrInterfaceType" ): - listener.enterClassType_lf_classOrInterfaceType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitClassType_lf_classOrInterfaceType" ): - listener.exitClassType_lf_classOrInterfaceType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitClassType_lf_classOrInterfaceType" ): - return visitor.visitClassType_lf_classOrInterfaceType(self) - else: - return visitor.visitChildren(self) - - - - - def classType_lf_classOrInterfaceType(self): - - localctx = Java8Parser.ClassType_lf_classOrInterfaceTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 16, self.RULE_classType_lf_classOrInterfaceType) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 538 - self.match(Java8Parser.DOT) - self.state = 542 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.AT: - self.state = 539 - self.annotation() - self.state = 544 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 545 - self.match(Java8Parser.Identifier) - self.state = 547 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,14,self._ctx) - if la_ == 1: - self.state = 546 - self.typeArguments() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ClassType_lfno_classOrInterfaceTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def annotation(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.AnnotationContext) - else: - return self.getTypedRuleContext(Java8Parser.AnnotationContext,i) - - - def typeArguments(self): - return self.getTypedRuleContext(Java8Parser.TypeArgumentsContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_classType_lfno_classOrInterfaceType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterClassType_lfno_classOrInterfaceType" ): - listener.enterClassType_lfno_classOrInterfaceType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitClassType_lfno_classOrInterfaceType" ): - listener.exitClassType_lfno_classOrInterfaceType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitClassType_lfno_classOrInterfaceType" ): - return visitor.visitClassType_lfno_classOrInterfaceType(self) - else: - return visitor.visitChildren(self) - - - - - def classType_lfno_classOrInterfaceType(self): - - localctx = Java8Parser.ClassType_lfno_classOrInterfaceTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 18, self.RULE_classType_lfno_classOrInterfaceType) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 552 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.AT: - self.state = 549 - self.annotation() - self.state = 554 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 555 - self.match(Java8Parser.Identifier) - self.state = 557 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,16,self._ctx) - if la_ == 1: - self.state = 556 - self.typeArguments() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class InterfaceTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def classType(self): - return self.getTypedRuleContext(Java8Parser.ClassTypeContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_interfaceType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInterfaceType" ): - listener.enterInterfaceType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInterfaceType" ): - listener.exitInterfaceType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInterfaceType" ): - return visitor.visitInterfaceType(self) - else: - return visitor.visitChildren(self) - - - - - def interfaceType(self): - - localctx = Java8Parser.InterfaceTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 20, self.RULE_interfaceType) - try: - self.enterOuterAlt(localctx, 1) - self.state = 559 - self.classType() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class InterfaceType_lf_classOrInterfaceTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def classType_lf_classOrInterfaceType(self): - return self.getTypedRuleContext(Java8Parser.ClassType_lf_classOrInterfaceTypeContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_interfaceType_lf_classOrInterfaceType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInterfaceType_lf_classOrInterfaceType" ): - listener.enterInterfaceType_lf_classOrInterfaceType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInterfaceType_lf_classOrInterfaceType" ): - listener.exitInterfaceType_lf_classOrInterfaceType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInterfaceType_lf_classOrInterfaceType" ): - return visitor.visitInterfaceType_lf_classOrInterfaceType(self) - else: - return visitor.visitChildren(self) - - - - - def interfaceType_lf_classOrInterfaceType(self): - - localctx = Java8Parser.InterfaceType_lf_classOrInterfaceTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 22, self.RULE_interfaceType_lf_classOrInterfaceType) - try: - self.enterOuterAlt(localctx, 1) - self.state = 561 - self.classType_lf_classOrInterfaceType() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class InterfaceType_lfno_classOrInterfaceTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def classType_lfno_classOrInterfaceType(self): - return self.getTypedRuleContext(Java8Parser.ClassType_lfno_classOrInterfaceTypeContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_interfaceType_lfno_classOrInterfaceType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInterfaceType_lfno_classOrInterfaceType" ): - listener.enterInterfaceType_lfno_classOrInterfaceType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInterfaceType_lfno_classOrInterfaceType" ): - listener.exitInterfaceType_lfno_classOrInterfaceType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInterfaceType_lfno_classOrInterfaceType" ): - return visitor.visitInterfaceType_lfno_classOrInterfaceType(self) - else: - return visitor.visitChildren(self) - - - - - def interfaceType_lfno_classOrInterfaceType(self): - - localctx = Java8Parser.InterfaceType_lfno_classOrInterfaceTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 24, self.RULE_interfaceType_lfno_classOrInterfaceType) - try: - self.enterOuterAlt(localctx, 1) - self.state = 563 - self.classType_lfno_classOrInterfaceType() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TypeVariableContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def annotation(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.AnnotationContext) - else: - return self.getTypedRuleContext(Java8Parser.AnnotationContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_typeVariable - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypeVariable" ): - listener.enterTypeVariable(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypeVariable" ): - listener.exitTypeVariable(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTypeVariable" ): - return visitor.visitTypeVariable(self) - else: - return visitor.visitChildren(self) - - - - - def typeVariable(self): - - localctx = Java8Parser.TypeVariableContext(self, self._ctx, self.state) - self.enterRule(localctx, 26, self.RULE_typeVariable) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 568 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.AT: - self.state = 565 - self.annotation() - self.state = 570 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 571 - self.match(Java8Parser.Identifier) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ArrayTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def primitiveType(self): - return self.getTypedRuleContext(Java8Parser.PrimitiveTypeContext,0) - - - def dims(self): - return self.getTypedRuleContext(Java8Parser.DimsContext,0) - - - def classOrInterfaceType(self): - return self.getTypedRuleContext(Java8Parser.ClassOrInterfaceTypeContext,0) - - - def typeVariable(self): - return self.getTypedRuleContext(Java8Parser.TypeVariableContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_arrayType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterArrayType" ): - listener.enterArrayType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitArrayType" ): - listener.exitArrayType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitArrayType" ): - return visitor.visitArrayType(self) - else: - return visitor.visitChildren(self) - - - - - def arrayType(self): - - localctx = Java8Parser.ArrayTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 28, self.RULE_arrayType) - try: - self.state = 582 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,18,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 573 - self.primitiveType() - self.state = 574 - self.dims() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 576 - self.classOrInterfaceType() - self.state = 577 - self.dims() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 579 - self.typeVariable() - self.state = 580 - self.dims() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DimsContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def LBRACK(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.LBRACK) - else: - return self.getToken(Java8Parser.LBRACK, i) - - def RBRACK(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.RBRACK) - else: - return self.getToken(Java8Parser.RBRACK, i) - - def annotation(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.AnnotationContext) - else: - return self.getTypedRuleContext(Java8Parser.AnnotationContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_dims - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDims" ): - listener.enterDims(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDims" ): - listener.exitDims(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDims" ): - return visitor.visitDims(self) - else: - return visitor.visitChildren(self) - - - - - def dims(self): - - localctx = Java8Parser.DimsContext(self, self._ctx, self.state) - self.enterRule(localctx, 30, self.RULE_dims) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 587 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.AT: - self.state = 584 - self.annotation() - self.state = 589 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 590 - self.match(Java8Parser.LBRACK) - self.state = 591 - self.match(Java8Parser.RBRACK) - self.state = 602 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,21,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 595 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.AT: - self.state = 592 - self.annotation() - self.state = 597 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 598 - self.match(Java8Parser.LBRACK) - self.state = 599 - self.match(Java8Parser.RBRACK) - self.state = 604 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,21,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TypeParameterContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def typeParameterModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.TypeParameterModifierContext) - else: - return self.getTypedRuleContext(Java8Parser.TypeParameterModifierContext,i) - - - def typeBound(self): - return self.getTypedRuleContext(Java8Parser.TypeBoundContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_typeParameter - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypeParameter" ): - listener.enterTypeParameter(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypeParameter" ): - listener.exitTypeParameter(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTypeParameter" ): - return visitor.visitTypeParameter(self) - else: - return visitor.visitChildren(self) - - - - - def typeParameter(self): - - localctx = Java8Parser.TypeParameterContext(self, self._ctx, self.state) - self.enterRule(localctx, 32, self.RULE_typeParameter) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 608 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.AT: - self.state = 605 - self.typeParameterModifier() - self.state = 610 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 611 - self.match(Java8Parser.Identifier) - self.state = 613 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.EXTENDS: - self.state = 612 - self.typeBound() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TypeParameterModifierContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def annotation(self): - return self.getTypedRuleContext(Java8Parser.AnnotationContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_typeParameterModifier - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypeParameterModifier" ): - listener.enterTypeParameterModifier(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypeParameterModifier" ): - listener.exitTypeParameterModifier(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTypeParameterModifier" ): - return visitor.visitTypeParameterModifier(self) - else: - return visitor.visitChildren(self) - - - - - def typeParameterModifier(self): - - localctx = Java8Parser.TypeParameterModifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 34, self.RULE_typeParameterModifier) - try: - self.enterOuterAlt(localctx, 1) - self.state = 615 - self.annotation() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TypeBoundContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def EXTENDS(self): - return self.getToken(Java8Parser.EXTENDS, 0) - - def typeVariable(self): - return self.getTypedRuleContext(Java8Parser.TypeVariableContext,0) - - - def classOrInterfaceType(self): - return self.getTypedRuleContext(Java8Parser.ClassOrInterfaceTypeContext,0) - - - def additionalBound(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.AdditionalBoundContext) - else: - return self.getTypedRuleContext(Java8Parser.AdditionalBoundContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_typeBound - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypeBound" ): - listener.enterTypeBound(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypeBound" ): - listener.exitTypeBound(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTypeBound" ): - return visitor.visitTypeBound(self) - else: - return visitor.visitChildren(self) - - - - - def typeBound(self): - - localctx = Java8Parser.TypeBoundContext(self, self._ctx, self.state) - self.enterRule(localctx, 36, self.RULE_typeBound) - self._la = 0 # Token type - try: - self.state = 627 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,25,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 617 - self.match(Java8Parser.EXTENDS) - self.state = 618 - self.typeVariable() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 619 - self.match(Java8Parser.EXTENDS) - self.state = 620 - self.classOrInterfaceType() - self.state = 624 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.BITAND: - self.state = 621 - self.additionalBound() - self.state = 626 - self._errHandler.sync(self) - _la = self._input.LA(1) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AdditionalBoundContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def BITAND(self): - return self.getToken(Java8Parser.BITAND, 0) - - def interfaceType(self): - return self.getTypedRuleContext(Java8Parser.InterfaceTypeContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_additionalBound - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAdditionalBound" ): - listener.enterAdditionalBound(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAdditionalBound" ): - listener.exitAdditionalBound(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAdditionalBound" ): - return visitor.visitAdditionalBound(self) - else: - return visitor.visitChildren(self) - - - - - def additionalBound(self): - - localctx = Java8Parser.AdditionalBoundContext(self, self._ctx, self.state) - self.enterRule(localctx, 38, self.RULE_additionalBound) - try: - self.enterOuterAlt(localctx, 1) - self.state = 629 - self.match(Java8Parser.BITAND) - self.state = 630 - self.interfaceType() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TypeArgumentsContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def LT(self): - return self.getToken(Java8Parser.LT, 0) - - def typeArgumentList(self): - return self.getTypedRuleContext(Java8Parser.TypeArgumentListContext,0) - - - def GT(self): - return self.getToken(Java8Parser.GT, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_typeArguments - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypeArguments" ): - listener.enterTypeArguments(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypeArguments" ): - listener.exitTypeArguments(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTypeArguments" ): - return visitor.visitTypeArguments(self) - else: - return visitor.visitChildren(self) - - - - - def typeArguments(self): - - localctx = Java8Parser.TypeArgumentsContext(self, self._ctx, self.state) - self.enterRule(localctx, 40, self.RULE_typeArguments) - try: - self.enterOuterAlt(localctx, 1) - self.state = 632 - self.match(Java8Parser.LT) - self.state = 633 - self.typeArgumentList() - self.state = 634 - self.match(Java8Parser.GT) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TypeArgumentListContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def typeArgument(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.TypeArgumentContext) - else: - return self.getTypedRuleContext(Java8Parser.TypeArgumentContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.COMMA) - else: - return self.getToken(Java8Parser.COMMA, i) - - def getRuleIndex(self): - return Java8Parser.RULE_typeArgumentList - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypeArgumentList" ): - listener.enterTypeArgumentList(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypeArgumentList" ): - listener.exitTypeArgumentList(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTypeArgumentList" ): - return visitor.visitTypeArgumentList(self) - else: - return visitor.visitChildren(self) - - - - - def typeArgumentList(self): - - localctx = Java8Parser.TypeArgumentListContext(self, self._ctx, self.state) - self.enterRule(localctx, 42, self.RULE_typeArgumentList) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 636 - self.typeArgument() - self.state = 641 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.COMMA: - self.state = 637 - self.match(Java8Parser.COMMA) - self.state = 638 - self.typeArgument() - self.state = 643 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TypeArgumentContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def referenceType(self): - return self.getTypedRuleContext(Java8Parser.ReferenceTypeContext,0) - - - def wildcard(self): - return self.getTypedRuleContext(Java8Parser.WildcardContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_typeArgument - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypeArgument" ): - listener.enterTypeArgument(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypeArgument" ): - listener.exitTypeArgument(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTypeArgument" ): - return visitor.visitTypeArgument(self) - else: - return visitor.visitChildren(self) - - - - - def typeArgument(self): - - localctx = Java8Parser.TypeArgumentContext(self, self._ctx, self.state) - self.enterRule(localctx, 44, self.RULE_typeArgument) - try: - self.state = 646 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,27,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 644 - self.referenceType() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 645 - self.wildcard() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class WildcardContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def QUESTION(self): - return self.getToken(Java8Parser.QUESTION, 0) - - def annotation(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.AnnotationContext) - else: - return self.getTypedRuleContext(Java8Parser.AnnotationContext,i) - - - def wildcardBounds(self): - return self.getTypedRuleContext(Java8Parser.WildcardBoundsContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_wildcard - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterWildcard" ): - listener.enterWildcard(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitWildcard" ): - listener.exitWildcard(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitWildcard" ): - return visitor.visitWildcard(self) - else: - return visitor.visitChildren(self) - - - - - def wildcard(self): - - localctx = Java8Parser.WildcardContext(self, self._ctx, self.state) - self.enterRule(localctx, 46, self.RULE_wildcard) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 651 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.AT: - self.state = 648 - self.annotation() - self.state = 653 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 654 - self.match(Java8Parser.QUESTION) - self.state = 656 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.EXTENDS or _la==Java8Parser.SUPER: - self.state = 655 - self.wildcardBounds() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class WildcardBoundsContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def EXTENDS(self): - return self.getToken(Java8Parser.EXTENDS, 0) - - def referenceType(self): - return self.getTypedRuleContext(Java8Parser.ReferenceTypeContext,0) - - - def SUPER(self): - return self.getToken(Java8Parser.SUPER, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_wildcardBounds - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterWildcardBounds" ): - listener.enterWildcardBounds(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitWildcardBounds" ): - listener.exitWildcardBounds(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitWildcardBounds" ): - return visitor.visitWildcardBounds(self) - else: - return visitor.visitChildren(self) - - - - - def wildcardBounds(self): - - localctx = Java8Parser.WildcardBoundsContext(self, self._ctx, self.state) - self.enterRule(localctx, 48, self.RULE_wildcardBounds) - try: - self.state = 662 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [Java8Parser.EXTENDS]: - self.enterOuterAlt(localctx, 1) - self.state = 658 - self.match(Java8Parser.EXTENDS) - self.state = 659 - self.referenceType() - pass - elif token in [Java8Parser.SUPER]: - self.enterOuterAlt(localctx, 2) - self.state = 660 - self.match(Java8Parser.SUPER) - self.state = 661 - self.referenceType() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PackageNameContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def packageName(self): - return self.getTypedRuleContext(Java8Parser.PackageNameContext,0) - - - def DOT(self): - return self.getToken(Java8Parser.DOT, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_packageName - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPackageName" ): - listener.enterPackageName(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPackageName" ): - listener.exitPackageName(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPackageName" ): - return visitor.visitPackageName(self) - else: - return visitor.visitChildren(self) - - - - def packageName(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = Java8Parser.PackageNameContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 50 - self.enterRecursionRule(localctx, 50, self.RULE_packageName, _p) - try: - self.enterOuterAlt(localctx, 1) - self.state = 665 - self.match(Java8Parser.Identifier) - self._ctx.stop = self._input.LT(-1) - self.state = 672 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,31,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - if self._parseListeners is not None: - self.triggerExitRuleEvent() - _prevctx = localctx - localctx = Java8Parser.PackageNameContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_packageName) - self.state = 667 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 668 - self.match(Java8Parser.DOT) - self.state = 669 - self.match(Java8Parser.Identifier) - self.state = 674 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,31,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.unrollRecursionContexts(_parentctx) - return localctx - - - class TypeNameContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def packageOrTypeName(self): - return self.getTypedRuleContext(Java8Parser.PackageOrTypeNameContext,0) - - - def DOT(self): - return self.getToken(Java8Parser.DOT, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_typeName - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypeName" ): - listener.enterTypeName(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypeName" ): - listener.exitTypeName(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTypeName" ): - return visitor.visitTypeName(self) - else: - return visitor.visitChildren(self) - - - - - def typeName(self): - - localctx = Java8Parser.TypeNameContext(self, self._ctx, self.state) - self.enterRule(localctx, 52, self.RULE_typeName) - try: - self.state = 680 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,32,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 675 - self.match(Java8Parser.Identifier) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 676 - self.packageOrTypeName(0) - self.state = 677 - self.match(Java8Parser.DOT) - self.state = 678 - self.match(Java8Parser.Identifier) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PackageOrTypeNameContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def packageOrTypeName(self): - return self.getTypedRuleContext(Java8Parser.PackageOrTypeNameContext,0) - - - def DOT(self): - return self.getToken(Java8Parser.DOT, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_packageOrTypeName - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPackageOrTypeName" ): - listener.enterPackageOrTypeName(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPackageOrTypeName" ): - listener.exitPackageOrTypeName(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPackageOrTypeName" ): - return visitor.visitPackageOrTypeName(self) - else: - return visitor.visitChildren(self) - - - - def packageOrTypeName(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = Java8Parser.PackageOrTypeNameContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 54 - self.enterRecursionRule(localctx, 54, self.RULE_packageOrTypeName, _p) - try: - self.enterOuterAlt(localctx, 1) - self.state = 683 - self.match(Java8Parser.Identifier) - self._ctx.stop = self._input.LT(-1) - self.state = 690 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,33,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - if self._parseListeners is not None: - self.triggerExitRuleEvent() - _prevctx = localctx - localctx = Java8Parser.PackageOrTypeNameContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_packageOrTypeName) - self.state = 685 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 686 - self.match(Java8Parser.DOT) - self.state = 687 - self.match(Java8Parser.Identifier) - self.state = 692 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,33,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.unrollRecursionContexts(_parentctx) - return localctx - - - class ExpressionNameContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def ambiguousName(self): - return self.getTypedRuleContext(Java8Parser.AmbiguousNameContext,0) - - - def DOT(self): - return self.getToken(Java8Parser.DOT, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_expressionName - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExpressionName" ): - listener.enterExpressionName(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExpressionName" ): - listener.exitExpressionName(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExpressionName" ): - return visitor.visitExpressionName(self) - else: - return visitor.visitChildren(self) - - - - - def expressionName(self): - - localctx = Java8Parser.ExpressionNameContext(self, self._ctx, self.state) - self.enterRule(localctx, 56, self.RULE_expressionName) - try: - self.state = 698 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,34,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 693 - self.match(Java8Parser.Identifier) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 694 - self.ambiguousName(0) - self.state = 695 - self.match(Java8Parser.DOT) - self.state = 696 - self.match(Java8Parser.Identifier) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class MethodNameContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_methodName - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMethodName" ): - listener.enterMethodName(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMethodName" ): - listener.exitMethodName(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMethodName" ): - return visitor.visitMethodName(self) - else: - return visitor.visitChildren(self) - - - - - def methodName(self): - - localctx = Java8Parser.MethodNameContext(self, self._ctx, self.state) - self.enterRule(localctx, 58, self.RULE_methodName) - try: - self.enterOuterAlt(localctx, 1) - self.state = 700 - self.match(Java8Parser.Identifier) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AmbiguousNameContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def ambiguousName(self): - return self.getTypedRuleContext(Java8Parser.AmbiguousNameContext,0) - - - def DOT(self): - return self.getToken(Java8Parser.DOT, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_ambiguousName - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAmbiguousName" ): - listener.enterAmbiguousName(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAmbiguousName" ): - listener.exitAmbiguousName(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAmbiguousName" ): - return visitor.visitAmbiguousName(self) - else: - return visitor.visitChildren(self) - - - - def ambiguousName(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = Java8Parser.AmbiguousNameContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 60 - self.enterRecursionRule(localctx, 60, self.RULE_ambiguousName, _p) - try: - self.enterOuterAlt(localctx, 1) - self.state = 703 - self.match(Java8Parser.Identifier) - self._ctx.stop = self._input.LT(-1) - self.state = 710 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,35,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - if self._parseListeners is not None: - self.triggerExitRuleEvent() - _prevctx = localctx - localctx = Java8Parser.AmbiguousNameContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_ambiguousName) - self.state = 705 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 706 - self.match(Java8Parser.DOT) - self.state = 707 - self.match(Java8Parser.Identifier) - self.state = 712 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,35,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.unrollRecursionContexts(_parentctx) - return localctx - - - class CompilationUnitContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def EOF(self): - return self.getToken(Java8Parser.EOF, 0) - - def packageDeclaration(self): - return self.getTypedRuleContext(Java8Parser.PackageDeclarationContext,0) - - - def importDeclaration(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.ImportDeclarationContext) - else: - return self.getTypedRuleContext(Java8Parser.ImportDeclarationContext,i) - - - def typeDeclaration(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.TypeDeclarationContext) - else: - return self.getTypedRuleContext(Java8Parser.TypeDeclarationContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_compilationUnit - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCompilationUnit" ): - listener.enterCompilationUnit(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCompilationUnit" ): - listener.exitCompilationUnit(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCompilationUnit" ): - return visitor.visitCompilationUnit(self) - else: - return visitor.visitChildren(self) - - - - - def compilationUnit(self): - - localctx = Java8Parser.CompilationUnitContext(self, self._ctx, self.state) - self.enterRule(localctx, 62, self.RULE_compilationUnit) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 714 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,36,self._ctx) - if la_ == 1: - self.state = 713 - self.packageDeclaration() - - - self.state = 719 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.IMPORT: - self.state = 716 - self.importDeclaration() - self.state = 721 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 725 - self._errHandler.sync(self) - _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.ABSTRACT) | (1 << Java8Parser.CLASS) | (1 << Java8Parser.ENUM) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.INTERFACE) | (1 << Java8Parser.PRIVATE) | (1 << Java8Parser.PROTECTED) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.STATIC) | (1 << Java8Parser.STRICTFP) | (1 << Java8Parser.SEMI))) != 0) or _la==Java8Parser.AT: - self.state = 722 - self.typeDeclaration() - self.state = 727 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 728 - self.match(Java8Parser.EOF) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PackageDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def PACKAGE(self): - return self.getToken(Java8Parser.PACKAGE, 0) - - def packageName(self): - return self.getTypedRuleContext(Java8Parser.PackageNameContext,0) - - - def SEMI(self): - return self.getToken(Java8Parser.SEMI, 0) - - def packageModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.PackageModifierContext) - else: - return self.getTypedRuleContext(Java8Parser.PackageModifierContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_packageDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPackageDeclaration" ): - listener.enterPackageDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPackageDeclaration" ): - listener.exitPackageDeclaration(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPackageDeclaration" ): - return visitor.visitPackageDeclaration(self) - else: - return visitor.visitChildren(self) - - - - - def packageDeclaration(self): - - localctx = Java8Parser.PackageDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 64, self.RULE_packageDeclaration) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 733 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.AT: - self.state = 730 - self.packageModifier() - self.state = 735 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 736 - self.match(Java8Parser.PACKAGE) - self.state = 737 - self.packageName(0) - self.state = 738 - self.match(Java8Parser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PackageModifierContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def annotation(self): - return self.getTypedRuleContext(Java8Parser.AnnotationContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_packageModifier - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPackageModifier" ): - listener.enterPackageModifier(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPackageModifier" ): - listener.exitPackageModifier(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPackageModifier" ): - return visitor.visitPackageModifier(self) - else: - return visitor.visitChildren(self) - - - - - def packageModifier(self): - - localctx = Java8Parser.PackageModifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 66, self.RULE_packageModifier) - try: - self.enterOuterAlt(localctx, 1) - self.state = 740 - self.annotation() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ImportDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def singleTypeImportDeclaration(self): - return self.getTypedRuleContext(Java8Parser.SingleTypeImportDeclarationContext,0) - - - def typeImportOnDemandDeclaration(self): - return self.getTypedRuleContext(Java8Parser.TypeImportOnDemandDeclarationContext,0) - - - def singleStaticImportDeclaration(self): - return self.getTypedRuleContext(Java8Parser.SingleStaticImportDeclarationContext,0) - - - def staticImportOnDemandDeclaration(self): - return self.getTypedRuleContext(Java8Parser.StaticImportOnDemandDeclarationContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_importDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterImportDeclaration" ): - listener.enterImportDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitImportDeclaration" ): - listener.exitImportDeclaration(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitImportDeclaration" ): - return visitor.visitImportDeclaration(self) - else: - return visitor.visitChildren(self) - - - - - def importDeclaration(self): - - localctx = Java8Parser.ImportDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 68, self.RULE_importDeclaration) - try: - self.state = 746 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,40,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 742 - self.singleTypeImportDeclaration() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 743 - self.typeImportOnDemandDeclaration() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 744 - self.singleStaticImportDeclaration() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 745 - self.staticImportOnDemandDeclaration() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class SingleTypeImportDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IMPORT(self): - return self.getToken(Java8Parser.IMPORT, 0) - - def typeName(self): - return self.getTypedRuleContext(Java8Parser.TypeNameContext,0) - - - def SEMI(self): - return self.getToken(Java8Parser.SEMI, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_singleTypeImportDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSingleTypeImportDeclaration" ): - listener.enterSingleTypeImportDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSingleTypeImportDeclaration" ): - listener.exitSingleTypeImportDeclaration(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSingleTypeImportDeclaration" ): - return visitor.visitSingleTypeImportDeclaration(self) - else: - return visitor.visitChildren(self) - - - - - def singleTypeImportDeclaration(self): - - localctx = Java8Parser.SingleTypeImportDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 70, self.RULE_singleTypeImportDeclaration) - try: - self.enterOuterAlt(localctx, 1) - self.state = 748 - self.match(Java8Parser.IMPORT) - self.state = 749 - self.typeName() - self.state = 750 - self.match(Java8Parser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TypeImportOnDemandDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IMPORT(self): - return self.getToken(Java8Parser.IMPORT, 0) - - def packageOrTypeName(self): - return self.getTypedRuleContext(Java8Parser.PackageOrTypeNameContext,0) - - - def DOT(self): - return self.getToken(Java8Parser.DOT, 0) - - def MUL(self): - return self.getToken(Java8Parser.MUL, 0) - - def SEMI(self): - return self.getToken(Java8Parser.SEMI, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_typeImportOnDemandDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypeImportOnDemandDeclaration" ): - listener.enterTypeImportOnDemandDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypeImportOnDemandDeclaration" ): - listener.exitTypeImportOnDemandDeclaration(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTypeImportOnDemandDeclaration" ): - return visitor.visitTypeImportOnDemandDeclaration(self) - else: - return visitor.visitChildren(self) - - - - - def typeImportOnDemandDeclaration(self): - - localctx = Java8Parser.TypeImportOnDemandDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 72, self.RULE_typeImportOnDemandDeclaration) - try: - self.enterOuterAlt(localctx, 1) - self.state = 752 - self.match(Java8Parser.IMPORT) - self.state = 753 - self.packageOrTypeName(0) - self.state = 754 - self.match(Java8Parser.DOT) - self.state = 755 - self.match(Java8Parser.MUL) - self.state = 756 - self.match(Java8Parser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class SingleStaticImportDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IMPORT(self): - return self.getToken(Java8Parser.IMPORT, 0) - - def STATIC(self): - return self.getToken(Java8Parser.STATIC, 0) - - def typeName(self): - return self.getTypedRuleContext(Java8Parser.TypeNameContext,0) - - - def DOT(self): - return self.getToken(Java8Parser.DOT, 0) - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def SEMI(self): - return self.getToken(Java8Parser.SEMI, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_singleStaticImportDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSingleStaticImportDeclaration" ): - listener.enterSingleStaticImportDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSingleStaticImportDeclaration" ): - listener.exitSingleStaticImportDeclaration(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSingleStaticImportDeclaration" ): - return visitor.visitSingleStaticImportDeclaration(self) - else: - return visitor.visitChildren(self) - - - - - def singleStaticImportDeclaration(self): - - localctx = Java8Parser.SingleStaticImportDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 74, self.RULE_singleStaticImportDeclaration) - try: - self.enterOuterAlt(localctx, 1) - self.state = 758 - self.match(Java8Parser.IMPORT) - self.state = 759 - self.match(Java8Parser.STATIC) - self.state = 760 - self.typeName() - self.state = 761 - self.match(Java8Parser.DOT) - self.state = 762 - self.match(Java8Parser.Identifier) - self.state = 763 - self.match(Java8Parser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class StaticImportOnDemandDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IMPORT(self): - return self.getToken(Java8Parser.IMPORT, 0) - - def STATIC(self): - return self.getToken(Java8Parser.STATIC, 0) - - def typeName(self): - return self.getTypedRuleContext(Java8Parser.TypeNameContext,0) - - - def DOT(self): - return self.getToken(Java8Parser.DOT, 0) - - def MUL(self): - return self.getToken(Java8Parser.MUL, 0) - - def SEMI(self): - return self.getToken(Java8Parser.SEMI, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_staticImportOnDemandDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStaticImportOnDemandDeclaration" ): - listener.enterStaticImportOnDemandDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStaticImportOnDemandDeclaration" ): - listener.exitStaticImportOnDemandDeclaration(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStaticImportOnDemandDeclaration" ): - return visitor.visitStaticImportOnDemandDeclaration(self) - else: - return visitor.visitChildren(self) - - - - - def staticImportOnDemandDeclaration(self): - - localctx = Java8Parser.StaticImportOnDemandDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 76, self.RULE_staticImportOnDemandDeclaration) - try: - self.enterOuterAlt(localctx, 1) - self.state = 765 - self.match(Java8Parser.IMPORT) - self.state = 766 - self.match(Java8Parser.STATIC) - self.state = 767 - self.typeName() - self.state = 768 - self.match(Java8Parser.DOT) - self.state = 769 - self.match(Java8Parser.MUL) - self.state = 770 - self.match(Java8Parser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TypeDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def classDeclaration(self): - return self.getTypedRuleContext(Java8Parser.ClassDeclarationContext,0) - - - def interfaceDeclaration(self): - return self.getTypedRuleContext(Java8Parser.InterfaceDeclarationContext,0) - - - def SEMI(self): - return self.getToken(Java8Parser.SEMI, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_typeDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypeDeclaration" ): - listener.enterTypeDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypeDeclaration" ): - listener.exitTypeDeclaration(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTypeDeclaration" ): - return visitor.visitTypeDeclaration(self) - else: - return visitor.visitChildren(self) - - - - - def typeDeclaration(self): - - localctx = Java8Parser.TypeDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 78, self.RULE_typeDeclaration) - try: - self.state = 775 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,41,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 772 - self.classDeclaration() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 773 - self.interfaceDeclaration() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 774 - self.match(Java8Parser.SEMI) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ClassDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def normalClassDeclaration(self): - return self.getTypedRuleContext(Java8Parser.NormalClassDeclarationContext,0) - - - def enumDeclaration(self): - return self.getTypedRuleContext(Java8Parser.EnumDeclarationContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_classDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterClassDeclaration" ): - listener.enterClassDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitClassDeclaration" ): - listener.exitClassDeclaration(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitClassDeclaration" ): - return visitor.visitClassDeclaration(self) - else: - return visitor.visitChildren(self) - - - - - def classDeclaration(self): - - localctx = Java8Parser.ClassDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 80, self.RULE_classDeclaration) - try: - self.state = 779 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,42,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 777 - self.normalClassDeclaration() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 778 - self.enumDeclaration() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class NormalClassDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CLASS(self): - return self.getToken(Java8Parser.CLASS, 0) - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def classBody(self): - return self.getTypedRuleContext(Java8Parser.ClassBodyContext,0) - - - def classModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.ClassModifierContext) - else: - return self.getTypedRuleContext(Java8Parser.ClassModifierContext,i) - - - def typeParameters(self): - return self.getTypedRuleContext(Java8Parser.TypeParametersContext,0) - - - def superclass(self): - return self.getTypedRuleContext(Java8Parser.SuperclassContext,0) - - - def superinterfaces(self): - return self.getTypedRuleContext(Java8Parser.SuperinterfacesContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_normalClassDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNormalClassDeclaration" ): - listener.enterNormalClassDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNormalClassDeclaration" ): - listener.exitNormalClassDeclaration(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNormalClassDeclaration" ): - return visitor.visitNormalClassDeclaration(self) - else: - return visitor.visitChildren(self) - - - - - def normalClassDeclaration(self): - - localctx = Java8Parser.NormalClassDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 82, self.RULE_normalClassDeclaration) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 784 - self._errHandler.sync(self) - _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.ABSTRACT) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.PRIVATE) | (1 << Java8Parser.PROTECTED) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.STATIC) | (1 << Java8Parser.STRICTFP))) != 0) or _la==Java8Parser.AT: - self.state = 781 - self.classModifier() - self.state = 786 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 787 - self.match(Java8Parser.CLASS) - self.state = 788 - self.match(Java8Parser.Identifier) - self.state = 790 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 789 - self.typeParameters() - - - self.state = 793 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.EXTENDS: - self.state = 792 - self.superclass() - - - self.state = 796 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.IMPLEMENTS: - self.state = 795 - self.superinterfaces() - - - self.state = 798 - self.classBody() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ClassModifierContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def annotation(self): - return self.getTypedRuleContext(Java8Parser.AnnotationContext,0) - - - def PUBLIC(self): - return self.getToken(Java8Parser.PUBLIC, 0) - - def PROTECTED(self): - return self.getToken(Java8Parser.PROTECTED, 0) - - def PRIVATE(self): - return self.getToken(Java8Parser.PRIVATE, 0) - - def ABSTRACT(self): - return self.getToken(Java8Parser.ABSTRACT, 0) - - def STATIC(self): - return self.getToken(Java8Parser.STATIC, 0) - - def FINAL(self): - return self.getToken(Java8Parser.FINAL, 0) - - def STRICTFP(self): - return self.getToken(Java8Parser.STRICTFP, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_classModifier - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterClassModifier" ): - listener.enterClassModifier(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitClassModifier" ): - listener.exitClassModifier(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitClassModifier" ): - return visitor.visitClassModifier(self) - else: - return visitor.visitChildren(self) - - - - - def classModifier(self): - - localctx = Java8Parser.ClassModifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 84, self.RULE_classModifier) - try: - self.state = 808 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [Java8Parser.AT]: - self.enterOuterAlt(localctx, 1) - self.state = 800 - self.annotation() - pass - elif token in [Java8Parser.PUBLIC]: - self.enterOuterAlt(localctx, 2) - self.state = 801 - self.match(Java8Parser.PUBLIC) - pass - elif token in [Java8Parser.PROTECTED]: - self.enterOuterAlt(localctx, 3) - self.state = 802 - self.match(Java8Parser.PROTECTED) - pass - elif token in [Java8Parser.PRIVATE]: - self.enterOuterAlt(localctx, 4) - self.state = 803 - self.match(Java8Parser.PRIVATE) - pass - elif token in [Java8Parser.ABSTRACT]: - self.enterOuterAlt(localctx, 5) - self.state = 804 - self.match(Java8Parser.ABSTRACT) - pass - elif token in [Java8Parser.STATIC]: - self.enterOuterAlt(localctx, 6) - self.state = 805 - self.match(Java8Parser.STATIC) - pass - elif token in [Java8Parser.FINAL]: - self.enterOuterAlt(localctx, 7) - self.state = 806 - self.match(Java8Parser.FINAL) - pass - elif token in [Java8Parser.STRICTFP]: - self.enterOuterAlt(localctx, 8) - self.state = 807 - self.match(Java8Parser.STRICTFP) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TypeParametersContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def LT(self): - return self.getToken(Java8Parser.LT, 0) - - def typeParameterList(self): - return self.getTypedRuleContext(Java8Parser.TypeParameterListContext,0) - - - def GT(self): - return self.getToken(Java8Parser.GT, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_typeParameters - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypeParameters" ): - listener.enterTypeParameters(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypeParameters" ): - listener.exitTypeParameters(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTypeParameters" ): - return visitor.visitTypeParameters(self) - else: - return visitor.visitChildren(self) - - - - - def typeParameters(self): - - localctx = Java8Parser.TypeParametersContext(self, self._ctx, self.state) - self.enterRule(localctx, 86, self.RULE_typeParameters) - try: - self.enterOuterAlt(localctx, 1) - self.state = 810 - self.match(Java8Parser.LT) - self.state = 811 - self.typeParameterList() - self.state = 812 - self.match(Java8Parser.GT) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TypeParameterListContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def typeParameter(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.TypeParameterContext) - else: - return self.getTypedRuleContext(Java8Parser.TypeParameterContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.COMMA) - else: - return self.getToken(Java8Parser.COMMA, i) - - def getRuleIndex(self): - return Java8Parser.RULE_typeParameterList - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypeParameterList" ): - listener.enterTypeParameterList(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypeParameterList" ): - listener.exitTypeParameterList(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTypeParameterList" ): - return visitor.visitTypeParameterList(self) - else: - return visitor.visitChildren(self) - - - - - def typeParameterList(self): - - localctx = Java8Parser.TypeParameterListContext(self, self._ctx, self.state) - self.enterRule(localctx, 88, self.RULE_typeParameterList) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 814 - self.typeParameter() - self.state = 819 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.COMMA: - self.state = 815 - self.match(Java8Parser.COMMA) - self.state = 816 - self.typeParameter() - self.state = 821 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class SuperclassContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def EXTENDS(self): - return self.getToken(Java8Parser.EXTENDS, 0) - - def classType(self): - return self.getTypedRuleContext(Java8Parser.ClassTypeContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_superclass - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSuperclass" ): - listener.enterSuperclass(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSuperclass" ): - listener.exitSuperclass(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSuperclass" ): - return visitor.visitSuperclass(self) - else: - return visitor.visitChildren(self) - - - - - def superclass(self): - - localctx = Java8Parser.SuperclassContext(self, self._ctx, self.state) - self.enterRule(localctx, 90, self.RULE_superclass) - try: - self.enterOuterAlt(localctx, 1) - self.state = 822 - self.match(Java8Parser.EXTENDS) - self.state = 823 - self.classType() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class SuperinterfacesContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IMPLEMENTS(self): - return self.getToken(Java8Parser.IMPLEMENTS, 0) - - def interfaceTypeList(self): - return self.getTypedRuleContext(Java8Parser.InterfaceTypeListContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_superinterfaces - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSuperinterfaces" ): - listener.enterSuperinterfaces(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSuperinterfaces" ): - listener.exitSuperinterfaces(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSuperinterfaces" ): - return visitor.visitSuperinterfaces(self) - else: - return visitor.visitChildren(self) - - - - - def superinterfaces(self): - - localctx = Java8Parser.SuperinterfacesContext(self, self._ctx, self.state) - self.enterRule(localctx, 92, self.RULE_superinterfaces) - try: - self.enterOuterAlt(localctx, 1) - self.state = 825 - self.match(Java8Parser.IMPLEMENTS) - self.state = 826 - self.interfaceTypeList() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class InterfaceTypeListContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def interfaceType(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.InterfaceTypeContext) - else: - return self.getTypedRuleContext(Java8Parser.InterfaceTypeContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.COMMA) - else: - return self.getToken(Java8Parser.COMMA, i) - - def getRuleIndex(self): - return Java8Parser.RULE_interfaceTypeList - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInterfaceTypeList" ): - listener.enterInterfaceTypeList(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInterfaceTypeList" ): - listener.exitInterfaceTypeList(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInterfaceTypeList" ): - return visitor.visitInterfaceTypeList(self) - else: - return visitor.visitChildren(self) - - - - - def interfaceTypeList(self): - - localctx = Java8Parser.InterfaceTypeListContext(self, self._ctx, self.state) - self.enterRule(localctx, 94, self.RULE_interfaceTypeList) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 828 - self.interfaceType() - self.state = 833 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.COMMA: - self.state = 829 - self.match(Java8Parser.COMMA) - self.state = 830 - self.interfaceType() - self.state = 835 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ClassBodyContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def LBRACE(self): - return self.getToken(Java8Parser.LBRACE, 0) - - def RBRACE(self): - return self.getToken(Java8Parser.RBRACE, 0) - - def classBodyDeclaration(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.ClassBodyDeclarationContext) - else: - return self.getTypedRuleContext(Java8Parser.ClassBodyDeclarationContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_classBody - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterClassBody" ): - listener.enterClassBody(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitClassBody" ): - listener.exitClassBody(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitClassBody" ): - return visitor.visitClassBody(self) - else: - return visitor.visitChildren(self) - - - - - def classBody(self): - - localctx = Java8Parser.ClassBodyContext(self, self._ctx, self.state) - self.enterRule(localctx, 96, self.RULE_classBody) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 836 - self.match(Java8Parser.LBRACE) - self.state = 840 - self._errHandler.sync(self) - _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.ABSTRACT) | (1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.CLASS) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.ENUM) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.INTERFACE) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NATIVE) | (1 << Java8Parser.PRIVATE) | (1 << Java8Parser.PROTECTED) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.STATIC) | (1 << Java8Parser.STRICTFP) | (1 << Java8Parser.SYNCHRONIZED) | (1 << Java8Parser.TRANSIENT) | (1 << Java8Parser.VOID) | (1 << Java8Parser.VOLATILE) | (1 << Java8Parser.LBRACE) | (1 << Java8Parser.SEMI))) != 0) or ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & ((1 << (Java8Parser.LT - 68)) | (1 << (Java8Parser.Identifier - 68)) | (1 << (Java8Parser.AT - 68)))) != 0): - self.state = 837 - self.classBodyDeclaration() - self.state = 842 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 843 - self.match(Java8Parser.RBRACE) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ClassBodyDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def classMemberDeclaration(self): - return self.getTypedRuleContext(Java8Parser.ClassMemberDeclarationContext,0) - - - def instanceInitializer(self): - return self.getTypedRuleContext(Java8Parser.InstanceInitializerContext,0) - - - def staticInitializer(self): - return self.getTypedRuleContext(Java8Parser.StaticInitializerContext,0) - - - def constructorDeclaration(self): - return self.getTypedRuleContext(Java8Parser.ConstructorDeclarationContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_classBodyDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterClassBodyDeclaration" ): - listener.enterClassBodyDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitClassBodyDeclaration" ): - listener.exitClassBodyDeclaration(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitClassBodyDeclaration" ): - return visitor.visitClassBodyDeclaration(self) - else: - return visitor.visitChildren(self) - - - - - def classBodyDeclaration(self): - - localctx = Java8Parser.ClassBodyDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 98, self.RULE_classBodyDeclaration) - try: - self.state = 849 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,51,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 845 - self.classMemberDeclaration() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 846 - self.instanceInitializer() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 847 - self.staticInitializer() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 848 - self.constructorDeclaration() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ClassMemberDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def fieldDeclaration(self): - return self.getTypedRuleContext(Java8Parser.FieldDeclarationContext,0) - - - def methodDeclaration(self): - return self.getTypedRuleContext(Java8Parser.MethodDeclarationContext,0) - - - def classDeclaration(self): - return self.getTypedRuleContext(Java8Parser.ClassDeclarationContext,0) - - - def interfaceDeclaration(self): - return self.getTypedRuleContext(Java8Parser.InterfaceDeclarationContext,0) - - - def SEMI(self): - return self.getToken(Java8Parser.SEMI, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_classMemberDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterClassMemberDeclaration" ): - listener.enterClassMemberDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitClassMemberDeclaration" ): - listener.exitClassMemberDeclaration(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitClassMemberDeclaration" ): - return visitor.visitClassMemberDeclaration(self) - else: - return visitor.visitChildren(self) - - - - - def classMemberDeclaration(self): - - localctx = Java8Parser.ClassMemberDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 100, self.RULE_classMemberDeclaration) - try: - self.state = 856 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,52,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 851 - self.fieldDeclaration() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 852 - self.methodDeclaration() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 853 - self.classDeclaration() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 854 - self.interfaceDeclaration() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 855 - self.match(Java8Parser.SEMI) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class FieldDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def unannType(self): - return self.getTypedRuleContext(Java8Parser.UnannTypeContext,0) - - - def variableDeclaratorList(self): - return self.getTypedRuleContext(Java8Parser.VariableDeclaratorListContext,0) - - - def SEMI(self): - return self.getToken(Java8Parser.SEMI, 0) - - def fieldModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.FieldModifierContext) - else: - return self.getTypedRuleContext(Java8Parser.FieldModifierContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_fieldDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFieldDeclaration" ): - listener.enterFieldDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFieldDeclaration" ): - listener.exitFieldDeclaration(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFieldDeclaration" ): - return visitor.visitFieldDeclaration(self) - else: - return visitor.visitChildren(self) - - - - - def fieldDeclaration(self): - - localctx = Java8Parser.FieldDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 102, self.RULE_fieldDeclaration) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 861 - self._errHandler.sync(self) - _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.FINAL) | (1 << Java8Parser.PRIVATE) | (1 << Java8Parser.PROTECTED) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.STATIC) | (1 << Java8Parser.TRANSIENT) | (1 << Java8Parser.VOLATILE))) != 0) or _la==Java8Parser.AT: - self.state = 858 - self.fieldModifier() - self.state = 863 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 864 - self.unannType() - self.state = 865 - self.variableDeclaratorList() - self.state = 866 - self.match(Java8Parser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class FieldModifierContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def annotation(self): - return self.getTypedRuleContext(Java8Parser.AnnotationContext,0) - - - def PUBLIC(self): - return self.getToken(Java8Parser.PUBLIC, 0) - - def PROTECTED(self): - return self.getToken(Java8Parser.PROTECTED, 0) - - def PRIVATE(self): - return self.getToken(Java8Parser.PRIVATE, 0) - - def STATIC(self): - return self.getToken(Java8Parser.STATIC, 0) - - def FINAL(self): - return self.getToken(Java8Parser.FINAL, 0) - - def TRANSIENT(self): - return self.getToken(Java8Parser.TRANSIENT, 0) - - def VOLATILE(self): - return self.getToken(Java8Parser.VOLATILE, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_fieldModifier - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFieldModifier" ): - listener.enterFieldModifier(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFieldModifier" ): - listener.exitFieldModifier(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFieldModifier" ): - return visitor.visitFieldModifier(self) - else: - return visitor.visitChildren(self) - - - - - def fieldModifier(self): - - localctx = Java8Parser.FieldModifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 104, self.RULE_fieldModifier) - try: - self.state = 876 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [Java8Parser.AT]: - self.enterOuterAlt(localctx, 1) - self.state = 868 - self.annotation() - pass - elif token in [Java8Parser.PUBLIC]: - self.enterOuterAlt(localctx, 2) - self.state = 869 - self.match(Java8Parser.PUBLIC) - pass - elif token in [Java8Parser.PROTECTED]: - self.enterOuterAlt(localctx, 3) - self.state = 870 - self.match(Java8Parser.PROTECTED) - pass - elif token in [Java8Parser.PRIVATE]: - self.enterOuterAlt(localctx, 4) - self.state = 871 - self.match(Java8Parser.PRIVATE) - pass - elif token in [Java8Parser.STATIC]: - self.enterOuterAlt(localctx, 5) - self.state = 872 - self.match(Java8Parser.STATIC) - pass - elif token in [Java8Parser.FINAL]: - self.enterOuterAlt(localctx, 6) - self.state = 873 - self.match(Java8Parser.FINAL) - pass - elif token in [Java8Parser.TRANSIENT]: - self.enterOuterAlt(localctx, 7) - self.state = 874 - self.match(Java8Parser.TRANSIENT) - pass - elif token in [Java8Parser.VOLATILE]: - self.enterOuterAlt(localctx, 8) - self.state = 875 - self.match(Java8Parser.VOLATILE) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class VariableDeclaratorListContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def variableDeclarator(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.VariableDeclaratorContext) - else: - return self.getTypedRuleContext(Java8Parser.VariableDeclaratorContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.COMMA) - else: - return self.getToken(Java8Parser.COMMA, i) - - def getRuleIndex(self): - return Java8Parser.RULE_variableDeclaratorList - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVariableDeclaratorList" ): - listener.enterVariableDeclaratorList(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVariableDeclaratorList" ): - listener.exitVariableDeclaratorList(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitVariableDeclaratorList" ): - return visitor.visitVariableDeclaratorList(self) - else: - return visitor.visitChildren(self) - - - - - def variableDeclaratorList(self): - - localctx = Java8Parser.VariableDeclaratorListContext(self, self._ctx, self.state) - self.enterRule(localctx, 106, self.RULE_variableDeclaratorList) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 878 - self.variableDeclarator() - self.state = 883 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.COMMA: - self.state = 879 - self.match(Java8Parser.COMMA) - self.state = 880 - self.variableDeclarator() - self.state = 885 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class VariableDeclaratorContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def variableDeclaratorId(self): - return self.getTypedRuleContext(Java8Parser.VariableDeclaratorIdContext,0) - - - def ASSIGN(self): - return self.getToken(Java8Parser.ASSIGN, 0) - - def variableInitializer(self): - return self.getTypedRuleContext(Java8Parser.VariableInitializerContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_variableDeclarator - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVariableDeclarator" ): - listener.enterVariableDeclarator(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVariableDeclarator" ): - listener.exitVariableDeclarator(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitVariableDeclarator" ): - return visitor.visitVariableDeclarator(self) - else: - return visitor.visitChildren(self) - - - - - def variableDeclarator(self): - - localctx = Java8Parser.VariableDeclaratorContext(self, self._ctx, self.state) - self.enterRule(localctx, 108, self.RULE_variableDeclarator) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 886 - self.variableDeclaratorId() - self.state = 889 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.ASSIGN: - self.state = 887 - self.match(Java8Parser.ASSIGN) - self.state = 888 - self.variableInitializer() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class VariableDeclaratorIdContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def dims(self): - return self.getTypedRuleContext(Java8Parser.DimsContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_variableDeclaratorId - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVariableDeclaratorId" ): - listener.enterVariableDeclaratorId(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVariableDeclaratorId" ): - listener.exitVariableDeclaratorId(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitVariableDeclaratorId" ): - return visitor.visitVariableDeclaratorId(self) - else: - return visitor.visitChildren(self) - - - - - def variableDeclaratorId(self): - - localctx = Java8Parser.VariableDeclaratorIdContext(self, self._ctx, self.state) - self.enterRule(localctx, 110, self.RULE_variableDeclaratorId) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 891 - self.match(Java8Parser.Identifier) - self.state = 893 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LBRACK or _la==Java8Parser.AT: - self.state = 892 - self.dims() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class VariableInitializerContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def expression(self): - return self.getTypedRuleContext(Java8Parser.ExpressionContext,0) - - - def arrayInitializer(self): - return self.getTypedRuleContext(Java8Parser.ArrayInitializerContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_variableInitializer - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVariableInitializer" ): - listener.enterVariableInitializer(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVariableInitializer" ): - listener.exitVariableInitializer(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitVariableInitializer" ): - return visitor.visitVariableInitializer(self) - else: - return visitor.visitChildren(self) - - - - - def variableInitializer(self): - - localctx = Java8Parser.VariableInitializerContext(self, self._ctx, self.state) - self.enterRule(localctx, 112, self.RULE_variableInitializer) - try: - self.state = 897 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [Java8Parser.BOOLEAN, Java8Parser.BYTE, Java8Parser.CHAR, Java8Parser.DOUBLE, Java8Parser.FLOAT, Java8Parser.INT, Java8Parser.LONG, Java8Parser.NEW, Java8Parser.SHORT, Java8Parser.SUPER, Java8Parser.THIS, Java8Parser.VOID, Java8Parser.IntegerLiteral, Java8Parser.FloatingPointLiteral, Java8Parser.BooleanLiteral, Java8Parser.CharacterLiteral, Java8Parser.StringLiteral, Java8Parser.NullLiteral, Java8Parser.LPAREN, Java8Parser.BANG, Java8Parser.TILDE, Java8Parser.INC, Java8Parser.DEC, Java8Parser.ADD, Java8Parser.SUB, Java8Parser.Identifier, Java8Parser.AT]: - self.enterOuterAlt(localctx, 1) - self.state = 895 - self.expression() - pass - elif token in [Java8Parser.LBRACE]: - self.enterOuterAlt(localctx, 2) - self.state = 896 - self.arrayInitializer() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class UnannTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def unannPrimitiveType(self): - return self.getTypedRuleContext(Java8Parser.UnannPrimitiveTypeContext,0) - - - def unannReferenceType(self): - return self.getTypedRuleContext(Java8Parser.UnannReferenceTypeContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_unannType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterUnannType" ): - listener.enterUnannType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitUnannType" ): - listener.exitUnannType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitUnannType" ): - return visitor.visitUnannType(self) - else: - return visitor.visitChildren(self) - - - - - def unannType(self): - - localctx = Java8Parser.UnannTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 114, self.RULE_unannType) - try: - self.state = 901 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,59,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 899 - self.unannPrimitiveType() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 900 - self.unannReferenceType() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class UnannPrimitiveTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def numericType(self): - return self.getTypedRuleContext(Java8Parser.NumericTypeContext,0) - - - def BOOLEAN(self): - return self.getToken(Java8Parser.BOOLEAN, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_unannPrimitiveType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterUnannPrimitiveType" ): - listener.enterUnannPrimitiveType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitUnannPrimitiveType" ): - listener.exitUnannPrimitiveType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitUnannPrimitiveType" ): - return visitor.visitUnannPrimitiveType(self) - else: - return visitor.visitChildren(self) - - - - - def unannPrimitiveType(self): - - localctx = Java8Parser.UnannPrimitiveTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 116, self.RULE_unannPrimitiveType) - try: - self.state = 905 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [Java8Parser.BYTE, Java8Parser.CHAR, Java8Parser.DOUBLE, Java8Parser.FLOAT, Java8Parser.INT, Java8Parser.LONG, Java8Parser.SHORT]: - self.enterOuterAlt(localctx, 1) - self.state = 903 - self.numericType() - pass - elif token in [Java8Parser.BOOLEAN]: - self.enterOuterAlt(localctx, 2) - self.state = 904 - self.match(Java8Parser.BOOLEAN) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class UnannReferenceTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def unannClassOrInterfaceType(self): - return self.getTypedRuleContext(Java8Parser.UnannClassOrInterfaceTypeContext,0) - - - def unannTypeVariable(self): - return self.getTypedRuleContext(Java8Parser.UnannTypeVariableContext,0) - - - def unannArrayType(self): - return self.getTypedRuleContext(Java8Parser.UnannArrayTypeContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_unannReferenceType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterUnannReferenceType" ): - listener.enterUnannReferenceType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitUnannReferenceType" ): - listener.exitUnannReferenceType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitUnannReferenceType" ): - return visitor.visitUnannReferenceType(self) - else: - return visitor.visitChildren(self) - - - - - def unannReferenceType(self): - - localctx = Java8Parser.UnannReferenceTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 118, self.RULE_unannReferenceType) - try: - self.state = 910 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,61,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 907 - self.unannClassOrInterfaceType() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 908 - self.unannTypeVariable() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 909 - self.unannArrayType() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class UnannClassOrInterfaceTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def unannClassType_lfno_unannClassOrInterfaceType(self): - return self.getTypedRuleContext(Java8Parser.UnannClassType_lfno_unannClassOrInterfaceTypeContext,0) - - - def unannInterfaceType_lfno_unannClassOrInterfaceType(self): - return self.getTypedRuleContext(Java8Parser.UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext,0) - - - def unannClassType_lf_unannClassOrInterfaceType(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.UnannClassType_lf_unannClassOrInterfaceTypeContext) - else: - return self.getTypedRuleContext(Java8Parser.UnannClassType_lf_unannClassOrInterfaceTypeContext,i) - - - def unannInterfaceType_lf_unannClassOrInterfaceType(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.UnannInterfaceType_lf_unannClassOrInterfaceTypeContext) - else: - return self.getTypedRuleContext(Java8Parser.UnannInterfaceType_lf_unannClassOrInterfaceTypeContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_unannClassOrInterfaceType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterUnannClassOrInterfaceType" ): - listener.enterUnannClassOrInterfaceType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitUnannClassOrInterfaceType" ): - listener.exitUnannClassOrInterfaceType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitUnannClassOrInterfaceType" ): - return visitor.visitUnannClassOrInterfaceType(self) - else: - return visitor.visitChildren(self) - - - - - def unannClassOrInterfaceType(self): - - localctx = Java8Parser.UnannClassOrInterfaceTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 120, self.RULE_unannClassOrInterfaceType) - try: - self.enterOuterAlt(localctx, 1) - self.state = 914 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,62,self._ctx) - if la_ == 1: - self.state = 912 - self.unannClassType_lfno_unannClassOrInterfaceType() - pass - - elif la_ == 2: - self.state = 913 - self.unannInterfaceType_lfno_unannClassOrInterfaceType() - pass - - - self.state = 920 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,64,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 918 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,63,self._ctx) - if la_ == 1: - self.state = 916 - self.unannClassType_lf_unannClassOrInterfaceType() - pass - - elif la_ == 2: - self.state = 917 - self.unannInterfaceType_lf_unannClassOrInterfaceType() - pass - - - self.state = 922 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,64,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class UnannClassTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def typeArguments(self): - return self.getTypedRuleContext(Java8Parser.TypeArgumentsContext,0) - - - def unannClassOrInterfaceType(self): - return self.getTypedRuleContext(Java8Parser.UnannClassOrInterfaceTypeContext,0) - - - def DOT(self): - return self.getToken(Java8Parser.DOT, 0) - - def annotation(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.AnnotationContext) - else: - return self.getTypedRuleContext(Java8Parser.AnnotationContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_unannClassType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterUnannClassType" ): - listener.enterUnannClassType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitUnannClassType" ): - listener.exitUnannClassType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitUnannClassType" ): - return visitor.visitUnannClassType(self) - else: - return visitor.visitChildren(self) - - - - - def unannClassType(self): - - localctx = Java8Parser.UnannClassTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 122, self.RULE_unannClassType) - self._la = 0 # Token type - try: - self.state = 939 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,68,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 923 - self.match(Java8Parser.Identifier) - self.state = 925 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 924 - self.typeArguments() - - - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 927 - self.unannClassOrInterfaceType() - self.state = 928 - self.match(Java8Parser.DOT) - self.state = 932 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.AT: - self.state = 929 - self.annotation() - self.state = 934 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 935 - self.match(Java8Parser.Identifier) - self.state = 937 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 936 - self.typeArguments() - - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class UnannClassType_lf_unannClassOrInterfaceTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DOT(self): - return self.getToken(Java8Parser.DOT, 0) - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def annotation(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.AnnotationContext) - else: - return self.getTypedRuleContext(Java8Parser.AnnotationContext,i) - - - def typeArguments(self): - return self.getTypedRuleContext(Java8Parser.TypeArgumentsContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_unannClassType_lf_unannClassOrInterfaceType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterUnannClassType_lf_unannClassOrInterfaceType" ): - listener.enterUnannClassType_lf_unannClassOrInterfaceType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitUnannClassType_lf_unannClassOrInterfaceType" ): - listener.exitUnannClassType_lf_unannClassOrInterfaceType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitUnannClassType_lf_unannClassOrInterfaceType" ): - return visitor.visitUnannClassType_lf_unannClassOrInterfaceType(self) - else: - return visitor.visitChildren(self) - - - - - def unannClassType_lf_unannClassOrInterfaceType(self): - - localctx = Java8Parser.UnannClassType_lf_unannClassOrInterfaceTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 124, self.RULE_unannClassType_lf_unannClassOrInterfaceType) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 941 - self.match(Java8Parser.DOT) - self.state = 945 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.AT: - self.state = 942 - self.annotation() - self.state = 947 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 948 - self.match(Java8Parser.Identifier) - self.state = 950 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 949 - self.typeArguments() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class UnannClassType_lfno_unannClassOrInterfaceTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def typeArguments(self): - return self.getTypedRuleContext(Java8Parser.TypeArgumentsContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_unannClassType_lfno_unannClassOrInterfaceType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterUnannClassType_lfno_unannClassOrInterfaceType" ): - listener.enterUnannClassType_lfno_unannClassOrInterfaceType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitUnannClassType_lfno_unannClassOrInterfaceType" ): - listener.exitUnannClassType_lfno_unannClassOrInterfaceType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitUnannClassType_lfno_unannClassOrInterfaceType" ): - return visitor.visitUnannClassType_lfno_unannClassOrInterfaceType(self) - else: - return visitor.visitChildren(self) - - - - - def unannClassType_lfno_unannClassOrInterfaceType(self): - - localctx = Java8Parser.UnannClassType_lfno_unannClassOrInterfaceTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 126, self.RULE_unannClassType_lfno_unannClassOrInterfaceType) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 952 - self.match(Java8Parser.Identifier) - self.state = 954 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 953 - self.typeArguments() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class UnannInterfaceTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def unannClassType(self): - return self.getTypedRuleContext(Java8Parser.UnannClassTypeContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_unannInterfaceType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterUnannInterfaceType" ): - listener.enterUnannInterfaceType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitUnannInterfaceType" ): - listener.exitUnannInterfaceType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitUnannInterfaceType" ): - return visitor.visitUnannInterfaceType(self) - else: - return visitor.visitChildren(self) - - - - - def unannInterfaceType(self): - - localctx = Java8Parser.UnannInterfaceTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 128, self.RULE_unannInterfaceType) - try: - self.enterOuterAlt(localctx, 1) - self.state = 956 - self.unannClassType() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class UnannInterfaceType_lf_unannClassOrInterfaceTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def unannClassType_lf_unannClassOrInterfaceType(self): - return self.getTypedRuleContext(Java8Parser.UnannClassType_lf_unannClassOrInterfaceTypeContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_unannInterfaceType_lf_unannClassOrInterfaceType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterUnannInterfaceType_lf_unannClassOrInterfaceType" ): - listener.enterUnannInterfaceType_lf_unannClassOrInterfaceType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitUnannInterfaceType_lf_unannClassOrInterfaceType" ): - listener.exitUnannInterfaceType_lf_unannClassOrInterfaceType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitUnannInterfaceType_lf_unannClassOrInterfaceType" ): - return visitor.visitUnannInterfaceType_lf_unannClassOrInterfaceType(self) - else: - return visitor.visitChildren(self) - - - - - def unannInterfaceType_lf_unannClassOrInterfaceType(self): - - localctx = Java8Parser.UnannInterfaceType_lf_unannClassOrInterfaceTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 130, self.RULE_unannInterfaceType_lf_unannClassOrInterfaceType) - try: - self.enterOuterAlt(localctx, 1) - self.state = 958 - self.unannClassType_lf_unannClassOrInterfaceType() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def unannClassType_lfno_unannClassOrInterfaceType(self): - return self.getTypedRuleContext(Java8Parser.UnannClassType_lfno_unannClassOrInterfaceTypeContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_unannInterfaceType_lfno_unannClassOrInterfaceType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterUnannInterfaceType_lfno_unannClassOrInterfaceType" ): - listener.enterUnannInterfaceType_lfno_unannClassOrInterfaceType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitUnannInterfaceType_lfno_unannClassOrInterfaceType" ): - listener.exitUnannInterfaceType_lfno_unannClassOrInterfaceType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitUnannInterfaceType_lfno_unannClassOrInterfaceType" ): - return visitor.visitUnannInterfaceType_lfno_unannClassOrInterfaceType(self) - else: - return visitor.visitChildren(self) - - - - - def unannInterfaceType_lfno_unannClassOrInterfaceType(self): - - localctx = Java8Parser.UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 132, self.RULE_unannInterfaceType_lfno_unannClassOrInterfaceType) - try: - self.enterOuterAlt(localctx, 1) - self.state = 960 - self.unannClassType_lfno_unannClassOrInterfaceType() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class UnannTypeVariableContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_unannTypeVariable - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterUnannTypeVariable" ): - listener.enterUnannTypeVariable(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitUnannTypeVariable" ): - listener.exitUnannTypeVariable(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitUnannTypeVariable" ): - return visitor.visitUnannTypeVariable(self) - else: - return visitor.visitChildren(self) - - - - - def unannTypeVariable(self): - - localctx = Java8Parser.UnannTypeVariableContext(self, self._ctx, self.state) - self.enterRule(localctx, 134, self.RULE_unannTypeVariable) - try: - self.enterOuterAlt(localctx, 1) - self.state = 962 - self.match(Java8Parser.Identifier) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class UnannArrayTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def unannPrimitiveType(self): - return self.getTypedRuleContext(Java8Parser.UnannPrimitiveTypeContext,0) - - - def dims(self): - return self.getTypedRuleContext(Java8Parser.DimsContext,0) - - - def unannClassOrInterfaceType(self): - return self.getTypedRuleContext(Java8Parser.UnannClassOrInterfaceTypeContext,0) - - - def unannTypeVariable(self): - return self.getTypedRuleContext(Java8Parser.UnannTypeVariableContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_unannArrayType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterUnannArrayType" ): - listener.enterUnannArrayType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitUnannArrayType" ): - listener.exitUnannArrayType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitUnannArrayType" ): - return visitor.visitUnannArrayType(self) - else: - return visitor.visitChildren(self) - - - - - def unannArrayType(self): - - localctx = Java8Parser.UnannArrayTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 136, self.RULE_unannArrayType) - try: - self.state = 973 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,72,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 964 - self.unannPrimitiveType() - self.state = 965 - self.dims() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 967 - self.unannClassOrInterfaceType() - self.state = 968 - self.dims() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 970 - self.unannTypeVariable() - self.state = 971 - self.dims() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class MethodDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def methodHeader(self): - return self.getTypedRuleContext(Java8Parser.MethodHeaderContext,0) - - - def methodBody(self): - return self.getTypedRuleContext(Java8Parser.MethodBodyContext,0) - - - def methodModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.MethodModifierContext) - else: - return self.getTypedRuleContext(Java8Parser.MethodModifierContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_methodDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMethodDeclaration" ): - listener.enterMethodDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMethodDeclaration" ): - listener.exitMethodDeclaration(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMethodDeclaration" ): - return visitor.visitMethodDeclaration(self) - else: - return visitor.visitChildren(self) - - - - - def methodDeclaration(self): - - localctx = Java8Parser.MethodDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 138, self.RULE_methodDeclaration) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 978 - self._errHandler.sync(self) - _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.ABSTRACT) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.NATIVE) | (1 << Java8Parser.PRIVATE) | (1 << Java8Parser.PROTECTED) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.STATIC) | (1 << Java8Parser.STRICTFP) | (1 << Java8Parser.SYNCHRONIZED))) != 0) or _la==Java8Parser.AT: - self.state = 975 - self.methodModifier() - self.state = 980 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 981 - self.methodHeader() - self.state = 982 - self.methodBody() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class MethodModifierContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def annotation(self): - return self.getTypedRuleContext(Java8Parser.AnnotationContext,0) - - - def PUBLIC(self): - return self.getToken(Java8Parser.PUBLIC, 0) - - def PROTECTED(self): - return self.getToken(Java8Parser.PROTECTED, 0) - - def PRIVATE(self): - return self.getToken(Java8Parser.PRIVATE, 0) - - def ABSTRACT(self): - return self.getToken(Java8Parser.ABSTRACT, 0) - - def STATIC(self): - return self.getToken(Java8Parser.STATIC, 0) - - def FINAL(self): - return self.getToken(Java8Parser.FINAL, 0) - - def SYNCHRONIZED(self): - return self.getToken(Java8Parser.SYNCHRONIZED, 0) - - def NATIVE(self): - return self.getToken(Java8Parser.NATIVE, 0) - - def STRICTFP(self): - return self.getToken(Java8Parser.STRICTFP, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_methodModifier - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMethodModifier" ): - listener.enterMethodModifier(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMethodModifier" ): - listener.exitMethodModifier(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMethodModifier" ): - return visitor.visitMethodModifier(self) - else: - return visitor.visitChildren(self) - - - - - def methodModifier(self): - - localctx = Java8Parser.MethodModifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 140, self.RULE_methodModifier) - try: - self.state = 994 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [Java8Parser.AT]: - self.enterOuterAlt(localctx, 1) - self.state = 984 - self.annotation() - pass - elif token in [Java8Parser.PUBLIC]: - self.enterOuterAlt(localctx, 2) - self.state = 985 - self.match(Java8Parser.PUBLIC) - pass - elif token in [Java8Parser.PROTECTED]: - self.enterOuterAlt(localctx, 3) - self.state = 986 - self.match(Java8Parser.PROTECTED) - pass - elif token in [Java8Parser.PRIVATE]: - self.enterOuterAlt(localctx, 4) - self.state = 987 - self.match(Java8Parser.PRIVATE) - pass - elif token in [Java8Parser.ABSTRACT]: - self.enterOuterAlt(localctx, 5) - self.state = 988 - self.match(Java8Parser.ABSTRACT) - pass - elif token in [Java8Parser.STATIC]: - self.enterOuterAlt(localctx, 6) - self.state = 989 - self.match(Java8Parser.STATIC) - pass - elif token in [Java8Parser.FINAL]: - self.enterOuterAlt(localctx, 7) - self.state = 990 - self.match(Java8Parser.FINAL) - pass - elif token in [Java8Parser.SYNCHRONIZED]: - self.enterOuterAlt(localctx, 8) - self.state = 991 - self.match(Java8Parser.SYNCHRONIZED) - pass - elif token in [Java8Parser.NATIVE]: - self.enterOuterAlt(localctx, 9) - self.state = 992 - self.match(Java8Parser.NATIVE) - pass - elif token in [Java8Parser.STRICTFP]: - self.enterOuterAlt(localctx, 10) - self.state = 993 - self.match(Java8Parser.STRICTFP) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class MethodHeaderContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def result(self): - return self.getTypedRuleContext(Java8Parser.ResultContext,0) - - - def methodDeclarator(self): - return self.getTypedRuleContext(Java8Parser.MethodDeclaratorContext,0) - - - def throws_(self): - return self.getTypedRuleContext(Java8Parser.Throws_Context,0) - - - def typeParameters(self): - return self.getTypedRuleContext(Java8Parser.TypeParametersContext,0) - - - def annotation(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.AnnotationContext) - else: - return self.getTypedRuleContext(Java8Parser.AnnotationContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_methodHeader - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMethodHeader" ): - listener.enterMethodHeader(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMethodHeader" ): - listener.exitMethodHeader(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMethodHeader" ): - return visitor.visitMethodHeader(self) - else: - return visitor.visitChildren(self) - - - - - def methodHeader(self): - - localctx = Java8Parser.MethodHeaderContext(self, self._ctx, self.state) - self.enterRule(localctx, 142, self.RULE_methodHeader) - self._la = 0 # Token type - try: - self.state = 1013 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [Java8Parser.BOOLEAN, Java8Parser.BYTE, Java8Parser.CHAR, Java8Parser.DOUBLE, Java8Parser.FLOAT, Java8Parser.INT, Java8Parser.LONG, Java8Parser.SHORT, Java8Parser.VOID, Java8Parser.Identifier]: - self.enterOuterAlt(localctx, 1) - self.state = 996 - self.result() - self.state = 997 - self.methodDeclarator() - self.state = 999 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.THROWS: - self.state = 998 - self.throws_() - - - pass - elif token in [Java8Parser.LT]: - self.enterOuterAlt(localctx, 2) - self.state = 1001 - self.typeParameters() - self.state = 1005 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.AT: - self.state = 1002 - self.annotation() - self.state = 1007 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1008 - self.result() - self.state = 1009 - self.methodDeclarator() - self.state = 1011 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.THROWS: - self.state = 1010 - self.throws_() - - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ResultContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def unannType(self): - return self.getTypedRuleContext(Java8Parser.UnannTypeContext,0) - - - def VOID(self): - return self.getToken(Java8Parser.VOID, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_result - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterResult" ): - listener.enterResult(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitResult" ): - listener.exitResult(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitResult" ): - return visitor.visitResult(self) - else: - return visitor.visitChildren(self) - - - - - def result(self): - - localctx = Java8Parser.ResultContext(self, self._ctx, self.state) - self.enterRule(localctx, 144, self.RULE_result) - try: - self.state = 1017 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [Java8Parser.BOOLEAN, Java8Parser.BYTE, Java8Parser.CHAR, Java8Parser.DOUBLE, Java8Parser.FLOAT, Java8Parser.INT, Java8Parser.LONG, Java8Parser.SHORT, Java8Parser.Identifier]: - self.enterOuterAlt(localctx, 1) - self.state = 1015 - self.unannType() - pass - elif token in [Java8Parser.VOID]: - self.enterOuterAlt(localctx, 2) - self.state = 1016 - self.match(Java8Parser.VOID) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class MethodDeclaratorContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def formalParameterList(self): - return self.getTypedRuleContext(Java8Parser.FormalParameterListContext,0) - - - def dims(self): - return self.getTypedRuleContext(Java8Parser.DimsContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_methodDeclarator - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMethodDeclarator" ): - listener.enterMethodDeclarator(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMethodDeclarator" ): - listener.exitMethodDeclarator(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMethodDeclarator" ): - return visitor.visitMethodDeclarator(self) - else: - return visitor.visitChildren(self) - - - - - def methodDeclarator(self): - - localctx = Java8Parser.MethodDeclaratorContext(self, self._ctx, self.state) - self.enterRule(localctx, 146, self.RULE_methodDeclarator) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1019 - self.match(Java8Parser.Identifier) - self.state = 1020 - self.match(Java8Parser.LPAREN) - self.state = 1022 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.SHORT))) != 0) or _la==Java8Parser.Identifier or _la==Java8Parser.AT: - self.state = 1021 - self.formalParameterList() - - - self.state = 1024 - self.match(Java8Parser.RPAREN) - self.state = 1026 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LBRACK or _la==Java8Parser.AT: - self.state = 1025 - self.dims() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class FormalParameterListContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def receiverParameter(self): - return self.getTypedRuleContext(Java8Parser.ReceiverParameterContext,0) - - - def formalParameters(self): - return self.getTypedRuleContext(Java8Parser.FormalParametersContext,0) - - - def COMMA(self): - return self.getToken(Java8Parser.COMMA, 0) - - def lastFormalParameter(self): - return self.getTypedRuleContext(Java8Parser.LastFormalParameterContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_formalParameterList - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFormalParameterList" ): - listener.enterFormalParameterList(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFormalParameterList" ): - listener.exitFormalParameterList(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFormalParameterList" ): - return visitor.visitFormalParameterList(self) - else: - return visitor.visitChildren(self) - - - - - def formalParameterList(self): - - localctx = Java8Parser.FormalParameterListContext(self, self._ctx, self.state) - self.enterRule(localctx, 148, self.RULE_formalParameterList) - try: - self.state = 1034 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,82,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1028 - self.receiverParameter() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1029 - self.formalParameters() - self.state = 1030 - self.match(Java8Parser.COMMA) - self.state = 1031 - self.lastFormalParameter() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1033 - self.lastFormalParameter() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class FormalParametersContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def formalParameter(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.FormalParameterContext) - else: - return self.getTypedRuleContext(Java8Parser.FormalParameterContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.COMMA) - else: - return self.getToken(Java8Parser.COMMA, i) - - def receiverParameter(self): - return self.getTypedRuleContext(Java8Parser.ReceiverParameterContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_formalParameters - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFormalParameters" ): - listener.enterFormalParameters(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFormalParameters" ): - listener.exitFormalParameters(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFormalParameters" ): - return visitor.visitFormalParameters(self) - else: - return visitor.visitChildren(self) - - - - - def formalParameters(self): - - localctx = Java8Parser.FormalParametersContext(self, self._ctx, self.state) - self.enterRule(localctx, 150, self.RULE_formalParameters) - try: - self.state = 1052 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,85,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1036 - self.formalParameter() - self.state = 1041 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,83,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 1037 - self.match(Java8Parser.COMMA) - self.state = 1038 - self.formalParameter() - self.state = 1043 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,83,self._ctx) - - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1044 - self.receiverParameter() - self.state = 1049 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,84,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 1045 - self.match(Java8Parser.COMMA) - self.state = 1046 - self.formalParameter() - self.state = 1051 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,84,self._ctx) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class FormalParameterContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def unannType(self): - return self.getTypedRuleContext(Java8Parser.UnannTypeContext,0) - - - def variableDeclaratorId(self): - return self.getTypedRuleContext(Java8Parser.VariableDeclaratorIdContext,0) - - - def variableModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.VariableModifierContext) - else: - return self.getTypedRuleContext(Java8Parser.VariableModifierContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_formalParameter - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFormalParameter" ): - listener.enterFormalParameter(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFormalParameter" ): - listener.exitFormalParameter(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFormalParameter" ): - return visitor.visitFormalParameter(self) - else: - return visitor.visitChildren(self) - - - - - def formalParameter(self): - - localctx = Java8Parser.FormalParameterContext(self, self._ctx, self.state) - self.enterRule(localctx, 152, self.RULE_formalParameter) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1057 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.FINAL or _la==Java8Parser.AT: - self.state = 1054 - self.variableModifier() - self.state = 1059 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1060 - self.unannType() - self.state = 1061 - self.variableDeclaratorId() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class VariableModifierContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def annotation(self): - return self.getTypedRuleContext(Java8Parser.AnnotationContext,0) - - - def FINAL(self): - return self.getToken(Java8Parser.FINAL, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_variableModifier - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVariableModifier" ): - listener.enterVariableModifier(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVariableModifier" ): - listener.exitVariableModifier(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitVariableModifier" ): - return visitor.visitVariableModifier(self) - else: - return visitor.visitChildren(self) - - - - - def variableModifier(self): - - localctx = Java8Parser.VariableModifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 154, self.RULE_variableModifier) - try: - self.state = 1065 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [Java8Parser.AT]: - self.enterOuterAlt(localctx, 1) - self.state = 1063 - self.annotation() - pass - elif token in [Java8Parser.FINAL]: - self.enterOuterAlt(localctx, 2) - self.state = 1064 - self.match(Java8Parser.FINAL) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class LastFormalParameterContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def unannType(self): - return self.getTypedRuleContext(Java8Parser.UnannTypeContext,0) - - - def ELLIPSIS(self): - return self.getToken(Java8Parser.ELLIPSIS, 0) - - def variableDeclaratorId(self): - return self.getTypedRuleContext(Java8Parser.VariableDeclaratorIdContext,0) - - - def variableModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.VariableModifierContext) - else: - return self.getTypedRuleContext(Java8Parser.VariableModifierContext,i) - - - def annotation(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.AnnotationContext) - else: - return self.getTypedRuleContext(Java8Parser.AnnotationContext,i) - - - def formalParameter(self): - return self.getTypedRuleContext(Java8Parser.FormalParameterContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_lastFormalParameter - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLastFormalParameter" ): - listener.enterLastFormalParameter(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLastFormalParameter" ): - listener.exitLastFormalParameter(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLastFormalParameter" ): - return visitor.visitLastFormalParameter(self) - else: - return visitor.visitChildren(self) - - - - - def lastFormalParameter(self): - - localctx = Java8Parser.LastFormalParameterContext(self, self._ctx, self.state) - self.enterRule(localctx, 156, self.RULE_lastFormalParameter) - self._la = 0 # Token type - try: - self.state = 1084 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,90,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1070 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.FINAL or _la==Java8Parser.AT: - self.state = 1067 - self.variableModifier() - self.state = 1072 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1073 - self.unannType() - self.state = 1077 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.AT: - self.state = 1074 - self.annotation() - self.state = 1079 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1080 - self.match(Java8Parser.ELLIPSIS) - self.state = 1081 - self.variableDeclaratorId() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1083 - self.formalParameter() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ReceiverParameterContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def unannType(self): - return self.getTypedRuleContext(Java8Parser.UnannTypeContext,0) - - - def THIS(self): - return self.getToken(Java8Parser.THIS, 0) - - def annotation(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.AnnotationContext) - else: - return self.getTypedRuleContext(Java8Parser.AnnotationContext,i) - - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def DOT(self): - return self.getToken(Java8Parser.DOT, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_receiverParameter - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterReceiverParameter" ): - listener.enterReceiverParameter(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitReceiverParameter" ): - listener.exitReceiverParameter(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitReceiverParameter" ): - return visitor.visitReceiverParameter(self) - else: - return visitor.visitChildren(self) - - - - - def receiverParameter(self): - - localctx = Java8Parser.ReceiverParameterContext(self, self._ctx, self.state) - self.enterRule(localctx, 158, self.RULE_receiverParameter) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1089 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.AT: - self.state = 1086 - self.annotation() - self.state = 1091 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1092 - self.unannType() - self.state = 1095 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.Identifier: - self.state = 1093 - self.match(Java8Parser.Identifier) - self.state = 1094 - self.match(Java8Parser.DOT) - - - self.state = 1097 - self.match(Java8Parser.THIS) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Throws_Context(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def THROWS(self): - return self.getToken(Java8Parser.THROWS, 0) - - def exceptionTypeList(self): - return self.getTypedRuleContext(Java8Parser.ExceptionTypeListContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_throws_ - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterThrows_" ): - listener.enterThrows_(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitThrows_" ): - listener.exitThrows_(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitThrows_" ): - return visitor.visitThrows_(self) - else: - return visitor.visitChildren(self) - - - - - def throws_(self): - - localctx = Java8Parser.Throws_Context(self, self._ctx, self.state) - self.enterRule(localctx, 160, self.RULE_throws_) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1099 - self.match(Java8Parser.THROWS) - self.state = 1100 - self.exceptionTypeList() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ExceptionTypeListContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def exceptionType(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.ExceptionTypeContext) - else: - return self.getTypedRuleContext(Java8Parser.ExceptionTypeContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.COMMA) - else: - return self.getToken(Java8Parser.COMMA, i) - - def getRuleIndex(self): - return Java8Parser.RULE_exceptionTypeList - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExceptionTypeList" ): - listener.enterExceptionTypeList(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExceptionTypeList" ): - listener.exitExceptionTypeList(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExceptionTypeList" ): - return visitor.visitExceptionTypeList(self) - else: - return visitor.visitChildren(self) - - - - - def exceptionTypeList(self): - - localctx = Java8Parser.ExceptionTypeListContext(self, self._ctx, self.state) - self.enterRule(localctx, 162, self.RULE_exceptionTypeList) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1102 - self.exceptionType() - self.state = 1107 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.COMMA: - self.state = 1103 - self.match(Java8Parser.COMMA) - self.state = 1104 - self.exceptionType() - self.state = 1109 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ExceptionTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def classType(self): - return self.getTypedRuleContext(Java8Parser.ClassTypeContext,0) - - - def typeVariable(self): - return self.getTypedRuleContext(Java8Parser.TypeVariableContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_exceptionType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExceptionType" ): - listener.enterExceptionType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExceptionType" ): - listener.exitExceptionType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExceptionType" ): - return visitor.visitExceptionType(self) - else: - return visitor.visitChildren(self) - - - - - def exceptionType(self): - - localctx = Java8Parser.ExceptionTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 164, self.RULE_exceptionType) - try: - self.state = 1112 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,94,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1110 - self.classType() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1111 - self.typeVariable() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class MethodBodyContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def block(self): - return self.getTypedRuleContext(Java8Parser.BlockContext,0) - - - def SEMI(self): - return self.getToken(Java8Parser.SEMI, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_methodBody - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMethodBody" ): - listener.enterMethodBody(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMethodBody" ): - listener.exitMethodBody(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMethodBody" ): - return visitor.visitMethodBody(self) - else: - return visitor.visitChildren(self) - - - - - def methodBody(self): - - localctx = Java8Parser.MethodBodyContext(self, self._ctx, self.state) - self.enterRule(localctx, 166, self.RULE_methodBody) - try: - self.state = 1116 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [Java8Parser.LBRACE]: - self.enterOuterAlt(localctx, 1) - self.state = 1114 - self.block() - pass - elif token in [Java8Parser.SEMI]: - self.enterOuterAlt(localctx, 2) - self.state = 1115 - self.match(Java8Parser.SEMI) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class InstanceInitializerContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def block(self): - return self.getTypedRuleContext(Java8Parser.BlockContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_instanceInitializer - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInstanceInitializer" ): - listener.enterInstanceInitializer(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInstanceInitializer" ): - listener.exitInstanceInitializer(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInstanceInitializer" ): - return visitor.visitInstanceInitializer(self) - else: - return visitor.visitChildren(self) - - - - - def instanceInitializer(self): - - localctx = Java8Parser.InstanceInitializerContext(self, self._ctx, self.state) - self.enterRule(localctx, 168, self.RULE_instanceInitializer) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1118 - self.block() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class StaticInitializerContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def STATIC(self): - return self.getToken(Java8Parser.STATIC, 0) - - def block(self): - return self.getTypedRuleContext(Java8Parser.BlockContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_staticInitializer - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStaticInitializer" ): - listener.enterStaticInitializer(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStaticInitializer" ): - listener.exitStaticInitializer(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStaticInitializer" ): - return visitor.visitStaticInitializer(self) - else: - return visitor.visitChildren(self) - - - - - def staticInitializer(self): - - localctx = Java8Parser.StaticInitializerContext(self, self._ctx, self.state) - self.enterRule(localctx, 170, self.RULE_staticInitializer) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1120 - self.match(Java8Parser.STATIC) - self.state = 1121 - self.block() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ConstructorDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def constructorDeclarator(self): - return self.getTypedRuleContext(Java8Parser.ConstructorDeclaratorContext,0) - - - def constructorBody(self): - return self.getTypedRuleContext(Java8Parser.ConstructorBodyContext,0) - - - def constructorModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.ConstructorModifierContext) - else: - return self.getTypedRuleContext(Java8Parser.ConstructorModifierContext,i) - - - def throws_(self): - return self.getTypedRuleContext(Java8Parser.Throws_Context,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_constructorDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConstructorDeclaration" ): - listener.enterConstructorDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConstructorDeclaration" ): - listener.exitConstructorDeclaration(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConstructorDeclaration" ): - return visitor.visitConstructorDeclaration(self) - else: - return visitor.visitChildren(self) - - - - - def constructorDeclaration(self): - - localctx = Java8Parser.ConstructorDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 172, self.RULE_constructorDeclaration) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1126 - self._errHandler.sync(self) - _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.PRIVATE) | (1 << Java8Parser.PROTECTED) | (1 << Java8Parser.PUBLIC))) != 0) or _la==Java8Parser.AT: - self.state = 1123 - self.constructorModifier() - self.state = 1128 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1129 - self.constructorDeclarator() - self.state = 1131 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.THROWS: - self.state = 1130 - self.throws_() - - - self.state = 1133 - self.constructorBody() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ConstructorModifierContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def annotation(self): - return self.getTypedRuleContext(Java8Parser.AnnotationContext,0) - - - def PUBLIC(self): - return self.getToken(Java8Parser.PUBLIC, 0) - - def PROTECTED(self): - return self.getToken(Java8Parser.PROTECTED, 0) - - def PRIVATE(self): - return self.getToken(Java8Parser.PRIVATE, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_constructorModifier - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConstructorModifier" ): - listener.enterConstructorModifier(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConstructorModifier" ): - listener.exitConstructorModifier(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConstructorModifier" ): - return visitor.visitConstructorModifier(self) - else: - return visitor.visitChildren(self) - - - - - def constructorModifier(self): - - localctx = Java8Parser.ConstructorModifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 174, self.RULE_constructorModifier) - try: - self.state = 1139 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [Java8Parser.AT]: - self.enterOuterAlt(localctx, 1) - self.state = 1135 - self.annotation() - pass - elif token in [Java8Parser.PUBLIC]: - self.enterOuterAlt(localctx, 2) - self.state = 1136 - self.match(Java8Parser.PUBLIC) - pass - elif token in [Java8Parser.PROTECTED]: - self.enterOuterAlt(localctx, 3) - self.state = 1137 - self.match(Java8Parser.PROTECTED) - pass - elif token in [Java8Parser.PRIVATE]: - self.enterOuterAlt(localctx, 4) - self.state = 1138 - self.match(Java8Parser.PRIVATE) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ConstructorDeclaratorContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def simpleTypeName(self): - return self.getTypedRuleContext(Java8Parser.SimpleTypeNameContext,0) - - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def typeParameters(self): - return self.getTypedRuleContext(Java8Parser.TypeParametersContext,0) - - - def formalParameterList(self): - return self.getTypedRuleContext(Java8Parser.FormalParameterListContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_constructorDeclarator - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConstructorDeclarator" ): - listener.enterConstructorDeclarator(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConstructorDeclarator" ): - listener.exitConstructorDeclarator(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConstructorDeclarator" ): - return visitor.visitConstructorDeclarator(self) - else: - return visitor.visitChildren(self) - - - - - def constructorDeclarator(self): - - localctx = Java8Parser.ConstructorDeclaratorContext(self, self._ctx, self.state) - self.enterRule(localctx, 176, self.RULE_constructorDeclarator) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1142 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 1141 - self.typeParameters() - - - self.state = 1144 - self.simpleTypeName() - self.state = 1145 - self.match(Java8Parser.LPAREN) - self.state = 1147 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.SHORT))) != 0) or _la==Java8Parser.Identifier or _la==Java8Parser.AT: - self.state = 1146 - self.formalParameterList() - - - self.state = 1149 - self.match(Java8Parser.RPAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class SimpleTypeNameContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_simpleTypeName - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSimpleTypeName" ): - listener.enterSimpleTypeName(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSimpleTypeName" ): - listener.exitSimpleTypeName(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSimpleTypeName" ): - return visitor.visitSimpleTypeName(self) - else: - return visitor.visitChildren(self) - - - - - def simpleTypeName(self): - - localctx = Java8Parser.SimpleTypeNameContext(self, self._ctx, self.state) - self.enterRule(localctx, 178, self.RULE_simpleTypeName) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1151 - self.match(Java8Parser.Identifier) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ConstructorBodyContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def LBRACE(self): - return self.getToken(Java8Parser.LBRACE, 0) - - def RBRACE(self): - return self.getToken(Java8Parser.RBRACE, 0) - - def explicitConstructorInvocation(self): - return self.getTypedRuleContext(Java8Parser.ExplicitConstructorInvocationContext,0) - - - def blockStatements(self): - return self.getTypedRuleContext(Java8Parser.BlockStatementsContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_constructorBody - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConstructorBody" ): - listener.enterConstructorBody(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConstructorBody" ): - listener.exitConstructorBody(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConstructorBody" ): - return visitor.visitConstructorBody(self) - else: - return visitor.visitChildren(self) - - - - - def constructorBody(self): - - localctx = Java8Parser.ConstructorBodyContext(self, self._ctx, self.state) - self.enterRule(localctx, 180, self.RULE_constructorBody) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1153 - self.match(Java8Parser.LBRACE) - self.state = 1155 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,101,self._ctx) - if la_ == 1: - self.state = 1154 - self.explicitConstructorInvocation() - - - self.state = 1158 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.ABSTRACT) | (1 << Java8Parser.ASSERT) | (1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BREAK) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.CLASS) | (1 << Java8Parser.CONTINUE) | (1 << Java8Parser.DO) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.ENUM) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.FOR) | (1 << Java8Parser.IF) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.PRIVATE) | (1 << Java8Parser.PROTECTED) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.RETURN) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.STATIC) | (1 << Java8Parser.STRICTFP) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.SWITCH) | (1 << Java8Parser.SYNCHRONIZED) | (1 << Java8Parser.THIS) | (1 << Java8Parser.THROW) | (1 << Java8Parser.TRY) | (1 << Java8Parser.VOID) | (1 << Java8Parser.WHILE) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN) | (1 << Java8Parser.LBRACE) | (1 << Java8Parser.SEMI))) != 0) or ((((_la - 79)) & ~0x3f) == 0 and ((1 << (_la - 79)) & ((1 << (Java8Parser.INC - 79)) | (1 << (Java8Parser.DEC - 79)) | (1 << (Java8Parser.Identifier - 79)) | (1 << (Java8Parser.AT - 79)))) != 0): - self.state = 1157 - self.blockStatements() - - - self.state = 1160 - self.match(Java8Parser.RBRACE) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ExplicitConstructorInvocationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def THIS(self): - return self.getToken(Java8Parser.THIS, 0) - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def SEMI(self): - return self.getToken(Java8Parser.SEMI, 0) - - def typeArguments(self): - return self.getTypedRuleContext(Java8Parser.TypeArgumentsContext,0) - - - def argumentList(self): - return self.getTypedRuleContext(Java8Parser.ArgumentListContext,0) - - - def SUPER(self): - return self.getToken(Java8Parser.SUPER, 0) - - def expressionName(self): - return self.getTypedRuleContext(Java8Parser.ExpressionNameContext,0) - - - def DOT(self): - return self.getToken(Java8Parser.DOT, 0) - - def primary(self): - return self.getTypedRuleContext(Java8Parser.PrimaryContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_explicitConstructorInvocation - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExplicitConstructorInvocation" ): - listener.enterExplicitConstructorInvocation(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExplicitConstructorInvocation" ): - listener.exitExplicitConstructorInvocation(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExplicitConstructorInvocation" ): - return visitor.visitExplicitConstructorInvocation(self) - else: - return visitor.visitChildren(self) - - - - - def explicitConstructorInvocation(self): - - localctx = Java8Parser.ExplicitConstructorInvocationContext(self, self._ctx, self.state) - self.enterRule(localctx, 182, self.RULE_explicitConstructorInvocation) - self._la = 0 # Token type - try: - self.state = 1208 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,111,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1163 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 1162 - self.typeArguments() - - - self.state = 1165 - self.match(Java8Parser.THIS) - self.state = 1166 - self.match(Java8Parser.LPAREN) - self.state = 1168 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): - self.state = 1167 - self.argumentList() - - - self.state = 1170 - self.match(Java8Parser.RPAREN) - self.state = 1171 - self.match(Java8Parser.SEMI) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1173 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 1172 - self.typeArguments() - - - self.state = 1175 - self.match(Java8Parser.SUPER) - self.state = 1176 - self.match(Java8Parser.LPAREN) - self.state = 1178 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): - self.state = 1177 - self.argumentList() - - - self.state = 1180 - self.match(Java8Parser.RPAREN) - self.state = 1181 - self.match(Java8Parser.SEMI) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1182 - self.expressionName() - self.state = 1183 - self.match(Java8Parser.DOT) - self.state = 1185 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 1184 - self.typeArguments() - - - self.state = 1187 - self.match(Java8Parser.SUPER) - self.state = 1188 - self.match(Java8Parser.LPAREN) - self.state = 1190 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): - self.state = 1189 - self.argumentList() - - - self.state = 1192 - self.match(Java8Parser.RPAREN) - self.state = 1193 - self.match(Java8Parser.SEMI) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 1195 - self.primary() - self.state = 1196 - self.match(Java8Parser.DOT) - self.state = 1198 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 1197 - self.typeArguments() - - - self.state = 1200 - self.match(Java8Parser.SUPER) - self.state = 1201 - self.match(Java8Parser.LPAREN) - self.state = 1203 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): - self.state = 1202 - self.argumentList() - - - self.state = 1205 - self.match(Java8Parser.RPAREN) - self.state = 1206 - self.match(Java8Parser.SEMI) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class EnumDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ENUM(self): - return self.getToken(Java8Parser.ENUM, 0) - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def enumBody(self): - return self.getTypedRuleContext(Java8Parser.EnumBodyContext,0) - - - def classModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.ClassModifierContext) - else: - return self.getTypedRuleContext(Java8Parser.ClassModifierContext,i) - - - def superinterfaces(self): - return self.getTypedRuleContext(Java8Parser.SuperinterfacesContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_enumDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEnumDeclaration" ): - listener.enterEnumDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEnumDeclaration" ): - listener.exitEnumDeclaration(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEnumDeclaration" ): - return visitor.visitEnumDeclaration(self) - else: - return visitor.visitChildren(self) - - - - - def enumDeclaration(self): - - localctx = Java8Parser.EnumDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 184, self.RULE_enumDeclaration) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1213 - self._errHandler.sync(self) - _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.ABSTRACT) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.PRIVATE) | (1 << Java8Parser.PROTECTED) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.STATIC) | (1 << Java8Parser.STRICTFP))) != 0) or _la==Java8Parser.AT: - self.state = 1210 - self.classModifier() - self.state = 1215 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1216 - self.match(Java8Parser.ENUM) - self.state = 1217 - self.match(Java8Parser.Identifier) - self.state = 1219 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.IMPLEMENTS: - self.state = 1218 - self.superinterfaces() - - - self.state = 1221 - self.enumBody() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class EnumBodyContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def LBRACE(self): - return self.getToken(Java8Parser.LBRACE, 0) - - def RBRACE(self): - return self.getToken(Java8Parser.RBRACE, 0) - - def enumConstantList(self): - return self.getTypedRuleContext(Java8Parser.EnumConstantListContext,0) - - - def COMMA(self): - return self.getToken(Java8Parser.COMMA, 0) - - def enumBodyDeclarations(self): - return self.getTypedRuleContext(Java8Parser.EnumBodyDeclarationsContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_enumBody - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEnumBody" ): - listener.enterEnumBody(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEnumBody" ): - listener.exitEnumBody(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEnumBody" ): - return visitor.visitEnumBody(self) - else: - return visitor.visitChildren(self) - - - - - def enumBody(self): - - localctx = Java8Parser.EnumBodyContext(self, self._ctx, self.state) - self.enterRule(localctx, 186, self.RULE_enumBody) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1223 - self.match(Java8Parser.LBRACE) - self.state = 1225 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.Identifier or _la==Java8Parser.AT: - self.state = 1224 - self.enumConstantList() - - - self.state = 1228 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.COMMA: - self.state = 1227 - self.match(Java8Parser.COMMA) - - - self.state = 1231 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.SEMI: - self.state = 1230 - self.enumBodyDeclarations() - - - self.state = 1233 - self.match(Java8Parser.RBRACE) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class EnumConstantListContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def enumConstant(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.EnumConstantContext) - else: - return self.getTypedRuleContext(Java8Parser.EnumConstantContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.COMMA) - else: - return self.getToken(Java8Parser.COMMA, i) - - def getRuleIndex(self): - return Java8Parser.RULE_enumConstantList - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEnumConstantList" ): - listener.enterEnumConstantList(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEnumConstantList" ): - listener.exitEnumConstantList(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEnumConstantList" ): - return visitor.visitEnumConstantList(self) - else: - return visitor.visitChildren(self) - - - - - def enumConstantList(self): - - localctx = Java8Parser.EnumConstantListContext(self, self._ctx, self.state) - self.enterRule(localctx, 188, self.RULE_enumConstantList) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1235 - self.enumConstant() - self.state = 1240 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,117,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 1236 - self.match(Java8Parser.COMMA) - self.state = 1237 - self.enumConstant() - self.state = 1242 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,117,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class EnumConstantContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def enumConstantModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.EnumConstantModifierContext) - else: - return self.getTypedRuleContext(Java8Parser.EnumConstantModifierContext,i) - - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def classBody(self): - return self.getTypedRuleContext(Java8Parser.ClassBodyContext,0) - - - def argumentList(self): - return self.getTypedRuleContext(Java8Parser.ArgumentListContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_enumConstant - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEnumConstant" ): - listener.enterEnumConstant(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEnumConstant" ): - listener.exitEnumConstant(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEnumConstant" ): - return visitor.visitEnumConstant(self) - else: - return visitor.visitChildren(self) - - - - - def enumConstant(self): - - localctx = Java8Parser.EnumConstantContext(self, self._ctx, self.state) - self.enterRule(localctx, 190, self.RULE_enumConstant) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1246 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.AT: - self.state = 1243 - self.enumConstantModifier() - self.state = 1248 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1249 - self.match(Java8Parser.Identifier) - self.state = 1255 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LPAREN: - self.state = 1250 - self.match(Java8Parser.LPAREN) - self.state = 1252 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): - self.state = 1251 - self.argumentList() - - - self.state = 1254 - self.match(Java8Parser.RPAREN) - - - self.state = 1258 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LBRACE: - self.state = 1257 - self.classBody() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class EnumConstantModifierContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def annotation(self): - return self.getTypedRuleContext(Java8Parser.AnnotationContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_enumConstantModifier - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEnumConstantModifier" ): - listener.enterEnumConstantModifier(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEnumConstantModifier" ): - listener.exitEnumConstantModifier(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEnumConstantModifier" ): - return visitor.visitEnumConstantModifier(self) - else: - return visitor.visitChildren(self) - - - - - def enumConstantModifier(self): - - localctx = Java8Parser.EnumConstantModifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 192, self.RULE_enumConstantModifier) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1260 - self.annotation() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class EnumBodyDeclarationsContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def SEMI(self): - return self.getToken(Java8Parser.SEMI, 0) - - def classBodyDeclaration(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.ClassBodyDeclarationContext) - else: - return self.getTypedRuleContext(Java8Parser.ClassBodyDeclarationContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_enumBodyDeclarations - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEnumBodyDeclarations" ): - listener.enterEnumBodyDeclarations(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEnumBodyDeclarations" ): - listener.exitEnumBodyDeclarations(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEnumBodyDeclarations" ): - return visitor.visitEnumBodyDeclarations(self) - else: - return visitor.visitChildren(self) - - - - - def enumBodyDeclarations(self): - - localctx = Java8Parser.EnumBodyDeclarationsContext(self, self._ctx, self.state) - self.enterRule(localctx, 194, self.RULE_enumBodyDeclarations) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1262 - self.match(Java8Parser.SEMI) - self.state = 1266 - self._errHandler.sync(self) - _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.ABSTRACT) | (1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.CLASS) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.ENUM) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.INTERFACE) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NATIVE) | (1 << Java8Parser.PRIVATE) | (1 << Java8Parser.PROTECTED) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.STATIC) | (1 << Java8Parser.STRICTFP) | (1 << Java8Parser.SYNCHRONIZED) | (1 << Java8Parser.TRANSIENT) | (1 << Java8Parser.VOID) | (1 << Java8Parser.VOLATILE) | (1 << Java8Parser.LBRACE) | (1 << Java8Parser.SEMI))) != 0) or ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & ((1 << (Java8Parser.LT - 68)) | (1 << (Java8Parser.Identifier - 68)) | (1 << (Java8Parser.AT - 68)))) != 0): - self.state = 1263 - self.classBodyDeclaration() - self.state = 1268 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class InterfaceDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def normalInterfaceDeclaration(self): - return self.getTypedRuleContext(Java8Parser.NormalInterfaceDeclarationContext,0) - - - def annotationTypeDeclaration(self): - return self.getTypedRuleContext(Java8Parser.AnnotationTypeDeclarationContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_interfaceDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInterfaceDeclaration" ): - listener.enterInterfaceDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInterfaceDeclaration" ): - listener.exitInterfaceDeclaration(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInterfaceDeclaration" ): - return visitor.visitInterfaceDeclaration(self) - else: - return visitor.visitChildren(self) - - - - - def interfaceDeclaration(self): - - localctx = Java8Parser.InterfaceDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 196, self.RULE_interfaceDeclaration) - try: - self.state = 1271 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,123,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1269 - self.normalInterfaceDeclaration() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1270 - self.annotationTypeDeclaration() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class NormalInterfaceDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def INTERFACE(self): - return self.getToken(Java8Parser.INTERFACE, 0) - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def interfaceBody(self): - return self.getTypedRuleContext(Java8Parser.InterfaceBodyContext,0) - - - def interfaceModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.InterfaceModifierContext) - else: - return self.getTypedRuleContext(Java8Parser.InterfaceModifierContext,i) - - - def typeParameters(self): - return self.getTypedRuleContext(Java8Parser.TypeParametersContext,0) - - - def extendsInterfaces(self): - return self.getTypedRuleContext(Java8Parser.ExtendsInterfacesContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_normalInterfaceDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNormalInterfaceDeclaration" ): - listener.enterNormalInterfaceDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNormalInterfaceDeclaration" ): - listener.exitNormalInterfaceDeclaration(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNormalInterfaceDeclaration" ): - return visitor.visitNormalInterfaceDeclaration(self) - else: - return visitor.visitChildren(self) - - - - - def normalInterfaceDeclaration(self): - - localctx = Java8Parser.NormalInterfaceDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 198, self.RULE_normalInterfaceDeclaration) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1276 - self._errHandler.sync(self) - _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.ABSTRACT) | (1 << Java8Parser.PRIVATE) | (1 << Java8Parser.PROTECTED) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.STATIC) | (1 << Java8Parser.STRICTFP))) != 0) or _la==Java8Parser.AT: - self.state = 1273 - self.interfaceModifier() - self.state = 1278 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1279 - self.match(Java8Parser.INTERFACE) - self.state = 1280 - self.match(Java8Parser.Identifier) - self.state = 1282 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 1281 - self.typeParameters() - - - self.state = 1285 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.EXTENDS: - self.state = 1284 - self.extendsInterfaces() - - - self.state = 1287 - self.interfaceBody() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class InterfaceModifierContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def annotation(self): - return self.getTypedRuleContext(Java8Parser.AnnotationContext,0) - - - def PUBLIC(self): - return self.getToken(Java8Parser.PUBLIC, 0) - - def PROTECTED(self): - return self.getToken(Java8Parser.PROTECTED, 0) - - def PRIVATE(self): - return self.getToken(Java8Parser.PRIVATE, 0) - - def ABSTRACT(self): - return self.getToken(Java8Parser.ABSTRACT, 0) - - def STATIC(self): - return self.getToken(Java8Parser.STATIC, 0) - - def STRICTFP(self): - return self.getToken(Java8Parser.STRICTFP, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_interfaceModifier - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInterfaceModifier" ): - listener.enterInterfaceModifier(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInterfaceModifier" ): - listener.exitInterfaceModifier(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInterfaceModifier" ): - return visitor.visitInterfaceModifier(self) - else: - return visitor.visitChildren(self) - - - - - def interfaceModifier(self): - - localctx = Java8Parser.InterfaceModifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 200, self.RULE_interfaceModifier) - try: - self.state = 1296 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [Java8Parser.AT]: - self.enterOuterAlt(localctx, 1) - self.state = 1289 - self.annotation() - pass - elif token in [Java8Parser.PUBLIC]: - self.enterOuterAlt(localctx, 2) - self.state = 1290 - self.match(Java8Parser.PUBLIC) - pass - elif token in [Java8Parser.PROTECTED]: - self.enterOuterAlt(localctx, 3) - self.state = 1291 - self.match(Java8Parser.PROTECTED) - pass - elif token in [Java8Parser.PRIVATE]: - self.enterOuterAlt(localctx, 4) - self.state = 1292 - self.match(Java8Parser.PRIVATE) - pass - elif token in [Java8Parser.ABSTRACT]: - self.enterOuterAlt(localctx, 5) - self.state = 1293 - self.match(Java8Parser.ABSTRACT) - pass - elif token in [Java8Parser.STATIC]: - self.enterOuterAlt(localctx, 6) - self.state = 1294 - self.match(Java8Parser.STATIC) - pass - elif token in [Java8Parser.STRICTFP]: - self.enterOuterAlt(localctx, 7) - self.state = 1295 - self.match(Java8Parser.STRICTFP) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ExtendsInterfacesContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def EXTENDS(self): - return self.getToken(Java8Parser.EXTENDS, 0) - - def interfaceTypeList(self): - return self.getTypedRuleContext(Java8Parser.InterfaceTypeListContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_extendsInterfaces - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExtendsInterfaces" ): - listener.enterExtendsInterfaces(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExtendsInterfaces" ): - listener.exitExtendsInterfaces(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExtendsInterfaces" ): - return visitor.visitExtendsInterfaces(self) - else: - return visitor.visitChildren(self) - - - - - def extendsInterfaces(self): - - localctx = Java8Parser.ExtendsInterfacesContext(self, self._ctx, self.state) - self.enterRule(localctx, 202, self.RULE_extendsInterfaces) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1298 - self.match(Java8Parser.EXTENDS) - self.state = 1299 - self.interfaceTypeList() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class InterfaceBodyContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def LBRACE(self): - return self.getToken(Java8Parser.LBRACE, 0) - - def RBRACE(self): - return self.getToken(Java8Parser.RBRACE, 0) - - def interfaceMemberDeclaration(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.InterfaceMemberDeclarationContext) - else: - return self.getTypedRuleContext(Java8Parser.InterfaceMemberDeclarationContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_interfaceBody - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInterfaceBody" ): - listener.enterInterfaceBody(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInterfaceBody" ): - listener.exitInterfaceBody(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInterfaceBody" ): - return visitor.visitInterfaceBody(self) - else: - return visitor.visitChildren(self) - - - - - def interfaceBody(self): - - localctx = Java8Parser.InterfaceBodyContext(self, self._ctx, self.state) - self.enterRule(localctx, 204, self.RULE_interfaceBody) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1301 - self.match(Java8Parser.LBRACE) - self.state = 1305 - self._errHandler.sync(self) - _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.ABSTRACT) | (1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.CLASS) | (1 << Java8Parser.DEFAULT) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.ENUM) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.INTERFACE) | (1 << Java8Parser.LONG) | (1 << Java8Parser.PRIVATE) | (1 << Java8Parser.PROTECTED) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.STATIC) | (1 << Java8Parser.STRICTFP) | (1 << Java8Parser.VOID) | (1 << Java8Parser.SEMI))) != 0) or ((((_la - 68)) & ~0x3f) == 0 and ((1 << (_la - 68)) & ((1 << (Java8Parser.LT - 68)) | (1 << (Java8Parser.Identifier - 68)) | (1 << (Java8Parser.AT - 68)))) != 0): - self.state = 1302 - self.interfaceMemberDeclaration() - self.state = 1307 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1308 - self.match(Java8Parser.RBRACE) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class InterfaceMemberDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def constantDeclaration(self): - return self.getTypedRuleContext(Java8Parser.ConstantDeclarationContext,0) - - - def interfaceMethodDeclaration(self): - return self.getTypedRuleContext(Java8Parser.InterfaceMethodDeclarationContext,0) - - - def classDeclaration(self): - return self.getTypedRuleContext(Java8Parser.ClassDeclarationContext,0) - - - def interfaceDeclaration(self): - return self.getTypedRuleContext(Java8Parser.InterfaceDeclarationContext,0) - - - def SEMI(self): - return self.getToken(Java8Parser.SEMI, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_interfaceMemberDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInterfaceMemberDeclaration" ): - listener.enterInterfaceMemberDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInterfaceMemberDeclaration" ): - listener.exitInterfaceMemberDeclaration(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInterfaceMemberDeclaration" ): - return visitor.visitInterfaceMemberDeclaration(self) - else: - return visitor.visitChildren(self) - - - - - def interfaceMemberDeclaration(self): - - localctx = Java8Parser.InterfaceMemberDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 206, self.RULE_interfaceMemberDeclaration) - try: - self.state = 1315 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,129,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1310 - self.constantDeclaration() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1311 - self.interfaceMethodDeclaration() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1312 - self.classDeclaration() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 1313 - self.interfaceDeclaration() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 1314 - self.match(Java8Parser.SEMI) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ConstantDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def unannType(self): - return self.getTypedRuleContext(Java8Parser.UnannTypeContext,0) - - - def variableDeclaratorList(self): - return self.getTypedRuleContext(Java8Parser.VariableDeclaratorListContext,0) - - - def SEMI(self): - return self.getToken(Java8Parser.SEMI, 0) - - def constantModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.ConstantModifierContext) - else: - return self.getTypedRuleContext(Java8Parser.ConstantModifierContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_constantDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConstantDeclaration" ): - listener.enterConstantDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConstantDeclaration" ): - listener.exitConstantDeclaration(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConstantDeclaration" ): - return visitor.visitConstantDeclaration(self) - else: - return visitor.visitChildren(self) - - - - - def constantDeclaration(self): - - localctx = Java8Parser.ConstantDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 208, self.RULE_constantDeclaration) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1320 - self._errHandler.sync(self) - _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.FINAL) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.STATIC))) != 0) or _la==Java8Parser.AT: - self.state = 1317 - self.constantModifier() - self.state = 1322 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1323 - self.unannType() - self.state = 1324 - self.variableDeclaratorList() - self.state = 1325 - self.match(Java8Parser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ConstantModifierContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def annotation(self): - return self.getTypedRuleContext(Java8Parser.AnnotationContext,0) - - - def PUBLIC(self): - return self.getToken(Java8Parser.PUBLIC, 0) - - def STATIC(self): - return self.getToken(Java8Parser.STATIC, 0) - - def FINAL(self): - return self.getToken(Java8Parser.FINAL, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_constantModifier - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConstantModifier" ): - listener.enterConstantModifier(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConstantModifier" ): - listener.exitConstantModifier(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConstantModifier" ): - return visitor.visitConstantModifier(self) - else: - return visitor.visitChildren(self) - - - - - def constantModifier(self): - - localctx = Java8Parser.ConstantModifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 210, self.RULE_constantModifier) - try: - self.state = 1331 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [Java8Parser.AT]: - self.enterOuterAlt(localctx, 1) - self.state = 1327 - self.annotation() - pass - elif token in [Java8Parser.PUBLIC]: - self.enterOuterAlt(localctx, 2) - self.state = 1328 - self.match(Java8Parser.PUBLIC) - pass - elif token in [Java8Parser.STATIC]: - self.enterOuterAlt(localctx, 3) - self.state = 1329 - self.match(Java8Parser.STATIC) - pass - elif token in [Java8Parser.FINAL]: - self.enterOuterAlt(localctx, 4) - self.state = 1330 - self.match(Java8Parser.FINAL) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class InterfaceMethodDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def methodHeader(self): - return self.getTypedRuleContext(Java8Parser.MethodHeaderContext,0) - - - def methodBody(self): - return self.getTypedRuleContext(Java8Parser.MethodBodyContext,0) - - - def interfaceMethodModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.InterfaceMethodModifierContext) - else: - return self.getTypedRuleContext(Java8Parser.InterfaceMethodModifierContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_interfaceMethodDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInterfaceMethodDeclaration" ): - listener.enterInterfaceMethodDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInterfaceMethodDeclaration" ): - listener.exitInterfaceMethodDeclaration(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInterfaceMethodDeclaration" ): - return visitor.visitInterfaceMethodDeclaration(self) - else: - return visitor.visitChildren(self) - - - - - def interfaceMethodDeclaration(self): - - localctx = Java8Parser.InterfaceMethodDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 212, self.RULE_interfaceMethodDeclaration) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1336 - self._errHandler.sync(self) - _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.ABSTRACT) | (1 << Java8Parser.DEFAULT) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.STATIC) | (1 << Java8Parser.STRICTFP))) != 0) or _la==Java8Parser.AT: - self.state = 1333 - self.interfaceMethodModifier() - self.state = 1338 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1339 - self.methodHeader() - self.state = 1340 - self.methodBody() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class InterfaceMethodModifierContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def annotation(self): - return self.getTypedRuleContext(Java8Parser.AnnotationContext,0) - - - def PUBLIC(self): - return self.getToken(Java8Parser.PUBLIC, 0) - - def ABSTRACT(self): - return self.getToken(Java8Parser.ABSTRACT, 0) - - def DEFAULT(self): - return self.getToken(Java8Parser.DEFAULT, 0) - - def STATIC(self): - return self.getToken(Java8Parser.STATIC, 0) - - def STRICTFP(self): - return self.getToken(Java8Parser.STRICTFP, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_interfaceMethodModifier - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInterfaceMethodModifier" ): - listener.enterInterfaceMethodModifier(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInterfaceMethodModifier" ): - listener.exitInterfaceMethodModifier(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInterfaceMethodModifier" ): - return visitor.visitInterfaceMethodModifier(self) - else: - return visitor.visitChildren(self) - - - - - def interfaceMethodModifier(self): - - localctx = Java8Parser.InterfaceMethodModifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 214, self.RULE_interfaceMethodModifier) - try: - self.state = 1348 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [Java8Parser.AT]: - self.enterOuterAlt(localctx, 1) - self.state = 1342 - self.annotation() - pass - elif token in [Java8Parser.PUBLIC]: - self.enterOuterAlt(localctx, 2) - self.state = 1343 - self.match(Java8Parser.PUBLIC) - pass - elif token in [Java8Parser.ABSTRACT]: - self.enterOuterAlt(localctx, 3) - self.state = 1344 - self.match(Java8Parser.ABSTRACT) - pass - elif token in [Java8Parser.DEFAULT]: - self.enterOuterAlt(localctx, 4) - self.state = 1345 - self.match(Java8Parser.DEFAULT) - pass - elif token in [Java8Parser.STATIC]: - self.enterOuterAlt(localctx, 5) - self.state = 1346 - self.match(Java8Parser.STATIC) - pass - elif token in [Java8Parser.STRICTFP]: - self.enterOuterAlt(localctx, 6) - self.state = 1347 - self.match(Java8Parser.STRICTFP) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AnnotationTypeDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def AT(self): - return self.getToken(Java8Parser.AT, 0) - - def INTERFACE(self): - return self.getToken(Java8Parser.INTERFACE, 0) - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def annotationTypeBody(self): - return self.getTypedRuleContext(Java8Parser.AnnotationTypeBodyContext,0) - - - def interfaceModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.InterfaceModifierContext) - else: - return self.getTypedRuleContext(Java8Parser.InterfaceModifierContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_annotationTypeDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAnnotationTypeDeclaration" ): - listener.enterAnnotationTypeDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAnnotationTypeDeclaration" ): - listener.exitAnnotationTypeDeclaration(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAnnotationTypeDeclaration" ): - return visitor.visitAnnotationTypeDeclaration(self) - else: - return visitor.visitChildren(self) - - - - - def annotationTypeDeclaration(self): - - localctx = Java8Parser.AnnotationTypeDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 216, self.RULE_annotationTypeDeclaration) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1353 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,134,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 1350 - self.interfaceModifier() - self.state = 1355 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,134,self._ctx) - - self.state = 1356 - self.match(Java8Parser.AT) - self.state = 1357 - self.match(Java8Parser.INTERFACE) - self.state = 1358 - self.match(Java8Parser.Identifier) - self.state = 1359 - self.annotationTypeBody() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AnnotationTypeBodyContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def LBRACE(self): - return self.getToken(Java8Parser.LBRACE, 0) - - def RBRACE(self): - return self.getToken(Java8Parser.RBRACE, 0) - - def annotationTypeMemberDeclaration(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.AnnotationTypeMemberDeclarationContext) - else: - return self.getTypedRuleContext(Java8Parser.AnnotationTypeMemberDeclarationContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_annotationTypeBody - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAnnotationTypeBody" ): - listener.enterAnnotationTypeBody(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAnnotationTypeBody" ): - listener.exitAnnotationTypeBody(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAnnotationTypeBody" ): - return visitor.visitAnnotationTypeBody(self) - else: - return visitor.visitChildren(self) - - - - - def annotationTypeBody(self): - - localctx = Java8Parser.AnnotationTypeBodyContext(self, self._ctx, self.state) - self.enterRule(localctx, 218, self.RULE_annotationTypeBody) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1361 - self.match(Java8Parser.LBRACE) - self.state = 1365 - self._errHandler.sync(self) - _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.ABSTRACT) | (1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.CLASS) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.ENUM) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.INTERFACE) | (1 << Java8Parser.LONG) | (1 << Java8Parser.PRIVATE) | (1 << Java8Parser.PROTECTED) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.STATIC) | (1 << Java8Parser.STRICTFP) | (1 << Java8Parser.SEMI))) != 0) or _la==Java8Parser.Identifier or _la==Java8Parser.AT: - self.state = 1362 - self.annotationTypeMemberDeclaration() - self.state = 1367 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1368 - self.match(Java8Parser.RBRACE) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AnnotationTypeMemberDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def annotationTypeElementDeclaration(self): - return self.getTypedRuleContext(Java8Parser.AnnotationTypeElementDeclarationContext,0) - - - def constantDeclaration(self): - return self.getTypedRuleContext(Java8Parser.ConstantDeclarationContext,0) - - - def classDeclaration(self): - return self.getTypedRuleContext(Java8Parser.ClassDeclarationContext,0) - - - def interfaceDeclaration(self): - return self.getTypedRuleContext(Java8Parser.InterfaceDeclarationContext,0) - - - def SEMI(self): - return self.getToken(Java8Parser.SEMI, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_annotationTypeMemberDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAnnotationTypeMemberDeclaration" ): - listener.enterAnnotationTypeMemberDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAnnotationTypeMemberDeclaration" ): - listener.exitAnnotationTypeMemberDeclaration(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAnnotationTypeMemberDeclaration" ): - return visitor.visitAnnotationTypeMemberDeclaration(self) - else: - return visitor.visitChildren(self) - - - - - def annotationTypeMemberDeclaration(self): - - localctx = Java8Parser.AnnotationTypeMemberDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 220, self.RULE_annotationTypeMemberDeclaration) - try: - self.state = 1375 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,136,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1370 - self.annotationTypeElementDeclaration() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1371 - self.constantDeclaration() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1372 - self.classDeclaration() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 1373 - self.interfaceDeclaration() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 1374 - self.match(Java8Parser.SEMI) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AnnotationTypeElementDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def unannType(self): - return self.getTypedRuleContext(Java8Parser.UnannTypeContext,0) - - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def SEMI(self): - return self.getToken(Java8Parser.SEMI, 0) - - def annotationTypeElementModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.AnnotationTypeElementModifierContext) - else: - return self.getTypedRuleContext(Java8Parser.AnnotationTypeElementModifierContext,i) - - - def dims(self): - return self.getTypedRuleContext(Java8Parser.DimsContext,0) - - - def defaultValue(self): - return self.getTypedRuleContext(Java8Parser.DefaultValueContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_annotationTypeElementDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAnnotationTypeElementDeclaration" ): - listener.enterAnnotationTypeElementDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAnnotationTypeElementDeclaration" ): - listener.exitAnnotationTypeElementDeclaration(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAnnotationTypeElementDeclaration" ): - return visitor.visitAnnotationTypeElementDeclaration(self) - else: - return visitor.visitChildren(self) - - - - - def annotationTypeElementDeclaration(self): - - localctx = Java8Parser.AnnotationTypeElementDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 222, self.RULE_annotationTypeElementDeclaration) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1380 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.ABSTRACT or _la==Java8Parser.PUBLIC or _la==Java8Parser.AT: - self.state = 1377 - self.annotationTypeElementModifier() - self.state = 1382 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1383 - self.unannType() - self.state = 1384 - self.match(Java8Parser.Identifier) - self.state = 1385 - self.match(Java8Parser.LPAREN) - self.state = 1386 - self.match(Java8Parser.RPAREN) - self.state = 1388 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LBRACK or _la==Java8Parser.AT: - self.state = 1387 - self.dims() - - - self.state = 1391 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.DEFAULT: - self.state = 1390 - self.defaultValue() - - - self.state = 1393 - self.match(Java8Parser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AnnotationTypeElementModifierContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def annotation(self): - return self.getTypedRuleContext(Java8Parser.AnnotationContext,0) - - - def PUBLIC(self): - return self.getToken(Java8Parser.PUBLIC, 0) - - def ABSTRACT(self): - return self.getToken(Java8Parser.ABSTRACT, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_annotationTypeElementModifier - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAnnotationTypeElementModifier" ): - listener.enterAnnotationTypeElementModifier(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAnnotationTypeElementModifier" ): - listener.exitAnnotationTypeElementModifier(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAnnotationTypeElementModifier" ): - return visitor.visitAnnotationTypeElementModifier(self) - else: - return visitor.visitChildren(self) - - - - - def annotationTypeElementModifier(self): - - localctx = Java8Parser.AnnotationTypeElementModifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 224, self.RULE_annotationTypeElementModifier) - try: - self.state = 1398 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [Java8Parser.AT]: - self.enterOuterAlt(localctx, 1) - self.state = 1395 - self.annotation() - pass - elif token in [Java8Parser.PUBLIC]: - self.enterOuterAlt(localctx, 2) - self.state = 1396 - self.match(Java8Parser.PUBLIC) - pass - elif token in [Java8Parser.ABSTRACT]: - self.enterOuterAlt(localctx, 3) - self.state = 1397 - self.match(Java8Parser.ABSTRACT) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DefaultValueContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DEFAULT(self): - return self.getToken(Java8Parser.DEFAULT, 0) - - def elementValue(self): - return self.getTypedRuleContext(Java8Parser.ElementValueContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_defaultValue - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDefaultValue" ): - listener.enterDefaultValue(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDefaultValue" ): - listener.exitDefaultValue(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDefaultValue" ): - return visitor.visitDefaultValue(self) - else: - return visitor.visitChildren(self) - - - - - def defaultValue(self): - - localctx = Java8Parser.DefaultValueContext(self, self._ctx, self.state) - self.enterRule(localctx, 226, self.RULE_defaultValue) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1400 - self.match(Java8Parser.DEFAULT) - self.state = 1401 - self.elementValue() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AnnotationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def normalAnnotation(self): - return self.getTypedRuleContext(Java8Parser.NormalAnnotationContext,0) - - - def markerAnnotation(self): - return self.getTypedRuleContext(Java8Parser.MarkerAnnotationContext,0) - - - def singleElementAnnotation(self): - return self.getTypedRuleContext(Java8Parser.SingleElementAnnotationContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_annotation - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAnnotation" ): - listener.enterAnnotation(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAnnotation" ): - listener.exitAnnotation(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAnnotation" ): - return visitor.visitAnnotation(self) - else: - return visitor.visitChildren(self) - - - - - def annotation(self): - - localctx = Java8Parser.AnnotationContext(self, self._ctx, self.state) - self.enterRule(localctx, 228, self.RULE_annotation) - try: - self.state = 1406 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,141,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1403 - self.normalAnnotation() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1404 - self.markerAnnotation() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1405 - self.singleElementAnnotation() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class NormalAnnotationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def AT(self): - return self.getToken(Java8Parser.AT, 0) - - def typeName(self): - return self.getTypedRuleContext(Java8Parser.TypeNameContext,0) - - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def elementValuePairList(self): - return self.getTypedRuleContext(Java8Parser.ElementValuePairListContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_normalAnnotation - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNormalAnnotation" ): - listener.enterNormalAnnotation(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNormalAnnotation" ): - listener.exitNormalAnnotation(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNormalAnnotation" ): - return visitor.visitNormalAnnotation(self) - else: - return visitor.visitChildren(self) - - - - - def normalAnnotation(self): - - localctx = Java8Parser.NormalAnnotationContext(self, self._ctx, self.state) - self.enterRule(localctx, 230, self.RULE_normalAnnotation) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1408 - self.match(Java8Parser.AT) - self.state = 1409 - self.typeName() - self.state = 1410 - self.match(Java8Parser.LPAREN) - self.state = 1412 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.Identifier: - self.state = 1411 - self.elementValuePairList() - - - self.state = 1414 - self.match(Java8Parser.RPAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ElementValuePairListContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def elementValuePair(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.ElementValuePairContext) - else: - return self.getTypedRuleContext(Java8Parser.ElementValuePairContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.COMMA) - else: - return self.getToken(Java8Parser.COMMA, i) - - def getRuleIndex(self): - return Java8Parser.RULE_elementValuePairList - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterElementValuePairList" ): - listener.enterElementValuePairList(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitElementValuePairList" ): - listener.exitElementValuePairList(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitElementValuePairList" ): - return visitor.visitElementValuePairList(self) - else: - return visitor.visitChildren(self) - - - - - def elementValuePairList(self): - - localctx = Java8Parser.ElementValuePairListContext(self, self._ctx, self.state) - self.enterRule(localctx, 232, self.RULE_elementValuePairList) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1416 - self.elementValuePair() - self.state = 1421 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.COMMA: - self.state = 1417 - self.match(Java8Parser.COMMA) - self.state = 1418 - self.elementValuePair() - self.state = 1423 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ElementValuePairContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def ASSIGN(self): - return self.getToken(Java8Parser.ASSIGN, 0) - - def elementValue(self): - return self.getTypedRuleContext(Java8Parser.ElementValueContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_elementValuePair - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterElementValuePair" ): - listener.enterElementValuePair(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitElementValuePair" ): - listener.exitElementValuePair(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitElementValuePair" ): - return visitor.visitElementValuePair(self) - else: - return visitor.visitChildren(self) - - - - - def elementValuePair(self): - - localctx = Java8Parser.ElementValuePairContext(self, self._ctx, self.state) - self.enterRule(localctx, 234, self.RULE_elementValuePair) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1424 - self.match(Java8Parser.Identifier) - self.state = 1425 - self.match(Java8Parser.ASSIGN) - self.state = 1426 - self.elementValue() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ElementValueContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def conditionalExpression(self): - return self.getTypedRuleContext(Java8Parser.ConditionalExpressionContext,0) - - - def elementValueArrayInitializer(self): - return self.getTypedRuleContext(Java8Parser.ElementValueArrayInitializerContext,0) - - - def annotation(self): - return self.getTypedRuleContext(Java8Parser.AnnotationContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_elementValue - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterElementValue" ): - listener.enterElementValue(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitElementValue" ): - listener.exitElementValue(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitElementValue" ): - return visitor.visitElementValue(self) - else: - return visitor.visitChildren(self) - - - - - def elementValue(self): - - localctx = Java8Parser.ElementValueContext(self, self._ctx, self.state) - self.enterRule(localctx, 236, self.RULE_elementValue) - try: - self.state = 1431 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,144,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1428 - self.conditionalExpression() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1429 - self.elementValueArrayInitializer() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1430 - self.annotation() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ElementValueArrayInitializerContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def LBRACE(self): - return self.getToken(Java8Parser.LBRACE, 0) - - def RBRACE(self): - return self.getToken(Java8Parser.RBRACE, 0) - - def elementValueList(self): - return self.getTypedRuleContext(Java8Parser.ElementValueListContext,0) - - - def COMMA(self): - return self.getToken(Java8Parser.COMMA, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_elementValueArrayInitializer - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterElementValueArrayInitializer" ): - listener.enterElementValueArrayInitializer(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitElementValueArrayInitializer" ): - listener.exitElementValueArrayInitializer(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitElementValueArrayInitializer" ): - return visitor.visitElementValueArrayInitializer(self) - else: - return visitor.visitChildren(self) - - - - - def elementValueArrayInitializer(self): - - localctx = Java8Parser.ElementValueArrayInitializerContext(self, self._ctx, self.state) - self.enterRule(localctx, 238, self.RULE_elementValueArrayInitializer) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1433 - self.match(Java8Parser.LBRACE) - self.state = 1435 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN) | (1 << Java8Parser.LBRACE))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): - self.state = 1434 - self.elementValueList() - - - self.state = 1438 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.COMMA: - self.state = 1437 - self.match(Java8Parser.COMMA) - - - self.state = 1440 - self.match(Java8Parser.RBRACE) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ElementValueListContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def elementValue(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.ElementValueContext) - else: - return self.getTypedRuleContext(Java8Parser.ElementValueContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.COMMA) - else: - return self.getToken(Java8Parser.COMMA, i) - - def getRuleIndex(self): - return Java8Parser.RULE_elementValueList - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterElementValueList" ): - listener.enterElementValueList(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitElementValueList" ): - listener.exitElementValueList(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitElementValueList" ): - return visitor.visitElementValueList(self) - else: - return visitor.visitChildren(self) - - - - - def elementValueList(self): - - localctx = Java8Parser.ElementValueListContext(self, self._ctx, self.state) - self.enterRule(localctx, 240, self.RULE_elementValueList) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1442 - self.elementValue() - self.state = 1447 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,147,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 1443 - self.match(Java8Parser.COMMA) - self.state = 1444 - self.elementValue() - self.state = 1449 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,147,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class MarkerAnnotationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def AT(self): - return self.getToken(Java8Parser.AT, 0) - - def typeName(self): - return self.getTypedRuleContext(Java8Parser.TypeNameContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_markerAnnotation - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMarkerAnnotation" ): - listener.enterMarkerAnnotation(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMarkerAnnotation" ): - listener.exitMarkerAnnotation(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMarkerAnnotation" ): - return visitor.visitMarkerAnnotation(self) - else: - return visitor.visitChildren(self) - - - - - def markerAnnotation(self): - - localctx = Java8Parser.MarkerAnnotationContext(self, self._ctx, self.state) - self.enterRule(localctx, 242, self.RULE_markerAnnotation) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1450 - self.match(Java8Parser.AT) - self.state = 1451 - self.typeName() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class SingleElementAnnotationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def AT(self): - return self.getToken(Java8Parser.AT, 0) - - def typeName(self): - return self.getTypedRuleContext(Java8Parser.TypeNameContext,0) - - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def elementValue(self): - return self.getTypedRuleContext(Java8Parser.ElementValueContext,0) - - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_singleElementAnnotation - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSingleElementAnnotation" ): - listener.enterSingleElementAnnotation(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSingleElementAnnotation" ): - listener.exitSingleElementAnnotation(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSingleElementAnnotation" ): - return visitor.visitSingleElementAnnotation(self) - else: - return visitor.visitChildren(self) - - - - - def singleElementAnnotation(self): - - localctx = Java8Parser.SingleElementAnnotationContext(self, self._ctx, self.state) - self.enterRule(localctx, 244, self.RULE_singleElementAnnotation) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1453 - self.match(Java8Parser.AT) - self.state = 1454 - self.typeName() - self.state = 1455 - self.match(Java8Parser.LPAREN) - self.state = 1456 - self.elementValue() - self.state = 1457 - self.match(Java8Parser.RPAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ArrayInitializerContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def LBRACE(self): - return self.getToken(Java8Parser.LBRACE, 0) - - def RBRACE(self): - return self.getToken(Java8Parser.RBRACE, 0) - - def variableInitializerList(self): - return self.getTypedRuleContext(Java8Parser.VariableInitializerListContext,0) - - - def COMMA(self): - return self.getToken(Java8Parser.COMMA, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_arrayInitializer - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterArrayInitializer" ): - listener.enterArrayInitializer(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitArrayInitializer" ): - listener.exitArrayInitializer(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitArrayInitializer" ): - return visitor.visitArrayInitializer(self) - else: - return visitor.visitChildren(self) - - - - - def arrayInitializer(self): - - localctx = Java8Parser.ArrayInitializerContext(self, self._ctx, self.state) - self.enterRule(localctx, 246, self.RULE_arrayInitializer) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1459 - self.match(Java8Parser.LBRACE) - self.state = 1461 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN) | (1 << Java8Parser.LBRACE))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): - self.state = 1460 - self.variableInitializerList() - - - self.state = 1464 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.COMMA: - self.state = 1463 - self.match(Java8Parser.COMMA) - - - self.state = 1466 - self.match(Java8Parser.RBRACE) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class VariableInitializerListContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def variableInitializer(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.VariableInitializerContext) - else: - return self.getTypedRuleContext(Java8Parser.VariableInitializerContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.COMMA) - else: - return self.getToken(Java8Parser.COMMA, i) - - def getRuleIndex(self): - return Java8Parser.RULE_variableInitializerList - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVariableInitializerList" ): - listener.enterVariableInitializerList(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVariableInitializerList" ): - listener.exitVariableInitializerList(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitVariableInitializerList" ): - return visitor.visitVariableInitializerList(self) - else: - return visitor.visitChildren(self) - - - - - def variableInitializerList(self): - - localctx = Java8Parser.VariableInitializerListContext(self, self._ctx, self.state) - self.enterRule(localctx, 248, self.RULE_variableInitializerList) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1468 - self.variableInitializer() - self.state = 1473 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,150,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 1469 - self.match(Java8Parser.COMMA) - self.state = 1470 - self.variableInitializer() - self.state = 1475 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,150,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class BlockContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def LBRACE(self): - return self.getToken(Java8Parser.LBRACE, 0) - - def RBRACE(self): - return self.getToken(Java8Parser.RBRACE, 0) - - def blockStatements(self): - return self.getTypedRuleContext(Java8Parser.BlockStatementsContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_block - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterBlock" ): - listener.enterBlock(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitBlock" ): - listener.exitBlock(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitBlock" ): - return visitor.visitBlock(self) - else: - return visitor.visitChildren(self) - - - - - def block(self): - - localctx = Java8Parser.BlockContext(self, self._ctx, self.state) - self.enterRule(localctx, 250, self.RULE_block) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1476 - self.match(Java8Parser.LBRACE) - self.state = 1478 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.ABSTRACT) | (1 << Java8Parser.ASSERT) | (1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BREAK) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.CLASS) | (1 << Java8Parser.CONTINUE) | (1 << Java8Parser.DO) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.ENUM) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.FOR) | (1 << Java8Parser.IF) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.PRIVATE) | (1 << Java8Parser.PROTECTED) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.RETURN) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.STATIC) | (1 << Java8Parser.STRICTFP) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.SWITCH) | (1 << Java8Parser.SYNCHRONIZED) | (1 << Java8Parser.THIS) | (1 << Java8Parser.THROW) | (1 << Java8Parser.TRY) | (1 << Java8Parser.VOID) | (1 << Java8Parser.WHILE) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN) | (1 << Java8Parser.LBRACE) | (1 << Java8Parser.SEMI))) != 0) or ((((_la - 79)) & ~0x3f) == 0 and ((1 << (_la - 79)) & ((1 << (Java8Parser.INC - 79)) | (1 << (Java8Parser.DEC - 79)) | (1 << (Java8Parser.Identifier - 79)) | (1 << (Java8Parser.AT - 79)))) != 0): - self.state = 1477 - self.blockStatements() - - - self.state = 1480 - self.match(Java8Parser.RBRACE) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class BlockStatementsContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def blockStatement(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.BlockStatementContext) - else: - return self.getTypedRuleContext(Java8Parser.BlockStatementContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_blockStatements - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterBlockStatements" ): - listener.enterBlockStatements(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitBlockStatements" ): - listener.exitBlockStatements(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitBlockStatements" ): - return visitor.visitBlockStatements(self) - else: - return visitor.visitChildren(self) - - - - - def blockStatements(self): - - localctx = Java8Parser.BlockStatementsContext(self, self._ctx, self.state) - self.enterRule(localctx, 252, self.RULE_blockStatements) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1483 - self._errHandler.sync(self) - _la = self._input.LA(1) - while True: - self.state = 1482 - self.blockStatement() - self.state = 1485 - self._errHandler.sync(self) - _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.ABSTRACT) | (1 << Java8Parser.ASSERT) | (1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BREAK) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.CLASS) | (1 << Java8Parser.CONTINUE) | (1 << Java8Parser.DO) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.ENUM) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.FOR) | (1 << Java8Parser.IF) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.PRIVATE) | (1 << Java8Parser.PROTECTED) | (1 << Java8Parser.PUBLIC) | (1 << Java8Parser.RETURN) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.STATIC) | (1 << Java8Parser.STRICTFP) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.SWITCH) | (1 << Java8Parser.SYNCHRONIZED) | (1 << Java8Parser.THIS) | (1 << Java8Parser.THROW) | (1 << Java8Parser.TRY) | (1 << Java8Parser.VOID) | (1 << Java8Parser.WHILE) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN) | (1 << Java8Parser.LBRACE) | (1 << Java8Parser.SEMI))) != 0) or ((((_la - 79)) & ~0x3f) == 0 and ((1 << (_la - 79)) & ((1 << (Java8Parser.INC - 79)) | (1 << (Java8Parser.DEC - 79)) | (1 << (Java8Parser.Identifier - 79)) | (1 << (Java8Parser.AT - 79)))) != 0)): - break - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class BlockStatementContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def localVariableDeclarationStatement(self): - return self.getTypedRuleContext(Java8Parser.LocalVariableDeclarationStatementContext,0) - - - def classDeclaration(self): - return self.getTypedRuleContext(Java8Parser.ClassDeclarationContext,0) - - - def statement(self): - return self.getTypedRuleContext(Java8Parser.StatementContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_blockStatement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterBlockStatement" ): - listener.enterBlockStatement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitBlockStatement" ): - listener.exitBlockStatement(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitBlockStatement" ): - return visitor.visitBlockStatement(self) - else: - return visitor.visitChildren(self) - - - - - def blockStatement(self): - - localctx = Java8Parser.BlockStatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 254, self.RULE_blockStatement) - try: - self.state = 1490 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,153,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1487 - self.localVariableDeclarationStatement() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1488 - self.classDeclaration() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1489 - self.statement() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class LocalVariableDeclarationStatementContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def localVariableDeclaration(self): - return self.getTypedRuleContext(Java8Parser.LocalVariableDeclarationContext,0) - - - def SEMI(self): - return self.getToken(Java8Parser.SEMI, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_localVariableDeclarationStatement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLocalVariableDeclarationStatement" ): - listener.enterLocalVariableDeclarationStatement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLocalVariableDeclarationStatement" ): - listener.exitLocalVariableDeclarationStatement(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLocalVariableDeclarationStatement" ): - return visitor.visitLocalVariableDeclarationStatement(self) - else: - return visitor.visitChildren(self) - - - - - def localVariableDeclarationStatement(self): - - localctx = Java8Parser.LocalVariableDeclarationStatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 256, self.RULE_localVariableDeclarationStatement) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1492 - self.localVariableDeclaration() - self.state = 1493 - self.match(Java8Parser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class LocalVariableDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def unannType(self): - return self.getTypedRuleContext(Java8Parser.UnannTypeContext,0) - - - def variableDeclaratorList(self): - return self.getTypedRuleContext(Java8Parser.VariableDeclaratorListContext,0) - - - def variableModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.VariableModifierContext) - else: - return self.getTypedRuleContext(Java8Parser.VariableModifierContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_localVariableDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLocalVariableDeclaration" ): - listener.enterLocalVariableDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLocalVariableDeclaration" ): - listener.exitLocalVariableDeclaration(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLocalVariableDeclaration" ): - return visitor.visitLocalVariableDeclaration(self) - else: - return visitor.visitChildren(self) - - - - - def localVariableDeclaration(self): - - localctx = Java8Parser.LocalVariableDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 258, self.RULE_localVariableDeclaration) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1498 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.FINAL or _la==Java8Parser.AT: - self.state = 1495 - self.variableModifier() - self.state = 1500 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1501 - self.unannType() - self.state = 1502 - self.variableDeclaratorList() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class StatementContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def statementWithoutTrailingSubstatement(self): - return self.getTypedRuleContext(Java8Parser.StatementWithoutTrailingSubstatementContext,0) - - - def labeledStatement(self): - return self.getTypedRuleContext(Java8Parser.LabeledStatementContext,0) - - - def ifThenStatement(self): - return self.getTypedRuleContext(Java8Parser.IfThenStatementContext,0) - - - def ifThenElseStatement(self): - return self.getTypedRuleContext(Java8Parser.IfThenElseStatementContext,0) - - - def whileStatement(self): - return self.getTypedRuleContext(Java8Parser.WhileStatementContext,0) - - - def forStatement(self): - return self.getTypedRuleContext(Java8Parser.ForStatementContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_statement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStatement" ): - listener.enterStatement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStatement" ): - listener.exitStatement(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStatement" ): - return visitor.visitStatement(self) - else: - return visitor.visitChildren(self) - - - - - def statement(self): - - localctx = Java8Parser.StatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 260, self.RULE_statement) - try: - self.state = 1510 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,155,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1504 - self.statementWithoutTrailingSubstatement() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1505 - self.labeledStatement() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1506 - self.ifThenStatement() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 1507 - self.ifThenElseStatement() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 1508 - self.whileStatement() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 1509 - self.forStatement() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class StatementNoShortIfContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def statementWithoutTrailingSubstatement(self): - return self.getTypedRuleContext(Java8Parser.StatementWithoutTrailingSubstatementContext,0) - - - def labeledStatementNoShortIf(self): - return self.getTypedRuleContext(Java8Parser.LabeledStatementNoShortIfContext,0) - - - def ifThenElseStatementNoShortIf(self): - return self.getTypedRuleContext(Java8Parser.IfThenElseStatementNoShortIfContext,0) - - - def whileStatementNoShortIf(self): - return self.getTypedRuleContext(Java8Parser.WhileStatementNoShortIfContext,0) - - - def forStatementNoShortIf(self): - return self.getTypedRuleContext(Java8Parser.ForStatementNoShortIfContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_statementNoShortIf - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStatementNoShortIf" ): - listener.enterStatementNoShortIf(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStatementNoShortIf" ): - listener.exitStatementNoShortIf(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStatementNoShortIf" ): - return visitor.visitStatementNoShortIf(self) - else: - return visitor.visitChildren(self) - - - - - def statementNoShortIf(self): - - localctx = Java8Parser.StatementNoShortIfContext(self, self._ctx, self.state) - self.enterRule(localctx, 262, self.RULE_statementNoShortIf) - try: - self.state = 1517 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,156,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1512 - self.statementWithoutTrailingSubstatement() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1513 - self.labeledStatementNoShortIf() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1514 - self.ifThenElseStatementNoShortIf() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 1515 - self.whileStatementNoShortIf() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 1516 - self.forStatementNoShortIf() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class StatementWithoutTrailingSubstatementContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def block(self): - return self.getTypedRuleContext(Java8Parser.BlockContext,0) - - - def emptyStatement(self): - return self.getTypedRuleContext(Java8Parser.EmptyStatementContext,0) - - - def expressionStatement(self): - return self.getTypedRuleContext(Java8Parser.ExpressionStatementContext,0) - - - def assertStatement(self): - return self.getTypedRuleContext(Java8Parser.AssertStatementContext,0) - - - def switchStatement(self): - return self.getTypedRuleContext(Java8Parser.SwitchStatementContext,0) - - - def doStatement(self): - return self.getTypedRuleContext(Java8Parser.DoStatementContext,0) - - - def breakStatement(self): - return self.getTypedRuleContext(Java8Parser.BreakStatementContext,0) - - - def continueStatement(self): - return self.getTypedRuleContext(Java8Parser.ContinueStatementContext,0) - - - def returnStatement(self): - return self.getTypedRuleContext(Java8Parser.ReturnStatementContext,0) - - - def synchronizedStatement(self): - return self.getTypedRuleContext(Java8Parser.SynchronizedStatementContext,0) - - - def throwStatement(self): - return self.getTypedRuleContext(Java8Parser.ThrowStatementContext,0) - - - def tryStatement(self): - return self.getTypedRuleContext(Java8Parser.TryStatementContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_statementWithoutTrailingSubstatement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStatementWithoutTrailingSubstatement" ): - listener.enterStatementWithoutTrailingSubstatement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStatementWithoutTrailingSubstatement" ): - listener.exitStatementWithoutTrailingSubstatement(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStatementWithoutTrailingSubstatement" ): - return visitor.visitStatementWithoutTrailingSubstatement(self) - else: - return visitor.visitChildren(self) - - - - - def statementWithoutTrailingSubstatement(self): - - localctx = Java8Parser.StatementWithoutTrailingSubstatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 264, self.RULE_statementWithoutTrailingSubstatement) - try: - self.state = 1531 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [Java8Parser.LBRACE]: - self.enterOuterAlt(localctx, 1) - self.state = 1519 - self.block() - pass - elif token in [Java8Parser.SEMI]: - self.enterOuterAlt(localctx, 2) - self.state = 1520 - self.emptyStatement() - pass - elif token in [Java8Parser.BOOLEAN, Java8Parser.BYTE, Java8Parser.CHAR, Java8Parser.DOUBLE, Java8Parser.FLOAT, Java8Parser.INT, Java8Parser.LONG, Java8Parser.NEW, Java8Parser.SHORT, Java8Parser.SUPER, Java8Parser.THIS, Java8Parser.VOID, Java8Parser.IntegerLiteral, Java8Parser.FloatingPointLiteral, Java8Parser.BooleanLiteral, Java8Parser.CharacterLiteral, Java8Parser.StringLiteral, Java8Parser.NullLiteral, Java8Parser.LPAREN, Java8Parser.INC, Java8Parser.DEC, Java8Parser.Identifier, Java8Parser.AT]: - self.enterOuterAlt(localctx, 3) - self.state = 1521 - self.expressionStatement() - pass - elif token in [Java8Parser.ASSERT]: - self.enterOuterAlt(localctx, 4) - self.state = 1522 - self.assertStatement() - pass - elif token in [Java8Parser.SWITCH]: - self.enterOuterAlt(localctx, 5) - self.state = 1523 - self.switchStatement() - pass - elif token in [Java8Parser.DO]: - self.enterOuterAlt(localctx, 6) - self.state = 1524 - self.doStatement() - pass - elif token in [Java8Parser.BREAK]: - self.enterOuterAlt(localctx, 7) - self.state = 1525 - self.breakStatement() - pass - elif token in [Java8Parser.CONTINUE]: - self.enterOuterAlt(localctx, 8) - self.state = 1526 - self.continueStatement() - pass - elif token in [Java8Parser.RETURN]: - self.enterOuterAlt(localctx, 9) - self.state = 1527 - self.returnStatement() - pass - elif token in [Java8Parser.SYNCHRONIZED]: - self.enterOuterAlt(localctx, 10) - self.state = 1528 - self.synchronizedStatement() - pass - elif token in [Java8Parser.THROW]: - self.enterOuterAlt(localctx, 11) - self.state = 1529 - self.throwStatement() - pass - elif token in [Java8Parser.TRY]: - self.enterOuterAlt(localctx, 12) - self.state = 1530 - self.tryStatement() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class EmptyStatementContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def SEMI(self): - return self.getToken(Java8Parser.SEMI, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_emptyStatement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEmptyStatement" ): - listener.enterEmptyStatement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEmptyStatement" ): - listener.exitEmptyStatement(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEmptyStatement" ): - return visitor.visitEmptyStatement(self) - else: - return visitor.visitChildren(self) - - - - - def emptyStatement(self): - - localctx = Java8Parser.EmptyStatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 266, self.RULE_emptyStatement) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1533 - self.match(Java8Parser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class LabeledStatementContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def COLON(self): - return self.getToken(Java8Parser.COLON, 0) - - def statement(self): - return self.getTypedRuleContext(Java8Parser.StatementContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_labeledStatement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLabeledStatement" ): - listener.enterLabeledStatement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLabeledStatement" ): - listener.exitLabeledStatement(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLabeledStatement" ): - return visitor.visitLabeledStatement(self) - else: - return visitor.visitChildren(self) - - - - - def labeledStatement(self): - - localctx = Java8Parser.LabeledStatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 268, self.RULE_labeledStatement) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1535 - self.match(Java8Parser.Identifier) - self.state = 1536 - self.match(Java8Parser.COLON) - self.state = 1537 - self.statement() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class LabeledStatementNoShortIfContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def COLON(self): - return self.getToken(Java8Parser.COLON, 0) - - def statementNoShortIf(self): - return self.getTypedRuleContext(Java8Parser.StatementNoShortIfContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_labeledStatementNoShortIf - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLabeledStatementNoShortIf" ): - listener.enterLabeledStatementNoShortIf(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLabeledStatementNoShortIf" ): - listener.exitLabeledStatementNoShortIf(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLabeledStatementNoShortIf" ): - return visitor.visitLabeledStatementNoShortIf(self) - else: - return visitor.visitChildren(self) - - - - - def labeledStatementNoShortIf(self): - - localctx = Java8Parser.LabeledStatementNoShortIfContext(self, self._ctx, self.state) - self.enterRule(localctx, 270, self.RULE_labeledStatementNoShortIf) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1539 - self.match(Java8Parser.Identifier) - self.state = 1540 - self.match(Java8Parser.COLON) - self.state = 1541 - self.statementNoShortIf() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ExpressionStatementContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def statementExpression(self): - return self.getTypedRuleContext(Java8Parser.StatementExpressionContext,0) - - - def SEMI(self): - return self.getToken(Java8Parser.SEMI, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_expressionStatement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExpressionStatement" ): - listener.enterExpressionStatement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExpressionStatement" ): - listener.exitExpressionStatement(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExpressionStatement" ): - return visitor.visitExpressionStatement(self) - else: - return visitor.visitChildren(self) - - - - - def expressionStatement(self): - - localctx = Java8Parser.ExpressionStatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 272, self.RULE_expressionStatement) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1543 - self.statementExpression() - self.state = 1544 - self.match(Java8Parser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class StatementExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def assignment(self): - return self.getTypedRuleContext(Java8Parser.AssignmentContext,0) - - - def preIncrementExpression(self): - return self.getTypedRuleContext(Java8Parser.PreIncrementExpressionContext,0) - - - def preDecrementExpression(self): - return self.getTypedRuleContext(Java8Parser.PreDecrementExpressionContext,0) - - - def postIncrementExpression(self): - return self.getTypedRuleContext(Java8Parser.PostIncrementExpressionContext,0) - - - def postDecrementExpression(self): - return self.getTypedRuleContext(Java8Parser.PostDecrementExpressionContext,0) - - - def methodInvocation(self): - return self.getTypedRuleContext(Java8Parser.MethodInvocationContext,0) - - - def classInstanceCreationExpression(self): - return self.getTypedRuleContext(Java8Parser.ClassInstanceCreationExpressionContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_statementExpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStatementExpression" ): - listener.enterStatementExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStatementExpression" ): - listener.exitStatementExpression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStatementExpression" ): - return visitor.visitStatementExpression(self) - else: - return visitor.visitChildren(self) - - - - - def statementExpression(self): - - localctx = Java8Parser.StatementExpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 274, self.RULE_statementExpression) - try: - self.state = 1553 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,158,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1546 - self.assignment() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1547 - self.preIncrementExpression() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1548 - self.preDecrementExpression() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 1549 - self.postIncrementExpression() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 1550 - self.postDecrementExpression() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 1551 - self.methodInvocation() - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 1552 - self.classInstanceCreationExpression() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class IfThenStatementContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IF(self): - return self.getToken(Java8Parser.IF, 0) - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def expression(self): - return self.getTypedRuleContext(Java8Parser.ExpressionContext,0) - - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def statement(self): - return self.getTypedRuleContext(Java8Parser.StatementContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_ifThenStatement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterIfThenStatement" ): - listener.enterIfThenStatement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitIfThenStatement" ): - listener.exitIfThenStatement(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitIfThenStatement" ): - return visitor.visitIfThenStatement(self) - else: - return visitor.visitChildren(self) - - - - - def ifThenStatement(self): - - localctx = Java8Parser.IfThenStatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 276, self.RULE_ifThenStatement) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1555 - self.match(Java8Parser.IF) - self.state = 1556 - self.match(Java8Parser.LPAREN) - self.state = 1557 - self.expression() - self.state = 1558 - self.match(Java8Parser.RPAREN) - self.state = 1559 - self.statement() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class IfThenElseStatementContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IF(self): - return self.getToken(Java8Parser.IF, 0) - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def expression(self): - return self.getTypedRuleContext(Java8Parser.ExpressionContext,0) - - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def statementNoShortIf(self): - return self.getTypedRuleContext(Java8Parser.StatementNoShortIfContext,0) - - - def ELSE(self): - return self.getToken(Java8Parser.ELSE, 0) - - def statement(self): - return self.getTypedRuleContext(Java8Parser.StatementContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_ifThenElseStatement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterIfThenElseStatement" ): - listener.enterIfThenElseStatement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitIfThenElseStatement" ): - listener.exitIfThenElseStatement(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitIfThenElseStatement" ): - return visitor.visitIfThenElseStatement(self) - else: - return visitor.visitChildren(self) - - - - - def ifThenElseStatement(self): - - localctx = Java8Parser.IfThenElseStatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 278, self.RULE_ifThenElseStatement) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1561 - self.match(Java8Parser.IF) - self.state = 1562 - self.match(Java8Parser.LPAREN) - self.state = 1563 - self.expression() - self.state = 1564 - self.match(Java8Parser.RPAREN) - self.state = 1565 - self.statementNoShortIf() - self.state = 1566 - self.match(Java8Parser.ELSE) - self.state = 1567 - self.statement() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class IfThenElseStatementNoShortIfContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IF(self): - return self.getToken(Java8Parser.IF, 0) - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def expression(self): - return self.getTypedRuleContext(Java8Parser.ExpressionContext,0) - - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def statementNoShortIf(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.StatementNoShortIfContext) - else: - return self.getTypedRuleContext(Java8Parser.StatementNoShortIfContext,i) - - - def ELSE(self): - return self.getToken(Java8Parser.ELSE, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_ifThenElseStatementNoShortIf - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterIfThenElseStatementNoShortIf" ): - listener.enterIfThenElseStatementNoShortIf(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitIfThenElseStatementNoShortIf" ): - listener.exitIfThenElseStatementNoShortIf(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitIfThenElseStatementNoShortIf" ): - return visitor.visitIfThenElseStatementNoShortIf(self) - else: - return visitor.visitChildren(self) - - - - - def ifThenElseStatementNoShortIf(self): - - localctx = Java8Parser.IfThenElseStatementNoShortIfContext(self, self._ctx, self.state) - self.enterRule(localctx, 280, self.RULE_ifThenElseStatementNoShortIf) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1569 - self.match(Java8Parser.IF) - self.state = 1570 - self.match(Java8Parser.LPAREN) - self.state = 1571 - self.expression() - self.state = 1572 - self.match(Java8Parser.RPAREN) - self.state = 1573 - self.statementNoShortIf() - self.state = 1574 - self.match(Java8Parser.ELSE) - self.state = 1575 - self.statementNoShortIf() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AssertStatementContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ASSERT(self): - return self.getToken(Java8Parser.ASSERT, 0) - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.ExpressionContext) - else: - return self.getTypedRuleContext(Java8Parser.ExpressionContext,i) - - - def SEMI(self): - return self.getToken(Java8Parser.SEMI, 0) - - def COLON(self): - return self.getToken(Java8Parser.COLON, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_assertStatement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAssertStatement" ): - listener.enterAssertStatement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAssertStatement" ): - listener.exitAssertStatement(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAssertStatement" ): - return visitor.visitAssertStatement(self) - else: - return visitor.visitChildren(self) - - - - - def assertStatement(self): - - localctx = Java8Parser.AssertStatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 282, self.RULE_assertStatement) - try: - self.state = 1587 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,159,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1577 - self.match(Java8Parser.ASSERT) - self.state = 1578 - self.expression() - self.state = 1579 - self.match(Java8Parser.SEMI) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1581 - self.match(Java8Parser.ASSERT) - self.state = 1582 - self.expression() - self.state = 1583 - self.match(Java8Parser.COLON) - self.state = 1584 - self.expression() - self.state = 1585 - self.match(Java8Parser.SEMI) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class SwitchStatementContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def SWITCH(self): - return self.getToken(Java8Parser.SWITCH, 0) - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def expression(self): - return self.getTypedRuleContext(Java8Parser.ExpressionContext,0) - - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def switchBlock(self): - return self.getTypedRuleContext(Java8Parser.SwitchBlockContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_switchStatement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSwitchStatement" ): - listener.enterSwitchStatement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSwitchStatement" ): - listener.exitSwitchStatement(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSwitchStatement" ): - return visitor.visitSwitchStatement(self) - else: - return visitor.visitChildren(self) - - - - - def switchStatement(self): - - localctx = Java8Parser.SwitchStatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 284, self.RULE_switchStatement) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1589 - self.match(Java8Parser.SWITCH) - self.state = 1590 - self.match(Java8Parser.LPAREN) - self.state = 1591 - self.expression() - self.state = 1592 - self.match(Java8Parser.RPAREN) - self.state = 1593 - self.switchBlock() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class SwitchBlockContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def LBRACE(self): - return self.getToken(Java8Parser.LBRACE, 0) - - def RBRACE(self): - return self.getToken(Java8Parser.RBRACE, 0) - - def switchBlockStatementGroup(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.SwitchBlockStatementGroupContext) - else: - return self.getTypedRuleContext(Java8Parser.SwitchBlockStatementGroupContext,i) - - - def switchLabel(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.SwitchLabelContext) - else: - return self.getTypedRuleContext(Java8Parser.SwitchLabelContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_switchBlock - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSwitchBlock" ): - listener.enterSwitchBlock(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSwitchBlock" ): - listener.exitSwitchBlock(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSwitchBlock" ): - return visitor.visitSwitchBlock(self) - else: - return visitor.visitChildren(self) - - - - - def switchBlock(self): - - localctx = Java8Parser.SwitchBlockContext(self, self._ctx, self.state) - self.enterRule(localctx, 286, self.RULE_switchBlock) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1595 - self.match(Java8Parser.LBRACE) - self.state = 1599 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,160,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 1596 - self.switchBlockStatementGroup() - self.state = 1601 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,160,self._ctx) - - self.state = 1605 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.CASE or _la==Java8Parser.DEFAULT: - self.state = 1602 - self.switchLabel() - self.state = 1607 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1608 - self.match(Java8Parser.RBRACE) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class SwitchBlockStatementGroupContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def switchLabels(self): - return self.getTypedRuleContext(Java8Parser.SwitchLabelsContext,0) - - - def blockStatements(self): - return self.getTypedRuleContext(Java8Parser.BlockStatementsContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_switchBlockStatementGroup - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSwitchBlockStatementGroup" ): - listener.enterSwitchBlockStatementGroup(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSwitchBlockStatementGroup" ): - listener.exitSwitchBlockStatementGroup(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSwitchBlockStatementGroup" ): - return visitor.visitSwitchBlockStatementGroup(self) - else: - return visitor.visitChildren(self) - - - - - def switchBlockStatementGroup(self): - - localctx = Java8Parser.SwitchBlockStatementGroupContext(self, self._ctx, self.state) - self.enterRule(localctx, 288, self.RULE_switchBlockStatementGroup) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1610 - self.switchLabels() - self.state = 1611 - self.blockStatements() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class SwitchLabelsContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def switchLabel(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.SwitchLabelContext) - else: - return self.getTypedRuleContext(Java8Parser.SwitchLabelContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_switchLabels - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSwitchLabels" ): - listener.enterSwitchLabels(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSwitchLabels" ): - listener.exitSwitchLabels(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSwitchLabels" ): - return visitor.visitSwitchLabels(self) - else: - return visitor.visitChildren(self) - - - - - def switchLabels(self): - - localctx = Java8Parser.SwitchLabelsContext(self, self._ctx, self.state) - self.enterRule(localctx, 290, self.RULE_switchLabels) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1613 - self.switchLabel() - self.state = 1617 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.CASE or _la==Java8Parser.DEFAULT: - self.state = 1614 - self.switchLabel() - self.state = 1619 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class SwitchLabelContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CASE(self): - return self.getToken(Java8Parser.CASE, 0) - - def constantExpression(self): - return self.getTypedRuleContext(Java8Parser.ConstantExpressionContext,0) - - - def COLON(self): - return self.getToken(Java8Parser.COLON, 0) - - def enumConstantName(self): - return self.getTypedRuleContext(Java8Parser.EnumConstantNameContext,0) - - - def DEFAULT(self): - return self.getToken(Java8Parser.DEFAULT, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_switchLabel - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSwitchLabel" ): - listener.enterSwitchLabel(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSwitchLabel" ): - listener.exitSwitchLabel(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSwitchLabel" ): - return visitor.visitSwitchLabel(self) - else: - return visitor.visitChildren(self) - - - - - def switchLabel(self): - - localctx = Java8Parser.SwitchLabelContext(self, self._ctx, self.state) - self.enterRule(localctx, 292, self.RULE_switchLabel) - try: - self.state = 1630 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,163,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1620 - self.match(Java8Parser.CASE) - self.state = 1621 - self.constantExpression() - self.state = 1622 - self.match(Java8Parser.COLON) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1624 - self.match(Java8Parser.CASE) - self.state = 1625 - self.enumConstantName() - self.state = 1626 - self.match(Java8Parser.COLON) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1628 - self.match(Java8Parser.DEFAULT) - self.state = 1629 - self.match(Java8Parser.COLON) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class EnumConstantNameContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_enumConstantName - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEnumConstantName" ): - listener.enterEnumConstantName(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEnumConstantName" ): - listener.exitEnumConstantName(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEnumConstantName" ): - return visitor.visitEnumConstantName(self) - else: - return visitor.visitChildren(self) - - - - - def enumConstantName(self): - - localctx = Java8Parser.EnumConstantNameContext(self, self._ctx, self.state) - self.enterRule(localctx, 294, self.RULE_enumConstantName) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1632 - self.match(Java8Parser.Identifier) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class WhileStatementContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WHILE(self): - return self.getToken(Java8Parser.WHILE, 0) - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def expression(self): - return self.getTypedRuleContext(Java8Parser.ExpressionContext,0) - - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def statement(self): - return self.getTypedRuleContext(Java8Parser.StatementContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_whileStatement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterWhileStatement" ): - listener.enterWhileStatement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitWhileStatement" ): - listener.exitWhileStatement(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitWhileStatement" ): - return visitor.visitWhileStatement(self) - else: - return visitor.visitChildren(self) - - - - - def whileStatement(self): - - localctx = Java8Parser.WhileStatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 296, self.RULE_whileStatement) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1634 - self.match(Java8Parser.WHILE) - self.state = 1635 - self.match(Java8Parser.LPAREN) - self.state = 1636 - self.expression() - self.state = 1637 - self.match(Java8Parser.RPAREN) - self.state = 1638 - self.statement() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class WhileStatementNoShortIfContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WHILE(self): - return self.getToken(Java8Parser.WHILE, 0) - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def expression(self): - return self.getTypedRuleContext(Java8Parser.ExpressionContext,0) - - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def statementNoShortIf(self): - return self.getTypedRuleContext(Java8Parser.StatementNoShortIfContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_whileStatementNoShortIf - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterWhileStatementNoShortIf" ): - listener.enterWhileStatementNoShortIf(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitWhileStatementNoShortIf" ): - listener.exitWhileStatementNoShortIf(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitWhileStatementNoShortIf" ): - return visitor.visitWhileStatementNoShortIf(self) - else: - return visitor.visitChildren(self) - - - - - def whileStatementNoShortIf(self): - - localctx = Java8Parser.WhileStatementNoShortIfContext(self, self._ctx, self.state) - self.enterRule(localctx, 298, self.RULE_whileStatementNoShortIf) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1640 - self.match(Java8Parser.WHILE) - self.state = 1641 - self.match(Java8Parser.LPAREN) - self.state = 1642 - self.expression() - self.state = 1643 - self.match(Java8Parser.RPAREN) - self.state = 1644 - self.statementNoShortIf() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DoStatementContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DO(self): - return self.getToken(Java8Parser.DO, 0) - - def statement(self): - return self.getTypedRuleContext(Java8Parser.StatementContext,0) - - - def WHILE(self): - return self.getToken(Java8Parser.WHILE, 0) - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def expression(self): - return self.getTypedRuleContext(Java8Parser.ExpressionContext,0) - - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def SEMI(self): - return self.getToken(Java8Parser.SEMI, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_doStatement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDoStatement" ): - listener.enterDoStatement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDoStatement" ): - listener.exitDoStatement(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDoStatement" ): - return visitor.visitDoStatement(self) - else: - return visitor.visitChildren(self) - - - - - def doStatement(self): - - localctx = Java8Parser.DoStatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 300, self.RULE_doStatement) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1646 - self.match(Java8Parser.DO) - self.state = 1647 - self.statement() - self.state = 1648 - self.match(Java8Parser.WHILE) - self.state = 1649 - self.match(Java8Parser.LPAREN) - self.state = 1650 - self.expression() - self.state = 1651 - self.match(Java8Parser.RPAREN) - self.state = 1652 - self.match(Java8Parser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ForStatementContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def basicForStatement(self): - return self.getTypedRuleContext(Java8Parser.BasicForStatementContext,0) - - - def enhancedForStatement(self): - return self.getTypedRuleContext(Java8Parser.EnhancedForStatementContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_forStatement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterForStatement" ): - listener.enterForStatement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitForStatement" ): - listener.exitForStatement(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitForStatement" ): - return visitor.visitForStatement(self) - else: - return visitor.visitChildren(self) - - - - - def forStatement(self): - - localctx = Java8Parser.ForStatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 302, self.RULE_forStatement) - try: - self.state = 1656 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,164,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1654 - self.basicForStatement() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1655 - self.enhancedForStatement() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ForStatementNoShortIfContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def basicForStatementNoShortIf(self): - return self.getTypedRuleContext(Java8Parser.BasicForStatementNoShortIfContext,0) - - - def enhancedForStatementNoShortIf(self): - return self.getTypedRuleContext(Java8Parser.EnhancedForStatementNoShortIfContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_forStatementNoShortIf - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterForStatementNoShortIf" ): - listener.enterForStatementNoShortIf(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitForStatementNoShortIf" ): - listener.exitForStatementNoShortIf(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitForStatementNoShortIf" ): - return visitor.visitForStatementNoShortIf(self) - else: - return visitor.visitChildren(self) - - - - - def forStatementNoShortIf(self): - - localctx = Java8Parser.ForStatementNoShortIfContext(self, self._ctx, self.state) - self.enterRule(localctx, 304, self.RULE_forStatementNoShortIf) - try: - self.state = 1660 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,165,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1658 - self.basicForStatementNoShortIf() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1659 - self.enhancedForStatementNoShortIf() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class BasicForStatementContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FOR(self): - return self.getToken(Java8Parser.FOR, 0) - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def SEMI(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.SEMI) - else: - return self.getToken(Java8Parser.SEMI, i) - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def statement(self): - return self.getTypedRuleContext(Java8Parser.StatementContext,0) - - - def forInit(self): - return self.getTypedRuleContext(Java8Parser.ForInitContext,0) - - - def expression(self): - return self.getTypedRuleContext(Java8Parser.ExpressionContext,0) - - - def forUpdate(self): - return self.getTypedRuleContext(Java8Parser.ForUpdateContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_basicForStatement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterBasicForStatement" ): - listener.enterBasicForStatement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitBasicForStatement" ): - listener.exitBasicForStatement(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitBasicForStatement" ): - return visitor.visitBasicForStatement(self) - else: - return visitor.visitChildren(self) - - - - - def basicForStatement(self): - - localctx = Java8Parser.BasicForStatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 306, self.RULE_basicForStatement) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1662 - self.match(Java8Parser.FOR) - self.state = 1663 - self.match(Java8Parser.LPAREN) - self.state = 1665 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 79)) & ~0x3f) == 0 and ((1 << (_la - 79)) & ((1 << (Java8Parser.INC - 79)) | (1 << (Java8Parser.DEC - 79)) | (1 << (Java8Parser.Identifier - 79)) | (1 << (Java8Parser.AT - 79)))) != 0): - self.state = 1664 - self.forInit() - - - self.state = 1667 - self.match(Java8Parser.SEMI) - self.state = 1669 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): - self.state = 1668 - self.expression() - - - self.state = 1671 - self.match(Java8Parser.SEMI) - self.state = 1673 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 79)) & ~0x3f) == 0 and ((1 << (_la - 79)) & ((1 << (Java8Parser.INC - 79)) | (1 << (Java8Parser.DEC - 79)) | (1 << (Java8Parser.Identifier - 79)) | (1 << (Java8Parser.AT - 79)))) != 0): - self.state = 1672 - self.forUpdate() - - - self.state = 1675 - self.match(Java8Parser.RPAREN) - self.state = 1676 - self.statement() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class BasicForStatementNoShortIfContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FOR(self): - return self.getToken(Java8Parser.FOR, 0) - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def SEMI(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.SEMI) - else: - return self.getToken(Java8Parser.SEMI, i) - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def statementNoShortIf(self): - return self.getTypedRuleContext(Java8Parser.StatementNoShortIfContext,0) - - - def forInit(self): - return self.getTypedRuleContext(Java8Parser.ForInitContext,0) - - - def expression(self): - return self.getTypedRuleContext(Java8Parser.ExpressionContext,0) - - - def forUpdate(self): - return self.getTypedRuleContext(Java8Parser.ForUpdateContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_basicForStatementNoShortIf - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterBasicForStatementNoShortIf" ): - listener.enterBasicForStatementNoShortIf(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitBasicForStatementNoShortIf" ): - listener.exitBasicForStatementNoShortIf(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitBasicForStatementNoShortIf" ): - return visitor.visitBasicForStatementNoShortIf(self) - else: - return visitor.visitChildren(self) - - - - - def basicForStatementNoShortIf(self): - - localctx = Java8Parser.BasicForStatementNoShortIfContext(self, self._ctx, self.state) - self.enterRule(localctx, 308, self.RULE_basicForStatementNoShortIf) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1678 - self.match(Java8Parser.FOR) - self.state = 1679 - self.match(Java8Parser.LPAREN) - self.state = 1681 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 79)) & ~0x3f) == 0 and ((1 << (_la - 79)) & ((1 << (Java8Parser.INC - 79)) | (1 << (Java8Parser.DEC - 79)) | (1 << (Java8Parser.Identifier - 79)) | (1 << (Java8Parser.AT - 79)))) != 0): - self.state = 1680 - self.forInit() - - - self.state = 1683 - self.match(Java8Parser.SEMI) - self.state = 1685 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): - self.state = 1684 - self.expression() - - - self.state = 1687 - self.match(Java8Parser.SEMI) - self.state = 1689 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 79)) & ~0x3f) == 0 and ((1 << (_la - 79)) & ((1 << (Java8Parser.INC - 79)) | (1 << (Java8Parser.DEC - 79)) | (1 << (Java8Parser.Identifier - 79)) | (1 << (Java8Parser.AT - 79)))) != 0): - self.state = 1688 - self.forUpdate() - - - self.state = 1691 - self.match(Java8Parser.RPAREN) - self.state = 1692 - self.statementNoShortIf() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ForInitContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def statementExpressionList(self): - return self.getTypedRuleContext(Java8Parser.StatementExpressionListContext,0) - - - def localVariableDeclaration(self): - return self.getTypedRuleContext(Java8Parser.LocalVariableDeclarationContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_forInit - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterForInit" ): - listener.enterForInit(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitForInit" ): - listener.exitForInit(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitForInit" ): - return visitor.visitForInit(self) - else: - return visitor.visitChildren(self) - - - - - def forInit(self): - - localctx = Java8Parser.ForInitContext(self, self._ctx, self.state) - self.enterRule(localctx, 310, self.RULE_forInit) - try: - self.state = 1696 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,172,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1694 - self.statementExpressionList() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1695 - self.localVariableDeclaration() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ForUpdateContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def statementExpressionList(self): - return self.getTypedRuleContext(Java8Parser.StatementExpressionListContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_forUpdate - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterForUpdate" ): - listener.enterForUpdate(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitForUpdate" ): - listener.exitForUpdate(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitForUpdate" ): - return visitor.visitForUpdate(self) - else: - return visitor.visitChildren(self) - - - - - def forUpdate(self): - - localctx = Java8Parser.ForUpdateContext(self, self._ctx, self.state) - self.enterRule(localctx, 312, self.RULE_forUpdate) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1698 - self.statementExpressionList() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class StatementExpressionListContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def statementExpression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.StatementExpressionContext) - else: - return self.getTypedRuleContext(Java8Parser.StatementExpressionContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.COMMA) - else: - return self.getToken(Java8Parser.COMMA, i) - - def getRuleIndex(self): - return Java8Parser.RULE_statementExpressionList - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStatementExpressionList" ): - listener.enterStatementExpressionList(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStatementExpressionList" ): - listener.exitStatementExpressionList(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStatementExpressionList" ): - return visitor.visitStatementExpressionList(self) - else: - return visitor.visitChildren(self) - - - - - def statementExpressionList(self): - - localctx = Java8Parser.StatementExpressionListContext(self, self._ctx, self.state) - self.enterRule(localctx, 314, self.RULE_statementExpressionList) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1700 - self.statementExpression() - self.state = 1705 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.COMMA: - self.state = 1701 - self.match(Java8Parser.COMMA) - self.state = 1702 - self.statementExpression() - self.state = 1707 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class EnhancedForStatementContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FOR(self): - return self.getToken(Java8Parser.FOR, 0) - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def unannType(self): - return self.getTypedRuleContext(Java8Parser.UnannTypeContext,0) - - - def variableDeclaratorId(self): - return self.getTypedRuleContext(Java8Parser.VariableDeclaratorIdContext,0) - - - def COLON(self): - return self.getToken(Java8Parser.COLON, 0) - - def expression(self): - return self.getTypedRuleContext(Java8Parser.ExpressionContext,0) - - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def statement(self): - return self.getTypedRuleContext(Java8Parser.StatementContext,0) - - - def variableModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.VariableModifierContext) - else: - return self.getTypedRuleContext(Java8Parser.VariableModifierContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_enhancedForStatement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEnhancedForStatement" ): - listener.enterEnhancedForStatement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEnhancedForStatement" ): - listener.exitEnhancedForStatement(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEnhancedForStatement" ): - return visitor.visitEnhancedForStatement(self) - else: - return visitor.visitChildren(self) - - - - - def enhancedForStatement(self): - - localctx = Java8Parser.EnhancedForStatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 316, self.RULE_enhancedForStatement) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1708 - self.match(Java8Parser.FOR) - self.state = 1709 - self.match(Java8Parser.LPAREN) - self.state = 1713 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.FINAL or _la==Java8Parser.AT: - self.state = 1710 - self.variableModifier() - self.state = 1715 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1716 - self.unannType() - self.state = 1717 - self.variableDeclaratorId() - self.state = 1718 - self.match(Java8Parser.COLON) - self.state = 1719 - self.expression() - self.state = 1720 - self.match(Java8Parser.RPAREN) - self.state = 1721 - self.statement() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class EnhancedForStatementNoShortIfContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FOR(self): - return self.getToken(Java8Parser.FOR, 0) - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def unannType(self): - return self.getTypedRuleContext(Java8Parser.UnannTypeContext,0) - - - def variableDeclaratorId(self): - return self.getTypedRuleContext(Java8Parser.VariableDeclaratorIdContext,0) - - - def COLON(self): - return self.getToken(Java8Parser.COLON, 0) - - def expression(self): - return self.getTypedRuleContext(Java8Parser.ExpressionContext,0) - - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def statementNoShortIf(self): - return self.getTypedRuleContext(Java8Parser.StatementNoShortIfContext,0) - - - def variableModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.VariableModifierContext) - else: - return self.getTypedRuleContext(Java8Parser.VariableModifierContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_enhancedForStatementNoShortIf - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEnhancedForStatementNoShortIf" ): - listener.enterEnhancedForStatementNoShortIf(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEnhancedForStatementNoShortIf" ): - listener.exitEnhancedForStatementNoShortIf(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEnhancedForStatementNoShortIf" ): - return visitor.visitEnhancedForStatementNoShortIf(self) - else: - return visitor.visitChildren(self) - - - - - def enhancedForStatementNoShortIf(self): - - localctx = Java8Parser.EnhancedForStatementNoShortIfContext(self, self._ctx, self.state) - self.enterRule(localctx, 318, self.RULE_enhancedForStatementNoShortIf) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1723 - self.match(Java8Parser.FOR) - self.state = 1724 - self.match(Java8Parser.LPAREN) - self.state = 1728 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.FINAL or _la==Java8Parser.AT: - self.state = 1725 - self.variableModifier() - self.state = 1730 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1731 - self.unannType() - self.state = 1732 - self.variableDeclaratorId() - self.state = 1733 - self.match(Java8Parser.COLON) - self.state = 1734 - self.expression() - self.state = 1735 - self.match(Java8Parser.RPAREN) - self.state = 1736 - self.statementNoShortIf() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class BreakStatementContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def BREAK(self): - return self.getToken(Java8Parser.BREAK, 0) - - def SEMI(self): - return self.getToken(Java8Parser.SEMI, 0) - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_breakStatement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterBreakStatement" ): - listener.enterBreakStatement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitBreakStatement" ): - listener.exitBreakStatement(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitBreakStatement" ): - return visitor.visitBreakStatement(self) - else: - return visitor.visitChildren(self) - - - - - def breakStatement(self): - - localctx = Java8Parser.BreakStatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 320, self.RULE_breakStatement) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1738 - self.match(Java8Parser.BREAK) - self.state = 1740 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.Identifier: - self.state = 1739 - self.match(Java8Parser.Identifier) - - - self.state = 1742 - self.match(Java8Parser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ContinueStatementContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CONTINUE(self): - return self.getToken(Java8Parser.CONTINUE, 0) - - def SEMI(self): - return self.getToken(Java8Parser.SEMI, 0) - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_continueStatement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterContinueStatement" ): - listener.enterContinueStatement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitContinueStatement" ): - listener.exitContinueStatement(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitContinueStatement" ): - return visitor.visitContinueStatement(self) - else: - return visitor.visitChildren(self) - - - - - def continueStatement(self): - - localctx = Java8Parser.ContinueStatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 322, self.RULE_continueStatement) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1744 - self.match(Java8Parser.CONTINUE) - self.state = 1746 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.Identifier: - self.state = 1745 - self.match(Java8Parser.Identifier) - - - self.state = 1748 - self.match(Java8Parser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ReturnStatementContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def RETURN(self): - return self.getToken(Java8Parser.RETURN, 0) - - def SEMI(self): - return self.getToken(Java8Parser.SEMI, 0) - - def expression(self): - return self.getTypedRuleContext(Java8Parser.ExpressionContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_returnStatement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterReturnStatement" ): - listener.enterReturnStatement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitReturnStatement" ): - listener.exitReturnStatement(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitReturnStatement" ): - return visitor.visitReturnStatement(self) - else: - return visitor.visitChildren(self) - - - - - def returnStatement(self): - - localctx = Java8Parser.ReturnStatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 324, self.RULE_returnStatement) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1750 - self.match(Java8Parser.RETURN) - self.state = 1752 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): - self.state = 1751 - self.expression() - - - self.state = 1754 - self.match(Java8Parser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ThrowStatementContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def THROW(self): - return self.getToken(Java8Parser.THROW, 0) - - def expression(self): - return self.getTypedRuleContext(Java8Parser.ExpressionContext,0) - - - def SEMI(self): - return self.getToken(Java8Parser.SEMI, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_throwStatement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterThrowStatement" ): - listener.enterThrowStatement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitThrowStatement" ): - listener.exitThrowStatement(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitThrowStatement" ): - return visitor.visitThrowStatement(self) - else: - return visitor.visitChildren(self) - - - - - def throwStatement(self): - - localctx = Java8Parser.ThrowStatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 326, self.RULE_throwStatement) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1756 - self.match(Java8Parser.THROW) - self.state = 1757 - self.expression() - self.state = 1758 - self.match(Java8Parser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class SynchronizedStatementContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def SYNCHRONIZED(self): - return self.getToken(Java8Parser.SYNCHRONIZED, 0) - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def expression(self): - return self.getTypedRuleContext(Java8Parser.ExpressionContext,0) - - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def block(self): - return self.getTypedRuleContext(Java8Parser.BlockContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_synchronizedStatement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSynchronizedStatement" ): - listener.enterSynchronizedStatement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSynchronizedStatement" ): - listener.exitSynchronizedStatement(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSynchronizedStatement" ): - return visitor.visitSynchronizedStatement(self) - else: - return visitor.visitChildren(self) - - - - - def synchronizedStatement(self): - - localctx = Java8Parser.SynchronizedStatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 328, self.RULE_synchronizedStatement) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1760 - self.match(Java8Parser.SYNCHRONIZED) - self.state = 1761 - self.match(Java8Parser.LPAREN) - self.state = 1762 - self.expression() - self.state = 1763 - self.match(Java8Parser.RPAREN) - self.state = 1764 - self.block() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TryStatementContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def TRY(self): - return self.getToken(Java8Parser.TRY, 0) - - def block(self): - return self.getTypedRuleContext(Java8Parser.BlockContext,0) - - - def catches(self): - return self.getTypedRuleContext(Java8Parser.CatchesContext,0) - - - def finally_(self): - return self.getTypedRuleContext(Java8Parser.Finally_Context,0) - - - def tryWithResourcesStatement(self): - return self.getTypedRuleContext(Java8Parser.TryWithResourcesStatementContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_tryStatement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTryStatement" ): - listener.enterTryStatement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTryStatement" ): - listener.exitTryStatement(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTryStatement" ): - return visitor.visitTryStatement(self) - else: - return visitor.visitChildren(self) - - - - - def tryStatement(self): - - localctx = Java8Parser.TryStatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 330, self.RULE_tryStatement) - self._la = 0 # Token type - try: - self.state = 1778 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,180,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1766 - self.match(Java8Parser.TRY) - self.state = 1767 - self.block() - self.state = 1768 - self.catches() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1770 - self.match(Java8Parser.TRY) - self.state = 1771 - self.block() - self.state = 1773 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.CATCH: - self.state = 1772 - self.catches() - - - self.state = 1775 - self.finally_() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1777 - self.tryWithResourcesStatement() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CatchesContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def catchClause(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.CatchClauseContext) - else: - return self.getTypedRuleContext(Java8Parser.CatchClauseContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_catches - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCatches" ): - listener.enterCatches(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCatches" ): - listener.exitCatches(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCatches" ): - return visitor.visitCatches(self) - else: - return visitor.visitChildren(self) - - - - - def catches(self): - - localctx = Java8Parser.CatchesContext(self, self._ctx, self.state) - self.enterRule(localctx, 332, self.RULE_catches) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1780 - self.catchClause() - self.state = 1784 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.CATCH: - self.state = 1781 - self.catchClause() - self.state = 1786 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CatchClauseContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CATCH(self): - return self.getToken(Java8Parser.CATCH, 0) - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def catchFormalParameter(self): - return self.getTypedRuleContext(Java8Parser.CatchFormalParameterContext,0) - - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def block(self): - return self.getTypedRuleContext(Java8Parser.BlockContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_catchClause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCatchClause" ): - listener.enterCatchClause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCatchClause" ): - listener.exitCatchClause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCatchClause" ): - return visitor.visitCatchClause(self) - else: - return visitor.visitChildren(self) - - - - - def catchClause(self): - - localctx = Java8Parser.CatchClauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 334, self.RULE_catchClause) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1787 - self.match(Java8Parser.CATCH) - self.state = 1788 - self.match(Java8Parser.LPAREN) - self.state = 1789 - self.catchFormalParameter() - self.state = 1790 - self.match(Java8Parser.RPAREN) - self.state = 1791 - self.block() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CatchFormalParameterContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def catchType(self): - return self.getTypedRuleContext(Java8Parser.CatchTypeContext,0) - - - def variableDeclaratorId(self): - return self.getTypedRuleContext(Java8Parser.VariableDeclaratorIdContext,0) - - - def variableModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.VariableModifierContext) - else: - return self.getTypedRuleContext(Java8Parser.VariableModifierContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_catchFormalParameter - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCatchFormalParameter" ): - listener.enterCatchFormalParameter(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCatchFormalParameter" ): - listener.exitCatchFormalParameter(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCatchFormalParameter" ): - return visitor.visitCatchFormalParameter(self) - else: - return visitor.visitChildren(self) - - - - - def catchFormalParameter(self): - - localctx = Java8Parser.CatchFormalParameterContext(self, self._ctx, self.state) - self.enterRule(localctx, 336, self.RULE_catchFormalParameter) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1796 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.FINAL or _la==Java8Parser.AT: - self.state = 1793 - self.variableModifier() - self.state = 1798 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1799 - self.catchType() - self.state = 1800 - self.variableDeclaratorId() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CatchTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def unannClassType(self): - return self.getTypedRuleContext(Java8Parser.UnannClassTypeContext,0) - - - def BITOR(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.BITOR) - else: - return self.getToken(Java8Parser.BITOR, i) - - def classType(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.ClassTypeContext) - else: - return self.getTypedRuleContext(Java8Parser.ClassTypeContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_catchType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCatchType" ): - listener.enterCatchType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCatchType" ): - listener.exitCatchType(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCatchType" ): - return visitor.visitCatchType(self) - else: - return visitor.visitChildren(self) - - - - - def catchType(self): - - localctx = Java8Parser.CatchTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 338, self.RULE_catchType) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1802 - self.unannClassType() - self.state = 1807 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.BITOR: - self.state = 1803 - self.match(Java8Parser.BITOR) - self.state = 1804 - self.classType() - self.state = 1809 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Finally_Context(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FINALLY(self): - return self.getToken(Java8Parser.FINALLY, 0) - - def block(self): - return self.getTypedRuleContext(Java8Parser.BlockContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_finally_ - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFinally_" ): - listener.enterFinally_(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFinally_" ): - listener.exitFinally_(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFinally_" ): - return visitor.visitFinally_(self) - else: - return visitor.visitChildren(self) - - - - - def finally_(self): - - localctx = Java8Parser.Finally_Context(self, self._ctx, self.state) - self.enterRule(localctx, 340, self.RULE_finally_) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1810 - self.match(Java8Parser.FINALLY) - self.state = 1811 - self.block() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TryWithResourcesStatementContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def TRY(self): - return self.getToken(Java8Parser.TRY, 0) - - def resourceSpecification(self): - return self.getTypedRuleContext(Java8Parser.ResourceSpecificationContext,0) - - - def block(self): - return self.getTypedRuleContext(Java8Parser.BlockContext,0) - - - def catches(self): - return self.getTypedRuleContext(Java8Parser.CatchesContext,0) - - - def finally_(self): - return self.getTypedRuleContext(Java8Parser.Finally_Context,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_tryWithResourcesStatement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTryWithResourcesStatement" ): - listener.enterTryWithResourcesStatement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTryWithResourcesStatement" ): - listener.exitTryWithResourcesStatement(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTryWithResourcesStatement" ): - return visitor.visitTryWithResourcesStatement(self) - else: - return visitor.visitChildren(self) - - - - - def tryWithResourcesStatement(self): - - localctx = Java8Parser.TryWithResourcesStatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 342, self.RULE_tryWithResourcesStatement) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1813 - self.match(Java8Parser.TRY) - self.state = 1814 - self.resourceSpecification() - self.state = 1815 - self.block() - self.state = 1817 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.CATCH: - self.state = 1816 - self.catches() - - - self.state = 1820 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.FINALLY: - self.state = 1819 - self.finally_() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ResourceSpecificationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def resourceList(self): - return self.getTypedRuleContext(Java8Parser.ResourceListContext,0) - - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def SEMI(self): - return self.getToken(Java8Parser.SEMI, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_resourceSpecification - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterResourceSpecification" ): - listener.enterResourceSpecification(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitResourceSpecification" ): - listener.exitResourceSpecification(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitResourceSpecification" ): - return visitor.visitResourceSpecification(self) - else: - return visitor.visitChildren(self) - - - - - def resourceSpecification(self): - - localctx = Java8Parser.ResourceSpecificationContext(self, self._ctx, self.state) - self.enterRule(localctx, 344, self.RULE_resourceSpecification) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1822 - self.match(Java8Parser.LPAREN) - self.state = 1823 - self.resourceList() - self.state = 1825 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.SEMI: - self.state = 1824 - self.match(Java8Parser.SEMI) - - - self.state = 1827 - self.match(Java8Parser.RPAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ResourceListContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def resource(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.ResourceContext) - else: - return self.getTypedRuleContext(Java8Parser.ResourceContext,i) - - - def SEMI(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.SEMI) - else: - return self.getToken(Java8Parser.SEMI, i) - - def getRuleIndex(self): - return Java8Parser.RULE_resourceList - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterResourceList" ): - listener.enterResourceList(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitResourceList" ): - listener.exitResourceList(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitResourceList" ): - return visitor.visitResourceList(self) - else: - return visitor.visitChildren(self) - - - - - def resourceList(self): - - localctx = Java8Parser.ResourceListContext(self, self._ctx, self.state) - self.enterRule(localctx, 346, self.RULE_resourceList) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1829 - self.resource() - self.state = 1834 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,187,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 1830 - self.match(Java8Parser.SEMI) - self.state = 1831 - self.resource() - self.state = 1836 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,187,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ResourceContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def unannType(self): - return self.getTypedRuleContext(Java8Parser.UnannTypeContext,0) - - - def variableDeclaratorId(self): - return self.getTypedRuleContext(Java8Parser.VariableDeclaratorIdContext,0) - - - def ASSIGN(self): - return self.getToken(Java8Parser.ASSIGN, 0) - - def expression(self): - return self.getTypedRuleContext(Java8Parser.ExpressionContext,0) - - - def variableModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.VariableModifierContext) - else: - return self.getTypedRuleContext(Java8Parser.VariableModifierContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_resource - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterResource" ): - listener.enterResource(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitResource" ): - listener.exitResource(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitResource" ): - return visitor.visitResource(self) - else: - return visitor.visitChildren(self) - - - - - def resource(self): - - localctx = Java8Parser.ResourceContext(self, self._ctx, self.state) - self.enterRule(localctx, 348, self.RULE_resource) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1840 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.FINAL or _la==Java8Parser.AT: - self.state = 1837 - self.variableModifier() - self.state = 1842 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1843 - self.unannType() - self.state = 1844 - self.variableDeclaratorId() - self.state = 1845 - self.match(Java8Parser.ASSIGN) - self.state = 1846 - self.expression() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PrimaryContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def primaryNoNewArray_lfno_primary(self): - return self.getTypedRuleContext(Java8Parser.PrimaryNoNewArray_lfno_primaryContext,0) - - - def arrayCreationExpression(self): - return self.getTypedRuleContext(Java8Parser.ArrayCreationExpressionContext,0) - - - def primaryNoNewArray_lf_primary(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.PrimaryNoNewArray_lf_primaryContext) - else: - return self.getTypedRuleContext(Java8Parser.PrimaryNoNewArray_lf_primaryContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_primary - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPrimary" ): - listener.enterPrimary(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPrimary" ): - listener.exitPrimary(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPrimary" ): - return visitor.visitPrimary(self) - else: - return visitor.visitChildren(self) - - - - - def primary(self): - - localctx = Java8Parser.PrimaryContext(self, self._ctx, self.state) - self.enterRule(localctx, 350, self.RULE_primary) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1850 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,189,self._ctx) - if la_ == 1: - self.state = 1848 - self.primaryNoNewArray_lfno_primary() - pass - - elif la_ == 2: - self.state = 1849 - self.arrayCreationExpression() - pass - - - self.state = 1855 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,190,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 1852 - self.primaryNoNewArray_lf_primary() - self.state = 1857 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,190,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PrimaryNoNewArrayContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def literal(self): - return self.getTypedRuleContext(Java8Parser.LiteralContext,0) - - - def typeName(self): - return self.getTypedRuleContext(Java8Parser.TypeNameContext,0) - - - def DOT(self): - return self.getToken(Java8Parser.DOT, 0) - - def CLASS(self): - return self.getToken(Java8Parser.CLASS, 0) - - def LBRACK(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.LBRACK) - else: - return self.getToken(Java8Parser.LBRACK, i) - - def RBRACK(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.RBRACK) - else: - return self.getToken(Java8Parser.RBRACK, i) - - def VOID(self): - return self.getToken(Java8Parser.VOID, 0) - - def THIS(self): - return self.getToken(Java8Parser.THIS, 0) - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def expression(self): - return self.getTypedRuleContext(Java8Parser.ExpressionContext,0) - - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def classInstanceCreationExpression(self): - return self.getTypedRuleContext(Java8Parser.ClassInstanceCreationExpressionContext,0) - - - def fieldAccess(self): - return self.getTypedRuleContext(Java8Parser.FieldAccessContext,0) - - - def arrayAccess(self): - return self.getTypedRuleContext(Java8Parser.ArrayAccessContext,0) - - - def methodInvocation(self): - return self.getTypedRuleContext(Java8Parser.MethodInvocationContext,0) - - - def methodReference(self): - return self.getTypedRuleContext(Java8Parser.MethodReferenceContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_primaryNoNewArray - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPrimaryNoNewArray" ): - listener.enterPrimaryNoNewArray(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPrimaryNoNewArray" ): - listener.exitPrimaryNoNewArray(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPrimaryNoNewArray" ): - return visitor.visitPrimaryNoNewArray(self) - else: - return visitor.visitChildren(self) - - - - - def primaryNoNewArray(self): - - localctx = Java8Parser.PrimaryNoNewArrayContext(self, self._ctx, self.state) - self.enterRule(localctx, 352, self.RULE_primaryNoNewArray) - self._la = 0 # Token type - try: - self.state = 1887 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,192,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1858 - self.literal() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1859 - self.typeName() - self.state = 1864 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.LBRACK: - self.state = 1860 - self.match(Java8Parser.LBRACK) - self.state = 1861 - self.match(Java8Parser.RBRACK) - self.state = 1866 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1867 - self.match(Java8Parser.DOT) - self.state = 1868 - self.match(Java8Parser.CLASS) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1870 - self.match(Java8Parser.VOID) - self.state = 1871 - self.match(Java8Parser.DOT) - self.state = 1872 - self.match(Java8Parser.CLASS) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 1873 - self.match(Java8Parser.THIS) - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 1874 - self.typeName() - self.state = 1875 - self.match(Java8Parser.DOT) - self.state = 1876 - self.match(Java8Parser.THIS) - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 1878 - self.match(Java8Parser.LPAREN) - self.state = 1879 - self.expression() - self.state = 1880 - self.match(Java8Parser.RPAREN) - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 1882 - self.classInstanceCreationExpression() - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 1883 - self.fieldAccess() - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 1884 - self.arrayAccess() - pass - - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 1885 - self.methodInvocation() - pass - - elif la_ == 11: - self.enterOuterAlt(localctx, 11) - self.state = 1886 - self.methodReference() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PrimaryNoNewArray_lf_arrayAccessContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return Java8Parser.RULE_primaryNoNewArray_lf_arrayAccess - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPrimaryNoNewArray_lf_arrayAccess" ): - listener.enterPrimaryNoNewArray_lf_arrayAccess(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPrimaryNoNewArray_lf_arrayAccess" ): - listener.exitPrimaryNoNewArray_lf_arrayAccess(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPrimaryNoNewArray_lf_arrayAccess" ): - return visitor.visitPrimaryNoNewArray_lf_arrayAccess(self) - else: - return visitor.visitChildren(self) - - - - - def primaryNoNewArray_lf_arrayAccess(self): - - localctx = Java8Parser.PrimaryNoNewArray_lf_arrayAccessContext(self, self._ctx, self.state) - self.enterRule(localctx, 354, self.RULE_primaryNoNewArray_lf_arrayAccess) - try: - self.enterOuterAlt(localctx, 1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PrimaryNoNewArray_lfno_arrayAccessContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def literal(self): - return self.getTypedRuleContext(Java8Parser.LiteralContext,0) - - - def typeName(self): - return self.getTypedRuleContext(Java8Parser.TypeNameContext,0) - - - def DOT(self): - return self.getToken(Java8Parser.DOT, 0) - - def CLASS(self): - return self.getToken(Java8Parser.CLASS, 0) - - def LBRACK(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.LBRACK) - else: - return self.getToken(Java8Parser.LBRACK, i) - - def RBRACK(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.RBRACK) - else: - return self.getToken(Java8Parser.RBRACK, i) - - def VOID(self): - return self.getToken(Java8Parser.VOID, 0) - - def THIS(self): - return self.getToken(Java8Parser.THIS, 0) - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def expression(self): - return self.getTypedRuleContext(Java8Parser.ExpressionContext,0) - - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def classInstanceCreationExpression(self): - return self.getTypedRuleContext(Java8Parser.ClassInstanceCreationExpressionContext,0) - - - def fieldAccess(self): - return self.getTypedRuleContext(Java8Parser.FieldAccessContext,0) - - - def methodInvocation(self): - return self.getTypedRuleContext(Java8Parser.MethodInvocationContext,0) - - - def methodReference(self): - return self.getTypedRuleContext(Java8Parser.MethodReferenceContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_primaryNoNewArray_lfno_arrayAccess - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPrimaryNoNewArray_lfno_arrayAccess" ): - listener.enterPrimaryNoNewArray_lfno_arrayAccess(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPrimaryNoNewArray_lfno_arrayAccess" ): - listener.exitPrimaryNoNewArray_lfno_arrayAccess(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPrimaryNoNewArray_lfno_arrayAccess" ): - return visitor.visitPrimaryNoNewArray_lfno_arrayAccess(self) - else: - return visitor.visitChildren(self) - - - - - def primaryNoNewArray_lfno_arrayAccess(self): - - localctx = Java8Parser.PrimaryNoNewArray_lfno_arrayAccessContext(self, self._ctx, self.state) - self.enterRule(localctx, 356, self.RULE_primaryNoNewArray_lfno_arrayAccess) - self._la = 0 # Token type - try: - self.state = 1919 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,194,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1891 - self.literal() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1892 - self.typeName() - self.state = 1897 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.LBRACK: - self.state = 1893 - self.match(Java8Parser.LBRACK) - self.state = 1894 - self.match(Java8Parser.RBRACK) - self.state = 1899 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1900 - self.match(Java8Parser.DOT) - self.state = 1901 - self.match(Java8Parser.CLASS) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1903 - self.match(Java8Parser.VOID) - self.state = 1904 - self.match(Java8Parser.DOT) - self.state = 1905 - self.match(Java8Parser.CLASS) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 1906 - self.match(Java8Parser.THIS) - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 1907 - self.typeName() - self.state = 1908 - self.match(Java8Parser.DOT) - self.state = 1909 - self.match(Java8Parser.THIS) - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 1911 - self.match(Java8Parser.LPAREN) - self.state = 1912 - self.expression() - self.state = 1913 - self.match(Java8Parser.RPAREN) - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 1915 - self.classInstanceCreationExpression() - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 1916 - self.fieldAccess() - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 1917 - self.methodInvocation() - pass - - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 1918 - self.methodReference() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PrimaryNoNewArray_lf_primaryContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def classInstanceCreationExpression_lf_primary(self): - return self.getTypedRuleContext(Java8Parser.ClassInstanceCreationExpression_lf_primaryContext,0) - - - def fieldAccess_lf_primary(self): - return self.getTypedRuleContext(Java8Parser.FieldAccess_lf_primaryContext,0) - - - def arrayAccess_lf_primary(self): - return self.getTypedRuleContext(Java8Parser.ArrayAccess_lf_primaryContext,0) - - - def methodInvocation_lf_primary(self): - return self.getTypedRuleContext(Java8Parser.MethodInvocation_lf_primaryContext,0) - - - def methodReference_lf_primary(self): - return self.getTypedRuleContext(Java8Parser.MethodReference_lf_primaryContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_primaryNoNewArray_lf_primary - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPrimaryNoNewArray_lf_primary" ): - listener.enterPrimaryNoNewArray_lf_primary(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPrimaryNoNewArray_lf_primary" ): - listener.exitPrimaryNoNewArray_lf_primary(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPrimaryNoNewArray_lf_primary" ): - return visitor.visitPrimaryNoNewArray_lf_primary(self) - else: - return visitor.visitChildren(self) - - - - - def primaryNoNewArray_lf_primary(self): - - localctx = Java8Parser.PrimaryNoNewArray_lf_primaryContext(self, self._ctx, self.state) - self.enterRule(localctx, 358, self.RULE_primaryNoNewArray_lf_primary) - try: - self.state = 1926 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,195,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1921 - self.classInstanceCreationExpression_lf_primary() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1922 - self.fieldAccess_lf_primary() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1923 - self.arrayAccess_lf_primary() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 1924 - self.methodInvocation_lf_primary() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 1925 - self.methodReference_lf_primary() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return Java8Parser.RULE_primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary" ): - listener.enterPrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary" ): - listener.exitPrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary" ): - return visitor.visitPrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(self) - else: - return visitor.visitChildren(self) - - - - - def primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(self): - - localctx = Java8Parser.PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext(self, self._ctx, self.state) - self.enterRule(localctx, 360, self.RULE_primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary) - try: - self.enterOuterAlt(localctx, 1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def classInstanceCreationExpression_lf_primary(self): - return self.getTypedRuleContext(Java8Parser.ClassInstanceCreationExpression_lf_primaryContext,0) - - - def fieldAccess_lf_primary(self): - return self.getTypedRuleContext(Java8Parser.FieldAccess_lf_primaryContext,0) - - - def methodInvocation_lf_primary(self): - return self.getTypedRuleContext(Java8Parser.MethodInvocation_lf_primaryContext,0) - - - def methodReference_lf_primary(self): - return self.getTypedRuleContext(Java8Parser.MethodReference_lf_primaryContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary" ): - listener.enterPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary" ): - listener.exitPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary" ): - return visitor.visitPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(self) - else: - return visitor.visitChildren(self) - - - - - def primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(self): - - localctx = Java8Parser.PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext(self, self._ctx, self.state) - self.enterRule(localctx, 362, self.RULE_primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary) - try: - self.state = 1934 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,196,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1930 - self.classInstanceCreationExpression_lf_primary() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1931 - self.fieldAccess_lf_primary() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1932 - self.methodInvocation_lf_primary() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 1933 - self.methodReference_lf_primary() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PrimaryNoNewArray_lfno_primaryContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def literal(self): - return self.getTypedRuleContext(Java8Parser.LiteralContext,0) - - - def typeName(self): - return self.getTypedRuleContext(Java8Parser.TypeNameContext,0) - - - def DOT(self): - return self.getToken(Java8Parser.DOT, 0) - - def CLASS(self): - return self.getToken(Java8Parser.CLASS, 0) - - def LBRACK(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.LBRACK) - else: - return self.getToken(Java8Parser.LBRACK, i) - - def RBRACK(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.RBRACK) - else: - return self.getToken(Java8Parser.RBRACK, i) - - def unannPrimitiveType(self): - return self.getTypedRuleContext(Java8Parser.UnannPrimitiveTypeContext,0) - - - def VOID(self): - return self.getToken(Java8Parser.VOID, 0) - - def THIS(self): - return self.getToken(Java8Parser.THIS, 0) - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def expression(self): - return self.getTypedRuleContext(Java8Parser.ExpressionContext,0) - - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def classInstanceCreationExpression_lfno_primary(self): - return self.getTypedRuleContext(Java8Parser.ClassInstanceCreationExpression_lfno_primaryContext,0) - - - def fieldAccess_lfno_primary(self): - return self.getTypedRuleContext(Java8Parser.FieldAccess_lfno_primaryContext,0) - - - def arrayAccess_lfno_primary(self): - return self.getTypedRuleContext(Java8Parser.ArrayAccess_lfno_primaryContext,0) - - - def methodInvocation_lfno_primary(self): - return self.getTypedRuleContext(Java8Parser.MethodInvocation_lfno_primaryContext,0) - - - def methodReference_lfno_primary(self): - return self.getTypedRuleContext(Java8Parser.MethodReference_lfno_primaryContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_primaryNoNewArray_lfno_primary - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPrimaryNoNewArray_lfno_primary" ): - listener.enterPrimaryNoNewArray_lfno_primary(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPrimaryNoNewArray_lfno_primary" ): - listener.exitPrimaryNoNewArray_lfno_primary(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPrimaryNoNewArray_lfno_primary" ): - return visitor.visitPrimaryNoNewArray_lfno_primary(self) - else: - return visitor.visitChildren(self) - - - - - def primaryNoNewArray_lfno_primary(self): - - localctx = Java8Parser.PrimaryNoNewArray_lfno_primaryContext(self, self._ctx, self.state) - self.enterRule(localctx, 364, self.RULE_primaryNoNewArray_lfno_primary) - self._la = 0 # Token type - try: - self.state = 1976 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,199,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1936 - self.literal() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1937 - self.typeName() - self.state = 1942 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.LBRACK: - self.state = 1938 - self.match(Java8Parser.LBRACK) - self.state = 1939 - self.match(Java8Parser.RBRACK) - self.state = 1944 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1945 - self.match(Java8Parser.DOT) - self.state = 1946 - self.match(Java8Parser.CLASS) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1948 - self.unannPrimitiveType() - self.state = 1953 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.LBRACK: - self.state = 1949 - self.match(Java8Parser.LBRACK) - self.state = 1950 - self.match(Java8Parser.RBRACK) - self.state = 1955 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1956 - self.match(Java8Parser.DOT) - self.state = 1957 - self.match(Java8Parser.CLASS) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 1959 - self.match(Java8Parser.VOID) - self.state = 1960 - self.match(Java8Parser.DOT) - self.state = 1961 - self.match(Java8Parser.CLASS) - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 1962 - self.match(Java8Parser.THIS) - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 1963 - self.typeName() - self.state = 1964 - self.match(Java8Parser.DOT) - self.state = 1965 - self.match(Java8Parser.THIS) - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 1967 - self.match(Java8Parser.LPAREN) - self.state = 1968 - self.expression() - self.state = 1969 - self.match(Java8Parser.RPAREN) - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 1971 - self.classInstanceCreationExpression_lfno_primary() - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 1972 - self.fieldAccess_lfno_primary() - pass - - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 1973 - self.arrayAccess_lfno_primary() - pass - - elif la_ == 11: - self.enterOuterAlt(localctx, 11) - self.state = 1974 - self.methodInvocation_lfno_primary() - pass - - elif la_ == 12: - self.enterOuterAlt(localctx, 12) - self.state = 1975 - self.methodReference_lfno_primary() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return Java8Parser.RULE_primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary" ): - listener.enterPrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary" ): - listener.exitPrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary" ): - return visitor.visitPrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(self) - else: - return visitor.visitChildren(self) - - - - - def primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(self): - - localctx = Java8Parser.PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext(self, self._ctx, self.state) - self.enterRule(localctx, 366, self.RULE_primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary) - try: - self.enterOuterAlt(localctx, 1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def literal(self): - return self.getTypedRuleContext(Java8Parser.LiteralContext,0) - - - def typeName(self): - return self.getTypedRuleContext(Java8Parser.TypeNameContext,0) - - - def DOT(self): - return self.getToken(Java8Parser.DOT, 0) - - def CLASS(self): - return self.getToken(Java8Parser.CLASS, 0) - - def LBRACK(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.LBRACK) - else: - return self.getToken(Java8Parser.LBRACK, i) - - def RBRACK(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.RBRACK) - else: - return self.getToken(Java8Parser.RBRACK, i) - - def unannPrimitiveType(self): - return self.getTypedRuleContext(Java8Parser.UnannPrimitiveTypeContext,0) - - - def VOID(self): - return self.getToken(Java8Parser.VOID, 0) - - def THIS(self): - return self.getToken(Java8Parser.THIS, 0) - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def expression(self): - return self.getTypedRuleContext(Java8Parser.ExpressionContext,0) - - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def classInstanceCreationExpression_lfno_primary(self): - return self.getTypedRuleContext(Java8Parser.ClassInstanceCreationExpression_lfno_primaryContext,0) - - - def fieldAccess_lfno_primary(self): - return self.getTypedRuleContext(Java8Parser.FieldAccess_lfno_primaryContext,0) - - - def methodInvocation_lfno_primary(self): - return self.getTypedRuleContext(Java8Parser.MethodInvocation_lfno_primaryContext,0) - - - def methodReference_lfno_primary(self): - return self.getTypedRuleContext(Java8Parser.MethodReference_lfno_primaryContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary" ): - listener.enterPrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary" ): - listener.exitPrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary" ): - return visitor.visitPrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(self) - else: - return visitor.visitChildren(self) - - - - - def primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(self): - - localctx = Java8Parser.PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext(self, self._ctx, self.state) - self.enterRule(localctx, 368, self.RULE_primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary) - self._la = 0 # Token type - try: - self.state = 2019 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,202,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1980 - self.literal() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1981 - self.typeName() - self.state = 1986 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.LBRACK: - self.state = 1982 - self.match(Java8Parser.LBRACK) - self.state = 1983 - self.match(Java8Parser.RBRACK) - self.state = 1988 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1989 - self.match(Java8Parser.DOT) - self.state = 1990 - self.match(Java8Parser.CLASS) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1992 - self.unannPrimitiveType() - self.state = 1997 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.LBRACK: - self.state = 1993 - self.match(Java8Parser.LBRACK) - self.state = 1994 - self.match(Java8Parser.RBRACK) - self.state = 1999 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 2000 - self.match(Java8Parser.DOT) - self.state = 2001 - self.match(Java8Parser.CLASS) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 2003 - self.match(Java8Parser.VOID) - self.state = 2004 - self.match(Java8Parser.DOT) - self.state = 2005 - self.match(Java8Parser.CLASS) - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 2006 - self.match(Java8Parser.THIS) - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 2007 - self.typeName() - self.state = 2008 - self.match(Java8Parser.DOT) - self.state = 2009 - self.match(Java8Parser.THIS) - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 2011 - self.match(Java8Parser.LPAREN) - self.state = 2012 - self.expression() - self.state = 2013 - self.match(Java8Parser.RPAREN) - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 2015 - self.classInstanceCreationExpression_lfno_primary() - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 2016 - self.fieldAccess_lfno_primary() - pass - - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 2017 - self.methodInvocation_lfno_primary() - pass - - elif la_ == 11: - self.enterOuterAlt(localctx, 11) - self.state = 2018 - self.methodReference_lfno_primary() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ClassInstanceCreationExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def NEW(self): - return self.getToken(Java8Parser.NEW, 0) - - def Identifier(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.Identifier) - else: - return self.getToken(Java8Parser.Identifier, i) - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def typeArguments(self): - return self.getTypedRuleContext(Java8Parser.TypeArgumentsContext,0) - - - def annotation(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.AnnotationContext) - else: - return self.getTypedRuleContext(Java8Parser.AnnotationContext,i) - - - def DOT(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.DOT) - else: - return self.getToken(Java8Parser.DOT, i) - - def typeArgumentsOrDiamond(self): - return self.getTypedRuleContext(Java8Parser.TypeArgumentsOrDiamondContext,0) - - - def argumentList(self): - return self.getTypedRuleContext(Java8Parser.ArgumentListContext,0) - - - def classBody(self): - return self.getTypedRuleContext(Java8Parser.ClassBodyContext,0) - - - def expressionName(self): - return self.getTypedRuleContext(Java8Parser.ExpressionNameContext,0) - - - def primary(self): - return self.getTypedRuleContext(Java8Parser.PrimaryContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_classInstanceCreationExpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterClassInstanceCreationExpression" ): - listener.enterClassInstanceCreationExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitClassInstanceCreationExpression" ): - listener.exitClassInstanceCreationExpression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitClassInstanceCreationExpression" ): - return visitor.visitClassInstanceCreationExpression(self) - else: - return visitor.visitChildren(self) - - - - - def classInstanceCreationExpression(self): - - localctx = Java8Parser.ClassInstanceCreationExpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 370, self.RULE_classInstanceCreationExpression) - self._la = 0 # Token type - try: - self.state = 2104 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,220,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2021 - self.match(Java8Parser.NEW) - self.state = 2023 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2022 - self.typeArguments() - - - self.state = 2028 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.AT: - self.state = 2025 - self.annotation() - self.state = 2030 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 2031 - self.match(Java8Parser.Identifier) - self.state = 2042 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.DOT: - self.state = 2032 - self.match(Java8Parser.DOT) - self.state = 2036 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.AT: - self.state = 2033 - self.annotation() - self.state = 2038 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 2039 - self.match(Java8Parser.Identifier) - self.state = 2044 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 2046 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2045 - self.typeArgumentsOrDiamond() - - - self.state = 2048 - self.match(Java8Parser.LPAREN) - self.state = 2050 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): - self.state = 2049 - self.argumentList() - - - self.state = 2052 - self.match(Java8Parser.RPAREN) - self.state = 2054 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LBRACE: - self.state = 2053 - self.classBody() - - - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2056 - self.expressionName() - self.state = 2057 - self.match(Java8Parser.DOT) - self.state = 2058 - self.match(Java8Parser.NEW) - self.state = 2060 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2059 - self.typeArguments() - - - self.state = 2065 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.AT: - self.state = 2062 - self.annotation() - self.state = 2067 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 2068 - self.match(Java8Parser.Identifier) - self.state = 2070 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2069 - self.typeArgumentsOrDiamond() - - - self.state = 2072 - self.match(Java8Parser.LPAREN) - self.state = 2074 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): - self.state = 2073 - self.argumentList() - - - self.state = 2076 - self.match(Java8Parser.RPAREN) - self.state = 2078 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LBRACE: - self.state = 2077 - self.classBody() - - - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 2080 - self.primary() - self.state = 2081 - self.match(Java8Parser.DOT) - self.state = 2082 - self.match(Java8Parser.NEW) - self.state = 2084 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2083 - self.typeArguments() - - - self.state = 2089 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.AT: - self.state = 2086 - self.annotation() - self.state = 2091 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 2092 - self.match(Java8Parser.Identifier) - self.state = 2094 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2093 - self.typeArgumentsOrDiamond() - - - self.state = 2096 - self.match(Java8Parser.LPAREN) - self.state = 2098 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): - self.state = 2097 - self.argumentList() - - - self.state = 2100 - self.match(Java8Parser.RPAREN) - self.state = 2102 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LBRACE: - self.state = 2101 - self.classBody() - - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ClassInstanceCreationExpression_lf_primaryContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DOT(self): - return self.getToken(Java8Parser.DOT, 0) - - def NEW(self): - return self.getToken(Java8Parser.NEW, 0) - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def typeArguments(self): - return self.getTypedRuleContext(Java8Parser.TypeArgumentsContext,0) - - - def annotation(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.AnnotationContext) - else: - return self.getTypedRuleContext(Java8Parser.AnnotationContext,i) - - - def typeArgumentsOrDiamond(self): - return self.getTypedRuleContext(Java8Parser.TypeArgumentsOrDiamondContext,0) - - - def argumentList(self): - return self.getTypedRuleContext(Java8Parser.ArgumentListContext,0) - - - def classBody(self): - return self.getTypedRuleContext(Java8Parser.ClassBodyContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_classInstanceCreationExpression_lf_primary - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterClassInstanceCreationExpression_lf_primary" ): - listener.enterClassInstanceCreationExpression_lf_primary(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitClassInstanceCreationExpression_lf_primary" ): - listener.exitClassInstanceCreationExpression_lf_primary(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitClassInstanceCreationExpression_lf_primary" ): - return visitor.visitClassInstanceCreationExpression_lf_primary(self) - else: - return visitor.visitChildren(self) - - - - - def classInstanceCreationExpression_lf_primary(self): - - localctx = Java8Parser.ClassInstanceCreationExpression_lf_primaryContext(self, self._ctx, self.state) - self.enterRule(localctx, 372, self.RULE_classInstanceCreationExpression_lf_primary) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 2106 - self.match(Java8Parser.DOT) - self.state = 2107 - self.match(Java8Parser.NEW) - self.state = 2109 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2108 - self.typeArguments() - - - self.state = 2114 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.AT: - self.state = 2111 - self.annotation() - self.state = 2116 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 2117 - self.match(Java8Parser.Identifier) - self.state = 2119 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2118 - self.typeArgumentsOrDiamond() - - - self.state = 2121 - self.match(Java8Parser.LPAREN) - self.state = 2123 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): - self.state = 2122 - self.argumentList() - - - self.state = 2125 - self.match(Java8Parser.RPAREN) - self.state = 2127 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,225,self._ctx) - if la_ == 1: - self.state = 2126 - self.classBody() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ClassInstanceCreationExpression_lfno_primaryContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def NEW(self): - return self.getToken(Java8Parser.NEW, 0) - - def Identifier(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.Identifier) - else: - return self.getToken(Java8Parser.Identifier, i) - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def typeArguments(self): - return self.getTypedRuleContext(Java8Parser.TypeArgumentsContext,0) - - - def annotation(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.AnnotationContext) - else: - return self.getTypedRuleContext(Java8Parser.AnnotationContext,i) - - - def DOT(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.DOT) - else: - return self.getToken(Java8Parser.DOT, i) - - def typeArgumentsOrDiamond(self): - return self.getTypedRuleContext(Java8Parser.TypeArgumentsOrDiamondContext,0) - - - def argumentList(self): - return self.getTypedRuleContext(Java8Parser.ArgumentListContext,0) - - - def classBody(self): - return self.getTypedRuleContext(Java8Parser.ClassBodyContext,0) - - - def expressionName(self): - return self.getTypedRuleContext(Java8Parser.ExpressionNameContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_classInstanceCreationExpression_lfno_primary - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterClassInstanceCreationExpression_lfno_primary" ): - listener.enterClassInstanceCreationExpression_lfno_primary(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitClassInstanceCreationExpression_lfno_primary" ): - listener.exitClassInstanceCreationExpression_lfno_primary(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitClassInstanceCreationExpression_lfno_primary" ): - return visitor.visitClassInstanceCreationExpression_lfno_primary(self) - else: - return visitor.visitChildren(self) - - - - - def classInstanceCreationExpression_lfno_primary(self): - - localctx = Java8Parser.ClassInstanceCreationExpression_lfno_primaryContext(self, self._ctx, self.state) - self.enterRule(localctx, 374, self.RULE_classInstanceCreationExpression_lfno_primary) - self._la = 0 # Token type - try: - self.state = 2188 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [Java8Parser.NEW]: - self.enterOuterAlt(localctx, 1) - self.state = 2129 - self.match(Java8Parser.NEW) - self.state = 2131 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2130 - self.typeArguments() - - - self.state = 2136 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.AT: - self.state = 2133 - self.annotation() - self.state = 2138 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 2139 - self.match(Java8Parser.Identifier) - self.state = 2150 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.DOT: - self.state = 2140 - self.match(Java8Parser.DOT) - self.state = 2144 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.AT: - self.state = 2141 - self.annotation() - self.state = 2146 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 2147 - self.match(Java8Parser.Identifier) - self.state = 2152 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 2154 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2153 - self.typeArgumentsOrDiamond() - - - self.state = 2156 - self.match(Java8Parser.LPAREN) - self.state = 2158 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): - self.state = 2157 - self.argumentList() - - - self.state = 2160 - self.match(Java8Parser.RPAREN) - self.state = 2162 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,232,self._ctx) - if la_ == 1: - self.state = 2161 - self.classBody() - - - pass - elif token in [Java8Parser.Identifier]: - self.enterOuterAlt(localctx, 2) - self.state = 2164 - self.expressionName() - self.state = 2165 - self.match(Java8Parser.DOT) - self.state = 2166 - self.match(Java8Parser.NEW) - self.state = 2168 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2167 - self.typeArguments() - - - self.state = 2173 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.AT: - self.state = 2170 - self.annotation() - self.state = 2175 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 2176 - self.match(Java8Parser.Identifier) - self.state = 2178 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2177 - self.typeArgumentsOrDiamond() - - - self.state = 2180 - self.match(Java8Parser.LPAREN) - self.state = 2182 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): - self.state = 2181 - self.argumentList() - - - self.state = 2184 - self.match(Java8Parser.RPAREN) - self.state = 2186 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,237,self._ctx) - if la_ == 1: - self.state = 2185 - self.classBody() - - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TypeArgumentsOrDiamondContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def typeArguments(self): - return self.getTypedRuleContext(Java8Parser.TypeArgumentsContext,0) - - - def LT(self): - return self.getToken(Java8Parser.LT, 0) - - def GT(self): - return self.getToken(Java8Parser.GT, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_typeArgumentsOrDiamond - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypeArgumentsOrDiamond" ): - listener.enterTypeArgumentsOrDiamond(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypeArgumentsOrDiamond" ): - listener.exitTypeArgumentsOrDiamond(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTypeArgumentsOrDiamond" ): - return visitor.visitTypeArgumentsOrDiamond(self) - else: - return visitor.visitChildren(self) - - - - - def typeArgumentsOrDiamond(self): - - localctx = Java8Parser.TypeArgumentsOrDiamondContext(self, self._ctx, self.state) - self.enterRule(localctx, 376, self.RULE_typeArgumentsOrDiamond) - try: - self.state = 2193 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,239,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2190 - self.typeArguments() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2191 - self.match(Java8Parser.LT) - self.state = 2192 - self.match(Java8Parser.GT) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class FieldAccessContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def primary(self): - return self.getTypedRuleContext(Java8Parser.PrimaryContext,0) - - - def DOT(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.DOT) - else: - return self.getToken(Java8Parser.DOT, i) - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def SUPER(self): - return self.getToken(Java8Parser.SUPER, 0) - - def typeName(self): - return self.getTypedRuleContext(Java8Parser.TypeNameContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_fieldAccess - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFieldAccess" ): - listener.enterFieldAccess(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFieldAccess" ): - listener.exitFieldAccess(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFieldAccess" ): - return visitor.visitFieldAccess(self) - else: - return visitor.visitChildren(self) - - - - - def fieldAccess(self): - - localctx = Java8Parser.FieldAccessContext(self, self._ctx, self.state) - self.enterRule(localctx, 378, self.RULE_fieldAccess) - try: - self.state = 2208 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,240,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2195 - self.primary() - self.state = 2196 - self.match(Java8Parser.DOT) - self.state = 2197 - self.match(Java8Parser.Identifier) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2199 - self.match(Java8Parser.SUPER) - self.state = 2200 - self.match(Java8Parser.DOT) - self.state = 2201 - self.match(Java8Parser.Identifier) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 2202 - self.typeName() - self.state = 2203 - self.match(Java8Parser.DOT) - self.state = 2204 - self.match(Java8Parser.SUPER) - self.state = 2205 - self.match(Java8Parser.DOT) - self.state = 2206 - self.match(Java8Parser.Identifier) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class FieldAccess_lf_primaryContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DOT(self): - return self.getToken(Java8Parser.DOT, 0) - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_fieldAccess_lf_primary - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFieldAccess_lf_primary" ): - listener.enterFieldAccess_lf_primary(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFieldAccess_lf_primary" ): - listener.exitFieldAccess_lf_primary(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFieldAccess_lf_primary" ): - return visitor.visitFieldAccess_lf_primary(self) - else: - return visitor.visitChildren(self) - - - - - def fieldAccess_lf_primary(self): - - localctx = Java8Parser.FieldAccess_lf_primaryContext(self, self._ctx, self.state) - self.enterRule(localctx, 380, self.RULE_fieldAccess_lf_primary) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2210 - self.match(Java8Parser.DOT) - self.state = 2211 - self.match(Java8Parser.Identifier) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class FieldAccess_lfno_primaryContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def SUPER(self): - return self.getToken(Java8Parser.SUPER, 0) - - def DOT(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.DOT) - else: - return self.getToken(Java8Parser.DOT, i) - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def typeName(self): - return self.getTypedRuleContext(Java8Parser.TypeNameContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_fieldAccess_lfno_primary - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFieldAccess_lfno_primary" ): - listener.enterFieldAccess_lfno_primary(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFieldAccess_lfno_primary" ): - listener.exitFieldAccess_lfno_primary(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFieldAccess_lfno_primary" ): - return visitor.visitFieldAccess_lfno_primary(self) - else: - return visitor.visitChildren(self) - - - - - def fieldAccess_lfno_primary(self): - - localctx = Java8Parser.FieldAccess_lfno_primaryContext(self, self._ctx, self.state) - self.enterRule(localctx, 382, self.RULE_fieldAccess_lfno_primary) - try: - self.state = 2222 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [Java8Parser.SUPER]: - self.enterOuterAlt(localctx, 1) - self.state = 2213 - self.match(Java8Parser.SUPER) - self.state = 2214 - self.match(Java8Parser.DOT) - self.state = 2215 - self.match(Java8Parser.Identifier) - pass - elif token in [Java8Parser.Identifier]: - self.enterOuterAlt(localctx, 2) - self.state = 2216 - self.typeName() - self.state = 2217 - self.match(Java8Parser.DOT) - self.state = 2218 - self.match(Java8Parser.SUPER) - self.state = 2219 - self.match(Java8Parser.DOT) - self.state = 2220 - self.match(Java8Parser.Identifier) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ArrayAccessContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def expressionName(self): - return self.getTypedRuleContext(Java8Parser.ExpressionNameContext,0) - - - def LBRACK(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.LBRACK) - else: - return self.getToken(Java8Parser.LBRACK, i) - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.ExpressionContext) - else: - return self.getTypedRuleContext(Java8Parser.ExpressionContext,i) - - - def RBRACK(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.RBRACK) - else: - return self.getToken(Java8Parser.RBRACK, i) - - def primaryNoNewArray_lfno_arrayAccess(self): - return self.getTypedRuleContext(Java8Parser.PrimaryNoNewArray_lfno_arrayAccessContext,0) - - - def primaryNoNewArray_lf_arrayAccess(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.PrimaryNoNewArray_lf_arrayAccessContext) - else: - return self.getTypedRuleContext(Java8Parser.PrimaryNoNewArray_lf_arrayAccessContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_arrayAccess - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterArrayAccess" ): - listener.enterArrayAccess(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitArrayAccess" ): - listener.exitArrayAccess(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitArrayAccess" ): - return visitor.visitArrayAccess(self) - else: - return visitor.visitChildren(self) - - - - - def arrayAccess(self): - - localctx = Java8Parser.ArrayAccessContext(self, self._ctx, self.state) - self.enterRule(localctx, 384, self.RULE_arrayAccess) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 2234 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,242,self._ctx) - if la_ == 1: - self.state = 2224 - self.expressionName() - self.state = 2225 - self.match(Java8Parser.LBRACK) - self.state = 2226 - self.expression() - self.state = 2227 - self.match(Java8Parser.RBRACK) - pass - - elif la_ == 2: - self.state = 2229 - self.primaryNoNewArray_lfno_arrayAccess() - self.state = 2230 - self.match(Java8Parser.LBRACK) - self.state = 2231 - self.expression() - self.state = 2232 - self.match(Java8Parser.RBRACK) - pass - - - self.state = 2243 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.LBRACK: - self.state = 2236 - self.primaryNoNewArray_lf_arrayAccess() - self.state = 2237 - self.match(Java8Parser.LBRACK) - self.state = 2238 - self.expression() - self.state = 2239 - self.match(Java8Parser.RBRACK) - self.state = 2245 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ArrayAccess_lf_primaryContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(self): - return self.getTypedRuleContext(Java8Parser.PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext,0) - - - def LBRACK(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.LBRACK) - else: - return self.getToken(Java8Parser.LBRACK, i) - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.ExpressionContext) - else: - return self.getTypedRuleContext(Java8Parser.ExpressionContext,i) - - - def RBRACK(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.RBRACK) - else: - return self.getToken(Java8Parser.RBRACK, i) - - def primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext) - else: - return self.getTypedRuleContext(Java8Parser.PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_arrayAccess_lf_primary - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterArrayAccess_lf_primary" ): - listener.enterArrayAccess_lf_primary(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitArrayAccess_lf_primary" ): - listener.exitArrayAccess_lf_primary(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitArrayAccess_lf_primary" ): - return visitor.visitArrayAccess_lf_primary(self) - else: - return visitor.visitChildren(self) - - - - - def arrayAccess_lf_primary(self): - - localctx = Java8Parser.ArrayAccess_lf_primaryContext(self, self._ctx, self.state) - self.enterRule(localctx, 386, self.RULE_arrayAccess_lf_primary) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2246 - self.primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary() - self.state = 2247 - self.match(Java8Parser.LBRACK) - self.state = 2248 - self.expression() - self.state = 2249 - self.match(Java8Parser.RBRACK) - self.state = 2258 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,244,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 2251 - self.primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary() - self.state = 2252 - self.match(Java8Parser.LBRACK) - self.state = 2253 - self.expression() - self.state = 2254 - self.match(Java8Parser.RBRACK) - self.state = 2260 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,244,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ArrayAccess_lfno_primaryContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def expressionName(self): - return self.getTypedRuleContext(Java8Parser.ExpressionNameContext,0) - - - def LBRACK(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.LBRACK) - else: - return self.getToken(Java8Parser.LBRACK, i) - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.ExpressionContext) - else: - return self.getTypedRuleContext(Java8Parser.ExpressionContext,i) - - - def RBRACK(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.RBRACK) - else: - return self.getToken(Java8Parser.RBRACK, i) - - def primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(self): - return self.getTypedRuleContext(Java8Parser.PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext,0) - - - def primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext) - else: - return self.getTypedRuleContext(Java8Parser.PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_arrayAccess_lfno_primary - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterArrayAccess_lfno_primary" ): - listener.enterArrayAccess_lfno_primary(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitArrayAccess_lfno_primary" ): - listener.exitArrayAccess_lfno_primary(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitArrayAccess_lfno_primary" ): - return visitor.visitArrayAccess_lfno_primary(self) - else: - return visitor.visitChildren(self) - - - - - def arrayAccess_lfno_primary(self): - - localctx = Java8Parser.ArrayAccess_lfno_primaryContext(self, self._ctx, self.state) - self.enterRule(localctx, 388, self.RULE_arrayAccess_lfno_primary) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2271 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,245,self._ctx) - if la_ == 1: - self.state = 2261 - self.expressionName() - self.state = 2262 - self.match(Java8Parser.LBRACK) - self.state = 2263 - self.expression() - self.state = 2264 - self.match(Java8Parser.RBRACK) - pass - - elif la_ == 2: - self.state = 2266 - self.primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary() - self.state = 2267 - self.match(Java8Parser.LBRACK) - self.state = 2268 - self.expression() - self.state = 2269 - self.match(Java8Parser.RBRACK) - pass - - - self.state = 2280 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,246,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 2273 - self.primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary() - self.state = 2274 - self.match(Java8Parser.LBRACK) - self.state = 2275 - self.expression() - self.state = 2276 - self.match(Java8Parser.RBRACK) - self.state = 2282 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,246,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class MethodInvocationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def methodName(self): - return self.getTypedRuleContext(Java8Parser.MethodNameContext,0) - - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def argumentList(self): - return self.getTypedRuleContext(Java8Parser.ArgumentListContext,0) - - - def typeName(self): - return self.getTypedRuleContext(Java8Parser.TypeNameContext,0) - - - def DOT(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.DOT) - else: - return self.getToken(Java8Parser.DOT, i) - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def typeArguments(self): - return self.getTypedRuleContext(Java8Parser.TypeArgumentsContext,0) - - - def expressionName(self): - return self.getTypedRuleContext(Java8Parser.ExpressionNameContext,0) - - - def primary(self): - return self.getTypedRuleContext(Java8Parser.PrimaryContext,0) - - - def SUPER(self): - return self.getToken(Java8Parser.SUPER, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_methodInvocation - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMethodInvocation" ): - listener.enterMethodInvocation(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMethodInvocation" ): - listener.exitMethodInvocation(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMethodInvocation" ): - return visitor.visitMethodInvocation(self) - else: - return visitor.visitChildren(self) - - - - - def methodInvocation(self): - - localctx = Java8Parser.MethodInvocationContext(self, self._ctx, self.state) - self.enterRule(localctx, 390, self.RULE_methodInvocation) - self._la = 0 # Token type - try: - self.state = 2351 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,258,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2283 - self.methodName() - self.state = 2284 - self.match(Java8Parser.LPAREN) - self.state = 2286 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): - self.state = 2285 - self.argumentList() - - - self.state = 2288 - self.match(Java8Parser.RPAREN) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2290 - self.typeName() - self.state = 2291 - self.match(Java8Parser.DOT) - self.state = 2293 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2292 - self.typeArguments() - - - self.state = 2295 - self.match(Java8Parser.Identifier) - self.state = 2296 - self.match(Java8Parser.LPAREN) - self.state = 2298 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): - self.state = 2297 - self.argumentList() - - - self.state = 2300 - self.match(Java8Parser.RPAREN) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 2302 - self.expressionName() - self.state = 2303 - self.match(Java8Parser.DOT) - self.state = 2305 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2304 - self.typeArguments() - - - self.state = 2307 - self.match(Java8Parser.Identifier) - self.state = 2308 - self.match(Java8Parser.LPAREN) - self.state = 2310 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): - self.state = 2309 - self.argumentList() - - - self.state = 2312 - self.match(Java8Parser.RPAREN) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 2314 - self.primary() - self.state = 2315 - self.match(Java8Parser.DOT) - self.state = 2317 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2316 - self.typeArguments() - - - self.state = 2319 - self.match(Java8Parser.Identifier) - self.state = 2320 - self.match(Java8Parser.LPAREN) - self.state = 2322 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): - self.state = 2321 - self.argumentList() - - - self.state = 2324 - self.match(Java8Parser.RPAREN) - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 2326 - self.match(Java8Parser.SUPER) - self.state = 2327 - self.match(Java8Parser.DOT) - self.state = 2329 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2328 - self.typeArguments() - - - self.state = 2331 - self.match(Java8Parser.Identifier) - self.state = 2332 - self.match(Java8Parser.LPAREN) - self.state = 2334 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): - self.state = 2333 - self.argumentList() - - - self.state = 2336 - self.match(Java8Parser.RPAREN) - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 2337 - self.typeName() - self.state = 2338 - self.match(Java8Parser.DOT) - self.state = 2339 - self.match(Java8Parser.SUPER) - self.state = 2340 - self.match(Java8Parser.DOT) - self.state = 2342 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2341 - self.typeArguments() - - - self.state = 2344 - self.match(Java8Parser.Identifier) - self.state = 2345 - self.match(Java8Parser.LPAREN) - self.state = 2347 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): - self.state = 2346 - self.argumentList() - - - self.state = 2349 - self.match(Java8Parser.RPAREN) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class MethodInvocation_lf_primaryContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DOT(self): - return self.getToken(Java8Parser.DOT, 0) - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def typeArguments(self): - return self.getTypedRuleContext(Java8Parser.TypeArgumentsContext,0) - - - def argumentList(self): - return self.getTypedRuleContext(Java8Parser.ArgumentListContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_methodInvocation_lf_primary - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMethodInvocation_lf_primary" ): - listener.enterMethodInvocation_lf_primary(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMethodInvocation_lf_primary" ): - listener.exitMethodInvocation_lf_primary(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMethodInvocation_lf_primary" ): - return visitor.visitMethodInvocation_lf_primary(self) - else: - return visitor.visitChildren(self) - - - - - def methodInvocation_lf_primary(self): - - localctx = Java8Parser.MethodInvocation_lf_primaryContext(self, self._ctx, self.state) - self.enterRule(localctx, 392, self.RULE_methodInvocation_lf_primary) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 2353 - self.match(Java8Parser.DOT) - self.state = 2355 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2354 - self.typeArguments() - - - self.state = 2357 - self.match(Java8Parser.Identifier) - self.state = 2358 - self.match(Java8Parser.LPAREN) - self.state = 2360 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): - self.state = 2359 - self.argumentList() - - - self.state = 2362 - self.match(Java8Parser.RPAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class MethodInvocation_lfno_primaryContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def methodName(self): - return self.getTypedRuleContext(Java8Parser.MethodNameContext,0) - - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def argumentList(self): - return self.getTypedRuleContext(Java8Parser.ArgumentListContext,0) - - - def typeName(self): - return self.getTypedRuleContext(Java8Parser.TypeNameContext,0) - - - def DOT(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.DOT) - else: - return self.getToken(Java8Parser.DOT, i) - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def typeArguments(self): - return self.getTypedRuleContext(Java8Parser.TypeArgumentsContext,0) - - - def expressionName(self): - return self.getTypedRuleContext(Java8Parser.ExpressionNameContext,0) - - - def SUPER(self): - return self.getToken(Java8Parser.SUPER, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_methodInvocation_lfno_primary - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMethodInvocation_lfno_primary" ): - listener.enterMethodInvocation_lfno_primary(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMethodInvocation_lfno_primary" ): - listener.exitMethodInvocation_lfno_primary(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMethodInvocation_lfno_primary" ): - return visitor.visitMethodInvocation_lfno_primary(self) - else: - return visitor.visitChildren(self) - - - - - def methodInvocation_lfno_primary(self): - - localctx = Java8Parser.MethodInvocation_lfno_primaryContext(self, self._ctx, self.state) - self.enterRule(localctx, 394, self.RULE_methodInvocation_lfno_primary) - self._la = 0 # Token type - try: - self.state = 2420 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,270,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2364 - self.methodName() - self.state = 2365 - self.match(Java8Parser.LPAREN) - self.state = 2367 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): - self.state = 2366 - self.argumentList() - - - self.state = 2369 - self.match(Java8Parser.RPAREN) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2371 - self.typeName() - self.state = 2372 - self.match(Java8Parser.DOT) - self.state = 2374 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2373 - self.typeArguments() - - - self.state = 2376 - self.match(Java8Parser.Identifier) - self.state = 2377 - self.match(Java8Parser.LPAREN) - self.state = 2379 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): - self.state = 2378 - self.argumentList() - - - self.state = 2381 - self.match(Java8Parser.RPAREN) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 2383 - self.expressionName() - self.state = 2384 - self.match(Java8Parser.DOT) - self.state = 2386 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2385 - self.typeArguments() - - - self.state = 2388 - self.match(Java8Parser.Identifier) - self.state = 2389 - self.match(Java8Parser.LPAREN) - self.state = 2391 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): - self.state = 2390 - self.argumentList() - - - self.state = 2393 - self.match(Java8Parser.RPAREN) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 2395 - self.match(Java8Parser.SUPER) - self.state = 2396 - self.match(Java8Parser.DOT) - self.state = 2398 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2397 - self.typeArguments() - - - self.state = 2400 - self.match(Java8Parser.Identifier) - self.state = 2401 - self.match(Java8Parser.LPAREN) - self.state = 2403 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): - self.state = 2402 - self.argumentList() - - - self.state = 2405 - self.match(Java8Parser.RPAREN) - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 2406 - self.typeName() - self.state = 2407 - self.match(Java8Parser.DOT) - self.state = 2408 - self.match(Java8Parser.SUPER) - self.state = 2409 - self.match(Java8Parser.DOT) - self.state = 2411 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2410 - self.typeArguments() - - - self.state = 2413 - self.match(Java8Parser.Identifier) - self.state = 2414 - self.match(Java8Parser.LPAREN) - self.state = 2416 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.NEW) | (1 << Java8Parser.SHORT) | (1 << Java8Parser.SUPER) | (1 << Java8Parser.THIS) | (1 << Java8Parser.VOID) | (1 << Java8Parser.IntegerLiteral) | (1 << Java8Parser.FloatingPointLiteral) | (1 << Java8Parser.BooleanLiteral) | (1 << Java8Parser.CharacterLiteral) | (1 << Java8Parser.StringLiteral) | (1 << Java8Parser.NullLiteral) | (1 << Java8Parser.LPAREN))) != 0) or ((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & ((1 << (Java8Parser.BANG - 69)) | (1 << (Java8Parser.TILDE - 69)) | (1 << (Java8Parser.INC - 69)) | (1 << (Java8Parser.DEC - 69)) | (1 << (Java8Parser.ADD - 69)) | (1 << (Java8Parser.SUB - 69)) | (1 << (Java8Parser.Identifier - 69)) | (1 << (Java8Parser.AT - 69)))) != 0): - self.state = 2415 - self.argumentList() - - - self.state = 2418 - self.match(Java8Parser.RPAREN) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ArgumentListContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.ExpressionContext) - else: - return self.getTypedRuleContext(Java8Parser.ExpressionContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.COMMA) - else: - return self.getToken(Java8Parser.COMMA, i) - - def getRuleIndex(self): - return Java8Parser.RULE_argumentList - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterArgumentList" ): - listener.enterArgumentList(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitArgumentList" ): - listener.exitArgumentList(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitArgumentList" ): - return visitor.visitArgumentList(self) - else: - return visitor.visitChildren(self) - - - - - def argumentList(self): - - localctx = Java8Parser.ArgumentListContext(self, self._ctx, self.state) - self.enterRule(localctx, 396, self.RULE_argumentList) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 2422 - self.expression() - self.state = 2427 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.COMMA: - self.state = 2423 - self.match(Java8Parser.COMMA) - self.state = 2424 - self.expression() - self.state = 2429 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class MethodReferenceContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def expressionName(self): - return self.getTypedRuleContext(Java8Parser.ExpressionNameContext,0) - - - def COLONCOLON(self): - return self.getToken(Java8Parser.COLONCOLON, 0) - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def typeArguments(self): - return self.getTypedRuleContext(Java8Parser.TypeArgumentsContext,0) - - - def referenceType(self): - return self.getTypedRuleContext(Java8Parser.ReferenceTypeContext,0) - - - def primary(self): - return self.getTypedRuleContext(Java8Parser.PrimaryContext,0) - - - def SUPER(self): - return self.getToken(Java8Parser.SUPER, 0) - - def typeName(self): - return self.getTypedRuleContext(Java8Parser.TypeNameContext,0) - - - def DOT(self): - return self.getToken(Java8Parser.DOT, 0) - - def classType(self): - return self.getTypedRuleContext(Java8Parser.ClassTypeContext,0) - - - def NEW(self): - return self.getToken(Java8Parser.NEW, 0) - - def arrayType(self): - return self.getTypedRuleContext(Java8Parser.ArrayTypeContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_methodReference - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMethodReference" ): - listener.enterMethodReference(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMethodReference" ): - listener.exitMethodReference(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMethodReference" ): - return visitor.visitMethodReference(self) - else: - return visitor.visitChildren(self) - - - - - def methodReference(self): - - localctx = Java8Parser.MethodReferenceContext(self, self._ctx, self.state) - self.enterRule(localctx, 398, self.RULE_methodReference) - self._la = 0 # Token type - try: - self.state = 2477 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,278,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2430 - self.expressionName() - self.state = 2431 - self.match(Java8Parser.COLONCOLON) - self.state = 2433 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2432 - self.typeArguments() - - - self.state = 2435 - self.match(Java8Parser.Identifier) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2437 - self.referenceType() - self.state = 2438 - self.match(Java8Parser.COLONCOLON) - self.state = 2440 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2439 - self.typeArguments() - - - self.state = 2442 - self.match(Java8Parser.Identifier) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 2444 - self.primary() - self.state = 2445 - self.match(Java8Parser.COLONCOLON) - self.state = 2447 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2446 - self.typeArguments() - - - self.state = 2449 - self.match(Java8Parser.Identifier) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 2451 - self.match(Java8Parser.SUPER) - self.state = 2452 - self.match(Java8Parser.COLONCOLON) - self.state = 2454 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2453 - self.typeArguments() - - - self.state = 2456 - self.match(Java8Parser.Identifier) - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 2457 - self.typeName() - self.state = 2458 - self.match(Java8Parser.DOT) - self.state = 2459 - self.match(Java8Parser.SUPER) - self.state = 2460 - self.match(Java8Parser.COLONCOLON) - self.state = 2462 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2461 - self.typeArguments() - - - self.state = 2464 - self.match(Java8Parser.Identifier) - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 2466 - self.classType() - self.state = 2467 - self.match(Java8Parser.COLONCOLON) - self.state = 2469 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2468 - self.typeArguments() - - - self.state = 2471 - self.match(Java8Parser.NEW) - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 2473 - self.arrayType() - self.state = 2474 - self.match(Java8Parser.COLONCOLON) - self.state = 2475 - self.match(Java8Parser.NEW) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class MethodReference_lf_primaryContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def COLONCOLON(self): - return self.getToken(Java8Parser.COLONCOLON, 0) - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def typeArguments(self): - return self.getTypedRuleContext(Java8Parser.TypeArgumentsContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_methodReference_lf_primary - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMethodReference_lf_primary" ): - listener.enterMethodReference_lf_primary(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMethodReference_lf_primary" ): - listener.exitMethodReference_lf_primary(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMethodReference_lf_primary" ): - return visitor.visitMethodReference_lf_primary(self) - else: - return visitor.visitChildren(self) - - - - - def methodReference_lf_primary(self): - - localctx = Java8Parser.MethodReference_lf_primaryContext(self, self._ctx, self.state) - self.enterRule(localctx, 400, self.RULE_methodReference_lf_primary) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 2479 - self.match(Java8Parser.COLONCOLON) - self.state = 2481 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2480 - self.typeArguments() - - - self.state = 2483 - self.match(Java8Parser.Identifier) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class MethodReference_lfno_primaryContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def expressionName(self): - return self.getTypedRuleContext(Java8Parser.ExpressionNameContext,0) - - - def COLONCOLON(self): - return self.getToken(Java8Parser.COLONCOLON, 0) - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def typeArguments(self): - return self.getTypedRuleContext(Java8Parser.TypeArgumentsContext,0) - - - def referenceType(self): - return self.getTypedRuleContext(Java8Parser.ReferenceTypeContext,0) - - - def SUPER(self): - return self.getToken(Java8Parser.SUPER, 0) - - def typeName(self): - return self.getTypedRuleContext(Java8Parser.TypeNameContext,0) - - - def DOT(self): - return self.getToken(Java8Parser.DOT, 0) - - def classType(self): - return self.getTypedRuleContext(Java8Parser.ClassTypeContext,0) - - - def NEW(self): - return self.getToken(Java8Parser.NEW, 0) - - def arrayType(self): - return self.getTypedRuleContext(Java8Parser.ArrayTypeContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_methodReference_lfno_primary - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMethodReference_lfno_primary" ): - listener.enterMethodReference_lfno_primary(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMethodReference_lfno_primary" ): - listener.exitMethodReference_lfno_primary(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMethodReference_lfno_primary" ): - return visitor.visitMethodReference_lfno_primary(self) - else: - return visitor.visitChildren(self) - - - - - def methodReference_lfno_primary(self): - - localctx = Java8Parser.MethodReference_lfno_primaryContext(self, self._ctx, self.state) - self.enterRule(localctx, 402, self.RULE_methodReference_lfno_primary) - self._la = 0 # Token type - try: - self.state = 2525 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,285,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2485 - self.expressionName() - self.state = 2486 - self.match(Java8Parser.COLONCOLON) - self.state = 2488 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2487 - self.typeArguments() - - - self.state = 2490 - self.match(Java8Parser.Identifier) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2492 - self.referenceType() - self.state = 2493 - self.match(Java8Parser.COLONCOLON) - self.state = 2495 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2494 - self.typeArguments() - - - self.state = 2497 - self.match(Java8Parser.Identifier) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 2499 - self.match(Java8Parser.SUPER) - self.state = 2500 - self.match(Java8Parser.COLONCOLON) - self.state = 2502 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2501 - self.typeArguments() - - - self.state = 2504 - self.match(Java8Parser.Identifier) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 2505 - self.typeName() - self.state = 2506 - self.match(Java8Parser.DOT) - self.state = 2507 - self.match(Java8Parser.SUPER) - self.state = 2508 - self.match(Java8Parser.COLONCOLON) - self.state = 2510 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2509 - self.typeArguments() - - - self.state = 2512 - self.match(Java8Parser.Identifier) - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 2514 - self.classType() - self.state = 2515 - self.match(Java8Parser.COLONCOLON) - self.state = 2517 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==Java8Parser.LT: - self.state = 2516 - self.typeArguments() - - - self.state = 2519 - self.match(Java8Parser.NEW) - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 2521 - self.arrayType() - self.state = 2522 - self.match(Java8Parser.COLONCOLON) - self.state = 2523 - self.match(Java8Parser.NEW) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ArrayCreationExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def NEW(self): - return self.getToken(Java8Parser.NEW, 0) - - def primitiveType(self): - return self.getTypedRuleContext(Java8Parser.PrimitiveTypeContext,0) - - - def dimExprs(self): - return self.getTypedRuleContext(Java8Parser.DimExprsContext,0) - - - def dims(self): - return self.getTypedRuleContext(Java8Parser.DimsContext,0) - - - def classOrInterfaceType(self): - return self.getTypedRuleContext(Java8Parser.ClassOrInterfaceTypeContext,0) - - - def arrayInitializer(self): - return self.getTypedRuleContext(Java8Parser.ArrayInitializerContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_arrayCreationExpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterArrayCreationExpression" ): - listener.enterArrayCreationExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitArrayCreationExpression" ): - listener.exitArrayCreationExpression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitArrayCreationExpression" ): - return visitor.visitArrayCreationExpression(self) - else: - return visitor.visitChildren(self) - - - - - def arrayCreationExpression(self): - - localctx = Java8Parser.ArrayCreationExpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 404, self.RULE_arrayCreationExpression) - try: - self.state = 2549 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,288,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2527 - self.match(Java8Parser.NEW) - self.state = 2528 - self.primitiveType() - self.state = 2529 - self.dimExprs() - self.state = 2531 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,286,self._ctx) - if la_ == 1: - self.state = 2530 - self.dims() - - - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2533 - self.match(Java8Parser.NEW) - self.state = 2534 - self.classOrInterfaceType() - self.state = 2535 - self.dimExprs() - self.state = 2537 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,287,self._ctx) - if la_ == 1: - self.state = 2536 - self.dims() - - - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 2539 - self.match(Java8Parser.NEW) - self.state = 2540 - self.primitiveType() - self.state = 2541 - self.dims() - self.state = 2542 - self.arrayInitializer() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 2544 - self.match(Java8Parser.NEW) - self.state = 2545 - self.classOrInterfaceType() - self.state = 2546 - self.dims() - self.state = 2547 - self.arrayInitializer() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DimExprsContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def dimExpr(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.DimExprContext) - else: - return self.getTypedRuleContext(Java8Parser.DimExprContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_dimExprs - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDimExprs" ): - listener.enterDimExprs(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDimExprs" ): - listener.exitDimExprs(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDimExprs" ): - return visitor.visitDimExprs(self) - else: - return visitor.visitChildren(self) - - - - - def dimExprs(self): - - localctx = Java8Parser.DimExprsContext(self, self._ctx, self.state) - self.enterRule(localctx, 406, self.RULE_dimExprs) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2551 - self.dimExpr() - self.state = 2555 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,289,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 2552 - self.dimExpr() - self.state = 2557 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,289,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DimExprContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def LBRACK(self): - return self.getToken(Java8Parser.LBRACK, 0) - - def expression(self): - return self.getTypedRuleContext(Java8Parser.ExpressionContext,0) - - - def RBRACK(self): - return self.getToken(Java8Parser.RBRACK, 0) - - def annotation(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.AnnotationContext) - else: - return self.getTypedRuleContext(Java8Parser.AnnotationContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_dimExpr - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDimExpr" ): - listener.enterDimExpr(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDimExpr" ): - listener.exitDimExpr(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDimExpr" ): - return visitor.visitDimExpr(self) - else: - return visitor.visitChildren(self) - - - - - def dimExpr(self): - - localctx = Java8Parser.DimExprContext(self, self._ctx, self.state) - self.enterRule(localctx, 408, self.RULE_dimExpr) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 2561 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.AT: - self.state = 2558 - self.annotation() - self.state = 2563 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 2564 - self.match(Java8Parser.LBRACK) - self.state = 2565 - self.expression() - self.state = 2566 - self.match(Java8Parser.RBRACK) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ConstantExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def expression(self): - return self.getTypedRuleContext(Java8Parser.ExpressionContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_constantExpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConstantExpression" ): - listener.enterConstantExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConstantExpression" ): - listener.exitConstantExpression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConstantExpression" ): - return visitor.visitConstantExpression(self) - else: - return visitor.visitChildren(self) - - - - - def constantExpression(self): - - localctx = Java8Parser.ConstantExpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 410, self.RULE_constantExpression) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2568 - self.expression() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def lambdaExpression(self): - return self.getTypedRuleContext(Java8Parser.LambdaExpressionContext,0) - - - def assignmentExpression(self): - return self.getTypedRuleContext(Java8Parser.AssignmentExpressionContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_expression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExpression" ): - listener.enterExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExpression" ): - listener.exitExpression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExpression" ): - return visitor.visitExpression(self) - else: - return visitor.visitChildren(self) - - - - - def expression(self): - - localctx = Java8Parser.ExpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 412, self.RULE_expression) - try: - self.state = 2572 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,291,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2570 - self.lambdaExpression() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2571 - self.assignmentExpression() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class LambdaExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def lambdaParameters(self): - return self.getTypedRuleContext(Java8Parser.LambdaParametersContext,0) - - - def ARROW(self): - return self.getToken(Java8Parser.ARROW, 0) - - def lambdaBody(self): - return self.getTypedRuleContext(Java8Parser.LambdaBodyContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_lambdaExpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLambdaExpression" ): - listener.enterLambdaExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLambdaExpression" ): - listener.exitLambdaExpression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLambdaExpression" ): - return visitor.visitLambdaExpression(self) - else: - return visitor.visitChildren(self) - - - - - def lambdaExpression(self): - - localctx = Java8Parser.LambdaExpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 414, self.RULE_lambdaExpression) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2574 - self.lambdaParameters() - self.state = 2575 - self.match(Java8Parser.ARROW) - self.state = 2576 - self.lambdaBody() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class LambdaParametersContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Identifier(self): - return self.getToken(Java8Parser.Identifier, 0) - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def formalParameterList(self): - return self.getTypedRuleContext(Java8Parser.FormalParameterListContext,0) - - - def inferredFormalParameterList(self): - return self.getTypedRuleContext(Java8Parser.InferredFormalParameterListContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_lambdaParameters - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLambdaParameters" ): - listener.enterLambdaParameters(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLambdaParameters" ): - listener.exitLambdaParameters(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLambdaParameters" ): - return visitor.visitLambdaParameters(self) - else: - return visitor.visitChildren(self) - - - - - def lambdaParameters(self): - - localctx = Java8Parser.LambdaParametersContext(self, self._ctx, self.state) - self.enterRule(localctx, 416, self.RULE_lambdaParameters) - self._la = 0 # Token type - try: - self.state = 2588 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,293,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2578 - self.match(Java8Parser.Identifier) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2579 - self.match(Java8Parser.LPAREN) - self.state = 2581 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << Java8Parser.BOOLEAN) | (1 << Java8Parser.BYTE) | (1 << Java8Parser.CHAR) | (1 << Java8Parser.DOUBLE) | (1 << Java8Parser.FINAL) | (1 << Java8Parser.FLOAT) | (1 << Java8Parser.INT) | (1 << Java8Parser.LONG) | (1 << Java8Parser.SHORT))) != 0) or _la==Java8Parser.Identifier or _la==Java8Parser.AT: - self.state = 2580 - self.formalParameterList() - - - self.state = 2583 - self.match(Java8Parser.RPAREN) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 2584 - self.match(Java8Parser.LPAREN) - self.state = 2585 - self.inferredFormalParameterList() - self.state = 2586 - self.match(Java8Parser.RPAREN) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class InferredFormalParameterListContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Identifier(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.Identifier) - else: - return self.getToken(Java8Parser.Identifier, i) - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.COMMA) - else: - return self.getToken(Java8Parser.COMMA, i) - - def getRuleIndex(self): - return Java8Parser.RULE_inferredFormalParameterList - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInferredFormalParameterList" ): - listener.enterInferredFormalParameterList(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInferredFormalParameterList" ): - listener.exitInferredFormalParameterList(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInferredFormalParameterList" ): - return visitor.visitInferredFormalParameterList(self) - else: - return visitor.visitChildren(self) - - - - - def inferredFormalParameterList(self): - - localctx = Java8Parser.InferredFormalParameterListContext(self, self._ctx, self.state) - self.enterRule(localctx, 418, self.RULE_inferredFormalParameterList) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 2590 - self.match(Java8Parser.Identifier) - self.state = 2595 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.COMMA: - self.state = 2591 - self.match(Java8Parser.COMMA) - self.state = 2592 - self.match(Java8Parser.Identifier) - self.state = 2597 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class LambdaBodyContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def expression(self): - return self.getTypedRuleContext(Java8Parser.ExpressionContext,0) - - - def block(self): - return self.getTypedRuleContext(Java8Parser.BlockContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_lambdaBody - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLambdaBody" ): - listener.enterLambdaBody(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLambdaBody" ): - listener.exitLambdaBody(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLambdaBody" ): - return visitor.visitLambdaBody(self) - else: - return visitor.visitChildren(self) - - - - - def lambdaBody(self): - - localctx = Java8Parser.LambdaBodyContext(self, self._ctx, self.state) - self.enterRule(localctx, 420, self.RULE_lambdaBody) - try: - self.state = 2600 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [Java8Parser.BOOLEAN, Java8Parser.BYTE, Java8Parser.CHAR, Java8Parser.DOUBLE, Java8Parser.FLOAT, Java8Parser.INT, Java8Parser.LONG, Java8Parser.NEW, Java8Parser.SHORT, Java8Parser.SUPER, Java8Parser.THIS, Java8Parser.VOID, Java8Parser.IntegerLiteral, Java8Parser.FloatingPointLiteral, Java8Parser.BooleanLiteral, Java8Parser.CharacterLiteral, Java8Parser.StringLiteral, Java8Parser.NullLiteral, Java8Parser.LPAREN, Java8Parser.BANG, Java8Parser.TILDE, Java8Parser.INC, Java8Parser.DEC, Java8Parser.ADD, Java8Parser.SUB, Java8Parser.Identifier, Java8Parser.AT]: - self.enterOuterAlt(localctx, 1) - self.state = 2598 - self.expression() - pass - elif token in [Java8Parser.LBRACE]: - self.enterOuterAlt(localctx, 2) - self.state = 2599 - self.block() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AssignmentExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def conditionalExpression(self): - return self.getTypedRuleContext(Java8Parser.ConditionalExpressionContext,0) - - - def assignment(self): - return self.getTypedRuleContext(Java8Parser.AssignmentContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_assignmentExpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAssignmentExpression" ): - listener.enterAssignmentExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAssignmentExpression" ): - listener.exitAssignmentExpression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAssignmentExpression" ): - return visitor.visitAssignmentExpression(self) - else: - return visitor.visitChildren(self) - - - - - def assignmentExpression(self): - - localctx = Java8Parser.AssignmentExpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 422, self.RULE_assignmentExpression) - try: - self.state = 2604 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,296,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2602 - self.conditionalExpression() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2603 - self.assignment() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AssignmentContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def leftHandSide(self): - return self.getTypedRuleContext(Java8Parser.LeftHandSideContext,0) - - - def assignmentOperator(self): - return self.getTypedRuleContext(Java8Parser.AssignmentOperatorContext,0) - - - def expression(self): - return self.getTypedRuleContext(Java8Parser.ExpressionContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_assignment - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAssignment" ): - listener.enterAssignment(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAssignment" ): - listener.exitAssignment(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAssignment" ): - return visitor.visitAssignment(self) - else: - return visitor.visitChildren(self) - - - - - def assignment(self): - - localctx = Java8Parser.AssignmentContext(self, self._ctx, self.state) - self.enterRule(localctx, 424, self.RULE_assignment) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2606 - self.leftHandSide() - self.state = 2607 - self.assignmentOperator() - self.state = 2608 - self.expression() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class LeftHandSideContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def expressionName(self): - return self.getTypedRuleContext(Java8Parser.ExpressionNameContext,0) - - - def fieldAccess(self): - return self.getTypedRuleContext(Java8Parser.FieldAccessContext,0) - - - def arrayAccess(self): - return self.getTypedRuleContext(Java8Parser.ArrayAccessContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_leftHandSide - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLeftHandSide" ): - listener.enterLeftHandSide(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLeftHandSide" ): - listener.exitLeftHandSide(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLeftHandSide" ): - return visitor.visitLeftHandSide(self) - else: - return visitor.visitChildren(self) - - - - - def leftHandSide(self): - - localctx = Java8Parser.LeftHandSideContext(self, self._ctx, self.state) - self.enterRule(localctx, 426, self.RULE_leftHandSide) - try: - self.state = 2613 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,297,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2610 - self.expressionName() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2611 - self.fieldAccess() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 2612 - self.arrayAccess() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AssignmentOperatorContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ASSIGN(self): - return self.getToken(Java8Parser.ASSIGN, 0) - - def MUL_ASSIGN(self): - return self.getToken(Java8Parser.MUL_ASSIGN, 0) - - def DIV_ASSIGN(self): - return self.getToken(Java8Parser.DIV_ASSIGN, 0) - - def MOD_ASSIGN(self): - return self.getToken(Java8Parser.MOD_ASSIGN, 0) - - def ADD_ASSIGN(self): - return self.getToken(Java8Parser.ADD_ASSIGN, 0) - - def SUB_ASSIGN(self): - return self.getToken(Java8Parser.SUB_ASSIGN, 0) - - def LSHIFT_ASSIGN(self): - return self.getToken(Java8Parser.LSHIFT_ASSIGN, 0) - - def RSHIFT_ASSIGN(self): - return self.getToken(Java8Parser.RSHIFT_ASSIGN, 0) - - def URSHIFT_ASSIGN(self): - return self.getToken(Java8Parser.URSHIFT_ASSIGN, 0) - - def AND_ASSIGN(self): - return self.getToken(Java8Parser.AND_ASSIGN, 0) - - def XOR_ASSIGN(self): - return self.getToken(Java8Parser.XOR_ASSIGN, 0) - - def OR_ASSIGN(self): - return self.getToken(Java8Parser.OR_ASSIGN, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_assignmentOperator - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAssignmentOperator" ): - listener.enterAssignmentOperator(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAssignmentOperator" ): - listener.exitAssignmentOperator(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAssignmentOperator" ): - return visitor.visitAssignmentOperator(self) - else: - return visitor.visitChildren(self) - - - - - def assignmentOperator(self): - - localctx = Java8Parser.AssignmentOperatorContext(self, self._ctx, self.state) - self.enterRule(localctx, 428, self.RULE_assignmentOperator) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 2615 - _la = self._input.LA(1) - if not(((((_la - 66)) & ~0x3f) == 0 and ((1 << (_la - 66)) & ((1 << (Java8Parser.ASSIGN - 66)) | (1 << (Java8Parser.ADD_ASSIGN - 66)) | (1 << (Java8Parser.SUB_ASSIGN - 66)) | (1 << (Java8Parser.MUL_ASSIGN - 66)) | (1 << (Java8Parser.DIV_ASSIGN - 66)) | (1 << (Java8Parser.AND_ASSIGN - 66)) | (1 << (Java8Parser.OR_ASSIGN - 66)) | (1 << (Java8Parser.XOR_ASSIGN - 66)) | (1 << (Java8Parser.MOD_ASSIGN - 66)) | (1 << (Java8Parser.LSHIFT_ASSIGN - 66)) | (1 << (Java8Parser.RSHIFT_ASSIGN - 66)) | (1 << (Java8Parser.URSHIFT_ASSIGN - 66)))) != 0)): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ConditionalExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def conditionalOrExpression(self): - return self.getTypedRuleContext(Java8Parser.ConditionalOrExpressionContext,0) - - - def QUESTION(self): - return self.getToken(Java8Parser.QUESTION, 0) - - def expression(self): - return self.getTypedRuleContext(Java8Parser.ExpressionContext,0) - - - def COLON(self): - return self.getToken(Java8Parser.COLON, 0) - - def conditionalExpression(self): - return self.getTypedRuleContext(Java8Parser.ConditionalExpressionContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_conditionalExpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConditionalExpression" ): - listener.enterConditionalExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConditionalExpression" ): - listener.exitConditionalExpression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConditionalExpression" ): - return visitor.visitConditionalExpression(self) - else: - return visitor.visitChildren(self) - - - - - def conditionalExpression(self): - - localctx = Java8Parser.ConditionalExpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 430, self.RULE_conditionalExpression) - try: - self.state = 2624 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,298,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2617 - self.conditionalOrExpression(0) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2618 - self.conditionalOrExpression(0) - self.state = 2619 - self.match(Java8Parser.QUESTION) - self.state = 2620 - self.expression() - self.state = 2621 - self.match(Java8Parser.COLON) - self.state = 2622 - self.conditionalExpression() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ConditionalOrExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def conditionalAndExpression(self): - return self.getTypedRuleContext(Java8Parser.ConditionalAndExpressionContext,0) - - - def conditionalOrExpression(self): - return self.getTypedRuleContext(Java8Parser.ConditionalOrExpressionContext,0) - - - def OR(self): - return self.getToken(Java8Parser.OR, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_conditionalOrExpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConditionalOrExpression" ): - listener.enterConditionalOrExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConditionalOrExpression" ): - listener.exitConditionalOrExpression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConditionalOrExpression" ): - return visitor.visitConditionalOrExpression(self) - else: - return visitor.visitChildren(self) - - - - def conditionalOrExpression(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = Java8Parser.ConditionalOrExpressionContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 432 - self.enterRecursionRule(localctx, 432, self.RULE_conditionalOrExpression, _p) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2627 - self.conditionalAndExpression(0) - self._ctx.stop = self._input.LT(-1) - self.state = 2634 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,299,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - if self._parseListeners is not None: - self.triggerExitRuleEvent() - _prevctx = localctx - localctx = Java8Parser.ConditionalOrExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_conditionalOrExpression) - self.state = 2629 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 2630 - self.match(Java8Parser.OR) - self.state = 2631 - self.conditionalAndExpression(0) - self.state = 2636 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,299,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.unrollRecursionContexts(_parentctx) - return localctx - - - class ConditionalAndExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def inclusiveOrExpression(self): - return self.getTypedRuleContext(Java8Parser.InclusiveOrExpressionContext,0) - - - def conditionalAndExpression(self): - return self.getTypedRuleContext(Java8Parser.ConditionalAndExpressionContext,0) - - - def AND(self): - return self.getToken(Java8Parser.AND, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_conditionalAndExpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConditionalAndExpression" ): - listener.enterConditionalAndExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConditionalAndExpression" ): - listener.exitConditionalAndExpression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConditionalAndExpression" ): - return visitor.visitConditionalAndExpression(self) - else: - return visitor.visitChildren(self) - - - - def conditionalAndExpression(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = Java8Parser.ConditionalAndExpressionContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 434 - self.enterRecursionRule(localctx, 434, self.RULE_conditionalAndExpression, _p) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2638 - self.inclusiveOrExpression(0) - self._ctx.stop = self._input.LT(-1) - self.state = 2645 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,300,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - if self._parseListeners is not None: - self.triggerExitRuleEvent() - _prevctx = localctx - localctx = Java8Parser.ConditionalAndExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_conditionalAndExpression) - self.state = 2640 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 2641 - self.match(Java8Parser.AND) - self.state = 2642 - self.inclusiveOrExpression(0) - self.state = 2647 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,300,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.unrollRecursionContexts(_parentctx) - return localctx - - - class InclusiveOrExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def exclusiveOrExpression(self): - return self.getTypedRuleContext(Java8Parser.ExclusiveOrExpressionContext,0) - - - def inclusiveOrExpression(self): - return self.getTypedRuleContext(Java8Parser.InclusiveOrExpressionContext,0) - - - def BITOR(self): - return self.getToken(Java8Parser.BITOR, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_inclusiveOrExpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInclusiveOrExpression" ): - listener.enterInclusiveOrExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInclusiveOrExpression" ): - listener.exitInclusiveOrExpression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInclusiveOrExpression" ): - return visitor.visitInclusiveOrExpression(self) - else: - return visitor.visitChildren(self) - - - - def inclusiveOrExpression(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = Java8Parser.InclusiveOrExpressionContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 436 - self.enterRecursionRule(localctx, 436, self.RULE_inclusiveOrExpression, _p) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2649 - self.exclusiveOrExpression(0) - self._ctx.stop = self._input.LT(-1) - self.state = 2656 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,301,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - if self._parseListeners is not None: - self.triggerExitRuleEvent() - _prevctx = localctx - localctx = Java8Parser.InclusiveOrExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_inclusiveOrExpression) - self.state = 2651 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 2652 - self.match(Java8Parser.BITOR) - self.state = 2653 - self.exclusiveOrExpression(0) - self.state = 2658 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,301,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.unrollRecursionContexts(_parentctx) - return localctx - - - class ExclusiveOrExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def andExpression(self): - return self.getTypedRuleContext(Java8Parser.AndExpressionContext,0) - - - def exclusiveOrExpression(self): - return self.getTypedRuleContext(Java8Parser.ExclusiveOrExpressionContext,0) - - - def CARET(self): - return self.getToken(Java8Parser.CARET, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_exclusiveOrExpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExclusiveOrExpression" ): - listener.enterExclusiveOrExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExclusiveOrExpression" ): - listener.exitExclusiveOrExpression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExclusiveOrExpression" ): - return visitor.visitExclusiveOrExpression(self) - else: - return visitor.visitChildren(self) - - - - def exclusiveOrExpression(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = Java8Parser.ExclusiveOrExpressionContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 438 - self.enterRecursionRule(localctx, 438, self.RULE_exclusiveOrExpression, _p) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2660 - self.andExpression(0) - self._ctx.stop = self._input.LT(-1) - self.state = 2667 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,302,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - if self._parseListeners is not None: - self.triggerExitRuleEvent() - _prevctx = localctx - localctx = Java8Parser.ExclusiveOrExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_exclusiveOrExpression) - self.state = 2662 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 2663 - self.match(Java8Parser.CARET) - self.state = 2664 - self.andExpression(0) - self.state = 2669 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,302,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.unrollRecursionContexts(_parentctx) - return localctx - - - class AndExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def equalityExpression(self): - return self.getTypedRuleContext(Java8Parser.EqualityExpressionContext,0) - - - def andExpression(self): - return self.getTypedRuleContext(Java8Parser.AndExpressionContext,0) - - - def BITAND(self): - return self.getToken(Java8Parser.BITAND, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_andExpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAndExpression" ): - listener.enterAndExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAndExpression" ): - listener.exitAndExpression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAndExpression" ): - return visitor.visitAndExpression(self) - else: - return visitor.visitChildren(self) - - - - def andExpression(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = Java8Parser.AndExpressionContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 440 - self.enterRecursionRule(localctx, 440, self.RULE_andExpression, _p) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2671 - self.equalityExpression(0) - self._ctx.stop = self._input.LT(-1) - self.state = 2678 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,303,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - if self._parseListeners is not None: - self.triggerExitRuleEvent() - _prevctx = localctx - localctx = Java8Parser.AndExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_andExpression) - self.state = 2673 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 2674 - self.match(Java8Parser.BITAND) - self.state = 2675 - self.equalityExpression(0) - self.state = 2680 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,303,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.unrollRecursionContexts(_parentctx) - return localctx - - - class EqualityExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def relationalExpression(self): - return self.getTypedRuleContext(Java8Parser.RelationalExpressionContext,0) - - - def equalityExpression(self): - return self.getTypedRuleContext(Java8Parser.EqualityExpressionContext,0) - - - def EQUAL(self): - return self.getToken(Java8Parser.EQUAL, 0) - - def NOTEQUAL(self): - return self.getToken(Java8Parser.NOTEQUAL, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_equalityExpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEqualityExpression" ): - listener.enterEqualityExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEqualityExpression" ): - listener.exitEqualityExpression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEqualityExpression" ): - return visitor.visitEqualityExpression(self) - else: - return visitor.visitChildren(self) - - - - def equalityExpression(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = Java8Parser.EqualityExpressionContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 442 - self.enterRecursionRule(localctx, 442, self.RULE_equalityExpression, _p) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2682 - self.relationalExpression(0) - self._ctx.stop = self._input.LT(-1) - self.state = 2692 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,305,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - if self._parseListeners is not None: - self.triggerExitRuleEvent() - _prevctx = localctx - self.state = 2690 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,304,self._ctx) - if la_ == 1: - localctx = Java8Parser.EqualityExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_equalityExpression) - self.state = 2684 - if not self.precpred(self._ctx, 2): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") - self.state = 2685 - self.match(Java8Parser.EQUAL) - self.state = 2686 - self.relationalExpression(0) - pass - - elif la_ == 2: - localctx = Java8Parser.EqualityExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_equalityExpression) - self.state = 2687 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 2688 - self.match(Java8Parser.NOTEQUAL) - self.state = 2689 - self.relationalExpression(0) - pass - - - self.state = 2694 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,305,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.unrollRecursionContexts(_parentctx) - return localctx - - - class RelationalExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def shiftExpression(self): - return self.getTypedRuleContext(Java8Parser.ShiftExpressionContext,0) - - - def relationalExpression(self): - return self.getTypedRuleContext(Java8Parser.RelationalExpressionContext,0) - - - def LT(self): - return self.getToken(Java8Parser.LT, 0) - - def GT(self): - return self.getToken(Java8Parser.GT, 0) - - def LE(self): - return self.getToken(Java8Parser.LE, 0) - - def GE(self): - return self.getToken(Java8Parser.GE, 0) - - def INSTANCEOF(self): - return self.getToken(Java8Parser.INSTANCEOF, 0) - - def referenceType(self): - return self.getTypedRuleContext(Java8Parser.ReferenceTypeContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_relationalExpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRelationalExpression" ): - listener.enterRelationalExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRelationalExpression" ): - listener.exitRelationalExpression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRelationalExpression" ): - return visitor.visitRelationalExpression(self) - else: - return visitor.visitChildren(self) - - - - def relationalExpression(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = Java8Parser.RelationalExpressionContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 444 - self.enterRecursionRule(localctx, 444, self.RULE_relationalExpression, _p) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2696 - self.shiftExpression(0) - self._ctx.stop = self._input.LT(-1) - self.state = 2715 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,307,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - if self._parseListeners is not None: - self.triggerExitRuleEvent() - _prevctx = localctx - self.state = 2713 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,306,self._ctx) - if la_ == 1: - localctx = Java8Parser.RelationalExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_relationalExpression) - self.state = 2698 - if not self.precpred(self._ctx, 5): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 5)") - self.state = 2699 - self.match(Java8Parser.LT) - self.state = 2700 - self.shiftExpression(0) - pass - - elif la_ == 2: - localctx = Java8Parser.RelationalExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_relationalExpression) - self.state = 2701 - if not self.precpred(self._ctx, 4): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 4)") - self.state = 2702 - self.match(Java8Parser.GT) - self.state = 2703 - self.shiftExpression(0) - pass - - elif la_ == 3: - localctx = Java8Parser.RelationalExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_relationalExpression) - self.state = 2704 - if not self.precpred(self._ctx, 3): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") - self.state = 2705 - self.match(Java8Parser.LE) - self.state = 2706 - self.shiftExpression(0) - pass - - elif la_ == 4: - localctx = Java8Parser.RelationalExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_relationalExpression) - self.state = 2707 - if not self.precpred(self._ctx, 2): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") - self.state = 2708 - self.match(Java8Parser.GE) - self.state = 2709 - self.shiftExpression(0) - pass - - elif la_ == 5: - localctx = Java8Parser.RelationalExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_relationalExpression) - self.state = 2710 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 2711 - self.match(Java8Parser.INSTANCEOF) - self.state = 2712 - self.referenceType() - pass - - - self.state = 2717 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,307,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.unrollRecursionContexts(_parentctx) - return localctx - - - class ShiftExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def additiveExpression(self): - return self.getTypedRuleContext(Java8Parser.AdditiveExpressionContext,0) - - - def shiftExpression(self): - return self.getTypedRuleContext(Java8Parser.ShiftExpressionContext,0) - - - def LT(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.LT) - else: - return self.getToken(Java8Parser.LT, i) - - def GT(self, i:int=None): - if i is None: - return self.getTokens(Java8Parser.GT) - else: - return self.getToken(Java8Parser.GT, i) - - def getRuleIndex(self): - return Java8Parser.RULE_shiftExpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterShiftExpression" ): - listener.enterShiftExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitShiftExpression" ): - listener.exitShiftExpression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitShiftExpression" ): - return visitor.visitShiftExpression(self) - else: - return visitor.visitChildren(self) - - - - def shiftExpression(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = Java8Parser.ShiftExpressionContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 446 - self.enterRecursionRule(localctx, 446, self.RULE_shiftExpression, _p) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2719 - self.additiveExpression(0) - self._ctx.stop = self._input.LT(-1) - self.state = 2736 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,309,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - if self._parseListeners is not None: - self.triggerExitRuleEvent() - _prevctx = localctx - self.state = 2734 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,308,self._ctx) - if la_ == 1: - localctx = Java8Parser.ShiftExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_shiftExpression) - self.state = 2721 - if not self.precpred(self._ctx, 3): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") - self.state = 2722 - self.match(Java8Parser.LT) - self.state = 2723 - self.match(Java8Parser.LT) - self.state = 2724 - self.additiveExpression(0) - pass - - elif la_ == 2: - localctx = Java8Parser.ShiftExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_shiftExpression) - self.state = 2725 - if not self.precpred(self._ctx, 2): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") - self.state = 2726 - self.match(Java8Parser.GT) - self.state = 2727 - self.match(Java8Parser.GT) - self.state = 2728 - self.additiveExpression(0) - pass - - elif la_ == 3: - localctx = Java8Parser.ShiftExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_shiftExpression) - self.state = 2729 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 2730 - self.match(Java8Parser.GT) - self.state = 2731 - self.match(Java8Parser.GT) - self.state = 2732 - self.match(Java8Parser.GT) - self.state = 2733 - self.additiveExpression(0) - pass - - - self.state = 2738 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,309,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.unrollRecursionContexts(_parentctx) - return localctx - - - class AdditiveExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def multiplicativeExpression(self): - return self.getTypedRuleContext(Java8Parser.MultiplicativeExpressionContext,0) - - - def additiveExpression(self): - return self.getTypedRuleContext(Java8Parser.AdditiveExpressionContext,0) - - - def ADD(self): - return self.getToken(Java8Parser.ADD, 0) - - def SUB(self): - return self.getToken(Java8Parser.SUB, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_additiveExpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAdditiveExpression" ): - listener.enterAdditiveExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAdditiveExpression" ): - listener.exitAdditiveExpression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAdditiveExpression" ): - return visitor.visitAdditiveExpression(self) - else: - return visitor.visitChildren(self) - - - - def additiveExpression(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = Java8Parser.AdditiveExpressionContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 448 - self.enterRecursionRule(localctx, 448, self.RULE_additiveExpression, _p) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2740 - self.multiplicativeExpression(0) - self._ctx.stop = self._input.LT(-1) - self.state = 2750 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,311,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - if self._parseListeners is not None: - self.triggerExitRuleEvent() - _prevctx = localctx - self.state = 2748 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,310,self._ctx) - if la_ == 1: - localctx = Java8Parser.AdditiveExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_additiveExpression) - self.state = 2742 - if not self.precpred(self._ctx, 2): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") - self.state = 2743 - self.match(Java8Parser.ADD) - self.state = 2744 - self.multiplicativeExpression(0) - pass - - elif la_ == 2: - localctx = Java8Parser.AdditiveExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_additiveExpression) - self.state = 2745 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 2746 - self.match(Java8Parser.SUB) - self.state = 2747 - self.multiplicativeExpression(0) - pass - - - self.state = 2752 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,311,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.unrollRecursionContexts(_parentctx) - return localctx - - - class MultiplicativeExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def unaryExpression(self): - return self.getTypedRuleContext(Java8Parser.UnaryExpressionContext,0) - - - def multiplicativeExpression(self): - return self.getTypedRuleContext(Java8Parser.MultiplicativeExpressionContext,0) - - - def MUL(self): - return self.getToken(Java8Parser.MUL, 0) - - def DIV(self): - return self.getToken(Java8Parser.DIV, 0) - - def MOD(self): - return self.getToken(Java8Parser.MOD, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_multiplicativeExpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMultiplicativeExpression" ): - listener.enterMultiplicativeExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMultiplicativeExpression" ): - listener.exitMultiplicativeExpression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMultiplicativeExpression" ): - return visitor.visitMultiplicativeExpression(self) - else: - return visitor.visitChildren(self) - - - - def multiplicativeExpression(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = Java8Parser.MultiplicativeExpressionContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 450 - self.enterRecursionRule(localctx, 450, self.RULE_multiplicativeExpression, _p) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2754 - self.unaryExpression() - self._ctx.stop = self._input.LT(-1) - self.state = 2767 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,313,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - if self._parseListeners is not None: - self.triggerExitRuleEvent() - _prevctx = localctx - self.state = 2765 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,312,self._ctx) - if la_ == 1: - localctx = Java8Parser.MultiplicativeExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_multiplicativeExpression) - self.state = 2756 - if not self.precpred(self._ctx, 3): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") - self.state = 2757 - self.match(Java8Parser.MUL) - self.state = 2758 - self.unaryExpression() - pass - - elif la_ == 2: - localctx = Java8Parser.MultiplicativeExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_multiplicativeExpression) - self.state = 2759 - if not self.precpred(self._ctx, 2): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") - self.state = 2760 - self.match(Java8Parser.DIV) - self.state = 2761 - self.unaryExpression() - pass - - elif la_ == 3: - localctx = Java8Parser.MultiplicativeExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_multiplicativeExpression) - self.state = 2762 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 2763 - self.match(Java8Parser.MOD) - self.state = 2764 - self.unaryExpression() - pass - - - self.state = 2769 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,313,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.unrollRecursionContexts(_parentctx) - return localctx - - - class UnaryExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def preIncrementExpression(self): - return self.getTypedRuleContext(Java8Parser.PreIncrementExpressionContext,0) - - - def preDecrementExpression(self): - return self.getTypedRuleContext(Java8Parser.PreDecrementExpressionContext,0) - - - def ADD(self): - return self.getToken(Java8Parser.ADD, 0) - - def unaryExpression(self): - return self.getTypedRuleContext(Java8Parser.UnaryExpressionContext,0) - - - def SUB(self): - return self.getToken(Java8Parser.SUB, 0) - - def unaryExpressionNotPlusMinus(self): - return self.getTypedRuleContext(Java8Parser.UnaryExpressionNotPlusMinusContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_unaryExpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterUnaryExpression" ): - listener.enterUnaryExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitUnaryExpression" ): - listener.exitUnaryExpression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitUnaryExpression" ): - return visitor.visitUnaryExpression(self) - else: - return visitor.visitChildren(self) - - - - - def unaryExpression(self): - - localctx = Java8Parser.UnaryExpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 452, self.RULE_unaryExpression) - try: - self.state = 2777 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [Java8Parser.INC]: - self.enterOuterAlt(localctx, 1) - self.state = 2770 - self.preIncrementExpression() - pass - elif token in [Java8Parser.DEC]: - self.enterOuterAlt(localctx, 2) - self.state = 2771 - self.preDecrementExpression() - pass - elif token in [Java8Parser.ADD]: - self.enterOuterAlt(localctx, 3) - self.state = 2772 - self.match(Java8Parser.ADD) - self.state = 2773 - self.unaryExpression() - pass - elif token in [Java8Parser.SUB]: - self.enterOuterAlt(localctx, 4) - self.state = 2774 - self.match(Java8Parser.SUB) - self.state = 2775 - self.unaryExpression() - pass - elif token in [Java8Parser.BOOLEAN, Java8Parser.BYTE, Java8Parser.CHAR, Java8Parser.DOUBLE, Java8Parser.FLOAT, Java8Parser.INT, Java8Parser.LONG, Java8Parser.NEW, Java8Parser.SHORT, Java8Parser.SUPER, Java8Parser.THIS, Java8Parser.VOID, Java8Parser.IntegerLiteral, Java8Parser.FloatingPointLiteral, Java8Parser.BooleanLiteral, Java8Parser.CharacterLiteral, Java8Parser.StringLiteral, Java8Parser.NullLiteral, Java8Parser.LPAREN, Java8Parser.BANG, Java8Parser.TILDE, Java8Parser.Identifier, Java8Parser.AT]: - self.enterOuterAlt(localctx, 5) - self.state = 2776 - self.unaryExpressionNotPlusMinus() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PreIncrementExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def INC(self): - return self.getToken(Java8Parser.INC, 0) - - def unaryExpression(self): - return self.getTypedRuleContext(Java8Parser.UnaryExpressionContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_preIncrementExpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPreIncrementExpression" ): - listener.enterPreIncrementExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPreIncrementExpression" ): - listener.exitPreIncrementExpression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPreIncrementExpression" ): - return visitor.visitPreIncrementExpression(self) - else: - return visitor.visitChildren(self) - - - - - def preIncrementExpression(self): - - localctx = Java8Parser.PreIncrementExpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 454, self.RULE_preIncrementExpression) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2779 - self.match(Java8Parser.INC) - self.state = 2780 - self.unaryExpression() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PreDecrementExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DEC(self): - return self.getToken(Java8Parser.DEC, 0) - - def unaryExpression(self): - return self.getTypedRuleContext(Java8Parser.UnaryExpressionContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_preDecrementExpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPreDecrementExpression" ): - listener.enterPreDecrementExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPreDecrementExpression" ): - listener.exitPreDecrementExpression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPreDecrementExpression" ): - return visitor.visitPreDecrementExpression(self) - else: - return visitor.visitChildren(self) - - - - - def preDecrementExpression(self): - - localctx = Java8Parser.PreDecrementExpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 456, self.RULE_preDecrementExpression) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2782 - self.match(Java8Parser.DEC) - self.state = 2783 - self.unaryExpression() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class UnaryExpressionNotPlusMinusContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def postfixExpression(self): - return self.getTypedRuleContext(Java8Parser.PostfixExpressionContext,0) - - - def TILDE(self): - return self.getToken(Java8Parser.TILDE, 0) - - def unaryExpression(self): - return self.getTypedRuleContext(Java8Parser.UnaryExpressionContext,0) - - - def BANG(self): - return self.getToken(Java8Parser.BANG, 0) - - def castExpression(self): - return self.getTypedRuleContext(Java8Parser.CastExpressionContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_unaryExpressionNotPlusMinus - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterUnaryExpressionNotPlusMinus" ): - listener.enterUnaryExpressionNotPlusMinus(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitUnaryExpressionNotPlusMinus" ): - listener.exitUnaryExpressionNotPlusMinus(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitUnaryExpressionNotPlusMinus" ): - return visitor.visitUnaryExpressionNotPlusMinus(self) - else: - return visitor.visitChildren(self) - - - - - def unaryExpressionNotPlusMinus(self): - - localctx = Java8Parser.UnaryExpressionNotPlusMinusContext(self, self._ctx, self.state) - self.enterRule(localctx, 458, self.RULE_unaryExpressionNotPlusMinus) - try: - self.state = 2791 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,315,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2785 - self.postfixExpression() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2786 - self.match(Java8Parser.TILDE) - self.state = 2787 - self.unaryExpression() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 2788 - self.match(Java8Parser.BANG) - self.state = 2789 - self.unaryExpression() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 2790 - self.castExpression() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PostfixExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def primary(self): - return self.getTypedRuleContext(Java8Parser.PrimaryContext,0) - - - def expressionName(self): - return self.getTypedRuleContext(Java8Parser.ExpressionNameContext,0) - - - def postIncrementExpression_lf_postfixExpression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.PostIncrementExpression_lf_postfixExpressionContext) - else: - return self.getTypedRuleContext(Java8Parser.PostIncrementExpression_lf_postfixExpressionContext,i) - - - def postDecrementExpression_lf_postfixExpression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.PostDecrementExpression_lf_postfixExpressionContext) - else: - return self.getTypedRuleContext(Java8Parser.PostDecrementExpression_lf_postfixExpressionContext,i) - - - def getRuleIndex(self): - return Java8Parser.RULE_postfixExpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPostfixExpression" ): - listener.enterPostfixExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPostfixExpression" ): - listener.exitPostfixExpression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPostfixExpression" ): - return visitor.visitPostfixExpression(self) - else: - return visitor.visitChildren(self) - - - - - def postfixExpression(self): - - localctx = Java8Parser.PostfixExpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 460, self.RULE_postfixExpression) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2795 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,316,self._ctx) - if la_ == 1: - self.state = 2793 - self.primary() - pass - - elif la_ == 2: - self.state = 2794 - self.expressionName() - pass - - - self.state = 2801 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,318,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 2799 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [Java8Parser.INC]: - self.state = 2797 - self.postIncrementExpression_lf_postfixExpression() - pass - elif token in [Java8Parser.DEC]: - self.state = 2798 - self.postDecrementExpression_lf_postfixExpression() - pass - else: - raise NoViableAltException(self) - - self.state = 2803 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,318,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PostIncrementExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def postfixExpression(self): - return self.getTypedRuleContext(Java8Parser.PostfixExpressionContext,0) - - - def INC(self): - return self.getToken(Java8Parser.INC, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_postIncrementExpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPostIncrementExpression" ): - listener.enterPostIncrementExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPostIncrementExpression" ): - listener.exitPostIncrementExpression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPostIncrementExpression" ): - return visitor.visitPostIncrementExpression(self) - else: - return visitor.visitChildren(self) - - - - - def postIncrementExpression(self): - - localctx = Java8Parser.PostIncrementExpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 462, self.RULE_postIncrementExpression) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2804 - self.postfixExpression() - self.state = 2805 - self.match(Java8Parser.INC) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PostIncrementExpression_lf_postfixExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def INC(self): - return self.getToken(Java8Parser.INC, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_postIncrementExpression_lf_postfixExpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPostIncrementExpression_lf_postfixExpression" ): - listener.enterPostIncrementExpression_lf_postfixExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPostIncrementExpression_lf_postfixExpression" ): - listener.exitPostIncrementExpression_lf_postfixExpression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPostIncrementExpression_lf_postfixExpression" ): - return visitor.visitPostIncrementExpression_lf_postfixExpression(self) - else: - return visitor.visitChildren(self) - - - - - def postIncrementExpression_lf_postfixExpression(self): - - localctx = Java8Parser.PostIncrementExpression_lf_postfixExpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 464, self.RULE_postIncrementExpression_lf_postfixExpression) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2807 - self.match(Java8Parser.INC) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PostDecrementExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def postfixExpression(self): - return self.getTypedRuleContext(Java8Parser.PostfixExpressionContext,0) - - - def DEC(self): - return self.getToken(Java8Parser.DEC, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_postDecrementExpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPostDecrementExpression" ): - listener.enterPostDecrementExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPostDecrementExpression" ): - listener.exitPostDecrementExpression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPostDecrementExpression" ): - return visitor.visitPostDecrementExpression(self) - else: - return visitor.visitChildren(self) - - - - - def postDecrementExpression(self): - - localctx = Java8Parser.PostDecrementExpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 466, self.RULE_postDecrementExpression) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2809 - self.postfixExpression() - self.state = 2810 - self.match(Java8Parser.DEC) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PostDecrementExpression_lf_postfixExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DEC(self): - return self.getToken(Java8Parser.DEC, 0) - - def getRuleIndex(self): - return Java8Parser.RULE_postDecrementExpression_lf_postfixExpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPostDecrementExpression_lf_postfixExpression" ): - listener.enterPostDecrementExpression_lf_postfixExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPostDecrementExpression_lf_postfixExpression" ): - listener.exitPostDecrementExpression_lf_postfixExpression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPostDecrementExpression_lf_postfixExpression" ): - return visitor.visitPostDecrementExpression_lf_postfixExpression(self) - else: - return visitor.visitChildren(self) - - - - - def postDecrementExpression_lf_postfixExpression(self): - - localctx = Java8Parser.PostDecrementExpression_lf_postfixExpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 468, self.RULE_postDecrementExpression_lf_postfixExpression) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2812 - self.match(Java8Parser.DEC) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CastExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def LPAREN(self): - return self.getToken(Java8Parser.LPAREN, 0) - - def primitiveType(self): - return self.getTypedRuleContext(Java8Parser.PrimitiveTypeContext,0) - - - def RPAREN(self): - return self.getToken(Java8Parser.RPAREN, 0) - - def unaryExpression(self): - return self.getTypedRuleContext(Java8Parser.UnaryExpressionContext,0) - - - def referenceType(self): - return self.getTypedRuleContext(Java8Parser.ReferenceTypeContext,0) - - - def unaryExpressionNotPlusMinus(self): - return self.getTypedRuleContext(Java8Parser.UnaryExpressionNotPlusMinusContext,0) - - - def additionalBound(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(Java8Parser.AdditionalBoundContext) - else: - return self.getTypedRuleContext(Java8Parser.AdditionalBoundContext,i) - - - def lambdaExpression(self): - return self.getTypedRuleContext(Java8Parser.LambdaExpressionContext,0) - - - def getRuleIndex(self): - return Java8Parser.RULE_castExpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCastExpression" ): - listener.enterCastExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCastExpression" ): - listener.exitCastExpression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCastExpression" ): - return visitor.visitCastExpression(self) - else: - return visitor.visitChildren(self) - - - - - def castExpression(self): - - localctx = Java8Parser.CastExpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 470, self.RULE_castExpression) - self._la = 0 # Token type - try: - self.state = 2841 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,321,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2814 - self.match(Java8Parser.LPAREN) - self.state = 2815 - self.primitiveType() - self.state = 2816 - self.match(Java8Parser.RPAREN) - self.state = 2817 - self.unaryExpression() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2819 - self.match(Java8Parser.LPAREN) - self.state = 2820 - self.referenceType() - self.state = 2824 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.BITAND: - self.state = 2821 - self.additionalBound() - self.state = 2826 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 2827 - self.match(Java8Parser.RPAREN) - self.state = 2828 - self.unaryExpressionNotPlusMinus() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 2830 - self.match(Java8Parser.LPAREN) - self.state = 2831 - self.referenceType() - self.state = 2835 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==Java8Parser.BITAND: - self.state = 2832 - self.additionalBound() - self.state = 2837 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 2838 - self.match(Java8Parser.RPAREN) - self.state = 2839 - self.lambdaExpression() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - - def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int): - if self._predicates == None: - self._predicates = dict() - self._predicates[25] = self.packageName_sempred - self._predicates[27] = self.packageOrTypeName_sempred - self._predicates[30] = self.ambiguousName_sempred - self._predicates[216] = self.conditionalOrExpression_sempred - self._predicates[217] = self.conditionalAndExpression_sempred - self._predicates[218] = self.inclusiveOrExpression_sempred - self._predicates[219] = self.exclusiveOrExpression_sempred - self._predicates[220] = self.andExpression_sempred - self._predicates[221] = self.equalityExpression_sempred - self._predicates[222] = self.relationalExpression_sempred - self._predicates[223] = self.shiftExpression_sempred - self._predicates[224] = self.additiveExpression_sempred - self._predicates[225] = self.multiplicativeExpression_sempred - pred = self._predicates.get(ruleIndex, None) - if pred is None: - raise Exception("No predicate with index:" + str(ruleIndex)) - else: - return pred(localctx, predIndex) - - def packageName_sempred(self, localctx:PackageNameContext, predIndex:int): - if predIndex == 0: - return self.precpred(self._ctx, 1) - - - def packageOrTypeName_sempred(self, localctx:PackageOrTypeNameContext, predIndex:int): - if predIndex == 1: - return self.precpred(self._ctx, 1) - - - def ambiguousName_sempred(self, localctx:AmbiguousNameContext, predIndex:int): - if predIndex == 2: - return self.precpred(self._ctx, 1) - - - def conditionalOrExpression_sempred(self, localctx:ConditionalOrExpressionContext, predIndex:int): - if predIndex == 3: - return self.precpred(self._ctx, 1) - - - def conditionalAndExpression_sempred(self, localctx:ConditionalAndExpressionContext, predIndex:int): - if predIndex == 4: - return self.precpred(self._ctx, 1) - - - def inclusiveOrExpression_sempred(self, localctx:InclusiveOrExpressionContext, predIndex:int): - if predIndex == 5: - return self.precpred(self._ctx, 1) - - - def exclusiveOrExpression_sempred(self, localctx:ExclusiveOrExpressionContext, predIndex:int): - if predIndex == 6: - return self.precpred(self._ctx, 1) - - - def andExpression_sempred(self, localctx:AndExpressionContext, predIndex:int): - if predIndex == 7: - return self.precpred(self._ctx, 1) - - - def equalityExpression_sempred(self, localctx:EqualityExpressionContext, predIndex:int): - if predIndex == 8: - return self.precpred(self._ctx, 2) - - - if predIndex == 9: - return self.precpred(self._ctx, 1) - - - def relationalExpression_sempred(self, localctx:RelationalExpressionContext, predIndex:int): - if predIndex == 10: - return self.precpred(self._ctx, 5) - - - if predIndex == 11: - return self.precpred(self._ctx, 4) - - - if predIndex == 12: - return self.precpred(self._ctx, 3) - - - if predIndex == 13: - return self.precpred(self._ctx, 2) - - - if predIndex == 14: - return self.precpred(self._ctx, 1) - - - def shiftExpression_sempred(self, localctx:ShiftExpressionContext, predIndex:int): - if predIndex == 15: - return self.precpred(self._ctx, 3) - - - if predIndex == 16: - return self.precpred(self._ctx, 2) - - - if predIndex == 17: - return self.precpred(self._ctx, 1) - - - def additiveExpression_sempred(self, localctx:AdditiveExpressionContext, predIndex:int): - if predIndex == 18: - return self.precpred(self._ctx, 2) - - - if predIndex == 19: - return self.precpred(self._ctx, 1) - - - def multiplicativeExpression_sempred(self, localctx:MultiplicativeExpressionContext, predIndex:int): - if predIndex == 20: - return self.precpred(self._ctx, 3) - - - if predIndex == 21: - return self.precpred(self._ctx, 2) - - - if predIndex == 22: - return self.precpred(self._ctx, 1) - - - - - diff --git a/persper/analytics/call_graph/java/Java8Visitor.py b/persper/analytics/call_graph/java/Java8Visitor.py deleted file mode 100644 index 497e11fa25e..00000000000 --- a/persper/analytics/call_graph/java/Java8Visitor.py +++ /dev/null @@ -1,1193 +0,0 @@ -# Generated from Java8.g4 by ANTLR 4.7.2 -from antlr4 import * -if __name__ is not None and "." in __name__: - from .Java8Parser import Java8Parser -else: - from Java8Parser import Java8Parser - -# This class defines a complete generic visitor for a parse tree produced by Java8Parser. - -class Java8Visitor(ParseTreeVisitor): - - # Visit a parse tree produced by Java8Parser#literal. - def visitLiteral(self, ctx:Java8Parser.LiteralContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#primitiveType. - def visitPrimitiveType(self, ctx:Java8Parser.PrimitiveTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#numericType. - def visitNumericType(self, ctx:Java8Parser.NumericTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#integralType. - def visitIntegralType(self, ctx:Java8Parser.IntegralTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#floatingPointType. - def visitFloatingPointType(self, ctx:Java8Parser.FloatingPointTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#referenceType. - def visitReferenceType(self, ctx:Java8Parser.ReferenceTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#classOrInterfaceType. - def visitClassOrInterfaceType(self, ctx:Java8Parser.ClassOrInterfaceTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#classType. - def visitClassType(self, ctx:Java8Parser.ClassTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#classType_lf_classOrInterfaceType. - def visitClassType_lf_classOrInterfaceType(self, ctx:Java8Parser.ClassType_lf_classOrInterfaceTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#classType_lfno_classOrInterfaceType. - def visitClassType_lfno_classOrInterfaceType(self, ctx:Java8Parser.ClassType_lfno_classOrInterfaceTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#interfaceType. - def visitInterfaceType(self, ctx:Java8Parser.InterfaceTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#interfaceType_lf_classOrInterfaceType. - def visitInterfaceType_lf_classOrInterfaceType(self, ctx:Java8Parser.InterfaceType_lf_classOrInterfaceTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#interfaceType_lfno_classOrInterfaceType. - def visitInterfaceType_lfno_classOrInterfaceType(self, ctx:Java8Parser.InterfaceType_lfno_classOrInterfaceTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#typeVariable. - def visitTypeVariable(self, ctx:Java8Parser.TypeVariableContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#arrayType. - def visitArrayType(self, ctx:Java8Parser.ArrayTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#dims. - def visitDims(self, ctx:Java8Parser.DimsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#typeParameter. - def visitTypeParameter(self, ctx:Java8Parser.TypeParameterContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#typeParameterModifier. - def visitTypeParameterModifier(self, ctx:Java8Parser.TypeParameterModifierContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#typeBound. - def visitTypeBound(self, ctx:Java8Parser.TypeBoundContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#additionalBound. - def visitAdditionalBound(self, ctx:Java8Parser.AdditionalBoundContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#typeArguments. - def visitTypeArguments(self, ctx:Java8Parser.TypeArgumentsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#typeArgumentList. - def visitTypeArgumentList(self, ctx:Java8Parser.TypeArgumentListContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#typeArgument. - def visitTypeArgument(self, ctx:Java8Parser.TypeArgumentContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#wildcard. - def visitWildcard(self, ctx:Java8Parser.WildcardContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#wildcardBounds. - def visitWildcardBounds(self, ctx:Java8Parser.WildcardBoundsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#packageName. - def visitPackageName(self, ctx:Java8Parser.PackageNameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#typeName. - def visitTypeName(self, ctx:Java8Parser.TypeNameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#packageOrTypeName. - def visitPackageOrTypeName(self, ctx:Java8Parser.PackageOrTypeNameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#expressionName. - def visitExpressionName(self, ctx:Java8Parser.ExpressionNameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#methodName. - def visitMethodName(self, ctx:Java8Parser.MethodNameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#ambiguousName. - def visitAmbiguousName(self, ctx:Java8Parser.AmbiguousNameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#compilationUnit. - def visitCompilationUnit(self, ctx:Java8Parser.CompilationUnitContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#packageDeclaration. - def visitPackageDeclaration(self, ctx:Java8Parser.PackageDeclarationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#packageModifier. - def visitPackageModifier(self, ctx:Java8Parser.PackageModifierContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#importDeclaration. - def visitImportDeclaration(self, ctx:Java8Parser.ImportDeclarationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#singleTypeImportDeclaration. - def visitSingleTypeImportDeclaration(self, ctx:Java8Parser.SingleTypeImportDeclarationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#typeImportOnDemandDeclaration. - def visitTypeImportOnDemandDeclaration(self, ctx:Java8Parser.TypeImportOnDemandDeclarationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#singleStaticImportDeclaration. - def visitSingleStaticImportDeclaration(self, ctx:Java8Parser.SingleStaticImportDeclarationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#staticImportOnDemandDeclaration. - def visitStaticImportOnDemandDeclaration(self, ctx:Java8Parser.StaticImportOnDemandDeclarationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#typeDeclaration. - def visitTypeDeclaration(self, ctx:Java8Parser.TypeDeclarationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#classDeclaration. - def visitClassDeclaration(self, ctx:Java8Parser.ClassDeclarationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#normalClassDeclaration. - def visitNormalClassDeclaration(self, ctx:Java8Parser.NormalClassDeclarationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#classModifier. - def visitClassModifier(self, ctx:Java8Parser.ClassModifierContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#typeParameters. - def visitTypeParameters(self, ctx:Java8Parser.TypeParametersContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#typeParameterList. - def visitTypeParameterList(self, ctx:Java8Parser.TypeParameterListContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#superclass. - def visitSuperclass(self, ctx:Java8Parser.SuperclassContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#superinterfaces. - def visitSuperinterfaces(self, ctx:Java8Parser.SuperinterfacesContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#interfaceTypeList. - def visitInterfaceTypeList(self, ctx:Java8Parser.InterfaceTypeListContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#classBody. - def visitClassBody(self, ctx:Java8Parser.ClassBodyContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#classBodyDeclaration. - def visitClassBodyDeclaration(self, ctx:Java8Parser.ClassBodyDeclarationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#classMemberDeclaration. - def visitClassMemberDeclaration(self, ctx:Java8Parser.ClassMemberDeclarationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#fieldDeclaration. - def visitFieldDeclaration(self, ctx:Java8Parser.FieldDeclarationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#fieldModifier. - def visitFieldModifier(self, ctx:Java8Parser.FieldModifierContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#variableDeclaratorList. - def visitVariableDeclaratorList(self, ctx:Java8Parser.VariableDeclaratorListContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#variableDeclarator. - def visitVariableDeclarator(self, ctx:Java8Parser.VariableDeclaratorContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#variableDeclaratorId. - def visitVariableDeclaratorId(self, ctx:Java8Parser.VariableDeclaratorIdContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#variableInitializer. - def visitVariableInitializer(self, ctx:Java8Parser.VariableInitializerContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#unannType. - def visitUnannType(self, ctx:Java8Parser.UnannTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#unannPrimitiveType. - def visitUnannPrimitiveType(self, ctx:Java8Parser.UnannPrimitiveTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#unannReferenceType. - def visitUnannReferenceType(self, ctx:Java8Parser.UnannReferenceTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#unannClassOrInterfaceType. - def visitUnannClassOrInterfaceType(self, ctx:Java8Parser.UnannClassOrInterfaceTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#unannClassType. - def visitUnannClassType(self, ctx:Java8Parser.UnannClassTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#unannClassType_lf_unannClassOrInterfaceType. - def visitUnannClassType_lf_unannClassOrInterfaceType(self, ctx:Java8Parser.UnannClassType_lf_unannClassOrInterfaceTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#unannClassType_lfno_unannClassOrInterfaceType. - def visitUnannClassType_lfno_unannClassOrInterfaceType(self, ctx:Java8Parser.UnannClassType_lfno_unannClassOrInterfaceTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#unannInterfaceType. - def visitUnannInterfaceType(self, ctx:Java8Parser.UnannInterfaceTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#unannInterfaceType_lf_unannClassOrInterfaceType. - def visitUnannInterfaceType_lf_unannClassOrInterfaceType(self, ctx:Java8Parser.UnannInterfaceType_lf_unannClassOrInterfaceTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#unannInterfaceType_lfno_unannClassOrInterfaceType. - def visitUnannInterfaceType_lfno_unannClassOrInterfaceType(self, ctx:Java8Parser.UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#unannTypeVariable. - def visitUnannTypeVariable(self, ctx:Java8Parser.UnannTypeVariableContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#unannArrayType. - def visitUnannArrayType(self, ctx:Java8Parser.UnannArrayTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#methodDeclaration. - def visitMethodDeclaration(self, ctx:Java8Parser.MethodDeclarationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#methodModifier. - def visitMethodModifier(self, ctx:Java8Parser.MethodModifierContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#methodHeader. - def visitMethodHeader(self, ctx:Java8Parser.MethodHeaderContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#result. - def visitResult(self, ctx:Java8Parser.ResultContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#methodDeclarator. - def visitMethodDeclarator(self, ctx:Java8Parser.MethodDeclaratorContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#formalParameterList. - def visitFormalParameterList(self, ctx:Java8Parser.FormalParameterListContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#formalParameters. - def visitFormalParameters(self, ctx:Java8Parser.FormalParametersContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#formalParameter. - def visitFormalParameter(self, ctx:Java8Parser.FormalParameterContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#variableModifier. - def visitVariableModifier(self, ctx:Java8Parser.VariableModifierContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#lastFormalParameter. - def visitLastFormalParameter(self, ctx:Java8Parser.LastFormalParameterContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#receiverParameter. - def visitReceiverParameter(self, ctx:Java8Parser.ReceiverParameterContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#throws_. - def visitThrows_(self, ctx:Java8Parser.Throws_Context): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#exceptionTypeList. - def visitExceptionTypeList(self, ctx:Java8Parser.ExceptionTypeListContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#exceptionType. - def visitExceptionType(self, ctx:Java8Parser.ExceptionTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#methodBody. - def visitMethodBody(self, ctx:Java8Parser.MethodBodyContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#instanceInitializer. - def visitInstanceInitializer(self, ctx:Java8Parser.InstanceInitializerContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#staticInitializer. - def visitStaticInitializer(self, ctx:Java8Parser.StaticInitializerContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#constructorDeclaration. - def visitConstructorDeclaration(self, ctx:Java8Parser.ConstructorDeclarationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#constructorModifier. - def visitConstructorModifier(self, ctx:Java8Parser.ConstructorModifierContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#constructorDeclarator. - def visitConstructorDeclarator(self, ctx:Java8Parser.ConstructorDeclaratorContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#simpleTypeName. - def visitSimpleTypeName(self, ctx:Java8Parser.SimpleTypeNameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#constructorBody. - def visitConstructorBody(self, ctx:Java8Parser.ConstructorBodyContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#explicitConstructorInvocation. - def visitExplicitConstructorInvocation(self, ctx:Java8Parser.ExplicitConstructorInvocationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#enumDeclaration. - def visitEnumDeclaration(self, ctx:Java8Parser.EnumDeclarationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#enumBody. - def visitEnumBody(self, ctx:Java8Parser.EnumBodyContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#enumConstantList. - def visitEnumConstantList(self, ctx:Java8Parser.EnumConstantListContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#enumConstant. - def visitEnumConstant(self, ctx:Java8Parser.EnumConstantContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#enumConstantModifier. - def visitEnumConstantModifier(self, ctx:Java8Parser.EnumConstantModifierContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#enumBodyDeclarations. - def visitEnumBodyDeclarations(self, ctx:Java8Parser.EnumBodyDeclarationsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#interfaceDeclaration. - def visitInterfaceDeclaration(self, ctx:Java8Parser.InterfaceDeclarationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#normalInterfaceDeclaration. - def visitNormalInterfaceDeclaration(self, ctx:Java8Parser.NormalInterfaceDeclarationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#interfaceModifier. - def visitInterfaceModifier(self, ctx:Java8Parser.InterfaceModifierContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#extendsInterfaces. - def visitExtendsInterfaces(self, ctx:Java8Parser.ExtendsInterfacesContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#interfaceBody. - def visitInterfaceBody(self, ctx:Java8Parser.InterfaceBodyContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#interfaceMemberDeclaration. - def visitInterfaceMemberDeclaration(self, ctx:Java8Parser.InterfaceMemberDeclarationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#constantDeclaration. - def visitConstantDeclaration(self, ctx:Java8Parser.ConstantDeclarationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#constantModifier. - def visitConstantModifier(self, ctx:Java8Parser.ConstantModifierContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#interfaceMethodDeclaration. - def visitInterfaceMethodDeclaration(self, ctx:Java8Parser.InterfaceMethodDeclarationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#interfaceMethodModifier. - def visitInterfaceMethodModifier(self, ctx:Java8Parser.InterfaceMethodModifierContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#annotationTypeDeclaration. - def visitAnnotationTypeDeclaration(self, ctx:Java8Parser.AnnotationTypeDeclarationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#annotationTypeBody. - def visitAnnotationTypeBody(self, ctx:Java8Parser.AnnotationTypeBodyContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#annotationTypeMemberDeclaration. - def visitAnnotationTypeMemberDeclaration(self, ctx:Java8Parser.AnnotationTypeMemberDeclarationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#annotationTypeElementDeclaration. - def visitAnnotationTypeElementDeclaration(self, ctx:Java8Parser.AnnotationTypeElementDeclarationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#annotationTypeElementModifier. - def visitAnnotationTypeElementModifier(self, ctx:Java8Parser.AnnotationTypeElementModifierContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#defaultValue. - def visitDefaultValue(self, ctx:Java8Parser.DefaultValueContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#annotation. - def visitAnnotation(self, ctx:Java8Parser.AnnotationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#normalAnnotation. - def visitNormalAnnotation(self, ctx:Java8Parser.NormalAnnotationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#elementValuePairList. - def visitElementValuePairList(self, ctx:Java8Parser.ElementValuePairListContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#elementValuePair. - def visitElementValuePair(self, ctx:Java8Parser.ElementValuePairContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#elementValue. - def visitElementValue(self, ctx:Java8Parser.ElementValueContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#elementValueArrayInitializer. - def visitElementValueArrayInitializer(self, ctx:Java8Parser.ElementValueArrayInitializerContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#elementValueList. - def visitElementValueList(self, ctx:Java8Parser.ElementValueListContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#markerAnnotation. - def visitMarkerAnnotation(self, ctx:Java8Parser.MarkerAnnotationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#singleElementAnnotation. - def visitSingleElementAnnotation(self, ctx:Java8Parser.SingleElementAnnotationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#arrayInitializer. - def visitArrayInitializer(self, ctx:Java8Parser.ArrayInitializerContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#variableInitializerList. - def visitVariableInitializerList(self, ctx:Java8Parser.VariableInitializerListContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#block. - def visitBlock(self, ctx:Java8Parser.BlockContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#blockStatements. - def visitBlockStatements(self, ctx:Java8Parser.BlockStatementsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#blockStatement. - def visitBlockStatement(self, ctx:Java8Parser.BlockStatementContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#localVariableDeclarationStatement. - def visitLocalVariableDeclarationStatement(self, ctx:Java8Parser.LocalVariableDeclarationStatementContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#localVariableDeclaration. - def visitLocalVariableDeclaration(self, ctx:Java8Parser.LocalVariableDeclarationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#statement. - def visitStatement(self, ctx:Java8Parser.StatementContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#statementNoShortIf. - def visitStatementNoShortIf(self, ctx:Java8Parser.StatementNoShortIfContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#statementWithoutTrailingSubstatement. - def visitStatementWithoutTrailingSubstatement(self, ctx:Java8Parser.StatementWithoutTrailingSubstatementContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#emptyStatement. - def visitEmptyStatement(self, ctx:Java8Parser.EmptyStatementContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#labeledStatement. - def visitLabeledStatement(self, ctx:Java8Parser.LabeledStatementContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#labeledStatementNoShortIf. - def visitLabeledStatementNoShortIf(self, ctx:Java8Parser.LabeledStatementNoShortIfContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#expressionStatement. - def visitExpressionStatement(self, ctx:Java8Parser.ExpressionStatementContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#statementExpression. - def visitStatementExpression(self, ctx:Java8Parser.StatementExpressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#ifThenStatement. - def visitIfThenStatement(self, ctx:Java8Parser.IfThenStatementContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#ifThenElseStatement. - def visitIfThenElseStatement(self, ctx:Java8Parser.IfThenElseStatementContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#ifThenElseStatementNoShortIf. - def visitIfThenElseStatementNoShortIf(self, ctx:Java8Parser.IfThenElseStatementNoShortIfContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#assertStatement. - def visitAssertStatement(self, ctx:Java8Parser.AssertStatementContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#switchStatement. - def visitSwitchStatement(self, ctx:Java8Parser.SwitchStatementContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#switchBlock. - def visitSwitchBlock(self, ctx:Java8Parser.SwitchBlockContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#switchBlockStatementGroup. - def visitSwitchBlockStatementGroup(self, ctx:Java8Parser.SwitchBlockStatementGroupContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#switchLabels. - def visitSwitchLabels(self, ctx:Java8Parser.SwitchLabelsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#switchLabel. - def visitSwitchLabel(self, ctx:Java8Parser.SwitchLabelContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#enumConstantName. - def visitEnumConstantName(self, ctx:Java8Parser.EnumConstantNameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#whileStatement. - def visitWhileStatement(self, ctx:Java8Parser.WhileStatementContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#whileStatementNoShortIf. - def visitWhileStatementNoShortIf(self, ctx:Java8Parser.WhileStatementNoShortIfContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#doStatement. - def visitDoStatement(self, ctx:Java8Parser.DoStatementContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#forStatement. - def visitForStatement(self, ctx:Java8Parser.ForStatementContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#forStatementNoShortIf. - def visitForStatementNoShortIf(self, ctx:Java8Parser.ForStatementNoShortIfContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#basicForStatement. - def visitBasicForStatement(self, ctx:Java8Parser.BasicForStatementContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#basicForStatementNoShortIf. - def visitBasicForStatementNoShortIf(self, ctx:Java8Parser.BasicForStatementNoShortIfContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#forInit. - def visitForInit(self, ctx:Java8Parser.ForInitContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#forUpdate. - def visitForUpdate(self, ctx:Java8Parser.ForUpdateContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#statementExpressionList. - def visitStatementExpressionList(self, ctx:Java8Parser.StatementExpressionListContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#enhancedForStatement. - def visitEnhancedForStatement(self, ctx:Java8Parser.EnhancedForStatementContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#enhancedForStatementNoShortIf. - def visitEnhancedForStatementNoShortIf(self, ctx:Java8Parser.EnhancedForStatementNoShortIfContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#breakStatement. - def visitBreakStatement(self, ctx:Java8Parser.BreakStatementContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#continueStatement. - def visitContinueStatement(self, ctx:Java8Parser.ContinueStatementContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#returnStatement. - def visitReturnStatement(self, ctx:Java8Parser.ReturnStatementContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#throwStatement. - def visitThrowStatement(self, ctx:Java8Parser.ThrowStatementContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#synchronizedStatement. - def visitSynchronizedStatement(self, ctx:Java8Parser.SynchronizedStatementContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#tryStatement. - def visitTryStatement(self, ctx:Java8Parser.TryStatementContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#catches. - def visitCatches(self, ctx:Java8Parser.CatchesContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#catchClause. - def visitCatchClause(self, ctx:Java8Parser.CatchClauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#catchFormalParameter. - def visitCatchFormalParameter(self, ctx:Java8Parser.CatchFormalParameterContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#catchType. - def visitCatchType(self, ctx:Java8Parser.CatchTypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#finally_. - def visitFinally_(self, ctx:Java8Parser.Finally_Context): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#tryWithResourcesStatement. - def visitTryWithResourcesStatement(self, ctx:Java8Parser.TryWithResourcesStatementContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#resourceSpecification. - def visitResourceSpecification(self, ctx:Java8Parser.ResourceSpecificationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#resourceList. - def visitResourceList(self, ctx:Java8Parser.ResourceListContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#resource. - def visitResource(self, ctx:Java8Parser.ResourceContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#primary. - def visitPrimary(self, ctx:Java8Parser.PrimaryContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#primaryNoNewArray. - def visitPrimaryNoNewArray(self, ctx:Java8Parser.PrimaryNoNewArrayContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#primaryNoNewArray_lf_arrayAccess. - def visitPrimaryNoNewArray_lf_arrayAccess(self, ctx:Java8Parser.PrimaryNoNewArray_lf_arrayAccessContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#primaryNoNewArray_lfno_arrayAccess. - def visitPrimaryNoNewArray_lfno_arrayAccess(self, ctx:Java8Parser.PrimaryNoNewArray_lfno_arrayAccessContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#primaryNoNewArray_lf_primary. - def visitPrimaryNoNewArray_lf_primary(self, ctx:Java8Parser.PrimaryNoNewArray_lf_primaryContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary. - def visitPrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(self, ctx:Java8Parser.PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary. - def visitPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(self, ctx:Java8Parser.PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#primaryNoNewArray_lfno_primary. - def visitPrimaryNoNewArray_lfno_primary(self, ctx:Java8Parser.PrimaryNoNewArray_lfno_primaryContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary. - def visitPrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(self, ctx:Java8Parser.PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary. - def visitPrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(self, ctx:Java8Parser.PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#classInstanceCreationExpression. - def visitClassInstanceCreationExpression(self, ctx:Java8Parser.ClassInstanceCreationExpressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#classInstanceCreationExpression_lf_primary. - def visitClassInstanceCreationExpression_lf_primary(self, ctx:Java8Parser.ClassInstanceCreationExpression_lf_primaryContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#classInstanceCreationExpression_lfno_primary. - def visitClassInstanceCreationExpression_lfno_primary(self, ctx:Java8Parser.ClassInstanceCreationExpression_lfno_primaryContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#typeArgumentsOrDiamond. - def visitTypeArgumentsOrDiamond(self, ctx:Java8Parser.TypeArgumentsOrDiamondContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#fieldAccess. - def visitFieldAccess(self, ctx:Java8Parser.FieldAccessContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#fieldAccess_lf_primary. - def visitFieldAccess_lf_primary(self, ctx:Java8Parser.FieldAccess_lf_primaryContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#fieldAccess_lfno_primary. - def visitFieldAccess_lfno_primary(self, ctx:Java8Parser.FieldAccess_lfno_primaryContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#arrayAccess. - def visitArrayAccess(self, ctx:Java8Parser.ArrayAccessContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#arrayAccess_lf_primary. - def visitArrayAccess_lf_primary(self, ctx:Java8Parser.ArrayAccess_lf_primaryContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#arrayAccess_lfno_primary. - def visitArrayAccess_lfno_primary(self, ctx:Java8Parser.ArrayAccess_lfno_primaryContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#methodInvocation. - def visitMethodInvocation(self, ctx:Java8Parser.MethodInvocationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#methodInvocation_lf_primary. - def visitMethodInvocation_lf_primary(self, ctx:Java8Parser.MethodInvocation_lf_primaryContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#methodInvocation_lfno_primary. - def visitMethodInvocation_lfno_primary(self, ctx:Java8Parser.MethodInvocation_lfno_primaryContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#argumentList. - def visitArgumentList(self, ctx:Java8Parser.ArgumentListContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#methodReference. - def visitMethodReference(self, ctx:Java8Parser.MethodReferenceContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#methodReference_lf_primary. - def visitMethodReference_lf_primary(self, ctx:Java8Parser.MethodReference_lf_primaryContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#methodReference_lfno_primary. - def visitMethodReference_lfno_primary(self, ctx:Java8Parser.MethodReference_lfno_primaryContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#arrayCreationExpression. - def visitArrayCreationExpression(self, ctx:Java8Parser.ArrayCreationExpressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#dimExprs. - def visitDimExprs(self, ctx:Java8Parser.DimExprsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#dimExpr. - def visitDimExpr(self, ctx:Java8Parser.DimExprContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#constantExpression. - def visitConstantExpression(self, ctx:Java8Parser.ConstantExpressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#expression. - def visitExpression(self, ctx:Java8Parser.ExpressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#lambdaExpression. - def visitLambdaExpression(self, ctx:Java8Parser.LambdaExpressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#lambdaParameters. - def visitLambdaParameters(self, ctx:Java8Parser.LambdaParametersContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#inferredFormalParameterList. - def visitInferredFormalParameterList(self, ctx:Java8Parser.InferredFormalParameterListContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#lambdaBody. - def visitLambdaBody(self, ctx:Java8Parser.LambdaBodyContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#assignmentExpression. - def visitAssignmentExpression(self, ctx:Java8Parser.AssignmentExpressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#assignment. - def visitAssignment(self, ctx:Java8Parser.AssignmentContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#leftHandSide. - def visitLeftHandSide(self, ctx:Java8Parser.LeftHandSideContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#assignmentOperator. - def visitAssignmentOperator(self, ctx:Java8Parser.AssignmentOperatorContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#conditionalExpression. - def visitConditionalExpression(self, ctx:Java8Parser.ConditionalExpressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#conditionalOrExpression. - def visitConditionalOrExpression(self, ctx:Java8Parser.ConditionalOrExpressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#conditionalAndExpression. - def visitConditionalAndExpression(self, ctx:Java8Parser.ConditionalAndExpressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#inclusiveOrExpression. - def visitInclusiveOrExpression(self, ctx:Java8Parser.InclusiveOrExpressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#exclusiveOrExpression. - def visitExclusiveOrExpression(self, ctx:Java8Parser.ExclusiveOrExpressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#andExpression. - def visitAndExpression(self, ctx:Java8Parser.AndExpressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#equalityExpression. - def visitEqualityExpression(self, ctx:Java8Parser.EqualityExpressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#relationalExpression. - def visitRelationalExpression(self, ctx:Java8Parser.RelationalExpressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#shiftExpression. - def visitShiftExpression(self, ctx:Java8Parser.ShiftExpressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#additiveExpression. - def visitAdditiveExpression(self, ctx:Java8Parser.AdditiveExpressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#multiplicativeExpression. - def visitMultiplicativeExpression(self, ctx:Java8Parser.MultiplicativeExpressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#unaryExpression. - def visitUnaryExpression(self, ctx:Java8Parser.UnaryExpressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#preIncrementExpression. - def visitPreIncrementExpression(self, ctx:Java8Parser.PreIncrementExpressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#preDecrementExpression. - def visitPreDecrementExpression(self, ctx:Java8Parser.PreDecrementExpressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#unaryExpressionNotPlusMinus. - def visitUnaryExpressionNotPlusMinus(self, ctx:Java8Parser.UnaryExpressionNotPlusMinusContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#postfixExpression. - def visitPostfixExpression(self, ctx:Java8Parser.PostfixExpressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#postIncrementExpression. - def visitPostIncrementExpression(self, ctx:Java8Parser.PostIncrementExpressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#postIncrementExpression_lf_postfixExpression. - def visitPostIncrementExpression_lf_postfixExpression(self, ctx:Java8Parser.PostIncrementExpression_lf_postfixExpressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#postDecrementExpression. - def visitPostDecrementExpression(self, ctx:Java8Parser.PostDecrementExpressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#postDecrementExpression_lf_postfixExpression. - def visitPostDecrementExpression_lf_postfixExpression(self, ctx:Java8Parser.PostDecrementExpression_lf_postfixExpressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by Java8Parser#castExpression. - def visitCastExpression(self, ctx:Java8Parser.CastExpressionContext): - return self.visitChildren(ctx) - - - -del Java8Parser \ No newline at end of file diff --git a/persper/analytics/call_graph/java/__init__.py b/persper/analytics/call_graph/java/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/persper/analytics/call_graph/java/ast_creater.py b/persper/analytics/call_graph/java/ast_creater.py deleted file mode 100644 index 37638988c9b..00000000000 --- a/persper/analytics/call_graph/java/ast_creater.py +++ /dev/null @@ -1,25 +0,0 @@ -from antlr4 import CommonTokenStream, InputStream - - -class ASTCreater: - def __init__(self, parser, lexer, filename, file_source): - """ - - :param parser: Parser object from antlr4 - :param lexer: Lexer object from antlr4 - :param filename: Name of the file which has to be parsed - :param file_source: Stream of strings, content of the file - """ - self.parser = parser - self.lexer = lexer - # ASTCreater helps to have a filename attach to every AST objects - self.filename = filename - self.file_source = file_source - self.tree = None - - def __call__(self): - input_stream = InputStream(self.file_source) - lexer = self.lexer(input_stream) - token_stream = CommonTokenStream(lexer) - parser = self.parser(token_stream) - self.tree = parser.compilationUnit() diff --git a/persper/analytics/call_graph/java/java.py b/persper/analytics/call_graph/java/java.py deleted file mode 100644 index 45fc87f752b..00000000000 --- a/persper/analytics/call_graph/java/java.py +++ /dev/null @@ -1,175 +0,0 @@ -import os -import ast -from collections import defaultdict -from antlr4 import * -from persper.analytics.call_graph.java.Java8Listener import Java8Listener -from persper.analytics.call_graph.java.Java8Parser import Java8Parser -import logging - -DEBUG = ast.literal_eval(os.environ.get('DEBUG_JAVA', "True")) -logging.basicConfig(filename='java.log', filemode='w', format='%(name)s - %(levelname)s - %(message)s') - - -class FunctionStatsListener(Java8Listener): - """ - This class is responsible to get name of the function and - range of the function which is the start and end line of the function. - """ - - def __init__(self): - self.function_names = list() - self.function_ranges = list() - self.current_function_name = None - - def enterMethodDeclaration(self, ctx=Java8Parser.MethodDeclarationContext): - try: - header = ctx.methodHeader() - declator = header.methodDeclarator() - name = declator.Identifier().getText() - self.current_function_name = name - self.function_names.append(name) - self.function_ranges.append([ctx.start.line, ctx.stop.line]) - except Exception as e: - if DEBUG: - raise - else: - logging.exception("[FunctionStatsListener][METHOD DECLARATION]") - self.function_names = [] - self.function_ranges = [] - - -class FunctionCallerListener(Java8Listener): - def __init__(self): - self.function_names = list() - - def enterMethodDeclaration(self, ctx=Java8Parser.MethodDeclarationContext): - try: - header = ctx.methodHeader() - declator = header.methodDeclarator() - name = declator.Identifier().getText() - self.function_names.append(name) - except Exception as e: - if DEBUG: - raise - else: - logging.exception("[FunctionCallerListener][METHOD DECLARATION]") - self.function_names = [] - - -class FunctionCalleeListener(Java8Listener): - def __init__(self): - self.function_caller_callee_map = defaultdict(list) - self.current_function_name = None - - def enterMethodDeclaration(self, ctx=Java8Parser.MethodDeclarationContext): - try: - header = ctx.methodHeader() - declator = header.methodDeclarator() - name = declator.Identifier().getText() - self.current_function_name = name - except Exception as e: - if DEBUG: - raise - else: - logging.exception("[FunctionCalleeListener][METHOD DECLARATION]") - self.current_function_name = None - - def enterMethodInvocation(self, ctx=Java8Parser.MethodInvocationContext): - try: - if ctx.methodName(): - name = ctx.methodName().getText() - else: - name = ctx.Identifier().getText() - if self.current_function_name: - self.function_caller_callee_map[self.current_function_name].append( - name) - except Exception as e: - if DEBUG: - raise - else: - logging.exception("[FunctionCalleeListener][METHOD INVOCATION]") - - def enterMethodInvocation_lfno_primary(self, ctx: Java8Parser.MethodInvocation_lfno_primaryContext): - """ - This function is responsible to handle all the expressions, - For example: - int a = 1 + add(3); - add(someStuff(), moreStuff()); - if(someStuff()){ - int a = 30; - } - - :param ctx: context for parser - :return: - """ - try: - if ctx.methodName(): - name = ctx.methodName().getText() - else: - name = ctx.Identifier().getText() - if self.current_function_name: - self.function_caller_callee_map[self.current_function_name].append( - name) - except Exception as e: - if DEBUG: - raise - else: - logging.exception("[FunctionCalleeListener][METHOD INVOCATION]") - - -def get_function_range_java(tree): - walker = ParseTreeWalker() - collector = FunctionStatsListener() - walker.walk(collector, tree) - return collector.function_names, collector.function_ranges - - -def get_all_function_caller(tree): - walker = ParseTreeWalker() - collector = FunctionCallerListener() - walker.walk(collector, tree) - return collector.function_names - - -def get_caller_callee_map(tree): - walker = ParseTreeWalker() - collector = FunctionCalleeListener() - walker.walk(collector, tree) - return collector.function_caller_callee_map - - -def update_graph(ccgraph, ast_list, change_stats, new_fname_to_old_fname): - for ast in ast_list: - filename = ast.filename - tree = ast.tree - for function in get_all_function_caller(tree): - - if function not in ccgraph: - ccgraph.add_node(function, [filename]) - else: - files = ccgraph.files(function) - old_filename = new_fname_to_old_fname.get(filename, None) - # Case: Rename - if old_filename: - files.add(filename) - if old_filename in files: - files.remove(old_filename) - ccgraph.update_node_files(function, files) - # Case: New - elif filename not in files: - files.add(filename) - ccgraph.update_node_files(function, files) - - for call, callee in get_caller_callee_map(tree).items(): - for callee_name in callee: - if callee_name not in ccgraph: - # Pass [] to files argument since we don't know - # which file this node belongs to - ccgraph.add_node(callee_name, []) - ccgraph.add_edge(call, callee_name) - - for func, fstat in change_stats.items(): - if func not in ccgraph: - print("%s in change_stats but not in ccgraph" % func) - continue - ccgraph.update_node_history(func, fstat['adds'], fstat['dels']) diff --git a/persper/analytics/call_graph/java/java2.py b/persper/analytics/call_graph/java/java2.py deleted file mode 100644 index 73a9999d448..00000000000 --- a/persper/analytics/call_graph/java/java2.py +++ /dev/null @@ -1,141 +0,0 @@ -import os -import ast -from collections import defaultdict -from antlr4 import * -from persper.parser.java.JavaParserListener import JavaParserListener -from persper.parser.java.JavaParser import JavaParser -import logging - -DEBUG = ast.literal_eval(os.environ.get('DEBUG_JAVA', "True")) -logging.basicConfig(filename='java.log', filemode='w', format='%(name)s - %(levelname)s - %(message)s') - - -class FunctionStatsListener(JavaParserListener): - """ - This class is responsible to get name of the function and - range of the function which is the start and end line of the function. - """ - - def __init__(self): - self.function_names = list() - self.function_ranges = list() - self.current_function_name = None - - def enterMethodDeclaration(self, ctx=JavaParser.MethodDeclarationContext): - try: - name = ctx.IDENTIFIER().getText() - self.current_function_name = name - self.function_names.append(name) - self.function_ranges.append([ctx.start.line, ctx.stop.line]) - except Exception as e: - if DEBUG: - raise - else: - logging.exception("[FunctionStatsListener][METHOD DECLARATION]") - self.function_names = [] - self.function_ranges = [] - - -class FunctionCallerListener(JavaParserListener): - def __init__(self): - self.function_names = list() - - def enterMethodDeclaration(self, ctx=JavaParser.MethodDeclarationContext): - try: - name = ctx.IDENTIFIER().getText() - self.function_names.append(name) - except Exception as e: - if DEBUG: - raise - else: - logging.exception("[FunctionCallerListener][METHOD DECLARATION]") - self.function_names = [] - - -class FunctionCalleeListener(JavaParserListener): - def __init__(self): - self.function_caller_callee_map = defaultdict(list) - self.current_function_name = None - - def enterMethodDeclaration(self, ctx=JavaParser.MethodDeclarationContext): - try: - name = ctx.IDENTIFIER().getText() - self.current_function_name = name - except Exception as e: - if DEBUG: - raise - else: - logging.exception("[FunctionCalleeListener][METHOD DECLARATION]") - self.current_function_name = None - - def enterMethodCall(self, ctx: JavaParser.MethodCallContext): - try: - # The condition is there to avoid functions like `this()` or `super()` - if ctx.IDENTIFIER(): - name = ctx.IDENTIFIER().getText() - if self.current_function_name: - self.function_caller_callee_map[self.current_function_name].append( - name) - except Exception as e: - if DEBUG: - raise - else: - logging.exception("[FunctionCalleeListener][METHOD CALL]") - - -def get_function_range_java(tree): - walker = ParseTreeWalker() - collector = FunctionStatsListener() - walker.walk(collector, tree) - return collector.function_names, collector.function_ranges - - -def get_all_function_caller(tree): - walker = ParseTreeWalker() - collector = FunctionCallerListener() - walker.walk(collector, tree) - return collector.function_names - - -def get_caller_callee_map(tree): - walker = ParseTreeWalker() - collector = FunctionCalleeListener() - walker.walk(collector, tree) - return collector.function_caller_callee_map - - -def update_graph(ccgraph, ast_list, change_stats, new_fname_to_old_fname): - for ast in ast_list: - filename = ast.filename - tree = ast.tree - for function in get_all_function_caller(tree): - - if function not in ccgraph: - ccgraph.add_node(function, [filename]) - else: - files = ccgraph.files(function) - old_filename = new_fname_to_old_fname.get(filename, None) - # Case: Rename - if old_filename: - files.add(filename) - if old_filename in files: - files.remove(old_filename) - ccgraph.update_node_files(function, files) - # Case: New - elif filename not in files: - files.add(filename) - ccgraph.update_node_files(function, files) - - for call, callee in get_caller_callee_map(tree).items(): - for callee_name in callee: - if callee_name not in ccgraph: - # Pass [] to files argument since we don't know - # which file this node belongs to - ccgraph.add_node(callee_name, []) - ccgraph.add_edge(call, callee_name) - - for func, fstat in change_stats.items(): - if func not in ccgraph: - print("%s in change_stats but not in ccgraph" % func) - continue - ccgraph.update_node_history(func, fstat['adds'], fstat['dels']) diff --git a/persper/analytics/cpp_tools.py b/persper/analytics/cpp_tools.py deleted file mode 100644 index 8ce0a7085d1..00000000000 --- a/persper/analytics/cpp_tools.py +++ /dev/null @@ -1,38 +0,0 @@ -import re -import subprocess -from git import Repo -import networkx as nx - -from persper.analytics.write_graph_to_dot import write_G_to_dot_with_pr - -def get_func_ranges_cpp(src, fname): - re_signature = re.compile("""^(?P\w+(\s*[\*\&])?)\s+ - ((?P\w+)::)? - (?P\w+)\s* - \([^;]+$ - """, re.VERBOSE ) - func_ids = [] - func_ranges = [] - ptr = -1 - num_lines = 0 - for lineno, line in enumerate(src.split('\n'), 1): - num_lines += 1 - m = re_signature.search(line) - if m: - d = m.groupdict() - if d['class_name']: - func_ids.append('{}::{}'.format(d['class_name'], d['func_name'])) - else: - func_ids.append(d['func_name']) - if ptr != -1: - func_ranges.append([ptr, lineno - 1]) - ptr = lineno - if ptr != -1: - func_ranges.append([ptr, num_lines]) - - return func_ids, func_ranges - -def fname_filter_cpp(fname): - return fname.endswith('.cc') or fname.endswith('.cpp') - - diff --git a/persper/analytics/go.py b/persper/analytics/go.py deleted file mode 100644 index 9e7f30b9780..00000000000 --- a/persper/analytics/go.py +++ /dev/null @@ -1,102 +0,0 @@ -from networkx.readwrite import json_graph -from persper.analytics.graph_server import GraphServer, CommitSeekingMode -from persper.analytics.call_commit_graph import CallCommitGraph -import re -import requests -import urllib.parse -from persper.analytics.error import GraphServerError - - -class GraphServerStateRecoveryError(GraphServerError): - pass - - -class GoGraphServer(GraphServer): - def __init__(self, server_addr, filename_regex_strs): - self.server_addr = server_addr - self.filename_regexes = [re.compile(regex_str) for regex_str in filename_regex_strs] - self.config_param = dict() - self._session = requests.Session() - - def __getstate__(self): - state = self.__dict__.copy() - state['server_state'] = self._get_server_state() - return state - - def _get_server_state(self): - """Request the server to dump all internal state - - Right now, the call-commit graph contains all info we need for resetting state. - """ - r = self._session.get(urllib.parse.urljoin(self.server_addr, '/callgraph')) - return r.text - - def __setstate__(self, state): - self.__dict__.update(state) - self._set_server_state(state['server_state']) - - def _set_server_state(self, server_state): - url = urllib.parse.urljoin(self.server_addr, '/set_server_state') - headers = {'Content-type': 'application/json'} - r = self._session.post(url, data=server_state.encode(encoding='utf-8'), headers=headers).json() - if r != '0': - raise GraphServerStateRecoveryError('Failed to set golang server state.') - - def start_commit(self, hexsha: str, seeking_mode: CommitSeekingMode, author_name: str, - author_email: str, commit_message: str): - payload = { - 'hexsha': hexsha, - 'authorEmail': author_email, - 'authorName': author_name, - 'message': commit_message, - 'seekingMode': seeking_mode.value, - } - register_url = urllib.parse.urljoin(self.server_addr, '/start_commit') - r = self._session.post(register_url, json=payload).json() - if r != '0': - raise ValueError() - - def register_commit(self, hexsha, author_name, author_email, commit_message): - # TODO: use 'message' or 'commit_message', but not both - payload = { - 'hexsha': hexsha, - 'authorEmail': author_email, - 'authorName': author_name, - 'message': commit_message, - } - register_url = urllib.parse.urljoin(self.server_addr, '/register_commit') - r = self._session.post(register_url, json=payload).json() - if r != '0': - raise ValueError() - - def update_graph(self, old_filename, old_src, - new_filename, new_src, patch): - payload = {'oldFname': old_filename, - 'oldSrc': old_src, - 'newFname': new_filename, - 'newSrc': new_src, - 'patch': patch.decode('utf-8', 'replace'), - 'config': self.config_param} - - update_url = urllib.parse.urljoin(self.server_addr, '/update') - r = self._session.post(update_url, json=payload).json() - if r != '0': - raise ValueError() - - def get_graph(self): - graph_url = self.server_addr + '/callgraph' - r = self._session.get(graph_url) - return CallCommitGraph(graph_data=r.json()) - - def reset_graph(self): - reset_url = urllib.parse.urljoin(self.server_addr, '/reset') - self._session.post(reset_url) - - def filter_file(self, filename): - for regex in self.filename_regexes: - if not regex.match(filename): - return False - return True - - def config(self, param): - self.config_param = param diff --git a/persper/analytics/graph_server_http.py b/persper/analytics/graph_server_http.py deleted file mode 100644 index 70822b6c918..00000000000 --- a/persper/analytics/graph_server_http.py +++ /dev/null @@ -1,54 +0,0 @@ -from networkx.readwrite import json_graph -from persper.analytics.graph_server import GraphServer -import re -import requests -import urllib.parse - - -class GraphServerHttp(GraphServer): - def __init__(self, server_addr, filename_regex_strs): - self.server_addr = server_addr - self.filename_regexes = [re.compile(regex_str) for regex_str in filename_regex_strs] - self.config_param = dict() - - def register_commit(self, hexsha, author_name, author_email, commit_message): - payload = {'hexsha': hexsha, - 'author_name': author_name, - 'author_email': author_email, - 'commit_message': commit_message} - register_url = urllib.parse.urljoin(self.server_addr, '/register_commit') - r = requests.post(register_url, json=payload).json() - if r != '0': - raise ValueError() - - def update_graph(self, old_filename, old_src, - new_filename, new_src, patch): - payload = {'oldFname': old_filename, - 'oldSrc': old_src, - 'newFname': new_filename, - 'newSrc': new_src, - 'patch': patch.decode('utf-8', 'replace'), - 'config': self.config_param} - - update_url = urllib.parse.urljoin(self.server_addr, '/update') - r = requests.post(update_url, json=payload).json() - if r != '0': - raise ValueError() - - def get_graph(self): - graph_url = self.server_addr + '/callgraph' - r = requests.get(graph_url) - return json_graph.node_link_graph(r.json()) - - def reset_graph(self): - reset_url = urllib.parse.urljoin(self.server_addr, '/reset') - requests.post(reset_url) - - def filter_file(self, filename): - for regex in self.filename_regexes: - if not regex.match(filename): - return False - return True - - def config(self, param): - self.config_param = param diff --git a/persper/analytics/java.py b/persper/analytics/java.py deleted file mode 100644 index 68ea6afb5ad..00000000000 --- a/persper/analytics/java.py +++ /dev/null @@ -1,96 +0,0 @@ -import re -from persper.analytics.call_commit_graph import CallCommitGraph -from persper.analytics.graph_server import CommitSeekingMode, GraphServer -from persper.analytics.patch_parser import PatchParser -from persper.analytics.c import function_change_stats -from persper.analytics.call_graph.java.ast_creater import ASTCreater -from persper.parser.java.JavaLexer import JavaLexer -from persper.parser.java.JavaParser import JavaParser -from persper.analytics.call_graph.java.java2 import get_function_range_java, update_graph - - -class JavaGraphServer(GraphServer): - def __init__(self, filename_regex_strs): - self._ccgraph = CallCommitGraph() - self._filename_regexes = [re.compile( - regex_str) for regex_str in filename_regex_strs] - self._pparser = PatchParser() - self._seeking_mode = None - - def start_commit(self, hexsha: str, seeking_mode: CommitSeekingMode, - author_name: str, author_email: str, commit_message: str): - self._seeking_mode = seeking_mode - self._ccgraph.add_commit(hexsha, author_name, author_email, - commit_message) - - def register_commit(self, hexsha, author_name, author_email, - commit_message): - self._ccgraph.add_commit(hexsha, author_name, author_email, - commit_message) - - def update_graph(self, old_filename, old_src, new_filename, new_src, patch): - ast_obj_list = list() - old_ast = None - new_ast = None - - # Do nothing if in rewind mode - if self._seeking_mode == CommitSeekingMode.Rewind: - return 0 - - # Parse source codes into ASTs - if old_src: - ast_obj = ASTCreater(JavaParser, JavaLexer, - old_filename, old_src) - ast_obj() - old_ast = ast_obj.tree - if old_ast is None: - return -1 - - if new_src: - ast_obj = ASTCreater(JavaParser, JavaLexer, - new_filename, new_src) - ast_obj() - new_ast = ast_obj.tree - if new_ast is None: - return -1 - ast_obj_list = [ast_obj] - - # Compute function change stats only when it's not a merge commit - change_stats = {} - if self._seeking_mode != CommitSeekingMode.MergeCommit: - change_stats = function_change_stats(old_ast, new_ast, patch, - self._parse_patch, - get_function_range_java) - - # Update call-commit graph - new_fname_to_old_fname = {} - if old_filename is not None and new_filename is not None and \ - old_filename != new_filename: - new_fname_to_old_fname = {new_filename: old_filename} - update_graph(self._ccgraph, ast_obj_list, change_stats, new_fname_to_old_fname) - return 0 - - def get_graph(self): - return self._ccgraph - - def reset_graph(self): - self._ccgraph.reset() - - def filter_file(self, filename): - for regex in self._filename_regexes: - if not regex.match(filename): - return False - return True - - def config(self, param): - pass - - def _parse_patch(self, patch): - adds, dels = None, None - try: - adds, dels = self._pparser.parse(patch.decode('utf-8', 'replace')) - except UnicodeDecodeError: - print("UnicodeDecodeError when parsing patch!") - except: - print("Unknown error when parsing patch!") - return adds, dels diff --git a/persper/analytics/ruby_tools.py b/persper/analytics/ruby_tools.py deleted file mode 100644 index 57b503d2771..00000000000 --- a/persper/analytics/ruby_tools.py +++ /dev/null @@ -1,53 +0,0 @@ -import re -import os.path -import subprocess -from git import Repo -import networkx as nx - -from persper.analytics.write_graph_to_dot import write_G_to_dot_with_pr - - -def underscore_to_camelcase(value): - def camelcase(): - while True: - yield str.capitalize - - c = camelcase() - return "".join(next(c)(x) if x else '_' for x in value.split("_")) - - -def get_func_ranges_ruby(src, fname): - - def get_prefix(fname): - return fname - - fname = os.path.basename(fname).split('.')[0] - prefix = underscore_to_camelcase(get_prefix(fname)) - - re_def = re.compile("^\s*def\s+(?Pself\.)?(?P\w+\??)\s*\(?.*\)?$") - func_ids = [] - func_ranges = [] - ptr = -1 - num_lines = 0 - for lineno, line in enumerate(src.split('\n'), 1): - num_lines += 1 - m = re_def.search(line) - if m: - d = m.groupdict() - if d['class_method'] or fname.endswith('_helper.rb'): - op = "::" - else: - op = "#" - func_ids.append(prefix + op + d['func_name']) - - if ptr != -1: - func_ranges.append([ptr, lineno - 1]) - ptr = lineno - if ptr != -1: - func_ranges.append([ptr, num_lines]) - - return func_ids, func_ranges - - -def fname_filter_ruby(fname): - return fname.endswith('.rb') diff --git a/persper/classifier.py b/persper/classifier.py deleted file mode 100644 index 41fdc2881c1..00000000000 --- a/persper/classifier.py +++ /dev/null @@ -1,408 +0,0 @@ -# coding: utf-8 -import array -import numpy as np -import sklearn -import sklearn.ensemble -import sklearn.metrics -from sklearn.base import BaseEstimator, TransformerMixin, ClassifierMixin, clone, is_classifier -from sklearn.preprocessing import StandardScaler, label_binarize, binarize, normalize, LabelBinarizer -from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer, TfidfTransformer -from sklearn.feature_selection import SelectKBest, mutual_info_classif -from sklearn.pipeline import Pipeline, FeatureUnion, make_pipeline, make_union -import functools -from scipy.stats import norm -from scipy.sparse import csr_matrix, csc_matrix -from joblib import Parallel, delayed -from sklearn.metrics import precision_score, recall_score, accuracy_score, f1_score, confusion_matrix, classification_report - -# Stemmer language processing - http://qinxuye.me/article/porter-stemmer/ -import nltk -from nltk.stem.porter import PorterStemmer -stemmer = PorterStemmer() - -def stem(text): - stemmed = [] - tokens = nltk.word_tokenize(text) - for token in tokens: - stemmed.append(stemmer.stem(token)) - return stemmed - -# Spacy language processing - https://spacy.io/ -import spacy -nlp = spacy.load('en') - -def lemmatize(text): - lemmatized = [] - doc = nlp(text) - for token in doc: - if token.pos_ != 'PUNCT': - lemmatized.append(token.lemma_) - return lemmatized - -# The random forest classifier -import functools -rf = functools.partial(sklearn.ensemble.RandomForestClassifier, n_estimators=300) - -# import the labeler lib 0 -import sys -sys.path.append('../lib') -from labeler import apache_labeler -from labeler import fs_labeler - -# issue/patch type classification -def binary_bug(issue, is_jira): - if is_jira: - if issue['type'] == 'Bug': - return 1 - else: - return 0 - else: - if issue['type'] == 'b': - return 1 - else: - return 0 - -def multi_patch_type(issue, is_jira): - return issue['type'] - -def limited_patch_type(issue, is_jira): - if is_jira: - return apache_labeler[issue['type']] - else: - return fs_labeler[issue['cons_type']] - -def only_bug_filter(issue, is_jira): - if is_jira: - return issue['type'] == 'Bug' - else: - return issue['type'] == 'b' - -# BNS -def bns(tprs, fprs): - """ - Args: - tprs: A row vector of shape (1, num_features) - fprs: A row vector of shape (1, num_features) - """ - num_features = tprs.shape[1] - bns = np.zeros(num_features) - for i in range(num_features): - bns[i] = np.abs(norm.ppf(tprs[0, i]) - norm.ppf(fprs[0, i])) - return bns - -def tfbns(tfs, bns): - """ - Args: - tfs: A sparse matrix of shape (num_samples, num_features) - in csr format - bns: A numpy array of shape (num_features,) - """ - cx = tfs.tocoo() - data, rows, cols = [], [], [] - for i, j, v in zip(cx.row, cx.col, cx.data): - data.append(v * bns[j]) - rows.append(i) - cols.append(j) - return csr_matrix((data, (rows, cols)), shape=tfs.shape) - -# Text Preprocessing using tfidf or bns -class TextTransformer(BaseEstimator, TransformerMixin): - - def __init__(self, use_bns): - self.use_bns = use_bns - if self.use_bns: - self.tf_trans = TfidfTransformer(use_idf=False, norm=None) - else: - self.tf_trans = TfidfTransformer() - - def fit(self, X, y=None): - self.tf_trans.fit(X) - - if self.use_bns: - binary_counts = binarize(X) - - pos = np.sum(y) - neg = np.size(y) - pos - - tps = np.sum(binary_counts[np.nonzero(y)[0]], axis=0) - - fps = np.sum(binary_counts[np.argwhere(y == 0)[:, 0]], axis=0) - - tprs = np.clip(tps / pos, 0.0005, 0.9995) - fprs = np.clip(fps / neg, 0.0005, 0.9995) - - self.bns_values = bns(tprs, fprs) - - return self - - def transform(self, counts): - tfs = self.tf_trans.transform(counts) - if self.use_bns: - return normalize(tfbns(tfs, self.bns_values)) - else: - return tfs - -# Extract the title/descrption/comments/priority/type for jira issues and 'text'/'frc' for fs patches -class FeatureLabelExtractor(BaseEstimator, TransformerMixin): - """Cannot be used in Pipeline""" - - def __init__(self, datasets, text_feature, label_func, file_filter, is_jira): - self.datasets = datasets - self.text_feature = text_feature - self.label_func = label_func - self.file_filter = file_filter - self.is_jira = is_jira - - def fit(self, X, y=None): - return self - - def jira_issue_transform(self, project_list, use_description, use_comment): - num_samples = sum([ - sum([1 for issue in self.datasets[fs] if self.file_filter(issue)]) - for fs in project_list]) - - features = {} - features['text'] = [None] * num_samples - labels = [None] * num_samples - ind = 0 - for project in project_list: - for issue_id, issue in self.datasets[project].items(): - if self.file_filter(issue): - features['text'][ind] = issue[self.text_feature] - if use_description and 'description' not in self.text_feature: - features['text'][ind] = issue[self.text_feature] + issue['description'].strip() - if use_comment and 'comment' not in self.text_feature: - features['text'][ind] = issue[self.text_feature] + issue['comment'].strip() - if use_description and use_comment: - features['text'][ind] = issue[self.text_feature] + issue['description'].strip() + issue['comment'].strip() - labels[ind] = self.label_func(issue, self.is_jira) - ind += 1 - return features, labels - - def fs_patch_transform(self, fs_list): - num_samples = sum([ - sum([1 for dp in self.datasets[fs] if self.file_filter(dp)]) - for fs in fs_list]) - - features = {} - features['text'] = [None] * num_samples - features['frc'] = np.zeros((num_samples, 3)) - labels = [None] * num_samples - ind = 0 - for fs in fs_list: - for dp in self.datasets[fs]: - if self.file_filter(dp): - features['text'][ind] = dp[self.text_feature] - features['frc'][ind] = np.array([dp['num_files'], - dp['num_adds'], - dp['num_dels']]) - labels[ind] = self.label_func(dp, self.is_jira) - ind += 1 - return features, labels - -class ItemSelector(BaseEstimator, TransformerMixin): - - def __init__(self, key): - self.key = key - - def fit(self, x, y=None): - return self - - def transform(self, data_dict): - return data_dict[self.key] - -def _fit_binary(estimator, use_bns, use_text, use_frc, k, X, y): - estimator = clone(estimator) - text = make_pipeline( - ItemSelector(key='count'), TextTransformer(use_bns=use_bns)) - frc = make_pipeline( - ItemSelector(key='frc'), StandardScaler()) - - if use_text and use_frc: - union = make_union(text, frc) - elif not use_text and use_frc: - union = frc - elif use_text and not use_frc: - union = text - - if k: - pipeline = make_pipeline(union, SelectKBest(mutual_info_classif, k=k), estimator) - else: - pipeline = make_pipeline(union, estimator) - - pipeline.fit(X, y) - return pipeline - -def _predict_binary(pipeline, X): - """Make predictions using a single binary estimator""" - try: - score = np.ravel(pipeline.decision_function(X)) - except (AttributeError, NotImplementedError): - score = pipeline.predict_proba(X)[:, 1] - return score - - -class BNSClassifier(BaseEstimator, ClassifierMixin): - - def __init__(self, estimator, use_bns, - use_text, use_frc, k, n_jobs=1): - assert(use_text or use_frc) - self.estimator = estimator - self.n_jobs = n_jobs - self.use_bns = use_bns - self.use_text = use_text - self.use_frc = use_frc - self.k = k - - def fit(self, X, y): - self.label_binarizer = LabelBinarizer(sparse_output=True) - Y = self.label_binarizer.fit_transform(y) - Y = Y.tocsc() - self.classes = self.label_binarizer.classes_ - columns = (col.toarray().ravel() for col in Y.T) - - self.pipelines = Parallel(n_jobs=self.n_jobs)( - delayed(_fit_binary)( - self.estimator, self.use_bns, - self.use_text, self.use_frc, self.k, X, column) - for column in columns) - - def predict(self, X): - if(hasattr(self.pipelines[0], 'decision_function') and - is_classifier(self.pipelines[0])): - thresh = 0 - else: - thresh = 0.5 - - n_samples = X['count'].shape[0] - if self.label_binarizer.y_type_ == 'multiclass': - maxima = np.empty(n_samples, dtype=float) - maxima.fill(-np.inf) - argmaxima = np.zeros(n_samples, dtype=int) - for i, p in enumerate(self.pipelines): - pred = _predict_binary(p, X) - np.maximum(maxima, pred, out=maxima) - argmaxima[maxima == pred] = i - return self.classes[np.array(argmaxima.T)] - else: - indices = array.array('i') - indptr = array.array('i', [0]) - for p in self.pipelines: - indices.extend(np.where(_predict_binary(p, X) > thresh)[0]) - indptr.append(len(indices)) - data = np.ones(len(indices), dtype=int) - indicator = csc_matrix((data, indices, indptr), - shape=(n_samples, len(self.pipelines))) - return self.label_binarizer.inverse_transform(indicator) - -class Classifier(): - - def __init__(self, datasets, file_list): - """ - Args: - datasets: A dictionary, keys are dataset names, each dataset - is a list of data points (also dictionaries). - file_list: A list of jira issue names. - """ - self.datasets = datasets - self.file_list = file_list - - def _clean(self): - self.feature_labels = {} - self.classifiers = {} - - def run(self, label_func, estimator, ngram_range=(1, 1), - text_feature='', use_text=True, use_frc=False, - dp_filter=lambda dp: True, tokenizer=None, - max_features=None, min_df=1, use_bns=False, k=None, - n_jobs=1, use_description=False, use_comment=False, - use_svm=False, svm_type='linear', - use_rf=False, num_estimators = 100, val_max_features=0.5, - is_jira=False): - """Perform experiment in a leave-one-out style - - Args: - label_func: A function, takes a data point as input and - return its target label. - estimator: A function, return a classifier which supports - 'fit' and 'predict' method - ngram_range: A tuple of two integers, specify what range of - ngram to use - text_feature: A string, - can be either 'title' or 'description' or 'comment' for jira issue, - and can be either 'message' or 'subject' for fs patch. - If set to None, then texts will not be used. - use_text: A boolean flag, whether to use text feature - use_frc: A boolean flag, whether to use frc - dp_filter: A function decides which data point to exclude. - tokenizer: A function takes a string and return a list of tokens. - max_features: An int or None. If not None, only consider - top max_features ordered by term frequency across the corpus. - min_df: An int, ignore terms when building vocabulary if their - document frequency is strictly lower than this threshold. - use_bns: A boolean flag, use BNS if True, otherwise use IDF - k: An int, number of top features to keep during feature selection. - """ - self._clean() - - if text_feature == '': - if is_jira: - text_feature = 'title' - else: - text_feature = 'message' - - iss = FeatureLabelExtractor(self.datasets, text_feature, label_func, dp_filter, is_jira) - - for jr in self.file_list: - ofs_list = [ojr for ojr in self.file_list if ojr != jr] - - if is_jira: - train_X, train_y = iss.jira_issue_transform(ofs_list, use_description, use_comment) - test_X, test_y = iss.jira_issue_transform([jr], use_description, use_comment) - else: - train_X, train_y = iss.fs_patch_transform(ofs_list) - test_X, test_y = iss.fs_patch_transform([jr]) - - cv = CountVectorizer(tokenizer=tokenizer, - ngram_range=ngram_range, - max_features=max_features, - min_df=min_df) - - train_X['count'] = cv.fit_transform(train_X['text']) - test_X['count'] = cv.transform(test_X['text']) - - # TODO set n_jobs - if use_svm: - clf = BNSClassifier(estimator(kernel=svm_type), - use_bns=use_bns, - use_text=use_text, - use_frc=use_frc, - k=k, - n_jobs=n_jobs) - elif use_rf: - clf = BNSClassifier(estimator(n_estimators = num_estimators, max_features=val_max_features), - use_bns=use_bns, - use_text=use_text, - use_frc=use_frc, - k=k, - n_jobs=n_jobs) - else: - clf = BNSClassifier(estimator(), - use_bns=use_bns, - use_text=use_text, - use_frc=use_frc, - k=k, - n_jobs=n_jobs) - clf.fit(train_X, train_y) - - print('---------- Test Accuracy for %s ---------- ' % jr) - #print('Classifier: %.3f' % clf.score(test_X, test_y)) - predictions=clf.predict(test_X) - print ('Accuracy: %.3f.' % accuracy_score(test_y,predictions)) - print ('precision/recall/f1-score:') - print (classification_report(test_y,predictions)) - print ('confusion_matrix:') - print (confusion_matrix(test_y,predictions)) - print () - - self.classifiers[jr] = clf diff --git a/persper/extractor.py b/persper/extractor.py deleted file mode 100644 index a5a6915353d..00000000000 --- a/persper/extractor.py +++ /dev/null @@ -1,202 +0,0 @@ -# coding: utf-8 -import xml.dom.minidom -import re -import os -import sys -import pickle - -class JiraIssueExtractor(): - def __init__(self): - self.datasets = {} - - # Remove useless information from a jira issue file - def remove_useless_data(self, data): - data = re.sub(r'', "", data) - data = re.sub(r'', "", data) - data = re.sub(r'
', "", data) - data = re.sub(r'\', "", data) - data = re.sub(r'', "", data) - data = re.sub(r'\', "", data) - data = re.sub(r'\', "", data) - data = re.sub(r'\', "", data) - data = re.sub(r'\', "", data) - data = re.sub(r'\', "", data) - data = re.sub(r'\', "", data) - data = re.sub(r'\', "", data) - data = re.sub(r'', "", data) - data = re.sub(r'\', "", data) - data = re.sub(r'\', "", data) - data = re.sub(r'\', "", data) - data = re.sub(r'\', "", data) - data = re.sub(r'\', "", data) - data = re.sub(r'\', "", data) - data = re.sub(r'\', "", data) - data = re.sub(r'\', "", data) - data = re.sub(r'\', "", data) - data = re.sub(r'\', "", data) - data = re.sub(r'', "", data) - data = re.sub(r'', "", data) - data = re.sub(r'', "", data) - data = re.sub(r'\', "", data) - data = re.sub(r'\n', " ", data) - data = re.sub(r'\>\;', ">", data) - data = re.sub(r'\<\;', "<", data) - data = re.sub(r'\&\#91\;', "[", data) - data = re.sub(r'\&\#93\;', "]", data) - data = re.sub(r'\&\#8211\;', "-", data) - data = re.sub(r'\&\;', "&", data) - data = re.sub(r'\<200c\>', "", data) - data = re.sub(r'\<200b\>', "", data) - return data - - # Read the useful information from a Jira issue file (Title, Description, Comments, Type, Priority) - def read_data_from_jira_file(self, parseFile, issueId): - """return dataset, a list of dict data points""" - dp = {} - dp['issue'] = issueId - - title = parseFile.getElementsByTagName('title') - data = title[1].firstChild.data - data = re.sub(r'\[.*?\]\s', "", data) - data = self.remove_useless_data(data) - dp['title'] = data - - description = parseFile.getElementsByTagName('description') - des_str = '' - for i, des in enumerate(description): - if i != 0 and des.firstChild != None: - data = self.remove_useless_data(des.firstChild.data) - des_str = des_str + data - dp['description'] = des_str - - comments = parseFile.getElementsByTagName('comment') - comment_str = '' - for i, com in enumerate(comments): - if com.firstChild: - data = self.remove_useless_data(com.firstChild.data) - comment_str = comment_str + data - dp['comment'] = comment_str - - type = parseFile.getElementsByTagName('type') - dp['type'] = type[0].firstChild.data - - priority = parseFile.getElementsByTagName('priority') - for i, pri in enumerate(priority): - dp['priority'] = pri.firstChild.data - - return dp - - # Read all useful information from all files under a jira issues dir - # Each issue data structure : (issue id) -> (title, description, comments, priority, type) - def generate_dataset(self, filepath): - dataset = {} - allFiles = os.listdir(filepath) - invalidName = "invalid" - numFiles = 0 - for eachFile in allFiles: - if 'GitHub' not in eachFile: - if invalidName in eachFile: - continue - arr = re.split('-|\.', eachFile) - fromFile = os.path.join('%s%s' % (filepath, eachFile)) - dom = xml.dom.minidom.parse(fromFile) - parseFile = dom.documentElement - dp = self.read_data_from_jira_file(parseFile, arr[2]) - - if arr[2] in dataset.keys(): - dataset[arr[2]]['title'] = dataset[arr[2]]['title'] + dp['title'] - dataset[arr[2]]['description'] = dataset[arr[2]]['description'] + dp['description'] - dataset[arr[2]]['comment'] = dataset[arr[2]]['comment'] + dp['comment'] - #if dataset[arr[2]]['type'] not in dp['type']: - # print (dataset[arr[2]]['type'], dp['type']) - #if dataset[arr[2]]['priority'] not in dp['priority']: - # print (dataset[arr[2]]['type'], dp['type']) - else: - dataset.update({arr[2]:dp}) - numFiles += 1 - #print (numFiles) - return dataset - - # Remove jira issues which has no description, comments and priority - def remove_uncomplete_issues(self, project_set, datasets): - for project in project_set: - keys = list(datasets[project].keys()) - for issueId in keys: - issue = datasets[project][issueId] - if 'description' not in issue: - datasets[project].pop(issueId) - elif 'comment' not in issue: - datasets[project].pop(issueId) - elif 'priority' not in issue: - datasets[project].pop(issueId) - - # Dump the dataset into pickle file - def dump_into_pickle(self, datasets, filePath): - pickle.dump(datasets, open(filePath, 'wb'), True) - - - -class FSPatchExtractor(): - def __init__(self): - self.datasets = {} - - def generate_dataset(self, files): - """return dataset, a list of dict data points""" - dataset = [] - attributes = ('type', 'sub_type', 'sub_sub_type', - 'cons_type', 'sub_cons_type') - - re_patch_bp = re.compile("""\((?P[bp]): - (?P[^(->)]*) - (->(?P[^(->)\)]*))? - (->[^(->)\)]*)*\): - \(s:(?P[^(->)]*) - (->(?P[^\)]*))?\)""", re.VERBOSE) - re_patch_c = re.compile("""\((?Pc): - (?P[^(->)]*) - (->(?P[^(->)\)]*))?\)""", re.VERBOSE) - re_patch_misc = re.compile("""\((?Pmisc)-> - (?P[^\)]*)\)""", re.VERBOSE) - re_patch_f = re.compile("\((?Pf)\)") - - for fname in files: - with open(fname, 'r') as f: - lines = f.readlines() - - ptr = 0 - while ptr <= len(lines) - 2: - line = lines[ptr] - next_line = lines[ptr + 1] - if line.startswith(' ') or line.startswith('\t'): - try: - assert(next_line.lstrip().startswith('.')) - except: - """ - print('-------- Error line ---------') - print('line:%s' % line) - print('next:%s' % next_line) - print('-----------------------------') - """ - ptr += 1 - continue - dp = {} - dp['subject'] = line.lstrip().rstrip() - - m = re_patch_bp.search(next_line) or \ - re_patch_c.search(next_line) or \ - re_patch_misc.search(next_line) or \ - re_patch_f.search(next_line) - if m != None: - gd = m.groupdict() - for attr in attributes: - if attr in gd: - dp[attr] = gd[attr] - dataset.append(dp) - ptr += 2 - else: - # skip lines with multiple sub_types and consequences - ptr += 1 - else: - ptr += 1 - - return dataset diff --git a/persper/labeler.py b/persper/labeler.py deleted file mode 100644 index fdf736c0306..00000000000 --- a/persper/labeler.py +++ /dev/null @@ -1,54 +0,0 @@ -# Standard types (4 main classes): -BUG = 'bug' -FEATURE = 'feature' -MAINTENANCE = 'maintenance' -IMPROVEMENT = 'improvement' -SKIP = '_' # Excluded. - -# Additional types for Linux filesystem patches: -PERFORMANCE = 'performance' -RELIABILITY = 'reliability' - -# Priority labels: -HIGH = 'high' -MID = 'mid' -LOW = 'low' - -# Mapping from project-specific types to the standard: - -fs_type = { # For the Linux filesystem patches data set. - 'b': BUG, - 'f': FEATURE, - 'p': PERFORMANCE, - 'c': RELIABILITY, - 'misc': MAINTENANCE, -} - -apache_type = { # For Apache JIRA projects. - 'Bug': BUG, - 'New Feature': FEATURE, - 'Improvement': IMPROVEMENT, - 'Test': MAINTENANCE, - 'Documentation': MAINTENANCE, - 'Dependency upgrade': MAINTENANCE, - 'Github Integration': MAINTENANCE, - 'Wish': SKIP, - 'Question': SKIP, - 'Brainstorming': SKIP, - # The following are agile terms, simply skipped for now. - 'Epic': SKIP, - 'Story': SKIP, - 'Task': SKIP, - 'Technical task': SKIP, - 'Sub-task': SKIP, - 'Umbrella': SKIP, -} - -apache_priority = { # For Apache JIRA projects. - 'Blocker': HIGH, - 'Critical': HIGH, - 'Major': MID, - 'Minor': LOW, - 'Trivial': LOW, - 'No priority': SKIP, -} diff --git a/persper/parser/java/JavaLexer.interp b/persper/parser/java/JavaLexer.interp deleted file mode 100644 index f4c75ca54df..00000000000 --- a/persper/parser/java/JavaLexer.interp +++ /dev/null @@ -1,357 +0,0 @@ -token literal names: -null -'abstract' -'assert' -'boolean' -'break' -'byte' -'case' -'catch' -'char' -'class' -'const' -'continue' -'default' -'do' -'double' -'else' -'enum' -'extends' -'final' -'finally' -'float' -'for' -'if' -'goto' -'implements' -'import' -'instanceof' -'int' -'interface' -'long' -'native' -'new' -'package' -'private' -'protected' -'public' -'return' -'short' -'static' -'strictfp' -'super' -'switch' -'synchronized' -'this' -'throw' -'throws' -'transient' -'try' -'void' -'volatile' -'while' -null -null -null -null -null -null -null -null -null -'null' -'(' -')' -'{' -'}' -'[' -']' -';' -',' -'.' -'=' -'>' -'<' -'!' -'~' -'?' -':' -'==' -'<=' -'>=' -'!=' -'&&' -'||' -'++' -'--' -'+' -'-' -'*' -'/' -'&' -'|' -'^' -'%' -'+=' -'-=' -'*=' -'/=' -'&=' -'|=' -'^=' -'%=' -'<<=' -'>>=' -'>>>=' -'->' -'::' -'@' -'...' -null -null -null -null - -token symbolic names: -null -ABSTRACT -ASSERT -BOOLEAN -BREAK -BYTE -CASE -CATCH -CHAR -CLASS -CONST -CONTINUE -DEFAULT -DO -DOUBLE -ELSE -ENUM -EXTENDS -FINAL -FINALLY -FLOAT -FOR -IF -GOTO -IMPLEMENTS -IMPORT -INSTANCEOF -INT -INTERFACE -LONG -NATIVE -NEW -PACKAGE -PRIVATE -PROTECTED -PUBLIC -RETURN -SHORT -STATIC -STRICTFP -SUPER -SWITCH -SYNCHRONIZED -THIS -THROW -THROWS -TRANSIENT -TRY -VOID -VOLATILE -WHILE -DECIMAL_LITERAL -HEX_LITERAL -OCT_LITERAL -BINARY_LITERAL -FLOAT_LITERAL -HEX_FLOAT_LITERAL -BOOL_LITERAL -CHAR_LITERAL -STRING_LITERAL -NULL_LITERAL -LPAREN -RPAREN -LBRACE -RBRACE -LBRACK -RBRACK -SEMI -COMMA -DOT -ASSIGN -GT -LT -BANG -TILDE -QUESTION -COLON -EQUAL -LE -GE -NOTEQUAL -AND -OR -INC -DEC -ADD -SUB -MUL -DIV -BITAND -BITOR -CARET -MOD -ADD_ASSIGN -SUB_ASSIGN -MUL_ASSIGN -DIV_ASSIGN -AND_ASSIGN -OR_ASSIGN -XOR_ASSIGN -MOD_ASSIGN -LSHIFT_ASSIGN -RSHIFT_ASSIGN -URSHIFT_ASSIGN -ARROW -COLONCOLON -AT -ELLIPSIS -WS -COMMENT -LINE_COMMENT -IDENTIFIER - -rule names: -ABSTRACT -ASSERT -BOOLEAN -BREAK -BYTE -CASE -CATCH -CHAR -CLASS -CONST -CONTINUE -DEFAULT -DO -DOUBLE -ELSE -ENUM -EXTENDS -FINAL -FINALLY -FLOAT -FOR -IF -GOTO -IMPLEMENTS -IMPORT -INSTANCEOF -INT -INTERFACE -LONG -NATIVE -NEW -PACKAGE -PRIVATE -PROTECTED -PUBLIC -RETURN -SHORT -STATIC -STRICTFP -SUPER -SWITCH -SYNCHRONIZED -THIS -THROW -THROWS -TRANSIENT -TRY -VOID -VOLATILE -WHILE -DECIMAL_LITERAL -HEX_LITERAL -OCT_LITERAL -BINARY_LITERAL -FLOAT_LITERAL -HEX_FLOAT_LITERAL -BOOL_LITERAL -CHAR_LITERAL -STRING_LITERAL -NULL_LITERAL -LPAREN -RPAREN -LBRACE -RBRACE -LBRACK -RBRACK -SEMI -COMMA -DOT -ASSIGN -GT -LT -BANG -TILDE -QUESTION -COLON -EQUAL -LE -GE -NOTEQUAL -AND -OR -INC -DEC -ADD -SUB -MUL -DIV -BITAND -BITOR -CARET -MOD -ADD_ASSIGN -SUB_ASSIGN -MUL_ASSIGN -DIV_ASSIGN -AND_ASSIGN -OR_ASSIGN -XOR_ASSIGN -MOD_ASSIGN -LSHIFT_ASSIGN -RSHIFT_ASSIGN -URSHIFT_ASSIGN -ARROW -COLONCOLON -AT -ELLIPSIS -WS -COMMENT -LINE_COMMENT -IDENTIFIER -ExponentPart -EscapeSequence -HexDigits -HexDigit -Digits -LetterOrDigit -Letter - -channel names: -DEFAULT_TOKEN_CHANNEL -HIDDEN - -mode names: -DEFAULT_MODE - -atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 113, 947, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106, 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, 4, 111, 9, 111, 4, 112, 9, 112, 4, 113, 9, 113, 4, 114, 9, 114, 4, 115, 9, 115, 4, 116, 9, 116, 4, 117, 9, 117, 4, 118, 9, 118, 4, 119, 9, 119, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 5, 52, 582, 10, 52, 3, 52, 6, 52, 585, 10, 52, 13, 52, 14, 52, 586, 3, 52, 5, 52, 590, 10, 52, 5, 52, 592, 10, 52, 3, 52, 5, 52, 595, 10, 52, 3, 53, 3, 53, 3, 53, 3, 53, 7, 53, 601, 10, 53, 12, 53, 14, 53, 604, 11, 53, 3, 53, 5, 53, 607, 10, 53, 3, 53, 5, 53, 610, 10, 53, 3, 54, 3, 54, 7, 54, 614, 10, 54, 12, 54, 14, 54, 617, 11, 54, 3, 54, 3, 54, 7, 54, 621, 10, 54, 12, 54, 14, 54, 624, 11, 54, 3, 54, 5, 54, 627, 10, 54, 3, 54, 5, 54, 630, 10, 54, 3, 55, 3, 55, 3, 55, 3, 55, 7, 55, 636, 10, 55, 12, 55, 14, 55, 639, 11, 55, 3, 55, 5, 55, 642, 10, 55, 3, 55, 5, 55, 645, 10, 55, 3, 56, 3, 56, 3, 56, 5, 56, 650, 10, 56, 3, 56, 3, 56, 5, 56, 654, 10, 56, 3, 56, 5, 56, 657, 10, 56, 3, 56, 5, 56, 660, 10, 56, 3, 56, 3, 56, 3, 56, 5, 56, 665, 10, 56, 3, 56, 5, 56, 668, 10, 56, 5, 56, 670, 10, 56, 3, 57, 3, 57, 3, 57, 3, 57, 5, 57, 676, 10, 57, 3, 57, 5, 57, 679, 10, 57, 3, 57, 3, 57, 5, 57, 683, 10, 57, 3, 57, 3, 57, 5, 57, 687, 10, 57, 3, 57, 3, 57, 5, 57, 691, 10, 57, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 5, 58, 702, 10, 58, 3, 59, 3, 59, 3, 59, 5, 59, 707, 10, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 60, 7, 60, 714, 10, 60, 12, 60, 14, 60, 717, 11, 60, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 63, 3, 63, 3, 64, 3, 64, 3, 65, 3, 65, 3, 66, 3, 66, 3, 67, 3, 67, 3, 68, 3, 68, 3, 69, 3, 69, 3, 70, 3, 70, 3, 71, 3, 71, 3, 72, 3, 72, 3, 73, 3, 73, 3, 74, 3, 74, 3, 75, 3, 75, 3, 76, 3, 76, 3, 77, 3, 77, 3, 78, 3, 78, 3, 78, 3, 79, 3, 79, 3, 79, 3, 80, 3, 80, 3, 80, 3, 81, 3, 81, 3, 81, 3, 82, 3, 82, 3, 82, 3, 83, 3, 83, 3, 83, 3, 84, 3, 84, 3, 84, 3, 85, 3, 85, 3, 85, 3, 86, 3, 86, 3, 87, 3, 87, 3, 88, 3, 88, 3, 89, 3, 89, 3, 90, 3, 90, 3, 91, 3, 91, 3, 92, 3, 92, 3, 93, 3, 93, 3, 94, 3, 94, 3, 94, 3, 95, 3, 95, 3, 95, 3, 96, 3, 96, 3, 96, 3, 97, 3, 97, 3, 97, 3, 98, 3, 98, 3, 98, 3, 99, 3, 99, 3, 99, 3, 100, 3, 100, 3, 100, 3, 101, 3, 101, 3, 101, 3, 102, 3, 102, 3, 102, 3, 102, 3, 103, 3, 103, 3, 103, 3, 103, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 105, 3, 105, 3, 105, 3, 106, 3, 106, 3, 106, 3, 107, 3, 107, 3, 108, 3, 108, 3, 108, 3, 108, 3, 109, 6, 109, 848, 10, 109, 13, 109, 14, 109, 849, 3, 109, 3, 109, 3, 110, 3, 110, 3, 110, 3, 110, 7, 110, 858, 10, 110, 12, 110, 14, 110, 861, 11, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 111, 3, 111, 3, 111, 3, 111, 7, 111, 872, 10, 111, 12, 111, 14, 111, 875, 11, 111, 3, 111, 3, 111, 3, 112, 3, 112, 7, 112, 881, 10, 112, 12, 112, 14, 112, 884, 11, 112, 3, 113, 3, 113, 5, 113, 888, 10, 113, 3, 113, 3, 113, 3, 114, 3, 114, 3, 114, 3, 114, 5, 114, 896, 10, 114, 3, 114, 5, 114, 899, 10, 114, 3, 114, 3, 114, 3, 114, 6, 114, 904, 10, 114, 13, 114, 14, 114, 905, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 5, 114, 913, 10, 114, 3, 115, 3, 115, 3, 115, 7, 115, 918, 10, 115, 12, 115, 14, 115, 921, 11, 115, 3, 115, 5, 115, 924, 10, 115, 3, 116, 3, 116, 3, 117, 3, 117, 7, 117, 930, 10, 117, 12, 117, 14, 117, 933, 11, 117, 3, 117, 5, 117, 936, 10, 117, 3, 118, 3, 118, 5, 118, 940, 10, 118, 3, 119, 3, 119, 3, 119, 3, 119, 5, 119, 946, 10, 119, 3, 859, 2, 120, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 13, 25, 14, 27, 15, 29, 16, 31, 17, 33, 18, 35, 19, 37, 20, 39, 21, 41, 22, 43, 23, 45, 24, 47, 25, 49, 26, 51, 27, 53, 28, 55, 29, 57, 30, 59, 31, 61, 32, 63, 33, 65, 34, 67, 35, 69, 36, 71, 37, 73, 38, 75, 39, 77, 40, 79, 41, 81, 42, 83, 43, 85, 44, 87, 45, 89, 46, 91, 47, 93, 48, 95, 49, 97, 50, 99, 51, 101, 52, 103, 53, 105, 54, 107, 55, 109, 56, 111, 57, 113, 58, 115, 59, 117, 60, 119, 61, 121, 62, 123, 63, 125, 64, 127, 65, 129, 66, 131, 67, 133, 68, 135, 69, 137, 70, 139, 71, 141, 72, 143, 73, 145, 74, 147, 75, 149, 76, 151, 77, 153, 78, 155, 79, 157, 80, 159, 81, 161, 82, 163, 83, 165, 84, 167, 85, 169, 86, 171, 87, 173, 88, 175, 89, 177, 90, 179, 91, 181, 92, 183, 93, 185, 94, 187, 95, 189, 96, 191, 97, 193, 98, 195, 99, 197, 100, 199, 101, 201, 102, 203, 103, 205, 104, 207, 105, 209, 106, 211, 107, 213, 108, 215, 109, 217, 110, 219, 111, 221, 112, 223, 113, 225, 2, 227, 2, 229, 2, 231, 2, 233, 2, 235, 2, 237, 2, 3, 2, 28, 3, 2, 51, 59, 4, 2, 78, 78, 110, 110, 4, 2, 90, 90, 122, 122, 5, 2, 50, 59, 67, 72, 99, 104, 6, 2, 50, 59, 67, 72, 97, 97, 99, 104, 3, 2, 50, 57, 4, 2, 50, 57, 97, 97, 4, 2, 68, 68, 100, 100, 3, 2, 50, 51, 4, 2, 50, 51, 97, 97, 6, 2, 70, 70, 72, 72, 102, 102, 104, 104, 4, 2, 82, 82, 114, 114, 4, 2, 45, 45, 47, 47, 6, 2, 12, 12, 15, 15, 41, 41, 94, 94, 6, 2, 12, 12, 15, 15, 36, 36, 94, 94, 5, 2, 11, 12, 14, 15, 34, 34, 4, 2, 12, 12, 15, 15, 4, 2, 71, 71, 103, 103, 10, 2, 36, 36, 41, 41, 94, 94, 100, 100, 104, 104, 112, 112, 116, 116, 118, 118, 3, 2, 50, 53, 3, 2, 50, 59, 4, 2, 50, 59, 97, 97, 6, 2, 38, 38, 67, 92, 97, 97, 99, 124, 4, 2, 2, 129, 55298, 56321, 3, 2, 55298, 56321, 3, 2, 56322, 57345, 2, 988, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 2, 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 2, 127, 3, 2, 2, 2, 2, 129, 3, 2, 2, 2, 2, 131, 3, 2, 2, 2, 2, 133, 3, 2, 2, 2, 2, 135, 3, 2, 2, 2, 2, 137, 3, 2, 2, 2, 2, 139, 3, 2, 2, 2, 2, 141, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, 2, 145, 3, 2, 2, 2, 2, 147, 3, 2, 2, 2, 2, 149, 3, 2, 2, 2, 2, 151, 3, 2, 2, 2, 2, 153, 3, 2, 2, 2, 2, 155, 3, 2, 2, 2, 2, 157, 3, 2, 2, 2, 2, 159, 3, 2, 2, 2, 2, 161, 3, 2, 2, 2, 2, 163, 3, 2, 2, 2, 2, 165, 3, 2, 2, 2, 2, 167, 3, 2, 2, 2, 2, 169, 3, 2, 2, 2, 2, 171, 3, 2, 2, 2, 2, 173, 3, 2, 2, 2, 2, 175, 3, 2, 2, 2, 2, 177, 3, 2, 2, 2, 2, 179, 3, 2, 2, 2, 2, 181, 3, 2, 2, 2, 2, 183, 3, 2, 2, 2, 2, 185, 3, 2, 2, 2, 2, 187, 3, 2, 2, 2, 2, 189, 3, 2, 2, 2, 2, 191, 3, 2, 2, 2, 2, 193, 3, 2, 2, 2, 2, 195, 3, 2, 2, 2, 2, 197, 3, 2, 2, 2, 2, 199, 3, 2, 2, 2, 2, 201, 3, 2, 2, 2, 2, 203, 3, 2, 2, 2, 2, 205, 3, 2, 2, 2, 2, 207, 3, 2, 2, 2, 2, 209, 3, 2, 2, 2, 2, 211, 3, 2, 2, 2, 2, 213, 3, 2, 2, 2, 2, 215, 3, 2, 2, 2, 2, 217, 3, 2, 2, 2, 2, 219, 3, 2, 2, 2, 2, 221, 3, 2, 2, 2, 2, 223, 3, 2, 2, 2, 3, 239, 3, 2, 2, 2, 5, 248, 3, 2, 2, 2, 7, 255, 3, 2, 2, 2, 9, 263, 3, 2, 2, 2, 11, 269, 3, 2, 2, 2, 13, 274, 3, 2, 2, 2, 15, 279, 3, 2, 2, 2, 17, 285, 3, 2, 2, 2, 19, 290, 3, 2, 2, 2, 21, 296, 3, 2, 2, 2, 23, 302, 3, 2, 2, 2, 25, 311, 3, 2, 2, 2, 27, 319, 3, 2, 2, 2, 29, 322, 3, 2, 2, 2, 31, 329, 3, 2, 2, 2, 33, 334, 3, 2, 2, 2, 35, 339, 3, 2, 2, 2, 37, 347, 3, 2, 2, 2, 39, 353, 3, 2, 2, 2, 41, 361, 3, 2, 2, 2, 43, 367, 3, 2, 2, 2, 45, 371, 3, 2, 2, 2, 47, 374, 3, 2, 2, 2, 49, 379, 3, 2, 2, 2, 51, 390, 3, 2, 2, 2, 53, 397, 3, 2, 2, 2, 55, 408, 3, 2, 2, 2, 57, 412, 3, 2, 2, 2, 59, 422, 3, 2, 2, 2, 61, 427, 3, 2, 2, 2, 63, 434, 3, 2, 2, 2, 65, 438, 3, 2, 2, 2, 67, 446, 3, 2, 2, 2, 69, 454, 3, 2, 2, 2, 71, 464, 3, 2, 2, 2, 73, 471, 3, 2, 2, 2, 75, 478, 3, 2, 2, 2, 77, 484, 3, 2, 2, 2, 79, 491, 3, 2, 2, 2, 81, 500, 3, 2, 2, 2, 83, 506, 3, 2, 2, 2, 85, 513, 3, 2, 2, 2, 87, 526, 3, 2, 2, 2, 89, 531, 3, 2, 2, 2, 91, 537, 3, 2, 2, 2, 93, 544, 3, 2, 2, 2, 95, 554, 3, 2, 2, 2, 97, 558, 3, 2, 2, 2, 99, 563, 3, 2, 2, 2, 101, 572, 3, 2, 2, 2, 103, 591, 3, 2, 2, 2, 105, 596, 3, 2, 2, 2, 107, 611, 3, 2, 2, 2, 109, 631, 3, 2, 2, 2, 111, 669, 3, 2, 2, 2, 113, 671, 3, 2, 2, 2, 115, 701, 3, 2, 2, 2, 117, 703, 3, 2, 2, 2, 119, 710, 3, 2, 2, 2, 121, 720, 3, 2, 2, 2, 123, 725, 3, 2, 2, 2, 125, 727, 3, 2, 2, 2, 127, 729, 3, 2, 2, 2, 129, 731, 3, 2, 2, 2, 131, 733, 3, 2, 2, 2, 133, 735, 3, 2, 2, 2, 135, 737, 3, 2, 2, 2, 137, 739, 3, 2, 2, 2, 139, 741, 3, 2, 2, 2, 141, 743, 3, 2, 2, 2, 143, 745, 3, 2, 2, 2, 145, 747, 3, 2, 2, 2, 147, 749, 3, 2, 2, 2, 149, 751, 3, 2, 2, 2, 151, 753, 3, 2, 2, 2, 153, 755, 3, 2, 2, 2, 155, 757, 3, 2, 2, 2, 157, 760, 3, 2, 2, 2, 159, 763, 3, 2, 2, 2, 161, 766, 3, 2, 2, 2, 163, 769, 3, 2, 2, 2, 165, 772, 3, 2, 2, 2, 167, 775, 3, 2, 2, 2, 169, 778, 3, 2, 2, 2, 171, 781, 3, 2, 2, 2, 173, 783, 3, 2, 2, 2, 175, 785, 3, 2, 2, 2, 177, 787, 3, 2, 2, 2, 179, 789, 3, 2, 2, 2, 181, 791, 3, 2, 2, 2, 183, 793, 3, 2, 2, 2, 185, 795, 3, 2, 2, 2, 187, 797, 3, 2, 2, 2, 189, 800, 3, 2, 2, 2, 191, 803, 3, 2, 2, 2, 193, 806, 3, 2, 2, 2, 195, 809, 3, 2, 2, 2, 197, 812, 3, 2, 2, 2, 199, 815, 3, 2, 2, 2, 201, 818, 3, 2, 2, 2, 203, 821, 3, 2, 2, 2, 205, 825, 3, 2, 2, 2, 207, 829, 3, 2, 2, 2, 209, 834, 3, 2, 2, 2, 211, 837, 3, 2, 2, 2, 213, 840, 3, 2, 2, 2, 215, 842, 3, 2, 2, 2, 217, 847, 3, 2, 2, 2, 219, 853, 3, 2, 2, 2, 221, 867, 3, 2, 2, 2, 223, 878, 3, 2, 2, 2, 225, 885, 3, 2, 2, 2, 227, 912, 3, 2, 2, 2, 229, 914, 3, 2, 2, 2, 231, 925, 3, 2, 2, 2, 233, 927, 3, 2, 2, 2, 235, 939, 3, 2, 2, 2, 237, 945, 3, 2, 2, 2, 239, 240, 7, 99, 2, 2, 240, 241, 7, 100, 2, 2, 241, 242, 7, 117, 2, 2, 242, 243, 7, 118, 2, 2, 243, 244, 7, 116, 2, 2, 244, 245, 7, 99, 2, 2, 245, 246, 7, 101, 2, 2, 246, 247, 7, 118, 2, 2, 247, 4, 3, 2, 2, 2, 248, 249, 7, 99, 2, 2, 249, 250, 7, 117, 2, 2, 250, 251, 7, 117, 2, 2, 251, 252, 7, 103, 2, 2, 252, 253, 7, 116, 2, 2, 253, 254, 7, 118, 2, 2, 254, 6, 3, 2, 2, 2, 255, 256, 7, 100, 2, 2, 256, 257, 7, 113, 2, 2, 257, 258, 7, 113, 2, 2, 258, 259, 7, 110, 2, 2, 259, 260, 7, 103, 2, 2, 260, 261, 7, 99, 2, 2, 261, 262, 7, 112, 2, 2, 262, 8, 3, 2, 2, 2, 263, 264, 7, 100, 2, 2, 264, 265, 7, 116, 2, 2, 265, 266, 7, 103, 2, 2, 266, 267, 7, 99, 2, 2, 267, 268, 7, 109, 2, 2, 268, 10, 3, 2, 2, 2, 269, 270, 7, 100, 2, 2, 270, 271, 7, 123, 2, 2, 271, 272, 7, 118, 2, 2, 272, 273, 7, 103, 2, 2, 273, 12, 3, 2, 2, 2, 274, 275, 7, 101, 2, 2, 275, 276, 7, 99, 2, 2, 276, 277, 7, 117, 2, 2, 277, 278, 7, 103, 2, 2, 278, 14, 3, 2, 2, 2, 279, 280, 7, 101, 2, 2, 280, 281, 7, 99, 2, 2, 281, 282, 7, 118, 2, 2, 282, 283, 7, 101, 2, 2, 283, 284, 7, 106, 2, 2, 284, 16, 3, 2, 2, 2, 285, 286, 7, 101, 2, 2, 286, 287, 7, 106, 2, 2, 287, 288, 7, 99, 2, 2, 288, 289, 7, 116, 2, 2, 289, 18, 3, 2, 2, 2, 290, 291, 7, 101, 2, 2, 291, 292, 7, 110, 2, 2, 292, 293, 7, 99, 2, 2, 293, 294, 7, 117, 2, 2, 294, 295, 7, 117, 2, 2, 295, 20, 3, 2, 2, 2, 296, 297, 7, 101, 2, 2, 297, 298, 7, 113, 2, 2, 298, 299, 7, 112, 2, 2, 299, 300, 7, 117, 2, 2, 300, 301, 7, 118, 2, 2, 301, 22, 3, 2, 2, 2, 302, 303, 7, 101, 2, 2, 303, 304, 7, 113, 2, 2, 304, 305, 7, 112, 2, 2, 305, 306, 7, 118, 2, 2, 306, 307, 7, 107, 2, 2, 307, 308, 7, 112, 2, 2, 308, 309, 7, 119, 2, 2, 309, 310, 7, 103, 2, 2, 310, 24, 3, 2, 2, 2, 311, 312, 7, 102, 2, 2, 312, 313, 7, 103, 2, 2, 313, 314, 7, 104, 2, 2, 314, 315, 7, 99, 2, 2, 315, 316, 7, 119, 2, 2, 316, 317, 7, 110, 2, 2, 317, 318, 7, 118, 2, 2, 318, 26, 3, 2, 2, 2, 319, 320, 7, 102, 2, 2, 320, 321, 7, 113, 2, 2, 321, 28, 3, 2, 2, 2, 322, 323, 7, 102, 2, 2, 323, 324, 7, 113, 2, 2, 324, 325, 7, 119, 2, 2, 325, 326, 7, 100, 2, 2, 326, 327, 7, 110, 2, 2, 327, 328, 7, 103, 2, 2, 328, 30, 3, 2, 2, 2, 329, 330, 7, 103, 2, 2, 330, 331, 7, 110, 2, 2, 331, 332, 7, 117, 2, 2, 332, 333, 7, 103, 2, 2, 333, 32, 3, 2, 2, 2, 334, 335, 7, 103, 2, 2, 335, 336, 7, 112, 2, 2, 336, 337, 7, 119, 2, 2, 337, 338, 7, 111, 2, 2, 338, 34, 3, 2, 2, 2, 339, 340, 7, 103, 2, 2, 340, 341, 7, 122, 2, 2, 341, 342, 7, 118, 2, 2, 342, 343, 7, 103, 2, 2, 343, 344, 7, 112, 2, 2, 344, 345, 7, 102, 2, 2, 345, 346, 7, 117, 2, 2, 346, 36, 3, 2, 2, 2, 347, 348, 7, 104, 2, 2, 348, 349, 7, 107, 2, 2, 349, 350, 7, 112, 2, 2, 350, 351, 7, 99, 2, 2, 351, 352, 7, 110, 2, 2, 352, 38, 3, 2, 2, 2, 353, 354, 7, 104, 2, 2, 354, 355, 7, 107, 2, 2, 355, 356, 7, 112, 2, 2, 356, 357, 7, 99, 2, 2, 357, 358, 7, 110, 2, 2, 358, 359, 7, 110, 2, 2, 359, 360, 7, 123, 2, 2, 360, 40, 3, 2, 2, 2, 361, 362, 7, 104, 2, 2, 362, 363, 7, 110, 2, 2, 363, 364, 7, 113, 2, 2, 364, 365, 7, 99, 2, 2, 365, 366, 7, 118, 2, 2, 366, 42, 3, 2, 2, 2, 367, 368, 7, 104, 2, 2, 368, 369, 7, 113, 2, 2, 369, 370, 7, 116, 2, 2, 370, 44, 3, 2, 2, 2, 371, 372, 7, 107, 2, 2, 372, 373, 7, 104, 2, 2, 373, 46, 3, 2, 2, 2, 374, 375, 7, 105, 2, 2, 375, 376, 7, 113, 2, 2, 376, 377, 7, 118, 2, 2, 377, 378, 7, 113, 2, 2, 378, 48, 3, 2, 2, 2, 379, 380, 7, 107, 2, 2, 380, 381, 7, 111, 2, 2, 381, 382, 7, 114, 2, 2, 382, 383, 7, 110, 2, 2, 383, 384, 7, 103, 2, 2, 384, 385, 7, 111, 2, 2, 385, 386, 7, 103, 2, 2, 386, 387, 7, 112, 2, 2, 387, 388, 7, 118, 2, 2, 388, 389, 7, 117, 2, 2, 389, 50, 3, 2, 2, 2, 390, 391, 7, 107, 2, 2, 391, 392, 7, 111, 2, 2, 392, 393, 7, 114, 2, 2, 393, 394, 7, 113, 2, 2, 394, 395, 7, 116, 2, 2, 395, 396, 7, 118, 2, 2, 396, 52, 3, 2, 2, 2, 397, 398, 7, 107, 2, 2, 398, 399, 7, 112, 2, 2, 399, 400, 7, 117, 2, 2, 400, 401, 7, 118, 2, 2, 401, 402, 7, 99, 2, 2, 402, 403, 7, 112, 2, 2, 403, 404, 7, 101, 2, 2, 404, 405, 7, 103, 2, 2, 405, 406, 7, 113, 2, 2, 406, 407, 7, 104, 2, 2, 407, 54, 3, 2, 2, 2, 408, 409, 7, 107, 2, 2, 409, 410, 7, 112, 2, 2, 410, 411, 7, 118, 2, 2, 411, 56, 3, 2, 2, 2, 412, 413, 7, 107, 2, 2, 413, 414, 7, 112, 2, 2, 414, 415, 7, 118, 2, 2, 415, 416, 7, 103, 2, 2, 416, 417, 7, 116, 2, 2, 417, 418, 7, 104, 2, 2, 418, 419, 7, 99, 2, 2, 419, 420, 7, 101, 2, 2, 420, 421, 7, 103, 2, 2, 421, 58, 3, 2, 2, 2, 422, 423, 7, 110, 2, 2, 423, 424, 7, 113, 2, 2, 424, 425, 7, 112, 2, 2, 425, 426, 7, 105, 2, 2, 426, 60, 3, 2, 2, 2, 427, 428, 7, 112, 2, 2, 428, 429, 7, 99, 2, 2, 429, 430, 7, 118, 2, 2, 430, 431, 7, 107, 2, 2, 431, 432, 7, 120, 2, 2, 432, 433, 7, 103, 2, 2, 433, 62, 3, 2, 2, 2, 434, 435, 7, 112, 2, 2, 435, 436, 7, 103, 2, 2, 436, 437, 7, 121, 2, 2, 437, 64, 3, 2, 2, 2, 438, 439, 7, 114, 2, 2, 439, 440, 7, 99, 2, 2, 440, 441, 7, 101, 2, 2, 441, 442, 7, 109, 2, 2, 442, 443, 7, 99, 2, 2, 443, 444, 7, 105, 2, 2, 444, 445, 7, 103, 2, 2, 445, 66, 3, 2, 2, 2, 446, 447, 7, 114, 2, 2, 447, 448, 7, 116, 2, 2, 448, 449, 7, 107, 2, 2, 449, 450, 7, 120, 2, 2, 450, 451, 7, 99, 2, 2, 451, 452, 7, 118, 2, 2, 452, 453, 7, 103, 2, 2, 453, 68, 3, 2, 2, 2, 454, 455, 7, 114, 2, 2, 455, 456, 7, 116, 2, 2, 456, 457, 7, 113, 2, 2, 457, 458, 7, 118, 2, 2, 458, 459, 7, 103, 2, 2, 459, 460, 7, 101, 2, 2, 460, 461, 7, 118, 2, 2, 461, 462, 7, 103, 2, 2, 462, 463, 7, 102, 2, 2, 463, 70, 3, 2, 2, 2, 464, 465, 7, 114, 2, 2, 465, 466, 7, 119, 2, 2, 466, 467, 7, 100, 2, 2, 467, 468, 7, 110, 2, 2, 468, 469, 7, 107, 2, 2, 469, 470, 7, 101, 2, 2, 470, 72, 3, 2, 2, 2, 471, 472, 7, 116, 2, 2, 472, 473, 7, 103, 2, 2, 473, 474, 7, 118, 2, 2, 474, 475, 7, 119, 2, 2, 475, 476, 7, 116, 2, 2, 476, 477, 7, 112, 2, 2, 477, 74, 3, 2, 2, 2, 478, 479, 7, 117, 2, 2, 479, 480, 7, 106, 2, 2, 480, 481, 7, 113, 2, 2, 481, 482, 7, 116, 2, 2, 482, 483, 7, 118, 2, 2, 483, 76, 3, 2, 2, 2, 484, 485, 7, 117, 2, 2, 485, 486, 7, 118, 2, 2, 486, 487, 7, 99, 2, 2, 487, 488, 7, 118, 2, 2, 488, 489, 7, 107, 2, 2, 489, 490, 7, 101, 2, 2, 490, 78, 3, 2, 2, 2, 491, 492, 7, 117, 2, 2, 492, 493, 7, 118, 2, 2, 493, 494, 7, 116, 2, 2, 494, 495, 7, 107, 2, 2, 495, 496, 7, 101, 2, 2, 496, 497, 7, 118, 2, 2, 497, 498, 7, 104, 2, 2, 498, 499, 7, 114, 2, 2, 499, 80, 3, 2, 2, 2, 500, 501, 7, 117, 2, 2, 501, 502, 7, 119, 2, 2, 502, 503, 7, 114, 2, 2, 503, 504, 7, 103, 2, 2, 504, 505, 7, 116, 2, 2, 505, 82, 3, 2, 2, 2, 506, 507, 7, 117, 2, 2, 507, 508, 7, 121, 2, 2, 508, 509, 7, 107, 2, 2, 509, 510, 7, 118, 2, 2, 510, 511, 7, 101, 2, 2, 511, 512, 7, 106, 2, 2, 512, 84, 3, 2, 2, 2, 513, 514, 7, 117, 2, 2, 514, 515, 7, 123, 2, 2, 515, 516, 7, 112, 2, 2, 516, 517, 7, 101, 2, 2, 517, 518, 7, 106, 2, 2, 518, 519, 7, 116, 2, 2, 519, 520, 7, 113, 2, 2, 520, 521, 7, 112, 2, 2, 521, 522, 7, 107, 2, 2, 522, 523, 7, 124, 2, 2, 523, 524, 7, 103, 2, 2, 524, 525, 7, 102, 2, 2, 525, 86, 3, 2, 2, 2, 526, 527, 7, 118, 2, 2, 527, 528, 7, 106, 2, 2, 528, 529, 7, 107, 2, 2, 529, 530, 7, 117, 2, 2, 530, 88, 3, 2, 2, 2, 531, 532, 7, 118, 2, 2, 532, 533, 7, 106, 2, 2, 533, 534, 7, 116, 2, 2, 534, 535, 7, 113, 2, 2, 535, 536, 7, 121, 2, 2, 536, 90, 3, 2, 2, 2, 537, 538, 7, 118, 2, 2, 538, 539, 7, 106, 2, 2, 539, 540, 7, 116, 2, 2, 540, 541, 7, 113, 2, 2, 541, 542, 7, 121, 2, 2, 542, 543, 7, 117, 2, 2, 543, 92, 3, 2, 2, 2, 544, 545, 7, 118, 2, 2, 545, 546, 7, 116, 2, 2, 546, 547, 7, 99, 2, 2, 547, 548, 7, 112, 2, 2, 548, 549, 7, 117, 2, 2, 549, 550, 7, 107, 2, 2, 550, 551, 7, 103, 2, 2, 551, 552, 7, 112, 2, 2, 552, 553, 7, 118, 2, 2, 553, 94, 3, 2, 2, 2, 554, 555, 7, 118, 2, 2, 555, 556, 7, 116, 2, 2, 556, 557, 7, 123, 2, 2, 557, 96, 3, 2, 2, 2, 558, 559, 7, 120, 2, 2, 559, 560, 7, 113, 2, 2, 560, 561, 7, 107, 2, 2, 561, 562, 7, 102, 2, 2, 562, 98, 3, 2, 2, 2, 563, 564, 7, 120, 2, 2, 564, 565, 7, 113, 2, 2, 565, 566, 7, 110, 2, 2, 566, 567, 7, 99, 2, 2, 567, 568, 7, 118, 2, 2, 568, 569, 7, 107, 2, 2, 569, 570, 7, 110, 2, 2, 570, 571, 7, 103, 2, 2, 571, 100, 3, 2, 2, 2, 572, 573, 7, 121, 2, 2, 573, 574, 7, 106, 2, 2, 574, 575, 7, 107, 2, 2, 575, 576, 7, 110, 2, 2, 576, 577, 7, 103, 2, 2, 577, 102, 3, 2, 2, 2, 578, 592, 7, 50, 2, 2, 579, 589, 9, 2, 2, 2, 580, 582, 5, 233, 117, 2, 581, 580, 3, 2, 2, 2, 581, 582, 3, 2, 2, 2, 582, 590, 3, 2, 2, 2, 583, 585, 7, 97, 2, 2, 584, 583, 3, 2, 2, 2, 585, 586, 3, 2, 2, 2, 586, 584, 3, 2, 2, 2, 586, 587, 3, 2, 2, 2, 587, 588, 3, 2, 2, 2, 588, 590, 5, 233, 117, 2, 589, 581, 3, 2, 2, 2, 589, 584, 3, 2, 2, 2, 590, 592, 3, 2, 2, 2, 591, 578, 3, 2, 2, 2, 591, 579, 3, 2, 2, 2, 592, 594, 3, 2, 2, 2, 593, 595, 9, 3, 2, 2, 594, 593, 3, 2, 2, 2, 594, 595, 3, 2, 2, 2, 595, 104, 3, 2, 2, 2, 596, 597, 7, 50, 2, 2, 597, 598, 9, 4, 2, 2, 598, 606, 9, 5, 2, 2, 599, 601, 9, 6, 2, 2, 600, 599, 3, 2, 2, 2, 601, 604, 3, 2, 2, 2, 602, 600, 3, 2, 2, 2, 602, 603, 3, 2, 2, 2, 603, 605, 3, 2, 2, 2, 604, 602, 3, 2, 2, 2, 605, 607, 9, 5, 2, 2, 606, 602, 3, 2, 2, 2, 606, 607, 3, 2, 2, 2, 607, 609, 3, 2, 2, 2, 608, 610, 9, 3, 2, 2, 609, 608, 3, 2, 2, 2, 609, 610, 3, 2, 2, 2, 610, 106, 3, 2, 2, 2, 611, 615, 7, 50, 2, 2, 612, 614, 7, 97, 2, 2, 613, 612, 3, 2, 2, 2, 614, 617, 3, 2, 2, 2, 615, 613, 3, 2, 2, 2, 615, 616, 3, 2, 2, 2, 616, 618, 3, 2, 2, 2, 617, 615, 3, 2, 2, 2, 618, 626, 9, 7, 2, 2, 619, 621, 9, 8, 2, 2, 620, 619, 3, 2, 2, 2, 621, 624, 3, 2, 2, 2, 622, 620, 3, 2, 2, 2, 622, 623, 3, 2, 2, 2, 623, 625, 3, 2, 2, 2, 624, 622, 3, 2, 2, 2, 625, 627, 9, 7, 2, 2, 626, 622, 3, 2, 2, 2, 626, 627, 3, 2, 2, 2, 627, 629, 3, 2, 2, 2, 628, 630, 9, 3, 2, 2, 629, 628, 3, 2, 2, 2, 629, 630, 3, 2, 2, 2, 630, 108, 3, 2, 2, 2, 631, 632, 7, 50, 2, 2, 632, 633, 9, 9, 2, 2, 633, 641, 9, 10, 2, 2, 634, 636, 9, 11, 2, 2, 635, 634, 3, 2, 2, 2, 636, 639, 3, 2, 2, 2, 637, 635, 3, 2, 2, 2, 637, 638, 3, 2, 2, 2, 638, 640, 3, 2, 2, 2, 639, 637, 3, 2, 2, 2, 640, 642, 9, 10, 2, 2, 641, 637, 3, 2, 2, 2, 641, 642, 3, 2, 2, 2, 642, 644, 3, 2, 2, 2, 643, 645, 9, 3, 2, 2, 644, 643, 3, 2, 2, 2, 644, 645, 3, 2, 2, 2, 645, 110, 3, 2, 2, 2, 646, 647, 5, 233, 117, 2, 647, 649, 7, 48, 2, 2, 648, 650, 5, 233, 117, 2, 649, 648, 3, 2, 2, 2, 649, 650, 3, 2, 2, 2, 650, 654, 3, 2, 2, 2, 651, 652, 7, 48, 2, 2, 652, 654, 5, 233, 117, 2, 653, 646, 3, 2, 2, 2, 653, 651, 3, 2, 2, 2, 654, 656, 3, 2, 2, 2, 655, 657, 5, 225, 113, 2, 656, 655, 3, 2, 2, 2, 656, 657, 3, 2, 2, 2, 657, 659, 3, 2, 2, 2, 658, 660, 9, 12, 2, 2, 659, 658, 3, 2, 2, 2, 659, 660, 3, 2, 2, 2, 660, 670, 3, 2, 2, 2, 661, 667, 5, 233, 117, 2, 662, 664, 5, 225, 113, 2, 663, 665, 9, 12, 2, 2, 664, 663, 3, 2, 2, 2, 664, 665, 3, 2, 2, 2, 665, 668, 3, 2, 2, 2, 666, 668, 9, 12, 2, 2, 667, 662, 3, 2, 2, 2, 667, 666, 3, 2, 2, 2, 668, 670, 3, 2, 2, 2, 669, 653, 3, 2, 2, 2, 669, 661, 3, 2, 2, 2, 670, 112, 3, 2, 2, 2, 671, 672, 7, 50, 2, 2, 672, 682, 9, 4, 2, 2, 673, 675, 5, 229, 115, 2, 674, 676, 7, 48, 2, 2, 675, 674, 3, 2, 2, 2, 675, 676, 3, 2, 2, 2, 676, 683, 3, 2, 2, 2, 677, 679, 5, 229, 115, 2, 678, 677, 3, 2, 2, 2, 678, 679, 3, 2, 2, 2, 679, 680, 3, 2, 2, 2, 680, 681, 7, 48, 2, 2, 681, 683, 5, 229, 115, 2, 682, 673, 3, 2, 2, 2, 682, 678, 3, 2, 2, 2, 683, 684, 3, 2, 2, 2, 684, 686, 9, 13, 2, 2, 685, 687, 9, 14, 2, 2, 686, 685, 3, 2, 2, 2, 686, 687, 3, 2, 2, 2, 687, 688, 3, 2, 2, 2, 688, 690, 5, 233, 117, 2, 689, 691, 9, 12, 2, 2, 690, 689, 3, 2, 2, 2, 690, 691, 3, 2, 2, 2, 691, 114, 3, 2, 2, 2, 692, 693, 7, 118, 2, 2, 693, 694, 7, 116, 2, 2, 694, 695, 7, 119, 2, 2, 695, 702, 7, 103, 2, 2, 696, 697, 7, 104, 2, 2, 697, 698, 7, 99, 2, 2, 698, 699, 7, 110, 2, 2, 699, 700, 7, 117, 2, 2, 700, 702, 7, 103, 2, 2, 701, 692, 3, 2, 2, 2, 701, 696, 3, 2, 2, 2, 702, 116, 3, 2, 2, 2, 703, 706, 7, 41, 2, 2, 704, 707, 10, 15, 2, 2, 705, 707, 5, 227, 114, 2, 706, 704, 3, 2, 2, 2, 706, 705, 3, 2, 2, 2, 707, 708, 3, 2, 2, 2, 708, 709, 7, 41, 2, 2, 709, 118, 3, 2, 2, 2, 710, 715, 7, 36, 2, 2, 711, 714, 10, 16, 2, 2, 712, 714, 5, 227, 114, 2, 713, 711, 3, 2, 2, 2, 713, 712, 3, 2, 2, 2, 714, 717, 3, 2, 2, 2, 715, 713, 3, 2, 2, 2, 715, 716, 3, 2, 2, 2, 716, 718, 3, 2, 2, 2, 717, 715, 3, 2, 2, 2, 718, 719, 7, 36, 2, 2, 719, 120, 3, 2, 2, 2, 720, 721, 7, 112, 2, 2, 721, 722, 7, 119, 2, 2, 722, 723, 7, 110, 2, 2, 723, 724, 7, 110, 2, 2, 724, 122, 3, 2, 2, 2, 725, 726, 7, 42, 2, 2, 726, 124, 3, 2, 2, 2, 727, 728, 7, 43, 2, 2, 728, 126, 3, 2, 2, 2, 729, 730, 7, 125, 2, 2, 730, 128, 3, 2, 2, 2, 731, 732, 7, 127, 2, 2, 732, 130, 3, 2, 2, 2, 733, 734, 7, 93, 2, 2, 734, 132, 3, 2, 2, 2, 735, 736, 7, 95, 2, 2, 736, 134, 3, 2, 2, 2, 737, 738, 7, 61, 2, 2, 738, 136, 3, 2, 2, 2, 739, 740, 7, 46, 2, 2, 740, 138, 3, 2, 2, 2, 741, 742, 7, 48, 2, 2, 742, 140, 3, 2, 2, 2, 743, 744, 7, 63, 2, 2, 744, 142, 3, 2, 2, 2, 745, 746, 7, 64, 2, 2, 746, 144, 3, 2, 2, 2, 747, 748, 7, 62, 2, 2, 748, 146, 3, 2, 2, 2, 749, 750, 7, 35, 2, 2, 750, 148, 3, 2, 2, 2, 751, 752, 7, 128, 2, 2, 752, 150, 3, 2, 2, 2, 753, 754, 7, 65, 2, 2, 754, 152, 3, 2, 2, 2, 755, 756, 7, 60, 2, 2, 756, 154, 3, 2, 2, 2, 757, 758, 7, 63, 2, 2, 758, 759, 7, 63, 2, 2, 759, 156, 3, 2, 2, 2, 760, 761, 7, 62, 2, 2, 761, 762, 7, 63, 2, 2, 762, 158, 3, 2, 2, 2, 763, 764, 7, 64, 2, 2, 764, 765, 7, 63, 2, 2, 765, 160, 3, 2, 2, 2, 766, 767, 7, 35, 2, 2, 767, 768, 7, 63, 2, 2, 768, 162, 3, 2, 2, 2, 769, 770, 7, 40, 2, 2, 770, 771, 7, 40, 2, 2, 771, 164, 3, 2, 2, 2, 772, 773, 7, 126, 2, 2, 773, 774, 7, 126, 2, 2, 774, 166, 3, 2, 2, 2, 775, 776, 7, 45, 2, 2, 776, 777, 7, 45, 2, 2, 777, 168, 3, 2, 2, 2, 778, 779, 7, 47, 2, 2, 779, 780, 7, 47, 2, 2, 780, 170, 3, 2, 2, 2, 781, 782, 7, 45, 2, 2, 782, 172, 3, 2, 2, 2, 783, 784, 7, 47, 2, 2, 784, 174, 3, 2, 2, 2, 785, 786, 7, 44, 2, 2, 786, 176, 3, 2, 2, 2, 787, 788, 7, 49, 2, 2, 788, 178, 3, 2, 2, 2, 789, 790, 7, 40, 2, 2, 790, 180, 3, 2, 2, 2, 791, 792, 7, 126, 2, 2, 792, 182, 3, 2, 2, 2, 793, 794, 7, 96, 2, 2, 794, 184, 3, 2, 2, 2, 795, 796, 7, 39, 2, 2, 796, 186, 3, 2, 2, 2, 797, 798, 7, 45, 2, 2, 798, 799, 7, 63, 2, 2, 799, 188, 3, 2, 2, 2, 800, 801, 7, 47, 2, 2, 801, 802, 7, 63, 2, 2, 802, 190, 3, 2, 2, 2, 803, 804, 7, 44, 2, 2, 804, 805, 7, 63, 2, 2, 805, 192, 3, 2, 2, 2, 806, 807, 7, 49, 2, 2, 807, 808, 7, 63, 2, 2, 808, 194, 3, 2, 2, 2, 809, 810, 7, 40, 2, 2, 810, 811, 7, 63, 2, 2, 811, 196, 3, 2, 2, 2, 812, 813, 7, 126, 2, 2, 813, 814, 7, 63, 2, 2, 814, 198, 3, 2, 2, 2, 815, 816, 7, 96, 2, 2, 816, 817, 7, 63, 2, 2, 817, 200, 3, 2, 2, 2, 818, 819, 7, 39, 2, 2, 819, 820, 7, 63, 2, 2, 820, 202, 3, 2, 2, 2, 821, 822, 7, 62, 2, 2, 822, 823, 7, 62, 2, 2, 823, 824, 7, 63, 2, 2, 824, 204, 3, 2, 2, 2, 825, 826, 7, 64, 2, 2, 826, 827, 7, 64, 2, 2, 827, 828, 7, 63, 2, 2, 828, 206, 3, 2, 2, 2, 829, 830, 7, 64, 2, 2, 830, 831, 7, 64, 2, 2, 831, 832, 7, 64, 2, 2, 832, 833, 7, 63, 2, 2, 833, 208, 3, 2, 2, 2, 834, 835, 7, 47, 2, 2, 835, 836, 7, 64, 2, 2, 836, 210, 3, 2, 2, 2, 837, 838, 7, 60, 2, 2, 838, 839, 7, 60, 2, 2, 839, 212, 3, 2, 2, 2, 840, 841, 7, 66, 2, 2, 841, 214, 3, 2, 2, 2, 842, 843, 7, 48, 2, 2, 843, 844, 7, 48, 2, 2, 844, 845, 7, 48, 2, 2, 845, 216, 3, 2, 2, 2, 846, 848, 9, 17, 2, 2, 847, 846, 3, 2, 2, 2, 848, 849, 3, 2, 2, 2, 849, 847, 3, 2, 2, 2, 849, 850, 3, 2, 2, 2, 850, 851, 3, 2, 2, 2, 851, 852, 8, 109, 2, 2, 852, 218, 3, 2, 2, 2, 853, 854, 7, 49, 2, 2, 854, 855, 7, 44, 2, 2, 855, 859, 3, 2, 2, 2, 856, 858, 11, 2, 2, 2, 857, 856, 3, 2, 2, 2, 858, 861, 3, 2, 2, 2, 859, 860, 3, 2, 2, 2, 859, 857, 3, 2, 2, 2, 860, 862, 3, 2, 2, 2, 861, 859, 3, 2, 2, 2, 862, 863, 7, 44, 2, 2, 863, 864, 7, 49, 2, 2, 864, 865, 3, 2, 2, 2, 865, 866, 8, 110, 2, 2, 866, 220, 3, 2, 2, 2, 867, 868, 7, 49, 2, 2, 868, 869, 7, 49, 2, 2, 869, 873, 3, 2, 2, 2, 870, 872, 10, 18, 2, 2, 871, 870, 3, 2, 2, 2, 872, 875, 3, 2, 2, 2, 873, 871, 3, 2, 2, 2, 873, 874, 3, 2, 2, 2, 874, 876, 3, 2, 2, 2, 875, 873, 3, 2, 2, 2, 876, 877, 8, 111, 2, 2, 877, 222, 3, 2, 2, 2, 878, 882, 5, 237, 119, 2, 879, 881, 5, 235, 118, 2, 880, 879, 3, 2, 2, 2, 881, 884, 3, 2, 2, 2, 882, 880, 3, 2, 2, 2, 882, 883, 3, 2, 2, 2, 883, 224, 3, 2, 2, 2, 884, 882, 3, 2, 2, 2, 885, 887, 9, 19, 2, 2, 886, 888, 9, 14, 2, 2, 887, 886, 3, 2, 2, 2, 887, 888, 3, 2, 2, 2, 888, 889, 3, 2, 2, 2, 889, 890, 5, 233, 117, 2, 890, 226, 3, 2, 2, 2, 891, 892, 7, 94, 2, 2, 892, 913, 9, 20, 2, 2, 893, 898, 7, 94, 2, 2, 894, 896, 9, 21, 2, 2, 895, 894, 3, 2, 2, 2, 895, 896, 3, 2, 2, 2, 896, 897, 3, 2, 2, 2, 897, 899, 9, 7, 2, 2, 898, 895, 3, 2, 2, 2, 898, 899, 3, 2, 2, 2, 899, 900, 3, 2, 2, 2, 900, 913, 9, 7, 2, 2, 901, 903, 7, 94, 2, 2, 902, 904, 7, 119, 2, 2, 903, 902, 3, 2, 2, 2, 904, 905, 3, 2, 2, 2, 905, 903, 3, 2, 2, 2, 905, 906, 3, 2, 2, 2, 906, 907, 3, 2, 2, 2, 907, 908, 5, 231, 116, 2, 908, 909, 5, 231, 116, 2, 909, 910, 5, 231, 116, 2, 910, 911, 5, 231, 116, 2, 911, 913, 3, 2, 2, 2, 912, 891, 3, 2, 2, 2, 912, 893, 3, 2, 2, 2, 912, 901, 3, 2, 2, 2, 913, 228, 3, 2, 2, 2, 914, 923, 5, 231, 116, 2, 915, 918, 5, 231, 116, 2, 916, 918, 7, 97, 2, 2, 917, 915, 3, 2, 2, 2, 917, 916, 3, 2, 2, 2, 918, 921, 3, 2, 2, 2, 919, 917, 3, 2, 2, 2, 919, 920, 3, 2, 2, 2, 920, 922, 3, 2, 2, 2, 921, 919, 3, 2, 2, 2, 922, 924, 5, 231, 116, 2, 923, 919, 3, 2, 2, 2, 923, 924, 3, 2, 2, 2, 924, 230, 3, 2, 2, 2, 925, 926, 9, 5, 2, 2, 926, 232, 3, 2, 2, 2, 927, 935, 9, 22, 2, 2, 928, 930, 9, 23, 2, 2, 929, 928, 3, 2, 2, 2, 930, 933, 3, 2, 2, 2, 931, 929, 3, 2, 2, 2, 931, 932, 3, 2, 2, 2, 932, 934, 3, 2, 2, 2, 933, 931, 3, 2, 2, 2, 934, 936, 9, 22, 2, 2, 935, 931, 3, 2, 2, 2, 935, 936, 3, 2, 2, 2, 936, 234, 3, 2, 2, 2, 937, 940, 5, 237, 119, 2, 938, 940, 9, 22, 2, 2, 939, 937, 3, 2, 2, 2, 939, 938, 3, 2, 2, 2, 940, 236, 3, 2, 2, 2, 941, 946, 9, 24, 2, 2, 942, 946, 10, 25, 2, 2, 943, 944, 9, 26, 2, 2, 944, 946, 9, 27, 2, 2, 945, 941, 3, 2, 2, 2, 945, 942, 3, 2, 2, 2, 945, 943, 3, 2, 2, 2, 946, 238, 3, 2, 2, 2, 50, 2, 581, 586, 589, 591, 594, 602, 606, 609, 615, 622, 626, 629, 637, 641, 644, 649, 653, 656, 659, 664, 667, 669, 675, 678, 682, 686, 690, 701, 706, 713, 715, 849, 859, 873, 882, 887, 895, 898, 905, 912, 917, 919, 923, 931, 935, 939, 945, 3, 2, 3, 2] \ No newline at end of file diff --git a/persper/parser/java/JavaLexer.py b/persper/parser/java/JavaLexer.py deleted file mode 100644 index 3d7edec9a4f..00000000000 --- a/persper/parser/java/JavaLexer.py +++ /dev/null @@ -1,630 +0,0 @@ -# Generated from JavaLexer.g4 by ANTLR 4.7.1 -from antlr4 import * -from io import StringIO -from typing.io import TextIO -import sys - - -def serializedATN(): - with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2q") - buf.write("\u03b3\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7") - buf.write("\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r") - buf.write("\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23") - buf.write("\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30") - buf.write("\4\31\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36") - buf.write("\t\36\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%") - buf.write("\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.") - buf.write("\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64") - buf.write("\t\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:") - buf.write("\4;\t;\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\t") - buf.write("C\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4L\t") - buf.write("L\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT\4U\t") - buf.write("U\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4") - buf.write("^\t^\4_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4") - buf.write("g\tg\4h\th\4i\ti\4j\tj\4k\tk\4l\tl\4m\tm\4n\tn\4o\to\4") - buf.write("p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4w\tw\3\2\3\2") - buf.write("\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\3\3\3\3\3\3\3\3\3\3\3\3") - buf.write("\3\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\5\3\5\3\5\3\5\3\5") - buf.write("\3\5\3\6\3\6\3\6\3\6\3\6\3\7\3\7\3\7\3\7\3\7\3\b\3\b\3") - buf.write("\b\3\b\3\b\3\b\3\t\3\t\3\t\3\t\3\t\3\n\3\n\3\n\3\n\3\n") - buf.write("\3\n\3\13\3\13\3\13\3\13\3\13\3\13\3\f\3\f\3\f\3\f\3\f") - buf.write("\3\f\3\f\3\f\3\f\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\16") - buf.write("\3\16\3\16\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\20\3\20") - buf.write("\3\20\3\20\3\20\3\21\3\21\3\21\3\21\3\21\3\22\3\22\3\22") - buf.write("\3\22\3\22\3\22\3\22\3\22\3\23\3\23\3\23\3\23\3\23\3\23") - buf.write("\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\25\3\25\3\25") - buf.write("\3\25\3\25\3\25\3\26\3\26\3\26\3\26\3\27\3\27\3\27\3\30") - buf.write("\3\30\3\30\3\30\3\30\3\31\3\31\3\31\3\31\3\31\3\31\3\31") - buf.write("\3\31\3\31\3\31\3\31\3\32\3\32\3\32\3\32\3\32\3\32\3\32") - buf.write("\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33") - buf.write("\3\34\3\34\3\34\3\34\3\35\3\35\3\35\3\35\3\35\3\35\3\35") - buf.write("\3\35\3\35\3\35\3\36\3\36\3\36\3\36\3\36\3\37\3\37\3\37") - buf.write("\3\37\3\37\3\37\3\37\3 \3 \3 \3 \3!\3!\3!\3!\3!\3!\3!") - buf.write("\3!\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3#\3#\3#\3#\3#\3#") - buf.write("\3#\3#\3#\3#\3$\3$\3$\3$\3$\3$\3$\3%\3%\3%\3%\3%\3%\3") - buf.write("%\3&\3&\3&\3&\3&\3&\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3(\3(") - buf.write("\3(\3(\3(\3(\3(\3(\3(\3)\3)\3)\3)\3)\3)\3*\3*\3*\3*\3") - buf.write("*\3*\3*\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3,\3,\3") - buf.write(",\3,\3,\3-\3-\3-\3-\3-\3-\3.\3.\3.\3.\3.\3.\3.\3/\3/\3") - buf.write("/\3/\3/\3/\3/\3/\3/\3/\3\60\3\60\3\60\3\60\3\61\3\61\3") - buf.write("\61\3\61\3\61\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3\62") - buf.write("\3\62\3\63\3\63\3\63\3\63\3\63\3\63\3\64\3\64\3\64\5\64") - buf.write("\u0246\n\64\3\64\6\64\u0249\n\64\r\64\16\64\u024a\3\64") - buf.write("\5\64\u024e\n\64\5\64\u0250\n\64\3\64\5\64\u0253\n\64") - buf.write("\3\65\3\65\3\65\3\65\7\65\u0259\n\65\f\65\16\65\u025c") - buf.write("\13\65\3\65\5\65\u025f\n\65\3\65\5\65\u0262\n\65\3\66") - buf.write("\3\66\7\66\u0266\n\66\f\66\16\66\u0269\13\66\3\66\3\66") - buf.write("\7\66\u026d\n\66\f\66\16\66\u0270\13\66\3\66\5\66\u0273") - buf.write("\n\66\3\66\5\66\u0276\n\66\3\67\3\67\3\67\3\67\7\67\u027c") - buf.write("\n\67\f\67\16\67\u027f\13\67\3\67\5\67\u0282\n\67\3\67") - buf.write("\5\67\u0285\n\67\38\38\38\58\u028a\n8\38\38\58\u028e\n") - buf.write("8\38\58\u0291\n8\38\58\u0294\n8\38\38\38\58\u0299\n8\3") - buf.write("8\58\u029c\n8\58\u029e\n8\39\39\39\39\59\u02a4\n9\39\5") - buf.write("9\u02a7\n9\39\39\59\u02ab\n9\39\39\59\u02af\n9\39\39\5") - buf.write("9\u02b3\n9\3:\3:\3:\3:\3:\3:\3:\3:\3:\5:\u02be\n:\3;\3") - buf.write(";\3;\5;\u02c3\n;\3;\3;\3<\3<\3<\7<\u02ca\n<\f<\16<\u02cd") - buf.write("\13<\3<\3<\3=\3=\3=\3=\3=\3>\3>\3?\3?\3@\3@\3A\3A\3B\3") - buf.write("B\3C\3C\3D\3D\3E\3E\3F\3F\3G\3G\3H\3H\3I\3I\3J\3J\3K\3") - buf.write("K\3L\3L\3M\3M\3N\3N\3N\3O\3O\3O\3P\3P\3P\3Q\3Q\3Q\3R\3") - buf.write("R\3R\3S\3S\3S\3T\3T\3T\3U\3U\3U\3V\3V\3W\3W\3X\3X\3Y\3") - buf.write("Y\3Z\3Z\3[\3[\3\\\3\\\3]\3]\3^\3^\3^\3_\3_\3_\3`\3`\3") - buf.write("`\3a\3a\3a\3b\3b\3b\3c\3c\3c\3d\3d\3d\3e\3e\3e\3f\3f\3") - buf.write("f\3f\3g\3g\3g\3g\3h\3h\3h\3h\3h\3i\3i\3i\3j\3j\3j\3k\3") - buf.write("k\3l\3l\3l\3l\3m\6m\u0350\nm\rm\16m\u0351\3m\3m\3n\3n") - buf.write("\3n\3n\7n\u035a\nn\fn\16n\u035d\13n\3n\3n\3n\3n\3n\3o") - buf.write("\3o\3o\3o\7o\u0368\no\fo\16o\u036b\13o\3o\3o\3p\3p\7p") - buf.write("\u0371\np\fp\16p\u0374\13p\3q\3q\5q\u0378\nq\3q\3q\3r") - buf.write("\3r\3r\3r\5r\u0380\nr\3r\5r\u0383\nr\3r\3r\3r\6r\u0388") - buf.write("\nr\rr\16r\u0389\3r\3r\3r\3r\3r\5r\u0391\nr\3s\3s\3s\7") - buf.write("s\u0396\ns\fs\16s\u0399\13s\3s\5s\u039c\ns\3t\3t\3u\3") - buf.write("u\7u\u03a2\nu\fu\16u\u03a5\13u\3u\5u\u03a8\nu\3v\3v\5") - buf.write("v\u03ac\nv\3w\3w\3w\3w\5w\u03b2\nw\3\u035b\2x\3\3\5\4") - buf.write("\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31\16\33\17") - buf.write("\35\20\37\21!\22#\23%\24\'\25)\26+\27-\30/\31\61\32\63") - buf.write("\33\65\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O)Q*S+U,W-") - buf.write("Y.[/]\60_\61a\62c\63e\64g\65i\66k\67m8o9q:s;u{?}") - buf.write("@\177A\u0081B\u0083C\u0085D\u0087E\u0089F\u008bG\u008d") - buf.write("H\u008fI\u0091J\u0093K\u0095L\u0097M\u0099N\u009bO\u009d") - buf.write("P\u009fQ\u00a1R\u00a3S\u00a5T\u00a7U\u00a9V\u00abW\u00ad") - buf.write("X\u00afY\u00b1Z\u00b3[\u00b5\\\u00b7]\u00b9^\u00bb_\u00bd") - buf.write("`\u00bfa\u00c1b\u00c3c\u00c5d\u00c7e\u00c9f\u00cbg\u00cd") - buf.write("h\u00cfi\u00d1j\u00d3k\u00d5l\u00d7m\u00d9n\u00dbo\u00dd") - buf.write("p\u00dfq\u00e1\2\u00e3\2\u00e5\2\u00e7\2\u00e9\2\u00eb") - buf.write("\2\u00ed\2\3\2\34\3\2\63;\4\2NNnn\4\2ZZzz\5\2\62;CHch") - buf.write("\6\2\62;CHaach\3\2\629\4\2\629aa\4\2DDdd\3\2\62\63\4\2") - buf.write("\62\63aa\6\2FFHHffhh\4\2RRrr\4\2--//\6\2\f\f\17\17))^") - buf.write("^\6\2\f\f\17\17$$^^\5\2\13\f\16\17\"\"\4\2\f\f\17\17\4") - buf.write("\2GGgg\n\2$$))^^ddhhppttvv\3\2\62\65\3\2\62;\4\2\62;a") - buf.write("a\6\2&&C\\aac|\4\2\2\u0081\ud802\udc01\3\2\ud802\udc01") - buf.write("\3\2\udc02\ue001\2\u03dc\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3") - buf.write("\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2") - buf.write("\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2") - buf.write("\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2") - buf.write("!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2") - buf.write("\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3") - buf.write("\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2") - buf.write("\2=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2") - buf.write("\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3\2") - buf.write("\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3") - buf.write("\2\2\2\2[\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2c") - buf.write("\3\2\2\2\2e\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2k\3\2\2\2\2") - buf.write("m\3\2\2\2\2o\3\2\2\2\2q\3\2\2\2\2s\3\2\2\2\2u\3\2\2\2") - buf.write("\2w\3\2\2\2\2y\3\2\2\2\2{\3\2\2\2\2}\3\2\2\2\2\177\3\2") - buf.write("\2\2\2\u0081\3\2\2\2\2\u0083\3\2\2\2\2\u0085\3\2\2\2\2") - buf.write("\u0087\3\2\2\2\2\u0089\3\2\2\2\2\u008b\3\2\2\2\2\u008d") - buf.write("\3\2\2\2\2\u008f\3\2\2\2\2\u0091\3\2\2\2\2\u0093\3\2\2") - buf.write("\2\2\u0095\3\2\2\2\2\u0097\3\2\2\2\2\u0099\3\2\2\2\2\u009b") - buf.write("\3\2\2\2\2\u009d\3\2\2\2\2\u009f\3\2\2\2\2\u00a1\3\2\2") - buf.write("\2\2\u00a3\3\2\2\2\2\u00a5\3\2\2\2\2\u00a7\3\2\2\2\2\u00a9") - buf.write("\3\2\2\2\2\u00ab\3\2\2\2\2\u00ad\3\2\2\2\2\u00af\3\2\2") - buf.write("\2\2\u00b1\3\2\2\2\2\u00b3\3\2\2\2\2\u00b5\3\2\2\2\2\u00b7") - buf.write("\3\2\2\2\2\u00b9\3\2\2\2\2\u00bb\3\2\2\2\2\u00bd\3\2\2") - buf.write("\2\2\u00bf\3\2\2\2\2\u00c1\3\2\2\2\2\u00c3\3\2\2\2\2\u00c5") - buf.write("\3\2\2\2\2\u00c7\3\2\2\2\2\u00c9\3\2\2\2\2\u00cb\3\2\2") - buf.write("\2\2\u00cd\3\2\2\2\2\u00cf\3\2\2\2\2\u00d1\3\2\2\2\2\u00d3") - buf.write("\3\2\2\2\2\u00d5\3\2\2\2\2\u00d7\3\2\2\2\2\u00d9\3\2\2") - buf.write("\2\2\u00db\3\2\2\2\2\u00dd\3\2\2\2\2\u00df\3\2\2\2\3\u00ef") - buf.write("\3\2\2\2\5\u00f8\3\2\2\2\7\u00ff\3\2\2\2\t\u0107\3\2\2") - buf.write("\2\13\u010d\3\2\2\2\r\u0112\3\2\2\2\17\u0117\3\2\2\2\21") - buf.write("\u011d\3\2\2\2\23\u0122\3\2\2\2\25\u0128\3\2\2\2\27\u012e") - buf.write("\3\2\2\2\31\u0137\3\2\2\2\33\u013f\3\2\2\2\35\u0142\3") - buf.write("\2\2\2\37\u0149\3\2\2\2!\u014e\3\2\2\2#\u0153\3\2\2\2") - buf.write("%\u015b\3\2\2\2\'\u0161\3\2\2\2)\u0169\3\2\2\2+\u016f") - buf.write("\3\2\2\2-\u0173\3\2\2\2/\u0176\3\2\2\2\61\u017b\3\2\2") - buf.write("\2\63\u0186\3\2\2\2\65\u018d\3\2\2\2\67\u0198\3\2\2\2") - buf.write("9\u019c\3\2\2\2;\u01a6\3\2\2\2=\u01ab\3\2\2\2?\u01b2\3") - buf.write("\2\2\2A\u01b6\3\2\2\2C\u01be\3\2\2\2E\u01c6\3\2\2\2G\u01d0") - buf.write("\3\2\2\2I\u01d7\3\2\2\2K\u01de\3\2\2\2M\u01e4\3\2\2\2") - buf.write("O\u01eb\3\2\2\2Q\u01f4\3\2\2\2S\u01fa\3\2\2\2U\u0201\3") - buf.write("\2\2\2W\u020e\3\2\2\2Y\u0213\3\2\2\2[\u0219\3\2\2\2]\u0220") - buf.write("\3\2\2\2_\u022a\3\2\2\2a\u022e\3\2\2\2c\u0233\3\2\2\2") - buf.write("e\u023c\3\2\2\2g\u024f\3\2\2\2i\u0254\3\2\2\2k\u0263\3") - buf.write("\2\2\2m\u0277\3\2\2\2o\u029d\3\2\2\2q\u029f\3\2\2\2s\u02bd") - buf.write("\3\2\2\2u\u02bf\3\2\2\2w\u02c6\3\2\2\2y\u02d0\3\2\2\2") - buf.write("{\u02d5\3\2\2\2}\u02d7\3\2\2\2\177\u02d9\3\2\2\2\u0081") - buf.write("\u02db\3\2\2\2\u0083\u02dd\3\2\2\2\u0085\u02df\3\2\2\2") - buf.write("\u0087\u02e1\3\2\2\2\u0089\u02e3\3\2\2\2\u008b\u02e5\3") - buf.write("\2\2\2\u008d\u02e7\3\2\2\2\u008f\u02e9\3\2\2\2\u0091\u02eb") - buf.write("\3\2\2\2\u0093\u02ed\3\2\2\2\u0095\u02ef\3\2\2\2\u0097") - buf.write("\u02f1\3\2\2\2\u0099\u02f3\3\2\2\2\u009b\u02f5\3\2\2\2") - buf.write("\u009d\u02f8\3\2\2\2\u009f\u02fb\3\2\2\2\u00a1\u02fe\3") - buf.write("\2\2\2\u00a3\u0301\3\2\2\2\u00a5\u0304\3\2\2\2\u00a7\u0307") - buf.write("\3\2\2\2\u00a9\u030a\3\2\2\2\u00ab\u030d\3\2\2\2\u00ad") - buf.write("\u030f\3\2\2\2\u00af\u0311\3\2\2\2\u00b1\u0313\3\2\2\2") - buf.write("\u00b3\u0315\3\2\2\2\u00b5\u0317\3\2\2\2\u00b7\u0319\3") - buf.write("\2\2\2\u00b9\u031b\3\2\2\2\u00bb\u031d\3\2\2\2\u00bd\u0320") - buf.write("\3\2\2\2\u00bf\u0323\3\2\2\2\u00c1\u0326\3\2\2\2\u00c3") - buf.write("\u0329\3\2\2\2\u00c5\u032c\3\2\2\2\u00c7\u032f\3\2\2\2") - buf.write("\u00c9\u0332\3\2\2\2\u00cb\u0335\3\2\2\2\u00cd\u0339\3") - buf.write("\2\2\2\u00cf\u033d\3\2\2\2\u00d1\u0342\3\2\2\2\u00d3\u0345") - buf.write("\3\2\2\2\u00d5\u0348\3\2\2\2\u00d7\u034a\3\2\2\2\u00d9") - buf.write("\u034f\3\2\2\2\u00db\u0355\3\2\2\2\u00dd\u0363\3\2\2\2") - buf.write("\u00df\u036e\3\2\2\2\u00e1\u0375\3\2\2\2\u00e3\u0390\3") - buf.write("\2\2\2\u00e5\u0392\3\2\2\2\u00e7\u039d\3\2\2\2\u00e9\u039f") - buf.write("\3\2\2\2\u00eb\u03ab\3\2\2\2\u00ed\u03b1\3\2\2\2\u00ef") - buf.write("\u00f0\7c\2\2\u00f0\u00f1\7d\2\2\u00f1\u00f2\7u\2\2\u00f2") - buf.write("\u00f3\7v\2\2\u00f3\u00f4\7t\2\2\u00f4\u00f5\7c\2\2\u00f5") - buf.write("\u00f6\7e\2\2\u00f6\u00f7\7v\2\2\u00f7\4\3\2\2\2\u00f8") - buf.write("\u00f9\7c\2\2\u00f9\u00fa\7u\2\2\u00fa\u00fb\7u\2\2\u00fb") - buf.write("\u00fc\7g\2\2\u00fc\u00fd\7t\2\2\u00fd\u00fe\7v\2\2\u00fe") - buf.write("\6\3\2\2\2\u00ff\u0100\7d\2\2\u0100\u0101\7q\2\2\u0101") - buf.write("\u0102\7q\2\2\u0102\u0103\7n\2\2\u0103\u0104\7g\2\2\u0104") - buf.write("\u0105\7c\2\2\u0105\u0106\7p\2\2\u0106\b\3\2\2\2\u0107") - buf.write("\u0108\7d\2\2\u0108\u0109\7t\2\2\u0109\u010a\7g\2\2\u010a") - buf.write("\u010b\7c\2\2\u010b\u010c\7m\2\2\u010c\n\3\2\2\2\u010d") - buf.write("\u010e\7d\2\2\u010e\u010f\7{\2\2\u010f\u0110\7v\2\2\u0110") - buf.write("\u0111\7g\2\2\u0111\f\3\2\2\2\u0112\u0113\7e\2\2\u0113") - buf.write("\u0114\7c\2\2\u0114\u0115\7u\2\2\u0115\u0116\7g\2\2\u0116") - buf.write("\16\3\2\2\2\u0117\u0118\7e\2\2\u0118\u0119\7c\2\2\u0119") - buf.write("\u011a\7v\2\2\u011a\u011b\7e\2\2\u011b\u011c\7j\2\2\u011c") - buf.write("\20\3\2\2\2\u011d\u011e\7e\2\2\u011e\u011f\7j\2\2\u011f") - buf.write("\u0120\7c\2\2\u0120\u0121\7t\2\2\u0121\22\3\2\2\2\u0122") - buf.write("\u0123\7e\2\2\u0123\u0124\7n\2\2\u0124\u0125\7c\2\2\u0125") - buf.write("\u0126\7u\2\2\u0126\u0127\7u\2\2\u0127\24\3\2\2\2\u0128") - buf.write("\u0129\7e\2\2\u0129\u012a\7q\2\2\u012a\u012b\7p\2\2\u012b") - buf.write("\u012c\7u\2\2\u012c\u012d\7v\2\2\u012d\26\3\2\2\2\u012e") - buf.write("\u012f\7e\2\2\u012f\u0130\7q\2\2\u0130\u0131\7p\2\2\u0131") - buf.write("\u0132\7v\2\2\u0132\u0133\7k\2\2\u0133\u0134\7p\2\2\u0134") - buf.write("\u0135\7w\2\2\u0135\u0136\7g\2\2\u0136\30\3\2\2\2\u0137") - buf.write("\u0138\7f\2\2\u0138\u0139\7g\2\2\u0139\u013a\7h\2\2\u013a") - buf.write("\u013b\7c\2\2\u013b\u013c\7w\2\2\u013c\u013d\7n\2\2\u013d") - buf.write("\u013e\7v\2\2\u013e\32\3\2\2\2\u013f\u0140\7f\2\2\u0140") - buf.write("\u0141\7q\2\2\u0141\34\3\2\2\2\u0142\u0143\7f\2\2\u0143") - buf.write("\u0144\7q\2\2\u0144\u0145\7w\2\2\u0145\u0146\7d\2\2\u0146") - buf.write("\u0147\7n\2\2\u0147\u0148\7g\2\2\u0148\36\3\2\2\2\u0149") - buf.write("\u014a\7g\2\2\u014a\u014b\7n\2\2\u014b\u014c\7u\2\2\u014c") - buf.write("\u014d\7g\2\2\u014d \3\2\2\2\u014e\u014f\7g\2\2\u014f") - buf.write("\u0150\7p\2\2\u0150\u0151\7w\2\2\u0151\u0152\7o\2\2\u0152") - buf.write("\"\3\2\2\2\u0153\u0154\7g\2\2\u0154\u0155\7z\2\2\u0155") - buf.write("\u0156\7v\2\2\u0156\u0157\7g\2\2\u0157\u0158\7p\2\2\u0158") - buf.write("\u0159\7f\2\2\u0159\u015a\7u\2\2\u015a$\3\2\2\2\u015b") - buf.write("\u015c\7h\2\2\u015c\u015d\7k\2\2\u015d\u015e\7p\2\2\u015e") - buf.write("\u015f\7c\2\2\u015f\u0160\7n\2\2\u0160&\3\2\2\2\u0161") - buf.write("\u0162\7h\2\2\u0162\u0163\7k\2\2\u0163\u0164\7p\2\2\u0164") - buf.write("\u0165\7c\2\2\u0165\u0166\7n\2\2\u0166\u0167\7n\2\2\u0167") - buf.write("\u0168\7{\2\2\u0168(\3\2\2\2\u0169\u016a\7h\2\2\u016a") - buf.write("\u016b\7n\2\2\u016b\u016c\7q\2\2\u016c\u016d\7c\2\2\u016d") - buf.write("\u016e\7v\2\2\u016e*\3\2\2\2\u016f\u0170\7h\2\2\u0170") - buf.write("\u0171\7q\2\2\u0171\u0172\7t\2\2\u0172,\3\2\2\2\u0173") - buf.write("\u0174\7k\2\2\u0174\u0175\7h\2\2\u0175.\3\2\2\2\u0176") - buf.write("\u0177\7i\2\2\u0177\u0178\7q\2\2\u0178\u0179\7v\2\2\u0179") - buf.write("\u017a\7q\2\2\u017a\60\3\2\2\2\u017b\u017c\7k\2\2\u017c") - buf.write("\u017d\7o\2\2\u017d\u017e\7r\2\2\u017e\u017f\7n\2\2\u017f") - buf.write("\u0180\7g\2\2\u0180\u0181\7o\2\2\u0181\u0182\7g\2\2\u0182") - buf.write("\u0183\7p\2\2\u0183\u0184\7v\2\2\u0184\u0185\7u\2\2\u0185") - buf.write("\62\3\2\2\2\u0186\u0187\7k\2\2\u0187\u0188\7o\2\2\u0188") - buf.write("\u0189\7r\2\2\u0189\u018a\7q\2\2\u018a\u018b\7t\2\2\u018b") - buf.write("\u018c\7v\2\2\u018c\64\3\2\2\2\u018d\u018e\7k\2\2\u018e") - buf.write("\u018f\7p\2\2\u018f\u0190\7u\2\2\u0190\u0191\7v\2\2\u0191") - buf.write("\u0192\7c\2\2\u0192\u0193\7p\2\2\u0193\u0194\7e\2\2\u0194") - buf.write("\u0195\7g\2\2\u0195\u0196\7q\2\2\u0196\u0197\7h\2\2\u0197") - buf.write("\66\3\2\2\2\u0198\u0199\7k\2\2\u0199\u019a\7p\2\2\u019a") - buf.write("\u019b\7v\2\2\u019b8\3\2\2\2\u019c\u019d\7k\2\2\u019d") - buf.write("\u019e\7p\2\2\u019e\u019f\7v\2\2\u019f\u01a0\7g\2\2\u01a0") - buf.write("\u01a1\7t\2\2\u01a1\u01a2\7h\2\2\u01a2\u01a3\7c\2\2\u01a3") - buf.write("\u01a4\7e\2\2\u01a4\u01a5\7g\2\2\u01a5:\3\2\2\2\u01a6") - buf.write("\u01a7\7n\2\2\u01a7\u01a8\7q\2\2\u01a8\u01a9\7p\2\2\u01a9") - buf.write("\u01aa\7i\2\2\u01aa<\3\2\2\2\u01ab\u01ac\7p\2\2\u01ac") - buf.write("\u01ad\7c\2\2\u01ad\u01ae\7v\2\2\u01ae\u01af\7k\2\2\u01af") - buf.write("\u01b0\7x\2\2\u01b0\u01b1\7g\2\2\u01b1>\3\2\2\2\u01b2") - buf.write("\u01b3\7p\2\2\u01b3\u01b4\7g\2\2\u01b4\u01b5\7y\2\2\u01b5") - buf.write("@\3\2\2\2\u01b6\u01b7\7r\2\2\u01b7\u01b8\7c\2\2\u01b8") - buf.write("\u01b9\7e\2\2\u01b9\u01ba\7m\2\2\u01ba\u01bb\7c\2\2\u01bb") - buf.write("\u01bc\7i\2\2\u01bc\u01bd\7g\2\2\u01bdB\3\2\2\2\u01be") - buf.write("\u01bf\7r\2\2\u01bf\u01c0\7t\2\2\u01c0\u01c1\7k\2\2\u01c1") - buf.write("\u01c2\7x\2\2\u01c2\u01c3\7c\2\2\u01c3\u01c4\7v\2\2\u01c4") - buf.write("\u01c5\7g\2\2\u01c5D\3\2\2\2\u01c6\u01c7\7r\2\2\u01c7") - buf.write("\u01c8\7t\2\2\u01c8\u01c9\7q\2\2\u01c9\u01ca\7v\2\2\u01ca") - buf.write("\u01cb\7g\2\2\u01cb\u01cc\7e\2\2\u01cc\u01cd\7v\2\2\u01cd") - buf.write("\u01ce\7g\2\2\u01ce\u01cf\7f\2\2\u01cfF\3\2\2\2\u01d0") - buf.write("\u01d1\7r\2\2\u01d1\u01d2\7w\2\2\u01d2\u01d3\7d\2\2\u01d3") - buf.write("\u01d4\7n\2\2\u01d4\u01d5\7k\2\2\u01d5\u01d6\7e\2\2\u01d6") - buf.write("H\3\2\2\2\u01d7\u01d8\7t\2\2\u01d8\u01d9\7g\2\2\u01d9") - buf.write("\u01da\7v\2\2\u01da\u01db\7w\2\2\u01db\u01dc\7t\2\2\u01dc") - buf.write("\u01dd\7p\2\2\u01ddJ\3\2\2\2\u01de\u01df\7u\2\2\u01df") - buf.write("\u01e0\7j\2\2\u01e0\u01e1\7q\2\2\u01e1\u01e2\7t\2\2\u01e2") - buf.write("\u01e3\7v\2\2\u01e3L\3\2\2\2\u01e4\u01e5\7u\2\2\u01e5") - buf.write("\u01e6\7v\2\2\u01e6\u01e7\7c\2\2\u01e7\u01e8\7v\2\2\u01e8") - buf.write("\u01e9\7k\2\2\u01e9\u01ea\7e\2\2\u01eaN\3\2\2\2\u01eb") - buf.write("\u01ec\7u\2\2\u01ec\u01ed\7v\2\2\u01ed\u01ee\7t\2\2\u01ee") - buf.write("\u01ef\7k\2\2\u01ef\u01f0\7e\2\2\u01f0\u01f1\7v\2\2\u01f1") - buf.write("\u01f2\7h\2\2\u01f2\u01f3\7r\2\2\u01f3P\3\2\2\2\u01f4") - buf.write("\u01f5\7u\2\2\u01f5\u01f6\7w\2\2\u01f6\u01f7\7r\2\2\u01f7") - buf.write("\u01f8\7g\2\2\u01f8\u01f9\7t\2\2\u01f9R\3\2\2\2\u01fa") - buf.write("\u01fb\7u\2\2\u01fb\u01fc\7y\2\2\u01fc\u01fd\7k\2\2\u01fd") - buf.write("\u01fe\7v\2\2\u01fe\u01ff\7e\2\2\u01ff\u0200\7j\2\2\u0200") - buf.write("T\3\2\2\2\u0201\u0202\7u\2\2\u0202\u0203\7{\2\2\u0203") - buf.write("\u0204\7p\2\2\u0204\u0205\7e\2\2\u0205\u0206\7j\2\2\u0206") - buf.write("\u0207\7t\2\2\u0207\u0208\7q\2\2\u0208\u0209\7p\2\2\u0209") - buf.write("\u020a\7k\2\2\u020a\u020b\7|\2\2\u020b\u020c\7g\2\2\u020c") - buf.write("\u020d\7f\2\2\u020dV\3\2\2\2\u020e\u020f\7v\2\2\u020f") - buf.write("\u0210\7j\2\2\u0210\u0211\7k\2\2\u0211\u0212\7u\2\2\u0212") - buf.write("X\3\2\2\2\u0213\u0214\7v\2\2\u0214\u0215\7j\2\2\u0215") - buf.write("\u0216\7t\2\2\u0216\u0217\7q\2\2\u0217\u0218\7y\2\2\u0218") - buf.write("Z\3\2\2\2\u0219\u021a\7v\2\2\u021a\u021b\7j\2\2\u021b") - buf.write("\u021c\7t\2\2\u021c\u021d\7q\2\2\u021d\u021e\7y\2\2\u021e") - buf.write("\u021f\7u\2\2\u021f\\\3\2\2\2\u0220\u0221\7v\2\2\u0221") - buf.write("\u0222\7t\2\2\u0222\u0223\7c\2\2\u0223\u0224\7p\2\2\u0224") - buf.write("\u0225\7u\2\2\u0225\u0226\7k\2\2\u0226\u0227\7g\2\2\u0227") - buf.write("\u0228\7p\2\2\u0228\u0229\7v\2\2\u0229^\3\2\2\2\u022a") - buf.write("\u022b\7v\2\2\u022b\u022c\7t\2\2\u022c\u022d\7{\2\2\u022d") - buf.write("`\3\2\2\2\u022e\u022f\7x\2\2\u022f\u0230\7q\2\2\u0230") - buf.write("\u0231\7k\2\2\u0231\u0232\7f\2\2\u0232b\3\2\2\2\u0233") - buf.write("\u0234\7x\2\2\u0234\u0235\7q\2\2\u0235\u0236\7n\2\2\u0236") - buf.write("\u0237\7c\2\2\u0237\u0238\7v\2\2\u0238\u0239\7k\2\2\u0239") - buf.write("\u023a\7n\2\2\u023a\u023b\7g\2\2\u023bd\3\2\2\2\u023c") - buf.write("\u023d\7y\2\2\u023d\u023e\7j\2\2\u023e\u023f\7k\2\2\u023f") - buf.write("\u0240\7n\2\2\u0240\u0241\7g\2\2\u0241f\3\2\2\2\u0242") - buf.write("\u0250\7\62\2\2\u0243\u024d\t\2\2\2\u0244\u0246\5\u00e9") - buf.write("u\2\u0245\u0244\3\2\2\2\u0245\u0246\3\2\2\2\u0246\u024e") - buf.write("\3\2\2\2\u0247\u0249\7a\2\2\u0248\u0247\3\2\2\2\u0249") - buf.write("\u024a\3\2\2\2\u024a\u0248\3\2\2\2\u024a\u024b\3\2\2\2") - buf.write("\u024b\u024c\3\2\2\2\u024c\u024e\5\u00e9u\2\u024d\u0245") - buf.write("\3\2\2\2\u024d\u0248\3\2\2\2\u024e\u0250\3\2\2\2\u024f") - buf.write("\u0242\3\2\2\2\u024f\u0243\3\2\2\2\u0250\u0252\3\2\2\2") - buf.write("\u0251\u0253\t\3\2\2\u0252\u0251\3\2\2\2\u0252\u0253\3") - buf.write("\2\2\2\u0253h\3\2\2\2\u0254\u0255\7\62\2\2\u0255\u0256") - buf.write("\t\4\2\2\u0256\u025e\t\5\2\2\u0257\u0259\t\6\2\2\u0258") - buf.write("\u0257\3\2\2\2\u0259\u025c\3\2\2\2\u025a\u0258\3\2\2\2") - buf.write("\u025a\u025b\3\2\2\2\u025b\u025d\3\2\2\2\u025c\u025a\3") - buf.write("\2\2\2\u025d\u025f\t\5\2\2\u025e\u025a\3\2\2\2\u025e\u025f") - buf.write("\3\2\2\2\u025f\u0261\3\2\2\2\u0260\u0262\t\3\2\2\u0261") - buf.write("\u0260\3\2\2\2\u0261\u0262\3\2\2\2\u0262j\3\2\2\2\u0263") - buf.write("\u0267\7\62\2\2\u0264\u0266\7a\2\2\u0265\u0264\3\2\2\2") - buf.write("\u0266\u0269\3\2\2\2\u0267\u0265\3\2\2\2\u0267\u0268\3") - buf.write("\2\2\2\u0268\u026a\3\2\2\2\u0269\u0267\3\2\2\2\u026a\u0272") - buf.write("\t\7\2\2\u026b\u026d\t\b\2\2\u026c\u026b\3\2\2\2\u026d") - buf.write("\u0270\3\2\2\2\u026e\u026c\3\2\2\2\u026e\u026f\3\2\2\2") - buf.write("\u026f\u0271\3\2\2\2\u0270\u026e\3\2\2\2\u0271\u0273\t") - buf.write("\7\2\2\u0272\u026e\3\2\2\2\u0272\u0273\3\2\2\2\u0273\u0275") - buf.write("\3\2\2\2\u0274\u0276\t\3\2\2\u0275\u0274\3\2\2\2\u0275") - buf.write("\u0276\3\2\2\2\u0276l\3\2\2\2\u0277\u0278\7\62\2\2\u0278") - buf.write("\u0279\t\t\2\2\u0279\u0281\t\n\2\2\u027a\u027c\t\13\2") - buf.write("\2\u027b\u027a\3\2\2\2\u027c\u027f\3\2\2\2\u027d\u027b") - buf.write("\3\2\2\2\u027d\u027e\3\2\2\2\u027e\u0280\3\2\2\2\u027f") - buf.write("\u027d\3\2\2\2\u0280\u0282\t\n\2\2\u0281\u027d\3\2\2\2") - buf.write("\u0281\u0282\3\2\2\2\u0282\u0284\3\2\2\2\u0283\u0285\t") - buf.write("\3\2\2\u0284\u0283\3\2\2\2\u0284\u0285\3\2\2\2\u0285n") - buf.write("\3\2\2\2\u0286\u0287\5\u00e9u\2\u0287\u0289\7\60\2\2\u0288") - buf.write("\u028a\5\u00e9u\2\u0289\u0288\3\2\2\2\u0289\u028a\3\2") - buf.write("\2\2\u028a\u028e\3\2\2\2\u028b\u028c\7\60\2\2\u028c\u028e") - buf.write("\5\u00e9u\2\u028d\u0286\3\2\2\2\u028d\u028b\3\2\2\2\u028e") - buf.write("\u0290\3\2\2\2\u028f\u0291\5\u00e1q\2\u0290\u028f\3\2") - buf.write("\2\2\u0290\u0291\3\2\2\2\u0291\u0293\3\2\2\2\u0292\u0294") - buf.write("\t\f\2\2\u0293\u0292\3\2\2\2\u0293\u0294\3\2\2\2\u0294") - buf.write("\u029e\3\2\2\2\u0295\u029b\5\u00e9u\2\u0296\u0298\5\u00e1") - buf.write("q\2\u0297\u0299\t\f\2\2\u0298\u0297\3\2\2\2\u0298\u0299") - buf.write("\3\2\2\2\u0299\u029c\3\2\2\2\u029a\u029c\t\f\2\2\u029b") - buf.write("\u0296\3\2\2\2\u029b\u029a\3\2\2\2\u029c\u029e\3\2\2\2") - buf.write("\u029d\u028d\3\2\2\2\u029d\u0295\3\2\2\2\u029ep\3\2\2") - buf.write("\2\u029f\u02a0\7\62\2\2\u02a0\u02aa\t\4\2\2\u02a1\u02a3") - buf.write("\5\u00e5s\2\u02a2\u02a4\7\60\2\2\u02a3\u02a2\3\2\2\2\u02a3") - buf.write("\u02a4\3\2\2\2\u02a4\u02ab\3\2\2\2\u02a5\u02a7\5\u00e5") - buf.write("s\2\u02a6\u02a5\3\2\2\2\u02a6\u02a7\3\2\2\2\u02a7\u02a8") - buf.write("\3\2\2\2\u02a8\u02a9\7\60\2\2\u02a9\u02ab\5\u00e5s\2\u02aa") - buf.write("\u02a1\3\2\2\2\u02aa\u02a6\3\2\2\2\u02ab\u02ac\3\2\2\2") - buf.write("\u02ac\u02ae\t\r\2\2\u02ad\u02af\t\16\2\2\u02ae\u02ad") - buf.write("\3\2\2\2\u02ae\u02af\3\2\2\2\u02af\u02b0\3\2\2\2\u02b0") - buf.write("\u02b2\5\u00e9u\2\u02b1\u02b3\t\f\2\2\u02b2\u02b1\3\2") - buf.write("\2\2\u02b2\u02b3\3\2\2\2\u02b3r\3\2\2\2\u02b4\u02b5\7") - buf.write("v\2\2\u02b5\u02b6\7t\2\2\u02b6\u02b7\7w\2\2\u02b7\u02be") - buf.write("\7g\2\2\u02b8\u02b9\7h\2\2\u02b9\u02ba\7c\2\2\u02ba\u02bb") - buf.write("\7n\2\2\u02bb\u02bc\7u\2\2\u02bc\u02be\7g\2\2\u02bd\u02b4") - buf.write("\3\2\2\2\u02bd\u02b8\3\2\2\2\u02bet\3\2\2\2\u02bf\u02c2") - buf.write("\7)\2\2\u02c0\u02c3\n\17\2\2\u02c1\u02c3\5\u00e3r\2\u02c2") - buf.write("\u02c0\3\2\2\2\u02c2\u02c1\3\2\2\2\u02c3\u02c4\3\2\2\2") - buf.write("\u02c4\u02c5\7)\2\2\u02c5v\3\2\2\2\u02c6\u02cb\7$\2\2") - buf.write("\u02c7\u02ca\n\20\2\2\u02c8\u02ca\5\u00e3r\2\u02c9\u02c7") - buf.write("\3\2\2\2\u02c9\u02c8\3\2\2\2\u02ca\u02cd\3\2\2\2\u02cb") - buf.write("\u02c9\3\2\2\2\u02cb\u02cc\3\2\2\2\u02cc\u02ce\3\2\2\2") - buf.write("\u02cd\u02cb\3\2\2\2\u02ce\u02cf\7$\2\2\u02cfx\3\2\2\2") - buf.write("\u02d0\u02d1\7p\2\2\u02d1\u02d2\7w\2\2\u02d2\u02d3\7n") - buf.write("\2\2\u02d3\u02d4\7n\2\2\u02d4z\3\2\2\2\u02d5\u02d6\7*") - buf.write("\2\2\u02d6|\3\2\2\2\u02d7\u02d8\7+\2\2\u02d8~\3\2\2\2") - buf.write("\u02d9\u02da\7}\2\2\u02da\u0080\3\2\2\2\u02db\u02dc\7") - buf.write("\177\2\2\u02dc\u0082\3\2\2\2\u02dd\u02de\7]\2\2\u02de") - buf.write("\u0084\3\2\2\2\u02df\u02e0\7_\2\2\u02e0\u0086\3\2\2\2") - buf.write("\u02e1\u02e2\7=\2\2\u02e2\u0088\3\2\2\2\u02e3\u02e4\7") - buf.write(".\2\2\u02e4\u008a\3\2\2\2\u02e5\u02e6\7\60\2\2\u02e6\u008c") - buf.write("\3\2\2\2\u02e7\u02e8\7?\2\2\u02e8\u008e\3\2\2\2\u02e9") - buf.write("\u02ea\7@\2\2\u02ea\u0090\3\2\2\2\u02eb\u02ec\7>\2\2\u02ec") - buf.write("\u0092\3\2\2\2\u02ed\u02ee\7#\2\2\u02ee\u0094\3\2\2\2") - buf.write("\u02ef\u02f0\7\u0080\2\2\u02f0\u0096\3\2\2\2\u02f1\u02f2") - buf.write("\7A\2\2\u02f2\u0098\3\2\2\2\u02f3\u02f4\7<\2\2\u02f4\u009a") - buf.write("\3\2\2\2\u02f5\u02f6\7?\2\2\u02f6\u02f7\7?\2\2\u02f7\u009c") - buf.write("\3\2\2\2\u02f8\u02f9\7>\2\2\u02f9\u02fa\7?\2\2\u02fa\u009e") - buf.write("\3\2\2\2\u02fb\u02fc\7@\2\2\u02fc\u02fd\7?\2\2\u02fd\u00a0") - buf.write("\3\2\2\2\u02fe\u02ff\7#\2\2\u02ff\u0300\7?\2\2\u0300\u00a2") - buf.write("\3\2\2\2\u0301\u0302\7(\2\2\u0302\u0303\7(\2\2\u0303\u00a4") - buf.write("\3\2\2\2\u0304\u0305\7~\2\2\u0305\u0306\7~\2\2\u0306\u00a6") - buf.write("\3\2\2\2\u0307\u0308\7-\2\2\u0308\u0309\7-\2\2\u0309\u00a8") - buf.write("\3\2\2\2\u030a\u030b\7/\2\2\u030b\u030c\7/\2\2\u030c\u00aa") - buf.write("\3\2\2\2\u030d\u030e\7-\2\2\u030e\u00ac\3\2\2\2\u030f") - buf.write("\u0310\7/\2\2\u0310\u00ae\3\2\2\2\u0311\u0312\7,\2\2\u0312") - buf.write("\u00b0\3\2\2\2\u0313\u0314\7\61\2\2\u0314\u00b2\3\2\2") - buf.write("\2\u0315\u0316\7(\2\2\u0316\u00b4\3\2\2\2\u0317\u0318") - buf.write("\7~\2\2\u0318\u00b6\3\2\2\2\u0319\u031a\7`\2\2\u031a\u00b8") - buf.write("\3\2\2\2\u031b\u031c\7\'\2\2\u031c\u00ba\3\2\2\2\u031d") - buf.write("\u031e\7-\2\2\u031e\u031f\7?\2\2\u031f\u00bc\3\2\2\2\u0320") - buf.write("\u0321\7/\2\2\u0321\u0322\7?\2\2\u0322\u00be\3\2\2\2\u0323") - buf.write("\u0324\7,\2\2\u0324\u0325\7?\2\2\u0325\u00c0\3\2\2\2\u0326") - buf.write("\u0327\7\61\2\2\u0327\u0328\7?\2\2\u0328\u00c2\3\2\2\2") - buf.write("\u0329\u032a\7(\2\2\u032a\u032b\7?\2\2\u032b\u00c4\3\2") - buf.write("\2\2\u032c\u032d\7~\2\2\u032d\u032e\7?\2\2\u032e\u00c6") - buf.write("\3\2\2\2\u032f\u0330\7`\2\2\u0330\u0331\7?\2\2\u0331\u00c8") - buf.write("\3\2\2\2\u0332\u0333\7\'\2\2\u0333\u0334\7?\2\2\u0334") - buf.write("\u00ca\3\2\2\2\u0335\u0336\7>\2\2\u0336\u0337\7>\2\2\u0337") - buf.write("\u0338\7?\2\2\u0338\u00cc\3\2\2\2\u0339\u033a\7@\2\2\u033a") - buf.write("\u033b\7@\2\2\u033b\u033c\7?\2\2\u033c\u00ce\3\2\2\2\u033d") - buf.write("\u033e\7@\2\2\u033e\u033f\7@\2\2\u033f\u0340\7@\2\2\u0340") - buf.write("\u0341\7?\2\2\u0341\u00d0\3\2\2\2\u0342\u0343\7/\2\2\u0343") - buf.write("\u0344\7@\2\2\u0344\u00d2\3\2\2\2\u0345\u0346\7<\2\2\u0346") - buf.write("\u0347\7<\2\2\u0347\u00d4\3\2\2\2\u0348\u0349\7B\2\2\u0349") - buf.write("\u00d6\3\2\2\2\u034a\u034b\7\60\2\2\u034b\u034c\7\60\2") - buf.write("\2\u034c\u034d\7\60\2\2\u034d\u00d8\3\2\2\2\u034e\u0350") - buf.write("\t\21\2\2\u034f\u034e\3\2\2\2\u0350\u0351\3\2\2\2\u0351") - buf.write("\u034f\3\2\2\2\u0351\u0352\3\2\2\2\u0352\u0353\3\2\2\2") - buf.write("\u0353\u0354\bm\2\2\u0354\u00da\3\2\2\2\u0355\u0356\7") - buf.write("\61\2\2\u0356\u0357\7,\2\2\u0357\u035b\3\2\2\2\u0358\u035a") - buf.write("\13\2\2\2\u0359\u0358\3\2\2\2\u035a\u035d\3\2\2\2\u035b") - buf.write("\u035c\3\2\2\2\u035b\u0359\3\2\2\2\u035c\u035e\3\2\2\2") - buf.write("\u035d\u035b\3\2\2\2\u035e\u035f\7,\2\2\u035f\u0360\7") - buf.write("\61\2\2\u0360\u0361\3\2\2\2\u0361\u0362\bn\2\2\u0362\u00dc") - buf.write("\3\2\2\2\u0363\u0364\7\61\2\2\u0364\u0365\7\61\2\2\u0365") - buf.write("\u0369\3\2\2\2\u0366\u0368\n\22\2\2\u0367\u0366\3\2\2") - buf.write("\2\u0368\u036b\3\2\2\2\u0369\u0367\3\2\2\2\u0369\u036a") - buf.write("\3\2\2\2\u036a\u036c\3\2\2\2\u036b\u0369\3\2\2\2\u036c") - buf.write("\u036d\bo\2\2\u036d\u00de\3\2\2\2\u036e\u0372\5\u00ed") - buf.write("w\2\u036f\u0371\5\u00ebv\2\u0370\u036f\3\2\2\2\u0371\u0374") - buf.write("\3\2\2\2\u0372\u0370\3\2\2\2\u0372\u0373\3\2\2\2\u0373") - buf.write("\u00e0\3\2\2\2\u0374\u0372\3\2\2\2\u0375\u0377\t\23\2") - buf.write("\2\u0376\u0378\t\16\2\2\u0377\u0376\3\2\2\2\u0377\u0378") - buf.write("\3\2\2\2\u0378\u0379\3\2\2\2\u0379\u037a\5\u00e9u\2\u037a") - buf.write("\u00e2\3\2\2\2\u037b\u037c\7^\2\2\u037c\u0391\t\24\2\2") - buf.write("\u037d\u0382\7^\2\2\u037e\u0380\t\25\2\2\u037f\u037e\3") - buf.write("\2\2\2\u037f\u0380\3\2\2\2\u0380\u0381\3\2\2\2\u0381\u0383") - buf.write("\t\7\2\2\u0382\u037f\3\2\2\2\u0382\u0383\3\2\2\2\u0383") - buf.write("\u0384\3\2\2\2\u0384\u0391\t\7\2\2\u0385\u0387\7^\2\2") - buf.write("\u0386\u0388\7w\2\2\u0387\u0386\3\2\2\2\u0388\u0389\3") - buf.write("\2\2\2\u0389\u0387\3\2\2\2\u0389\u038a\3\2\2\2\u038a\u038b") - buf.write("\3\2\2\2\u038b\u038c\5\u00e7t\2\u038c\u038d\5\u00e7t\2") - buf.write("\u038d\u038e\5\u00e7t\2\u038e\u038f\5\u00e7t\2\u038f\u0391") - buf.write("\3\2\2\2\u0390\u037b\3\2\2\2\u0390\u037d\3\2\2\2\u0390") - buf.write("\u0385\3\2\2\2\u0391\u00e4\3\2\2\2\u0392\u039b\5\u00e7") - buf.write("t\2\u0393\u0396\5\u00e7t\2\u0394\u0396\7a\2\2\u0395\u0393") - buf.write("\3\2\2\2\u0395\u0394\3\2\2\2\u0396\u0399\3\2\2\2\u0397") - buf.write("\u0395\3\2\2\2\u0397\u0398\3\2\2\2\u0398\u039a\3\2\2\2") - buf.write("\u0399\u0397\3\2\2\2\u039a\u039c\5\u00e7t\2\u039b\u0397") - buf.write("\3\2\2\2\u039b\u039c\3\2\2\2\u039c\u00e6\3\2\2\2\u039d") - buf.write("\u039e\t\5\2\2\u039e\u00e8\3\2\2\2\u039f\u03a7\t\26\2") - buf.write("\2\u03a0\u03a2\t\27\2\2\u03a1\u03a0\3\2\2\2\u03a2\u03a5") - buf.write("\3\2\2\2\u03a3\u03a1\3\2\2\2\u03a3\u03a4\3\2\2\2\u03a4") - buf.write("\u03a6\3\2\2\2\u03a5\u03a3\3\2\2\2\u03a6\u03a8\t\26\2") - buf.write("\2\u03a7\u03a3\3\2\2\2\u03a7\u03a8\3\2\2\2\u03a8\u00ea") - buf.write("\3\2\2\2\u03a9\u03ac\5\u00edw\2\u03aa\u03ac\t\26\2\2\u03ab") - buf.write("\u03a9\3\2\2\2\u03ab\u03aa\3\2\2\2\u03ac\u00ec\3\2\2\2") - buf.write("\u03ad\u03b2\t\30\2\2\u03ae\u03b2\n\31\2\2\u03af\u03b0") - buf.write("\t\32\2\2\u03b0\u03b2\t\33\2\2\u03b1\u03ad\3\2\2\2\u03b1") - buf.write("\u03ae\3\2\2\2\u03b1\u03af\3\2\2\2\u03b2\u00ee\3\2\2\2") - buf.write("\62\2\u0245\u024a\u024d\u024f\u0252\u025a\u025e\u0261") - buf.write("\u0267\u026e\u0272\u0275\u027d\u0281\u0284\u0289\u028d") - buf.write("\u0290\u0293\u0298\u029b\u029d\u02a3\u02a6\u02aa\u02ae") - buf.write("\u02b2\u02bd\u02c2\u02c9\u02cb\u0351\u035b\u0369\u0372") - buf.write("\u0377\u037f\u0382\u0389\u0390\u0395\u0397\u039b\u03a3") - buf.write("\u03a7\u03ab\u03b1\3\2\3\2") - return buf.getvalue() - - -class JavaLexer(Lexer): - - atn = ATNDeserializer().deserialize(serializedATN()) - - decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] - - ABSTRACT = 1 - ASSERT = 2 - BOOLEAN = 3 - BREAK = 4 - BYTE = 5 - CASE = 6 - CATCH = 7 - CHAR = 8 - CLASS = 9 - CONST = 10 - CONTINUE = 11 - DEFAULT = 12 - DO = 13 - DOUBLE = 14 - ELSE = 15 - ENUM = 16 - EXTENDS = 17 - FINAL = 18 - FINALLY = 19 - FLOAT = 20 - FOR = 21 - IF = 22 - GOTO = 23 - IMPLEMENTS = 24 - IMPORT = 25 - INSTANCEOF = 26 - INT = 27 - INTERFACE = 28 - LONG = 29 - NATIVE = 30 - NEW = 31 - PACKAGE = 32 - PRIVATE = 33 - PROTECTED = 34 - PUBLIC = 35 - RETURN = 36 - SHORT = 37 - STATIC = 38 - STRICTFP = 39 - SUPER = 40 - SWITCH = 41 - SYNCHRONIZED = 42 - THIS = 43 - THROW = 44 - THROWS = 45 - TRANSIENT = 46 - TRY = 47 - VOID = 48 - VOLATILE = 49 - WHILE = 50 - DECIMAL_LITERAL = 51 - HEX_LITERAL = 52 - OCT_LITERAL = 53 - BINARY_LITERAL = 54 - FLOAT_LITERAL = 55 - HEX_FLOAT_LITERAL = 56 - BOOL_LITERAL = 57 - CHAR_LITERAL = 58 - STRING_LITERAL = 59 - NULL_LITERAL = 60 - LPAREN = 61 - RPAREN = 62 - LBRACE = 63 - RBRACE = 64 - LBRACK = 65 - RBRACK = 66 - SEMI = 67 - COMMA = 68 - DOT = 69 - ASSIGN = 70 - GT = 71 - LT = 72 - BANG = 73 - TILDE = 74 - QUESTION = 75 - COLON = 76 - EQUAL = 77 - LE = 78 - GE = 79 - NOTEQUAL = 80 - AND = 81 - OR = 82 - INC = 83 - DEC = 84 - ADD = 85 - SUB = 86 - MUL = 87 - DIV = 88 - BITAND = 89 - BITOR = 90 - CARET = 91 - MOD = 92 - ADD_ASSIGN = 93 - SUB_ASSIGN = 94 - MUL_ASSIGN = 95 - DIV_ASSIGN = 96 - AND_ASSIGN = 97 - OR_ASSIGN = 98 - XOR_ASSIGN = 99 - MOD_ASSIGN = 100 - LSHIFT_ASSIGN = 101 - RSHIFT_ASSIGN = 102 - URSHIFT_ASSIGN = 103 - ARROW = 104 - COLONCOLON = 105 - AT = 106 - ELLIPSIS = 107 - WS = 108 - COMMENT = 109 - LINE_COMMENT = 110 - IDENTIFIER = 111 - - channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ] - - modeNames = [ "DEFAULT_MODE" ] - - literalNames = [ "", - "'abstract'", "'assert'", "'boolean'", "'break'", "'byte'", - "'case'", "'catch'", "'char'", "'class'", "'const'", "'continue'", - "'default'", "'do'", "'double'", "'else'", "'enum'", "'extends'", - "'final'", "'finally'", "'float'", "'for'", "'if'", "'goto'", - "'implements'", "'import'", "'instanceof'", "'int'", "'interface'", - "'long'", "'native'", "'new'", "'package'", "'private'", "'protected'", - "'public'", "'return'", "'short'", "'static'", "'strictfp'", - "'super'", "'switch'", "'synchronized'", "'this'", "'throw'", - "'throws'", "'transient'", "'try'", "'void'", "'volatile'", - "'while'", "'null'", "'('", "')'", "'{'", "'}'", "'['", "']'", - "';'", "','", "'.'", "'='", "'>'", "'<'", "'!'", "'~'", "'?'", - "':'", "'=='", "'<='", "'>='", "'!='", "'&&'", "'||'", "'++'", - "'--'", "'+'", "'-'", "'*'", "'/'", "'&'", "'|'", "'^'", "'%'", - "'+='", "'-='", "'*='", "'/='", "'&='", "'|='", "'^='", "'%='", - "'<<='", "'>>='", "'>>>='", "'->'", "'::'", "'@'", "'...'" ] - - symbolicNames = [ "", - "ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", "BYTE", "CASE", "CATCH", - "CHAR", "CLASS", "CONST", "CONTINUE", "DEFAULT", "DO", "DOUBLE", - "ELSE", "ENUM", "EXTENDS", "FINAL", "FINALLY", "FLOAT", "FOR", - "IF", "GOTO", "IMPLEMENTS", "IMPORT", "INSTANCEOF", "INT", "INTERFACE", - "LONG", "NATIVE", "NEW", "PACKAGE", "PRIVATE", "PROTECTED", - "PUBLIC", "RETURN", "SHORT", "STATIC", "STRICTFP", "SUPER", - "SWITCH", "SYNCHRONIZED", "THIS", "THROW", "THROWS", "TRANSIENT", - "TRY", "VOID", "VOLATILE", "WHILE", "DECIMAL_LITERAL", "HEX_LITERAL", - "OCT_LITERAL", "BINARY_LITERAL", "FLOAT_LITERAL", "HEX_FLOAT_LITERAL", - "BOOL_LITERAL", "CHAR_LITERAL", "STRING_LITERAL", "NULL_LITERAL", - "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK", - "SEMI", "COMMA", "DOT", "ASSIGN", "GT", "LT", "BANG", "TILDE", - "QUESTION", "COLON", "EQUAL", "LE", "GE", "NOTEQUAL", "AND", - "OR", "INC", "DEC", "ADD", "SUB", "MUL", "DIV", "BITAND", "BITOR", - "CARET", "MOD", "ADD_ASSIGN", "SUB_ASSIGN", "MUL_ASSIGN", "DIV_ASSIGN", - "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", "MOD_ASSIGN", "LSHIFT_ASSIGN", - "RSHIFT_ASSIGN", "URSHIFT_ASSIGN", "ARROW", "COLONCOLON", "AT", - "ELLIPSIS", "WS", "COMMENT", "LINE_COMMENT", "IDENTIFIER" ] - - ruleNames = [ "ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", "BYTE", "CASE", - "CATCH", "CHAR", "CLASS", "CONST", "CONTINUE", "DEFAULT", - "DO", "DOUBLE", "ELSE", "ENUM", "EXTENDS", "FINAL", "FINALLY", - "FLOAT", "FOR", "IF", "GOTO", "IMPLEMENTS", "IMPORT", - "INSTANCEOF", "INT", "INTERFACE", "LONG", "NATIVE", "NEW", - "PACKAGE", "PRIVATE", "PROTECTED", "PUBLIC", "RETURN", - "SHORT", "STATIC", "STRICTFP", "SUPER", "SWITCH", "SYNCHRONIZED", - "THIS", "THROW", "THROWS", "TRANSIENT", "TRY", "VOID", - "VOLATILE", "WHILE", "DECIMAL_LITERAL", "HEX_LITERAL", - "OCT_LITERAL", "BINARY_LITERAL", "FLOAT_LITERAL", "HEX_FLOAT_LITERAL", - "BOOL_LITERAL", "CHAR_LITERAL", "STRING_LITERAL", "NULL_LITERAL", - "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK", - "SEMI", "COMMA", "DOT", "ASSIGN", "GT", "LT", "BANG", - "TILDE", "QUESTION", "COLON", "EQUAL", "LE", "GE", "NOTEQUAL", - "AND", "OR", "INC", "DEC", "ADD", "SUB", "MUL", "DIV", - "BITAND", "BITOR", "CARET", "MOD", "ADD_ASSIGN", "SUB_ASSIGN", - "MUL_ASSIGN", "DIV_ASSIGN", "AND_ASSIGN", "OR_ASSIGN", - "XOR_ASSIGN", "MOD_ASSIGN", "LSHIFT_ASSIGN", "RSHIFT_ASSIGN", - "URSHIFT_ASSIGN", "ARROW", "COLONCOLON", "AT", "ELLIPSIS", - "WS", "COMMENT", "LINE_COMMENT", "IDENTIFIER", "ExponentPart", - "EscapeSequence", "HexDigits", "HexDigit", "Digits", "LetterOrDigit", - "Letter" ] - - grammarFileName = "JavaLexer.g4" - - def __init__(self, input=None, output:TextIO = sys.stdout): - super().__init__(input, output) - self.checkVersion("4.7.1") - self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) - self._actions = None - self._predicates = None - - diff --git a/persper/parser/java/JavaLexer.tokens b/persper/parser/java/JavaLexer.tokens deleted file mode 100644 index c648b8cf39b..00000000000 --- a/persper/parser/java/JavaLexer.tokens +++ /dev/null @@ -1,209 +0,0 @@ -ABSTRACT=1 -ASSERT=2 -BOOLEAN=3 -BREAK=4 -BYTE=5 -CASE=6 -CATCH=7 -CHAR=8 -CLASS=9 -CONST=10 -CONTINUE=11 -DEFAULT=12 -DO=13 -DOUBLE=14 -ELSE=15 -ENUM=16 -EXTENDS=17 -FINAL=18 -FINALLY=19 -FLOAT=20 -FOR=21 -IF=22 -GOTO=23 -IMPLEMENTS=24 -IMPORT=25 -INSTANCEOF=26 -INT=27 -INTERFACE=28 -LONG=29 -NATIVE=30 -NEW=31 -PACKAGE=32 -PRIVATE=33 -PROTECTED=34 -PUBLIC=35 -RETURN=36 -SHORT=37 -STATIC=38 -STRICTFP=39 -SUPER=40 -SWITCH=41 -SYNCHRONIZED=42 -THIS=43 -THROW=44 -THROWS=45 -TRANSIENT=46 -TRY=47 -VOID=48 -VOLATILE=49 -WHILE=50 -DECIMAL_LITERAL=51 -HEX_LITERAL=52 -OCT_LITERAL=53 -BINARY_LITERAL=54 -FLOAT_LITERAL=55 -HEX_FLOAT_LITERAL=56 -BOOL_LITERAL=57 -CHAR_LITERAL=58 -STRING_LITERAL=59 -NULL_LITERAL=60 -LPAREN=61 -RPAREN=62 -LBRACE=63 -RBRACE=64 -LBRACK=65 -RBRACK=66 -SEMI=67 -COMMA=68 -DOT=69 -ASSIGN=70 -GT=71 -LT=72 -BANG=73 -TILDE=74 -QUESTION=75 -COLON=76 -EQUAL=77 -LE=78 -GE=79 -NOTEQUAL=80 -AND=81 -OR=82 -INC=83 -DEC=84 -ADD=85 -SUB=86 -MUL=87 -DIV=88 -BITAND=89 -BITOR=90 -CARET=91 -MOD=92 -ADD_ASSIGN=93 -SUB_ASSIGN=94 -MUL_ASSIGN=95 -DIV_ASSIGN=96 -AND_ASSIGN=97 -OR_ASSIGN=98 -XOR_ASSIGN=99 -MOD_ASSIGN=100 -LSHIFT_ASSIGN=101 -RSHIFT_ASSIGN=102 -URSHIFT_ASSIGN=103 -ARROW=104 -COLONCOLON=105 -AT=106 -ELLIPSIS=107 -WS=108 -COMMENT=109 -LINE_COMMENT=110 -IDENTIFIER=111 -'abstract'=1 -'assert'=2 -'boolean'=3 -'break'=4 -'byte'=5 -'case'=6 -'catch'=7 -'char'=8 -'class'=9 -'const'=10 -'continue'=11 -'default'=12 -'do'=13 -'double'=14 -'else'=15 -'enum'=16 -'extends'=17 -'final'=18 -'finally'=19 -'float'=20 -'for'=21 -'if'=22 -'goto'=23 -'implements'=24 -'import'=25 -'instanceof'=26 -'int'=27 -'interface'=28 -'long'=29 -'native'=30 -'new'=31 -'package'=32 -'private'=33 -'protected'=34 -'public'=35 -'return'=36 -'short'=37 -'static'=38 -'strictfp'=39 -'super'=40 -'switch'=41 -'synchronized'=42 -'this'=43 -'throw'=44 -'throws'=45 -'transient'=46 -'try'=47 -'void'=48 -'volatile'=49 -'while'=50 -'null'=60 -'('=61 -')'=62 -'{'=63 -'}'=64 -'['=65 -']'=66 -';'=67 -','=68 -'.'=69 -'='=70 -'>'=71 -'<'=72 -'!'=73 -'~'=74 -'?'=75 -':'=76 -'=='=77 -'<='=78 -'>='=79 -'!='=80 -'&&'=81 -'||'=82 -'++'=83 -'--'=84 -'+'=85 -'-'=86 -'*'=87 -'/'=88 -'&'=89 -'|'=90 -'^'=91 -'%'=92 -'+='=93 -'-='=94 -'*='=95 -'/='=96 -'&='=97 -'|='=98 -'^='=99 -'%='=100 -'<<='=101 -'>>='=102 -'>>>='=103 -'->'=104 -'::'=105 -'@'=106 -'...'=107 diff --git a/persper/parser/java/JavaParser.interp b/persper/parser/java/JavaParser.interp deleted file mode 100644 index fd3a2ea08ca..00000000000 --- a/persper/parser/java/JavaParser.interp +++ /dev/null @@ -1,337 +0,0 @@ -token literal names: -null -'abstract' -'assert' -'boolean' -'break' -'byte' -'case' -'catch' -'char' -'class' -'const' -'continue' -'default' -'do' -'double' -'else' -'enum' -'extends' -'final' -'finally' -'float' -'for' -'if' -'goto' -'implements' -'import' -'instanceof' -'int' -'interface' -'long' -'native' -'new' -'package' -'private' -'protected' -'public' -'return' -'short' -'static' -'strictfp' -'super' -'switch' -'synchronized' -'this' -'throw' -'throws' -'transient' -'try' -'void' -'volatile' -'while' -null -null -null -null -null -null -null -null -null -'null' -'(' -')' -'{' -'}' -'[' -']' -';' -',' -'.' -'=' -'>' -'<' -'!' -'~' -'?' -':' -'==' -'<=' -'>=' -'!=' -'&&' -'||' -'++' -'--' -'+' -'-' -'*' -'/' -'&' -'|' -'^' -'%' -'+=' -'-=' -'*=' -'/=' -'&=' -'|=' -'^=' -'%=' -'<<=' -'>>=' -'>>>=' -'->' -'::' -'@' -'...' -null -null -null -null - -token symbolic names: -null -ABSTRACT -ASSERT -BOOLEAN -BREAK -BYTE -CASE -CATCH -CHAR -CLASS -CONST -CONTINUE -DEFAULT -DO -DOUBLE -ELSE -ENUM -EXTENDS -FINAL -FINALLY -FLOAT -FOR -IF -GOTO -IMPLEMENTS -IMPORT -INSTANCEOF -INT -INTERFACE -LONG -NATIVE -NEW -PACKAGE -PRIVATE -PROTECTED -PUBLIC -RETURN -SHORT -STATIC -STRICTFP -SUPER -SWITCH -SYNCHRONIZED -THIS -THROW -THROWS -TRANSIENT -TRY -VOID -VOLATILE -WHILE -DECIMAL_LITERAL -HEX_LITERAL -OCT_LITERAL -BINARY_LITERAL -FLOAT_LITERAL -HEX_FLOAT_LITERAL -BOOL_LITERAL -CHAR_LITERAL -STRING_LITERAL -NULL_LITERAL -LPAREN -RPAREN -LBRACE -RBRACE -LBRACK -RBRACK -SEMI -COMMA -DOT -ASSIGN -GT -LT -BANG -TILDE -QUESTION -COLON -EQUAL -LE -GE -NOTEQUAL -AND -OR -INC -DEC -ADD -SUB -MUL -DIV -BITAND -BITOR -CARET -MOD -ADD_ASSIGN -SUB_ASSIGN -MUL_ASSIGN -DIV_ASSIGN -AND_ASSIGN -OR_ASSIGN -XOR_ASSIGN -MOD_ASSIGN -LSHIFT_ASSIGN -RSHIFT_ASSIGN -URSHIFT_ASSIGN -ARROW -COLONCOLON -AT -ELLIPSIS -WS -COMMENT -LINE_COMMENT -IDENTIFIER - -rule names: -compilationUnit -packageDeclaration -importDeclaration -typeDeclaration -modifier -classOrInterfaceModifier -variableModifier -classDeclaration -typeParameters -typeParameter -typeBound -enumDeclaration -enumConstants -enumConstant -enumBodyDeclarations -interfaceDeclaration -classBody -interfaceBody -classBodyDeclaration -memberDeclaration -methodDeclaration -methodBody -typeTypeOrVoid -genericMethodDeclaration -genericConstructorDeclaration -constructorDeclaration -fieldDeclaration -interfaceBodyDeclaration -interfaceMemberDeclaration -constDeclaration -constantDeclarator -interfaceMethodDeclaration -interfaceMethodModifier -genericInterfaceMethodDeclaration -variableDeclarators -variableDeclarator -variableDeclaratorId -variableInitializer -arrayInitializer -classOrInterfaceType -typeArgument -qualifiedNameList -formalParameters -formalParameterList -formalParameter -lastFormalParameter -qualifiedName -literal -integerLiteral -floatLiteral -annotation -elementValuePairs -elementValuePair -elementValue -elementValueArrayInitializer -annotationTypeDeclaration -annotationTypeBody -annotationTypeElementDeclaration -annotationTypeElementRest -annotationMethodOrConstantRest -annotationMethodRest -annotationConstantRest -defaultValue -block -blockStatement -localVariableDeclaration -localTypeDeclaration -statement -catchClause -catchType -finallyBlock -resourceSpecification -resources -resource -switchBlockStatementGroup -switchLabel -forControl -forInit -enhancedForControl -parExpression -expressionList -methodCall -expression -lambdaExpression -lambdaParameters -lambdaBody -primary -classType -creator -createdName -innerCreator -arrayCreatorRest -classCreatorRest -explicitGenericInvocation -typeArgumentsOrDiamond -nonWildcardTypeArgumentsOrDiamond -nonWildcardTypeArguments -typeList -typeType -primitiveType -typeArguments -superSuffix -explicitGenericInvocationSuffix -arguments - - -atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 113, 1384, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 3, 2, 5, 2, 212, 10, 2, 3, 2, 7, 2, 215, 10, 2, 12, 2, 14, 2, 218, 11, 2, 3, 2, 7, 2, 221, 10, 2, 12, 2, 14, 2, 224, 11, 2, 3, 2, 3, 2, 3, 3, 7, 3, 229, 10, 3, 12, 3, 14, 3, 232, 11, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 5, 4, 240, 10, 4, 3, 4, 3, 4, 3, 4, 5, 4, 245, 10, 4, 3, 4, 3, 4, 3, 5, 7, 5, 250, 10, 5, 12, 5, 14, 5, 253, 11, 5, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 259, 10, 5, 3, 5, 5, 5, 262, 10, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 5, 6, 269, 10, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 279, 10, 7, 3, 8, 3, 8, 5, 8, 283, 10, 8, 3, 9, 3, 9, 3, 9, 5, 9, 288, 10, 9, 3, 9, 3, 9, 5, 9, 292, 10, 9, 3, 9, 3, 9, 5, 9, 296, 10, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 7, 10, 304, 10, 10, 12, 10, 14, 10, 307, 11, 10, 3, 10, 3, 10, 3, 11, 7, 11, 312, 10, 11, 12, 11, 14, 11, 315, 11, 11, 3, 11, 3, 11, 3, 11, 5, 11, 320, 10, 11, 3, 12, 3, 12, 3, 12, 7, 12, 325, 10, 12, 12, 12, 14, 12, 328, 11, 12, 3, 13, 3, 13, 3, 13, 3, 13, 5, 13, 334, 10, 13, 3, 13, 3, 13, 5, 13, 338, 10, 13, 3, 13, 5, 13, 341, 10, 13, 3, 13, 5, 13, 344, 10, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 7, 14, 351, 10, 14, 12, 14, 14, 14, 354, 11, 14, 3, 15, 7, 15, 357, 10, 15, 12, 15, 14, 15, 360, 11, 15, 3, 15, 3, 15, 5, 15, 364, 10, 15, 3, 15, 5, 15, 367, 10, 15, 3, 16, 3, 16, 7, 16, 371, 10, 16, 12, 16, 14, 16, 374, 11, 16, 3, 17, 3, 17, 3, 17, 5, 17, 379, 10, 17, 3, 17, 3, 17, 5, 17, 383, 10, 17, 3, 17, 3, 17, 3, 18, 3, 18, 7, 18, 389, 10, 18, 12, 18, 14, 18, 392, 11, 18, 3, 18, 3, 18, 3, 19, 3, 19, 7, 19, 398, 10, 19, 12, 19, 14, 19, 401, 11, 19, 3, 19, 3, 19, 3, 20, 3, 20, 5, 20, 407, 10, 20, 3, 20, 3, 20, 7, 20, 411, 10, 20, 12, 20, 14, 20, 414, 11, 20, 3, 20, 5, 20, 417, 10, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 5, 21, 428, 10, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 7, 22, 435, 10, 22, 12, 22, 14, 22, 438, 11, 22, 3, 22, 3, 22, 5, 22, 442, 10, 22, 3, 22, 3, 22, 3, 23, 3, 23, 5, 23, 448, 10, 23, 3, 24, 3, 24, 5, 24, 452, 10, 24, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 5, 27, 464, 10, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 7, 29, 473, 10, 29, 12, 29, 14, 29, 476, 11, 29, 3, 29, 3, 29, 5, 29, 480, 10, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 489, 10, 30, 3, 31, 3, 31, 3, 31, 3, 31, 7, 31, 495, 10, 31, 12, 31, 14, 31, 498, 11, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 7, 32, 505, 10, 32, 12, 32, 14, 32, 508, 11, 32, 3, 32, 3, 32, 3, 32, 3, 33, 7, 33, 514, 10, 33, 12, 33, 14, 33, 517, 11, 33, 3, 33, 3, 33, 3, 33, 7, 33, 522, 10, 33, 12, 33, 14, 33, 525, 11, 33, 3, 33, 3, 33, 5, 33, 529, 10, 33, 3, 33, 3, 33, 3, 33, 3, 33, 7, 33, 535, 10, 33, 12, 33, 14, 33, 538, 11, 33, 3, 33, 3, 33, 5, 33, 542, 10, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 5, 34, 552, 10, 34, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 7, 36, 560, 10, 36, 12, 36, 14, 36, 563, 11, 36, 3, 37, 3, 37, 3, 37, 5, 37, 568, 10, 37, 3, 38, 3, 38, 3, 38, 7, 38, 573, 10, 38, 12, 38, 14, 38, 576, 11, 38, 3, 39, 3, 39, 5, 39, 580, 10, 39, 3, 40, 3, 40, 3, 40, 3, 40, 7, 40, 586, 10, 40, 12, 40, 14, 40, 589, 11, 40, 3, 40, 5, 40, 592, 10, 40, 5, 40, 594, 10, 40, 3, 40, 3, 40, 3, 41, 3, 41, 5, 41, 600, 10, 41, 3, 41, 3, 41, 3, 41, 5, 41, 605, 10, 41, 7, 41, 607, 10, 41, 12, 41, 14, 41, 610, 11, 41, 3, 42, 3, 42, 3, 42, 3, 42, 5, 42, 616, 10, 42, 5, 42, 618, 10, 42, 3, 43, 3, 43, 3, 43, 7, 43, 623, 10, 43, 12, 43, 14, 43, 626, 11, 43, 3, 44, 3, 44, 5, 44, 630, 10, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 7, 45, 637, 10, 45, 12, 45, 14, 45, 640, 11, 45, 3, 45, 3, 45, 5, 45, 644, 10, 45, 3, 45, 5, 45, 647, 10, 45, 3, 46, 7, 46, 650, 10, 46, 12, 46, 14, 46, 653, 11, 46, 3, 46, 3, 46, 3, 46, 3, 47, 7, 47, 659, 10, 47, 12, 47, 14, 47, 662, 11, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 7, 48, 671, 10, 48, 12, 48, 14, 48, 674, 11, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 5, 49, 682, 10, 49, 3, 50, 3, 50, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 5, 52, 693, 10, 52, 3, 52, 5, 52, 696, 10, 52, 3, 53, 3, 53, 3, 53, 7, 53, 701, 10, 53, 12, 53, 14, 53, 704, 11, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 5, 55, 713, 10, 55, 3, 56, 3, 56, 3, 56, 3, 56, 7, 56, 719, 10, 56, 12, 56, 14, 56, 722, 11, 56, 5, 56, 724, 10, 56, 3, 56, 5, 56, 727, 10, 56, 3, 56, 3, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 7, 58, 738, 10, 58, 12, 58, 14, 58, 741, 11, 58, 3, 58, 3, 58, 3, 59, 7, 59, 746, 10, 59, 12, 59, 14, 59, 749, 11, 59, 3, 59, 3, 59, 5, 59, 753, 10, 59, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 5, 60, 761, 10, 60, 3, 60, 3, 60, 5, 60, 765, 10, 60, 3, 60, 3, 60, 5, 60, 769, 10, 60, 3, 60, 3, 60, 5, 60, 773, 10, 60, 5, 60, 775, 10, 60, 3, 61, 3, 61, 5, 61, 779, 10, 61, 3, 62, 3, 62, 3, 62, 3, 62, 5, 62, 785, 10, 62, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 3, 65, 3, 65, 7, 65, 794, 10, 65, 12, 65, 14, 65, 797, 11, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 5, 66, 806, 10, 66, 3, 67, 7, 67, 809, 10, 67, 12, 67, 14, 67, 812, 11, 67, 3, 67, 3, 67, 3, 67, 3, 68, 7, 68, 818, 10, 68, 12, 68, 14, 68, 821, 11, 68, 3, 68, 3, 68, 5, 68, 825, 10, 68, 3, 68, 5, 68, 828, 10, 68, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 5, 69, 835, 10, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 5, 69, 844, 10, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 6, 69, 865, 10, 69, 13, 69, 14, 69, 866, 3, 69, 5, 69, 870, 10, 69, 3, 69, 5, 69, 873, 10, 69, 3, 69, 3, 69, 3, 69, 3, 69, 7, 69, 879, 10, 69, 12, 69, 14, 69, 882, 11, 69, 3, 69, 5, 69, 885, 10, 69, 3, 69, 3, 69, 3, 69, 3, 69, 7, 69, 891, 10, 69, 12, 69, 14, 69, 894, 11, 69, 3, 69, 7, 69, 897, 10, 69, 12, 69, 14, 69, 900, 11, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 5, 69, 910, 10, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 5, 69, 919, 10, 69, 3, 69, 3, 69, 3, 69, 5, 69, 924, 10, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 5, 69, 934, 10, 69, 3, 70, 3, 70, 3, 70, 7, 70, 939, 10, 70, 12, 70, 14, 70, 942, 11, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 7, 71, 952, 10, 71, 12, 71, 14, 71, 955, 11, 71, 3, 72, 3, 72, 3, 72, 3, 73, 3, 73, 3, 73, 5, 73, 963, 10, 73, 3, 73, 3, 73, 3, 74, 3, 74, 3, 74, 7, 74, 970, 10, 74, 12, 74, 14, 74, 973, 11, 74, 3, 75, 7, 75, 976, 10, 75, 12, 75, 14, 75, 979, 11, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 76, 6, 76, 987, 10, 76, 13, 76, 14, 76, 988, 3, 76, 6, 76, 992, 10, 76, 13, 76, 14, 76, 993, 3, 77, 3, 77, 3, 77, 5, 77, 999, 10, 77, 3, 77, 3, 77, 3, 77, 5, 77, 1004, 10, 77, 3, 78, 3, 78, 5, 78, 1008, 10, 78, 3, 78, 3, 78, 5, 78, 1012, 10, 78, 3, 78, 3, 78, 5, 78, 1016, 10, 78, 5, 78, 1018, 10, 78, 3, 79, 3, 79, 5, 79, 1022, 10, 79, 3, 80, 7, 80, 1025, 10, 80, 12, 80, 14, 80, 1028, 11, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 81, 3, 81, 3, 81, 3, 81, 3, 82, 3, 82, 3, 82, 7, 82, 1042, 10, 82, 12, 82, 14, 82, 1045, 11, 82, 3, 83, 3, 83, 3, 83, 5, 83, 1050, 10, 83, 3, 83, 3, 83, 3, 83, 3, 83, 5, 83, 1056, 10, 83, 3, 83, 3, 83, 3, 83, 3, 83, 5, 83, 1062, 10, 83, 3, 83, 5, 83, 1065, 10, 83, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 5, 84, 1085, 10, 84, 3, 84, 3, 84, 5, 84, 1089, 10, 84, 3, 84, 3, 84, 3, 84, 5, 84, 1094, 10, 84, 3, 84, 3, 84, 5, 84, 1098, 10, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 5, 84, 1114, 10, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 5, 84, 1154, 10, 84, 3, 84, 3, 84, 3, 84, 3, 84, 5, 84, 1160, 10, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 5, 84, 1175, 10, 84, 3, 84, 7, 84, 1178, 10, 84, 12, 84, 14, 84, 1181, 11, 84, 3, 85, 3, 85, 3, 85, 3, 85, 3, 86, 3, 86, 3, 86, 5, 86, 1190, 10, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 7, 86, 1197, 10, 86, 12, 86, 14, 86, 1200, 11, 86, 3, 86, 5, 86, 1203, 10, 86, 3, 87, 3, 87, 5, 87, 1207, 10, 87, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 5, 88, 1225, 10, 88, 5, 88, 1227, 10, 88, 3, 89, 3, 89, 3, 89, 5, 89, 1232, 10, 89, 3, 89, 7, 89, 1235, 10, 89, 12, 89, 14, 89, 1238, 11, 89, 3, 89, 3, 89, 5, 89, 1242, 10, 89, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 5, 90, 1251, 10, 90, 5, 90, 1253, 10, 90, 3, 91, 3, 91, 5, 91, 1257, 10, 91, 3, 91, 3, 91, 3, 91, 5, 91, 1262, 10, 91, 7, 91, 1264, 10, 91, 12, 91, 14, 91, 1267, 11, 91, 3, 91, 5, 91, 1270, 10, 91, 3, 92, 3, 92, 5, 92, 1274, 10, 92, 3, 92, 3, 92, 3, 93, 3, 93, 3, 93, 3, 93, 7, 93, 1282, 10, 93, 12, 93, 14, 93, 1285, 11, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 7, 93, 1294, 10, 93, 12, 93, 14, 93, 1297, 11, 93, 3, 93, 3, 93, 7, 93, 1301, 10, 93, 12, 93, 14, 93, 1304, 11, 93, 5, 93, 1306, 10, 93, 3, 94, 3, 94, 5, 94, 1310, 10, 94, 3, 95, 3, 95, 3, 95, 3, 96, 3, 96, 3, 96, 5, 96, 1318, 10, 96, 3, 97, 3, 97, 3, 97, 5, 97, 1323, 10, 97, 3, 98, 3, 98, 3, 98, 3, 98, 3, 99, 3, 99, 3, 99, 7, 99, 1332, 10, 99, 12, 99, 14, 99, 1335, 11, 99, 3, 100, 5, 100, 1338, 10, 100, 3, 100, 3, 100, 5, 100, 1342, 10, 100, 3, 100, 3, 100, 7, 100, 1346, 10, 100, 12, 100, 14, 100, 1349, 11, 100, 3, 101, 3, 101, 3, 102, 3, 102, 3, 102, 3, 102, 7, 102, 1357, 10, 102, 12, 102, 14, 102, 1360, 11, 102, 3, 102, 3, 102, 3, 103, 3, 103, 3, 103, 3, 103, 5, 103, 1368, 10, 103, 5, 103, 1370, 10, 103, 3, 104, 3, 104, 3, 104, 3, 104, 5, 104, 1376, 10, 104, 3, 105, 3, 105, 5, 105, 1380, 10, 105, 3, 105, 3, 105, 3, 105, 2, 3, 166, 106, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 2, 14, 4, 2, 19, 19, 42, 42, 3, 2, 53, 56, 3, 2, 57, 58, 3, 2, 85, 88, 3, 2, 75, 76, 4, 2, 89, 90, 94, 94, 3, 2, 87, 88, 4, 2, 73, 74, 80, 81, 4, 2, 79, 79, 82, 82, 4, 2, 72, 72, 95, 105, 3, 2, 85, 86, 10, 2, 5, 5, 7, 7, 10, 10, 16, 16, 22, 22, 29, 29, 31, 31, 39, 39, 2, 1537, 2, 211, 3, 2, 2, 2, 4, 230, 3, 2, 2, 2, 6, 237, 3, 2, 2, 2, 8, 261, 3, 2, 2, 2, 10, 268, 3, 2, 2, 2, 12, 278, 3, 2, 2, 2, 14, 282, 3, 2, 2, 2, 16, 284, 3, 2, 2, 2, 18, 299, 3, 2, 2, 2, 20, 313, 3, 2, 2, 2, 22, 321, 3, 2, 2, 2, 24, 329, 3, 2, 2, 2, 26, 347, 3, 2, 2, 2, 28, 358, 3, 2, 2, 2, 30, 368, 3, 2, 2, 2, 32, 375, 3, 2, 2, 2, 34, 386, 3, 2, 2, 2, 36, 395, 3, 2, 2, 2, 38, 416, 3, 2, 2, 2, 40, 427, 3, 2, 2, 2, 42, 429, 3, 2, 2, 2, 44, 447, 3, 2, 2, 2, 46, 451, 3, 2, 2, 2, 48, 453, 3, 2, 2, 2, 50, 456, 3, 2, 2, 2, 52, 459, 3, 2, 2, 2, 54, 467, 3, 2, 2, 2, 56, 479, 3, 2, 2, 2, 58, 488, 3, 2, 2, 2, 60, 490, 3, 2, 2, 2, 62, 501, 3, 2, 2, 2, 64, 515, 3, 2, 2, 2, 66, 551, 3, 2, 2, 2, 68, 553, 3, 2, 2, 2, 70, 556, 3, 2, 2, 2, 72, 564, 3, 2, 2, 2, 74, 569, 3, 2, 2, 2, 76, 579, 3, 2, 2, 2, 78, 581, 3, 2, 2, 2, 80, 597, 3, 2, 2, 2, 82, 617, 3, 2, 2, 2, 84, 619, 3, 2, 2, 2, 86, 627, 3, 2, 2, 2, 88, 646, 3, 2, 2, 2, 90, 651, 3, 2, 2, 2, 92, 660, 3, 2, 2, 2, 94, 667, 3, 2, 2, 2, 96, 681, 3, 2, 2, 2, 98, 683, 3, 2, 2, 2, 100, 685, 3, 2, 2, 2, 102, 687, 3, 2, 2, 2, 104, 697, 3, 2, 2, 2, 106, 705, 3, 2, 2, 2, 108, 712, 3, 2, 2, 2, 110, 714, 3, 2, 2, 2, 112, 730, 3, 2, 2, 2, 114, 735, 3, 2, 2, 2, 116, 752, 3, 2, 2, 2, 118, 774, 3, 2, 2, 2, 120, 778, 3, 2, 2, 2, 122, 780, 3, 2, 2, 2, 124, 786, 3, 2, 2, 2, 126, 788, 3, 2, 2, 2, 128, 791, 3, 2, 2, 2, 130, 805, 3, 2, 2, 2, 132, 810, 3, 2, 2, 2, 134, 827, 3, 2, 2, 2, 136, 933, 3, 2, 2, 2, 138, 935, 3, 2, 2, 2, 140, 948, 3, 2, 2, 2, 142, 956, 3, 2, 2, 2, 144, 959, 3, 2, 2, 2, 146, 966, 3, 2, 2, 2, 148, 977, 3, 2, 2, 2, 150, 986, 3, 2, 2, 2, 152, 1003, 3, 2, 2, 2, 154, 1017, 3, 2, 2, 2, 156, 1021, 3, 2, 2, 2, 158, 1026, 3, 2, 2, 2, 160, 1034, 3, 2, 2, 2, 162, 1038, 3, 2, 2, 2, 164, 1064, 3, 2, 2, 2, 166, 1097, 3, 2, 2, 2, 168, 1182, 3, 2, 2, 2, 170, 1202, 3, 2, 2, 2, 172, 1206, 3, 2, 2, 2, 174, 1226, 3, 2, 2, 2, 176, 1231, 3, 2, 2, 2, 178, 1252, 3, 2, 2, 2, 180, 1269, 3, 2, 2, 2, 182, 1271, 3, 2, 2, 2, 184, 1277, 3, 2, 2, 2, 186, 1307, 3, 2, 2, 2, 188, 1311, 3, 2, 2, 2, 190, 1317, 3, 2, 2, 2, 192, 1322, 3, 2, 2, 2, 194, 1324, 3, 2, 2, 2, 196, 1328, 3, 2, 2, 2, 198, 1337, 3, 2, 2, 2, 200, 1350, 3, 2, 2, 2, 202, 1352, 3, 2, 2, 2, 204, 1369, 3, 2, 2, 2, 206, 1375, 3, 2, 2, 2, 208, 1377, 3, 2, 2, 2, 210, 212, 5, 4, 3, 2, 211, 210, 3, 2, 2, 2, 211, 212, 3, 2, 2, 2, 212, 216, 3, 2, 2, 2, 213, 215, 5, 6, 4, 2, 214, 213, 3, 2, 2, 2, 215, 218, 3, 2, 2, 2, 216, 214, 3, 2, 2, 2, 216, 217, 3, 2, 2, 2, 217, 222, 3, 2, 2, 2, 218, 216, 3, 2, 2, 2, 219, 221, 5, 8, 5, 2, 220, 219, 3, 2, 2, 2, 221, 224, 3, 2, 2, 2, 222, 220, 3, 2, 2, 2, 222, 223, 3, 2, 2, 2, 223, 225, 3, 2, 2, 2, 224, 222, 3, 2, 2, 2, 225, 226, 7, 2, 2, 3, 226, 3, 3, 2, 2, 2, 227, 229, 5, 102, 52, 2, 228, 227, 3, 2, 2, 2, 229, 232, 3, 2, 2, 2, 230, 228, 3, 2, 2, 2, 230, 231, 3, 2, 2, 2, 231, 233, 3, 2, 2, 2, 232, 230, 3, 2, 2, 2, 233, 234, 7, 34, 2, 2, 234, 235, 5, 94, 48, 2, 235, 236, 7, 69, 2, 2, 236, 5, 3, 2, 2, 2, 237, 239, 7, 27, 2, 2, 238, 240, 7, 40, 2, 2, 239, 238, 3, 2, 2, 2, 239, 240, 3, 2, 2, 2, 240, 241, 3, 2, 2, 2, 241, 244, 5, 94, 48, 2, 242, 243, 7, 71, 2, 2, 243, 245, 7, 89, 2, 2, 244, 242, 3, 2, 2, 2, 244, 245, 3, 2, 2, 2, 245, 246, 3, 2, 2, 2, 246, 247, 7, 69, 2, 2, 247, 7, 3, 2, 2, 2, 248, 250, 5, 12, 7, 2, 249, 248, 3, 2, 2, 2, 250, 253, 3, 2, 2, 2, 251, 249, 3, 2, 2, 2, 251, 252, 3, 2, 2, 2, 252, 258, 3, 2, 2, 2, 253, 251, 3, 2, 2, 2, 254, 259, 5, 16, 9, 2, 255, 259, 5, 24, 13, 2, 256, 259, 5, 32, 17, 2, 257, 259, 5, 112, 57, 2, 258, 254, 3, 2, 2, 2, 258, 255, 3, 2, 2, 2, 258, 256, 3, 2, 2, 2, 258, 257, 3, 2, 2, 2, 259, 262, 3, 2, 2, 2, 260, 262, 7, 69, 2, 2, 261, 251, 3, 2, 2, 2, 261, 260, 3, 2, 2, 2, 262, 9, 3, 2, 2, 2, 263, 269, 5, 12, 7, 2, 264, 269, 7, 32, 2, 2, 265, 269, 7, 44, 2, 2, 266, 269, 7, 48, 2, 2, 267, 269, 7, 51, 2, 2, 268, 263, 3, 2, 2, 2, 268, 264, 3, 2, 2, 2, 268, 265, 3, 2, 2, 2, 268, 266, 3, 2, 2, 2, 268, 267, 3, 2, 2, 2, 269, 11, 3, 2, 2, 2, 270, 279, 5, 102, 52, 2, 271, 279, 7, 37, 2, 2, 272, 279, 7, 36, 2, 2, 273, 279, 7, 35, 2, 2, 274, 279, 7, 40, 2, 2, 275, 279, 7, 3, 2, 2, 276, 279, 7, 20, 2, 2, 277, 279, 7, 41, 2, 2, 278, 270, 3, 2, 2, 2, 278, 271, 3, 2, 2, 2, 278, 272, 3, 2, 2, 2, 278, 273, 3, 2, 2, 2, 278, 274, 3, 2, 2, 2, 278, 275, 3, 2, 2, 2, 278, 276, 3, 2, 2, 2, 278, 277, 3, 2, 2, 2, 279, 13, 3, 2, 2, 2, 280, 283, 7, 20, 2, 2, 281, 283, 5, 102, 52, 2, 282, 280, 3, 2, 2, 2, 282, 281, 3, 2, 2, 2, 283, 15, 3, 2, 2, 2, 284, 285, 7, 11, 2, 2, 285, 287, 7, 113, 2, 2, 286, 288, 5, 18, 10, 2, 287, 286, 3, 2, 2, 2, 287, 288, 3, 2, 2, 2, 288, 291, 3, 2, 2, 2, 289, 290, 7, 19, 2, 2, 290, 292, 5, 198, 100, 2, 291, 289, 3, 2, 2, 2, 291, 292, 3, 2, 2, 2, 292, 295, 3, 2, 2, 2, 293, 294, 7, 26, 2, 2, 294, 296, 5, 196, 99, 2, 295, 293, 3, 2, 2, 2, 295, 296, 3, 2, 2, 2, 296, 297, 3, 2, 2, 2, 297, 298, 5, 34, 18, 2, 298, 17, 3, 2, 2, 2, 299, 300, 7, 74, 2, 2, 300, 305, 5, 20, 11, 2, 301, 302, 7, 70, 2, 2, 302, 304, 5, 20, 11, 2, 303, 301, 3, 2, 2, 2, 304, 307, 3, 2, 2, 2, 305, 303, 3, 2, 2, 2, 305, 306, 3, 2, 2, 2, 306, 308, 3, 2, 2, 2, 307, 305, 3, 2, 2, 2, 308, 309, 7, 73, 2, 2, 309, 19, 3, 2, 2, 2, 310, 312, 5, 102, 52, 2, 311, 310, 3, 2, 2, 2, 312, 315, 3, 2, 2, 2, 313, 311, 3, 2, 2, 2, 313, 314, 3, 2, 2, 2, 314, 316, 3, 2, 2, 2, 315, 313, 3, 2, 2, 2, 316, 319, 7, 113, 2, 2, 317, 318, 7, 19, 2, 2, 318, 320, 5, 22, 12, 2, 319, 317, 3, 2, 2, 2, 319, 320, 3, 2, 2, 2, 320, 21, 3, 2, 2, 2, 321, 326, 5, 198, 100, 2, 322, 323, 7, 91, 2, 2, 323, 325, 5, 198, 100, 2, 324, 322, 3, 2, 2, 2, 325, 328, 3, 2, 2, 2, 326, 324, 3, 2, 2, 2, 326, 327, 3, 2, 2, 2, 327, 23, 3, 2, 2, 2, 328, 326, 3, 2, 2, 2, 329, 330, 7, 18, 2, 2, 330, 333, 7, 113, 2, 2, 331, 332, 7, 26, 2, 2, 332, 334, 5, 196, 99, 2, 333, 331, 3, 2, 2, 2, 333, 334, 3, 2, 2, 2, 334, 335, 3, 2, 2, 2, 335, 337, 7, 65, 2, 2, 336, 338, 5, 26, 14, 2, 337, 336, 3, 2, 2, 2, 337, 338, 3, 2, 2, 2, 338, 340, 3, 2, 2, 2, 339, 341, 7, 70, 2, 2, 340, 339, 3, 2, 2, 2, 340, 341, 3, 2, 2, 2, 341, 343, 3, 2, 2, 2, 342, 344, 5, 30, 16, 2, 343, 342, 3, 2, 2, 2, 343, 344, 3, 2, 2, 2, 344, 345, 3, 2, 2, 2, 345, 346, 7, 66, 2, 2, 346, 25, 3, 2, 2, 2, 347, 352, 5, 28, 15, 2, 348, 349, 7, 70, 2, 2, 349, 351, 5, 28, 15, 2, 350, 348, 3, 2, 2, 2, 351, 354, 3, 2, 2, 2, 352, 350, 3, 2, 2, 2, 352, 353, 3, 2, 2, 2, 353, 27, 3, 2, 2, 2, 354, 352, 3, 2, 2, 2, 355, 357, 5, 102, 52, 2, 356, 355, 3, 2, 2, 2, 357, 360, 3, 2, 2, 2, 358, 356, 3, 2, 2, 2, 358, 359, 3, 2, 2, 2, 359, 361, 3, 2, 2, 2, 360, 358, 3, 2, 2, 2, 361, 363, 7, 113, 2, 2, 362, 364, 5, 208, 105, 2, 363, 362, 3, 2, 2, 2, 363, 364, 3, 2, 2, 2, 364, 366, 3, 2, 2, 2, 365, 367, 5, 34, 18, 2, 366, 365, 3, 2, 2, 2, 366, 367, 3, 2, 2, 2, 367, 29, 3, 2, 2, 2, 368, 372, 7, 69, 2, 2, 369, 371, 5, 38, 20, 2, 370, 369, 3, 2, 2, 2, 371, 374, 3, 2, 2, 2, 372, 370, 3, 2, 2, 2, 372, 373, 3, 2, 2, 2, 373, 31, 3, 2, 2, 2, 374, 372, 3, 2, 2, 2, 375, 376, 7, 30, 2, 2, 376, 378, 7, 113, 2, 2, 377, 379, 5, 18, 10, 2, 378, 377, 3, 2, 2, 2, 378, 379, 3, 2, 2, 2, 379, 382, 3, 2, 2, 2, 380, 381, 7, 19, 2, 2, 381, 383, 5, 196, 99, 2, 382, 380, 3, 2, 2, 2, 382, 383, 3, 2, 2, 2, 383, 384, 3, 2, 2, 2, 384, 385, 5, 36, 19, 2, 385, 33, 3, 2, 2, 2, 386, 390, 7, 65, 2, 2, 387, 389, 5, 38, 20, 2, 388, 387, 3, 2, 2, 2, 389, 392, 3, 2, 2, 2, 390, 388, 3, 2, 2, 2, 390, 391, 3, 2, 2, 2, 391, 393, 3, 2, 2, 2, 392, 390, 3, 2, 2, 2, 393, 394, 7, 66, 2, 2, 394, 35, 3, 2, 2, 2, 395, 399, 7, 65, 2, 2, 396, 398, 5, 56, 29, 2, 397, 396, 3, 2, 2, 2, 398, 401, 3, 2, 2, 2, 399, 397, 3, 2, 2, 2, 399, 400, 3, 2, 2, 2, 400, 402, 3, 2, 2, 2, 401, 399, 3, 2, 2, 2, 402, 403, 7, 66, 2, 2, 403, 37, 3, 2, 2, 2, 404, 417, 7, 69, 2, 2, 405, 407, 7, 40, 2, 2, 406, 405, 3, 2, 2, 2, 406, 407, 3, 2, 2, 2, 407, 408, 3, 2, 2, 2, 408, 417, 5, 128, 65, 2, 409, 411, 5, 10, 6, 2, 410, 409, 3, 2, 2, 2, 411, 414, 3, 2, 2, 2, 412, 410, 3, 2, 2, 2, 412, 413, 3, 2, 2, 2, 413, 415, 3, 2, 2, 2, 414, 412, 3, 2, 2, 2, 415, 417, 5, 40, 21, 2, 416, 404, 3, 2, 2, 2, 416, 406, 3, 2, 2, 2, 416, 412, 3, 2, 2, 2, 417, 39, 3, 2, 2, 2, 418, 428, 5, 42, 22, 2, 419, 428, 5, 48, 25, 2, 420, 428, 5, 54, 28, 2, 421, 428, 5, 52, 27, 2, 422, 428, 5, 50, 26, 2, 423, 428, 5, 32, 17, 2, 424, 428, 5, 112, 57, 2, 425, 428, 5, 16, 9, 2, 426, 428, 5, 24, 13, 2, 427, 418, 3, 2, 2, 2, 427, 419, 3, 2, 2, 2, 427, 420, 3, 2, 2, 2, 427, 421, 3, 2, 2, 2, 427, 422, 3, 2, 2, 2, 427, 423, 3, 2, 2, 2, 427, 424, 3, 2, 2, 2, 427, 425, 3, 2, 2, 2, 427, 426, 3, 2, 2, 2, 428, 41, 3, 2, 2, 2, 429, 430, 5, 46, 24, 2, 430, 431, 7, 113, 2, 2, 431, 436, 5, 86, 44, 2, 432, 433, 7, 67, 2, 2, 433, 435, 7, 68, 2, 2, 434, 432, 3, 2, 2, 2, 435, 438, 3, 2, 2, 2, 436, 434, 3, 2, 2, 2, 436, 437, 3, 2, 2, 2, 437, 441, 3, 2, 2, 2, 438, 436, 3, 2, 2, 2, 439, 440, 7, 47, 2, 2, 440, 442, 5, 84, 43, 2, 441, 439, 3, 2, 2, 2, 441, 442, 3, 2, 2, 2, 442, 443, 3, 2, 2, 2, 443, 444, 5, 44, 23, 2, 444, 43, 3, 2, 2, 2, 445, 448, 5, 128, 65, 2, 446, 448, 7, 69, 2, 2, 447, 445, 3, 2, 2, 2, 447, 446, 3, 2, 2, 2, 448, 45, 3, 2, 2, 2, 449, 452, 5, 198, 100, 2, 450, 452, 7, 50, 2, 2, 451, 449, 3, 2, 2, 2, 451, 450, 3, 2, 2, 2, 452, 47, 3, 2, 2, 2, 453, 454, 5, 18, 10, 2, 454, 455, 5, 42, 22, 2, 455, 49, 3, 2, 2, 2, 456, 457, 5, 18, 10, 2, 457, 458, 5, 52, 27, 2, 458, 51, 3, 2, 2, 2, 459, 460, 7, 113, 2, 2, 460, 463, 5, 86, 44, 2, 461, 462, 7, 47, 2, 2, 462, 464, 5, 84, 43, 2, 463, 461, 3, 2, 2, 2, 463, 464, 3, 2, 2, 2, 464, 465, 3, 2, 2, 2, 465, 466, 5, 128, 65, 2, 466, 53, 3, 2, 2, 2, 467, 468, 5, 198, 100, 2, 468, 469, 5, 70, 36, 2, 469, 470, 7, 69, 2, 2, 470, 55, 3, 2, 2, 2, 471, 473, 5, 10, 6, 2, 472, 471, 3, 2, 2, 2, 473, 476, 3, 2, 2, 2, 474, 472, 3, 2, 2, 2, 474, 475, 3, 2, 2, 2, 475, 477, 3, 2, 2, 2, 476, 474, 3, 2, 2, 2, 477, 480, 5, 58, 30, 2, 478, 480, 7, 69, 2, 2, 479, 474, 3, 2, 2, 2, 479, 478, 3, 2, 2, 2, 480, 57, 3, 2, 2, 2, 481, 489, 5, 60, 31, 2, 482, 489, 5, 64, 33, 2, 483, 489, 5, 68, 35, 2, 484, 489, 5, 32, 17, 2, 485, 489, 5, 112, 57, 2, 486, 489, 5, 16, 9, 2, 487, 489, 5, 24, 13, 2, 488, 481, 3, 2, 2, 2, 488, 482, 3, 2, 2, 2, 488, 483, 3, 2, 2, 2, 488, 484, 3, 2, 2, 2, 488, 485, 3, 2, 2, 2, 488, 486, 3, 2, 2, 2, 488, 487, 3, 2, 2, 2, 489, 59, 3, 2, 2, 2, 490, 491, 5, 198, 100, 2, 491, 496, 5, 62, 32, 2, 492, 493, 7, 70, 2, 2, 493, 495, 5, 62, 32, 2, 494, 492, 3, 2, 2, 2, 495, 498, 3, 2, 2, 2, 496, 494, 3, 2, 2, 2, 496, 497, 3, 2, 2, 2, 497, 499, 3, 2, 2, 2, 498, 496, 3, 2, 2, 2, 499, 500, 7, 69, 2, 2, 500, 61, 3, 2, 2, 2, 501, 506, 7, 113, 2, 2, 502, 503, 7, 67, 2, 2, 503, 505, 7, 68, 2, 2, 504, 502, 3, 2, 2, 2, 505, 508, 3, 2, 2, 2, 506, 504, 3, 2, 2, 2, 506, 507, 3, 2, 2, 2, 507, 509, 3, 2, 2, 2, 508, 506, 3, 2, 2, 2, 509, 510, 7, 72, 2, 2, 510, 511, 5, 76, 39, 2, 511, 63, 3, 2, 2, 2, 512, 514, 5, 66, 34, 2, 513, 512, 3, 2, 2, 2, 514, 517, 3, 2, 2, 2, 515, 513, 3, 2, 2, 2, 515, 516, 3, 2, 2, 2, 516, 528, 3, 2, 2, 2, 517, 515, 3, 2, 2, 2, 518, 529, 5, 46, 24, 2, 519, 523, 5, 18, 10, 2, 520, 522, 5, 102, 52, 2, 521, 520, 3, 2, 2, 2, 522, 525, 3, 2, 2, 2, 523, 521, 3, 2, 2, 2, 523, 524, 3, 2, 2, 2, 524, 526, 3, 2, 2, 2, 525, 523, 3, 2, 2, 2, 526, 527, 5, 46, 24, 2, 527, 529, 3, 2, 2, 2, 528, 518, 3, 2, 2, 2, 528, 519, 3, 2, 2, 2, 529, 530, 3, 2, 2, 2, 530, 531, 7, 113, 2, 2, 531, 536, 5, 86, 44, 2, 532, 533, 7, 67, 2, 2, 533, 535, 7, 68, 2, 2, 534, 532, 3, 2, 2, 2, 535, 538, 3, 2, 2, 2, 536, 534, 3, 2, 2, 2, 536, 537, 3, 2, 2, 2, 537, 541, 3, 2, 2, 2, 538, 536, 3, 2, 2, 2, 539, 540, 7, 47, 2, 2, 540, 542, 5, 84, 43, 2, 541, 539, 3, 2, 2, 2, 541, 542, 3, 2, 2, 2, 542, 543, 3, 2, 2, 2, 543, 544, 5, 44, 23, 2, 544, 65, 3, 2, 2, 2, 545, 552, 5, 102, 52, 2, 546, 552, 7, 37, 2, 2, 547, 552, 7, 3, 2, 2, 548, 552, 7, 14, 2, 2, 549, 552, 7, 40, 2, 2, 550, 552, 7, 41, 2, 2, 551, 545, 3, 2, 2, 2, 551, 546, 3, 2, 2, 2, 551, 547, 3, 2, 2, 2, 551, 548, 3, 2, 2, 2, 551, 549, 3, 2, 2, 2, 551, 550, 3, 2, 2, 2, 552, 67, 3, 2, 2, 2, 553, 554, 5, 18, 10, 2, 554, 555, 5, 64, 33, 2, 555, 69, 3, 2, 2, 2, 556, 561, 5, 72, 37, 2, 557, 558, 7, 70, 2, 2, 558, 560, 5, 72, 37, 2, 559, 557, 3, 2, 2, 2, 560, 563, 3, 2, 2, 2, 561, 559, 3, 2, 2, 2, 561, 562, 3, 2, 2, 2, 562, 71, 3, 2, 2, 2, 563, 561, 3, 2, 2, 2, 564, 567, 5, 74, 38, 2, 565, 566, 7, 72, 2, 2, 566, 568, 5, 76, 39, 2, 567, 565, 3, 2, 2, 2, 567, 568, 3, 2, 2, 2, 568, 73, 3, 2, 2, 2, 569, 574, 7, 113, 2, 2, 570, 571, 7, 67, 2, 2, 571, 573, 7, 68, 2, 2, 572, 570, 3, 2, 2, 2, 573, 576, 3, 2, 2, 2, 574, 572, 3, 2, 2, 2, 574, 575, 3, 2, 2, 2, 575, 75, 3, 2, 2, 2, 576, 574, 3, 2, 2, 2, 577, 580, 5, 78, 40, 2, 578, 580, 5, 166, 84, 2, 579, 577, 3, 2, 2, 2, 579, 578, 3, 2, 2, 2, 580, 77, 3, 2, 2, 2, 581, 593, 7, 65, 2, 2, 582, 587, 5, 76, 39, 2, 583, 584, 7, 70, 2, 2, 584, 586, 5, 76, 39, 2, 585, 583, 3, 2, 2, 2, 586, 589, 3, 2, 2, 2, 587, 585, 3, 2, 2, 2, 587, 588, 3, 2, 2, 2, 588, 591, 3, 2, 2, 2, 589, 587, 3, 2, 2, 2, 590, 592, 7, 70, 2, 2, 591, 590, 3, 2, 2, 2, 591, 592, 3, 2, 2, 2, 592, 594, 3, 2, 2, 2, 593, 582, 3, 2, 2, 2, 593, 594, 3, 2, 2, 2, 594, 595, 3, 2, 2, 2, 595, 596, 7, 66, 2, 2, 596, 79, 3, 2, 2, 2, 597, 599, 7, 113, 2, 2, 598, 600, 5, 202, 102, 2, 599, 598, 3, 2, 2, 2, 599, 600, 3, 2, 2, 2, 600, 608, 3, 2, 2, 2, 601, 602, 7, 71, 2, 2, 602, 604, 7, 113, 2, 2, 603, 605, 5, 202, 102, 2, 604, 603, 3, 2, 2, 2, 604, 605, 3, 2, 2, 2, 605, 607, 3, 2, 2, 2, 606, 601, 3, 2, 2, 2, 607, 610, 3, 2, 2, 2, 608, 606, 3, 2, 2, 2, 608, 609, 3, 2, 2, 2, 609, 81, 3, 2, 2, 2, 610, 608, 3, 2, 2, 2, 611, 618, 5, 198, 100, 2, 612, 615, 7, 77, 2, 2, 613, 614, 9, 2, 2, 2, 614, 616, 5, 198, 100, 2, 615, 613, 3, 2, 2, 2, 615, 616, 3, 2, 2, 2, 616, 618, 3, 2, 2, 2, 617, 611, 3, 2, 2, 2, 617, 612, 3, 2, 2, 2, 618, 83, 3, 2, 2, 2, 619, 624, 5, 94, 48, 2, 620, 621, 7, 70, 2, 2, 621, 623, 5, 94, 48, 2, 622, 620, 3, 2, 2, 2, 623, 626, 3, 2, 2, 2, 624, 622, 3, 2, 2, 2, 624, 625, 3, 2, 2, 2, 625, 85, 3, 2, 2, 2, 626, 624, 3, 2, 2, 2, 627, 629, 7, 63, 2, 2, 628, 630, 5, 88, 45, 2, 629, 628, 3, 2, 2, 2, 629, 630, 3, 2, 2, 2, 630, 631, 3, 2, 2, 2, 631, 632, 7, 64, 2, 2, 632, 87, 3, 2, 2, 2, 633, 638, 5, 90, 46, 2, 634, 635, 7, 70, 2, 2, 635, 637, 5, 90, 46, 2, 636, 634, 3, 2, 2, 2, 637, 640, 3, 2, 2, 2, 638, 636, 3, 2, 2, 2, 638, 639, 3, 2, 2, 2, 639, 643, 3, 2, 2, 2, 640, 638, 3, 2, 2, 2, 641, 642, 7, 70, 2, 2, 642, 644, 5, 92, 47, 2, 643, 641, 3, 2, 2, 2, 643, 644, 3, 2, 2, 2, 644, 647, 3, 2, 2, 2, 645, 647, 5, 92, 47, 2, 646, 633, 3, 2, 2, 2, 646, 645, 3, 2, 2, 2, 647, 89, 3, 2, 2, 2, 648, 650, 5, 14, 8, 2, 649, 648, 3, 2, 2, 2, 650, 653, 3, 2, 2, 2, 651, 649, 3, 2, 2, 2, 651, 652, 3, 2, 2, 2, 652, 654, 3, 2, 2, 2, 653, 651, 3, 2, 2, 2, 654, 655, 5, 198, 100, 2, 655, 656, 5, 74, 38, 2, 656, 91, 3, 2, 2, 2, 657, 659, 5, 14, 8, 2, 658, 657, 3, 2, 2, 2, 659, 662, 3, 2, 2, 2, 660, 658, 3, 2, 2, 2, 660, 661, 3, 2, 2, 2, 661, 663, 3, 2, 2, 2, 662, 660, 3, 2, 2, 2, 663, 664, 5, 198, 100, 2, 664, 665, 7, 109, 2, 2, 665, 666, 5, 74, 38, 2, 666, 93, 3, 2, 2, 2, 667, 672, 7, 113, 2, 2, 668, 669, 7, 71, 2, 2, 669, 671, 7, 113, 2, 2, 670, 668, 3, 2, 2, 2, 671, 674, 3, 2, 2, 2, 672, 670, 3, 2, 2, 2, 672, 673, 3, 2, 2, 2, 673, 95, 3, 2, 2, 2, 674, 672, 3, 2, 2, 2, 675, 682, 5, 98, 50, 2, 676, 682, 5, 100, 51, 2, 677, 682, 7, 60, 2, 2, 678, 682, 7, 61, 2, 2, 679, 682, 7, 59, 2, 2, 680, 682, 7, 62, 2, 2, 681, 675, 3, 2, 2, 2, 681, 676, 3, 2, 2, 2, 681, 677, 3, 2, 2, 2, 681, 678, 3, 2, 2, 2, 681, 679, 3, 2, 2, 2, 681, 680, 3, 2, 2, 2, 682, 97, 3, 2, 2, 2, 683, 684, 9, 3, 2, 2, 684, 99, 3, 2, 2, 2, 685, 686, 9, 4, 2, 2, 686, 101, 3, 2, 2, 2, 687, 688, 7, 108, 2, 2, 688, 695, 5, 94, 48, 2, 689, 692, 7, 63, 2, 2, 690, 693, 5, 104, 53, 2, 691, 693, 5, 108, 55, 2, 692, 690, 3, 2, 2, 2, 692, 691, 3, 2, 2, 2, 692, 693, 3, 2, 2, 2, 693, 694, 3, 2, 2, 2, 694, 696, 7, 64, 2, 2, 695, 689, 3, 2, 2, 2, 695, 696, 3, 2, 2, 2, 696, 103, 3, 2, 2, 2, 697, 702, 5, 106, 54, 2, 698, 699, 7, 70, 2, 2, 699, 701, 5, 106, 54, 2, 700, 698, 3, 2, 2, 2, 701, 704, 3, 2, 2, 2, 702, 700, 3, 2, 2, 2, 702, 703, 3, 2, 2, 2, 703, 105, 3, 2, 2, 2, 704, 702, 3, 2, 2, 2, 705, 706, 7, 113, 2, 2, 706, 707, 7, 72, 2, 2, 707, 708, 5, 108, 55, 2, 708, 107, 3, 2, 2, 2, 709, 713, 5, 166, 84, 2, 710, 713, 5, 102, 52, 2, 711, 713, 5, 110, 56, 2, 712, 709, 3, 2, 2, 2, 712, 710, 3, 2, 2, 2, 712, 711, 3, 2, 2, 2, 713, 109, 3, 2, 2, 2, 714, 723, 7, 65, 2, 2, 715, 720, 5, 108, 55, 2, 716, 717, 7, 70, 2, 2, 717, 719, 5, 108, 55, 2, 718, 716, 3, 2, 2, 2, 719, 722, 3, 2, 2, 2, 720, 718, 3, 2, 2, 2, 720, 721, 3, 2, 2, 2, 721, 724, 3, 2, 2, 2, 722, 720, 3, 2, 2, 2, 723, 715, 3, 2, 2, 2, 723, 724, 3, 2, 2, 2, 724, 726, 3, 2, 2, 2, 725, 727, 7, 70, 2, 2, 726, 725, 3, 2, 2, 2, 726, 727, 3, 2, 2, 2, 727, 728, 3, 2, 2, 2, 728, 729, 7, 66, 2, 2, 729, 111, 3, 2, 2, 2, 730, 731, 7, 108, 2, 2, 731, 732, 7, 30, 2, 2, 732, 733, 7, 113, 2, 2, 733, 734, 5, 114, 58, 2, 734, 113, 3, 2, 2, 2, 735, 739, 7, 65, 2, 2, 736, 738, 5, 116, 59, 2, 737, 736, 3, 2, 2, 2, 738, 741, 3, 2, 2, 2, 739, 737, 3, 2, 2, 2, 739, 740, 3, 2, 2, 2, 740, 742, 3, 2, 2, 2, 741, 739, 3, 2, 2, 2, 742, 743, 7, 66, 2, 2, 743, 115, 3, 2, 2, 2, 744, 746, 5, 10, 6, 2, 745, 744, 3, 2, 2, 2, 746, 749, 3, 2, 2, 2, 747, 745, 3, 2, 2, 2, 747, 748, 3, 2, 2, 2, 748, 750, 3, 2, 2, 2, 749, 747, 3, 2, 2, 2, 750, 753, 5, 118, 60, 2, 751, 753, 7, 69, 2, 2, 752, 747, 3, 2, 2, 2, 752, 751, 3, 2, 2, 2, 753, 117, 3, 2, 2, 2, 754, 755, 5, 198, 100, 2, 755, 756, 5, 120, 61, 2, 756, 757, 7, 69, 2, 2, 757, 775, 3, 2, 2, 2, 758, 760, 5, 16, 9, 2, 759, 761, 7, 69, 2, 2, 760, 759, 3, 2, 2, 2, 760, 761, 3, 2, 2, 2, 761, 775, 3, 2, 2, 2, 762, 764, 5, 32, 17, 2, 763, 765, 7, 69, 2, 2, 764, 763, 3, 2, 2, 2, 764, 765, 3, 2, 2, 2, 765, 775, 3, 2, 2, 2, 766, 768, 5, 24, 13, 2, 767, 769, 7, 69, 2, 2, 768, 767, 3, 2, 2, 2, 768, 769, 3, 2, 2, 2, 769, 775, 3, 2, 2, 2, 770, 772, 5, 112, 57, 2, 771, 773, 7, 69, 2, 2, 772, 771, 3, 2, 2, 2, 772, 773, 3, 2, 2, 2, 773, 775, 3, 2, 2, 2, 774, 754, 3, 2, 2, 2, 774, 758, 3, 2, 2, 2, 774, 762, 3, 2, 2, 2, 774, 766, 3, 2, 2, 2, 774, 770, 3, 2, 2, 2, 775, 119, 3, 2, 2, 2, 776, 779, 5, 122, 62, 2, 777, 779, 5, 124, 63, 2, 778, 776, 3, 2, 2, 2, 778, 777, 3, 2, 2, 2, 779, 121, 3, 2, 2, 2, 780, 781, 7, 113, 2, 2, 781, 782, 7, 63, 2, 2, 782, 784, 7, 64, 2, 2, 783, 785, 5, 126, 64, 2, 784, 783, 3, 2, 2, 2, 784, 785, 3, 2, 2, 2, 785, 123, 3, 2, 2, 2, 786, 787, 5, 70, 36, 2, 787, 125, 3, 2, 2, 2, 788, 789, 7, 14, 2, 2, 789, 790, 5, 108, 55, 2, 790, 127, 3, 2, 2, 2, 791, 795, 7, 65, 2, 2, 792, 794, 5, 130, 66, 2, 793, 792, 3, 2, 2, 2, 794, 797, 3, 2, 2, 2, 795, 793, 3, 2, 2, 2, 795, 796, 3, 2, 2, 2, 796, 798, 3, 2, 2, 2, 797, 795, 3, 2, 2, 2, 798, 799, 7, 66, 2, 2, 799, 129, 3, 2, 2, 2, 800, 801, 5, 132, 67, 2, 801, 802, 7, 69, 2, 2, 802, 806, 3, 2, 2, 2, 803, 806, 5, 136, 69, 2, 804, 806, 5, 134, 68, 2, 805, 800, 3, 2, 2, 2, 805, 803, 3, 2, 2, 2, 805, 804, 3, 2, 2, 2, 806, 131, 3, 2, 2, 2, 807, 809, 5, 14, 8, 2, 808, 807, 3, 2, 2, 2, 809, 812, 3, 2, 2, 2, 810, 808, 3, 2, 2, 2, 810, 811, 3, 2, 2, 2, 811, 813, 3, 2, 2, 2, 812, 810, 3, 2, 2, 2, 813, 814, 5, 198, 100, 2, 814, 815, 5, 70, 36, 2, 815, 133, 3, 2, 2, 2, 816, 818, 5, 12, 7, 2, 817, 816, 3, 2, 2, 2, 818, 821, 3, 2, 2, 2, 819, 817, 3, 2, 2, 2, 819, 820, 3, 2, 2, 2, 820, 824, 3, 2, 2, 2, 821, 819, 3, 2, 2, 2, 822, 825, 5, 16, 9, 2, 823, 825, 5, 32, 17, 2, 824, 822, 3, 2, 2, 2, 824, 823, 3, 2, 2, 2, 825, 828, 3, 2, 2, 2, 826, 828, 7, 69, 2, 2, 827, 819, 3, 2, 2, 2, 827, 826, 3, 2, 2, 2, 828, 135, 3, 2, 2, 2, 829, 934, 5, 128, 65, 2, 830, 831, 7, 4, 2, 2, 831, 834, 5, 166, 84, 2, 832, 833, 7, 78, 2, 2, 833, 835, 5, 166, 84, 2, 834, 832, 3, 2, 2, 2, 834, 835, 3, 2, 2, 2, 835, 836, 3, 2, 2, 2, 836, 837, 7, 69, 2, 2, 837, 934, 3, 2, 2, 2, 838, 839, 7, 24, 2, 2, 839, 840, 5, 160, 81, 2, 840, 843, 5, 136, 69, 2, 841, 842, 7, 17, 2, 2, 842, 844, 5, 136, 69, 2, 843, 841, 3, 2, 2, 2, 843, 844, 3, 2, 2, 2, 844, 934, 3, 2, 2, 2, 845, 846, 7, 23, 2, 2, 846, 847, 7, 63, 2, 2, 847, 848, 5, 154, 78, 2, 848, 849, 7, 64, 2, 2, 849, 850, 5, 136, 69, 2, 850, 934, 3, 2, 2, 2, 851, 852, 7, 52, 2, 2, 852, 853, 5, 160, 81, 2, 853, 854, 5, 136, 69, 2, 854, 934, 3, 2, 2, 2, 855, 856, 7, 15, 2, 2, 856, 857, 5, 136, 69, 2, 857, 858, 7, 52, 2, 2, 858, 859, 5, 160, 81, 2, 859, 860, 7, 69, 2, 2, 860, 934, 3, 2, 2, 2, 861, 862, 7, 49, 2, 2, 862, 872, 5, 128, 65, 2, 863, 865, 5, 138, 70, 2, 864, 863, 3, 2, 2, 2, 865, 866, 3, 2, 2, 2, 866, 864, 3, 2, 2, 2, 866, 867, 3, 2, 2, 2, 867, 869, 3, 2, 2, 2, 868, 870, 5, 142, 72, 2, 869, 868, 3, 2, 2, 2, 869, 870, 3, 2, 2, 2, 870, 873, 3, 2, 2, 2, 871, 873, 5, 142, 72, 2, 872, 864, 3, 2, 2, 2, 872, 871, 3, 2, 2, 2, 873, 934, 3, 2, 2, 2, 874, 875, 7, 49, 2, 2, 875, 876, 5, 144, 73, 2, 876, 880, 5, 128, 65, 2, 877, 879, 5, 138, 70, 2, 878, 877, 3, 2, 2, 2, 879, 882, 3, 2, 2, 2, 880, 878, 3, 2, 2, 2, 880, 881, 3, 2, 2, 2, 881, 884, 3, 2, 2, 2, 882, 880, 3, 2, 2, 2, 883, 885, 5, 142, 72, 2, 884, 883, 3, 2, 2, 2, 884, 885, 3, 2, 2, 2, 885, 934, 3, 2, 2, 2, 886, 887, 7, 43, 2, 2, 887, 888, 5, 160, 81, 2, 888, 892, 7, 65, 2, 2, 889, 891, 5, 150, 76, 2, 890, 889, 3, 2, 2, 2, 891, 894, 3, 2, 2, 2, 892, 890, 3, 2, 2, 2, 892, 893, 3, 2, 2, 2, 893, 898, 3, 2, 2, 2, 894, 892, 3, 2, 2, 2, 895, 897, 5, 152, 77, 2, 896, 895, 3, 2, 2, 2, 897, 900, 3, 2, 2, 2, 898, 896, 3, 2, 2, 2, 898, 899, 3, 2, 2, 2, 899, 901, 3, 2, 2, 2, 900, 898, 3, 2, 2, 2, 901, 902, 7, 66, 2, 2, 902, 934, 3, 2, 2, 2, 903, 904, 7, 44, 2, 2, 904, 905, 5, 160, 81, 2, 905, 906, 5, 128, 65, 2, 906, 934, 3, 2, 2, 2, 907, 909, 7, 38, 2, 2, 908, 910, 5, 166, 84, 2, 909, 908, 3, 2, 2, 2, 909, 910, 3, 2, 2, 2, 910, 911, 3, 2, 2, 2, 911, 934, 7, 69, 2, 2, 912, 913, 7, 46, 2, 2, 913, 914, 5, 166, 84, 2, 914, 915, 7, 69, 2, 2, 915, 934, 3, 2, 2, 2, 916, 918, 7, 6, 2, 2, 917, 919, 7, 113, 2, 2, 918, 917, 3, 2, 2, 2, 918, 919, 3, 2, 2, 2, 919, 920, 3, 2, 2, 2, 920, 934, 7, 69, 2, 2, 921, 923, 7, 13, 2, 2, 922, 924, 7, 113, 2, 2, 923, 922, 3, 2, 2, 2, 923, 924, 3, 2, 2, 2, 924, 925, 3, 2, 2, 2, 925, 934, 7, 69, 2, 2, 926, 934, 7, 69, 2, 2, 927, 928, 5, 166, 84, 2, 928, 929, 7, 69, 2, 2, 929, 934, 3, 2, 2, 2, 930, 931, 7, 113, 2, 2, 931, 932, 7, 78, 2, 2, 932, 934, 5, 136, 69, 2, 933, 829, 3, 2, 2, 2, 933, 830, 3, 2, 2, 2, 933, 838, 3, 2, 2, 2, 933, 845, 3, 2, 2, 2, 933, 851, 3, 2, 2, 2, 933, 855, 3, 2, 2, 2, 933, 861, 3, 2, 2, 2, 933, 874, 3, 2, 2, 2, 933, 886, 3, 2, 2, 2, 933, 903, 3, 2, 2, 2, 933, 907, 3, 2, 2, 2, 933, 912, 3, 2, 2, 2, 933, 916, 3, 2, 2, 2, 933, 921, 3, 2, 2, 2, 933, 926, 3, 2, 2, 2, 933, 927, 3, 2, 2, 2, 933, 930, 3, 2, 2, 2, 934, 137, 3, 2, 2, 2, 935, 936, 7, 9, 2, 2, 936, 940, 7, 63, 2, 2, 937, 939, 5, 14, 8, 2, 938, 937, 3, 2, 2, 2, 939, 942, 3, 2, 2, 2, 940, 938, 3, 2, 2, 2, 940, 941, 3, 2, 2, 2, 941, 943, 3, 2, 2, 2, 942, 940, 3, 2, 2, 2, 943, 944, 5, 140, 71, 2, 944, 945, 7, 113, 2, 2, 945, 946, 7, 64, 2, 2, 946, 947, 5, 128, 65, 2, 947, 139, 3, 2, 2, 2, 948, 953, 5, 94, 48, 2, 949, 950, 7, 92, 2, 2, 950, 952, 5, 94, 48, 2, 951, 949, 3, 2, 2, 2, 952, 955, 3, 2, 2, 2, 953, 951, 3, 2, 2, 2, 953, 954, 3, 2, 2, 2, 954, 141, 3, 2, 2, 2, 955, 953, 3, 2, 2, 2, 956, 957, 7, 21, 2, 2, 957, 958, 5, 128, 65, 2, 958, 143, 3, 2, 2, 2, 959, 960, 7, 63, 2, 2, 960, 962, 5, 146, 74, 2, 961, 963, 7, 69, 2, 2, 962, 961, 3, 2, 2, 2, 962, 963, 3, 2, 2, 2, 963, 964, 3, 2, 2, 2, 964, 965, 7, 64, 2, 2, 965, 145, 3, 2, 2, 2, 966, 971, 5, 148, 75, 2, 967, 968, 7, 69, 2, 2, 968, 970, 5, 148, 75, 2, 969, 967, 3, 2, 2, 2, 970, 973, 3, 2, 2, 2, 971, 969, 3, 2, 2, 2, 971, 972, 3, 2, 2, 2, 972, 147, 3, 2, 2, 2, 973, 971, 3, 2, 2, 2, 974, 976, 5, 14, 8, 2, 975, 974, 3, 2, 2, 2, 976, 979, 3, 2, 2, 2, 977, 975, 3, 2, 2, 2, 977, 978, 3, 2, 2, 2, 978, 980, 3, 2, 2, 2, 979, 977, 3, 2, 2, 2, 980, 981, 5, 80, 41, 2, 981, 982, 5, 74, 38, 2, 982, 983, 7, 72, 2, 2, 983, 984, 5, 166, 84, 2, 984, 149, 3, 2, 2, 2, 985, 987, 5, 152, 77, 2, 986, 985, 3, 2, 2, 2, 987, 988, 3, 2, 2, 2, 988, 986, 3, 2, 2, 2, 988, 989, 3, 2, 2, 2, 989, 991, 3, 2, 2, 2, 990, 992, 5, 130, 66, 2, 991, 990, 3, 2, 2, 2, 992, 993, 3, 2, 2, 2, 993, 991, 3, 2, 2, 2, 993, 994, 3, 2, 2, 2, 994, 151, 3, 2, 2, 2, 995, 998, 7, 8, 2, 2, 996, 999, 5, 166, 84, 2, 997, 999, 7, 113, 2, 2, 998, 996, 3, 2, 2, 2, 998, 997, 3, 2, 2, 2, 999, 1000, 3, 2, 2, 2, 1000, 1004, 7, 78, 2, 2, 1001, 1002, 7, 14, 2, 2, 1002, 1004, 7, 78, 2, 2, 1003, 995, 3, 2, 2, 2, 1003, 1001, 3, 2, 2, 2, 1004, 153, 3, 2, 2, 2, 1005, 1018, 5, 158, 80, 2, 1006, 1008, 5, 156, 79, 2, 1007, 1006, 3, 2, 2, 2, 1007, 1008, 3, 2, 2, 2, 1008, 1009, 3, 2, 2, 2, 1009, 1011, 7, 69, 2, 2, 1010, 1012, 5, 166, 84, 2, 1011, 1010, 3, 2, 2, 2, 1011, 1012, 3, 2, 2, 2, 1012, 1013, 3, 2, 2, 2, 1013, 1015, 7, 69, 2, 2, 1014, 1016, 5, 162, 82, 2, 1015, 1014, 3, 2, 2, 2, 1015, 1016, 3, 2, 2, 2, 1016, 1018, 3, 2, 2, 2, 1017, 1005, 3, 2, 2, 2, 1017, 1007, 3, 2, 2, 2, 1018, 155, 3, 2, 2, 2, 1019, 1022, 5, 132, 67, 2, 1020, 1022, 5, 162, 82, 2, 1021, 1019, 3, 2, 2, 2, 1021, 1020, 3, 2, 2, 2, 1022, 157, 3, 2, 2, 2, 1023, 1025, 5, 14, 8, 2, 1024, 1023, 3, 2, 2, 2, 1025, 1028, 3, 2, 2, 2, 1026, 1024, 3, 2, 2, 2, 1026, 1027, 3, 2, 2, 2, 1027, 1029, 3, 2, 2, 2, 1028, 1026, 3, 2, 2, 2, 1029, 1030, 5, 198, 100, 2, 1030, 1031, 5, 74, 38, 2, 1031, 1032, 7, 78, 2, 2, 1032, 1033, 5, 166, 84, 2, 1033, 159, 3, 2, 2, 2, 1034, 1035, 7, 63, 2, 2, 1035, 1036, 5, 166, 84, 2, 1036, 1037, 7, 64, 2, 2, 1037, 161, 3, 2, 2, 2, 1038, 1043, 5, 166, 84, 2, 1039, 1040, 7, 70, 2, 2, 1040, 1042, 5, 166, 84, 2, 1041, 1039, 3, 2, 2, 2, 1042, 1045, 3, 2, 2, 2, 1043, 1041, 3, 2, 2, 2, 1043, 1044, 3, 2, 2, 2, 1044, 163, 3, 2, 2, 2, 1045, 1043, 3, 2, 2, 2, 1046, 1047, 7, 113, 2, 2, 1047, 1049, 7, 63, 2, 2, 1048, 1050, 5, 162, 82, 2, 1049, 1048, 3, 2, 2, 2, 1049, 1050, 3, 2, 2, 2, 1050, 1051, 3, 2, 2, 2, 1051, 1065, 7, 64, 2, 2, 1052, 1053, 7, 45, 2, 2, 1053, 1055, 7, 63, 2, 2, 1054, 1056, 5, 162, 82, 2, 1055, 1054, 3, 2, 2, 2, 1055, 1056, 3, 2, 2, 2, 1056, 1057, 3, 2, 2, 2, 1057, 1065, 7, 64, 2, 2, 1058, 1059, 7, 42, 2, 2, 1059, 1061, 7, 63, 2, 2, 1060, 1062, 5, 162, 82, 2, 1061, 1060, 3, 2, 2, 2, 1061, 1062, 3, 2, 2, 2, 1062, 1063, 3, 2, 2, 2, 1063, 1065, 7, 64, 2, 2, 1064, 1046, 3, 2, 2, 2, 1064, 1052, 3, 2, 2, 2, 1064, 1058, 3, 2, 2, 2, 1065, 165, 3, 2, 2, 2, 1066, 1067, 8, 84, 1, 2, 1067, 1098, 5, 174, 88, 2, 1068, 1098, 5, 164, 83, 2, 1069, 1070, 7, 33, 2, 2, 1070, 1098, 5, 178, 90, 2, 1071, 1072, 7, 63, 2, 2, 1072, 1073, 5, 198, 100, 2, 1073, 1074, 7, 64, 2, 2, 1074, 1075, 5, 166, 84, 23, 1075, 1098, 3, 2, 2, 2, 1076, 1077, 9, 5, 2, 2, 1077, 1098, 5, 166, 84, 21, 1078, 1079, 9, 6, 2, 2, 1079, 1098, 5, 166, 84, 20, 1080, 1098, 5, 168, 85, 2, 1081, 1082, 5, 198, 100, 2, 1082, 1088, 7, 107, 2, 2, 1083, 1085, 5, 202, 102, 2, 1084, 1083, 3, 2, 2, 2, 1084, 1085, 3, 2, 2, 2, 1085, 1086, 3, 2, 2, 2, 1086, 1089, 7, 113, 2, 2, 1087, 1089, 7, 33, 2, 2, 1088, 1084, 3, 2, 2, 2, 1088, 1087, 3, 2, 2, 2, 1089, 1098, 3, 2, 2, 2, 1090, 1091, 5, 176, 89, 2, 1091, 1093, 7, 107, 2, 2, 1092, 1094, 5, 202, 102, 2, 1093, 1092, 3, 2, 2, 2, 1093, 1094, 3, 2, 2, 2, 1094, 1095, 3, 2, 2, 2, 1095, 1096, 7, 33, 2, 2, 1096, 1098, 3, 2, 2, 2, 1097, 1066, 3, 2, 2, 2, 1097, 1068, 3, 2, 2, 2, 1097, 1069, 3, 2, 2, 2, 1097, 1071, 3, 2, 2, 2, 1097, 1076, 3, 2, 2, 2, 1097, 1078, 3, 2, 2, 2, 1097, 1080, 3, 2, 2, 2, 1097, 1081, 3, 2, 2, 2, 1097, 1090, 3, 2, 2, 2, 1098, 1179, 3, 2, 2, 2, 1099, 1100, 12, 19, 2, 2, 1100, 1101, 9, 7, 2, 2, 1101, 1178, 5, 166, 84, 20, 1102, 1103, 12, 18, 2, 2, 1103, 1104, 9, 8, 2, 2, 1104, 1178, 5, 166, 84, 19, 1105, 1113, 12, 17, 2, 2, 1106, 1107, 7, 74, 2, 2, 1107, 1114, 7, 74, 2, 2, 1108, 1109, 7, 73, 2, 2, 1109, 1110, 7, 73, 2, 2, 1110, 1114, 7, 73, 2, 2, 1111, 1112, 7, 73, 2, 2, 1112, 1114, 7, 73, 2, 2, 1113, 1106, 3, 2, 2, 2, 1113, 1108, 3, 2, 2, 2, 1113, 1111, 3, 2, 2, 2, 1114, 1115, 3, 2, 2, 2, 1115, 1178, 5, 166, 84, 18, 1116, 1117, 12, 16, 2, 2, 1117, 1118, 9, 9, 2, 2, 1118, 1178, 5, 166, 84, 17, 1119, 1120, 12, 14, 2, 2, 1120, 1121, 9, 10, 2, 2, 1121, 1178, 5, 166, 84, 15, 1122, 1123, 12, 13, 2, 2, 1123, 1124, 7, 91, 2, 2, 1124, 1178, 5, 166, 84, 14, 1125, 1126, 12, 12, 2, 2, 1126, 1127, 7, 93, 2, 2, 1127, 1178, 5, 166, 84, 13, 1128, 1129, 12, 11, 2, 2, 1129, 1130, 7, 92, 2, 2, 1130, 1178, 5, 166, 84, 12, 1131, 1132, 12, 10, 2, 2, 1132, 1133, 7, 83, 2, 2, 1133, 1178, 5, 166, 84, 11, 1134, 1135, 12, 9, 2, 2, 1135, 1136, 7, 84, 2, 2, 1136, 1178, 5, 166, 84, 10, 1137, 1138, 12, 8, 2, 2, 1138, 1139, 7, 77, 2, 2, 1139, 1140, 5, 166, 84, 2, 1140, 1141, 7, 78, 2, 2, 1141, 1142, 5, 166, 84, 9, 1142, 1178, 3, 2, 2, 2, 1143, 1144, 12, 7, 2, 2, 1144, 1145, 9, 11, 2, 2, 1145, 1178, 5, 166, 84, 7, 1146, 1147, 12, 27, 2, 2, 1147, 1159, 7, 71, 2, 2, 1148, 1160, 7, 113, 2, 2, 1149, 1160, 5, 164, 83, 2, 1150, 1160, 7, 45, 2, 2, 1151, 1153, 7, 33, 2, 2, 1152, 1154, 5, 194, 98, 2, 1153, 1152, 3, 2, 2, 2, 1153, 1154, 3, 2, 2, 2, 1154, 1155, 3, 2, 2, 2, 1155, 1160, 5, 182, 92, 2, 1156, 1157, 7, 42, 2, 2, 1157, 1160, 5, 204, 103, 2, 1158, 1160, 5, 188, 95, 2, 1159, 1148, 3, 2, 2, 2, 1159, 1149, 3, 2, 2, 2, 1159, 1150, 3, 2, 2, 2, 1159, 1151, 3, 2, 2, 2, 1159, 1156, 3, 2, 2, 2, 1159, 1158, 3, 2, 2, 2, 1160, 1178, 3, 2, 2, 2, 1161, 1162, 12, 26, 2, 2, 1162, 1163, 7, 67, 2, 2, 1163, 1164, 5, 166, 84, 2, 1164, 1165, 7, 68, 2, 2, 1165, 1178, 3, 2, 2, 2, 1166, 1167, 12, 22, 2, 2, 1167, 1178, 9, 12, 2, 2, 1168, 1169, 12, 15, 2, 2, 1169, 1170, 7, 28, 2, 2, 1170, 1178, 5, 198, 100, 2, 1171, 1172, 12, 5, 2, 2, 1172, 1174, 7, 107, 2, 2, 1173, 1175, 5, 202, 102, 2, 1174, 1173, 3, 2, 2, 2, 1174, 1175, 3, 2, 2, 2, 1175, 1176, 3, 2, 2, 2, 1176, 1178, 7, 113, 2, 2, 1177, 1099, 3, 2, 2, 2, 1177, 1102, 3, 2, 2, 2, 1177, 1105, 3, 2, 2, 2, 1177, 1116, 3, 2, 2, 2, 1177, 1119, 3, 2, 2, 2, 1177, 1122, 3, 2, 2, 2, 1177, 1125, 3, 2, 2, 2, 1177, 1128, 3, 2, 2, 2, 1177, 1131, 3, 2, 2, 2, 1177, 1134, 3, 2, 2, 2, 1177, 1137, 3, 2, 2, 2, 1177, 1143, 3, 2, 2, 2, 1177, 1146, 3, 2, 2, 2, 1177, 1161, 3, 2, 2, 2, 1177, 1166, 3, 2, 2, 2, 1177, 1168, 3, 2, 2, 2, 1177, 1171, 3, 2, 2, 2, 1178, 1181, 3, 2, 2, 2, 1179, 1177, 3, 2, 2, 2, 1179, 1180, 3, 2, 2, 2, 1180, 167, 3, 2, 2, 2, 1181, 1179, 3, 2, 2, 2, 1182, 1183, 5, 170, 86, 2, 1183, 1184, 7, 106, 2, 2, 1184, 1185, 5, 172, 87, 2, 1185, 169, 3, 2, 2, 2, 1186, 1203, 7, 113, 2, 2, 1187, 1189, 7, 63, 2, 2, 1188, 1190, 5, 88, 45, 2, 1189, 1188, 3, 2, 2, 2, 1189, 1190, 3, 2, 2, 2, 1190, 1191, 3, 2, 2, 2, 1191, 1203, 7, 64, 2, 2, 1192, 1193, 7, 63, 2, 2, 1193, 1198, 7, 113, 2, 2, 1194, 1195, 7, 70, 2, 2, 1195, 1197, 7, 113, 2, 2, 1196, 1194, 3, 2, 2, 2, 1197, 1200, 3, 2, 2, 2, 1198, 1196, 3, 2, 2, 2, 1198, 1199, 3, 2, 2, 2, 1199, 1201, 3, 2, 2, 2, 1200, 1198, 3, 2, 2, 2, 1201, 1203, 7, 64, 2, 2, 1202, 1186, 3, 2, 2, 2, 1202, 1187, 3, 2, 2, 2, 1202, 1192, 3, 2, 2, 2, 1203, 171, 3, 2, 2, 2, 1204, 1207, 5, 166, 84, 2, 1205, 1207, 5, 128, 65, 2, 1206, 1204, 3, 2, 2, 2, 1206, 1205, 3, 2, 2, 2, 1207, 173, 3, 2, 2, 2, 1208, 1209, 7, 63, 2, 2, 1209, 1210, 5, 166, 84, 2, 1210, 1211, 7, 64, 2, 2, 1211, 1227, 3, 2, 2, 2, 1212, 1227, 7, 45, 2, 2, 1213, 1227, 7, 42, 2, 2, 1214, 1227, 5, 96, 49, 2, 1215, 1227, 7, 113, 2, 2, 1216, 1217, 5, 46, 24, 2, 1217, 1218, 7, 71, 2, 2, 1218, 1219, 7, 11, 2, 2, 1219, 1227, 3, 2, 2, 2, 1220, 1224, 5, 194, 98, 2, 1221, 1225, 5, 206, 104, 2, 1222, 1223, 7, 45, 2, 2, 1223, 1225, 5, 208, 105, 2, 1224, 1221, 3, 2, 2, 2, 1224, 1222, 3, 2, 2, 2, 1225, 1227, 3, 2, 2, 2, 1226, 1208, 3, 2, 2, 2, 1226, 1212, 3, 2, 2, 2, 1226, 1213, 3, 2, 2, 2, 1226, 1214, 3, 2, 2, 2, 1226, 1215, 3, 2, 2, 2, 1226, 1216, 3, 2, 2, 2, 1226, 1220, 3, 2, 2, 2, 1227, 175, 3, 2, 2, 2, 1228, 1229, 5, 80, 41, 2, 1229, 1230, 7, 71, 2, 2, 1230, 1232, 3, 2, 2, 2, 1231, 1228, 3, 2, 2, 2, 1231, 1232, 3, 2, 2, 2, 1232, 1236, 3, 2, 2, 2, 1233, 1235, 5, 102, 52, 2, 1234, 1233, 3, 2, 2, 2, 1235, 1238, 3, 2, 2, 2, 1236, 1234, 3, 2, 2, 2, 1236, 1237, 3, 2, 2, 2, 1237, 1239, 3, 2, 2, 2, 1238, 1236, 3, 2, 2, 2, 1239, 1241, 7, 113, 2, 2, 1240, 1242, 5, 202, 102, 2, 1241, 1240, 3, 2, 2, 2, 1241, 1242, 3, 2, 2, 2, 1242, 177, 3, 2, 2, 2, 1243, 1244, 5, 194, 98, 2, 1244, 1245, 5, 180, 91, 2, 1245, 1246, 5, 186, 94, 2, 1246, 1253, 3, 2, 2, 2, 1247, 1250, 5, 180, 91, 2, 1248, 1251, 5, 184, 93, 2, 1249, 1251, 5, 186, 94, 2, 1250, 1248, 3, 2, 2, 2, 1250, 1249, 3, 2, 2, 2, 1251, 1253, 3, 2, 2, 2, 1252, 1243, 3, 2, 2, 2, 1252, 1247, 3, 2, 2, 2, 1253, 179, 3, 2, 2, 2, 1254, 1256, 7, 113, 2, 2, 1255, 1257, 5, 190, 96, 2, 1256, 1255, 3, 2, 2, 2, 1256, 1257, 3, 2, 2, 2, 1257, 1265, 3, 2, 2, 2, 1258, 1259, 7, 71, 2, 2, 1259, 1261, 7, 113, 2, 2, 1260, 1262, 5, 190, 96, 2, 1261, 1260, 3, 2, 2, 2, 1261, 1262, 3, 2, 2, 2, 1262, 1264, 3, 2, 2, 2, 1263, 1258, 3, 2, 2, 2, 1264, 1267, 3, 2, 2, 2, 1265, 1263, 3, 2, 2, 2, 1265, 1266, 3, 2, 2, 2, 1266, 1270, 3, 2, 2, 2, 1267, 1265, 3, 2, 2, 2, 1268, 1270, 5, 200, 101, 2, 1269, 1254, 3, 2, 2, 2, 1269, 1268, 3, 2, 2, 2, 1270, 181, 3, 2, 2, 2, 1271, 1273, 7, 113, 2, 2, 1272, 1274, 5, 192, 97, 2, 1273, 1272, 3, 2, 2, 2, 1273, 1274, 3, 2, 2, 2, 1274, 1275, 3, 2, 2, 2, 1275, 1276, 5, 186, 94, 2, 1276, 183, 3, 2, 2, 2, 1277, 1305, 7, 67, 2, 2, 1278, 1283, 7, 68, 2, 2, 1279, 1280, 7, 67, 2, 2, 1280, 1282, 7, 68, 2, 2, 1281, 1279, 3, 2, 2, 2, 1282, 1285, 3, 2, 2, 2, 1283, 1281, 3, 2, 2, 2, 1283, 1284, 3, 2, 2, 2, 1284, 1286, 3, 2, 2, 2, 1285, 1283, 3, 2, 2, 2, 1286, 1306, 5, 78, 40, 2, 1287, 1288, 5, 166, 84, 2, 1288, 1295, 7, 68, 2, 2, 1289, 1290, 7, 67, 2, 2, 1290, 1291, 5, 166, 84, 2, 1291, 1292, 7, 68, 2, 2, 1292, 1294, 3, 2, 2, 2, 1293, 1289, 3, 2, 2, 2, 1294, 1297, 3, 2, 2, 2, 1295, 1293, 3, 2, 2, 2, 1295, 1296, 3, 2, 2, 2, 1296, 1302, 3, 2, 2, 2, 1297, 1295, 3, 2, 2, 2, 1298, 1299, 7, 67, 2, 2, 1299, 1301, 7, 68, 2, 2, 1300, 1298, 3, 2, 2, 2, 1301, 1304, 3, 2, 2, 2, 1302, 1300, 3, 2, 2, 2, 1302, 1303, 3, 2, 2, 2, 1303, 1306, 3, 2, 2, 2, 1304, 1302, 3, 2, 2, 2, 1305, 1278, 3, 2, 2, 2, 1305, 1287, 3, 2, 2, 2, 1306, 185, 3, 2, 2, 2, 1307, 1309, 5, 208, 105, 2, 1308, 1310, 5, 34, 18, 2, 1309, 1308, 3, 2, 2, 2, 1309, 1310, 3, 2, 2, 2, 1310, 187, 3, 2, 2, 2, 1311, 1312, 5, 194, 98, 2, 1312, 1313, 5, 206, 104, 2, 1313, 189, 3, 2, 2, 2, 1314, 1315, 7, 74, 2, 2, 1315, 1318, 7, 73, 2, 2, 1316, 1318, 5, 202, 102, 2, 1317, 1314, 3, 2, 2, 2, 1317, 1316, 3, 2, 2, 2, 1318, 191, 3, 2, 2, 2, 1319, 1320, 7, 74, 2, 2, 1320, 1323, 7, 73, 2, 2, 1321, 1323, 5, 194, 98, 2, 1322, 1319, 3, 2, 2, 2, 1322, 1321, 3, 2, 2, 2, 1323, 193, 3, 2, 2, 2, 1324, 1325, 7, 74, 2, 2, 1325, 1326, 5, 196, 99, 2, 1326, 1327, 7, 73, 2, 2, 1327, 195, 3, 2, 2, 2, 1328, 1333, 5, 198, 100, 2, 1329, 1330, 7, 70, 2, 2, 1330, 1332, 5, 198, 100, 2, 1331, 1329, 3, 2, 2, 2, 1332, 1335, 3, 2, 2, 2, 1333, 1331, 3, 2, 2, 2, 1333, 1334, 3, 2, 2, 2, 1334, 197, 3, 2, 2, 2, 1335, 1333, 3, 2, 2, 2, 1336, 1338, 5, 102, 52, 2, 1337, 1336, 3, 2, 2, 2, 1337, 1338, 3, 2, 2, 2, 1338, 1341, 3, 2, 2, 2, 1339, 1342, 5, 80, 41, 2, 1340, 1342, 5, 200, 101, 2, 1341, 1339, 3, 2, 2, 2, 1341, 1340, 3, 2, 2, 2, 1342, 1347, 3, 2, 2, 2, 1343, 1344, 7, 67, 2, 2, 1344, 1346, 7, 68, 2, 2, 1345, 1343, 3, 2, 2, 2, 1346, 1349, 3, 2, 2, 2, 1347, 1345, 3, 2, 2, 2, 1347, 1348, 3, 2, 2, 2, 1348, 199, 3, 2, 2, 2, 1349, 1347, 3, 2, 2, 2, 1350, 1351, 9, 13, 2, 2, 1351, 201, 3, 2, 2, 2, 1352, 1353, 7, 74, 2, 2, 1353, 1358, 5, 82, 42, 2, 1354, 1355, 7, 70, 2, 2, 1355, 1357, 5, 82, 42, 2, 1356, 1354, 3, 2, 2, 2, 1357, 1360, 3, 2, 2, 2, 1358, 1356, 3, 2, 2, 2, 1358, 1359, 3, 2, 2, 2, 1359, 1361, 3, 2, 2, 2, 1360, 1358, 3, 2, 2, 2, 1361, 1362, 7, 73, 2, 2, 1362, 203, 3, 2, 2, 2, 1363, 1370, 5, 208, 105, 2, 1364, 1365, 7, 71, 2, 2, 1365, 1367, 7, 113, 2, 2, 1366, 1368, 5, 208, 105, 2, 1367, 1366, 3, 2, 2, 2, 1367, 1368, 3, 2, 2, 2, 1368, 1370, 3, 2, 2, 2, 1369, 1363, 3, 2, 2, 2, 1369, 1364, 3, 2, 2, 2, 1370, 205, 3, 2, 2, 2, 1371, 1372, 7, 42, 2, 2, 1372, 1376, 5, 204, 103, 2, 1373, 1374, 7, 113, 2, 2, 1374, 1376, 5, 208, 105, 2, 1375, 1371, 3, 2, 2, 2, 1375, 1373, 3, 2, 2, 2, 1376, 207, 3, 2, 2, 2, 1377, 1379, 7, 63, 2, 2, 1378, 1380, 5, 162, 82, 2, 1379, 1378, 3, 2, 2, 2, 1379, 1380, 3, 2, 2, 2, 1380, 1381, 3, 2, 2, 2, 1381, 1382, 7, 64, 2, 2, 1382, 209, 3, 2, 2, 2, 173, 211, 216, 222, 230, 239, 244, 251, 258, 261, 268, 278, 282, 287, 291, 295, 305, 313, 319, 326, 333, 337, 340, 343, 352, 358, 363, 366, 372, 378, 382, 390, 399, 406, 412, 416, 427, 436, 441, 447, 451, 463, 474, 479, 488, 496, 506, 515, 523, 528, 536, 541, 551, 561, 567, 574, 579, 587, 591, 593, 599, 604, 608, 615, 617, 624, 629, 638, 643, 646, 651, 660, 672, 681, 692, 695, 702, 712, 720, 723, 726, 739, 747, 752, 760, 764, 768, 772, 774, 778, 784, 795, 805, 810, 819, 824, 827, 834, 843, 866, 869, 872, 880, 884, 892, 898, 909, 918, 923, 933, 940, 953, 962, 971, 977, 988, 993, 998, 1003, 1007, 1011, 1015, 1017, 1021, 1026, 1043, 1049, 1055, 1061, 1064, 1084, 1088, 1093, 1097, 1113, 1153, 1159, 1174, 1177, 1179, 1189, 1198, 1202, 1206, 1224, 1226, 1231, 1236, 1241, 1250, 1252, 1256, 1261, 1265, 1269, 1273, 1283, 1295, 1302, 1305, 1309, 1317, 1322, 1333, 1337, 1341, 1347, 1358, 1367, 1369, 1375, 1379] \ No newline at end of file diff --git a/persper/parser/java/JavaParser.py b/persper/parser/java/JavaParser.py deleted file mode 100644 index 80be2c48202..00000000000 --- a/persper/parser/java/JavaParser.py +++ /dev/null @@ -1,9150 +0,0 @@ -# Generated from JavaParser.g4 by ANTLR 4.7.1 -# encoding: utf-8 -from antlr4 import * -from io import StringIO -from typing.io import TextIO -import sys - -def serializedATN(): - with StringIO() as buf: - buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3q") - buf.write("\u0568\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7") - buf.write("\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r\4\16") - buf.write("\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23\t\23") - buf.write("\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31") - buf.write("\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36") - buf.write("\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t") - buf.write("&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.\t.\4") - buf.write("/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t\64") - buf.write("\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t") - buf.write(";\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\t") - buf.write("D\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4L\tL\4M\t") - buf.write("M\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT\4U\tU\4V\t") - buf.write("V\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4") - buf.write("_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4g\tg\4") - buf.write("h\th\4i\ti\3\2\5\2\u00d4\n\2\3\2\7\2\u00d7\n\2\f\2\16") - buf.write("\2\u00da\13\2\3\2\7\2\u00dd\n\2\f\2\16\2\u00e0\13\2\3") - buf.write("\2\3\2\3\3\7\3\u00e5\n\3\f\3\16\3\u00e8\13\3\3\3\3\3\3") - buf.write("\3\3\3\3\4\3\4\5\4\u00f0\n\4\3\4\3\4\3\4\5\4\u00f5\n\4") - buf.write("\3\4\3\4\3\5\7\5\u00fa\n\5\f\5\16\5\u00fd\13\5\3\5\3\5") - buf.write("\3\5\3\5\5\5\u0103\n\5\3\5\5\5\u0106\n\5\3\6\3\6\3\6\3") - buf.write("\6\3\6\5\6\u010d\n\6\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\5") - buf.write("\7\u0117\n\7\3\b\3\b\5\b\u011b\n\b\3\t\3\t\3\t\5\t\u0120") - buf.write("\n\t\3\t\3\t\5\t\u0124\n\t\3\t\3\t\5\t\u0128\n\t\3\t\3") - buf.write("\t\3\n\3\n\3\n\3\n\7\n\u0130\n\n\f\n\16\n\u0133\13\n\3") - buf.write("\n\3\n\3\13\7\13\u0138\n\13\f\13\16\13\u013b\13\13\3\13") - buf.write("\3\13\3\13\5\13\u0140\n\13\3\f\3\f\3\f\7\f\u0145\n\f\f") - buf.write("\f\16\f\u0148\13\f\3\r\3\r\3\r\3\r\5\r\u014e\n\r\3\r\3") - buf.write("\r\5\r\u0152\n\r\3\r\5\r\u0155\n\r\3\r\5\r\u0158\n\r\3") - buf.write("\r\3\r\3\16\3\16\3\16\7\16\u015f\n\16\f\16\16\16\u0162") - buf.write("\13\16\3\17\7\17\u0165\n\17\f\17\16\17\u0168\13\17\3\17") - buf.write("\3\17\5\17\u016c\n\17\3\17\5\17\u016f\n\17\3\20\3\20\7") - buf.write("\20\u0173\n\20\f\20\16\20\u0176\13\20\3\21\3\21\3\21\5") - buf.write("\21\u017b\n\21\3\21\3\21\5\21\u017f\n\21\3\21\3\21\3\22") - buf.write("\3\22\7\22\u0185\n\22\f\22\16\22\u0188\13\22\3\22\3\22") - buf.write("\3\23\3\23\7\23\u018e\n\23\f\23\16\23\u0191\13\23\3\23") - buf.write("\3\23\3\24\3\24\5\24\u0197\n\24\3\24\3\24\7\24\u019b\n") - buf.write("\24\f\24\16\24\u019e\13\24\3\24\5\24\u01a1\n\24\3\25\3") - buf.write("\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\5\25\u01ac\n\25") - buf.write("\3\26\3\26\3\26\3\26\3\26\7\26\u01b3\n\26\f\26\16\26\u01b6") - buf.write("\13\26\3\26\3\26\5\26\u01ba\n\26\3\26\3\26\3\27\3\27\5") - buf.write("\27\u01c0\n\27\3\30\3\30\5\30\u01c4\n\30\3\31\3\31\3\31") - buf.write("\3\32\3\32\3\32\3\33\3\33\3\33\3\33\5\33\u01d0\n\33\3") - buf.write("\33\3\33\3\34\3\34\3\34\3\34\3\35\7\35\u01d9\n\35\f\35") - buf.write("\16\35\u01dc\13\35\3\35\3\35\5\35\u01e0\n\35\3\36\3\36") - buf.write("\3\36\3\36\3\36\3\36\3\36\5\36\u01e9\n\36\3\37\3\37\3") - buf.write("\37\3\37\7\37\u01ef\n\37\f\37\16\37\u01f2\13\37\3\37\3") - buf.write("\37\3 \3 \3 \7 \u01f9\n \f \16 \u01fc\13 \3 \3 \3 \3!") - buf.write("\7!\u0202\n!\f!\16!\u0205\13!\3!\3!\3!\7!\u020a\n!\f!") - buf.write("\16!\u020d\13!\3!\3!\5!\u0211\n!\3!\3!\3!\3!\7!\u0217") - buf.write("\n!\f!\16!\u021a\13!\3!\3!\5!\u021e\n!\3!\3!\3\"\3\"\3") - buf.write("\"\3\"\3\"\3\"\5\"\u0228\n\"\3#\3#\3#\3$\3$\3$\7$\u0230") - buf.write("\n$\f$\16$\u0233\13$\3%\3%\3%\5%\u0238\n%\3&\3&\3&\7&") - buf.write("\u023d\n&\f&\16&\u0240\13&\3\'\3\'\5\'\u0244\n\'\3(\3") - buf.write("(\3(\3(\7(\u024a\n(\f(\16(\u024d\13(\3(\5(\u0250\n(\5") - buf.write("(\u0252\n(\3(\3(\3)\3)\5)\u0258\n)\3)\3)\3)\5)\u025d\n") - buf.write(")\7)\u025f\n)\f)\16)\u0262\13)\3*\3*\3*\3*\5*\u0268\n") - buf.write("*\5*\u026a\n*\3+\3+\3+\7+\u026f\n+\f+\16+\u0272\13+\3") - buf.write(",\3,\5,\u0276\n,\3,\3,\3-\3-\3-\7-\u027d\n-\f-\16-\u0280") - buf.write("\13-\3-\3-\5-\u0284\n-\3-\5-\u0287\n-\3.\7.\u028a\n.\f") - buf.write(".\16.\u028d\13.\3.\3.\3.\3/\7/\u0293\n/\f/\16/\u0296\13") - buf.write("/\3/\3/\3/\3/\3\60\3\60\3\60\7\60\u029f\n\60\f\60\16\60") - buf.write("\u02a2\13\60\3\61\3\61\3\61\3\61\3\61\3\61\5\61\u02aa") - buf.write("\n\61\3\62\3\62\3\63\3\63\3\64\3\64\3\64\3\64\3\64\5\64") - buf.write("\u02b5\n\64\3\64\5\64\u02b8\n\64\3\65\3\65\3\65\7\65\u02bd") - buf.write("\n\65\f\65\16\65\u02c0\13\65\3\66\3\66\3\66\3\66\3\67") - buf.write("\3\67\3\67\5\67\u02c9\n\67\38\38\38\38\78\u02cf\n8\f8") - buf.write("\168\u02d2\138\58\u02d4\n8\38\58\u02d7\n8\38\38\39\39") - buf.write("\39\39\39\3:\3:\7:\u02e2\n:\f:\16:\u02e5\13:\3:\3:\3;") - buf.write("\7;\u02ea\n;\f;\16;\u02ed\13;\3;\3;\5;\u02f1\n;\3<\3<") - buf.write("\3<\3<\3<\3<\5<\u02f9\n<\3<\3<\5<\u02fd\n<\3<\3<\5<\u0301") - buf.write("\n<\3<\3<\5<\u0305\n<\5<\u0307\n<\3=\3=\5=\u030b\n=\3") - buf.write(">\3>\3>\3>\5>\u0311\n>\3?\3?\3@\3@\3@\3A\3A\7A\u031a\n") - buf.write("A\fA\16A\u031d\13A\3A\3A\3B\3B\3B\3B\3B\5B\u0326\nB\3") - buf.write("C\7C\u0329\nC\fC\16C\u032c\13C\3C\3C\3C\3D\7D\u0332\n") - buf.write("D\fD\16D\u0335\13D\3D\3D\5D\u0339\nD\3D\5D\u033c\nD\3") - buf.write("E\3E\3E\3E\3E\5E\u0343\nE\3E\3E\3E\3E\3E\3E\3E\5E\u034c") - buf.write("\nE\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3") - buf.write("E\3E\3E\6E\u0361\nE\rE\16E\u0362\3E\5E\u0366\nE\3E\5E") - buf.write("\u0369\nE\3E\3E\3E\3E\7E\u036f\nE\fE\16E\u0372\13E\3E") - buf.write("\5E\u0375\nE\3E\3E\3E\3E\7E\u037b\nE\fE\16E\u037e\13E") - buf.write("\3E\7E\u0381\nE\fE\16E\u0384\13E\3E\3E\3E\3E\3E\3E\3E") - buf.write("\3E\5E\u038e\nE\3E\3E\3E\3E\3E\3E\3E\5E\u0397\nE\3E\3") - buf.write("E\3E\5E\u039c\nE\3E\3E\3E\3E\3E\3E\3E\3E\5E\u03a6\nE\3") - buf.write("F\3F\3F\7F\u03ab\nF\fF\16F\u03ae\13F\3F\3F\3F\3F\3F\3") - buf.write("G\3G\3G\7G\u03b8\nG\fG\16G\u03bb\13G\3H\3H\3H\3I\3I\3") - buf.write("I\5I\u03c3\nI\3I\3I\3J\3J\3J\7J\u03ca\nJ\fJ\16J\u03cd") - buf.write("\13J\3K\7K\u03d0\nK\fK\16K\u03d3\13K\3K\3K\3K\3K\3K\3") - buf.write("L\6L\u03db\nL\rL\16L\u03dc\3L\6L\u03e0\nL\rL\16L\u03e1") - buf.write("\3M\3M\3M\5M\u03e7\nM\3M\3M\3M\5M\u03ec\nM\3N\3N\5N\u03f0") - buf.write("\nN\3N\3N\5N\u03f4\nN\3N\3N\5N\u03f8\nN\5N\u03fa\nN\3") - buf.write("O\3O\5O\u03fe\nO\3P\7P\u0401\nP\fP\16P\u0404\13P\3P\3") - buf.write("P\3P\3P\3P\3Q\3Q\3Q\3Q\3R\3R\3R\7R\u0412\nR\fR\16R\u0415") - buf.write("\13R\3S\3S\3S\5S\u041a\nS\3S\3S\3S\3S\5S\u0420\nS\3S\3") - buf.write("S\3S\3S\5S\u0426\nS\3S\5S\u0429\nS\3T\3T\3T\3T\3T\3T\3") - buf.write("T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\5T\u043d\nT\3T\3T\5") - buf.write("T\u0441\nT\3T\3T\3T\5T\u0446\nT\3T\3T\5T\u044a\nT\3T\3") - buf.write("T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\5T\u045a\nT\3T\3") - buf.write("T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3") - buf.write("T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3T\3") - buf.write("T\5T\u0482\nT\3T\3T\3T\3T\5T\u0488\nT\3T\3T\3T\3T\3T\3") - buf.write("T\3T\3T\3T\3T\3T\3T\3T\5T\u0497\nT\3T\7T\u049a\nT\fT\16") - buf.write("T\u049d\13T\3U\3U\3U\3U\3V\3V\3V\5V\u04a6\nV\3V\3V\3V") - buf.write("\3V\3V\7V\u04ad\nV\fV\16V\u04b0\13V\3V\5V\u04b3\nV\3W") - buf.write("\3W\5W\u04b7\nW\3X\3X\3X\3X\3X\3X\3X\3X\3X\3X\3X\3X\3") - buf.write("X\3X\3X\3X\5X\u04c9\nX\5X\u04cb\nX\3Y\3Y\3Y\5Y\u04d0\n") - buf.write("Y\3Y\7Y\u04d3\nY\fY\16Y\u04d6\13Y\3Y\3Y\5Y\u04da\nY\3") - buf.write("Z\3Z\3Z\3Z\3Z\3Z\3Z\5Z\u04e3\nZ\5Z\u04e5\nZ\3[\3[\5[\u04e9") - buf.write("\n[\3[\3[\3[\5[\u04ee\n[\7[\u04f0\n[\f[\16[\u04f3\13[") - buf.write("\3[\5[\u04f6\n[\3\\\3\\\5\\\u04fa\n\\\3\\\3\\\3]\3]\3") - buf.write("]\3]\7]\u0502\n]\f]\16]\u0505\13]\3]\3]\3]\3]\3]\3]\3") - buf.write("]\7]\u050e\n]\f]\16]\u0511\13]\3]\3]\7]\u0515\n]\f]\16") - buf.write("]\u0518\13]\5]\u051a\n]\3^\3^\5^\u051e\n^\3_\3_\3_\3`") - buf.write("\3`\3`\5`\u0526\n`\3a\3a\3a\5a\u052b\na\3b\3b\3b\3b\3") - buf.write("c\3c\3c\7c\u0534\nc\fc\16c\u0537\13c\3d\5d\u053a\nd\3") - buf.write("d\3d\5d\u053e\nd\3d\3d\7d\u0542\nd\fd\16d\u0545\13d\3") - buf.write("e\3e\3f\3f\3f\3f\7f\u054d\nf\ff\16f\u0550\13f\3f\3f\3") - buf.write("g\3g\3g\3g\5g\u0558\ng\5g\u055a\ng\3h\3h\3h\3h\5h\u0560") - buf.write("\nh\3i\3i\5i\u0564\ni\3i\3i\3i\2\3\u00a6j\2\4\6\b\n\f") - buf.write("\16\20\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\668:<>@") - buf.write("BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086") - buf.write("\u0088\u008a\u008c\u008e\u0090\u0092\u0094\u0096\u0098") - buf.write("\u009a\u009c\u009e\u00a0\u00a2\u00a4\u00a6\u00a8\u00aa") - buf.write("\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6\u00b8\u00ba\u00bc") - buf.write("\u00be\u00c0\u00c2\u00c4\u00c6\u00c8\u00ca\u00cc\u00ce") - buf.write("\u00d0\2\16\4\2\23\23**\3\2\658\3\29:\3\2UX\3\2KL\4\2") - buf.write("YZ^^\3\2WX\4\2IJPQ\4\2OORR\4\2HH_i\3\2UV\n\2\5\5\7\7\n") - buf.write("\n\20\20\26\26\35\35\37\37\'\'\2\u0601\2\u00d3\3\2\2\2") - buf.write("\4\u00e6\3\2\2\2\6\u00ed\3\2\2\2\b\u0105\3\2\2\2\n\u010c") - buf.write("\3\2\2\2\f\u0116\3\2\2\2\16\u011a\3\2\2\2\20\u011c\3\2") - buf.write("\2\2\22\u012b\3\2\2\2\24\u0139\3\2\2\2\26\u0141\3\2\2") - buf.write("\2\30\u0149\3\2\2\2\32\u015b\3\2\2\2\34\u0166\3\2\2\2") - buf.write("\36\u0170\3\2\2\2 \u0177\3\2\2\2\"\u0182\3\2\2\2$\u018b") - buf.write("\3\2\2\2&\u01a0\3\2\2\2(\u01ab\3\2\2\2*\u01ad\3\2\2\2") - buf.write(",\u01bf\3\2\2\2.\u01c3\3\2\2\2\60\u01c5\3\2\2\2\62\u01c8") - buf.write("\3\2\2\2\64\u01cb\3\2\2\2\66\u01d3\3\2\2\28\u01df\3\2") - buf.write("\2\2:\u01e8\3\2\2\2<\u01ea\3\2\2\2>\u01f5\3\2\2\2@\u0203") - buf.write("\3\2\2\2B\u0227\3\2\2\2D\u0229\3\2\2\2F\u022c\3\2\2\2") - buf.write("H\u0234\3\2\2\2J\u0239\3\2\2\2L\u0243\3\2\2\2N\u0245\3") - buf.write("\2\2\2P\u0255\3\2\2\2R\u0269\3\2\2\2T\u026b\3\2\2\2V\u0273") - buf.write("\3\2\2\2X\u0286\3\2\2\2Z\u028b\3\2\2\2\\\u0294\3\2\2\2") - buf.write("^\u029b\3\2\2\2`\u02a9\3\2\2\2b\u02ab\3\2\2\2d\u02ad\3") - buf.write("\2\2\2f\u02af\3\2\2\2h\u02b9\3\2\2\2j\u02c1\3\2\2\2l\u02c8") - buf.write("\3\2\2\2n\u02ca\3\2\2\2p\u02da\3\2\2\2r\u02df\3\2\2\2") - buf.write("t\u02f0\3\2\2\2v\u0306\3\2\2\2x\u030a\3\2\2\2z\u030c\3") - buf.write("\2\2\2|\u0312\3\2\2\2~\u0314\3\2\2\2\u0080\u0317\3\2\2") - buf.write("\2\u0082\u0325\3\2\2\2\u0084\u032a\3\2\2\2\u0086\u033b") - buf.write("\3\2\2\2\u0088\u03a5\3\2\2\2\u008a\u03a7\3\2\2\2\u008c") - buf.write("\u03b4\3\2\2\2\u008e\u03bc\3\2\2\2\u0090\u03bf\3\2\2\2") - buf.write("\u0092\u03c6\3\2\2\2\u0094\u03d1\3\2\2\2\u0096\u03da\3") - buf.write("\2\2\2\u0098\u03eb\3\2\2\2\u009a\u03f9\3\2\2\2\u009c\u03fd") - buf.write("\3\2\2\2\u009e\u0402\3\2\2\2\u00a0\u040a\3\2\2\2\u00a2") - buf.write("\u040e\3\2\2\2\u00a4\u0428\3\2\2\2\u00a6\u0449\3\2\2\2") - buf.write("\u00a8\u049e\3\2\2\2\u00aa\u04b2\3\2\2\2\u00ac\u04b6\3") - buf.write("\2\2\2\u00ae\u04ca\3\2\2\2\u00b0\u04cf\3\2\2\2\u00b2\u04e4") - buf.write("\3\2\2\2\u00b4\u04f5\3\2\2\2\u00b6\u04f7\3\2\2\2\u00b8") - buf.write("\u04fd\3\2\2\2\u00ba\u051b\3\2\2\2\u00bc\u051f\3\2\2\2") - buf.write("\u00be\u0525\3\2\2\2\u00c0\u052a\3\2\2\2\u00c2\u052c\3") - buf.write("\2\2\2\u00c4\u0530\3\2\2\2\u00c6\u0539\3\2\2\2\u00c8\u0546") - buf.write("\3\2\2\2\u00ca\u0548\3\2\2\2\u00cc\u0559\3\2\2\2\u00ce") - buf.write("\u055f\3\2\2\2\u00d0\u0561\3\2\2\2\u00d2\u00d4\5\4\3\2") - buf.write("\u00d3\u00d2\3\2\2\2\u00d3\u00d4\3\2\2\2\u00d4\u00d8\3") - buf.write("\2\2\2\u00d5\u00d7\5\6\4\2\u00d6\u00d5\3\2\2\2\u00d7\u00da") - buf.write("\3\2\2\2\u00d8\u00d6\3\2\2\2\u00d8\u00d9\3\2\2\2\u00d9") - buf.write("\u00de\3\2\2\2\u00da\u00d8\3\2\2\2\u00db\u00dd\5\b\5\2") - buf.write("\u00dc\u00db\3\2\2\2\u00dd\u00e0\3\2\2\2\u00de\u00dc\3") - buf.write("\2\2\2\u00de\u00df\3\2\2\2\u00df\u00e1\3\2\2\2\u00e0\u00de") - buf.write("\3\2\2\2\u00e1\u00e2\7\2\2\3\u00e2\3\3\2\2\2\u00e3\u00e5") - buf.write("\5f\64\2\u00e4\u00e3\3\2\2\2\u00e5\u00e8\3\2\2\2\u00e6") - buf.write("\u00e4\3\2\2\2\u00e6\u00e7\3\2\2\2\u00e7\u00e9\3\2\2\2") - buf.write("\u00e8\u00e6\3\2\2\2\u00e9\u00ea\7\"\2\2\u00ea\u00eb\5") - buf.write("^\60\2\u00eb\u00ec\7E\2\2\u00ec\5\3\2\2\2\u00ed\u00ef") - buf.write("\7\33\2\2\u00ee\u00f0\7(\2\2\u00ef\u00ee\3\2\2\2\u00ef") - buf.write("\u00f0\3\2\2\2\u00f0\u00f1\3\2\2\2\u00f1\u00f4\5^\60\2") - buf.write("\u00f2\u00f3\7G\2\2\u00f3\u00f5\7Y\2\2\u00f4\u00f2\3\2") - buf.write("\2\2\u00f4\u00f5\3\2\2\2\u00f5\u00f6\3\2\2\2\u00f6\u00f7") - buf.write("\7E\2\2\u00f7\7\3\2\2\2\u00f8\u00fa\5\f\7\2\u00f9\u00f8") - buf.write("\3\2\2\2\u00fa\u00fd\3\2\2\2\u00fb\u00f9\3\2\2\2\u00fb") - buf.write("\u00fc\3\2\2\2\u00fc\u0102\3\2\2\2\u00fd\u00fb\3\2\2\2") - buf.write("\u00fe\u0103\5\20\t\2\u00ff\u0103\5\30\r\2\u0100\u0103") - buf.write("\5 \21\2\u0101\u0103\5p9\2\u0102\u00fe\3\2\2\2\u0102\u00ff") - buf.write("\3\2\2\2\u0102\u0100\3\2\2\2\u0102\u0101\3\2\2\2\u0103") - buf.write("\u0106\3\2\2\2\u0104\u0106\7E\2\2\u0105\u00fb\3\2\2\2") - buf.write("\u0105\u0104\3\2\2\2\u0106\t\3\2\2\2\u0107\u010d\5\f\7") - buf.write("\2\u0108\u010d\7 \2\2\u0109\u010d\7,\2\2\u010a\u010d\7") - buf.write("\60\2\2\u010b\u010d\7\63\2\2\u010c\u0107\3\2\2\2\u010c") - buf.write("\u0108\3\2\2\2\u010c\u0109\3\2\2\2\u010c\u010a\3\2\2\2") - buf.write("\u010c\u010b\3\2\2\2\u010d\13\3\2\2\2\u010e\u0117\5f\64") - buf.write("\2\u010f\u0117\7%\2\2\u0110\u0117\7$\2\2\u0111\u0117\7") - buf.write("#\2\2\u0112\u0117\7(\2\2\u0113\u0117\7\3\2\2\u0114\u0117") - buf.write("\7\24\2\2\u0115\u0117\7)\2\2\u0116\u010e\3\2\2\2\u0116") - buf.write("\u010f\3\2\2\2\u0116\u0110\3\2\2\2\u0116\u0111\3\2\2\2") - buf.write("\u0116\u0112\3\2\2\2\u0116\u0113\3\2\2\2\u0116\u0114\3") - buf.write("\2\2\2\u0116\u0115\3\2\2\2\u0117\r\3\2\2\2\u0118\u011b") - buf.write("\7\24\2\2\u0119\u011b\5f\64\2\u011a\u0118\3\2\2\2\u011a") - buf.write("\u0119\3\2\2\2\u011b\17\3\2\2\2\u011c\u011d\7\13\2\2\u011d") - buf.write("\u011f\7q\2\2\u011e\u0120\5\22\n\2\u011f\u011e\3\2\2\2") - buf.write("\u011f\u0120\3\2\2\2\u0120\u0123\3\2\2\2\u0121\u0122\7") - buf.write("\23\2\2\u0122\u0124\5\u00c6d\2\u0123\u0121\3\2\2\2\u0123") - buf.write("\u0124\3\2\2\2\u0124\u0127\3\2\2\2\u0125\u0126\7\32\2") - buf.write("\2\u0126\u0128\5\u00c4c\2\u0127\u0125\3\2\2\2\u0127\u0128") - buf.write("\3\2\2\2\u0128\u0129\3\2\2\2\u0129\u012a\5\"\22\2\u012a") - buf.write("\21\3\2\2\2\u012b\u012c\7J\2\2\u012c\u0131\5\24\13\2\u012d") - buf.write("\u012e\7F\2\2\u012e\u0130\5\24\13\2\u012f\u012d\3\2\2") - buf.write("\2\u0130\u0133\3\2\2\2\u0131\u012f\3\2\2\2\u0131\u0132") - buf.write("\3\2\2\2\u0132\u0134\3\2\2\2\u0133\u0131\3\2\2\2\u0134") - buf.write("\u0135\7I\2\2\u0135\23\3\2\2\2\u0136\u0138\5f\64\2\u0137") - buf.write("\u0136\3\2\2\2\u0138\u013b\3\2\2\2\u0139\u0137\3\2\2\2") - buf.write("\u0139\u013a\3\2\2\2\u013a\u013c\3\2\2\2\u013b\u0139\3") - buf.write("\2\2\2\u013c\u013f\7q\2\2\u013d\u013e\7\23\2\2\u013e\u0140") - buf.write("\5\26\f\2\u013f\u013d\3\2\2\2\u013f\u0140\3\2\2\2\u0140") - buf.write("\25\3\2\2\2\u0141\u0146\5\u00c6d\2\u0142\u0143\7[\2\2") - buf.write("\u0143\u0145\5\u00c6d\2\u0144\u0142\3\2\2\2\u0145\u0148") - buf.write("\3\2\2\2\u0146\u0144\3\2\2\2\u0146\u0147\3\2\2\2\u0147") - buf.write("\27\3\2\2\2\u0148\u0146\3\2\2\2\u0149\u014a\7\22\2\2\u014a") - buf.write("\u014d\7q\2\2\u014b\u014c\7\32\2\2\u014c\u014e\5\u00c4") - buf.write("c\2\u014d\u014b\3\2\2\2\u014d\u014e\3\2\2\2\u014e\u014f") - buf.write("\3\2\2\2\u014f\u0151\7A\2\2\u0150\u0152\5\32\16\2\u0151") - buf.write("\u0150\3\2\2\2\u0151\u0152\3\2\2\2\u0152\u0154\3\2\2\2") - buf.write("\u0153\u0155\7F\2\2\u0154\u0153\3\2\2\2\u0154\u0155\3") - buf.write("\2\2\2\u0155\u0157\3\2\2\2\u0156\u0158\5\36\20\2\u0157") - buf.write("\u0156\3\2\2\2\u0157\u0158\3\2\2\2\u0158\u0159\3\2\2\2") - buf.write("\u0159\u015a\7B\2\2\u015a\31\3\2\2\2\u015b\u0160\5\34") - buf.write("\17\2\u015c\u015d\7F\2\2\u015d\u015f\5\34\17\2\u015e\u015c") - buf.write("\3\2\2\2\u015f\u0162\3\2\2\2\u0160\u015e\3\2\2\2\u0160") - buf.write("\u0161\3\2\2\2\u0161\33\3\2\2\2\u0162\u0160\3\2\2\2\u0163") - buf.write("\u0165\5f\64\2\u0164\u0163\3\2\2\2\u0165\u0168\3\2\2\2") - buf.write("\u0166\u0164\3\2\2\2\u0166\u0167\3\2\2\2\u0167\u0169\3") - buf.write("\2\2\2\u0168\u0166\3\2\2\2\u0169\u016b\7q\2\2\u016a\u016c") - buf.write("\5\u00d0i\2\u016b\u016a\3\2\2\2\u016b\u016c\3\2\2\2\u016c") - buf.write("\u016e\3\2\2\2\u016d\u016f\5\"\22\2\u016e\u016d\3\2\2") - buf.write("\2\u016e\u016f\3\2\2\2\u016f\35\3\2\2\2\u0170\u0174\7") - buf.write("E\2\2\u0171\u0173\5&\24\2\u0172\u0171\3\2\2\2\u0173\u0176") - buf.write("\3\2\2\2\u0174\u0172\3\2\2\2\u0174\u0175\3\2\2\2\u0175") - buf.write("\37\3\2\2\2\u0176\u0174\3\2\2\2\u0177\u0178\7\36\2\2\u0178") - buf.write("\u017a\7q\2\2\u0179\u017b\5\22\n\2\u017a\u0179\3\2\2\2") - buf.write("\u017a\u017b\3\2\2\2\u017b\u017e\3\2\2\2\u017c\u017d\7") - buf.write("\23\2\2\u017d\u017f\5\u00c4c\2\u017e\u017c\3\2\2\2\u017e") - buf.write("\u017f\3\2\2\2\u017f\u0180\3\2\2\2\u0180\u0181\5$\23\2") - buf.write("\u0181!\3\2\2\2\u0182\u0186\7A\2\2\u0183\u0185\5&\24\2") - buf.write("\u0184\u0183\3\2\2\2\u0185\u0188\3\2\2\2\u0186\u0184\3") - buf.write("\2\2\2\u0186\u0187\3\2\2\2\u0187\u0189\3\2\2\2\u0188\u0186") - buf.write("\3\2\2\2\u0189\u018a\7B\2\2\u018a#\3\2\2\2\u018b\u018f") - buf.write("\7A\2\2\u018c\u018e\58\35\2\u018d\u018c\3\2\2\2\u018e") - buf.write("\u0191\3\2\2\2\u018f\u018d\3\2\2\2\u018f\u0190\3\2\2\2") - buf.write("\u0190\u0192\3\2\2\2\u0191\u018f\3\2\2\2\u0192\u0193\7") - buf.write("B\2\2\u0193%\3\2\2\2\u0194\u01a1\7E\2\2\u0195\u0197\7") - buf.write("(\2\2\u0196\u0195\3\2\2\2\u0196\u0197\3\2\2\2\u0197\u0198") - buf.write("\3\2\2\2\u0198\u01a1\5\u0080A\2\u0199\u019b\5\n\6\2\u019a") - buf.write("\u0199\3\2\2\2\u019b\u019e\3\2\2\2\u019c\u019a\3\2\2\2") - buf.write("\u019c\u019d\3\2\2\2\u019d\u019f\3\2\2\2\u019e\u019c\3") - buf.write("\2\2\2\u019f\u01a1\5(\25\2\u01a0\u0194\3\2\2\2\u01a0\u0196") - buf.write("\3\2\2\2\u01a0\u019c\3\2\2\2\u01a1\'\3\2\2\2\u01a2\u01ac") - buf.write("\5*\26\2\u01a3\u01ac\5\60\31\2\u01a4\u01ac\5\66\34\2\u01a5") - buf.write("\u01ac\5\64\33\2\u01a6\u01ac\5\62\32\2\u01a7\u01ac\5 ") - buf.write("\21\2\u01a8\u01ac\5p9\2\u01a9\u01ac\5\20\t\2\u01aa\u01ac") - buf.write("\5\30\r\2\u01ab\u01a2\3\2\2\2\u01ab\u01a3\3\2\2\2\u01ab") - buf.write("\u01a4\3\2\2\2\u01ab\u01a5\3\2\2\2\u01ab\u01a6\3\2\2\2") - buf.write("\u01ab\u01a7\3\2\2\2\u01ab\u01a8\3\2\2\2\u01ab\u01a9\3") - buf.write("\2\2\2\u01ab\u01aa\3\2\2\2\u01ac)\3\2\2\2\u01ad\u01ae") - buf.write("\5.\30\2\u01ae\u01af\7q\2\2\u01af\u01b4\5V,\2\u01b0\u01b1") - buf.write("\7C\2\2\u01b1\u01b3\7D\2\2\u01b2\u01b0\3\2\2\2\u01b3\u01b6") - buf.write("\3\2\2\2\u01b4\u01b2\3\2\2\2\u01b4\u01b5\3\2\2\2\u01b5") - buf.write("\u01b9\3\2\2\2\u01b6\u01b4\3\2\2\2\u01b7\u01b8\7/\2\2") - buf.write("\u01b8\u01ba\5T+\2\u01b9\u01b7\3\2\2\2\u01b9\u01ba\3\2") - buf.write("\2\2\u01ba\u01bb\3\2\2\2\u01bb\u01bc\5,\27\2\u01bc+\3") - buf.write("\2\2\2\u01bd\u01c0\5\u0080A\2\u01be\u01c0\7E\2\2\u01bf") - buf.write("\u01bd\3\2\2\2\u01bf\u01be\3\2\2\2\u01c0-\3\2\2\2\u01c1") - buf.write("\u01c4\5\u00c6d\2\u01c2\u01c4\7\62\2\2\u01c3\u01c1\3\2") - buf.write("\2\2\u01c3\u01c2\3\2\2\2\u01c4/\3\2\2\2\u01c5\u01c6\5") - buf.write("\22\n\2\u01c6\u01c7\5*\26\2\u01c7\61\3\2\2\2\u01c8\u01c9") - buf.write("\5\22\n\2\u01c9\u01ca\5\64\33\2\u01ca\63\3\2\2\2\u01cb") - buf.write("\u01cc\7q\2\2\u01cc\u01cf\5V,\2\u01cd\u01ce\7/\2\2\u01ce") - buf.write("\u01d0\5T+\2\u01cf\u01cd\3\2\2\2\u01cf\u01d0\3\2\2\2\u01d0") - buf.write("\u01d1\3\2\2\2\u01d1\u01d2\5\u0080A\2\u01d2\65\3\2\2\2") - buf.write("\u01d3\u01d4\5\u00c6d\2\u01d4\u01d5\5F$\2\u01d5\u01d6") - buf.write("\7E\2\2\u01d6\67\3\2\2\2\u01d7\u01d9\5\n\6\2\u01d8\u01d7") - buf.write("\3\2\2\2\u01d9\u01dc\3\2\2\2\u01da\u01d8\3\2\2\2\u01da") - buf.write("\u01db\3\2\2\2\u01db\u01dd\3\2\2\2\u01dc\u01da\3\2\2\2") - buf.write("\u01dd\u01e0\5:\36\2\u01de\u01e0\7E\2\2\u01df\u01da\3") - buf.write("\2\2\2\u01df\u01de\3\2\2\2\u01e09\3\2\2\2\u01e1\u01e9") - buf.write("\5<\37\2\u01e2\u01e9\5@!\2\u01e3\u01e9\5D#\2\u01e4\u01e9") - buf.write("\5 \21\2\u01e5\u01e9\5p9\2\u01e6\u01e9\5\20\t\2\u01e7") - buf.write("\u01e9\5\30\r\2\u01e8\u01e1\3\2\2\2\u01e8\u01e2\3\2\2") - buf.write("\2\u01e8\u01e3\3\2\2\2\u01e8\u01e4\3\2\2\2\u01e8\u01e5") - buf.write("\3\2\2\2\u01e8\u01e6\3\2\2\2\u01e8\u01e7\3\2\2\2\u01e9") - buf.write(";\3\2\2\2\u01ea\u01eb\5\u00c6d\2\u01eb\u01f0\5> \2\u01ec") - buf.write("\u01ed\7F\2\2\u01ed\u01ef\5> \2\u01ee\u01ec\3\2\2\2\u01ef") - buf.write("\u01f2\3\2\2\2\u01f0\u01ee\3\2\2\2\u01f0\u01f1\3\2\2\2") - buf.write("\u01f1\u01f3\3\2\2\2\u01f2\u01f0\3\2\2\2\u01f3\u01f4\7") - buf.write("E\2\2\u01f4=\3\2\2\2\u01f5\u01fa\7q\2\2\u01f6\u01f7\7") - buf.write("C\2\2\u01f7\u01f9\7D\2\2\u01f8\u01f6\3\2\2\2\u01f9\u01fc") - buf.write("\3\2\2\2\u01fa\u01f8\3\2\2\2\u01fa\u01fb\3\2\2\2\u01fb") - buf.write("\u01fd\3\2\2\2\u01fc\u01fa\3\2\2\2\u01fd\u01fe\7H\2\2") - buf.write("\u01fe\u01ff\5L\'\2\u01ff?\3\2\2\2\u0200\u0202\5B\"\2") - buf.write("\u0201\u0200\3\2\2\2\u0202\u0205\3\2\2\2\u0203\u0201\3") - buf.write("\2\2\2\u0203\u0204\3\2\2\2\u0204\u0210\3\2\2\2\u0205\u0203") - buf.write("\3\2\2\2\u0206\u0211\5.\30\2\u0207\u020b\5\22\n\2\u0208") - buf.write("\u020a\5f\64\2\u0209\u0208\3\2\2\2\u020a\u020d\3\2\2\2") - buf.write("\u020b\u0209\3\2\2\2\u020b\u020c\3\2\2\2\u020c\u020e\3") - buf.write("\2\2\2\u020d\u020b\3\2\2\2\u020e\u020f\5.\30\2\u020f\u0211") - buf.write("\3\2\2\2\u0210\u0206\3\2\2\2\u0210\u0207\3\2\2\2\u0211") - buf.write("\u0212\3\2\2\2\u0212\u0213\7q\2\2\u0213\u0218\5V,\2\u0214") - buf.write("\u0215\7C\2\2\u0215\u0217\7D\2\2\u0216\u0214\3\2\2\2\u0217") - buf.write("\u021a\3\2\2\2\u0218\u0216\3\2\2\2\u0218\u0219\3\2\2\2") - buf.write("\u0219\u021d\3\2\2\2\u021a\u0218\3\2\2\2\u021b\u021c\7") - buf.write("/\2\2\u021c\u021e\5T+\2\u021d\u021b\3\2\2\2\u021d\u021e") - buf.write("\3\2\2\2\u021e\u021f\3\2\2\2\u021f\u0220\5,\27\2\u0220") - buf.write("A\3\2\2\2\u0221\u0228\5f\64\2\u0222\u0228\7%\2\2\u0223") - buf.write("\u0228\7\3\2\2\u0224\u0228\7\16\2\2\u0225\u0228\7(\2\2") - buf.write("\u0226\u0228\7)\2\2\u0227\u0221\3\2\2\2\u0227\u0222\3") - buf.write("\2\2\2\u0227\u0223\3\2\2\2\u0227\u0224\3\2\2\2\u0227\u0225") - buf.write("\3\2\2\2\u0227\u0226\3\2\2\2\u0228C\3\2\2\2\u0229\u022a") - buf.write("\5\22\n\2\u022a\u022b\5@!\2\u022bE\3\2\2\2\u022c\u0231") - buf.write("\5H%\2\u022d\u022e\7F\2\2\u022e\u0230\5H%\2\u022f\u022d") - buf.write("\3\2\2\2\u0230\u0233\3\2\2\2\u0231\u022f\3\2\2\2\u0231") - buf.write("\u0232\3\2\2\2\u0232G\3\2\2\2\u0233\u0231\3\2\2\2\u0234") - buf.write("\u0237\5J&\2\u0235\u0236\7H\2\2\u0236\u0238\5L\'\2\u0237") - buf.write("\u0235\3\2\2\2\u0237\u0238\3\2\2\2\u0238I\3\2\2\2\u0239") - buf.write("\u023e\7q\2\2\u023a\u023b\7C\2\2\u023b\u023d\7D\2\2\u023c") - buf.write("\u023a\3\2\2\2\u023d\u0240\3\2\2\2\u023e\u023c\3\2\2\2") - buf.write("\u023e\u023f\3\2\2\2\u023fK\3\2\2\2\u0240\u023e\3\2\2") - buf.write("\2\u0241\u0244\5N(\2\u0242\u0244\5\u00a6T\2\u0243\u0241") - buf.write("\3\2\2\2\u0243\u0242\3\2\2\2\u0244M\3\2\2\2\u0245\u0251") - buf.write("\7A\2\2\u0246\u024b\5L\'\2\u0247\u0248\7F\2\2\u0248\u024a") - buf.write("\5L\'\2\u0249\u0247\3\2\2\2\u024a\u024d\3\2\2\2\u024b") - buf.write("\u0249\3\2\2\2\u024b\u024c\3\2\2\2\u024c\u024f\3\2\2\2") - buf.write("\u024d\u024b\3\2\2\2\u024e\u0250\7F\2\2\u024f\u024e\3") - buf.write("\2\2\2\u024f\u0250\3\2\2\2\u0250\u0252\3\2\2\2\u0251\u0246") - buf.write("\3\2\2\2\u0251\u0252\3\2\2\2\u0252\u0253\3\2\2\2\u0253") - buf.write("\u0254\7B\2\2\u0254O\3\2\2\2\u0255\u0257\7q\2\2\u0256") - buf.write("\u0258\5\u00caf\2\u0257\u0256\3\2\2\2\u0257\u0258\3\2") - buf.write("\2\2\u0258\u0260\3\2\2\2\u0259\u025a\7G\2\2\u025a\u025c") - buf.write("\7q\2\2\u025b\u025d\5\u00caf\2\u025c\u025b\3\2\2\2\u025c") - buf.write("\u025d\3\2\2\2\u025d\u025f\3\2\2\2\u025e\u0259\3\2\2\2") - buf.write("\u025f\u0262\3\2\2\2\u0260\u025e\3\2\2\2\u0260\u0261\3") - buf.write("\2\2\2\u0261Q\3\2\2\2\u0262\u0260\3\2\2\2\u0263\u026a") - buf.write("\5\u00c6d\2\u0264\u0267\7M\2\2\u0265\u0266\t\2\2\2\u0266") - buf.write("\u0268\5\u00c6d\2\u0267\u0265\3\2\2\2\u0267\u0268\3\2") - buf.write("\2\2\u0268\u026a\3\2\2\2\u0269\u0263\3\2\2\2\u0269\u0264") - buf.write("\3\2\2\2\u026aS\3\2\2\2\u026b\u0270\5^\60\2\u026c\u026d") - buf.write("\7F\2\2\u026d\u026f\5^\60\2\u026e\u026c\3\2\2\2\u026f") - buf.write("\u0272\3\2\2\2\u0270\u026e\3\2\2\2\u0270\u0271\3\2\2\2") - buf.write("\u0271U\3\2\2\2\u0272\u0270\3\2\2\2\u0273\u0275\7?\2\2") - buf.write("\u0274\u0276\5X-\2\u0275\u0274\3\2\2\2\u0275\u0276\3\2") - buf.write("\2\2\u0276\u0277\3\2\2\2\u0277\u0278\7@\2\2\u0278W\3\2") - buf.write("\2\2\u0279\u027e\5Z.\2\u027a\u027b\7F\2\2\u027b\u027d") - buf.write("\5Z.\2\u027c\u027a\3\2\2\2\u027d\u0280\3\2\2\2\u027e\u027c") - buf.write("\3\2\2\2\u027e\u027f\3\2\2\2\u027f\u0283\3\2\2\2\u0280") - buf.write("\u027e\3\2\2\2\u0281\u0282\7F\2\2\u0282\u0284\5\\/\2\u0283") - buf.write("\u0281\3\2\2\2\u0283\u0284\3\2\2\2\u0284\u0287\3\2\2\2") - buf.write("\u0285\u0287\5\\/\2\u0286\u0279\3\2\2\2\u0286\u0285\3") - buf.write("\2\2\2\u0287Y\3\2\2\2\u0288\u028a\5\16\b\2\u0289\u0288") - buf.write("\3\2\2\2\u028a\u028d\3\2\2\2\u028b\u0289\3\2\2\2\u028b") - buf.write("\u028c\3\2\2\2\u028c\u028e\3\2\2\2\u028d\u028b\3\2\2\2") - buf.write("\u028e\u028f\5\u00c6d\2\u028f\u0290\5J&\2\u0290[\3\2\2") - buf.write("\2\u0291\u0293\5\16\b\2\u0292\u0291\3\2\2\2\u0293\u0296") - buf.write("\3\2\2\2\u0294\u0292\3\2\2\2\u0294\u0295\3\2\2\2\u0295") - buf.write("\u0297\3\2\2\2\u0296\u0294\3\2\2\2\u0297\u0298\5\u00c6") - buf.write("d\2\u0298\u0299\7m\2\2\u0299\u029a\5J&\2\u029a]\3\2\2") - buf.write("\2\u029b\u02a0\7q\2\2\u029c\u029d\7G\2\2\u029d\u029f\7") - buf.write("q\2\2\u029e\u029c\3\2\2\2\u029f\u02a2\3\2\2\2\u02a0\u029e") - buf.write("\3\2\2\2\u02a0\u02a1\3\2\2\2\u02a1_\3\2\2\2\u02a2\u02a0") - buf.write("\3\2\2\2\u02a3\u02aa\5b\62\2\u02a4\u02aa\5d\63\2\u02a5") - buf.write("\u02aa\7<\2\2\u02a6\u02aa\7=\2\2\u02a7\u02aa\7;\2\2\u02a8") - buf.write("\u02aa\7>\2\2\u02a9\u02a3\3\2\2\2\u02a9\u02a4\3\2\2\2") - buf.write("\u02a9\u02a5\3\2\2\2\u02a9\u02a6\3\2\2\2\u02a9\u02a7\3") - buf.write("\2\2\2\u02a9\u02a8\3\2\2\2\u02aaa\3\2\2\2\u02ab\u02ac") - buf.write("\t\3\2\2\u02acc\3\2\2\2\u02ad\u02ae\t\4\2\2\u02aee\3\2") - buf.write("\2\2\u02af\u02b0\7l\2\2\u02b0\u02b7\5^\60\2\u02b1\u02b4") - buf.write("\7?\2\2\u02b2\u02b5\5h\65\2\u02b3\u02b5\5l\67\2\u02b4") - buf.write("\u02b2\3\2\2\2\u02b4\u02b3\3\2\2\2\u02b4\u02b5\3\2\2\2") - buf.write("\u02b5\u02b6\3\2\2\2\u02b6\u02b8\7@\2\2\u02b7\u02b1\3") - buf.write("\2\2\2\u02b7\u02b8\3\2\2\2\u02b8g\3\2\2\2\u02b9\u02be") - buf.write("\5j\66\2\u02ba\u02bb\7F\2\2\u02bb\u02bd\5j\66\2\u02bc") - buf.write("\u02ba\3\2\2\2\u02bd\u02c0\3\2\2\2\u02be\u02bc\3\2\2\2") - buf.write("\u02be\u02bf\3\2\2\2\u02bfi\3\2\2\2\u02c0\u02be\3\2\2") - buf.write("\2\u02c1\u02c2\7q\2\2\u02c2\u02c3\7H\2\2\u02c3\u02c4\5") - buf.write("l\67\2\u02c4k\3\2\2\2\u02c5\u02c9\5\u00a6T\2\u02c6\u02c9") - buf.write("\5f\64\2\u02c7\u02c9\5n8\2\u02c8\u02c5\3\2\2\2\u02c8\u02c6") - buf.write("\3\2\2\2\u02c8\u02c7\3\2\2\2\u02c9m\3\2\2\2\u02ca\u02d3") - buf.write("\7A\2\2\u02cb\u02d0\5l\67\2\u02cc\u02cd\7F\2\2\u02cd\u02cf") - buf.write("\5l\67\2\u02ce\u02cc\3\2\2\2\u02cf\u02d2\3\2\2\2\u02d0") - buf.write("\u02ce\3\2\2\2\u02d0\u02d1\3\2\2\2\u02d1\u02d4\3\2\2\2") - buf.write("\u02d2\u02d0\3\2\2\2\u02d3\u02cb\3\2\2\2\u02d3\u02d4\3") - buf.write("\2\2\2\u02d4\u02d6\3\2\2\2\u02d5\u02d7\7F\2\2\u02d6\u02d5") - buf.write("\3\2\2\2\u02d6\u02d7\3\2\2\2\u02d7\u02d8\3\2\2\2\u02d8") - buf.write("\u02d9\7B\2\2\u02d9o\3\2\2\2\u02da\u02db\7l\2\2\u02db") - buf.write("\u02dc\7\36\2\2\u02dc\u02dd\7q\2\2\u02dd\u02de\5r:\2\u02de") - buf.write("q\3\2\2\2\u02df\u02e3\7A\2\2\u02e0\u02e2\5t;\2\u02e1\u02e0") - buf.write("\3\2\2\2\u02e2\u02e5\3\2\2\2\u02e3\u02e1\3\2\2\2\u02e3") - buf.write("\u02e4\3\2\2\2\u02e4\u02e6\3\2\2\2\u02e5\u02e3\3\2\2\2") - buf.write("\u02e6\u02e7\7B\2\2\u02e7s\3\2\2\2\u02e8\u02ea\5\n\6\2") - buf.write("\u02e9\u02e8\3\2\2\2\u02ea\u02ed\3\2\2\2\u02eb\u02e9\3") - buf.write("\2\2\2\u02eb\u02ec\3\2\2\2\u02ec\u02ee\3\2\2\2\u02ed\u02eb") - buf.write("\3\2\2\2\u02ee\u02f1\5v<\2\u02ef\u02f1\7E\2\2\u02f0\u02eb") - buf.write("\3\2\2\2\u02f0\u02ef\3\2\2\2\u02f1u\3\2\2\2\u02f2\u02f3") - buf.write("\5\u00c6d\2\u02f3\u02f4\5x=\2\u02f4\u02f5\7E\2\2\u02f5") - buf.write("\u0307\3\2\2\2\u02f6\u02f8\5\20\t\2\u02f7\u02f9\7E\2\2") - buf.write("\u02f8\u02f7\3\2\2\2\u02f8\u02f9\3\2\2\2\u02f9\u0307\3") - buf.write("\2\2\2\u02fa\u02fc\5 \21\2\u02fb\u02fd\7E\2\2\u02fc\u02fb") - buf.write("\3\2\2\2\u02fc\u02fd\3\2\2\2\u02fd\u0307\3\2\2\2\u02fe") - buf.write("\u0300\5\30\r\2\u02ff\u0301\7E\2\2\u0300\u02ff\3\2\2\2") - buf.write("\u0300\u0301\3\2\2\2\u0301\u0307\3\2\2\2\u0302\u0304\5") - buf.write("p9\2\u0303\u0305\7E\2\2\u0304\u0303\3\2\2\2\u0304\u0305") - buf.write("\3\2\2\2\u0305\u0307\3\2\2\2\u0306\u02f2\3\2\2\2\u0306") - buf.write("\u02f6\3\2\2\2\u0306\u02fa\3\2\2\2\u0306\u02fe\3\2\2\2") - buf.write("\u0306\u0302\3\2\2\2\u0307w\3\2\2\2\u0308\u030b\5z>\2") - buf.write("\u0309\u030b\5|?\2\u030a\u0308\3\2\2\2\u030a\u0309\3\2") - buf.write("\2\2\u030by\3\2\2\2\u030c\u030d\7q\2\2\u030d\u030e\7?") - buf.write("\2\2\u030e\u0310\7@\2\2\u030f\u0311\5~@\2\u0310\u030f") - buf.write("\3\2\2\2\u0310\u0311\3\2\2\2\u0311{\3\2\2\2\u0312\u0313") - buf.write("\5F$\2\u0313}\3\2\2\2\u0314\u0315\7\16\2\2\u0315\u0316") - buf.write("\5l\67\2\u0316\177\3\2\2\2\u0317\u031b\7A\2\2\u0318\u031a") - buf.write("\5\u0082B\2\u0319\u0318\3\2\2\2\u031a\u031d\3\2\2\2\u031b") - buf.write("\u0319\3\2\2\2\u031b\u031c\3\2\2\2\u031c\u031e\3\2\2\2") - buf.write("\u031d\u031b\3\2\2\2\u031e\u031f\7B\2\2\u031f\u0081\3") - buf.write("\2\2\2\u0320\u0321\5\u0084C\2\u0321\u0322\7E\2\2\u0322") - buf.write("\u0326\3\2\2\2\u0323\u0326\5\u0088E\2\u0324\u0326\5\u0086") - buf.write("D\2\u0325\u0320\3\2\2\2\u0325\u0323\3\2\2\2\u0325\u0324") - buf.write("\3\2\2\2\u0326\u0083\3\2\2\2\u0327\u0329\5\16\b\2\u0328") - buf.write("\u0327\3\2\2\2\u0329\u032c\3\2\2\2\u032a\u0328\3\2\2\2") - buf.write("\u032a\u032b\3\2\2\2\u032b\u032d\3\2\2\2\u032c\u032a\3") - buf.write("\2\2\2\u032d\u032e\5\u00c6d\2\u032e\u032f\5F$\2\u032f") - buf.write("\u0085\3\2\2\2\u0330\u0332\5\f\7\2\u0331\u0330\3\2\2\2") - buf.write("\u0332\u0335\3\2\2\2\u0333\u0331\3\2\2\2\u0333\u0334\3") - buf.write("\2\2\2\u0334\u0338\3\2\2\2\u0335\u0333\3\2\2\2\u0336\u0339") - buf.write("\5\20\t\2\u0337\u0339\5 \21\2\u0338\u0336\3\2\2\2\u0338") - buf.write("\u0337\3\2\2\2\u0339\u033c\3\2\2\2\u033a\u033c\7E\2\2") - buf.write("\u033b\u0333\3\2\2\2\u033b\u033a\3\2\2\2\u033c\u0087\3") - buf.write("\2\2\2\u033d\u03a6\5\u0080A\2\u033e\u033f\7\4\2\2\u033f") - buf.write("\u0342\5\u00a6T\2\u0340\u0341\7N\2\2\u0341\u0343\5\u00a6") - buf.write("T\2\u0342\u0340\3\2\2\2\u0342\u0343\3\2\2\2\u0343\u0344") - buf.write("\3\2\2\2\u0344\u0345\7E\2\2\u0345\u03a6\3\2\2\2\u0346") - buf.write("\u0347\7\30\2\2\u0347\u0348\5\u00a0Q\2\u0348\u034b\5\u0088") - buf.write("E\2\u0349\u034a\7\21\2\2\u034a\u034c\5\u0088E\2\u034b") - buf.write("\u0349\3\2\2\2\u034b\u034c\3\2\2\2\u034c\u03a6\3\2\2\2") - buf.write("\u034d\u034e\7\27\2\2\u034e\u034f\7?\2\2\u034f\u0350\5") - buf.write("\u009aN\2\u0350\u0351\7@\2\2\u0351\u0352\5\u0088E\2\u0352") - buf.write("\u03a6\3\2\2\2\u0353\u0354\7\64\2\2\u0354\u0355\5\u00a0") - buf.write("Q\2\u0355\u0356\5\u0088E\2\u0356\u03a6\3\2\2\2\u0357\u0358") - buf.write("\7\17\2\2\u0358\u0359\5\u0088E\2\u0359\u035a\7\64\2\2") - buf.write("\u035a\u035b\5\u00a0Q\2\u035b\u035c\7E\2\2\u035c\u03a6") - buf.write("\3\2\2\2\u035d\u035e\7\61\2\2\u035e\u0368\5\u0080A\2\u035f") - buf.write("\u0361\5\u008aF\2\u0360\u035f\3\2\2\2\u0361\u0362\3\2") - buf.write("\2\2\u0362\u0360\3\2\2\2\u0362\u0363\3\2\2\2\u0363\u0365") - buf.write("\3\2\2\2\u0364\u0366\5\u008eH\2\u0365\u0364\3\2\2\2\u0365") - buf.write("\u0366\3\2\2\2\u0366\u0369\3\2\2\2\u0367\u0369\5\u008e") - buf.write("H\2\u0368\u0360\3\2\2\2\u0368\u0367\3\2\2\2\u0369\u03a6") - buf.write("\3\2\2\2\u036a\u036b\7\61\2\2\u036b\u036c\5\u0090I\2\u036c") - buf.write("\u0370\5\u0080A\2\u036d\u036f\5\u008aF\2\u036e\u036d\3") - buf.write("\2\2\2\u036f\u0372\3\2\2\2\u0370\u036e\3\2\2\2\u0370\u0371") - buf.write("\3\2\2\2\u0371\u0374\3\2\2\2\u0372\u0370\3\2\2\2\u0373") - buf.write("\u0375\5\u008eH\2\u0374\u0373\3\2\2\2\u0374\u0375\3\2") - buf.write("\2\2\u0375\u03a6\3\2\2\2\u0376\u0377\7+\2\2\u0377\u0378") - buf.write("\5\u00a0Q\2\u0378\u037c\7A\2\2\u0379\u037b\5\u0096L\2") - buf.write("\u037a\u0379\3\2\2\2\u037b\u037e\3\2\2\2\u037c\u037a\3") - buf.write("\2\2\2\u037c\u037d\3\2\2\2\u037d\u0382\3\2\2\2\u037e\u037c") - buf.write("\3\2\2\2\u037f\u0381\5\u0098M\2\u0380\u037f\3\2\2\2\u0381") - buf.write("\u0384\3\2\2\2\u0382\u0380\3\2\2\2\u0382\u0383\3\2\2\2") - buf.write("\u0383\u0385\3\2\2\2\u0384\u0382\3\2\2\2\u0385\u0386\7") - buf.write("B\2\2\u0386\u03a6\3\2\2\2\u0387\u0388\7,\2\2\u0388\u0389") - buf.write("\5\u00a0Q\2\u0389\u038a\5\u0080A\2\u038a\u03a6\3\2\2\2") - buf.write("\u038b\u038d\7&\2\2\u038c\u038e\5\u00a6T\2\u038d\u038c") - buf.write("\3\2\2\2\u038d\u038e\3\2\2\2\u038e\u038f\3\2\2\2\u038f") - buf.write("\u03a6\7E\2\2\u0390\u0391\7.\2\2\u0391\u0392\5\u00a6T") - buf.write("\2\u0392\u0393\7E\2\2\u0393\u03a6\3\2\2\2\u0394\u0396") - buf.write("\7\6\2\2\u0395\u0397\7q\2\2\u0396\u0395\3\2\2\2\u0396") - buf.write("\u0397\3\2\2\2\u0397\u0398\3\2\2\2\u0398\u03a6\7E\2\2") - buf.write("\u0399\u039b\7\r\2\2\u039a\u039c\7q\2\2\u039b\u039a\3") - buf.write("\2\2\2\u039b\u039c\3\2\2\2\u039c\u039d\3\2\2\2\u039d\u03a6") - buf.write("\7E\2\2\u039e\u03a6\7E\2\2\u039f\u03a0\5\u00a6T\2\u03a0") - buf.write("\u03a1\7E\2\2\u03a1\u03a6\3\2\2\2\u03a2\u03a3\7q\2\2\u03a3") - buf.write("\u03a4\7N\2\2\u03a4\u03a6\5\u0088E\2\u03a5\u033d\3\2\2") - buf.write("\2\u03a5\u033e\3\2\2\2\u03a5\u0346\3\2\2\2\u03a5\u034d") - buf.write("\3\2\2\2\u03a5\u0353\3\2\2\2\u03a5\u0357\3\2\2\2\u03a5") - buf.write("\u035d\3\2\2\2\u03a5\u036a\3\2\2\2\u03a5\u0376\3\2\2\2") - buf.write("\u03a5\u0387\3\2\2\2\u03a5\u038b\3\2\2\2\u03a5\u0390\3") - buf.write("\2\2\2\u03a5\u0394\3\2\2\2\u03a5\u0399\3\2\2\2\u03a5\u039e") - buf.write("\3\2\2\2\u03a5\u039f\3\2\2\2\u03a5\u03a2\3\2\2\2\u03a6") - buf.write("\u0089\3\2\2\2\u03a7\u03a8\7\t\2\2\u03a8\u03ac\7?\2\2") - buf.write("\u03a9\u03ab\5\16\b\2\u03aa\u03a9\3\2\2\2\u03ab\u03ae") - buf.write("\3\2\2\2\u03ac\u03aa\3\2\2\2\u03ac\u03ad\3\2\2\2\u03ad") - buf.write("\u03af\3\2\2\2\u03ae\u03ac\3\2\2\2\u03af\u03b0\5\u008c") - buf.write("G\2\u03b0\u03b1\7q\2\2\u03b1\u03b2\7@\2\2\u03b2\u03b3") - buf.write("\5\u0080A\2\u03b3\u008b\3\2\2\2\u03b4\u03b9\5^\60\2\u03b5") - buf.write("\u03b6\7\\\2\2\u03b6\u03b8\5^\60\2\u03b7\u03b5\3\2\2\2") - buf.write("\u03b8\u03bb\3\2\2\2\u03b9\u03b7\3\2\2\2\u03b9\u03ba\3") - buf.write("\2\2\2\u03ba\u008d\3\2\2\2\u03bb\u03b9\3\2\2\2\u03bc\u03bd") - buf.write("\7\25\2\2\u03bd\u03be\5\u0080A\2\u03be\u008f\3\2\2\2\u03bf") - buf.write("\u03c0\7?\2\2\u03c0\u03c2\5\u0092J\2\u03c1\u03c3\7E\2") - buf.write("\2\u03c2\u03c1\3\2\2\2\u03c2\u03c3\3\2\2\2\u03c3\u03c4") - buf.write("\3\2\2\2\u03c4\u03c5\7@\2\2\u03c5\u0091\3\2\2\2\u03c6") - buf.write("\u03cb\5\u0094K\2\u03c7\u03c8\7E\2\2\u03c8\u03ca\5\u0094") - buf.write("K\2\u03c9\u03c7\3\2\2\2\u03ca\u03cd\3\2\2\2\u03cb\u03c9") - buf.write("\3\2\2\2\u03cb\u03cc\3\2\2\2\u03cc\u0093\3\2\2\2\u03cd") - buf.write("\u03cb\3\2\2\2\u03ce\u03d0\5\16\b\2\u03cf\u03ce\3\2\2") - buf.write("\2\u03d0\u03d3\3\2\2\2\u03d1\u03cf\3\2\2\2\u03d1\u03d2") - buf.write("\3\2\2\2\u03d2\u03d4\3\2\2\2\u03d3\u03d1\3\2\2\2\u03d4") - buf.write("\u03d5\5P)\2\u03d5\u03d6\5J&\2\u03d6\u03d7\7H\2\2\u03d7") - buf.write("\u03d8\5\u00a6T\2\u03d8\u0095\3\2\2\2\u03d9\u03db\5\u0098") - buf.write("M\2\u03da\u03d9\3\2\2\2\u03db\u03dc\3\2\2\2\u03dc\u03da") - buf.write("\3\2\2\2\u03dc\u03dd\3\2\2\2\u03dd\u03df\3\2\2\2\u03de") - buf.write("\u03e0\5\u0082B\2\u03df\u03de\3\2\2\2\u03e0\u03e1\3\2") - buf.write("\2\2\u03e1\u03df\3\2\2\2\u03e1\u03e2\3\2\2\2\u03e2\u0097") - buf.write("\3\2\2\2\u03e3\u03e6\7\b\2\2\u03e4\u03e7\5\u00a6T\2\u03e5") - buf.write("\u03e7\7q\2\2\u03e6\u03e4\3\2\2\2\u03e6\u03e5\3\2\2\2") - buf.write("\u03e7\u03e8\3\2\2\2\u03e8\u03ec\7N\2\2\u03e9\u03ea\7") - buf.write("\16\2\2\u03ea\u03ec\7N\2\2\u03eb\u03e3\3\2\2\2\u03eb\u03e9") - buf.write("\3\2\2\2\u03ec\u0099\3\2\2\2\u03ed\u03fa\5\u009eP\2\u03ee") - buf.write("\u03f0\5\u009cO\2\u03ef\u03ee\3\2\2\2\u03ef\u03f0\3\2") - buf.write("\2\2\u03f0\u03f1\3\2\2\2\u03f1\u03f3\7E\2\2\u03f2\u03f4") - buf.write("\5\u00a6T\2\u03f3\u03f2\3\2\2\2\u03f3\u03f4\3\2\2\2\u03f4") - buf.write("\u03f5\3\2\2\2\u03f5\u03f7\7E\2\2\u03f6\u03f8\5\u00a2") - buf.write("R\2\u03f7\u03f6\3\2\2\2\u03f7\u03f8\3\2\2\2\u03f8\u03fa") - buf.write("\3\2\2\2\u03f9\u03ed\3\2\2\2\u03f9\u03ef\3\2\2\2\u03fa") - buf.write("\u009b\3\2\2\2\u03fb\u03fe\5\u0084C\2\u03fc\u03fe\5\u00a2") - buf.write("R\2\u03fd\u03fb\3\2\2\2\u03fd\u03fc\3\2\2\2\u03fe\u009d") - buf.write("\3\2\2\2\u03ff\u0401\5\16\b\2\u0400\u03ff\3\2\2\2\u0401") - buf.write("\u0404\3\2\2\2\u0402\u0400\3\2\2\2\u0402\u0403\3\2\2\2") - buf.write("\u0403\u0405\3\2\2\2\u0404\u0402\3\2\2\2\u0405\u0406\5") - buf.write("\u00c6d\2\u0406\u0407\5J&\2\u0407\u0408\7N\2\2\u0408\u0409") - buf.write("\5\u00a6T\2\u0409\u009f\3\2\2\2\u040a\u040b\7?\2\2\u040b") - buf.write("\u040c\5\u00a6T\2\u040c\u040d\7@\2\2\u040d\u00a1\3\2\2") - buf.write("\2\u040e\u0413\5\u00a6T\2\u040f\u0410\7F\2\2\u0410\u0412") - buf.write("\5\u00a6T\2\u0411\u040f\3\2\2\2\u0412\u0415\3\2\2\2\u0413") - buf.write("\u0411\3\2\2\2\u0413\u0414\3\2\2\2\u0414\u00a3\3\2\2\2") - buf.write("\u0415\u0413\3\2\2\2\u0416\u0417\7q\2\2\u0417\u0419\7") - buf.write("?\2\2\u0418\u041a\5\u00a2R\2\u0419\u0418\3\2\2\2\u0419") - buf.write("\u041a\3\2\2\2\u041a\u041b\3\2\2\2\u041b\u0429\7@\2\2") - buf.write("\u041c\u041d\7-\2\2\u041d\u041f\7?\2\2\u041e\u0420\5\u00a2") - buf.write("R\2\u041f\u041e\3\2\2\2\u041f\u0420\3\2\2\2\u0420\u0421") - buf.write("\3\2\2\2\u0421\u0429\7@\2\2\u0422\u0423\7*\2\2\u0423\u0425") - buf.write("\7?\2\2\u0424\u0426\5\u00a2R\2\u0425\u0424\3\2\2\2\u0425") - buf.write("\u0426\3\2\2\2\u0426\u0427\3\2\2\2\u0427\u0429\7@\2\2") - buf.write("\u0428\u0416\3\2\2\2\u0428\u041c\3\2\2\2\u0428\u0422\3") - buf.write("\2\2\2\u0429\u00a5\3\2\2\2\u042a\u042b\bT\1\2\u042b\u044a") - buf.write("\5\u00aeX\2\u042c\u044a\5\u00a4S\2\u042d\u042e\7!\2\2") - buf.write("\u042e\u044a\5\u00b2Z\2\u042f\u0430\7?\2\2\u0430\u0431") - buf.write("\5\u00c6d\2\u0431\u0432\7@\2\2\u0432\u0433\5\u00a6T\27") - buf.write("\u0433\u044a\3\2\2\2\u0434\u0435\t\5\2\2\u0435\u044a\5") - buf.write("\u00a6T\25\u0436\u0437\t\6\2\2\u0437\u044a\5\u00a6T\24") - buf.write("\u0438\u044a\5\u00a8U\2\u0439\u043a\5\u00c6d\2\u043a\u0440") - buf.write("\7k\2\2\u043b\u043d\5\u00caf\2\u043c\u043b\3\2\2\2\u043c") - buf.write("\u043d\3\2\2\2\u043d\u043e\3\2\2\2\u043e\u0441\7q\2\2") - buf.write("\u043f\u0441\7!\2\2\u0440\u043c\3\2\2\2\u0440\u043f\3") - buf.write("\2\2\2\u0441\u044a\3\2\2\2\u0442\u0443\5\u00b0Y\2\u0443") - buf.write("\u0445\7k\2\2\u0444\u0446\5\u00caf\2\u0445\u0444\3\2\2") - buf.write("\2\u0445\u0446\3\2\2\2\u0446\u0447\3\2\2\2\u0447\u0448") - buf.write("\7!\2\2\u0448\u044a\3\2\2\2\u0449\u042a\3\2\2\2\u0449") - buf.write("\u042c\3\2\2\2\u0449\u042d\3\2\2\2\u0449\u042f\3\2\2\2") - buf.write("\u0449\u0434\3\2\2\2\u0449\u0436\3\2\2\2\u0449\u0438\3") - buf.write("\2\2\2\u0449\u0439\3\2\2\2\u0449\u0442\3\2\2\2\u044a\u049b") - buf.write("\3\2\2\2\u044b\u044c\f\23\2\2\u044c\u044d\t\7\2\2\u044d") - buf.write("\u049a\5\u00a6T\24\u044e\u044f\f\22\2\2\u044f\u0450\t") - buf.write("\b\2\2\u0450\u049a\5\u00a6T\23\u0451\u0459\f\21\2\2\u0452") - buf.write("\u0453\7J\2\2\u0453\u045a\7J\2\2\u0454\u0455\7I\2\2\u0455") - buf.write("\u0456\7I\2\2\u0456\u045a\7I\2\2\u0457\u0458\7I\2\2\u0458") - buf.write("\u045a\7I\2\2\u0459\u0452\3\2\2\2\u0459\u0454\3\2\2\2") - buf.write("\u0459\u0457\3\2\2\2\u045a\u045b\3\2\2\2\u045b\u049a\5") - buf.write("\u00a6T\22\u045c\u045d\f\20\2\2\u045d\u045e\t\t\2\2\u045e") - buf.write("\u049a\5\u00a6T\21\u045f\u0460\f\16\2\2\u0460\u0461\t") - buf.write("\n\2\2\u0461\u049a\5\u00a6T\17\u0462\u0463\f\r\2\2\u0463") - buf.write("\u0464\7[\2\2\u0464\u049a\5\u00a6T\16\u0465\u0466\f\f") - buf.write("\2\2\u0466\u0467\7]\2\2\u0467\u049a\5\u00a6T\r\u0468\u0469") - buf.write("\f\13\2\2\u0469\u046a\7\\\2\2\u046a\u049a\5\u00a6T\f\u046b") - buf.write("\u046c\f\n\2\2\u046c\u046d\7S\2\2\u046d\u049a\5\u00a6") - buf.write("T\13\u046e\u046f\f\t\2\2\u046f\u0470\7T\2\2\u0470\u049a") - buf.write("\5\u00a6T\n\u0471\u0472\f\b\2\2\u0472\u0473\7M\2\2\u0473") - buf.write("\u0474\5\u00a6T\2\u0474\u0475\7N\2\2\u0475\u0476\5\u00a6") - buf.write("T\t\u0476\u049a\3\2\2\2\u0477\u0478\f\7\2\2\u0478\u0479") - buf.write("\t\13\2\2\u0479\u049a\5\u00a6T\7\u047a\u047b\f\33\2\2") - buf.write("\u047b\u0487\7G\2\2\u047c\u0488\7q\2\2\u047d\u0488\5\u00a4") - buf.write("S\2\u047e\u0488\7-\2\2\u047f\u0481\7!\2\2\u0480\u0482") - buf.write("\5\u00c2b\2\u0481\u0480\3\2\2\2\u0481\u0482\3\2\2\2\u0482") - buf.write("\u0483\3\2\2\2\u0483\u0488\5\u00b6\\\2\u0484\u0485\7*") - buf.write("\2\2\u0485\u0488\5\u00ccg\2\u0486\u0488\5\u00bc_\2\u0487") - buf.write("\u047c\3\2\2\2\u0487\u047d\3\2\2\2\u0487\u047e\3\2\2\2") - buf.write("\u0487\u047f\3\2\2\2\u0487\u0484\3\2\2\2\u0487\u0486\3") - buf.write("\2\2\2\u0488\u049a\3\2\2\2\u0489\u048a\f\32\2\2\u048a") - buf.write("\u048b\7C\2\2\u048b\u048c\5\u00a6T\2\u048c\u048d\7D\2") - buf.write("\2\u048d\u049a\3\2\2\2\u048e\u048f\f\26\2\2\u048f\u049a") - buf.write("\t\f\2\2\u0490\u0491\f\17\2\2\u0491\u0492\7\34\2\2\u0492") - buf.write("\u049a\5\u00c6d\2\u0493\u0494\f\5\2\2\u0494\u0496\7k\2") - buf.write("\2\u0495\u0497\5\u00caf\2\u0496\u0495\3\2\2\2\u0496\u0497") - buf.write("\3\2\2\2\u0497\u0498\3\2\2\2\u0498\u049a\7q\2\2\u0499") - buf.write("\u044b\3\2\2\2\u0499\u044e\3\2\2\2\u0499\u0451\3\2\2\2") - buf.write("\u0499\u045c\3\2\2\2\u0499\u045f\3\2\2\2\u0499\u0462\3") - buf.write("\2\2\2\u0499\u0465\3\2\2\2\u0499\u0468\3\2\2\2\u0499\u046b") - buf.write("\3\2\2\2\u0499\u046e\3\2\2\2\u0499\u0471\3\2\2\2\u0499") - buf.write("\u0477\3\2\2\2\u0499\u047a\3\2\2\2\u0499\u0489\3\2\2\2") - buf.write("\u0499\u048e\3\2\2\2\u0499\u0490\3\2\2\2\u0499\u0493\3") - buf.write("\2\2\2\u049a\u049d\3\2\2\2\u049b\u0499\3\2\2\2\u049b\u049c") - buf.write("\3\2\2\2\u049c\u00a7\3\2\2\2\u049d\u049b\3\2\2\2\u049e") - buf.write("\u049f\5\u00aaV\2\u049f\u04a0\7j\2\2\u04a0\u04a1\5\u00ac") - buf.write("W\2\u04a1\u00a9\3\2\2\2\u04a2\u04b3\7q\2\2\u04a3\u04a5") - buf.write("\7?\2\2\u04a4\u04a6\5X-\2\u04a5\u04a4\3\2\2\2\u04a5\u04a6") - buf.write("\3\2\2\2\u04a6\u04a7\3\2\2\2\u04a7\u04b3\7@\2\2\u04a8") - buf.write("\u04a9\7?\2\2\u04a9\u04ae\7q\2\2\u04aa\u04ab\7F\2\2\u04ab") - buf.write("\u04ad\7q\2\2\u04ac\u04aa\3\2\2\2\u04ad\u04b0\3\2\2\2") - buf.write("\u04ae\u04ac\3\2\2\2\u04ae\u04af\3\2\2\2\u04af\u04b1\3") - buf.write("\2\2\2\u04b0\u04ae\3\2\2\2\u04b1\u04b3\7@\2\2\u04b2\u04a2") - buf.write("\3\2\2\2\u04b2\u04a3\3\2\2\2\u04b2\u04a8\3\2\2\2\u04b3") - buf.write("\u00ab\3\2\2\2\u04b4\u04b7\5\u00a6T\2\u04b5\u04b7\5\u0080") - buf.write("A\2\u04b6\u04b4\3\2\2\2\u04b6\u04b5\3\2\2\2\u04b7\u00ad") - buf.write("\3\2\2\2\u04b8\u04b9\7?\2\2\u04b9\u04ba\5\u00a6T\2\u04ba") - buf.write("\u04bb\7@\2\2\u04bb\u04cb\3\2\2\2\u04bc\u04cb\7-\2\2\u04bd") - buf.write("\u04cb\7*\2\2\u04be\u04cb\5`\61\2\u04bf\u04cb\7q\2\2\u04c0") - buf.write("\u04c1\5.\30\2\u04c1\u04c2\7G\2\2\u04c2\u04c3\7\13\2\2") - buf.write("\u04c3\u04cb\3\2\2\2\u04c4\u04c8\5\u00c2b\2\u04c5\u04c9") - buf.write("\5\u00ceh\2\u04c6\u04c7\7-\2\2\u04c7\u04c9\5\u00d0i\2") - buf.write("\u04c8\u04c5\3\2\2\2\u04c8\u04c6\3\2\2\2\u04c9\u04cb\3") - buf.write("\2\2\2\u04ca\u04b8\3\2\2\2\u04ca\u04bc\3\2\2\2\u04ca\u04bd") - buf.write("\3\2\2\2\u04ca\u04be\3\2\2\2\u04ca\u04bf\3\2\2\2\u04ca") - buf.write("\u04c0\3\2\2\2\u04ca\u04c4\3\2\2\2\u04cb\u00af\3\2\2\2") - buf.write("\u04cc\u04cd\5P)\2\u04cd\u04ce\7G\2\2\u04ce\u04d0\3\2") - buf.write("\2\2\u04cf\u04cc\3\2\2\2\u04cf\u04d0\3\2\2\2\u04d0\u04d4") - buf.write("\3\2\2\2\u04d1\u04d3\5f\64\2\u04d2\u04d1\3\2\2\2\u04d3") - buf.write("\u04d6\3\2\2\2\u04d4\u04d2\3\2\2\2\u04d4\u04d5\3\2\2\2") - buf.write("\u04d5\u04d7\3\2\2\2\u04d6\u04d4\3\2\2\2\u04d7\u04d9\7") - buf.write("q\2\2\u04d8\u04da\5\u00caf\2\u04d9\u04d8\3\2\2\2\u04d9") - buf.write("\u04da\3\2\2\2\u04da\u00b1\3\2\2\2\u04db\u04dc\5\u00c2") - buf.write("b\2\u04dc\u04dd\5\u00b4[\2\u04dd\u04de\5\u00ba^\2\u04de") - buf.write("\u04e5\3\2\2\2\u04df\u04e2\5\u00b4[\2\u04e0\u04e3\5\u00b8") - buf.write("]\2\u04e1\u04e3\5\u00ba^\2\u04e2\u04e0\3\2\2\2\u04e2\u04e1") - buf.write("\3\2\2\2\u04e3\u04e5\3\2\2\2\u04e4\u04db\3\2\2\2\u04e4") - buf.write("\u04df\3\2\2\2\u04e5\u00b3\3\2\2\2\u04e6\u04e8\7q\2\2") - buf.write("\u04e7\u04e9\5\u00be`\2\u04e8\u04e7\3\2\2\2\u04e8\u04e9") - buf.write("\3\2\2\2\u04e9\u04f1\3\2\2\2\u04ea\u04eb\7G\2\2\u04eb") - buf.write("\u04ed\7q\2\2\u04ec\u04ee\5\u00be`\2\u04ed\u04ec\3\2\2") - buf.write("\2\u04ed\u04ee\3\2\2\2\u04ee\u04f0\3\2\2\2\u04ef\u04ea") - buf.write("\3\2\2\2\u04f0\u04f3\3\2\2\2\u04f1\u04ef\3\2\2\2\u04f1") - buf.write("\u04f2\3\2\2\2\u04f2\u04f6\3\2\2\2\u04f3\u04f1\3\2\2\2") - buf.write("\u04f4\u04f6\5\u00c8e\2\u04f5\u04e6\3\2\2\2\u04f5\u04f4") - buf.write("\3\2\2\2\u04f6\u00b5\3\2\2\2\u04f7\u04f9\7q\2\2\u04f8") - buf.write("\u04fa\5\u00c0a\2\u04f9\u04f8\3\2\2\2\u04f9\u04fa\3\2") - buf.write("\2\2\u04fa\u04fb\3\2\2\2\u04fb\u04fc\5\u00ba^\2\u04fc") - buf.write("\u00b7\3\2\2\2\u04fd\u0519\7C\2\2\u04fe\u0503\7D\2\2\u04ff") - buf.write("\u0500\7C\2\2\u0500\u0502\7D\2\2\u0501\u04ff\3\2\2\2\u0502") - buf.write("\u0505\3\2\2\2\u0503\u0501\3\2\2\2\u0503\u0504\3\2\2\2") - buf.write("\u0504\u0506\3\2\2\2\u0505\u0503\3\2\2\2\u0506\u051a\5") - buf.write("N(\2\u0507\u0508\5\u00a6T\2\u0508\u050f\7D\2\2\u0509\u050a") - buf.write("\7C\2\2\u050a\u050b\5\u00a6T\2\u050b\u050c\7D\2\2\u050c") - buf.write("\u050e\3\2\2\2\u050d\u0509\3\2\2\2\u050e\u0511\3\2\2\2") - buf.write("\u050f\u050d\3\2\2\2\u050f\u0510\3\2\2\2\u0510\u0516\3") - buf.write("\2\2\2\u0511\u050f\3\2\2\2\u0512\u0513\7C\2\2\u0513\u0515") - buf.write("\7D\2\2\u0514\u0512\3\2\2\2\u0515\u0518\3\2\2\2\u0516") - buf.write("\u0514\3\2\2\2\u0516\u0517\3\2\2\2\u0517\u051a\3\2\2\2") - buf.write("\u0518\u0516\3\2\2\2\u0519\u04fe\3\2\2\2\u0519\u0507\3") - buf.write("\2\2\2\u051a\u00b9\3\2\2\2\u051b\u051d\5\u00d0i\2\u051c") - buf.write("\u051e\5\"\22\2\u051d\u051c\3\2\2\2\u051d\u051e\3\2\2") - buf.write("\2\u051e\u00bb\3\2\2\2\u051f\u0520\5\u00c2b\2\u0520\u0521") - buf.write("\5\u00ceh\2\u0521\u00bd\3\2\2\2\u0522\u0523\7J\2\2\u0523") - buf.write("\u0526\7I\2\2\u0524\u0526\5\u00caf\2\u0525\u0522\3\2\2") - buf.write("\2\u0525\u0524\3\2\2\2\u0526\u00bf\3\2\2\2\u0527\u0528") - buf.write("\7J\2\2\u0528\u052b\7I\2\2\u0529\u052b\5\u00c2b\2\u052a") - buf.write("\u0527\3\2\2\2\u052a\u0529\3\2\2\2\u052b\u00c1\3\2\2\2") - buf.write("\u052c\u052d\7J\2\2\u052d\u052e\5\u00c4c\2\u052e\u052f") - buf.write("\7I\2\2\u052f\u00c3\3\2\2\2\u0530\u0535\5\u00c6d\2\u0531") - buf.write("\u0532\7F\2\2\u0532\u0534\5\u00c6d\2\u0533\u0531\3\2\2") - buf.write("\2\u0534\u0537\3\2\2\2\u0535\u0533\3\2\2\2\u0535\u0536") - buf.write("\3\2\2\2\u0536\u00c5\3\2\2\2\u0537\u0535\3\2\2\2\u0538") - buf.write("\u053a\5f\64\2\u0539\u0538\3\2\2\2\u0539\u053a\3\2\2\2") - buf.write("\u053a\u053d\3\2\2\2\u053b\u053e\5P)\2\u053c\u053e\5\u00c8") - buf.write("e\2\u053d\u053b\3\2\2\2\u053d\u053c\3\2\2\2\u053e\u0543") - buf.write("\3\2\2\2\u053f\u0540\7C\2\2\u0540\u0542\7D\2\2\u0541\u053f") - buf.write("\3\2\2\2\u0542\u0545\3\2\2\2\u0543\u0541\3\2\2\2\u0543") - buf.write("\u0544\3\2\2\2\u0544\u00c7\3\2\2\2\u0545\u0543\3\2\2\2") - buf.write("\u0546\u0547\t\r\2\2\u0547\u00c9\3\2\2\2\u0548\u0549\7") - buf.write("J\2\2\u0549\u054e\5R*\2\u054a\u054b\7F\2\2\u054b\u054d") - buf.write("\5R*\2\u054c\u054a\3\2\2\2\u054d\u0550\3\2\2\2\u054e\u054c") - buf.write("\3\2\2\2\u054e\u054f\3\2\2\2\u054f\u0551\3\2\2\2\u0550") - buf.write("\u054e\3\2\2\2\u0551\u0552\7I\2\2\u0552\u00cb\3\2\2\2") - buf.write("\u0553\u055a\5\u00d0i\2\u0554\u0555\7G\2\2\u0555\u0557") - buf.write("\7q\2\2\u0556\u0558\5\u00d0i\2\u0557\u0556\3\2\2\2\u0557") - buf.write("\u0558\3\2\2\2\u0558\u055a\3\2\2\2\u0559\u0553\3\2\2\2") - buf.write("\u0559\u0554\3\2\2\2\u055a\u00cd\3\2\2\2\u055b\u055c\7") - buf.write("*\2\2\u055c\u0560\5\u00ccg\2\u055d\u055e\7q\2\2\u055e") - buf.write("\u0560\5\u00d0i\2\u055f\u055b\3\2\2\2\u055f\u055d\3\2") - buf.write("\2\2\u0560\u00cf\3\2\2\2\u0561\u0563\7?\2\2\u0562\u0564") - buf.write("\5\u00a2R\2\u0563\u0562\3\2\2\2\u0563\u0564\3\2\2\2\u0564") - buf.write("\u0565\3\2\2\2\u0565\u0566\7@\2\2\u0566\u00d1\3\2\2\2") - buf.write("\u00ad\u00d3\u00d8\u00de\u00e6\u00ef\u00f4\u00fb\u0102") - buf.write("\u0105\u010c\u0116\u011a\u011f\u0123\u0127\u0131\u0139") - buf.write("\u013f\u0146\u014d\u0151\u0154\u0157\u0160\u0166\u016b") - buf.write("\u016e\u0174\u017a\u017e\u0186\u018f\u0196\u019c\u01a0") - buf.write("\u01ab\u01b4\u01b9\u01bf\u01c3\u01cf\u01da\u01df\u01e8") - buf.write("\u01f0\u01fa\u0203\u020b\u0210\u0218\u021d\u0227\u0231") - buf.write("\u0237\u023e\u0243\u024b\u024f\u0251\u0257\u025c\u0260") - buf.write("\u0267\u0269\u0270\u0275\u027e\u0283\u0286\u028b\u0294") - buf.write("\u02a0\u02a9\u02b4\u02b7\u02be\u02c8\u02d0\u02d3\u02d6") - buf.write("\u02e3\u02eb\u02f0\u02f8\u02fc\u0300\u0304\u0306\u030a") - buf.write("\u0310\u031b\u0325\u032a\u0333\u0338\u033b\u0342\u034b") - buf.write("\u0362\u0365\u0368\u0370\u0374\u037c\u0382\u038d\u0396") - buf.write("\u039b\u03a5\u03ac\u03b9\u03c2\u03cb\u03d1\u03dc\u03e1") - buf.write("\u03e6\u03eb\u03ef\u03f3\u03f7\u03f9\u03fd\u0402\u0413") - buf.write("\u0419\u041f\u0425\u0428\u043c\u0440\u0445\u0449\u0459") - buf.write("\u0481\u0487\u0496\u0499\u049b\u04a5\u04ae\u04b2\u04b6") - buf.write("\u04c8\u04ca\u04cf\u04d4\u04d9\u04e2\u04e4\u04e8\u04ed") - buf.write("\u04f1\u04f5\u04f9\u0503\u050f\u0516\u0519\u051d\u0525") - buf.write("\u052a\u0535\u0539\u053d\u0543\u054e\u0557\u0559\u055f") - buf.write("\u0563") - return buf.getvalue() - - -class JavaParser ( Parser ): - - grammarFileName = "JavaParser.g4" - - atn = ATNDeserializer().deserialize(serializedATN()) - - decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] - - sharedContextCache = PredictionContextCache() - - literalNames = [ "", "'abstract'", "'assert'", "'boolean'", - "'break'", "'byte'", "'case'", "'catch'", "'char'", - "'class'", "'const'", "'continue'", "'default'", "'do'", - "'double'", "'else'", "'enum'", "'extends'", "'final'", - "'finally'", "'float'", "'for'", "'if'", "'goto'", - "'implements'", "'import'", "'instanceof'", "'int'", - "'interface'", "'long'", "'native'", "'new'", "'package'", - "'private'", "'protected'", "'public'", "'return'", - "'short'", "'static'", "'strictfp'", "'super'", "'switch'", - "'synchronized'", "'this'", "'throw'", "'throws'", - "'transient'", "'try'", "'void'", "'volatile'", "'while'", - "", "", "", "", - "", "", "", "", - "", "'null'", "'('", "')'", "'{'", "'}'", - "'['", "']'", "';'", "','", "'.'", "'='", "'>'", "'<'", - "'!'", "'~'", "'?'", "':'", "'=='", "'<='", "'>='", - "'!='", "'&&'", "'||'", "'++'", "'--'", "'+'", "'-'", - "'*'", "'/'", "'&'", "'|'", "'^'", "'%'", "'+='", "'-='", - "'*='", "'/='", "'&='", "'|='", "'^='", "'%='", "'<<='", - "'>>='", "'>>>='", "'->'", "'::'", "'@'", "'...'" ] - - symbolicNames = [ "", "ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", - "BYTE", "CASE", "CATCH", "CHAR", "CLASS", "CONST", - "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE", "ENUM", - "EXTENDS", "FINAL", "FINALLY", "FLOAT", "FOR", "IF", - "GOTO", "IMPLEMENTS", "IMPORT", "INSTANCEOF", "INT", - "INTERFACE", "LONG", "NATIVE", "NEW", "PACKAGE", "PRIVATE", - "PROTECTED", "PUBLIC", "RETURN", "SHORT", "STATIC", - "STRICTFP", "SUPER", "SWITCH", "SYNCHRONIZED", "THIS", - "THROW", "THROWS", "TRANSIENT", "TRY", "VOID", "VOLATILE", - "WHILE", "DECIMAL_LITERAL", "HEX_LITERAL", "OCT_LITERAL", - "BINARY_LITERAL", "FLOAT_LITERAL", "HEX_FLOAT_LITERAL", - "BOOL_LITERAL", "CHAR_LITERAL", "STRING_LITERAL", - "NULL_LITERAL", "LPAREN", "RPAREN", "LBRACE", "RBRACE", - "LBRACK", "RBRACK", "SEMI", "COMMA", "DOT", "ASSIGN", - "GT", "LT", "BANG", "TILDE", "QUESTION", "COLON", - "EQUAL", "LE", "GE", "NOTEQUAL", "AND", "OR", "INC", - "DEC", "ADD", "SUB", "MUL", "DIV", "BITAND", "BITOR", - "CARET", "MOD", "ADD_ASSIGN", "SUB_ASSIGN", "MUL_ASSIGN", - "DIV_ASSIGN", "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", - "MOD_ASSIGN", "LSHIFT_ASSIGN", "RSHIFT_ASSIGN", "URSHIFT_ASSIGN", - "ARROW", "COLONCOLON", "AT", "ELLIPSIS", "WS", "COMMENT", - "LINE_COMMENT", "IDENTIFIER" ] - - RULE_compilationUnit = 0 - RULE_packageDeclaration = 1 - RULE_importDeclaration = 2 - RULE_typeDeclaration = 3 - RULE_modifier = 4 - RULE_classOrInterfaceModifier = 5 - RULE_variableModifier = 6 - RULE_classDeclaration = 7 - RULE_typeParameters = 8 - RULE_typeParameter = 9 - RULE_typeBound = 10 - RULE_enumDeclaration = 11 - RULE_enumConstants = 12 - RULE_enumConstant = 13 - RULE_enumBodyDeclarations = 14 - RULE_interfaceDeclaration = 15 - RULE_classBody = 16 - RULE_interfaceBody = 17 - RULE_classBodyDeclaration = 18 - RULE_memberDeclaration = 19 - RULE_methodDeclaration = 20 - RULE_methodBody = 21 - RULE_typeTypeOrVoid = 22 - RULE_genericMethodDeclaration = 23 - RULE_genericConstructorDeclaration = 24 - RULE_constructorDeclaration = 25 - RULE_fieldDeclaration = 26 - RULE_interfaceBodyDeclaration = 27 - RULE_interfaceMemberDeclaration = 28 - RULE_constDeclaration = 29 - RULE_constantDeclarator = 30 - RULE_interfaceMethodDeclaration = 31 - RULE_interfaceMethodModifier = 32 - RULE_genericInterfaceMethodDeclaration = 33 - RULE_variableDeclarators = 34 - RULE_variableDeclarator = 35 - RULE_variableDeclaratorId = 36 - RULE_variableInitializer = 37 - RULE_arrayInitializer = 38 - RULE_classOrInterfaceType = 39 - RULE_typeArgument = 40 - RULE_qualifiedNameList = 41 - RULE_formalParameters = 42 - RULE_formalParameterList = 43 - RULE_formalParameter = 44 - RULE_lastFormalParameter = 45 - RULE_qualifiedName = 46 - RULE_literal = 47 - RULE_integerLiteral = 48 - RULE_floatLiteral = 49 - RULE_annotation = 50 - RULE_elementValuePairs = 51 - RULE_elementValuePair = 52 - RULE_elementValue = 53 - RULE_elementValueArrayInitializer = 54 - RULE_annotationTypeDeclaration = 55 - RULE_annotationTypeBody = 56 - RULE_annotationTypeElementDeclaration = 57 - RULE_annotationTypeElementRest = 58 - RULE_annotationMethodOrConstantRest = 59 - RULE_annotationMethodRest = 60 - RULE_annotationConstantRest = 61 - RULE_defaultValue = 62 - RULE_block = 63 - RULE_blockStatement = 64 - RULE_localVariableDeclaration = 65 - RULE_localTypeDeclaration = 66 - RULE_statement = 67 - RULE_catchClause = 68 - RULE_catchType = 69 - RULE_finallyBlock = 70 - RULE_resourceSpecification = 71 - RULE_resources = 72 - RULE_resource = 73 - RULE_switchBlockStatementGroup = 74 - RULE_switchLabel = 75 - RULE_forControl = 76 - RULE_forInit = 77 - RULE_enhancedForControl = 78 - RULE_parExpression = 79 - RULE_expressionList = 80 - RULE_methodCall = 81 - RULE_expression = 82 - RULE_lambdaExpression = 83 - RULE_lambdaParameters = 84 - RULE_lambdaBody = 85 - RULE_primary = 86 - RULE_classType = 87 - RULE_creator = 88 - RULE_createdName = 89 - RULE_innerCreator = 90 - RULE_arrayCreatorRest = 91 - RULE_classCreatorRest = 92 - RULE_explicitGenericInvocation = 93 - RULE_typeArgumentsOrDiamond = 94 - RULE_nonWildcardTypeArgumentsOrDiamond = 95 - RULE_nonWildcardTypeArguments = 96 - RULE_typeList = 97 - RULE_typeType = 98 - RULE_primitiveType = 99 - RULE_typeArguments = 100 - RULE_superSuffix = 101 - RULE_explicitGenericInvocationSuffix = 102 - RULE_arguments = 103 - - ruleNames = [ "compilationUnit", "packageDeclaration", "importDeclaration", - "typeDeclaration", "modifier", "classOrInterfaceModifier", - "variableModifier", "classDeclaration", "typeParameters", - "typeParameter", "typeBound", "enumDeclaration", "enumConstants", - "enumConstant", "enumBodyDeclarations", "interfaceDeclaration", - "classBody", "interfaceBody", "classBodyDeclaration", - "memberDeclaration", "methodDeclaration", "methodBody", - "typeTypeOrVoid", "genericMethodDeclaration", "genericConstructorDeclaration", - "constructorDeclaration", "fieldDeclaration", "interfaceBodyDeclaration", - "interfaceMemberDeclaration", "constDeclaration", "constantDeclarator", - "interfaceMethodDeclaration", "interfaceMethodModifier", - "genericInterfaceMethodDeclaration", "variableDeclarators", - "variableDeclarator", "variableDeclaratorId", "variableInitializer", - "arrayInitializer", "classOrInterfaceType", "typeArgument", - "qualifiedNameList", "formalParameters", "formalParameterList", - "formalParameter", "lastFormalParameter", "qualifiedName", - "literal", "integerLiteral", "floatLiteral", "annotation", - "elementValuePairs", "elementValuePair", "elementValue", - "elementValueArrayInitializer", "annotationTypeDeclaration", - "annotationTypeBody", "annotationTypeElementDeclaration", - "annotationTypeElementRest", "annotationMethodOrConstantRest", - "annotationMethodRest", "annotationConstantRest", "defaultValue", - "block", "blockStatement", "localVariableDeclaration", - "localTypeDeclaration", "statement", "catchClause", "catchType", - "finallyBlock", "resourceSpecification", "resources", - "resource", "switchBlockStatementGroup", "switchLabel", - "forControl", "forInit", "enhancedForControl", "parExpression", - "expressionList", "methodCall", "expression", "lambdaExpression", - "lambdaParameters", "lambdaBody", "primary", "classType", - "creator", "createdName", "innerCreator", "arrayCreatorRest", - "classCreatorRest", "explicitGenericInvocation", "typeArgumentsOrDiamond", - "nonWildcardTypeArgumentsOrDiamond", "nonWildcardTypeArguments", - "typeList", "typeType", "primitiveType", "typeArguments", - "superSuffix", "explicitGenericInvocationSuffix", "arguments" ] - - EOF = Token.EOF - ABSTRACT=1 - ASSERT=2 - BOOLEAN=3 - BREAK=4 - BYTE=5 - CASE=6 - CATCH=7 - CHAR=8 - CLASS=9 - CONST=10 - CONTINUE=11 - DEFAULT=12 - DO=13 - DOUBLE=14 - ELSE=15 - ENUM=16 - EXTENDS=17 - FINAL=18 - FINALLY=19 - FLOAT=20 - FOR=21 - IF=22 - GOTO=23 - IMPLEMENTS=24 - IMPORT=25 - INSTANCEOF=26 - INT=27 - INTERFACE=28 - LONG=29 - NATIVE=30 - NEW=31 - PACKAGE=32 - PRIVATE=33 - PROTECTED=34 - PUBLIC=35 - RETURN=36 - SHORT=37 - STATIC=38 - STRICTFP=39 - SUPER=40 - SWITCH=41 - SYNCHRONIZED=42 - THIS=43 - THROW=44 - THROWS=45 - TRANSIENT=46 - TRY=47 - VOID=48 - VOLATILE=49 - WHILE=50 - DECIMAL_LITERAL=51 - HEX_LITERAL=52 - OCT_LITERAL=53 - BINARY_LITERAL=54 - FLOAT_LITERAL=55 - HEX_FLOAT_LITERAL=56 - BOOL_LITERAL=57 - CHAR_LITERAL=58 - STRING_LITERAL=59 - NULL_LITERAL=60 - LPAREN=61 - RPAREN=62 - LBRACE=63 - RBRACE=64 - LBRACK=65 - RBRACK=66 - SEMI=67 - COMMA=68 - DOT=69 - ASSIGN=70 - GT=71 - LT=72 - BANG=73 - TILDE=74 - QUESTION=75 - COLON=76 - EQUAL=77 - LE=78 - GE=79 - NOTEQUAL=80 - AND=81 - OR=82 - INC=83 - DEC=84 - ADD=85 - SUB=86 - MUL=87 - DIV=88 - BITAND=89 - BITOR=90 - CARET=91 - MOD=92 - ADD_ASSIGN=93 - SUB_ASSIGN=94 - MUL_ASSIGN=95 - DIV_ASSIGN=96 - AND_ASSIGN=97 - OR_ASSIGN=98 - XOR_ASSIGN=99 - MOD_ASSIGN=100 - LSHIFT_ASSIGN=101 - RSHIFT_ASSIGN=102 - URSHIFT_ASSIGN=103 - ARROW=104 - COLONCOLON=105 - AT=106 - ELLIPSIS=107 - WS=108 - COMMENT=109 - LINE_COMMENT=110 - IDENTIFIER=111 - - def __init__(self, input:TokenStream, output:TextIO = sys.stdout): - super().__init__(input, output) - self.checkVersion("4.7.1") - self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) - self._predicates = None - - - - class CompilationUnitContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def EOF(self): - return self.getToken(JavaParser.EOF, 0) - - def packageDeclaration(self): - return self.getTypedRuleContext(JavaParser.PackageDeclarationContext,0) - - - def importDeclaration(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.ImportDeclarationContext) - else: - return self.getTypedRuleContext(JavaParser.ImportDeclarationContext,i) - - - def typeDeclaration(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.TypeDeclarationContext) - else: - return self.getTypedRuleContext(JavaParser.TypeDeclarationContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_compilationUnit - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCompilationUnit" ): - listener.enterCompilationUnit(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCompilationUnit" ): - listener.exitCompilationUnit(self) - - - - - def compilationUnit(self): - - localctx = JavaParser.CompilationUnitContext(self, self._ctx, self.state) - self.enterRule(localctx, 0, self.RULE_compilationUnit) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 209 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,0,self._ctx) - if la_ == 1: - self.state = 208 - self.packageDeclaration() - - - self.state = 214 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==JavaParser.IMPORT: - self.state = 211 - self.importDeclaration() - self.state = 216 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 220 - self._errHandler.sync(self) - _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << JavaParser.ABSTRACT) | (1 << JavaParser.CLASS) | (1 << JavaParser.ENUM) | (1 << JavaParser.FINAL) | (1 << JavaParser.INTERFACE) | (1 << JavaParser.PRIVATE) | (1 << JavaParser.PROTECTED) | (1 << JavaParser.PUBLIC) | (1 << JavaParser.STATIC) | (1 << JavaParser.STRICTFP))) != 0) or _la==JavaParser.SEMI or _la==JavaParser.AT: - self.state = 217 - self.typeDeclaration() - self.state = 222 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 223 - self.match(JavaParser.EOF) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class PackageDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def PACKAGE(self): - return self.getToken(JavaParser.PACKAGE, 0) - - def qualifiedName(self): - return self.getTypedRuleContext(JavaParser.QualifiedNameContext,0) - - - def annotation(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.AnnotationContext) - else: - return self.getTypedRuleContext(JavaParser.AnnotationContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_packageDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPackageDeclaration" ): - listener.enterPackageDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPackageDeclaration" ): - listener.exitPackageDeclaration(self) - - - - - def packageDeclaration(self): - - localctx = JavaParser.PackageDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 2, self.RULE_packageDeclaration) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 228 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==JavaParser.AT: - self.state = 225 - self.annotation() - self.state = 230 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 231 - self.match(JavaParser.PACKAGE) - self.state = 232 - self.qualifiedName() - self.state = 233 - self.match(JavaParser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ImportDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IMPORT(self): - return self.getToken(JavaParser.IMPORT, 0) - - def qualifiedName(self): - return self.getTypedRuleContext(JavaParser.QualifiedNameContext,0) - - - def STATIC(self): - return self.getToken(JavaParser.STATIC, 0) - - def getRuleIndex(self): - return JavaParser.RULE_importDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterImportDeclaration" ): - listener.enterImportDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitImportDeclaration" ): - listener.exitImportDeclaration(self) - - - - - def importDeclaration(self): - - localctx = JavaParser.ImportDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 4, self.RULE_importDeclaration) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 235 - self.match(JavaParser.IMPORT) - self.state = 237 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.STATIC: - self.state = 236 - self.match(JavaParser.STATIC) - - - self.state = 239 - self.qualifiedName() - self.state = 242 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.DOT: - self.state = 240 - self.match(JavaParser.DOT) - self.state = 241 - self.match(JavaParser.MUL) - - - self.state = 244 - self.match(JavaParser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class TypeDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def classDeclaration(self): - return self.getTypedRuleContext(JavaParser.ClassDeclarationContext,0) - - - def enumDeclaration(self): - return self.getTypedRuleContext(JavaParser.EnumDeclarationContext,0) - - - def interfaceDeclaration(self): - return self.getTypedRuleContext(JavaParser.InterfaceDeclarationContext,0) - - - def annotationTypeDeclaration(self): - return self.getTypedRuleContext(JavaParser.AnnotationTypeDeclarationContext,0) - - - def classOrInterfaceModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.ClassOrInterfaceModifierContext) - else: - return self.getTypedRuleContext(JavaParser.ClassOrInterfaceModifierContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_typeDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypeDeclaration" ): - listener.enterTypeDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypeDeclaration" ): - listener.exitTypeDeclaration(self) - - - - - def typeDeclaration(self): - - localctx = JavaParser.TypeDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 6, self.RULE_typeDeclaration) - try: - self.state = 259 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.ABSTRACT, JavaParser.CLASS, JavaParser.ENUM, JavaParser.FINAL, JavaParser.INTERFACE, JavaParser.PRIVATE, JavaParser.PROTECTED, JavaParser.PUBLIC, JavaParser.STATIC, JavaParser.STRICTFP, JavaParser.AT]: - self.enterOuterAlt(localctx, 1) - self.state = 249 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,6,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 246 - self.classOrInterfaceModifier() - self.state = 251 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,6,self._ctx) - - self.state = 256 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.CLASS]: - self.state = 252 - self.classDeclaration() - pass - elif token in [JavaParser.ENUM]: - self.state = 253 - self.enumDeclaration() - pass - elif token in [JavaParser.INTERFACE]: - self.state = 254 - self.interfaceDeclaration() - pass - elif token in [JavaParser.AT]: - self.state = 255 - self.annotationTypeDeclaration() - pass - else: - raise NoViableAltException(self) - - pass - elif token in [JavaParser.SEMI]: - self.enterOuterAlt(localctx, 2) - self.state = 258 - self.match(JavaParser.SEMI) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ModifierContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def classOrInterfaceModifier(self): - return self.getTypedRuleContext(JavaParser.ClassOrInterfaceModifierContext,0) - - - def NATIVE(self): - return self.getToken(JavaParser.NATIVE, 0) - - def SYNCHRONIZED(self): - return self.getToken(JavaParser.SYNCHRONIZED, 0) - - def TRANSIENT(self): - return self.getToken(JavaParser.TRANSIENT, 0) - - def VOLATILE(self): - return self.getToken(JavaParser.VOLATILE, 0) - - def getRuleIndex(self): - return JavaParser.RULE_modifier - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterModifier" ): - listener.enterModifier(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitModifier" ): - listener.exitModifier(self) - - - - - def modifier(self): - - localctx = JavaParser.ModifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 8, self.RULE_modifier) - try: - self.state = 266 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.ABSTRACT, JavaParser.FINAL, JavaParser.PRIVATE, JavaParser.PROTECTED, JavaParser.PUBLIC, JavaParser.STATIC, JavaParser.STRICTFP, JavaParser.AT]: - self.enterOuterAlt(localctx, 1) - self.state = 261 - self.classOrInterfaceModifier() - pass - elif token in [JavaParser.NATIVE]: - self.enterOuterAlt(localctx, 2) - self.state = 262 - self.match(JavaParser.NATIVE) - pass - elif token in [JavaParser.SYNCHRONIZED]: - self.enterOuterAlt(localctx, 3) - self.state = 263 - self.match(JavaParser.SYNCHRONIZED) - pass - elif token in [JavaParser.TRANSIENT]: - self.enterOuterAlt(localctx, 4) - self.state = 264 - self.match(JavaParser.TRANSIENT) - pass - elif token in [JavaParser.VOLATILE]: - self.enterOuterAlt(localctx, 5) - self.state = 265 - self.match(JavaParser.VOLATILE) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ClassOrInterfaceModifierContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def annotation(self): - return self.getTypedRuleContext(JavaParser.AnnotationContext,0) - - - def PUBLIC(self): - return self.getToken(JavaParser.PUBLIC, 0) - - def PROTECTED(self): - return self.getToken(JavaParser.PROTECTED, 0) - - def PRIVATE(self): - return self.getToken(JavaParser.PRIVATE, 0) - - def STATIC(self): - return self.getToken(JavaParser.STATIC, 0) - - def ABSTRACT(self): - return self.getToken(JavaParser.ABSTRACT, 0) - - def FINAL(self): - return self.getToken(JavaParser.FINAL, 0) - - def STRICTFP(self): - return self.getToken(JavaParser.STRICTFP, 0) - - def getRuleIndex(self): - return JavaParser.RULE_classOrInterfaceModifier - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterClassOrInterfaceModifier" ): - listener.enterClassOrInterfaceModifier(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitClassOrInterfaceModifier" ): - listener.exitClassOrInterfaceModifier(self) - - - - - def classOrInterfaceModifier(self): - - localctx = JavaParser.ClassOrInterfaceModifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 10, self.RULE_classOrInterfaceModifier) - try: - self.state = 276 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.AT]: - self.enterOuterAlt(localctx, 1) - self.state = 268 - self.annotation() - pass - elif token in [JavaParser.PUBLIC]: - self.enterOuterAlt(localctx, 2) - self.state = 269 - self.match(JavaParser.PUBLIC) - pass - elif token in [JavaParser.PROTECTED]: - self.enterOuterAlt(localctx, 3) - self.state = 270 - self.match(JavaParser.PROTECTED) - pass - elif token in [JavaParser.PRIVATE]: - self.enterOuterAlt(localctx, 4) - self.state = 271 - self.match(JavaParser.PRIVATE) - pass - elif token in [JavaParser.STATIC]: - self.enterOuterAlt(localctx, 5) - self.state = 272 - self.match(JavaParser.STATIC) - pass - elif token in [JavaParser.ABSTRACT]: - self.enterOuterAlt(localctx, 6) - self.state = 273 - self.match(JavaParser.ABSTRACT) - pass - elif token in [JavaParser.FINAL]: - self.enterOuterAlt(localctx, 7) - self.state = 274 - self.match(JavaParser.FINAL) - pass - elif token in [JavaParser.STRICTFP]: - self.enterOuterAlt(localctx, 8) - self.state = 275 - self.match(JavaParser.STRICTFP) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class VariableModifierContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FINAL(self): - return self.getToken(JavaParser.FINAL, 0) - - def annotation(self): - return self.getTypedRuleContext(JavaParser.AnnotationContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_variableModifier - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVariableModifier" ): - listener.enterVariableModifier(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVariableModifier" ): - listener.exitVariableModifier(self) - - - - - def variableModifier(self): - - localctx = JavaParser.VariableModifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 12, self.RULE_variableModifier) - try: - self.state = 280 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.FINAL]: - self.enterOuterAlt(localctx, 1) - self.state = 278 - self.match(JavaParser.FINAL) - pass - elif token in [JavaParser.AT]: - self.enterOuterAlt(localctx, 2) - self.state = 279 - self.annotation() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ClassDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CLASS(self): - return self.getToken(JavaParser.CLASS, 0) - - def IDENTIFIER(self): - return self.getToken(JavaParser.IDENTIFIER, 0) - - def classBody(self): - return self.getTypedRuleContext(JavaParser.ClassBodyContext,0) - - - def typeParameters(self): - return self.getTypedRuleContext(JavaParser.TypeParametersContext,0) - - - def EXTENDS(self): - return self.getToken(JavaParser.EXTENDS, 0) - - def typeType(self): - return self.getTypedRuleContext(JavaParser.TypeTypeContext,0) - - - def IMPLEMENTS(self): - return self.getToken(JavaParser.IMPLEMENTS, 0) - - def typeList(self): - return self.getTypedRuleContext(JavaParser.TypeListContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_classDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterClassDeclaration" ): - listener.enterClassDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitClassDeclaration" ): - listener.exitClassDeclaration(self) - - - - - def classDeclaration(self): - - localctx = JavaParser.ClassDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 14, self.RULE_classDeclaration) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 282 - self.match(JavaParser.CLASS) - self.state = 283 - self.match(JavaParser.IDENTIFIER) - self.state = 285 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.LT: - self.state = 284 - self.typeParameters() - - - self.state = 289 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.EXTENDS: - self.state = 287 - self.match(JavaParser.EXTENDS) - self.state = 288 - self.typeType() - - - self.state = 293 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.IMPLEMENTS: - self.state = 291 - self.match(JavaParser.IMPLEMENTS) - self.state = 292 - self.typeList() - - - self.state = 295 - self.classBody() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class TypeParametersContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def typeParameter(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.TypeParameterContext) - else: - return self.getTypedRuleContext(JavaParser.TypeParameterContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_typeParameters - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypeParameters" ): - listener.enterTypeParameters(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypeParameters" ): - listener.exitTypeParameters(self) - - - - - def typeParameters(self): - - localctx = JavaParser.TypeParametersContext(self, self._ctx, self.state) - self.enterRule(localctx, 16, self.RULE_typeParameters) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 297 - self.match(JavaParser.LT) - self.state = 298 - self.typeParameter() - self.state = 303 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==JavaParser.COMMA: - self.state = 299 - self.match(JavaParser.COMMA) - self.state = 300 - self.typeParameter() - self.state = 305 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 306 - self.match(JavaParser.GT) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class TypeParameterContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IDENTIFIER(self): - return self.getToken(JavaParser.IDENTIFIER, 0) - - def annotation(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.AnnotationContext) - else: - return self.getTypedRuleContext(JavaParser.AnnotationContext,i) - - - def EXTENDS(self): - return self.getToken(JavaParser.EXTENDS, 0) - - def typeBound(self): - return self.getTypedRuleContext(JavaParser.TypeBoundContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_typeParameter - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypeParameter" ): - listener.enterTypeParameter(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypeParameter" ): - listener.exitTypeParameter(self) - - - - - def typeParameter(self): - - localctx = JavaParser.TypeParameterContext(self, self._ctx, self.state) - self.enterRule(localctx, 18, self.RULE_typeParameter) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 311 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==JavaParser.AT: - self.state = 308 - self.annotation() - self.state = 313 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 314 - self.match(JavaParser.IDENTIFIER) - self.state = 317 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.EXTENDS: - self.state = 315 - self.match(JavaParser.EXTENDS) - self.state = 316 - self.typeBound() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class TypeBoundContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def typeType(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.TypeTypeContext) - else: - return self.getTypedRuleContext(JavaParser.TypeTypeContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_typeBound - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypeBound" ): - listener.enterTypeBound(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypeBound" ): - listener.exitTypeBound(self) - - - - - def typeBound(self): - - localctx = JavaParser.TypeBoundContext(self, self._ctx, self.state) - self.enterRule(localctx, 20, self.RULE_typeBound) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 319 - self.typeType() - self.state = 324 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==JavaParser.BITAND: - self.state = 320 - self.match(JavaParser.BITAND) - self.state = 321 - self.typeType() - self.state = 326 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class EnumDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ENUM(self): - return self.getToken(JavaParser.ENUM, 0) - - def IDENTIFIER(self): - return self.getToken(JavaParser.IDENTIFIER, 0) - - def IMPLEMENTS(self): - return self.getToken(JavaParser.IMPLEMENTS, 0) - - def typeList(self): - return self.getTypedRuleContext(JavaParser.TypeListContext,0) - - - def enumConstants(self): - return self.getTypedRuleContext(JavaParser.EnumConstantsContext,0) - - - def enumBodyDeclarations(self): - return self.getTypedRuleContext(JavaParser.EnumBodyDeclarationsContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_enumDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEnumDeclaration" ): - listener.enterEnumDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEnumDeclaration" ): - listener.exitEnumDeclaration(self) - - - - - def enumDeclaration(self): - - localctx = JavaParser.EnumDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 22, self.RULE_enumDeclaration) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 327 - self.match(JavaParser.ENUM) - self.state = 328 - self.match(JavaParser.IDENTIFIER) - self.state = 331 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.IMPLEMENTS: - self.state = 329 - self.match(JavaParser.IMPLEMENTS) - self.state = 330 - self.typeList() - - - self.state = 333 - self.match(JavaParser.LBRACE) - self.state = 335 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.AT or _la==JavaParser.IDENTIFIER: - self.state = 334 - self.enumConstants() - - - self.state = 338 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.COMMA: - self.state = 337 - self.match(JavaParser.COMMA) - - - self.state = 341 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.SEMI: - self.state = 340 - self.enumBodyDeclarations() - - - self.state = 343 - self.match(JavaParser.RBRACE) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class EnumConstantsContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def enumConstant(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.EnumConstantContext) - else: - return self.getTypedRuleContext(JavaParser.EnumConstantContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_enumConstants - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEnumConstants" ): - listener.enterEnumConstants(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEnumConstants" ): - listener.exitEnumConstants(self) - - - - - def enumConstants(self): - - localctx = JavaParser.EnumConstantsContext(self, self._ctx, self.state) - self.enterRule(localctx, 24, self.RULE_enumConstants) - try: - self.enterOuterAlt(localctx, 1) - self.state = 345 - self.enumConstant() - self.state = 350 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,23,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 346 - self.match(JavaParser.COMMA) - self.state = 347 - self.enumConstant() - self.state = 352 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,23,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class EnumConstantContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IDENTIFIER(self): - return self.getToken(JavaParser.IDENTIFIER, 0) - - def annotation(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.AnnotationContext) - else: - return self.getTypedRuleContext(JavaParser.AnnotationContext,i) - - - def arguments(self): - return self.getTypedRuleContext(JavaParser.ArgumentsContext,0) - - - def classBody(self): - return self.getTypedRuleContext(JavaParser.ClassBodyContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_enumConstant - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEnumConstant" ): - listener.enterEnumConstant(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEnumConstant" ): - listener.exitEnumConstant(self) - - - - - def enumConstant(self): - - localctx = JavaParser.EnumConstantContext(self, self._ctx, self.state) - self.enterRule(localctx, 26, self.RULE_enumConstant) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 356 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==JavaParser.AT: - self.state = 353 - self.annotation() - self.state = 358 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 359 - self.match(JavaParser.IDENTIFIER) - self.state = 361 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.LPAREN: - self.state = 360 - self.arguments() - - - self.state = 364 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.LBRACE: - self.state = 363 - self.classBody() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class EnumBodyDeclarationsContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def classBodyDeclaration(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.ClassBodyDeclarationContext) - else: - return self.getTypedRuleContext(JavaParser.ClassBodyDeclarationContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_enumBodyDeclarations - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEnumBodyDeclarations" ): - listener.enterEnumBodyDeclarations(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEnumBodyDeclarations" ): - listener.exitEnumBodyDeclarations(self) - - - - - def enumBodyDeclarations(self): - - localctx = JavaParser.EnumBodyDeclarationsContext(self, self._ctx, self.state) - self.enterRule(localctx, 28, self.RULE_enumBodyDeclarations) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 366 - self.match(JavaParser.SEMI) - self.state = 370 - self._errHandler.sync(self) - _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << JavaParser.ABSTRACT) | (1 << JavaParser.BOOLEAN) | (1 << JavaParser.BYTE) | (1 << JavaParser.CHAR) | (1 << JavaParser.CLASS) | (1 << JavaParser.DOUBLE) | (1 << JavaParser.ENUM) | (1 << JavaParser.FINAL) | (1 << JavaParser.FLOAT) | (1 << JavaParser.INT) | (1 << JavaParser.INTERFACE) | (1 << JavaParser.LONG) | (1 << JavaParser.NATIVE) | (1 << JavaParser.PRIVATE) | (1 << JavaParser.PROTECTED) | (1 << JavaParser.PUBLIC) | (1 << JavaParser.SHORT) | (1 << JavaParser.STATIC) | (1 << JavaParser.STRICTFP) | (1 << JavaParser.SYNCHRONIZED) | (1 << JavaParser.TRANSIENT) | (1 << JavaParser.VOID) | (1 << JavaParser.VOLATILE) | (1 << JavaParser.LBRACE))) != 0) or ((((_la - 67)) & ~0x3f) == 0 and ((1 << (_la - 67)) & ((1 << (JavaParser.SEMI - 67)) | (1 << (JavaParser.LT - 67)) | (1 << (JavaParser.AT - 67)) | (1 << (JavaParser.IDENTIFIER - 67)))) != 0): - self.state = 367 - self.classBodyDeclaration() - self.state = 372 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class InterfaceDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def INTERFACE(self): - return self.getToken(JavaParser.INTERFACE, 0) - - def IDENTIFIER(self): - return self.getToken(JavaParser.IDENTIFIER, 0) - - def interfaceBody(self): - return self.getTypedRuleContext(JavaParser.InterfaceBodyContext,0) - - - def typeParameters(self): - return self.getTypedRuleContext(JavaParser.TypeParametersContext,0) - - - def EXTENDS(self): - return self.getToken(JavaParser.EXTENDS, 0) - - def typeList(self): - return self.getTypedRuleContext(JavaParser.TypeListContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_interfaceDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInterfaceDeclaration" ): - listener.enterInterfaceDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInterfaceDeclaration" ): - listener.exitInterfaceDeclaration(self) - - - - - def interfaceDeclaration(self): - - localctx = JavaParser.InterfaceDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 30, self.RULE_interfaceDeclaration) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 373 - self.match(JavaParser.INTERFACE) - self.state = 374 - self.match(JavaParser.IDENTIFIER) - self.state = 376 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.LT: - self.state = 375 - self.typeParameters() - - - self.state = 380 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.EXTENDS: - self.state = 378 - self.match(JavaParser.EXTENDS) - self.state = 379 - self.typeList() - - - self.state = 382 - self.interfaceBody() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ClassBodyContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def classBodyDeclaration(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.ClassBodyDeclarationContext) - else: - return self.getTypedRuleContext(JavaParser.ClassBodyDeclarationContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_classBody - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterClassBody" ): - listener.enterClassBody(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitClassBody" ): - listener.exitClassBody(self) - - - - - def classBody(self): - - localctx = JavaParser.ClassBodyContext(self, self._ctx, self.state) - self.enterRule(localctx, 32, self.RULE_classBody) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 384 - self.match(JavaParser.LBRACE) - self.state = 388 - self._errHandler.sync(self) - _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << JavaParser.ABSTRACT) | (1 << JavaParser.BOOLEAN) | (1 << JavaParser.BYTE) | (1 << JavaParser.CHAR) | (1 << JavaParser.CLASS) | (1 << JavaParser.DOUBLE) | (1 << JavaParser.ENUM) | (1 << JavaParser.FINAL) | (1 << JavaParser.FLOAT) | (1 << JavaParser.INT) | (1 << JavaParser.INTERFACE) | (1 << JavaParser.LONG) | (1 << JavaParser.NATIVE) | (1 << JavaParser.PRIVATE) | (1 << JavaParser.PROTECTED) | (1 << JavaParser.PUBLIC) | (1 << JavaParser.SHORT) | (1 << JavaParser.STATIC) | (1 << JavaParser.STRICTFP) | (1 << JavaParser.SYNCHRONIZED) | (1 << JavaParser.TRANSIENT) | (1 << JavaParser.VOID) | (1 << JavaParser.VOLATILE) | (1 << JavaParser.LBRACE))) != 0) or ((((_la - 67)) & ~0x3f) == 0 and ((1 << (_la - 67)) & ((1 << (JavaParser.SEMI - 67)) | (1 << (JavaParser.LT - 67)) | (1 << (JavaParser.AT - 67)) | (1 << (JavaParser.IDENTIFIER - 67)))) != 0): - self.state = 385 - self.classBodyDeclaration() - self.state = 390 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 391 - self.match(JavaParser.RBRACE) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class InterfaceBodyContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def interfaceBodyDeclaration(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.InterfaceBodyDeclarationContext) - else: - return self.getTypedRuleContext(JavaParser.InterfaceBodyDeclarationContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_interfaceBody - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInterfaceBody" ): - listener.enterInterfaceBody(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInterfaceBody" ): - listener.exitInterfaceBody(self) - - - - - def interfaceBody(self): - - localctx = JavaParser.InterfaceBodyContext(self, self._ctx, self.state) - self.enterRule(localctx, 34, self.RULE_interfaceBody) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 393 - self.match(JavaParser.LBRACE) - self.state = 397 - self._errHandler.sync(self) - _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << JavaParser.ABSTRACT) | (1 << JavaParser.BOOLEAN) | (1 << JavaParser.BYTE) | (1 << JavaParser.CHAR) | (1 << JavaParser.CLASS) | (1 << JavaParser.DEFAULT) | (1 << JavaParser.DOUBLE) | (1 << JavaParser.ENUM) | (1 << JavaParser.FINAL) | (1 << JavaParser.FLOAT) | (1 << JavaParser.INT) | (1 << JavaParser.INTERFACE) | (1 << JavaParser.LONG) | (1 << JavaParser.NATIVE) | (1 << JavaParser.PRIVATE) | (1 << JavaParser.PROTECTED) | (1 << JavaParser.PUBLIC) | (1 << JavaParser.SHORT) | (1 << JavaParser.STATIC) | (1 << JavaParser.STRICTFP) | (1 << JavaParser.SYNCHRONIZED) | (1 << JavaParser.TRANSIENT) | (1 << JavaParser.VOID) | (1 << JavaParser.VOLATILE))) != 0) or ((((_la - 67)) & ~0x3f) == 0 and ((1 << (_la - 67)) & ((1 << (JavaParser.SEMI - 67)) | (1 << (JavaParser.LT - 67)) | (1 << (JavaParser.AT - 67)) | (1 << (JavaParser.IDENTIFIER - 67)))) != 0): - self.state = 394 - self.interfaceBodyDeclaration() - self.state = 399 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 400 - self.match(JavaParser.RBRACE) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ClassBodyDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def block(self): - return self.getTypedRuleContext(JavaParser.BlockContext,0) - - - def STATIC(self): - return self.getToken(JavaParser.STATIC, 0) - - def memberDeclaration(self): - return self.getTypedRuleContext(JavaParser.MemberDeclarationContext,0) - - - def modifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.ModifierContext) - else: - return self.getTypedRuleContext(JavaParser.ModifierContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_classBodyDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterClassBodyDeclaration" ): - listener.enterClassBodyDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitClassBodyDeclaration" ): - listener.exitClassBodyDeclaration(self) - - - - - def classBodyDeclaration(self): - - localctx = JavaParser.ClassBodyDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 36, self.RULE_classBodyDeclaration) - self._la = 0 # Token type - try: - self.state = 414 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,34,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 402 - self.match(JavaParser.SEMI) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 404 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.STATIC: - self.state = 403 - self.match(JavaParser.STATIC) - - - self.state = 406 - self.block() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 410 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,33,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 407 - self.modifier() - self.state = 412 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,33,self._ctx) - - self.state = 413 - self.memberDeclaration() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class MemberDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def methodDeclaration(self): - return self.getTypedRuleContext(JavaParser.MethodDeclarationContext,0) - - - def genericMethodDeclaration(self): - return self.getTypedRuleContext(JavaParser.GenericMethodDeclarationContext,0) - - - def fieldDeclaration(self): - return self.getTypedRuleContext(JavaParser.FieldDeclarationContext,0) - - - def constructorDeclaration(self): - return self.getTypedRuleContext(JavaParser.ConstructorDeclarationContext,0) - - - def genericConstructorDeclaration(self): - return self.getTypedRuleContext(JavaParser.GenericConstructorDeclarationContext,0) - - - def interfaceDeclaration(self): - return self.getTypedRuleContext(JavaParser.InterfaceDeclarationContext,0) - - - def annotationTypeDeclaration(self): - return self.getTypedRuleContext(JavaParser.AnnotationTypeDeclarationContext,0) - - - def classDeclaration(self): - return self.getTypedRuleContext(JavaParser.ClassDeclarationContext,0) - - - def enumDeclaration(self): - return self.getTypedRuleContext(JavaParser.EnumDeclarationContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_memberDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMemberDeclaration" ): - listener.enterMemberDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMemberDeclaration" ): - listener.exitMemberDeclaration(self) - - - - - def memberDeclaration(self): - - localctx = JavaParser.MemberDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 38, self.RULE_memberDeclaration) - try: - self.state = 425 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,35,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 416 - self.methodDeclaration() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 417 - self.genericMethodDeclaration() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 418 - self.fieldDeclaration() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 419 - self.constructorDeclaration() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 420 - self.genericConstructorDeclaration() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 421 - self.interfaceDeclaration() - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 422 - self.annotationTypeDeclaration() - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 423 - self.classDeclaration() - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 424 - self.enumDeclaration() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class MethodDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def typeTypeOrVoid(self): - return self.getTypedRuleContext(JavaParser.TypeTypeOrVoidContext,0) - - - def IDENTIFIER(self): - return self.getToken(JavaParser.IDENTIFIER, 0) - - def formalParameters(self): - return self.getTypedRuleContext(JavaParser.FormalParametersContext,0) - - - def methodBody(self): - return self.getTypedRuleContext(JavaParser.MethodBodyContext,0) - - - def THROWS(self): - return self.getToken(JavaParser.THROWS, 0) - - def qualifiedNameList(self): - return self.getTypedRuleContext(JavaParser.QualifiedNameListContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_methodDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMethodDeclaration" ): - listener.enterMethodDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMethodDeclaration" ): - listener.exitMethodDeclaration(self) - - - - - def methodDeclaration(self): - - localctx = JavaParser.MethodDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 40, self.RULE_methodDeclaration) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 427 - self.typeTypeOrVoid() - self.state = 428 - self.match(JavaParser.IDENTIFIER) - self.state = 429 - self.formalParameters() - self.state = 434 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==JavaParser.LBRACK: - self.state = 430 - self.match(JavaParser.LBRACK) - self.state = 431 - self.match(JavaParser.RBRACK) - self.state = 436 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 439 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.THROWS: - self.state = 437 - self.match(JavaParser.THROWS) - self.state = 438 - self.qualifiedNameList() - - - self.state = 441 - self.methodBody() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class MethodBodyContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def block(self): - return self.getTypedRuleContext(JavaParser.BlockContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_methodBody - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMethodBody" ): - listener.enterMethodBody(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMethodBody" ): - listener.exitMethodBody(self) - - - - - def methodBody(self): - - localctx = JavaParser.MethodBodyContext(self, self._ctx, self.state) - self.enterRule(localctx, 42, self.RULE_methodBody) - try: - self.state = 445 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.LBRACE]: - self.enterOuterAlt(localctx, 1) - self.state = 443 - self.block() - pass - elif token in [JavaParser.SEMI]: - self.enterOuterAlt(localctx, 2) - self.state = 444 - self.match(JavaParser.SEMI) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class TypeTypeOrVoidContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def typeType(self): - return self.getTypedRuleContext(JavaParser.TypeTypeContext,0) - - - def VOID(self): - return self.getToken(JavaParser.VOID, 0) - - def getRuleIndex(self): - return JavaParser.RULE_typeTypeOrVoid - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypeTypeOrVoid" ): - listener.enterTypeTypeOrVoid(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypeTypeOrVoid" ): - listener.exitTypeTypeOrVoid(self) - - - - - def typeTypeOrVoid(self): - - localctx = JavaParser.TypeTypeOrVoidContext(self, self._ctx, self.state) - self.enterRule(localctx, 44, self.RULE_typeTypeOrVoid) - try: - self.state = 449 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.BOOLEAN, JavaParser.BYTE, JavaParser.CHAR, JavaParser.DOUBLE, JavaParser.FLOAT, JavaParser.INT, JavaParser.LONG, JavaParser.SHORT, JavaParser.AT, JavaParser.IDENTIFIER]: - self.enterOuterAlt(localctx, 1) - self.state = 447 - self.typeType() - pass - elif token in [JavaParser.VOID]: - self.enterOuterAlt(localctx, 2) - self.state = 448 - self.match(JavaParser.VOID) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class GenericMethodDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def typeParameters(self): - return self.getTypedRuleContext(JavaParser.TypeParametersContext,0) - - - def methodDeclaration(self): - return self.getTypedRuleContext(JavaParser.MethodDeclarationContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_genericMethodDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGenericMethodDeclaration" ): - listener.enterGenericMethodDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGenericMethodDeclaration" ): - listener.exitGenericMethodDeclaration(self) - - - - - def genericMethodDeclaration(self): - - localctx = JavaParser.GenericMethodDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 46, self.RULE_genericMethodDeclaration) - try: - self.enterOuterAlt(localctx, 1) - self.state = 451 - self.typeParameters() - self.state = 452 - self.methodDeclaration() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class GenericConstructorDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def typeParameters(self): - return self.getTypedRuleContext(JavaParser.TypeParametersContext,0) - - - def constructorDeclaration(self): - return self.getTypedRuleContext(JavaParser.ConstructorDeclarationContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_genericConstructorDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGenericConstructorDeclaration" ): - listener.enterGenericConstructorDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGenericConstructorDeclaration" ): - listener.exitGenericConstructorDeclaration(self) - - - - - def genericConstructorDeclaration(self): - - localctx = JavaParser.GenericConstructorDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 48, self.RULE_genericConstructorDeclaration) - try: - self.enterOuterAlt(localctx, 1) - self.state = 454 - self.typeParameters() - self.state = 455 - self.constructorDeclaration() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ConstructorDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.constructorBody = None # BlockContext - - def IDENTIFIER(self): - return self.getToken(JavaParser.IDENTIFIER, 0) - - def formalParameters(self): - return self.getTypedRuleContext(JavaParser.FormalParametersContext,0) - - - def block(self): - return self.getTypedRuleContext(JavaParser.BlockContext,0) - - - def THROWS(self): - return self.getToken(JavaParser.THROWS, 0) - - def qualifiedNameList(self): - return self.getTypedRuleContext(JavaParser.QualifiedNameListContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_constructorDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConstructorDeclaration" ): - listener.enterConstructorDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConstructorDeclaration" ): - listener.exitConstructorDeclaration(self) - - - - - def constructorDeclaration(self): - - localctx = JavaParser.ConstructorDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 50, self.RULE_constructorDeclaration) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 457 - self.match(JavaParser.IDENTIFIER) - self.state = 458 - self.formalParameters() - self.state = 461 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.THROWS: - self.state = 459 - self.match(JavaParser.THROWS) - self.state = 460 - self.qualifiedNameList() - - - self.state = 463 - localctx.constructorBody = self.block() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class FieldDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def typeType(self): - return self.getTypedRuleContext(JavaParser.TypeTypeContext,0) - - - def variableDeclarators(self): - return self.getTypedRuleContext(JavaParser.VariableDeclaratorsContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_fieldDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFieldDeclaration" ): - listener.enterFieldDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFieldDeclaration" ): - listener.exitFieldDeclaration(self) - - - - - def fieldDeclaration(self): - - localctx = JavaParser.FieldDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 52, self.RULE_fieldDeclaration) - try: - self.enterOuterAlt(localctx, 1) - self.state = 465 - self.typeType() - self.state = 466 - self.variableDeclarators() - self.state = 467 - self.match(JavaParser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class InterfaceBodyDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def interfaceMemberDeclaration(self): - return self.getTypedRuleContext(JavaParser.InterfaceMemberDeclarationContext,0) - - - def modifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.ModifierContext) - else: - return self.getTypedRuleContext(JavaParser.ModifierContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_interfaceBodyDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInterfaceBodyDeclaration" ): - listener.enterInterfaceBodyDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInterfaceBodyDeclaration" ): - listener.exitInterfaceBodyDeclaration(self) - - - - - def interfaceBodyDeclaration(self): - - localctx = JavaParser.InterfaceBodyDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 54, self.RULE_interfaceBodyDeclaration) - try: - self.state = 477 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.ABSTRACT, JavaParser.BOOLEAN, JavaParser.BYTE, JavaParser.CHAR, JavaParser.CLASS, JavaParser.DEFAULT, JavaParser.DOUBLE, JavaParser.ENUM, JavaParser.FINAL, JavaParser.FLOAT, JavaParser.INT, JavaParser.INTERFACE, JavaParser.LONG, JavaParser.NATIVE, JavaParser.PRIVATE, JavaParser.PROTECTED, JavaParser.PUBLIC, JavaParser.SHORT, JavaParser.STATIC, JavaParser.STRICTFP, JavaParser.SYNCHRONIZED, JavaParser.TRANSIENT, JavaParser.VOID, JavaParser.VOLATILE, JavaParser.LT, JavaParser.AT, JavaParser.IDENTIFIER]: - self.enterOuterAlt(localctx, 1) - self.state = 472 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,41,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 469 - self.modifier() - self.state = 474 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,41,self._ctx) - - self.state = 475 - self.interfaceMemberDeclaration() - pass - elif token in [JavaParser.SEMI]: - self.enterOuterAlt(localctx, 2) - self.state = 476 - self.match(JavaParser.SEMI) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class InterfaceMemberDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def constDeclaration(self): - return self.getTypedRuleContext(JavaParser.ConstDeclarationContext,0) - - - def interfaceMethodDeclaration(self): - return self.getTypedRuleContext(JavaParser.InterfaceMethodDeclarationContext,0) - - - def genericInterfaceMethodDeclaration(self): - return self.getTypedRuleContext(JavaParser.GenericInterfaceMethodDeclarationContext,0) - - - def interfaceDeclaration(self): - return self.getTypedRuleContext(JavaParser.InterfaceDeclarationContext,0) - - - def annotationTypeDeclaration(self): - return self.getTypedRuleContext(JavaParser.AnnotationTypeDeclarationContext,0) - - - def classDeclaration(self): - return self.getTypedRuleContext(JavaParser.ClassDeclarationContext,0) - - - def enumDeclaration(self): - return self.getTypedRuleContext(JavaParser.EnumDeclarationContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_interfaceMemberDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInterfaceMemberDeclaration" ): - listener.enterInterfaceMemberDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInterfaceMemberDeclaration" ): - listener.exitInterfaceMemberDeclaration(self) - - - - - def interfaceMemberDeclaration(self): - - localctx = JavaParser.InterfaceMemberDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 56, self.RULE_interfaceMemberDeclaration) - try: - self.state = 486 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,43,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 479 - self.constDeclaration() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 480 - self.interfaceMethodDeclaration() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 481 - self.genericInterfaceMethodDeclaration() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 482 - self.interfaceDeclaration() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 483 - self.annotationTypeDeclaration() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 484 - self.classDeclaration() - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 485 - self.enumDeclaration() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ConstDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def typeType(self): - return self.getTypedRuleContext(JavaParser.TypeTypeContext,0) - - - def constantDeclarator(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.ConstantDeclaratorContext) - else: - return self.getTypedRuleContext(JavaParser.ConstantDeclaratorContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_constDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConstDeclaration" ): - listener.enterConstDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConstDeclaration" ): - listener.exitConstDeclaration(self) - - - - - def constDeclaration(self): - - localctx = JavaParser.ConstDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 58, self.RULE_constDeclaration) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 488 - self.typeType() - self.state = 489 - self.constantDeclarator() - self.state = 494 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==JavaParser.COMMA: - self.state = 490 - self.match(JavaParser.COMMA) - self.state = 491 - self.constantDeclarator() - self.state = 496 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 497 - self.match(JavaParser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ConstantDeclaratorContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IDENTIFIER(self): - return self.getToken(JavaParser.IDENTIFIER, 0) - - def variableInitializer(self): - return self.getTypedRuleContext(JavaParser.VariableInitializerContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_constantDeclarator - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConstantDeclarator" ): - listener.enterConstantDeclarator(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConstantDeclarator" ): - listener.exitConstantDeclarator(self) - - - - - def constantDeclarator(self): - - localctx = JavaParser.ConstantDeclaratorContext(self, self._ctx, self.state) - self.enterRule(localctx, 60, self.RULE_constantDeclarator) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 499 - self.match(JavaParser.IDENTIFIER) - self.state = 504 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==JavaParser.LBRACK: - self.state = 500 - self.match(JavaParser.LBRACK) - self.state = 501 - self.match(JavaParser.RBRACK) - self.state = 506 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 507 - self.match(JavaParser.ASSIGN) - self.state = 508 - self.variableInitializer() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class InterfaceMethodDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IDENTIFIER(self): - return self.getToken(JavaParser.IDENTIFIER, 0) - - def formalParameters(self): - return self.getTypedRuleContext(JavaParser.FormalParametersContext,0) - - - def methodBody(self): - return self.getTypedRuleContext(JavaParser.MethodBodyContext,0) - - - def typeTypeOrVoid(self): - return self.getTypedRuleContext(JavaParser.TypeTypeOrVoidContext,0) - - - def typeParameters(self): - return self.getTypedRuleContext(JavaParser.TypeParametersContext,0) - - - def interfaceMethodModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.InterfaceMethodModifierContext) - else: - return self.getTypedRuleContext(JavaParser.InterfaceMethodModifierContext,i) - - - def THROWS(self): - return self.getToken(JavaParser.THROWS, 0) - - def qualifiedNameList(self): - return self.getTypedRuleContext(JavaParser.QualifiedNameListContext,0) - - - def annotation(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.AnnotationContext) - else: - return self.getTypedRuleContext(JavaParser.AnnotationContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_interfaceMethodDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInterfaceMethodDeclaration" ): - listener.enterInterfaceMethodDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInterfaceMethodDeclaration" ): - listener.exitInterfaceMethodDeclaration(self) - - - - - def interfaceMethodDeclaration(self): - - localctx = JavaParser.InterfaceMethodDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 62, self.RULE_interfaceMethodDeclaration) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 513 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,46,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 510 - self.interfaceMethodModifier() - self.state = 515 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,46,self._ctx) - - self.state = 526 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.BOOLEAN, JavaParser.BYTE, JavaParser.CHAR, JavaParser.DOUBLE, JavaParser.FLOAT, JavaParser.INT, JavaParser.LONG, JavaParser.SHORT, JavaParser.VOID, JavaParser.AT, JavaParser.IDENTIFIER]: - self.state = 516 - self.typeTypeOrVoid() - pass - elif token in [JavaParser.LT]: - self.state = 517 - self.typeParameters() - self.state = 521 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,47,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 518 - self.annotation() - self.state = 523 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,47,self._ctx) - - self.state = 524 - self.typeTypeOrVoid() - pass - else: - raise NoViableAltException(self) - - self.state = 528 - self.match(JavaParser.IDENTIFIER) - self.state = 529 - self.formalParameters() - self.state = 534 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==JavaParser.LBRACK: - self.state = 530 - self.match(JavaParser.LBRACK) - self.state = 531 - self.match(JavaParser.RBRACK) - self.state = 536 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 539 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.THROWS: - self.state = 537 - self.match(JavaParser.THROWS) - self.state = 538 - self.qualifiedNameList() - - - self.state = 541 - self.methodBody() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class InterfaceMethodModifierContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def annotation(self): - return self.getTypedRuleContext(JavaParser.AnnotationContext,0) - - - def PUBLIC(self): - return self.getToken(JavaParser.PUBLIC, 0) - - def ABSTRACT(self): - return self.getToken(JavaParser.ABSTRACT, 0) - - def DEFAULT(self): - return self.getToken(JavaParser.DEFAULT, 0) - - def STATIC(self): - return self.getToken(JavaParser.STATIC, 0) - - def STRICTFP(self): - return self.getToken(JavaParser.STRICTFP, 0) - - def getRuleIndex(self): - return JavaParser.RULE_interfaceMethodModifier - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInterfaceMethodModifier" ): - listener.enterInterfaceMethodModifier(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInterfaceMethodModifier" ): - listener.exitInterfaceMethodModifier(self) - - - - - def interfaceMethodModifier(self): - - localctx = JavaParser.InterfaceMethodModifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 64, self.RULE_interfaceMethodModifier) - try: - self.state = 549 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.AT]: - self.enterOuterAlt(localctx, 1) - self.state = 543 - self.annotation() - pass - elif token in [JavaParser.PUBLIC]: - self.enterOuterAlt(localctx, 2) - self.state = 544 - self.match(JavaParser.PUBLIC) - pass - elif token in [JavaParser.ABSTRACT]: - self.enterOuterAlt(localctx, 3) - self.state = 545 - self.match(JavaParser.ABSTRACT) - pass - elif token in [JavaParser.DEFAULT]: - self.enterOuterAlt(localctx, 4) - self.state = 546 - self.match(JavaParser.DEFAULT) - pass - elif token in [JavaParser.STATIC]: - self.enterOuterAlt(localctx, 5) - self.state = 547 - self.match(JavaParser.STATIC) - pass - elif token in [JavaParser.STRICTFP]: - self.enterOuterAlt(localctx, 6) - self.state = 548 - self.match(JavaParser.STRICTFP) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class GenericInterfaceMethodDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def typeParameters(self): - return self.getTypedRuleContext(JavaParser.TypeParametersContext,0) - - - def interfaceMethodDeclaration(self): - return self.getTypedRuleContext(JavaParser.InterfaceMethodDeclarationContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_genericInterfaceMethodDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGenericInterfaceMethodDeclaration" ): - listener.enterGenericInterfaceMethodDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGenericInterfaceMethodDeclaration" ): - listener.exitGenericInterfaceMethodDeclaration(self) - - - - - def genericInterfaceMethodDeclaration(self): - - localctx = JavaParser.GenericInterfaceMethodDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 66, self.RULE_genericInterfaceMethodDeclaration) - try: - self.enterOuterAlt(localctx, 1) - self.state = 551 - self.typeParameters() - self.state = 552 - self.interfaceMethodDeclaration() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class VariableDeclaratorsContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def variableDeclarator(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.VariableDeclaratorContext) - else: - return self.getTypedRuleContext(JavaParser.VariableDeclaratorContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_variableDeclarators - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVariableDeclarators" ): - listener.enterVariableDeclarators(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVariableDeclarators" ): - listener.exitVariableDeclarators(self) - - - - - def variableDeclarators(self): - - localctx = JavaParser.VariableDeclaratorsContext(self, self._ctx, self.state) - self.enterRule(localctx, 68, self.RULE_variableDeclarators) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 554 - self.variableDeclarator() - self.state = 559 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==JavaParser.COMMA: - self.state = 555 - self.match(JavaParser.COMMA) - self.state = 556 - self.variableDeclarator() - self.state = 561 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class VariableDeclaratorContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def variableDeclaratorId(self): - return self.getTypedRuleContext(JavaParser.VariableDeclaratorIdContext,0) - - - def variableInitializer(self): - return self.getTypedRuleContext(JavaParser.VariableInitializerContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_variableDeclarator - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVariableDeclarator" ): - listener.enterVariableDeclarator(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVariableDeclarator" ): - listener.exitVariableDeclarator(self) - - - - - def variableDeclarator(self): - - localctx = JavaParser.VariableDeclaratorContext(self, self._ctx, self.state) - self.enterRule(localctx, 70, self.RULE_variableDeclarator) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 562 - self.variableDeclaratorId() - self.state = 565 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.ASSIGN: - self.state = 563 - self.match(JavaParser.ASSIGN) - self.state = 564 - self.variableInitializer() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class VariableDeclaratorIdContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IDENTIFIER(self): - return self.getToken(JavaParser.IDENTIFIER, 0) - - def getRuleIndex(self): - return JavaParser.RULE_variableDeclaratorId - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVariableDeclaratorId" ): - listener.enterVariableDeclaratorId(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVariableDeclaratorId" ): - listener.exitVariableDeclaratorId(self) - - - - - def variableDeclaratorId(self): - - localctx = JavaParser.VariableDeclaratorIdContext(self, self._ctx, self.state) - self.enterRule(localctx, 72, self.RULE_variableDeclaratorId) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 567 - self.match(JavaParser.IDENTIFIER) - self.state = 572 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==JavaParser.LBRACK: - self.state = 568 - self.match(JavaParser.LBRACK) - self.state = 569 - self.match(JavaParser.RBRACK) - self.state = 574 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class VariableInitializerContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def arrayInitializer(self): - return self.getTypedRuleContext(JavaParser.ArrayInitializerContext,0) - - - def expression(self): - return self.getTypedRuleContext(JavaParser.ExpressionContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_variableInitializer - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVariableInitializer" ): - listener.enterVariableInitializer(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVariableInitializer" ): - listener.exitVariableInitializer(self) - - - - - def variableInitializer(self): - - localctx = JavaParser.VariableInitializerContext(self, self._ctx, self.state) - self.enterRule(localctx, 74, self.RULE_variableInitializer) - try: - self.state = 577 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.LBRACE]: - self.enterOuterAlt(localctx, 1) - self.state = 575 - self.arrayInitializer() - pass - elif token in [JavaParser.BOOLEAN, JavaParser.BYTE, JavaParser.CHAR, JavaParser.DOUBLE, JavaParser.FLOAT, JavaParser.INT, JavaParser.LONG, JavaParser.NEW, JavaParser.SHORT, JavaParser.SUPER, JavaParser.THIS, JavaParser.VOID, JavaParser.DECIMAL_LITERAL, JavaParser.HEX_LITERAL, JavaParser.OCT_LITERAL, JavaParser.BINARY_LITERAL, JavaParser.FLOAT_LITERAL, JavaParser.HEX_FLOAT_LITERAL, JavaParser.BOOL_LITERAL, JavaParser.CHAR_LITERAL, JavaParser.STRING_LITERAL, JavaParser.NULL_LITERAL, JavaParser.LPAREN, JavaParser.LT, JavaParser.BANG, JavaParser.TILDE, JavaParser.INC, JavaParser.DEC, JavaParser.ADD, JavaParser.SUB, JavaParser.AT, JavaParser.IDENTIFIER]: - self.enterOuterAlt(localctx, 2) - self.state = 576 - self.expression(0) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ArrayInitializerContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def variableInitializer(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.VariableInitializerContext) - else: - return self.getTypedRuleContext(JavaParser.VariableInitializerContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_arrayInitializer - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterArrayInitializer" ): - listener.enterArrayInitializer(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitArrayInitializer" ): - listener.exitArrayInitializer(self) - - - - - def arrayInitializer(self): - - localctx = JavaParser.ArrayInitializerContext(self, self._ctx, self.state) - self.enterRule(localctx, 76, self.RULE_arrayInitializer) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 579 - self.match(JavaParser.LBRACE) - self.state = 591 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << JavaParser.BOOLEAN) | (1 << JavaParser.BYTE) | (1 << JavaParser.CHAR) | (1 << JavaParser.DOUBLE) | (1 << JavaParser.FLOAT) | (1 << JavaParser.INT) | (1 << JavaParser.LONG) | (1 << JavaParser.NEW) | (1 << JavaParser.SHORT) | (1 << JavaParser.SUPER) | (1 << JavaParser.THIS) | (1 << JavaParser.VOID) | (1 << JavaParser.DECIMAL_LITERAL) | (1 << JavaParser.HEX_LITERAL) | (1 << JavaParser.OCT_LITERAL) | (1 << JavaParser.BINARY_LITERAL) | (1 << JavaParser.FLOAT_LITERAL) | (1 << JavaParser.HEX_FLOAT_LITERAL) | (1 << JavaParser.BOOL_LITERAL) | (1 << JavaParser.CHAR_LITERAL) | (1 << JavaParser.STRING_LITERAL) | (1 << JavaParser.NULL_LITERAL) | (1 << JavaParser.LPAREN) | (1 << JavaParser.LBRACE))) != 0) or ((((_la - 72)) & ~0x3f) == 0 and ((1 << (_la - 72)) & ((1 << (JavaParser.LT - 72)) | (1 << (JavaParser.BANG - 72)) | (1 << (JavaParser.TILDE - 72)) | (1 << (JavaParser.INC - 72)) | (1 << (JavaParser.DEC - 72)) | (1 << (JavaParser.ADD - 72)) | (1 << (JavaParser.SUB - 72)) | (1 << (JavaParser.AT - 72)) | (1 << (JavaParser.IDENTIFIER - 72)))) != 0): - self.state = 580 - self.variableInitializer() - self.state = 585 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,56,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 581 - self.match(JavaParser.COMMA) - self.state = 582 - self.variableInitializer() - self.state = 587 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,56,self._ctx) - - self.state = 589 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.COMMA: - self.state = 588 - self.match(JavaParser.COMMA) - - - - - self.state = 593 - self.match(JavaParser.RBRACE) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ClassOrInterfaceTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IDENTIFIER(self, i:int=None): - if i is None: - return self.getTokens(JavaParser.IDENTIFIER) - else: - return self.getToken(JavaParser.IDENTIFIER, i) - - def typeArguments(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.TypeArgumentsContext) - else: - return self.getTypedRuleContext(JavaParser.TypeArgumentsContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_classOrInterfaceType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterClassOrInterfaceType" ): - listener.enterClassOrInterfaceType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitClassOrInterfaceType" ): - listener.exitClassOrInterfaceType(self) - - - - - def classOrInterfaceType(self): - - localctx = JavaParser.ClassOrInterfaceTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 78, self.RULE_classOrInterfaceType) - try: - self.enterOuterAlt(localctx, 1) - self.state = 595 - self.match(JavaParser.IDENTIFIER) - self.state = 597 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,59,self._ctx) - if la_ == 1: - self.state = 596 - self.typeArguments() - - - self.state = 606 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,61,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 599 - self.match(JavaParser.DOT) - self.state = 600 - self.match(JavaParser.IDENTIFIER) - self.state = 602 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,60,self._ctx) - if la_ == 1: - self.state = 601 - self.typeArguments() - - - self.state = 608 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,61,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class TypeArgumentContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def typeType(self): - return self.getTypedRuleContext(JavaParser.TypeTypeContext,0) - - - def EXTENDS(self): - return self.getToken(JavaParser.EXTENDS, 0) - - def SUPER(self): - return self.getToken(JavaParser.SUPER, 0) - - def getRuleIndex(self): - return JavaParser.RULE_typeArgument - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypeArgument" ): - listener.enterTypeArgument(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypeArgument" ): - listener.exitTypeArgument(self) - - - - - def typeArgument(self): - - localctx = JavaParser.TypeArgumentContext(self, self._ctx, self.state) - self.enterRule(localctx, 80, self.RULE_typeArgument) - self._la = 0 # Token type - try: - self.state = 615 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.BOOLEAN, JavaParser.BYTE, JavaParser.CHAR, JavaParser.DOUBLE, JavaParser.FLOAT, JavaParser.INT, JavaParser.LONG, JavaParser.SHORT, JavaParser.AT, JavaParser.IDENTIFIER]: - self.enterOuterAlt(localctx, 1) - self.state = 609 - self.typeType() - pass - elif token in [JavaParser.QUESTION]: - self.enterOuterAlt(localctx, 2) - self.state = 610 - self.match(JavaParser.QUESTION) - self.state = 613 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.EXTENDS or _la==JavaParser.SUPER: - self.state = 611 - _la = self._input.LA(1) - if not(_la==JavaParser.EXTENDS or _la==JavaParser.SUPER): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 612 - self.typeType() - - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class QualifiedNameListContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def qualifiedName(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.QualifiedNameContext) - else: - return self.getTypedRuleContext(JavaParser.QualifiedNameContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_qualifiedNameList - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterQualifiedNameList" ): - listener.enterQualifiedNameList(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitQualifiedNameList" ): - listener.exitQualifiedNameList(self) - - - - - def qualifiedNameList(self): - - localctx = JavaParser.QualifiedNameListContext(self, self._ctx, self.state) - self.enterRule(localctx, 82, self.RULE_qualifiedNameList) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 617 - self.qualifiedName() - self.state = 622 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==JavaParser.COMMA: - self.state = 618 - self.match(JavaParser.COMMA) - self.state = 619 - self.qualifiedName() - self.state = 624 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class FormalParametersContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def formalParameterList(self): - return self.getTypedRuleContext(JavaParser.FormalParameterListContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_formalParameters - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFormalParameters" ): - listener.enterFormalParameters(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFormalParameters" ): - listener.exitFormalParameters(self) - - - - - def formalParameters(self): - - localctx = JavaParser.FormalParametersContext(self, self._ctx, self.state) - self.enterRule(localctx, 84, self.RULE_formalParameters) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 625 - self.match(JavaParser.LPAREN) - self.state = 627 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << JavaParser.BOOLEAN) | (1 << JavaParser.BYTE) | (1 << JavaParser.CHAR) | (1 << JavaParser.DOUBLE) | (1 << JavaParser.FINAL) | (1 << JavaParser.FLOAT) | (1 << JavaParser.INT) | (1 << JavaParser.LONG) | (1 << JavaParser.SHORT))) != 0) or _la==JavaParser.AT or _la==JavaParser.IDENTIFIER: - self.state = 626 - self.formalParameterList() - - - self.state = 629 - self.match(JavaParser.RPAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class FormalParameterListContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def formalParameter(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.FormalParameterContext) - else: - return self.getTypedRuleContext(JavaParser.FormalParameterContext,i) - - - def lastFormalParameter(self): - return self.getTypedRuleContext(JavaParser.LastFormalParameterContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_formalParameterList - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFormalParameterList" ): - listener.enterFormalParameterList(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFormalParameterList" ): - listener.exitFormalParameterList(self) - - - - - def formalParameterList(self): - - localctx = JavaParser.FormalParameterListContext(self, self._ctx, self.state) - self.enterRule(localctx, 86, self.RULE_formalParameterList) - self._la = 0 # Token type - try: - self.state = 644 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,68,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 631 - self.formalParameter() - self.state = 636 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,66,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 632 - self.match(JavaParser.COMMA) - self.state = 633 - self.formalParameter() - self.state = 638 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,66,self._ctx) - - self.state = 641 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.COMMA: - self.state = 639 - self.match(JavaParser.COMMA) - self.state = 640 - self.lastFormalParameter() - - - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 643 - self.lastFormalParameter() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class FormalParameterContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def typeType(self): - return self.getTypedRuleContext(JavaParser.TypeTypeContext,0) - - - def variableDeclaratorId(self): - return self.getTypedRuleContext(JavaParser.VariableDeclaratorIdContext,0) - - - def variableModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.VariableModifierContext) - else: - return self.getTypedRuleContext(JavaParser.VariableModifierContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_formalParameter - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFormalParameter" ): - listener.enterFormalParameter(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFormalParameter" ): - listener.exitFormalParameter(self) - - - - - def formalParameter(self): - - localctx = JavaParser.FormalParameterContext(self, self._ctx, self.state) - self.enterRule(localctx, 88, self.RULE_formalParameter) - try: - self.enterOuterAlt(localctx, 1) - self.state = 649 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,69,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 646 - self.variableModifier() - self.state = 651 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,69,self._ctx) - - self.state = 652 - self.typeType() - self.state = 653 - self.variableDeclaratorId() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class LastFormalParameterContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def typeType(self): - return self.getTypedRuleContext(JavaParser.TypeTypeContext,0) - - - def variableDeclaratorId(self): - return self.getTypedRuleContext(JavaParser.VariableDeclaratorIdContext,0) - - - def variableModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.VariableModifierContext) - else: - return self.getTypedRuleContext(JavaParser.VariableModifierContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_lastFormalParameter - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLastFormalParameter" ): - listener.enterLastFormalParameter(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLastFormalParameter" ): - listener.exitLastFormalParameter(self) - - - - - def lastFormalParameter(self): - - localctx = JavaParser.LastFormalParameterContext(self, self._ctx, self.state) - self.enterRule(localctx, 90, self.RULE_lastFormalParameter) - try: - self.enterOuterAlt(localctx, 1) - self.state = 658 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,70,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 655 - self.variableModifier() - self.state = 660 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,70,self._ctx) - - self.state = 661 - self.typeType() - self.state = 662 - self.match(JavaParser.ELLIPSIS) - self.state = 663 - self.variableDeclaratorId() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class QualifiedNameContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IDENTIFIER(self, i:int=None): - if i is None: - return self.getTokens(JavaParser.IDENTIFIER) - else: - return self.getToken(JavaParser.IDENTIFIER, i) - - def getRuleIndex(self): - return JavaParser.RULE_qualifiedName - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterQualifiedName" ): - listener.enterQualifiedName(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitQualifiedName" ): - listener.exitQualifiedName(self) - - - - - def qualifiedName(self): - - localctx = JavaParser.QualifiedNameContext(self, self._ctx, self.state) - self.enterRule(localctx, 92, self.RULE_qualifiedName) - try: - self.enterOuterAlt(localctx, 1) - self.state = 665 - self.match(JavaParser.IDENTIFIER) - self.state = 670 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,71,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 666 - self.match(JavaParser.DOT) - self.state = 667 - self.match(JavaParser.IDENTIFIER) - self.state = 672 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,71,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class LiteralContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def integerLiteral(self): - return self.getTypedRuleContext(JavaParser.IntegerLiteralContext,0) - - - def floatLiteral(self): - return self.getTypedRuleContext(JavaParser.FloatLiteralContext,0) - - - def CHAR_LITERAL(self): - return self.getToken(JavaParser.CHAR_LITERAL, 0) - - def STRING_LITERAL(self): - return self.getToken(JavaParser.STRING_LITERAL, 0) - - def BOOL_LITERAL(self): - return self.getToken(JavaParser.BOOL_LITERAL, 0) - - def NULL_LITERAL(self): - return self.getToken(JavaParser.NULL_LITERAL, 0) - - def getRuleIndex(self): - return JavaParser.RULE_literal - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLiteral" ): - listener.enterLiteral(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLiteral" ): - listener.exitLiteral(self) - - - - - def literal(self): - - localctx = JavaParser.LiteralContext(self, self._ctx, self.state) - self.enterRule(localctx, 94, self.RULE_literal) - try: - self.state = 679 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.DECIMAL_LITERAL, JavaParser.HEX_LITERAL, JavaParser.OCT_LITERAL, JavaParser.BINARY_LITERAL]: - self.enterOuterAlt(localctx, 1) - self.state = 673 - self.integerLiteral() - pass - elif token in [JavaParser.FLOAT_LITERAL, JavaParser.HEX_FLOAT_LITERAL]: - self.enterOuterAlt(localctx, 2) - self.state = 674 - self.floatLiteral() - pass - elif token in [JavaParser.CHAR_LITERAL]: - self.enterOuterAlt(localctx, 3) - self.state = 675 - self.match(JavaParser.CHAR_LITERAL) - pass - elif token in [JavaParser.STRING_LITERAL]: - self.enterOuterAlt(localctx, 4) - self.state = 676 - self.match(JavaParser.STRING_LITERAL) - pass - elif token in [JavaParser.BOOL_LITERAL]: - self.enterOuterAlt(localctx, 5) - self.state = 677 - self.match(JavaParser.BOOL_LITERAL) - pass - elif token in [JavaParser.NULL_LITERAL]: - self.enterOuterAlt(localctx, 6) - self.state = 678 - self.match(JavaParser.NULL_LITERAL) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class IntegerLiteralContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DECIMAL_LITERAL(self): - return self.getToken(JavaParser.DECIMAL_LITERAL, 0) - - def HEX_LITERAL(self): - return self.getToken(JavaParser.HEX_LITERAL, 0) - - def OCT_LITERAL(self): - return self.getToken(JavaParser.OCT_LITERAL, 0) - - def BINARY_LITERAL(self): - return self.getToken(JavaParser.BINARY_LITERAL, 0) - - def getRuleIndex(self): - return JavaParser.RULE_integerLiteral - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterIntegerLiteral" ): - listener.enterIntegerLiteral(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitIntegerLiteral" ): - listener.exitIntegerLiteral(self) - - - - - def integerLiteral(self): - - localctx = JavaParser.IntegerLiteralContext(self, self._ctx, self.state) - self.enterRule(localctx, 96, self.RULE_integerLiteral) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 681 - _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << JavaParser.DECIMAL_LITERAL) | (1 << JavaParser.HEX_LITERAL) | (1 << JavaParser.OCT_LITERAL) | (1 << JavaParser.BINARY_LITERAL))) != 0)): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class FloatLiteralContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FLOAT_LITERAL(self): - return self.getToken(JavaParser.FLOAT_LITERAL, 0) - - def HEX_FLOAT_LITERAL(self): - return self.getToken(JavaParser.HEX_FLOAT_LITERAL, 0) - - def getRuleIndex(self): - return JavaParser.RULE_floatLiteral - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFloatLiteral" ): - listener.enterFloatLiteral(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFloatLiteral" ): - listener.exitFloatLiteral(self) - - - - - def floatLiteral(self): - - localctx = JavaParser.FloatLiteralContext(self, self._ctx, self.state) - self.enterRule(localctx, 98, self.RULE_floatLiteral) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 683 - _la = self._input.LA(1) - if not(_la==JavaParser.FLOAT_LITERAL or _la==JavaParser.HEX_FLOAT_LITERAL): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class AnnotationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def qualifiedName(self): - return self.getTypedRuleContext(JavaParser.QualifiedNameContext,0) - - - def elementValuePairs(self): - return self.getTypedRuleContext(JavaParser.ElementValuePairsContext,0) - - - def elementValue(self): - return self.getTypedRuleContext(JavaParser.ElementValueContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_annotation - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAnnotation" ): - listener.enterAnnotation(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAnnotation" ): - listener.exitAnnotation(self) - - - - - def annotation(self): - - localctx = JavaParser.AnnotationContext(self, self._ctx, self.state) - self.enterRule(localctx, 100, self.RULE_annotation) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 685 - self.match(JavaParser.AT) - self.state = 686 - self.qualifiedName() - self.state = 693 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.LPAREN: - self.state = 687 - self.match(JavaParser.LPAREN) - self.state = 690 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,73,self._ctx) - if la_ == 1: - self.state = 688 - self.elementValuePairs() - - elif la_ == 2: - self.state = 689 - self.elementValue() - - - self.state = 692 - self.match(JavaParser.RPAREN) - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ElementValuePairsContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def elementValuePair(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.ElementValuePairContext) - else: - return self.getTypedRuleContext(JavaParser.ElementValuePairContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_elementValuePairs - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterElementValuePairs" ): - listener.enterElementValuePairs(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitElementValuePairs" ): - listener.exitElementValuePairs(self) - - - - - def elementValuePairs(self): - - localctx = JavaParser.ElementValuePairsContext(self, self._ctx, self.state) - self.enterRule(localctx, 102, self.RULE_elementValuePairs) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 695 - self.elementValuePair() - self.state = 700 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==JavaParser.COMMA: - self.state = 696 - self.match(JavaParser.COMMA) - self.state = 697 - self.elementValuePair() - self.state = 702 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ElementValuePairContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IDENTIFIER(self): - return self.getToken(JavaParser.IDENTIFIER, 0) - - def elementValue(self): - return self.getTypedRuleContext(JavaParser.ElementValueContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_elementValuePair - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterElementValuePair" ): - listener.enterElementValuePair(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitElementValuePair" ): - listener.exitElementValuePair(self) - - - - - def elementValuePair(self): - - localctx = JavaParser.ElementValuePairContext(self, self._ctx, self.state) - self.enterRule(localctx, 104, self.RULE_elementValuePair) - try: - self.enterOuterAlt(localctx, 1) - self.state = 703 - self.match(JavaParser.IDENTIFIER) - self.state = 704 - self.match(JavaParser.ASSIGN) - self.state = 705 - self.elementValue() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ElementValueContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def expression(self): - return self.getTypedRuleContext(JavaParser.ExpressionContext,0) - - - def annotation(self): - return self.getTypedRuleContext(JavaParser.AnnotationContext,0) - - - def elementValueArrayInitializer(self): - return self.getTypedRuleContext(JavaParser.ElementValueArrayInitializerContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_elementValue - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterElementValue" ): - listener.enterElementValue(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitElementValue" ): - listener.exitElementValue(self) - - - - - def elementValue(self): - - localctx = JavaParser.ElementValueContext(self, self._ctx, self.state) - self.enterRule(localctx, 106, self.RULE_elementValue) - try: - self.state = 710 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,76,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 707 - self.expression(0) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 708 - self.annotation() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 709 - self.elementValueArrayInitializer() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ElementValueArrayInitializerContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def elementValue(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.ElementValueContext) - else: - return self.getTypedRuleContext(JavaParser.ElementValueContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_elementValueArrayInitializer - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterElementValueArrayInitializer" ): - listener.enterElementValueArrayInitializer(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitElementValueArrayInitializer" ): - listener.exitElementValueArrayInitializer(self) - - - - - def elementValueArrayInitializer(self): - - localctx = JavaParser.ElementValueArrayInitializerContext(self, self._ctx, self.state) - self.enterRule(localctx, 108, self.RULE_elementValueArrayInitializer) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 712 - self.match(JavaParser.LBRACE) - self.state = 721 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << JavaParser.BOOLEAN) | (1 << JavaParser.BYTE) | (1 << JavaParser.CHAR) | (1 << JavaParser.DOUBLE) | (1 << JavaParser.FLOAT) | (1 << JavaParser.INT) | (1 << JavaParser.LONG) | (1 << JavaParser.NEW) | (1 << JavaParser.SHORT) | (1 << JavaParser.SUPER) | (1 << JavaParser.THIS) | (1 << JavaParser.VOID) | (1 << JavaParser.DECIMAL_LITERAL) | (1 << JavaParser.HEX_LITERAL) | (1 << JavaParser.OCT_LITERAL) | (1 << JavaParser.BINARY_LITERAL) | (1 << JavaParser.FLOAT_LITERAL) | (1 << JavaParser.HEX_FLOAT_LITERAL) | (1 << JavaParser.BOOL_LITERAL) | (1 << JavaParser.CHAR_LITERAL) | (1 << JavaParser.STRING_LITERAL) | (1 << JavaParser.NULL_LITERAL) | (1 << JavaParser.LPAREN) | (1 << JavaParser.LBRACE))) != 0) or ((((_la - 72)) & ~0x3f) == 0 and ((1 << (_la - 72)) & ((1 << (JavaParser.LT - 72)) | (1 << (JavaParser.BANG - 72)) | (1 << (JavaParser.TILDE - 72)) | (1 << (JavaParser.INC - 72)) | (1 << (JavaParser.DEC - 72)) | (1 << (JavaParser.ADD - 72)) | (1 << (JavaParser.SUB - 72)) | (1 << (JavaParser.AT - 72)) | (1 << (JavaParser.IDENTIFIER - 72)))) != 0): - self.state = 713 - self.elementValue() - self.state = 718 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,77,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 714 - self.match(JavaParser.COMMA) - self.state = 715 - self.elementValue() - self.state = 720 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,77,self._ctx) - - - - self.state = 724 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.COMMA: - self.state = 723 - self.match(JavaParser.COMMA) - - - self.state = 726 - self.match(JavaParser.RBRACE) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class AnnotationTypeDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def INTERFACE(self): - return self.getToken(JavaParser.INTERFACE, 0) - - def IDENTIFIER(self): - return self.getToken(JavaParser.IDENTIFIER, 0) - - def annotationTypeBody(self): - return self.getTypedRuleContext(JavaParser.AnnotationTypeBodyContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_annotationTypeDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAnnotationTypeDeclaration" ): - listener.enterAnnotationTypeDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAnnotationTypeDeclaration" ): - listener.exitAnnotationTypeDeclaration(self) - - - - - def annotationTypeDeclaration(self): - - localctx = JavaParser.AnnotationTypeDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 110, self.RULE_annotationTypeDeclaration) - try: - self.enterOuterAlt(localctx, 1) - self.state = 728 - self.match(JavaParser.AT) - self.state = 729 - self.match(JavaParser.INTERFACE) - self.state = 730 - self.match(JavaParser.IDENTIFIER) - self.state = 731 - self.annotationTypeBody() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class AnnotationTypeBodyContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def annotationTypeElementDeclaration(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.AnnotationTypeElementDeclarationContext) - else: - return self.getTypedRuleContext(JavaParser.AnnotationTypeElementDeclarationContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_annotationTypeBody - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAnnotationTypeBody" ): - listener.enterAnnotationTypeBody(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAnnotationTypeBody" ): - listener.exitAnnotationTypeBody(self) - - - - - def annotationTypeBody(self): - - localctx = JavaParser.AnnotationTypeBodyContext(self, self._ctx, self.state) - self.enterRule(localctx, 112, self.RULE_annotationTypeBody) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 733 - self.match(JavaParser.LBRACE) - self.state = 737 - self._errHandler.sync(self) - _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << JavaParser.ABSTRACT) | (1 << JavaParser.BOOLEAN) | (1 << JavaParser.BYTE) | (1 << JavaParser.CHAR) | (1 << JavaParser.CLASS) | (1 << JavaParser.DOUBLE) | (1 << JavaParser.ENUM) | (1 << JavaParser.FINAL) | (1 << JavaParser.FLOAT) | (1 << JavaParser.INT) | (1 << JavaParser.INTERFACE) | (1 << JavaParser.LONG) | (1 << JavaParser.NATIVE) | (1 << JavaParser.PRIVATE) | (1 << JavaParser.PROTECTED) | (1 << JavaParser.PUBLIC) | (1 << JavaParser.SHORT) | (1 << JavaParser.STATIC) | (1 << JavaParser.STRICTFP) | (1 << JavaParser.SYNCHRONIZED) | (1 << JavaParser.TRANSIENT) | (1 << JavaParser.VOLATILE))) != 0) or ((((_la - 67)) & ~0x3f) == 0 and ((1 << (_la - 67)) & ((1 << (JavaParser.SEMI - 67)) | (1 << (JavaParser.AT - 67)) | (1 << (JavaParser.IDENTIFIER - 67)))) != 0): - self.state = 734 - self.annotationTypeElementDeclaration() - self.state = 739 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 740 - self.match(JavaParser.RBRACE) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class AnnotationTypeElementDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def annotationTypeElementRest(self): - return self.getTypedRuleContext(JavaParser.AnnotationTypeElementRestContext,0) - - - def modifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.ModifierContext) - else: - return self.getTypedRuleContext(JavaParser.ModifierContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_annotationTypeElementDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAnnotationTypeElementDeclaration" ): - listener.enterAnnotationTypeElementDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAnnotationTypeElementDeclaration" ): - listener.exitAnnotationTypeElementDeclaration(self) - - - - - def annotationTypeElementDeclaration(self): - - localctx = JavaParser.AnnotationTypeElementDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 114, self.RULE_annotationTypeElementDeclaration) - try: - self.state = 750 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.ABSTRACT, JavaParser.BOOLEAN, JavaParser.BYTE, JavaParser.CHAR, JavaParser.CLASS, JavaParser.DOUBLE, JavaParser.ENUM, JavaParser.FINAL, JavaParser.FLOAT, JavaParser.INT, JavaParser.INTERFACE, JavaParser.LONG, JavaParser.NATIVE, JavaParser.PRIVATE, JavaParser.PROTECTED, JavaParser.PUBLIC, JavaParser.SHORT, JavaParser.STATIC, JavaParser.STRICTFP, JavaParser.SYNCHRONIZED, JavaParser.TRANSIENT, JavaParser.VOLATILE, JavaParser.AT, JavaParser.IDENTIFIER]: - self.enterOuterAlt(localctx, 1) - self.state = 745 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,81,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 742 - self.modifier() - self.state = 747 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,81,self._ctx) - - self.state = 748 - self.annotationTypeElementRest() - pass - elif token in [JavaParser.SEMI]: - self.enterOuterAlt(localctx, 2) - self.state = 749 - self.match(JavaParser.SEMI) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class AnnotationTypeElementRestContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def typeType(self): - return self.getTypedRuleContext(JavaParser.TypeTypeContext,0) - - - def annotationMethodOrConstantRest(self): - return self.getTypedRuleContext(JavaParser.AnnotationMethodOrConstantRestContext,0) - - - def classDeclaration(self): - return self.getTypedRuleContext(JavaParser.ClassDeclarationContext,0) - - - def interfaceDeclaration(self): - return self.getTypedRuleContext(JavaParser.InterfaceDeclarationContext,0) - - - def enumDeclaration(self): - return self.getTypedRuleContext(JavaParser.EnumDeclarationContext,0) - - - def annotationTypeDeclaration(self): - return self.getTypedRuleContext(JavaParser.AnnotationTypeDeclarationContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_annotationTypeElementRest - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAnnotationTypeElementRest" ): - listener.enterAnnotationTypeElementRest(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAnnotationTypeElementRest" ): - listener.exitAnnotationTypeElementRest(self) - - - - - def annotationTypeElementRest(self): - - localctx = JavaParser.AnnotationTypeElementRestContext(self, self._ctx, self.state) - self.enterRule(localctx, 116, self.RULE_annotationTypeElementRest) - try: - self.state = 772 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,87,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 752 - self.typeType() - self.state = 753 - self.annotationMethodOrConstantRest() - self.state = 754 - self.match(JavaParser.SEMI) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 756 - self.classDeclaration() - self.state = 758 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,83,self._ctx) - if la_ == 1: - self.state = 757 - self.match(JavaParser.SEMI) - - - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 760 - self.interfaceDeclaration() - self.state = 762 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,84,self._ctx) - if la_ == 1: - self.state = 761 - self.match(JavaParser.SEMI) - - - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 764 - self.enumDeclaration() - self.state = 766 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,85,self._ctx) - if la_ == 1: - self.state = 765 - self.match(JavaParser.SEMI) - - - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 768 - self.annotationTypeDeclaration() - self.state = 770 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,86,self._ctx) - if la_ == 1: - self.state = 769 - self.match(JavaParser.SEMI) - - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class AnnotationMethodOrConstantRestContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def annotationMethodRest(self): - return self.getTypedRuleContext(JavaParser.AnnotationMethodRestContext,0) - - - def annotationConstantRest(self): - return self.getTypedRuleContext(JavaParser.AnnotationConstantRestContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_annotationMethodOrConstantRest - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAnnotationMethodOrConstantRest" ): - listener.enterAnnotationMethodOrConstantRest(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAnnotationMethodOrConstantRest" ): - listener.exitAnnotationMethodOrConstantRest(self) - - - - - def annotationMethodOrConstantRest(self): - - localctx = JavaParser.AnnotationMethodOrConstantRestContext(self, self._ctx, self.state) - self.enterRule(localctx, 118, self.RULE_annotationMethodOrConstantRest) - try: - self.state = 776 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,88,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 774 - self.annotationMethodRest() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 775 - self.annotationConstantRest() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class AnnotationMethodRestContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IDENTIFIER(self): - return self.getToken(JavaParser.IDENTIFIER, 0) - - def defaultValue(self): - return self.getTypedRuleContext(JavaParser.DefaultValueContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_annotationMethodRest - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAnnotationMethodRest" ): - listener.enterAnnotationMethodRest(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAnnotationMethodRest" ): - listener.exitAnnotationMethodRest(self) - - - - - def annotationMethodRest(self): - - localctx = JavaParser.AnnotationMethodRestContext(self, self._ctx, self.state) - self.enterRule(localctx, 120, self.RULE_annotationMethodRest) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 778 - self.match(JavaParser.IDENTIFIER) - self.state = 779 - self.match(JavaParser.LPAREN) - self.state = 780 - self.match(JavaParser.RPAREN) - self.state = 782 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.DEFAULT: - self.state = 781 - self.defaultValue() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class AnnotationConstantRestContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def variableDeclarators(self): - return self.getTypedRuleContext(JavaParser.VariableDeclaratorsContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_annotationConstantRest - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAnnotationConstantRest" ): - listener.enterAnnotationConstantRest(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAnnotationConstantRest" ): - listener.exitAnnotationConstantRest(self) - - - - - def annotationConstantRest(self): - - localctx = JavaParser.AnnotationConstantRestContext(self, self._ctx, self.state) - self.enterRule(localctx, 122, self.RULE_annotationConstantRest) - try: - self.enterOuterAlt(localctx, 1) - self.state = 784 - self.variableDeclarators() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class DefaultValueContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DEFAULT(self): - return self.getToken(JavaParser.DEFAULT, 0) - - def elementValue(self): - return self.getTypedRuleContext(JavaParser.ElementValueContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_defaultValue - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDefaultValue" ): - listener.enterDefaultValue(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDefaultValue" ): - listener.exitDefaultValue(self) - - - - - def defaultValue(self): - - localctx = JavaParser.DefaultValueContext(self, self._ctx, self.state) - self.enterRule(localctx, 124, self.RULE_defaultValue) - try: - self.enterOuterAlt(localctx, 1) - self.state = 786 - self.match(JavaParser.DEFAULT) - self.state = 787 - self.elementValue() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class BlockContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def blockStatement(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.BlockStatementContext) - else: - return self.getTypedRuleContext(JavaParser.BlockStatementContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_block - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterBlock" ): - listener.enterBlock(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitBlock" ): - listener.exitBlock(self) - - - - - def block(self): - - localctx = JavaParser.BlockContext(self, self._ctx, self.state) - self.enterRule(localctx, 126, self.RULE_block) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 789 - self.match(JavaParser.LBRACE) - self.state = 793 - self._errHandler.sync(self) - _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << JavaParser.ABSTRACT) | (1 << JavaParser.ASSERT) | (1 << JavaParser.BOOLEAN) | (1 << JavaParser.BREAK) | (1 << JavaParser.BYTE) | (1 << JavaParser.CHAR) | (1 << JavaParser.CLASS) | (1 << JavaParser.CONTINUE) | (1 << JavaParser.DO) | (1 << JavaParser.DOUBLE) | (1 << JavaParser.FINAL) | (1 << JavaParser.FLOAT) | (1 << JavaParser.FOR) | (1 << JavaParser.IF) | (1 << JavaParser.INT) | (1 << JavaParser.INTERFACE) | (1 << JavaParser.LONG) | (1 << JavaParser.NEW) | (1 << JavaParser.PRIVATE) | (1 << JavaParser.PROTECTED) | (1 << JavaParser.PUBLIC) | (1 << JavaParser.RETURN) | (1 << JavaParser.SHORT) | (1 << JavaParser.STATIC) | (1 << JavaParser.STRICTFP) | (1 << JavaParser.SUPER) | (1 << JavaParser.SWITCH) | (1 << JavaParser.SYNCHRONIZED) | (1 << JavaParser.THIS) | (1 << JavaParser.THROW) | (1 << JavaParser.TRY) | (1 << JavaParser.VOID) | (1 << JavaParser.WHILE) | (1 << JavaParser.DECIMAL_LITERAL) | (1 << JavaParser.HEX_LITERAL) | (1 << JavaParser.OCT_LITERAL) | (1 << JavaParser.BINARY_LITERAL) | (1 << JavaParser.FLOAT_LITERAL) | (1 << JavaParser.HEX_FLOAT_LITERAL) | (1 << JavaParser.BOOL_LITERAL) | (1 << JavaParser.CHAR_LITERAL) | (1 << JavaParser.STRING_LITERAL) | (1 << JavaParser.NULL_LITERAL) | (1 << JavaParser.LPAREN) | (1 << JavaParser.LBRACE))) != 0) or ((((_la - 67)) & ~0x3f) == 0 and ((1 << (_la - 67)) & ((1 << (JavaParser.SEMI - 67)) | (1 << (JavaParser.LT - 67)) | (1 << (JavaParser.BANG - 67)) | (1 << (JavaParser.TILDE - 67)) | (1 << (JavaParser.INC - 67)) | (1 << (JavaParser.DEC - 67)) | (1 << (JavaParser.ADD - 67)) | (1 << (JavaParser.SUB - 67)) | (1 << (JavaParser.AT - 67)) | (1 << (JavaParser.IDENTIFIER - 67)))) != 0): - self.state = 790 - self.blockStatement() - self.state = 795 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 796 - self.match(JavaParser.RBRACE) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class BlockStatementContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def localVariableDeclaration(self): - return self.getTypedRuleContext(JavaParser.LocalVariableDeclarationContext,0) - - - def statement(self): - return self.getTypedRuleContext(JavaParser.StatementContext,0) - - - def localTypeDeclaration(self): - return self.getTypedRuleContext(JavaParser.LocalTypeDeclarationContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_blockStatement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterBlockStatement" ): - listener.enterBlockStatement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitBlockStatement" ): - listener.exitBlockStatement(self) - - - - - def blockStatement(self): - - localctx = JavaParser.BlockStatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 128, self.RULE_blockStatement) - try: - self.state = 803 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,91,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 798 - self.localVariableDeclaration() - self.state = 799 - self.match(JavaParser.SEMI) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 801 - self.statement() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 802 - self.localTypeDeclaration() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class LocalVariableDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def typeType(self): - return self.getTypedRuleContext(JavaParser.TypeTypeContext,0) - - - def variableDeclarators(self): - return self.getTypedRuleContext(JavaParser.VariableDeclaratorsContext,0) - - - def variableModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.VariableModifierContext) - else: - return self.getTypedRuleContext(JavaParser.VariableModifierContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_localVariableDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLocalVariableDeclaration" ): - listener.enterLocalVariableDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLocalVariableDeclaration" ): - listener.exitLocalVariableDeclaration(self) - - - - - def localVariableDeclaration(self): - - localctx = JavaParser.LocalVariableDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 130, self.RULE_localVariableDeclaration) - try: - self.enterOuterAlt(localctx, 1) - self.state = 808 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,92,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 805 - self.variableModifier() - self.state = 810 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,92,self._ctx) - - self.state = 811 - self.typeType() - self.state = 812 - self.variableDeclarators() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class LocalTypeDeclarationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def classDeclaration(self): - return self.getTypedRuleContext(JavaParser.ClassDeclarationContext,0) - - - def interfaceDeclaration(self): - return self.getTypedRuleContext(JavaParser.InterfaceDeclarationContext,0) - - - def classOrInterfaceModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.ClassOrInterfaceModifierContext) - else: - return self.getTypedRuleContext(JavaParser.ClassOrInterfaceModifierContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_localTypeDeclaration - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLocalTypeDeclaration" ): - listener.enterLocalTypeDeclaration(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLocalTypeDeclaration" ): - listener.exitLocalTypeDeclaration(self) - - - - - def localTypeDeclaration(self): - - localctx = JavaParser.LocalTypeDeclarationContext(self, self._ctx, self.state) - self.enterRule(localctx, 132, self.RULE_localTypeDeclaration) - self._la = 0 # Token type - try: - self.state = 825 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.ABSTRACT, JavaParser.CLASS, JavaParser.FINAL, JavaParser.INTERFACE, JavaParser.PRIVATE, JavaParser.PROTECTED, JavaParser.PUBLIC, JavaParser.STATIC, JavaParser.STRICTFP, JavaParser.AT]: - self.enterOuterAlt(localctx, 1) - self.state = 817 - self._errHandler.sync(self) - _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << JavaParser.ABSTRACT) | (1 << JavaParser.FINAL) | (1 << JavaParser.PRIVATE) | (1 << JavaParser.PROTECTED) | (1 << JavaParser.PUBLIC) | (1 << JavaParser.STATIC) | (1 << JavaParser.STRICTFP))) != 0) or _la==JavaParser.AT: - self.state = 814 - self.classOrInterfaceModifier() - self.state = 819 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 822 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.CLASS]: - self.state = 820 - self.classDeclaration() - pass - elif token in [JavaParser.INTERFACE]: - self.state = 821 - self.interfaceDeclaration() - pass - else: - raise NoViableAltException(self) - - pass - elif token in [JavaParser.SEMI]: - self.enterOuterAlt(localctx, 2) - self.state = 824 - self.match(JavaParser.SEMI) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class StatementContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.blockLabel = None # BlockContext - self.statementExpression = None # ExpressionContext - self.identifierLabel = None # Token - - def block(self): - return self.getTypedRuleContext(JavaParser.BlockContext,0) - - - def ASSERT(self): - return self.getToken(JavaParser.ASSERT, 0) - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.ExpressionContext) - else: - return self.getTypedRuleContext(JavaParser.ExpressionContext,i) - - - def IF(self): - return self.getToken(JavaParser.IF, 0) - - def parExpression(self): - return self.getTypedRuleContext(JavaParser.ParExpressionContext,0) - - - def statement(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.StatementContext) - else: - return self.getTypedRuleContext(JavaParser.StatementContext,i) - - - def ELSE(self): - return self.getToken(JavaParser.ELSE, 0) - - def FOR(self): - return self.getToken(JavaParser.FOR, 0) - - def forControl(self): - return self.getTypedRuleContext(JavaParser.ForControlContext,0) - - - def WHILE(self): - return self.getToken(JavaParser.WHILE, 0) - - def DO(self): - return self.getToken(JavaParser.DO, 0) - - def TRY(self): - return self.getToken(JavaParser.TRY, 0) - - def finallyBlock(self): - return self.getTypedRuleContext(JavaParser.FinallyBlockContext,0) - - - def catchClause(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.CatchClauseContext) - else: - return self.getTypedRuleContext(JavaParser.CatchClauseContext,i) - - - def resourceSpecification(self): - return self.getTypedRuleContext(JavaParser.ResourceSpecificationContext,0) - - - def SWITCH(self): - return self.getToken(JavaParser.SWITCH, 0) - - def switchBlockStatementGroup(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.SwitchBlockStatementGroupContext) - else: - return self.getTypedRuleContext(JavaParser.SwitchBlockStatementGroupContext,i) - - - def switchLabel(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.SwitchLabelContext) - else: - return self.getTypedRuleContext(JavaParser.SwitchLabelContext,i) - - - def SYNCHRONIZED(self): - return self.getToken(JavaParser.SYNCHRONIZED, 0) - - def RETURN(self): - return self.getToken(JavaParser.RETURN, 0) - - def THROW(self): - return self.getToken(JavaParser.THROW, 0) - - def BREAK(self): - return self.getToken(JavaParser.BREAK, 0) - - def IDENTIFIER(self): - return self.getToken(JavaParser.IDENTIFIER, 0) - - def CONTINUE(self): - return self.getToken(JavaParser.CONTINUE, 0) - - def SEMI(self): - return self.getToken(JavaParser.SEMI, 0) - - def getRuleIndex(self): - return JavaParser.RULE_statement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStatement" ): - listener.enterStatement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStatement" ): - listener.exitStatement(self) - - - - - def statement(self): - - localctx = JavaParser.StatementContext(self, self._ctx, self.state) - self.enterRule(localctx, 134, self.RULE_statement) - self._la = 0 # Token type - try: - self.state = 931 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,108,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 827 - localctx.blockLabel = self.block() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 828 - self.match(JavaParser.ASSERT) - self.state = 829 - self.expression(0) - self.state = 832 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.COLON: - self.state = 830 - self.match(JavaParser.COLON) - self.state = 831 - self.expression(0) - - - self.state = 834 - self.match(JavaParser.SEMI) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 836 - self.match(JavaParser.IF) - self.state = 837 - self.parExpression() - self.state = 838 - self.statement() - self.state = 841 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,97,self._ctx) - if la_ == 1: - self.state = 839 - self.match(JavaParser.ELSE) - self.state = 840 - self.statement() - - - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 843 - self.match(JavaParser.FOR) - self.state = 844 - self.match(JavaParser.LPAREN) - self.state = 845 - self.forControl() - self.state = 846 - self.match(JavaParser.RPAREN) - self.state = 847 - self.statement() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 849 - self.match(JavaParser.WHILE) - self.state = 850 - self.parExpression() - self.state = 851 - self.statement() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 853 - self.match(JavaParser.DO) - self.state = 854 - self.statement() - self.state = 855 - self.match(JavaParser.WHILE) - self.state = 856 - self.parExpression() - self.state = 857 - self.match(JavaParser.SEMI) - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 859 - self.match(JavaParser.TRY) - self.state = 860 - self.block() - self.state = 870 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.CATCH]: - self.state = 862 - self._errHandler.sync(self) - _la = self._input.LA(1) - while True: - self.state = 861 - self.catchClause() - self.state = 864 - self._errHandler.sync(self) - _la = self._input.LA(1) - if not (_la==JavaParser.CATCH): - break - - self.state = 867 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.FINALLY: - self.state = 866 - self.finallyBlock() - - - pass - elif token in [JavaParser.FINALLY]: - self.state = 869 - self.finallyBlock() - pass - else: - raise NoViableAltException(self) - - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 872 - self.match(JavaParser.TRY) - self.state = 873 - self.resourceSpecification() - self.state = 874 - self.block() - self.state = 878 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==JavaParser.CATCH: - self.state = 875 - self.catchClause() - self.state = 880 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 882 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.FINALLY: - self.state = 881 - self.finallyBlock() - - - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 884 - self.match(JavaParser.SWITCH) - self.state = 885 - self.parExpression() - self.state = 886 - self.match(JavaParser.LBRACE) - self.state = 890 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,103,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 887 - self.switchBlockStatementGroup() - self.state = 892 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,103,self._ctx) - - self.state = 896 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==JavaParser.CASE or _la==JavaParser.DEFAULT: - self.state = 893 - self.switchLabel() - self.state = 898 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 899 - self.match(JavaParser.RBRACE) - pass - - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 901 - self.match(JavaParser.SYNCHRONIZED) - self.state = 902 - self.parExpression() - self.state = 903 - self.block() - pass - - elif la_ == 11: - self.enterOuterAlt(localctx, 11) - self.state = 905 - self.match(JavaParser.RETURN) - self.state = 907 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << JavaParser.BOOLEAN) | (1 << JavaParser.BYTE) | (1 << JavaParser.CHAR) | (1 << JavaParser.DOUBLE) | (1 << JavaParser.FLOAT) | (1 << JavaParser.INT) | (1 << JavaParser.LONG) | (1 << JavaParser.NEW) | (1 << JavaParser.SHORT) | (1 << JavaParser.SUPER) | (1 << JavaParser.THIS) | (1 << JavaParser.VOID) | (1 << JavaParser.DECIMAL_LITERAL) | (1 << JavaParser.HEX_LITERAL) | (1 << JavaParser.OCT_LITERAL) | (1 << JavaParser.BINARY_LITERAL) | (1 << JavaParser.FLOAT_LITERAL) | (1 << JavaParser.HEX_FLOAT_LITERAL) | (1 << JavaParser.BOOL_LITERAL) | (1 << JavaParser.CHAR_LITERAL) | (1 << JavaParser.STRING_LITERAL) | (1 << JavaParser.NULL_LITERAL) | (1 << JavaParser.LPAREN))) != 0) or ((((_la - 72)) & ~0x3f) == 0 and ((1 << (_la - 72)) & ((1 << (JavaParser.LT - 72)) | (1 << (JavaParser.BANG - 72)) | (1 << (JavaParser.TILDE - 72)) | (1 << (JavaParser.INC - 72)) | (1 << (JavaParser.DEC - 72)) | (1 << (JavaParser.ADD - 72)) | (1 << (JavaParser.SUB - 72)) | (1 << (JavaParser.AT - 72)) | (1 << (JavaParser.IDENTIFIER - 72)))) != 0): - self.state = 906 - self.expression(0) - - - self.state = 909 - self.match(JavaParser.SEMI) - pass - - elif la_ == 12: - self.enterOuterAlt(localctx, 12) - self.state = 910 - self.match(JavaParser.THROW) - self.state = 911 - self.expression(0) - self.state = 912 - self.match(JavaParser.SEMI) - pass - - elif la_ == 13: - self.enterOuterAlt(localctx, 13) - self.state = 914 - self.match(JavaParser.BREAK) - self.state = 916 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.IDENTIFIER: - self.state = 915 - self.match(JavaParser.IDENTIFIER) - - - self.state = 918 - self.match(JavaParser.SEMI) - pass - - elif la_ == 14: - self.enterOuterAlt(localctx, 14) - self.state = 919 - self.match(JavaParser.CONTINUE) - self.state = 921 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.IDENTIFIER: - self.state = 920 - self.match(JavaParser.IDENTIFIER) - - - self.state = 923 - self.match(JavaParser.SEMI) - pass - - elif la_ == 15: - self.enterOuterAlt(localctx, 15) - self.state = 924 - self.match(JavaParser.SEMI) - pass - - elif la_ == 16: - self.enterOuterAlt(localctx, 16) - self.state = 925 - localctx.statementExpression = self.expression(0) - self.state = 926 - self.match(JavaParser.SEMI) - pass - - elif la_ == 17: - self.enterOuterAlt(localctx, 17) - self.state = 928 - localctx.identifierLabel = self.match(JavaParser.IDENTIFIER) - self.state = 929 - self.match(JavaParser.COLON) - self.state = 930 - self.statement() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class CatchClauseContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CATCH(self): - return self.getToken(JavaParser.CATCH, 0) - - def catchType(self): - return self.getTypedRuleContext(JavaParser.CatchTypeContext,0) - - - def IDENTIFIER(self): - return self.getToken(JavaParser.IDENTIFIER, 0) - - def block(self): - return self.getTypedRuleContext(JavaParser.BlockContext,0) - - - def variableModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.VariableModifierContext) - else: - return self.getTypedRuleContext(JavaParser.VariableModifierContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_catchClause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCatchClause" ): - listener.enterCatchClause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCatchClause" ): - listener.exitCatchClause(self) - - - - - def catchClause(self): - - localctx = JavaParser.CatchClauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 136, self.RULE_catchClause) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 933 - self.match(JavaParser.CATCH) - self.state = 934 - self.match(JavaParser.LPAREN) - self.state = 938 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==JavaParser.FINAL or _la==JavaParser.AT: - self.state = 935 - self.variableModifier() - self.state = 940 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 941 - self.catchType() - self.state = 942 - self.match(JavaParser.IDENTIFIER) - self.state = 943 - self.match(JavaParser.RPAREN) - self.state = 944 - self.block() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class CatchTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def qualifiedName(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.QualifiedNameContext) - else: - return self.getTypedRuleContext(JavaParser.QualifiedNameContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_catchType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCatchType" ): - listener.enterCatchType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCatchType" ): - listener.exitCatchType(self) - - - - - def catchType(self): - - localctx = JavaParser.CatchTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 138, self.RULE_catchType) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 946 - self.qualifiedName() - self.state = 951 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==JavaParser.BITOR: - self.state = 947 - self.match(JavaParser.BITOR) - self.state = 948 - self.qualifiedName() - self.state = 953 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class FinallyBlockContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FINALLY(self): - return self.getToken(JavaParser.FINALLY, 0) - - def block(self): - return self.getTypedRuleContext(JavaParser.BlockContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_finallyBlock - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFinallyBlock" ): - listener.enterFinallyBlock(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFinallyBlock" ): - listener.exitFinallyBlock(self) - - - - - def finallyBlock(self): - - localctx = JavaParser.FinallyBlockContext(self, self._ctx, self.state) - self.enterRule(localctx, 140, self.RULE_finallyBlock) - try: - self.enterOuterAlt(localctx, 1) - self.state = 954 - self.match(JavaParser.FINALLY) - self.state = 955 - self.block() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ResourceSpecificationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def resources(self): - return self.getTypedRuleContext(JavaParser.ResourcesContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_resourceSpecification - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterResourceSpecification" ): - listener.enterResourceSpecification(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitResourceSpecification" ): - listener.exitResourceSpecification(self) - - - - - def resourceSpecification(self): - - localctx = JavaParser.ResourceSpecificationContext(self, self._ctx, self.state) - self.enterRule(localctx, 142, self.RULE_resourceSpecification) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 957 - self.match(JavaParser.LPAREN) - self.state = 958 - self.resources() - self.state = 960 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.SEMI: - self.state = 959 - self.match(JavaParser.SEMI) - - - self.state = 962 - self.match(JavaParser.RPAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ResourcesContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def resource(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.ResourceContext) - else: - return self.getTypedRuleContext(JavaParser.ResourceContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_resources - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterResources" ): - listener.enterResources(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitResources" ): - listener.exitResources(self) - - - - - def resources(self): - - localctx = JavaParser.ResourcesContext(self, self._ctx, self.state) - self.enterRule(localctx, 144, self.RULE_resources) - try: - self.enterOuterAlt(localctx, 1) - self.state = 964 - self.resource() - self.state = 969 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,112,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 965 - self.match(JavaParser.SEMI) - self.state = 966 - self.resource() - self.state = 971 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,112,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ResourceContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def classOrInterfaceType(self): - return self.getTypedRuleContext(JavaParser.ClassOrInterfaceTypeContext,0) - - - def variableDeclaratorId(self): - return self.getTypedRuleContext(JavaParser.VariableDeclaratorIdContext,0) - - - def expression(self): - return self.getTypedRuleContext(JavaParser.ExpressionContext,0) - - - def variableModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.VariableModifierContext) - else: - return self.getTypedRuleContext(JavaParser.VariableModifierContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_resource - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterResource" ): - listener.enterResource(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitResource" ): - listener.exitResource(self) - - - - - def resource(self): - - localctx = JavaParser.ResourceContext(self, self._ctx, self.state) - self.enterRule(localctx, 146, self.RULE_resource) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 975 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==JavaParser.FINAL or _la==JavaParser.AT: - self.state = 972 - self.variableModifier() - self.state = 977 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 978 - self.classOrInterfaceType() - self.state = 979 - self.variableDeclaratorId() - self.state = 980 - self.match(JavaParser.ASSIGN) - self.state = 981 - self.expression(0) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class SwitchBlockStatementGroupContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def switchLabel(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.SwitchLabelContext) - else: - return self.getTypedRuleContext(JavaParser.SwitchLabelContext,i) - - - def blockStatement(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.BlockStatementContext) - else: - return self.getTypedRuleContext(JavaParser.BlockStatementContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_switchBlockStatementGroup - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSwitchBlockStatementGroup" ): - listener.enterSwitchBlockStatementGroup(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSwitchBlockStatementGroup" ): - listener.exitSwitchBlockStatementGroup(self) - - - - - def switchBlockStatementGroup(self): - - localctx = JavaParser.SwitchBlockStatementGroupContext(self, self._ctx, self.state) - self.enterRule(localctx, 148, self.RULE_switchBlockStatementGroup) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 984 - self._errHandler.sync(self) - _la = self._input.LA(1) - while True: - self.state = 983 - self.switchLabel() - self.state = 986 - self._errHandler.sync(self) - _la = self._input.LA(1) - if not (_la==JavaParser.CASE or _la==JavaParser.DEFAULT): - break - - self.state = 989 - self._errHandler.sync(self) - _la = self._input.LA(1) - while True: - self.state = 988 - self.blockStatement() - self.state = 991 - self._errHandler.sync(self) - _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << JavaParser.ABSTRACT) | (1 << JavaParser.ASSERT) | (1 << JavaParser.BOOLEAN) | (1 << JavaParser.BREAK) | (1 << JavaParser.BYTE) | (1 << JavaParser.CHAR) | (1 << JavaParser.CLASS) | (1 << JavaParser.CONTINUE) | (1 << JavaParser.DO) | (1 << JavaParser.DOUBLE) | (1 << JavaParser.FINAL) | (1 << JavaParser.FLOAT) | (1 << JavaParser.FOR) | (1 << JavaParser.IF) | (1 << JavaParser.INT) | (1 << JavaParser.INTERFACE) | (1 << JavaParser.LONG) | (1 << JavaParser.NEW) | (1 << JavaParser.PRIVATE) | (1 << JavaParser.PROTECTED) | (1 << JavaParser.PUBLIC) | (1 << JavaParser.RETURN) | (1 << JavaParser.SHORT) | (1 << JavaParser.STATIC) | (1 << JavaParser.STRICTFP) | (1 << JavaParser.SUPER) | (1 << JavaParser.SWITCH) | (1 << JavaParser.SYNCHRONIZED) | (1 << JavaParser.THIS) | (1 << JavaParser.THROW) | (1 << JavaParser.TRY) | (1 << JavaParser.VOID) | (1 << JavaParser.WHILE) | (1 << JavaParser.DECIMAL_LITERAL) | (1 << JavaParser.HEX_LITERAL) | (1 << JavaParser.OCT_LITERAL) | (1 << JavaParser.BINARY_LITERAL) | (1 << JavaParser.FLOAT_LITERAL) | (1 << JavaParser.HEX_FLOAT_LITERAL) | (1 << JavaParser.BOOL_LITERAL) | (1 << JavaParser.CHAR_LITERAL) | (1 << JavaParser.STRING_LITERAL) | (1 << JavaParser.NULL_LITERAL) | (1 << JavaParser.LPAREN) | (1 << JavaParser.LBRACE))) != 0) or ((((_la - 67)) & ~0x3f) == 0 and ((1 << (_la - 67)) & ((1 << (JavaParser.SEMI - 67)) | (1 << (JavaParser.LT - 67)) | (1 << (JavaParser.BANG - 67)) | (1 << (JavaParser.TILDE - 67)) | (1 << (JavaParser.INC - 67)) | (1 << (JavaParser.DEC - 67)) | (1 << (JavaParser.ADD - 67)) | (1 << (JavaParser.SUB - 67)) | (1 << (JavaParser.AT - 67)) | (1 << (JavaParser.IDENTIFIER - 67)))) != 0)): - break - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class SwitchLabelContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.constantExpression = None # ExpressionContext - self.enumConstantName = None # Token - - def CASE(self): - return self.getToken(JavaParser.CASE, 0) - - def expression(self): - return self.getTypedRuleContext(JavaParser.ExpressionContext,0) - - - def IDENTIFIER(self): - return self.getToken(JavaParser.IDENTIFIER, 0) - - def DEFAULT(self): - return self.getToken(JavaParser.DEFAULT, 0) - - def getRuleIndex(self): - return JavaParser.RULE_switchLabel - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSwitchLabel" ): - listener.enterSwitchLabel(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSwitchLabel" ): - listener.exitSwitchLabel(self) - - - - - def switchLabel(self): - - localctx = JavaParser.SwitchLabelContext(self, self._ctx, self.state) - self.enterRule(localctx, 150, self.RULE_switchLabel) - try: - self.state = 1001 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.CASE]: - self.enterOuterAlt(localctx, 1) - self.state = 993 - self.match(JavaParser.CASE) - self.state = 996 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,116,self._ctx) - if la_ == 1: - self.state = 994 - localctx.constantExpression = self.expression(0) - pass - - elif la_ == 2: - self.state = 995 - localctx.enumConstantName = self.match(JavaParser.IDENTIFIER) - pass - - - self.state = 998 - self.match(JavaParser.COLON) - pass - elif token in [JavaParser.DEFAULT]: - self.enterOuterAlt(localctx, 2) - self.state = 999 - self.match(JavaParser.DEFAULT) - self.state = 1000 - self.match(JavaParser.COLON) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ForControlContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.forUpdate = None # ExpressionListContext - - def enhancedForControl(self): - return self.getTypedRuleContext(JavaParser.EnhancedForControlContext,0) - - - def forInit(self): - return self.getTypedRuleContext(JavaParser.ForInitContext,0) - - - def expression(self): - return self.getTypedRuleContext(JavaParser.ExpressionContext,0) - - - def expressionList(self): - return self.getTypedRuleContext(JavaParser.ExpressionListContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_forControl - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterForControl" ): - listener.enterForControl(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitForControl" ): - listener.exitForControl(self) - - - - - def forControl(self): - - localctx = JavaParser.ForControlContext(self, self._ctx, self.state) - self.enterRule(localctx, 152, self.RULE_forControl) - self._la = 0 # Token type - try: - self.state = 1015 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,121,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1003 - self.enhancedForControl() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1005 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << JavaParser.BOOLEAN) | (1 << JavaParser.BYTE) | (1 << JavaParser.CHAR) | (1 << JavaParser.DOUBLE) | (1 << JavaParser.FINAL) | (1 << JavaParser.FLOAT) | (1 << JavaParser.INT) | (1 << JavaParser.LONG) | (1 << JavaParser.NEW) | (1 << JavaParser.SHORT) | (1 << JavaParser.SUPER) | (1 << JavaParser.THIS) | (1 << JavaParser.VOID) | (1 << JavaParser.DECIMAL_LITERAL) | (1 << JavaParser.HEX_LITERAL) | (1 << JavaParser.OCT_LITERAL) | (1 << JavaParser.BINARY_LITERAL) | (1 << JavaParser.FLOAT_LITERAL) | (1 << JavaParser.HEX_FLOAT_LITERAL) | (1 << JavaParser.BOOL_LITERAL) | (1 << JavaParser.CHAR_LITERAL) | (1 << JavaParser.STRING_LITERAL) | (1 << JavaParser.NULL_LITERAL) | (1 << JavaParser.LPAREN))) != 0) or ((((_la - 72)) & ~0x3f) == 0 and ((1 << (_la - 72)) & ((1 << (JavaParser.LT - 72)) | (1 << (JavaParser.BANG - 72)) | (1 << (JavaParser.TILDE - 72)) | (1 << (JavaParser.INC - 72)) | (1 << (JavaParser.DEC - 72)) | (1 << (JavaParser.ADD - 72)) | (1 << (JavaParser.SUB - 72)) | (1 << (JavaParser.AT - 72)) | (1 << (JavaParser.IDENTIFIER - 72)))) != 0): - self.state = 1004 - self.forInit() - - - self.state = 1007 - self.match(JavaParser.SEMI) - self.state = 1009 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << JavaParser.BOOLEAN) | (1 << JavaParser.BYTE) | (1 << JavaParser.CHAR) | (1 << JavaParser.DOUBLE) | (1 << JavaParser.FLOAT) | (1 << JavaParser.INT) | (1 << JavaParser.LONG) | (1 << JavaParser.NEW) | (1 << JavaParser.SHORT) | (1 << JavaParser.SUPER) | (1 << JavaParser.THIS) | (1 << JavaParser.VOID) | (1 << JavaParser.DECIMAL_LITERAL) | (1 << JavaParser.HEX_LITERAL) | (1 << JavaParser.OCT_LITERAL) | (1 << JavaParser.BINARY_LITERAL) | (1 << JavaParser.FLOAT_LITERAL) | (1 << JavaParser.HEX_FLOAT_LITERAL) | (1 << JavaParser.BOOL_LITERAL) | (1 << JavaParser.CHAR_LITERAL) | (1 << JavaParser.STRING_LITERAL) | (1 << JavaParser.NULL_LITERAL) | (1 << JavaParser.LPAREN))) != 0) or ((((_la - 72)) & ~0x3f) == 0 and ((1 << (_la - 72)) & ((1 << (JavaParser.LT - 72)) | (1 << (JavaParser.BANG - 72)) | (1 << (JavaParser.TILDE - 72)) | (1 << (JavaParser.INC - 72)) | (1 << (JavaParser.DEC - 72)) | (1 << (JavaParser.ADD - 72)) | (1 << (JavaParser.SUB - 72)) | (1 << (JavaParser.AT - 72)) | (1 << (JavaParser.IDENTIFIER - 72)))) != 0): - self.state = 1008 - self.expression(0) - - - self.state = 1011 - self.match(JavaParser.SEMI) - self.state = 1013 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << JavaParser.BOOLEAN) | (1 << JavaParser.BYTE) | (1 << JavaParser.CHAR) | (1 << JavaParser.DOUBLE) | (1 << JavaParser.FLOAT) | (1 << JavaParser.INT) | (1 << JavaParser.LONG) | (1 << JavaParser.NEW) | (1 << JavaParser.SHORT) | (1 << JavaParser.SUPER) | (1 << JavaParser.THIS) | (1 << JavaParser.VOID) | (1 << JavaParser.DECIMAL_LITERAL) | (1 << JavaParser.HEX_LITERAL) | (1 << JavaParser.OCT_LITERAL) | (1 << JavaParser.BINARY_LITERAL) | (1 << JavaParser.FLOAT_LITERAL) | (1 << JavaParser.HEX_FLOAT_LITERAL) | (1 << JavaParser.BOOL_LITERAL) | (1 << JavaParser.CHAR_LITERAL) | (1 << JavaParser.STRING_LITERAL) | (1 << JavaParser.NULL_LITERAL) | (1 << JavaParser.LPAREN))) != 0) or ((((_la - 72)) & ~0x3f) == 0 and ((1 << (_la - 72)) & ((1 << (JavaParser.LT - 72)) | (1 << (JavaParser.BANG - 72)) | (1 << (JavaParser.TILDE - 72)) | (1 << (JavaParser.INC - 72)) | (1 << (JavaParser.DEC - 72)) | (1 << (JavaParser.ADD - 72)) | (1 << (JavaParser.SUB - 72)) | (1 << (JavaParser.AT - 72)) | (1 << (JavaParser.IDENTIFIER - 72)))) != 0): - self.state = 1012 - localctx.forUpdate = self.expressionList() - - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ForInitContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def localVariableDeclaration(self): - return self.getTypedRuleContext(JavaParser.LocalVariableDeclarationContext,0) - - - def expressionList(self): - return self.getTypedRuleContext(JavaParser.ExpressionListContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_forInit - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterForInit" ): - listener.enterForInit(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitForInit" ): - listener.exitForInit(self) - - - - - def forInit(self): - - localctx = JavaParser.ForInitContext(self, self._ctx, self.state) - self.enterRule(localctx, 154, self.RULE_forInit) - try: - self.state = 1019 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,122,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1017 - self.localVariableDeclaration() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1018 - self.expressionList() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class EnhancedForControlContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def typeType(self): - return self.getTypedRuleContext(JavaParser.TypeTypeContext,0) - - - def variableDeclaratorId(self): - return self.getTypedRuleContext(JavaParser.VariableDeclaratorIdContext,0) - - - def expression(self): - return self.getTypedRuleContext(JavaParser.ExpressionContext,0) - - - def variableModifier(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.VariableModifierContext) - else: - return self.getTypedRuleContext(JavaParser.VariableModifierContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_enhancedForControl - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEnhancedForControl" ): - listener.enterEnhancedForControl(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEnhancedForControl" ): - listener.exitEnhancedForControl(self) - - - - - def enhancedForControl(self): - - localctx = JavaParser.EnhancedForControlContext(self, self._ctx, self.state) - self.enterRule(localctx, 156, self.RULE_enhancedForControl) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1024 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,123,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 1021 - self.variableModifier() - self.state = 1026 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,123,self._ctx) - - self.state = 1027 - self.typeType() - self.state = 1028 - self.variableDeclaratorId() - self.state = 1029 - self.match(JavaParser.COLON) - self.state = 1030 - self.expression(0) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ParExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def expression(self): - return self.getTypedRuleContext(JavaParser.ExpressionContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_parExpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterParExpression" ): - listener.enterParExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitParExpression" ): - listener.exitParExpression(self) - - - - - def parExpression(self): - - localctx = JavaParser.ParExpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 158, self.RULE_parExpression) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1032 - self.match(JavaParser.LPAREN) - self.state = 1033 - self.expression(0) - self.state = 1034 - self.match(JavaParser.RPAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ExpressionListContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.ExpressionContext) - else: - return self.getTypedRuleContext(JavaParser.ExpressionContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_expressionList - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExpressionList" ): - listener.enterExpressionList(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExpressionList" ): - listener.exitExpressionList(self) - - - - - def expressionList(self): - - localctx = JavaParser.ExpressionListContext(self, self._ctx, self.state) - self.enterRule(localctx, 160, self.RULE_expressionList) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1036 - self.expression(0) - self.state = 1041 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==JavaParser.COMMA: - self.state = 1037 - self.match(JavaParser.COMMA) - self.state = 1038 - self.expression(0) - self.state = 1043 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class MethodCallContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IDENTIFIER(self): - return self.getToken(JavaParser.IDENTIFIER, 0) - - def expressionList(self): - return self.getTypedRuleContext(JavaParser.ExpressionListContext,0) - - - def THIS(self): - return self.getToken(JavaParser.THIS, 0) - - def SUPER(self): - return self.getToken(JavaParser.SUPER, 0) - - def getRuleIndex(self): - return JavaParser.RULE_methodCall - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMethodCall" ): - listener.enterMethodCall(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMethodCall" ): - listener.exitMethodCall(self) - - - - - def methodCall(self): - - localctx = JavaParser.MethodCallContext(self, self._ctx, self.state) - self.enterRule(localctx, 162, self.RULE_methodCall) - self._la = 0 # Token type - try: - self.state = 1062 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.IDENTIFIER]: - self.enterOuterAlt(localctx, 1) - self.state = 1044 - self.match(JavaParser.IDENTIFIER) - self.state = 1045 - self.match(JavaParser.LPAREN) - self.state = 1047 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << JavaParser.BOOLEAN) | (1 << JavaParser.BYTE) | (1 << JavaParser.CHAR) | (1 << JavaParser.DOUBLE) | (1 << JavaParser.FLOAT) | (1 << JavaParser.INT) | (1 << JavaParser.LONG) | (1 << JavaParser.NEW) | (1 << JavaParser.SHORT) | (1 << JavaParser.SUPER) | (1 << JavaParser.THIS) | (1 << JavaParser.VOID) | (1 << JavaParser.DECIMAL_LITERAL) | (1 << JavaParser.HEX_LITERAL) | (1 << JavaParser.OCT_LITERAL) | (1 << JavaParser.BINARY_LITERAL) | (1 << JavaParser.FLOAT_LITERAL) | (1 << JavaParser.HEX_FLOAT_LITERAL) | (1 << JavaParser.BOOL_LITERAL) | (1 << JavaParser.CHAR_LITERAL) | (1 << JavaParser.STRING_LITERAL) | (1 << JavaParser.NULL_LITERAL) | (1 << JavaParser.LPAREN))) != 0) or ((((_la - 72)) & ~0x3f) == 0 and ((1 << (_la - 72)) & ((1 << (JavaParser.LT - 72)) | (1 << (JavaParser.BANG - 72)) | (1 << (JavaParser.TILDE - 72)) | (1 << (JavaParser.INC - 72)) | (1 << (JavaParser.DEC - 72)) | (1 << (JavaParser.ADD - 72)) | (1 << (JavaParser.SUB - 72)) | (1 << (JavaParser.AT - 72)) | (1 << (JavaParser.IDENTIFIER - 72)))) != 0): - self.state = 1046 - self.expressionList() - - - self.state = 1049 - self.match(JavaParser.RPAREN) - pass - elif token in [JavaParser.THIS]: - self.enterOuterAlt(localctx, 2) - self.state = 1050 - self.match(JavaParser.THIS) - self.state = 1051 - self.match(JavaParser.LPAREN) - self.state = 1053 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << JavaParser.BOOLEAN) | (1 << JavaParser.BYTE) | (1 << JavaParser.CHAR) | (1 << JavaParser.DOUBLE) | (1 << JavaParser.FLOAT) | (1 << JavaParser.INT) | (1 << JavaParser.LONG) | (1 << JavaParser.NEW) | (1 << JavaParser.SHORT) | (1 << JavaParser.SUPER) | (1 << JavaParser.THIS) | (1 << JavaParser.VOID) | (1 << JavaParser.DECIMAL_LITERAL) | (1 << JavaParser.HEX_LITERAL) | (1 << JavaParser.OCT_LITERAL) | (1 << JavaParser.BINARY_LITERAL) | (1 << JavaParser.FLOAT_LITERAL) | (1 << JavaParser.HEX_FLOAT_LITERAL) | (1 << JavaParser.BOOL_LITERAL) | (1 << JavaParser.CHAR_LITERAL) | (1 << JavaParser.STRING_LITERAL) | (1 << JavaParser.NULL_LITERAL) | (1 << JavaParser.LPAREN))) != 0) or ((((_la - 72)) & ~0x3f) == 0 and ((1 << (_la - 72)) & ((1 << (JavaParser.LT - 72)) | (1 << (JavaParser.BANG - 72)) | (1 << (JavaParser.TILDE - 72)) | (1 << (JavaParser.INC - 72)) | (1 << (JavaParser.DEC - 72)) | (1 << (JavaParser.ADD - 72)) | (1 << (JavaParser.SUB - 72)) | (1 << (JavaParser.AT - 72)) | (1 << (JavaParser.IDENTIFIER - 72)))) != 0): - self.state = 1052 - self.expressionList() - - - self.state = 1055 - self.match(JavaParser.RPAREN) - pass - elif token in [JavaParser.SUPER]: - self.enterOuterAlt(localctx, 3) - self.state = 1056 - self.match(JavaParser.SUPER) - self.state = 1057 - self.match(JavaParser.LPAREN) - self.state = 1059 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << JavaParser.BOOLEAN) | (1 << JavaParser.BYTE) | (1 << JavaParser.CHAR) | (1 << JavaParser.DOUBLE) | (1 << JavaParser.FLOAT) | (1 << JavaParser.INT) | (1 << JavaParser.LONG) | (1 << JavaParser.NEW) | (1 << JavaParser.SHORT) | (1 << JavaParser.SUPER) | (1 << JavaParser.THIS) | (1 << JavaParser.VOID) | (1 << JavaParser.DECIMAL_LITERAL) | (1 << JavaParser.HEX_LITERAL) | (1 << JavaParser.OCT_LITERAL) | (1 << JavaParser.BINARY_LITERAL) | (1 << JavaParser.FLOAT_LITERAL) | (1 << JavaParser.HEX_FLOAT_LITERAL) | (1 << JavaParser.BOOL_LITERAL) | (1 << JavaParser.CHAR_LITERAL) | (1 << JavaParser.STRING_LITERAL) | (1 << JavaParser.NULL_LITERAL) | (1 << JavaParser.LPAREN))) != 0) or ((((_la - 72)) & ~0x3f) == 0 and ((1 << (_la - 72)) & ((1 << (JavaParser.LT - 72)) | (1 << (JavaParser.BANG - 72)) | (1 << (JavaParser.TILDE - 72)) | (1 << (JavaParser.INC - 72)) | (1 << (JavaParser.DEC - 72)) | (1 << (JavaParser.ADD - 72)) | (1 << (JavaParser.SUB - 72)) | (1 << (JavaParser.AT - 72)) | (1 << (JavaParser.IDENTIFIER - 72)))) != 0): - self.state = 1058 - self.expressionList() - - - self.state = 1061 - self.match(JavaParser.RPAREN) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.prefix = None # Token - self.bop = None # Token - self.postfix = None # Token - - def primary(self): - return self.getTypedRuleContext(JavaParser.PrimaryContext,0) - - - def methodCall(self): - return self.getTypedRuleContext(JavaParser.MethodCallContext,0) - - - def NEW(self): - return self.getToken(JavaParser.NEW, 0) - - def creator(self): - return self.getTypedRuleContext(JavaParser.CreatorContext,0) - - - def typeType(self): - return self.getTypedRuleContext(JavaParser.TypeTypeContext,0) - - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.ExpressionContext) - else: - return self.getTypedRuleContext(JavaParser.ExpressionContext,i) - - - def lambdaExpression(self): - return self.getTypedRuleContext(JavaParser.LambdaExpressionContext,0) - - - def IDENTIFIER(self): - return self.getToken(JavaParser.IDENTIFIER, 0) - - def typeArguments(self): - return self.getTypedRuleContext(JavaParser.TypeArgumentsContext,0) - - - def classType(self): - return self.getTypedRuleContext(JavaParser.ClassTypeContext,0) - - - def THIS(self): - return self.getToken(JavaParser.THIS, 0) - - def innerCreator(self): - return self.getTypedRuleContext(JavaParser.InnerCreatorContext,0) - - - def SUPER(self): - return self.getToken(JavaParser.SUPER, 0) - - def superSuffix(self): - return self.getTypedRuleContext(JavaParser.SuperSuffixContext,0) - - - def explicitGenericInvocation(self): - return self.getTypedRuleContext(JavaParser.ExplicitGenericInvocationContext,0) - - - def nonWildcardTypeArguments(self): - return self.getTypedRuleContext(JavaParser.NonWildcardTypeArgumentsContext,0) - - - def INSTANCEOF(self): - return self.getToken(JavaParser.INSTANCEOF, 0) - - def getRuleIndex(self): - return JavaParser.RULE_expression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExpression" ): - listener.enterExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExpression" ): - listener.exitExpression(self) - - - - def expression(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = JavaParser.ExpressionContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 164 - self.enterRecursionRule(localctx, 164, self.RULE_expression, _p) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1095 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,132,self._ctx) - if la_ == 1: - self.state = 1065 - self.primary() - pass - - elif la_ == 2: - self.state = 1066 - self.methodCall() - pass - - elif la_ == 3: - self.state = 1067 - self.match(JavaParser.NEW) - self.state = 1068 - self.creator() - pass - - elif la_ == 4: - self.state = 1069 - self.match(JavaParser.LPAREN) - self.state = 1070 - self.typeType() - self.state = 1071 - self.match(JavaParser.RPAREN) - self.state = 1072 - self.expression(21) - pass - - elif la_ == 5: - self.state = 1074 - localctx.prefix = self._input.LT(1) - _la = self._input.LA(1) - if not(((((_la - 83)) & ~0x3f) == 0 and ((1 << (_la - 83)) & ((1 << (JavaParser.INC - 83)) | (1 << (JavaParser.DEC - 83)) | (1 << (JavaParser.ADD - 83)) | (1 << (JavaParser.SUB - 83)))) != 0)): - localctx.prefix = self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 1075 - self.expression(19) - pass - - elif la_ == 6: - self.state = 1076 - localctx.prefix = self._input.LT(1) - _la = self._input.LA(1) - if not(_la==JavaParser.BANG or _la==JavaParser.TILDE): - localctx.prefix = self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 1077 - self.expression(18) - pass - - elif la_ == 7: - self.state = 1078 - self.lambdaExpression() - pass - - elif la_ == 8: - self.state = 1079 - self.typeType() - self.state = 1080 - self.match(JavaParser.COLONCOLON) - self.state = 1086 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.LT, JavaParser.IDENTIFIER]: - self.state = 1082 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.LT: - self.state = 1081 - self.typeArguments() - - - self.state = 1084 - self.match(JavaParser.IDENTIFIER) - pass - elif token in [JavaParser.NEW]: - self.state = 1085 - self.match(JavaParser.NEW) - pass - else: - raise NoViableAltException(self) - - pass - - elif la_ == 9: - self.state = 1088 - self.classType() - self.state = 1089 - self.match(JavaParser.COLONCOLON) - self.state = 1091 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.LT: - self.state = 1090 - self.typeArguments() - - - self.state = 1093 - self.match(JavaParser.NEW) - pass - - - self._ctx.stop = self._input.LT(-1) - self.state = 1177 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,138,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - if self._parseListeners is not None: - self.triggerExitRuleEvent() - _prevctx = localctx - self.state = 1175 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,137,self._ctx) - if la_ == 1: - localctx = JavaParser.ExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 1097 - if not self.precpred(self._ctx, 17): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 17)") - self.state = 1098 - localctx.bop = self._input.LT(1) - _la = self._input.LA(1) - if not(((((_la - 87)) & ~0x3f) == 0 and ((1 << (_la - 87)) & ((1 << (JavaParser.MUL - 87)) | (1 << (JavaParser.DIV - 87)) | (1 << (JavaParser.MOD - 87)))) != 0)): - localctx.bop = self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 1099 - self.expression(18) - pass - - elif la_ == 2: - localctx = JavaParser.ExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 1100 - if not self.precpred(self._ctx, 16): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 16)") - self.state = 1101 - localctx.bop = self._input.LT(1) - _la = self._input.LA(1) - if not(_la==JavaParser.ADD or _la==JavaParser.SUB): - localctx.bop = self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 1102 - self.expression(17) - pass - - elif la_ == 3: - localctx = JavaParser.ExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 1103 - if not self.precpred(self._ctx, 15): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 15)") - self.state = 1111 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,133,self._ctx) - if la_ == 1: - self.state = 1104 - self.match(JavaParser.LT) - self.state = 1105 - self.match(JavaParser.LT) - pass - - elif la_ == 2: - self.state = 1106 - self.match(JavaParser.GT) - self.state = 1107 - self.match(JavaParser.GT) - self.state = 1108 - self.match(JavaParser.GT) - pass - - elif la_ == 3: - self.state = 1109 - self.match(JavaParser.GT) - self.state = 1110 - self.match(JavaParser.GT) - pass - - - self.state = 1113 - self.expression(16) - pass - - elif la_ == 4: - localctx = JavaParser.ExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 1114 - if not self.precpred(self._ctx, 14): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 14)") - self.state = 1115 - localctx.bop = self._input.LT(1) - _la = self._input.LA(1) - if not(((((_la - 71)) & ~0x3f) == 0 and ((1 << (_la - 71)) & ((1 << (JavaParser.GT - 71)) | (1 << (JavaParser.LT - 71)) | (1 << (JavaParser.LE - 71)) | (1 << (JavaParser.GE - 71)))) != 0)): - localctx.bop = self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 1116 - self.expression(15) - pass - - elif la_ == 5: - localctx = JavaParser.ExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 1117 - if not self.precpred(self._ctx, 12): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 12)") - self.state = 1118 - localctx.bop = self._input.LT(1) - _la = self._input.LA(1) - if not(_la==JavaParser.EQUAL or _la==JavaParser.NOTEQUAL): - localctx.bop = self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 1119 - self.expression(13) - pass - - elif la_ == 6: - localctx = JavaParser.ExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 1120 - if not self.precpred(self._ctx, 11): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 11)") - self.state = 1121 - localctx.bop = self.match(JavaParser.BITAND) - self.state = 1122 - self.expression(12) - pass - - elif la_ == 7: - localctx = JavaParser.ExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 1123 - if not self.precpred(self._ctx, 10): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 10)") - self.state = 1124 - localctx.bop = self.match(JavaParser.CARET) - self.state = 1125 - self.expression(11) - pass - - elif la_ == 8: - localctx = JavaParser.ExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 1126 - if not self.precpred(self._ctx, 9): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 9)") - self.state = 1127 - localctx.bop = self.match(JavaParser.BITOR) - self.state = 1128 - self.expression(10) - pass - - elif la_ == 9: - localctx = JavaParser.ExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 1129 - if not self.precpred(self._ctx, 8): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 8)") - self.state = 1130 - localctx.bop = self.match(JavaParser.AND) - self.state = 1131 - self.expression(9) - pass - - elif la_ == 10: - localctx = JavaParser.ExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 1132 - if not self.precpred(self._ctx, 7): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 7)") - self.state = 1133 - localctx.bop = self.match(JavaParser.OR) - self.state = 1134 - self.expression(8) - pass - - elif la_ == 11: - localctx = JavaParser.ExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 1135 - if not self.precpred(self._ctx, 6): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 6)") - self.state = 1136 - localctx.bop = self.match(JavaParser.QUESTION) - self.state = 1137 - self.expression(0) - self.state = 1138 - self.match(JavaParser.COLON) - self.state = 1139 - self.expression(7) - pass - - elif la_ == 12: - localctx = JavaParser.ExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 1141 - if not self.precpred(self._ctx, 5): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 5)") - self.state = 1142 - localctx.bop = self._input.LT(1) - _la = self._input.LA(1) - if not(((((_la - 70)) & ~0x3f) == 0 and ((1 << (_la - 70)) & ((1 << (JavaParser.ASSIGN - 70)) | (1 << (JavaParser.ADD_ASSIGN - 70)) | (1 << (JavaParser.SUB_ASSIGN - 70)) | (1 << (JavaParser.MUL_ASSIGN - 70)) | (1 << (JavaParser.DIV_ASSIGN - 70)) | (1 << (JavaParser.AND_ASSIGN - 70)) | (1 << (JavaParser.OR_ASSIGN - 70)) | (1 << (JavaParser.XOR_ASSIGN - 70)) | (1 << (JavaParser.MOD_ASSIGN - 70)) | (1 << (JavaParser.LSHIFT_ASSIGN - 70)) | (1 << (JavaParser.RSHIFT_ASSIGN - 70)) | (1 << (JavaParser.URSHIFT_ASSIGN - 70)))) != 0)): - localctx.bop = self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 1143 - self.expression(5) - pass - - elif la_ == 13: - localctx = JavaParser.ExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 1144 - if not self.precpred(self._ctx, 25): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 25)") - self.state = 1145 - localctx.bop = self.match(JavaParser.DOT) - self.state = 1157 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,135,self._ctx) - if la_ == 1: - self.state = 1146 - self.match(JavaParser.IDENTIFIER) - pass - - elif la_ == 2: - self.state = 1147 - self.methodCall() - pass - - elif la_ == 3: - self.state = 1148 - self.match(JavaParser.THIS) - pass - - elif la_ == 4: - self.state = 1149 - self.match(JavaParser.NEW) - self.state = 1151 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.LT: - self.state = 1150 - self.nonWildcardTypeArguments() - - - self.state = 1153 - self.innerCreator() - pass - - elif la_ == 5: - self.state = 1154 - self.match(JavaParser.SUPER) - self.state = 1155 - self.superSuffix() - pass - - elif la_ == 6: - self.state = 1156 - self.explicitGenericInvocation() - pass - - - pass - - elif la_ == 14: - localctx = JavaParser.ExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 1159 - if not self.precpred(self._ctx, 24): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 24)") - self.state = 1160 - self.match(JavaParser.LBRACK) - self.state = 1161 - self.expression(0) - self.state = 1162 - self.match(JavaParser.RBRACK) - pass - - elif la_ == 15: - localctx = JavaParser.ExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 1164 - if not self.precpred(self._ctx, 20): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 20)") - self.state = 1165 - localctx.postfix = self._input.LT(1) - _la = self._input.LA(1) - if not(_la==JavaParser.INC or _la==JavaParser.DEC): - localctx.postfix = self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - pass - - elif la_ == 16: - localctx = JavaParser.ExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 1166 - if not self.precpred(self._ctx, 13): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 13)") - self.state = 1167 - localctx.bop = self.match(JavaParser.INSTANCEOF) - self.state = 1168 - self.typeType() - pass - - elif la_ == 17: - localctx = JavaParser.ExpressionContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_expression) - self.state = 1169 - if not self.precpred(self._ctx, 3): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") - self.state = 1170 - self.match(JavaParser.COLONCOLON) - self.state = 1172 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.LT: - self.state = 1171 - self.typeArguments() - - - self.state = 1174 - self.match(JavaParser.IDENTIFIER) - pass - - - self.state = 1179 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,138,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.unrollRecursionContexts(_parentctx) - return localctx - - class LambdaExpressionContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def lambdaParameters(self): - return self.getTypedRuleContext(JavaParser.LambdaParametersContext,0) - - - def lambdaBody(self): - return self.getTypedRuleContext(JavaParser.LambdaBodyContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_lambdaExpression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLambdaExpression" ): - listener.enterLambdaExpression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLambdaExpression" ): - listener.exitLambdaExpression(self) - - - - - def lambdaExpression(self): - - localctx = JavaParser.LambdaExpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 166, self.RULE_lambdaExpression) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1180 - self.lambdaParameters() - self.state = 1181 - self.match(JavaParser.ARROW) - self.state = 1182 - self.lambdaBody() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class LambdaParametersContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IDENTIFIER(self, i:int=None): - if i is None: - return self.getTokens(JavaParser.IDENTIFIER) - else: - return self.getToken(JavaParser.IDENTIFIER, i) - - def formalParameterList(self): - return self.getTypedRuleContext(JavaParser.FormalParameterListContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_lambdaParameters - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLambdaParameters" ): - listener.enterLambdaParameters(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLambdaParameters" ): - listener.exitLambdaParameters(self) - - - - - def lambdaParameters(self): - - localctx = JavaParser.LambdaParametersContext(self, self._ctx, self.state) - self.enterRule(localctx, 168, self.RULE_lambdaParameters) - self._la = 0 # Token type - try: - self.state = 1200 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,141,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1184 - self.match(JavaParser.IDENTIFIER) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1185 - self.match(JavaParser.LPAREN) - self.state = 1187 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << JavaParser.BOOLEAN) | (1 << JavaParser.BYTE) | (1 << JavaParser.CHAR) | (1 << JavaParser.DOUBLE) | (1 << JavaParser.FINAL) | (1 << JavaParser.FLOAT) | (1 << JavaParser.INT) | (1 << JavaParser.LONG) | (1 << JavaParser.SHORT))) != 0) or _la==JavaParser.AT or _la==JavaParser.IDENTIFIER: - self.state = 1186 - self.formalParameterList() - - - self.state = 1189 - self.match(JavaParser.RPAREN) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1190 - self.match(JavaParser.LPAREN) - self.state = 1191 - self.match(JavaParser.IDENTIFIER) - self.state = 1196 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==JavaParser.COMMA: - self.state = 1192 - self.match(JavaParser.COMMA) - self.state = 1193 - self.match(JavaParser.IDENTIFIER) - self.state = 1198 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1199 - self.match(JavaParser.RPAREN) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class LambdaBodyContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def expression(self): - return self.getTypedRuleContext(JavaParser.ExpressionContext,0) - - - def block(self): - return self.getTypedRuleContext(JavaParser.BlockContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_lambdaBody - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLambdaBody" ): - listener.enterLambdaBody(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLambdaBody" ): - listener.exitLambdaBody(self) - - - - - def lambdaBody(self): - - localctx = JavaParser.LambdaBodyContext(self, self._ctx, self.state) - self.enterRule(localctx, 170, self.RULE_lambdaBody) - try: - self.state = 1204 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.BOOLEAN, JavaParser.BYTE, JavaParser.CHAR, JavaParser.DOUBLE, JavaParser.FLOAT, JavaParser.INT, JavaParser.LONG, JavaParser.NEW, JavaParser.SHORT, JavaParser.SUPER, JavaParser.THIS, JavaParser.VOID, JavaParser.DECIMAL_LITERAL, JavaParser.HEX_LITERAL, JavaParser.OCT_LITERAL, JavaParser.BINARY_LITERAL, JavaParser.FLOAT_LITERAL, JavaParser.HEX_FLOAT_LITERAL, JavaParser.BOOL_LITERAL, JavaParser.CHAR_LITERAL, JavaParser.STRING_LITERAL, JavaParser.NULL_LITERAL, JavaParser.LPAREN, JavaParser.LT, JavaParser.BANG, JavaParser.TILDE, JavaParser.INC, JavaParser.DEC, JavaParser.ADD, JavaParser.SUB, JavaParser.AT, JavaParser.IDENTIFIER]: - self.enterOuterAlt(localctx, 1) - self.state = 1202 - self.expression(0) - pass - elif token in [JavaParser.LBRACE]: - self.enterOuterAlt(localctx, 2) - self.state = 1203 - self.block() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class PrimaryContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def expression(self): - return self.getTypedRuleContext(JavaParser.ExpressionContext,0) - - - def THIS(self): - return self.getToken(JavaParser.THIS, 0) - - def SUPER(self): - return self.getToken(JavaParser.SUPER, 0) - - def literal(self): - return self.getTypedRuleContext(JavaParser.LiteralContext,0) - - - def IDENTIFIER(self): - return self.getToken(JavaParser.IDENTIFIER, 0) - - def typeTypeOrVoid(self): - return self.getTypedRuleContext(JavaParser.TypeTypeOrVoidContext,0) - - - def CLASS(self): - return self.getToken(JavaParser.CLASS, 0) - - def nonWildcardTypeArguments(self): - return self.getTypedRuleContext(JavaParser.NonWildcardTypeArgumentsContext,0) - - - def explicitGenericInvocationSuffix(self): - return self.getTypedRuleContext(JavaParser.ExplicitGenericInvocationSuffixContext,0) - - - def arguments(self): - return self.getTypedRuleContext(JavaParser.ArgumentsContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_primary - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPrimary" ): - listener.enterPrimary(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPrimary" ): - listener.exitPrimary(self) - - - - - def primary(self): - - localctx = JavaParser.PrimaryContext(self, self._ctx, self.state) - self.enterRule(localctx, 172, self.RULE_primary) - try: - self.state = 1224 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,144,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1206 - self.match(JavaParser.LPAREN) - self.state = 1207 - self.expression(0) - self.state = 1208 - self.match(JavaParser.RPAREN) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1210 - self.match(JavaParser.THIS) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1211 - self.match(JavaParser.SUPER) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 1212 - self.literal() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 1213 - self.match(JavaParser.IDENTIFIER) - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 1214 - self.typeTypeOrVoid() - self.state = 1215 - self.match(JavaParser.DOT) - self.state = 1216 - self.match(JavaParser.CLASS) - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 1218 - self.nonWildcardTypeArguments() - self.state = 1222 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.SUPER, JavaParser.IDENTIFIER]: - self.state = 1219 - self.explicitGenericInvocationSuffix() - pass - elif token in [JavaParser.THIS]: - self.state = 1220 - self.match(JavaParser.THIS) - self.state = 1221 - self.arguments() - pass - else: - raise NoViableAltException(self) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ClassTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IDENTIFIER(self): - return self.getToken(JavaParser.IDENTIFIER, 0) - - def classOrInterfaceType(self): - return self.getTypedRuleContext(JavaParser.ClassOrInterfaceTypeContext,0) - - - def annotation(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.AnnotationContext) - else: - return self.getTypedRuleContext(JavaParser.AnnotationContext,i) - - - def typeArguments(self): - return self.getTypedRuleContext(JavaParser.TypeArgumentsContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_classType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterClassType" ): - listener.enterClassType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitClassType" ): - listener.exitClassType(self) - - - - - def classType(self): - - localctx = JavaParser.ClassTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 174, self.RULE_classType) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1229 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,145,self._ctx) - if la_ == 1: - self.state = 1226 - self.classOrInterfaceType() - self.state = 1227 - self.match(JavaParser.DOT) - - - self.state = 1234 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==JavaParser.AT: - self.state = 1231 - self.annotation() - self.state = 1236 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1237 - self.match(JavaParser.IDENTIFIER) - self.state = 1239 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.LT: - self.state = 1238 - self.typeArguments() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class CreatorContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def nonWildcardTypeArguments(self): - return self.getTypedRuleContext(JavaParser.NonWildcardTypeArgumentsContext,0) - - - def createdName(self): - return self.getTypedRuleContext(JavaParser.CreatedNameContext,0) - - - def classCreatorRest(self): - return self.getTypedRuleContext(JavaParser.ClassCreatorRestContext,0) - - - def arrayCreatorRest(self): - return self.getTypedRuleContext(JavaParser.ArrayCreatorRestContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_creator - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreator" ): - listener.enterCreator(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreator" ): - listener.exitCreator(self) - - - - - def creator(self): - - localctx = JavaParser.CreatorContext(self, self._ctx, self.state) - self.enterRule(localctx, 176, self.RULE_creator) - try: - self.state = 1250 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.LT]: - self.enterOuterAlt(localctx, 1) - self.state = 1241 - self.nonWildcardTypeArguments() - self.state = 1242 - self.createdName() - self.state = 1243 - self.classCreatorRest() - pass - elif token in [JavaParser.BOOLEAN, JavaParser.BYTE, JavaParser.CHAR, JavaParser.DOUBLE, JavaParser.FLOAT, JavaParser.INT, JavaParser.LONG, JavaParser.SHORT, JavaParser.IDENTIFIER]: - self.enterOuterAlt(localctx, 2) - self.state = 1245 - self.createdName() - self.state = 1248 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.LBRACK]: - self.state = 1246 - self.arrayCreatorRest() - pass - elif token in [JavaParser.LPAREN]: - self.state = 1247 - self.classCreatorRest() - pass - else: - raise NoViableAltException(self) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class CreatedNameContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IDENTIFIER(self, i:int=None): - if i is None: - return self.getTokens(JavaParser.IDENTIFIER) - else: - return self.getToken(JavaParser.IDENTIFIER, i) - - def typeArgumentsOrDiamond(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.TypeArgumentsOrDiamondContext) - else: - return self.getTypedRuleContext(JavaParser.TypeArgumentsOrDiamondContext,i) - - - def primitiveType(self): - return self.getTypedRuleContext(JavaParser.PrimitiveTypeContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_createdName - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreatedName" ): - listener.enterCreatedName(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreatedName" ): - listener.exitCreatedName(self) - - - - - def createdName(self): - - localctx = JavaParser.CreatedNameContext(self, self._ctx, self.state) - self.enterRule(localctx, 178, self.RULE_createdName) - self._la = 0 # Token type - try: - self.state = 1267 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.IDENTIFIER]: - self.enterOuterAlt(localctx, 1) - self.state = 1252 - self.match(JavaParser.IDENTIFIER) - self.state = 1254 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.LT: - self.state = 1253 - self.typeArgumentsOrDiamond() - - - self.state = 1263 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==JavaParser.DOT: - self.state = 1256 - self.match(JavaParser.DOT) - self.state = 1257 - self.match(JavaParser.IDENTIFIER) - self.state = 1259 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.LT: - self.state = 1258 - self.typeArgumentsOrDiamond() - - - self.state = 1265 - self._errHandler.sync(self) - _la = self._input.LA(1) - - pass - elif token in [JavaParser.BOOLEAN, JavaParser.BYTE, JavaParser.CHAR, JavaParser.DOUBLE, JavaParser.FLOAT, JavaParser.INT, JavaParser.LONG, JavaParser.SHORT]: - self.enterOuterAlt(localctx, 2) - self.state = 1266 - self.primitiveType() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class InnerCreatorContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IDENTIFIER(self): - return self.getToken(JavaParser.IDENTIFIER, 0) - - def classCreatorRest(self): - return self.getTypedRuleContext(JavaParser.ClassCreatorRestContext,0) - - - def nonWildcardTypeArgumentsOrDiamond(self): - return self.getTypedRuleContext(JavaParser.NonWildcardTypeArgumentsOrDiamondContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_innerCreator - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInnerCreator" ): - listener.enterInnerCreator(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInnerCreator" ): - listener.exitInnerCreator(self) - - - - - def innerCreator(self): - - localctx = JavaParser.InnerCreatorContext(self, self._ctx, self.state) - self.enterRule(localctx, 180, self.RULE_innerCreator) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1269 - self.match(JavaParser.IDENTIFIER) - self.state = 1271 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.LT: - self.state = 1270 - self.nonWildcardTypeArgumentsOrDiamond() - - - self.state = 1273 - self.classCreatorRest() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ArrayCreatorRestContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def arrayInitializer(self): - return self.getTypedRuleContext(JavaParser.ArrayInitializerContext,0) - - - def expression(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.ExpressionContext) - else: - return self.getTypedRuleContext(JavaParser.ExpressionContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_arrayCreatorRest - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterArrayCreatorRest" ): - listener.enterArrayCreatorRest(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitArrayCreatorRest" ): - listener.exitArrayCreatorRest(self) - - - - - def arrayCreatorRest(self): - - localctx = JavaParser.ArrayCreatorRestContext(self, self._ctx, self.state) - self.enterRule(localctx, 182, self.RULE_arrayCreatorRest) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1275 - self.match(JavaParser.LBRACK) - self.state = 1303 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.RBRACK]: - self.state = 1276 - self.match(JavaParser.RBRACK) - self.state = 1281 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==JavaParser.LBRACK: - self.state = 1277 - self.match(JavaParser.LBRACK) - self.state = 1278 - self.match(JavaParser.RBRACK) - self.state = 1283 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1284 - self.arrayInitializer() - pass - elif token in [JavaParser.BOOLEAN, JavaParser.BYTE, JavaParser.CHAR, JavaParser.DOUBLE, JavaParser.FLOAT, JavaParser.INT, JavaParser.LONG, JavaParser.NEW, JavaParser.SHORT, JavaParser.SUPER, JavaParser.THIS, JavaParser.VOID, JavaParser.DECIMAL_LITERAL, JavaParser.HEX_LITERAL, JavaParser.OCT_LITERAL, JavaParser.BINARY_LITERAL, JavaParser.FLOAT_LITERAL, JavaParser.HEX_FLOAT_LITERAL, JavaParser.BOOL_LITERAL, JavaParser.CHAR_LITERAL, JavaParser.STRING_LITERAL, JavaParser.NULL_LITERAL, JavaParser.LPAREN, JavaParser.LT, JavaParser.BANG, JavaParser.TILDE, JavaParser.INC, JavaParser.DEC, JavaParser.ADD, JavaParser.SUB, JavaParser.AT, JavaParser.IDENTIFIER]: - self.state = 1285 - self.expression(0) - self.state = 1286 - self.match(JavaParser.RBRACK) - self.state = 1293 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,156,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 1287 - self.match(JavaParser.LBRACK) - self.state = 1288 - self.expression(0) - self.state = 1289 - self.match(JavaParser.RBRACK) - self.state = 1295 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,156,self._ctx) - - self.state = 1300 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,157,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 1296 - self.match(JavaParser.LBRACK) - self.state = 1297 - self.match(JavaParser.RBRACK) - self.state = 1302 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,157,self._ctx) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ClassCreatorRestContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def arguments(self): - return self.getTypedRuleContext(JavaParser.ArgumentsContext,0) - - - def classBody(self): - return self.getTypedRuleContext(JavaParser.ClassBodyContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_classCreatorRest - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterClassCreatorRest" ): - listener.enterClassCreatorRest(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitClassCreatorRest" ): - listener.exitClassCreatorRest(self) - - - - - def classCreatorRest(self): - - localctx = JavaParser.ClassCreatorRestContext(self, self._ctx, self.state) - self.enterRule(localctx, 184, self.RULE_classCreatorRest) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1305 - self.arguments() - self.state = 1307 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,159,self._ctx) - if la_ == 1: - self.state = 1306 - self.classBody() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ExplicitGenericInvocationContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def nonWildcardTypeArguments(self): - return self.getTypedRuleContext(JavaParser.NonWildcardTypeArgumentsContext,0) - - - def explicitGenericInvocationSuffix(self): - return self.getTypedRuleContext(JavaParser.ExplicitGenericInvocationSuffixContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_explicitGenericInvocation - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExplicitGenericInvocation" ): - listener.enterExplicitGenericInvocation(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExplicitGenericInvocation" ): - listener.exitExplicitGenericInvocation(self) - - - - - def explicitGenericInvocation(self): - - localctx = JavaParser.ExplicitGenericInvocationContext(self, self._ctx, self.state) - self.enterRule(localctx, 186, self.RULE_explicitGenericInvocation) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1309 - self.nonWildcardTypeArguments() - self.state = 1310 - self.explicitGenericInvocationSuffix() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class TypeArgumentsOrDiamondContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def typeArguments(self): - return self.getTypedRuleContext(JavaParser.TypeArgumentsContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_typeArgumentsOrDiamond - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypeArgumentsOrDiamond" ): - listener.enterTypeArgumentsOrDiamond(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypeArgumentsOrDiamond" ): - listener.exitTypeArgumentsOrDiamond(self) - - - - - def typeArgumentsOrDiamond(self): - - localctx = JavaParser.TypeArgumentsOrDiamondContext(self, self._ctx, self.state) - self.enterRule(localctx, 188, self.RULE_typeArgumentsOrDiamond) - try: - self.state = 1315 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,160,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1312 - self.match(JavaParser.LT) - self.state = 1313 - self.match(JavaParser.GT) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1314 - self.typeArguments() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class NonWildcardTypeArgumentsOrDiamondContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def nonWildcardTypeArguments(self): - return self.getTypedRuleContext(JavaParser.NonWildcardTypeArgumentsContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_nonWildcardTypeArgumentsOrDiamond - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNonWildcardTypeArgumentsOrDiamond" ): - listener.enterNonWildcardTypeArgumentsOrDiamond(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNonWildcardTypeArgumentsOrDiamond" ): - listener.exitNonWildcardTypeArgumentsOrDiamond(self) - - - - - def nonWildcardTypeArgumentsOrDiamond(self): - - localctx = JavaParser.NonWildcardTypeArgumentsOrDiamondContext(self, self._ctx, self.state) - self.enterRule(localctx, 190, self.RULE_nonWildcardTypeArgumentsOrDiamond) - try: - self.state = 1320 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,161,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1317 - self.match(JavaParser.LT) - self.state = 1318 - self.match(JavaParser.GT) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1319 - self.nonWildcardTypeArguments() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class NonWildcardTypeArgumentsContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def typeList(self): - return self.getTypedRuleContext(JavaParser.TypeListContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_nonWildcardTypeArguments - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNonWildcardTypeArguments" ): - listener.enterNonWildcardTypeArguments(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNonWildcardTypeArguments" ): - listener.exitNonWildcardTypeArguments(self) - - - - - def nonWildcardTypeArguments(self): - - localctx = JavaParser.NonWildcardTypeArgumentsContext(self, self._ctx, self.state) - self.enterRule(localctx, 192, self.RULE_nonWildcardTypeArguments) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1322 - self.match(JavaParser.LT) - self.state = 1323 - self.typeList() - self.state = 1324 - self.match(JavaParser.GT) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class TypeListContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def typeType(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.TypeTypeContext) - else: - return self.getTypedRuleContext(JavaParser.TypeTypeContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_typeList - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypeList" ): - listener.enterTypeList(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypeList" ): - listener.exitTypeList(self) - - - - - def typeList(self): - - localctx = JavaParser.TypeListContext(self, self._ctx, self.state) - self.enterRule(localctx, 194, self.RULE_typeList) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1326 - self.typeType() - self.state = 1331 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==JavaParser.COMMA: - self.state = 1327 - self.match(JavaParser.COMMA) - self.state = 1328 - self.typeType() - self.state = 1333 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class TypeTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def classOrInterfaceType(self): - return self.getTypedRuleContext(JavaParser.ClassOrInterfaceTypeContext,0) - - - def primitiveType(self): - return self.getTypedRuleContext(JavaParser.PrimitiveTypeContext,0) - - - def annotation(self): - return self.getTypedRuleContext(JavaParser.AnnotationContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_typeType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypeType" ): - listener.enterTypeType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypeType" ): - listener.exitTypeType(self) - - - - - def typeType(self): - - localctx = JavaParser.TypeTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 196, self.RULE_typeType) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1335 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==JavaParser.AT: - self.state = 1334 - self.annotation() - - - self.state = 1339 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.IDENTIFIER]: - self.state = 1337 - self.classOrInterfaceType() - pass - elif token in [JavaParser.BOOLEAN, JavaParser.BYTE, JavaParser.CHAR, JavaParser.DOUBLE, JavaParser.FLOAT, JavaParser.INT, JavaParser.LONG, JavaParser.SHORT]: - self.state = 1338 - self.primitiveType() - pass - else: - raise NoViableAltException(self) - - self.state = 1345 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,165,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 1341 - self.match(JavaParser.LBRACK) - self.state = 1342 - self.match(JavaParser.RBRACK) - self.state = 1347 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,165,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class PrimitiveTypeContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def BOOLEAN(self): - return self.getToken(JavaParser.BOOLEAN, 0) - - def CHAR(self): - return self.getToken(JavaParser.CHAR, 0) - - def BYTE(self): - return self.getToken(JavaParser.BYTE, 0) - - def SHORT(self): - return self.getToken(JavaParser.SHORT, 0) - - def INT(self): - return self.getToken(JavaParser.INT, 0) - - def LONG(self): - return self.getToken(JavaParser.LONG, 0) - - def FLOAT(self): - return self.getToken(JavaParser.FLOAT, 0) - - def DOUBLE(self): - return self.getToken(JavaParser.DOUBLE, 0) - - def getRuleIndex(self): - return JavaParser.RULE_primitiveType - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPrimitiveType" ): - listener.enterPrimitiveType(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPrimitiveType" ): - listener.exitPrimitiveType(self) - - - - - def primitiveType(self): - - localctx = JavaParser.PrimitiveTypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 198, self.RULE_primitiveType) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1348 - _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << JavaParser.BOOLEAN) | (1 << JavaParser.BYTE) | (1 << JavaParser.CHAR) | (1 << JavaParser.DOUBLE) | (1 << JavaParser.FLOAT) | (1 << JavaParser.INT) | (1 << JavaParser.LONG) | (1 << JavaParser.SHORT))) != 0)): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class TypeArgumentsContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def typeArgument(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(JavaParser.TypeArgumentContext) - else: - return self.getTypedRuleContext(JavaParser.TypeArgumentContext,i) - - - def getRuleIndex(self): - return JavaParser.RULE_typeArguments - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypeArguments" ): - listener.enterTypeArguments(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypeArguments" ): - listener.exitTypeArguments(self) - - - - - def typeArguments(self): - - localctx = JavaParser.TypeArgumentsContext(self, self._ctx, self.state) - self.enterRule(localctx, 200, self.RULE_typeArguments) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1350 - self.match(JavaParser.LT) - self.state = 1351 - self.typeArgument() - self.state = 1356 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==JavaParser.COMMA: - self.state = 1352 - self.match(JavaParser.COMMA) - self.state = 1353 - self.typeArgument() - self.state = 1358 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 1359 - self.match(JavaParser.GT) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class SuperSuffixContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def arguments(self): - return self.getTypedRuleContext(JavaParser.ArgumentsContext,0) - - - def IDENTIFIER(self): - return self.getToken(JavaParser.IDENTIFIER, 0) - - def getRuleIndex(self): - return JavaParser.RULE_superSuffix - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSuperSuffix" ): - listener.enterSuperSuffix(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSuperSuffix" ): - listener.exitSuperSuffix(self) - - - - - def superSuffix(self): - - localctx = JavaParser.SuperSuffixContext(self, self._ctx, self.state) - self.enterRule(localctx, 202, self.RULE_superSuffix) - try: - self.state = 1367 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.LPAREN]: - self.enterOuterAlt(localctx, 1) - self.state = 1361 - self.arguments() - pass - elif token in [JavaParser.DOT]: - self.enterOuterAlt(localctx, 2) - self.state = 1362 - self.match(JavaParser.DOT) - self.state = 1363 - self.match(JavaParser.IDENTIFIER) - self.state = 1365 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,167,self._ctx) - if la_ == 1: - self.state = 1364 - self.arguments() - - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ExplicitGenericInvocationSuffixContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def SUPER(self): - return self.getToken(JavaParser.SUPER, 0) - - def superSuffix(self): - return self.getTypedRuleContext(JavaParser.SuperSuffixContext,0) - - - def IDENTIFIER(self): - return self.getToken(JavaParser.IDENTIFIER, 0) - - def arguments(self): - return self.getTypedRuleContext(JavaParser.ArgumentsContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_explicitGenericInvocationSuffix - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExplicitGenericInvocationSuffix" ): - listener.enterExplicitGenericInvocationSuffix(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExplicitGenericInvocationSuffix" ): - listener.exitExplicitGenericInvocationSuffix(self) - - - - - def explicitGenericInvocationSuffix(self): - - localctx = JavaParser.ExplicitGenericInvocationSuffixContext(self, self._ctx, self.state) - self.enterRule(localctx, 204, self.RULE_explicitGenericInvocationSuffix) - try: - self.state = 1373 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [JavaParser.SUPER]: - self.enterOuterAlt(localctx, 1) - self.state = 1369 - self.match(JavaParser.SUPER) - self.state = 1370 - self.superSuffix() - pass - elif token in [JavaParser.IDENTIFIER]: - self.enterOuterAlt(localctx, 2) - self.state = 1371 - self.match(JavaParser.IDENTIFIER) - self.state = 1372 - self.arguments() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - class ArgumentsContext(ParserRuleContext): - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def expressionList(self): - return self.getTypedRuleContext(JavaParser.ExpressionListContext,0) - - - def getRuleIndex(self): - return JavaParser.RULE_arguments - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterArguments" ): - listener.enterArguments(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitArguments" ): - listener.exitArguments(self) - - - - - def arguments(self): - - localctx = JavaParser.ArgumentsContext(self, self._ctx, self.state) - self.enterRule(localctx, 206, self.RULE_arguments) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1375 - self.match(JavaParser.LPAREN) - self.state = 1377 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << JavaParser.BOOLEAN) | (1 << JavaParser.BYTE) | (1 << JavaParser.CHAR) | (1 << JavaParser.DOUBLE) | (1 << JavaParser.FLOAT) | (1 << JavaParser.INT) | (1 << JavaParser.LONG) | (1 << JavaParser.NEW) | (1 << JavaParser.SHORT) | (1 << JavaParser.SUPER) | (1 << JavaParser.THIS) | (1 << JavaParser.VOID) | (1 << JavaParser.DECIMAL_LITERAL) | (1 << JavaParser.HEX_LITERAL) | (1 << JavaParser.OCT_LITERAL) | (1 << JavaParser.BINARY_LITERAL) | (1 << JavaParser.FLOAT_LITERAL) | (1 << JavaParser.HEX_FLOAT_LITERAL) | (1 << JavaParser.BOOL_LITERAL) | (1 << JavaParser.CHAR_LITERAL) | (1 << JavaParser.STRING_LITERAL) | (1 << JavaParser.NULL_LITERAL) | (1 << JavaParser.LPAREN))) != 0) or ((((_la - 72)) & ~0x3f) == 0 and ((1 << (_la - 72)) & ((1 << (JavaParser.LT - 72)) | (1 << (JavaParser.BANG - 72)) | (1 << (JavaParser.TILDE - 72)) | (1 << (JavaParser.INC - 72)) | (1 << (JavaParser.DEC - 72)) | (1 << (JavaParser.ADD - 72)) | (1 << (JavaParser.SUB - 72)) | (1 << (JavaParser.AT - 72)) | (1 << (JavaParser.IDENTIFIER - 72)))) != 0): - self.state = 1376 - self.expressionList() - - - self.state = 1379 - self.match(JavaParser.RPAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - - def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int): - if self._predicates == None: - self._predicates = dict() - self._predicates[82] = self.expression_sempred - pred = self._predicates.get(ruleIndex, None) - if pred is None: - raise Exception("No predicate with index:" + str(ruleIndex)) - else: - return pred(localctx, predIndex) - - def expression_sempred(self, localctx:ExpressionContext, predIndex:int): - if predIndex == 0: - return self.precpred(self._ctx, 17) - - - if predIndex == 1: - return self.precpred(self._ctx, 16) - - - if predIndex == 2: - return self.precpred(self._ctx, 15) - - - if predIndex == 3: - return self.precpred(self._ctx, 14) - - - if predIndex == 4: - return self.precpred(self._ctx, 12) - - - if predIndex == 5: - return self.precpred(self._ctx, 11) - - - if predIndex == 6: - return self.precpred(self._ctx, 10) - - - if predIndex == 7: - return self.precpred(self._ctx, 9) - - - if predIndex == 8: - return self.precpred(self._ctx, 8) - - - if predIndex == 9: - return self.precpred(self._ctx, 7) - - - if predIndex == 10: - return self.precpred(self._ctx, 6) - - - if predIndex == 11: - return self.precpred(self._ctx, 5) - - - if predIndex == 12: - return self.precpred(self._ctx, 25) - - - if predIndex == 13: - return self.precpred(self._ctx, 24) - - - if predIndex == 14: - return self.precpred(self._ctx, 20) - - - if predIndex == 15: - return self.precpred(self._ctx, 13) - - - if predIndex == 16: - return self.precpred(self._ctx, 3) - - - - - diff --git a/persper/parser/java/JavaParser.tokens b/persper/parser/java/JavaParser.tokens deleted file mode 100644 index c648b8cf39b..00000000000 --- a/persper/parser/java/JavaParser.tokens +++ /dev/null @@ -1,209 +0,0 @@ -ABSTRACT=1 -ASSERT=2 -BOOLEAN=3 -BREAK=4 -BYTE=5 -CASE=6 -CATCH=7 -CHAR=8 -CLASS=9 -CONST=10 -CONTINUE=11 -DEFAULT=12 -DO=13 -DOUBLE=14 -ELSE=15 -ENUM=16 -EXTENDS=17 -FINAL=18 -FINALLY=19 -FLOAT=20 -FOR=21 -IF=22 -GOTO=23 -IMPLEMENTS=24 -IMPORT=25 -INSTANCEOF=26 -INT=27 -INTERFACE=28 -LONG=29 -NATIVE=30 -NEW=31 -PACKAGE=32 -PRIVATE=33 -PROTECTED=34 -PUBLIC=35 -RETURN=36 -SHORT=37 -STATIC=38 -STRICTFP=39 -SUPER=40 -SWITCH=41 -SYNCHRONIZED=42 -THIS=43 -THROW=44 -THROWS=45 -TRANSIENT=46 -TRY=47 -VOID=48 -VOLATILE=49 -WHILE=50 -DECIMAL_LITERAL=51 -HEX_LITERAL=52 -OCT_LITERAL=53 -BINARY_LITERAL=54 -FLOAT_LITERAL=55 -HEX_FLOAT_LITERAL=56 -BOOL_LITERAL=57 -CHAR_LITERAL=58 -STRING_LITERAL=59 -NULL_LITERAL=60 -LPAREN=61 -RPAREN=62 -LBRACE=63 -RBRACE=64 -LBRACK=65 -RBRACK=66 -SEMI=67 -COMMA=68 -DOT=69 -ASSIGN=70 -GT=71 -LT=72 -BANG=73 -TILDE=74 -QUESTION=75 -COLON=76 -EQUAL=77 -LE=78 -GE=79 -NOTEQUAL=80 -AND=81 -OR=82 -INC=83 -DEC=84 -ADD=85 -SUB=86 -MUL=87 -DIV=88 -BITAND=89 -BITOR=90 -CARET=91 -MOD=92 -ADD_ASSIGN=93 -SUB_ASSIGN=94 -MUL_ASSIGN=95 -DIV_ASSIGN=96 -AND_ASSIGN=97 -OR_ASSIGN=98 -XOR_ASSIGN=99 -MOD_ASSIGN=100 -LSHIFT_ASSIGN=101 -RSHIFT_ASSIGN=102 -URSHIFT_ASSIGN=103 -ARROW=104 -COLONCOLON=105 -AT=106 -ELLIPSIS=107 -WS=108 -COMMENT=109 -LINE_COMMENT=110 -IDENTIFIER=111 -'abstract'=1 -'assert'=2 -'boolean'=3 -'break'=4 -'byte'=5 -'case'=6 -'catch'=7 -'char'=8 -'class'=9 -'const'=10 -'continue'=11 -'default'=12 -'do'=13 -'double'=14 -'else'=15 -'enum'=16 -'extends'=17 -'final'=18 -'finally'=19 -'float'=20 -'for'=21 -'if'=22 -'goto'=23 -'implements'=24 -'import'=25 -'instanceof'=26 -'int'=27 -'interface'=28 -'long'=29 -'native'=30 -'new'=31 -'package'=32 -'private'=33 -'protected'=34 -'public'=35 -'return'=36 -'short'=37 -'static'=38 -'strictfp'=39 -'super'=40 -'switch'=41 -'synchronized'=42 -'this'=43 -'throw'=44 -'throws'=45 -'transient'=46 -'try'=47 -'void'=48 -'volatile'=49 -'while'=50 -'null'=60 -'('=61 -')'=62 -'{'=63 -'}'=64 -'['=65 -']'=66 -';'=67 -','=68 -'.'=69 -'='=70 -'>'=71 -'<'=72 -'!'=73 -'~'=74 -'?'=75 -':'=76 -'=='=77 -'<='=78 -'>='=79 -'!='=80 -'&&'=81 -'||'=82 -'++'=83 -'--'=84 -'+'=85 -'-'=86 -'*'=87 -'/'=88 -'&'=89 -'|'=90 -'^'=91 -'%'=92 -'+='=93 -'-='=94 -'*='=95 -'/='=96 -'&='=97 -'|='=98 -'^='=99 -'%='=100 -'<<='=101 -'>>='=102 -'>>>='=103 -'->'=104 -'::'=105 -'@'=106 -'...'=107 diff --git a/persper/parser/java/JavaParserListener.py b/persper/parser/java/JavaParserListener.py deleted file mode 100644 index a3d2153de27..00000000000 --- a/persper/parser/java/JavaParserListener.py +++ /dev/null @@ -1,946 +0,0 @@ -# Generated from JavaParser.g4 by ANTLR 4.7.1 -from antlr4 import * -if __name__ is not None and "." in __name__: - from .JavaParser import JavaParser -else: - from JavaParser import JavaParser - -# This class defines a complete listener for a parse tree produced by JavaParser. -class JavaParserListener(ParseTreeListener): - - # Enter a parse tree produced by JavaParser#compilationUnit. - def enterCompilationUnit(self, ctx:JavaParser.CompilationUnitContext): - pass - - # Exit a parse tree produced by JavaParser#compilationUnit. - def exitCompilationUnit(self, ctx:JavaParser.CompilationUnitContext): - pass - - - # Enter a parse tree produced by JavaParser#packageDeclaration. - def enterPackageDeclaration(self, ctx:JavaParser.PackageDeclarationContext): - pass - - # Exit a parse tree produced by JavaParser#packageDeclaration. - def exitPackageDeclaration(self, ctx:JavaParser.PackageDeclarationContext): - pass - - - # Enter a parse tree produced by JavaParser#importDeclaration. - def enterImportDeclaration(self, ctx:JavaParser.ImportDeclarationContext): - pass - - # Exit a parse tree produced by JavaParser#importDeclaration. - def exitImportDeclaration(self, ctx:JavaParser.ImportDeclarationContext): - pass - - - # Enter a parse tree produced by JavaParser#typeDeclaration. - def enterTypeDeclaration(self, ctx:JavaParser.TypeDeclarationContext): - pass - - # Exit a parse tree produced by JavaParser#typeDeclaration. - def exitTypeDeclaration(self, ctx:JavaParser.TypeDeclarationContext): - pass - - - # Enter a parse tree produced by JavaParser#modifier. - def enterModifier(self, ctx:JavaParser.ModifierContext): - pass - - # Exit a parse tree produced by JavaParser#modifier. - def exitModifier(self, ctx:JavaParser.ModifierContext): - pass - - - # Enter a parse tree produced by JavaParser#classOrInterfaceModifier. - def enterClassOrInterfaceModifier(self, ctx:JavaParser.ClassOrInterfaceModifierContext): - pass - - # Exit a parse tree produced by JavaParser#classOrInterfaceModifier. - def exitClassOrInterfaceModifier(self, ctx:JavaParser.ClassOrInterfaceModifierContext): - pass - - - # Enter a parse tree produced by JavaParser#variableModifier. - def enterVariableModifier(self, ctx:JavaParser.VariableModifierContext): - pass - - # Exit a parse tree produced by JavaParser#variableModifier. - def exitVariableModifier(self, ctx:JavaParser.VariableModifierContext): - pass - - - # Enter a parse tree produced by JavaParser#classDeclaration. - def enterClassDeclaration(self, ctx:JavaParser.ClassDeclarationContext): - pass - - # Exit a parse tree produced by JavaParser#classDeclaration. - def exitClassDeclaration(self, ctx:JavaParser.ClassDeclarationContext): - pass - - - # Enter a parse tree produced by JavaParser#typeParameters. - def enterTypeParameters(self, ctx:JavaParser.TypeParametersContext): - pass - - # Exit a parse tree produced by JavaParser#typeParameters. - def exitTypeParameters(self, ctx:JavaParser.TypeParametersContext): - pass - - - # Enter a parse tree produced by JavaParser#typeParameter. - def enterTypeParameter(self, ctx:JavaParser.TypeParameterContext): - pass - - # Exit a parse tree produced by JavaParser#typeParameter. - def exitTypeParameter(self, ctx:JavaParser.TypeParameterContext): - pass - - - # Enter a parse tree produced by JavaParser#typeBound. - def enterTypeBound(self, ctx:JavaParser.TypeBoundContext): - pass - - # Exit a parse tree produced by JavaParser#typeBound. - def exitTypeBound(self, ctx:JavaParser.TypeBoundContext): - pass - - - # Enter a parse tree produced by JavaParser#enumDeclaration. - def enterEnumDeclaration(self, ctx:JavaParser.EnumDeclarationContext): - pass - - # Exit a parse tree produced by JavaParser#enumDeclaration. - def exitEnumDeclaration(self, ctx:JavaParser.EnumDeclarationContext): - pass - - - # Enter a parse tree produced by JavaParser#enumConstants. - def enterEnumConstants(self, ctx:JavaParser.EnumConstantsContext): - pass - - # Exit a parse tree produced by JavaParser#enumConstants. - def exitEnumConstants(self, ctx:JavaParser.EnumConstantsContext): - pass - - - # Enter a parse tree produced by JavaParser#enumConstant. - def enterEnumConstant(self, ctx:JavaParser.EnumConstantContext): - pass - - # Exit a parse tree produced by JavaParser#enumConstant. - def exitEnumConstant(self, ctx:JavaParser.EnumConstantContext): - pass - - - # Enter a parse tree produced by JavaParser#enumBodyDeclarations. - def enterEnumBodyDeclarations(self, ctx:JavaParser.EnumBodyDeclarationsContext): - pass - - # Exit a parse tree produced by JavaParser#enumBodyDeclarations. - def exitEnumBodyDeclarations(self, ctx:JavaParser.EnumBodyDeclarationsContext): - pass - - - # Enter a parse tree produced by JavaParser#interfaceDeclaration. - def enterInterfaceDeclaration(self, ctx:JavaParser.InterfaceDeclarationContext): - pass - - # Exit a parse tree produced by JavaParser#interfaceDeclaration. - def exitInterfaceDeclaration(self, ctx:JavaParser.InterfaceDeclarationContext): - pass - - - # Enter a parse tree produced by JavaParser#classBody. - def enterClassBody(self, ctx:JavaParser.ClassBodyContext): - pass - - # Exit a parse tree produced by JavaParser#classBody. - def exitClassBody(self, ctx:JavaParser.ClassBodyContext): - pass - - - # Enter a parse tree produced by JavaParser#interfaceBody. - def enterInterfaceBody(self, ctx:JavaParser.InterfaceBodyContext): - pass - - # Exit a parse tree produced by JavaParser#interfaceBody. - def exitInterfaceBody(self, ctx:JavaParser.InterfaceBodyContext): - pass - - - # Enter a parse tree produced by JavaParser#classBodyDeclaration. - def enterClassBodyDeclaration(self, ctx:JavaParser.ClassBodyDeclarationContext): - pass - - # Exit a parse tree produced by JavaParser#classBodyDeclaration. - def exitClassBodyDeclaration(self, ctx:JavaParser.ClassBodyDeclarationContext): - pass - - - # Enter a parse tree produced by JavaParser#memberDeclaration. - def enterMemberDeclaration(self, ctx:JavaParser.MemberDeclarationContext): - pass - - # Exit a parse tree produced by JavaParser#memberDeclaration. - def exitMemberDeclaration(self, ctx:JavaParser.MemberDeclarationContext): - pass - - - # Enter a parse tree produced by JavaParser#methodDeclaration. - def enterMethodDeclaration(self, ctx:JavaParser.MethodDeclarationContext): - pass - - # Exit a parse tree produced by JavaParser#methodDeclaration. - def exitMethodDeclaration(self, ctx:JavaParser.MethodDeclarationContext): - pass - - - # Enter a parse tree produced by JavaParser#methodBody. - def enterMethodBody(self, ctx:JavaParser.MethodBodyContext): - pass - - # Exit a parse tree produced by JavaParser#methodBody. - def exitMethodBody(self, ctx:JavaParser.MethodBodyContext): - pass - - - # Enter a parse tree produced by JavaParser#typeTypeOrVoid. - def enterTypeTypeOrVoid(self, ctx:JavaParser.TypeTypeOrVoidContext): - pass - - # Exit a parse tree produced by JavaParser#typeTypeOrVoid. - def exitTypeTypeOrVoid(self, ctx:JavaParser.TypeTypeOrVoidContext): - pass - - - # Enter a parse tree produced by JavaParser#genericMethodDeclaration. - def enterGenericMethodDeclaration(self, ctx:JavaParser.GenericMethodDeclarationContext): - pass - - # Exit a parse tree produced by JavaParser#genericMethodDeclaration. - def exitGenericMethodDeclaration(self, ctx:JavaParser.GenericMethodDeclarationContext): - pass - - - # Enter a parse tree produced by JavaParser#genericConstructorDeclaration. - def enterGenericConstructorDeclaration(self, ctx:JavaParser.GenericConstructorDeclarationContext): - pass - - # Exit a parse tree produced by JavaParser#genericConstructorDeclaration. - def exitGenericConstructorDeclaration(self, ctx:JavaParser.GenericConstructorDeclarationContext): - pass - - - # Enter a parse tree produced by JavaParser#constructorDeclaration. - def enterConstructorDeclaration(self, ctx:JavaParser.ConstructorDeclarationContext): - pass - - # Exit a parse tree produced by JavaParser#constructorDeclaration. - def exitConstructorDeclaration(self, ctx:JavaParser.ConstructorDeclarationContext): - pass - - - # Enter a parse tree produced by JavaParser#fieldDeclaration. - def enterFieldDeclaration(self, ctx:JavaParser.FieldDeclarationContext): - pass - - # Exit a parse tree produced by JavaParser#fieldDeclaration. - def exitFieldDeclaration(self, ctx:JavaParser.FieldDeclarationContext): - pass - - - # Enter a parse tree produced by JavaParser#interfaceBodyDeclaration. - def enterInterfaceBodyDeclaration(self, ctx:JavaParser.InterfaceBodyDeclarationContext): - pass - - # Exit a parse tree produced by JavaParser#interfaceBodyDeclaration. - def exitInterfaceBodyDeclaration(self, ctx:JavaParser.InterfaceBodyDeclarationContext): - pass - - - # Enter a parse tree produced by JavaParser#interfaceMemberDeclaration. - def enterInterfaceMemberDeclaration(self, ctx:JavaParser.InterfaceMemberDeclarationContext): - pass - - # Exit a parse tree produced by JavaParser#interfaceMemberDeclaration. - def exitInterfaceMemberDeclaration(self, ctx:JavaParser.InterfaceMemberDeclarationContext): - pass - - - # Enter a parse tree produced by JavaParser#constDeclaration. - def enterConstDeclaration(self, ctx:JavaParser.ConstDeclarationContext): - pass - - # Exit a parse tree produced by JavaParser#constDeclaration. - def exitConstDeclaration(self, ctx:JavaParser.ConstDeclarationContext): - pass - - - # Enter a parse tree produced by JavaParser#constantDeclarator. - def enterConstantDeclarator(self, ctx:JavaParser.ConstantDeclaratorContext): - pass - - # Exit a parse tree produced by JavaParser#constantDeclarator. - def exitConstantDeclarator(self, ctx:JavaParser.ConstantDeclaratorContext): - pass - - - # Enter a parse tree produced by JavaParser#interfaceMethodDeclaration. - def enterInterfaceMethodDeclaration(self, ctx:JavaParser.InterfaceMethodDeclarationContext): - pass - - # Exit a parse tree produced by JavaParser#interfaceMethodDeclaration. - def exitInterfaceMethodDeclaration(self, ctx:JavaParser.InterfaceMethodDeclarationContext): - pass - - - # Enter a parse tree produced by JavaParser#interfaceMethodModifier. - def enterInterfaceMethodModifier(self, ctx:JavaParser.InterfaceMethodModifierContext): - pass - - # Exit a parse tree produced by JavaParser#interfaceMethodModifier. - def exitInterfaceMethodModifier(self, ctx:JavaParser.InterfaceMethodModifierContext): - pass - - - # Enter a parse tree produced by JavaParser#genericInterfaceMethodDeclaration. - def enterGenericInterfaceMethodDeclaration(self, ctx:JavaParser.GenericInterfaceMethodDeclarationContext): - pass - - # Exit a parse tree produced by JavaParser#genericInterfaceMethodDeclaration. - def exitGenericInterfaceMethodDeclaration(self, ctx:JavaParser.GenericInterfaceMethodDeclarationContext): - pass - - - # Enter a parse tree produced by JavaParser#variableDeclarators. - def enterVariableDeclarators(self, ctx:JavaParser.VariableDeclaratorsContext): - pass - - # Exit a parse tree produced by JavaParser#variableDeclarators. - def exitVariableDeclarators(self, ctx:JavaParser.VariableDeclaratorsContext): - pass - - - # Enter a parse tree produced by JavaParser#variableDeclarator. - def enterVariableDeclarator(self, ctx:JavaParser.VariableDeclaratorContext): - pass - - # Exit a parse tree produced by JavaParser#variableDeclarator. - def exitVariableDeclarator(self, ctx:JavaParser.VariableDeclaratorContext): - pass - - - # Enter a parse tree produced by JavaParser#variableDeclaratorId. - def enterVariableDeclaratorId(self, ctx:JavaParser.VariableDeclaratorIdContext): - pass - - # Exit a parse tree produced by JavaParser#variableDeclaratorId. - def exitVariableDeclaratorId(self, ctx:JavaParser.VariableDeclaratorIdContext): - pass - - - # Enter a parse tree produced by JavaParser#variableInitializer. - def enterVariableInitializer(self, ctx:JavaParser.VariableInitializerContext): - pass - - # Exit a parse tree produced by JavaParser#variableInitializer. - def exitVariableInitializer(self, ctx:JavaParser.VariableInitializerContext): - pass - - - # Enter a parse tree produced by JavaParser#arrayInitializer. - def enterArrayInitializer(self, ctx:JavaParser.ArrayInitializerContext): - pass - - # Exit a parse tree produced by JavaParser#arrayInitializer. - def exitArrayInitializer(self, ctx:JavaParser.ArrayInitializerContext): - pass - - - # Enter a parse tree produced by JavaParser#classOrInterfaceType. - def enterClassOrInterfaceType(self, ctx:JavaParser.ClassOrInterfaceTypeContext): - pass - - # Exit a parse tree produced by JavaParser#classOrInterfaceType. - def exitClassOrInterfaceType(self, ctx:JavaParser.ClassOrInterfaceTypeContext): - pass - - - # Enter a parse tree produced by JavaParser#typeArgument. - def enterTypeArgument(self, ctx:JavaParser.TypeArgumentContext): - pass - - # Exit a parse tree produced by JavaParser#typeArgument. - def exitTypeArgument(self, ctx:JavaParser.TypeArgumentContext): - pass - - - # Enter a parse tree produced by JavaParser#qualifiedNameList. - def enterQualifiedNameList(self, ctx:JavaParser.QualifiedNameListContext): - pass - - # Exit a parse tree produced by JavaParser#qualifiedNameList. - def exitQualifiedNameList(self, ctx:JavaParser.QualifiedNameListContext): - pass - - - # Enter a parse tree produced by JavaParser#formalParameters. - def enterFormalParameters(self, ctx:JavaParser.FormalParametersContext): - pass - - # Exit a parse tree produced by JavaParser#formalParameters. - def exitFormalParameters(self, ctx:JavaParser.FormalParametersContext): - pass - - - # Enter a parse tree produced by JavaParser#formalParameterList. - def enterFormalParameterList(self, ctx:JavaParser.FormalParameterListContext): - pass - - # Exit a parse tree produced by JavaParser#formalParameterList. - def exitFormalParameterList(self, ctx:JavaParser.FormalParameterListContext): - pass - - - # Enter a parse tree produced by JavaParser#formalParameter. - def enterFormalParameter(self, ctx:JavaParser.FormalParameterContext): - pass - - # Exit a parse tree produced by JavaParser#formalParameter. - def exitFormalParameter(self, ctx:JavaParser.FormalParameterContext): - pass - - - # Enter a parse tree produced by JavaParser#lastFormalParameter. - def enterLastFormalParameter(self, ctx:JavaParser.LastFormalParameterContext): - pass - - # Exit a parse tree produced by JavaParser#lastFormalParameter. - def exitLastFormalParameter(self, ctx:JavaParser.LastFormalParameterContext): - pass - - - # Enter a parse tree produced by JavaParser#qualifiedName. - def enterQualifiedName(self, ctx:JavaParser.QualifiedNameContext): - pass - - # Exit a parse tree produced by JavaParser#qualifiedName. - def exitQualifiedName(self, ctx:JavaParser.QualifiedNameContext): - pass - - - # Enter a parse tree produced by JavaParser#literal. - def enterLiteral(self, ctx:JavaParser.LiteralContext): - pass - - # Exit a parse tree produced by JavaParser#literal. - def exitLiteral(self, ctx:JavaParser.LiteralContext): - pass - - - # Enter a parse tree produced by JavaParser#integerLiteral. - def enterIntegerLiteral(self, ctx:JavaParser.IntegerLiteralContext): - pass - - # Exit a parse tree produced by JavaParser#integerLiteral. - def exitIntegerLiteral(self, ctx:JavaParser.IntegerLiteralContext): - pass - - - # Enter a parse tree produced by JavaParser#floatLiteral. - def enterFloatLiteral(self, ctx:JavaParser.FloatLiteralContext): - pass - - # Exit a parse tree produced by JavaParser#floatLiteral. - def exitFloatLiteral(self, ctx:JavaParser.FloatLiteralContext): - pass - - - # Enter a parse tree produced by JavaParser#annotation. - def enterAnnotation(self, ctx:JavaParser.AnnotationContext): - pass - - # Exit a parse tree produced by JavaParser#annotation. - def exitAnnotation(self, ctx:JavaParser.AnnotationContext): - pass - - - # Enter a parse tree produced by JavaParser#elementValuePairs. - def enterElementValuePairs(self, ctx:JavaParser.ElementValuePairsContext): - pass - - # Exit a parse tree produced by JavaParser#elementValuePairs. - def exitElementValuePairs(self, ctx:JavaParser.ElementValuePairsContext): - pass - - - # Enter a parse tree produced by JavaParser#elementValuePair. - def enterElementValuePair(self, ctx:JavaParser.ElementValuePairContext): - pass - - # Exit a parse tree produced by JavaParser#elementValuePair. - def exitElementValuePair(self, ctx:JavaParser.ElementValuePairContext): - pass - - - # Enter a parse tree produced by JavaParser#elementValue. - def enterElementValue(self, ctx:JavaParser.ElementValueContext): - pass - - # Exit a parse tree produced by JavaParser#elementValue. - def exitElementValue(self, ctx:JavaParser.ElementValueContext): - pass - - - # Enter a parse tree produced by JavaParser#elementValueArrayInitializer. - def enterElementValueArrayInitializer(self, ctx:JavaParser.ElementValueArrayInitializerContext): - pass - - # Exit a parse tree produced by JavaParser#elementValueArrayInitializer. - def exitElementValueArrayInitializer(self, ctx:JavaParser.ElementValueArrayInitializerContext): - pass - - - # Enter a parse tree produced by JavaParser#annotationTypeDeclaration. - def enterAnnotationTypeDeclaration(self, ctx:JavaParser.AnnotationTypeDeclarationContext): - pass - - # Exit a parse tree produced by JavaParser#annotationTypeDeclaration. - def exitAnnotationTypeDeclaration(self, ctx:JavaParser.AnnotationTypeDeclarationContext): - pass - - - # Enter a parse tree produced by JavaParser#annotationTypeBody. - def enterAnnotationTypeBody(self, ctx:JavaParser.AnnotationTypeBodyContext): - pass - - # Exit a parse tree produced by JavaParser#annotationTypeBody. - def exitAnnotationTypeBody(self, ctx:JavaParser.AnnotationTypeBodyContext): - pass - - - # Enter a parse tree produced by JavaParser#annotationTypeElementDeclaration. - def enterAnnotationTypeElementDeclaration(self, ctx:JavaParser.AnnotationTypeElementDeclarationContext): - pass - - # Exit a parse tree produced by JavaParser#annotationTypeElementDeclaration. - def exitAnnotationTypeElementDeclaration(self, ctx:JavaParser.AnnotationTypeElementDeclarationContext): - pass - - - # Enter a parse tree produced by JavaParser#annotationTypeElementRest. - def enterAnnotationTypeElementRest(self, ctx:JavaParser.AnnotationTypeElementRestContext): - pass - - # Exit a parse tree produced by JavaParser#annotationTypeElementRest. - def exitAnnotationTypeElementRest(self, ctx:JavaParser.AnnotationTypeElementRestContext): - pass - - - # Enter a parse tree produced by JavaParser#annotationMethodOrConstantRest. - def enterAnnotationMethodOrConstantRest(self, ctx:JavaParser.AnnotationMethodOrConstantRestContext): - pass - - # Exit a parse tree produced by JavaParser#annotationMethodOrConstantRest. - def exitAnnotationMethodOrConstantRest(self, ctx:JavaParser.AnnotationMethodOrConstantRestContext): - pass - - - # Enter a parse tree produced by JavaParser#annotationMethodRest. - def enterAnnotationMethodRest(self, ctx:JavaParser.AnnotationMethodRestContext): - pass - - # Exit a parse tree produced by JavaParser#annotationMethodRest. - def exitAnnotationMethodRest(self, ctx:JavaParser.AnnotationMethodRestContext): - pass - - - # Enter a parse tree produced by JavaParser#annotationConstantRest. - def enterAnnotationConstantRest(self, ctx:JavaParser.AnnotationConstantRestContext): - pass - - # Exit a parse tree produced by JavaParser#annotationConstantRest. - def exitAnnotationConstantRest(self, ctx:JavaParser.AnnotationConstantRestContext): - pass - - - # Enter a parse tree produced by JavaParser#defaultValue. - def enterDefaultValue(self, ctx:JavaParser.DefaultValueContext): - pass - - # Exit a parse tree produced by JavaParser#defaultValue. - def exitDefaultValue(self, ctx:JavaParser.DefaultValueContext): - pass - - - # Enter a parse tree produced by JavaParser#block. - def enterBlock(self, ctx:JavaParser.BlockContext): - pass - - # Exit a parse tree produced by JavaParser#block. - def exitBlock(self, ctx:JavaParser.BlockContext): - pass - - - # Enter a parse tree produced by JavaParser#blockStatement. - def enterBlockStatement(self, ctx:JavaParser.BlockStatementContext): - pass - - # Exit a parse tree produced by JavaParser#blockStatement. - def exitBlockStatement(self, ctx:JavaParser.BlockStatementContext): - pass - - - # Enter a parse tree produced by JavaParser#localVariableDeclaration. - def enterLocalVariableDeclaration(self, ctx:JavaParser.LocalVariableDeclarationContext): - pass - - # Exit a parse tree produced by JavaParser#localVariableDeclaration. - def exitLocalVariableDeclaration(self, ctx:JavaParser.LocalVariableDeclarationContext): - pass - - - # Enter a parse tree produced by JavaParser#localTypeDeclaration. - def enterLocalTypeDeclaration(self, ctx:JavaParser.LocalTypeDeclarationContext): - pass - - # Exit a parse tree produced by JavaParser#localTypeDeclaration. - def exitLocalTypeDeclaration(self, ctx:JavaParser.LocalTypeDeclarationContext): - pass - - - # Enter a parse tree produced by JavaParser#statement. - def enterStatement(self, ctx:JavaParser.StatementContext): - pass - - # Exit a parse tree produced by JavaParser#statement. - def exitStatement(self, ctx:JavaParser.StatementContext): - pass - - - # Enter a parse tree produced by JavaParser#catchClause. - def enterCatchClause(self, ctx:JavaParser.CatchClauseContext): - pass - - # Exit a parse tree produced by JavaParser#catchClause. - def exitCatchClause(self, ctx:JavaParser.CatchClauseContext): - pass - - - # Enter a parse tree produced by JavaParser#catchType. - def enterCatchType(self, ctx:JavaParser.CatchTypeContext): - pass - - # Exit a parse tree produced by JavaParser#catchType. - def exitCatchType(self, ctx:JavaParser.CatchTypeContext): - pass - - - # Enter a parse tree produced by JavaParser#finallyBlock. - def enterFinallyBlock(self, ctx:JavaParser.FinallyBlockContext): - pass - - # Exit a parse tree produced by JavaParser#finallyBlock. - def exitFinallyBlock(self, ctx:JavaParser.FinallyBlockContext): - pass - - - # Enter a parse tree produced by JavaParser#resourceSpecification. - def enterResourceSpecification(self, ctx:JavaParser.ResourceSpecificationContext): - pass - - # Exit a parse tree produced by JavaParser#resourceSpecification. - def exitResourceSpecification(self, ctx:JavaParser.ResourceSpecificationContext): - pass - - - # Enter a parse tree produced by JavaParser#resources. - def enterResources(self, ctx:JavaParser.ResourcesContext): - pass - - # Exit a parse tree produced by JavaParser#resources. - def exitResources(self, ctx:JavaParser.ResourcesContext): - pass - - - # Enter a parse tree produced by JavaParser#resource. - def enterResource(self, ctx:JavaParser.ResourceContext): - pass - - # Exit a parse tree produced by JavaParser#resource. - def exitResource(self, ctx:JavaParser.ResourceContext): - pass - - - # Enter a parse tree produced by JavaParser#switchBlockStatementGroup. - def enterSwitchBlockStatementGroup(self, ctx:JavaParser.SwitchBlockStatementGroupContext): - pass - - # Exit a parse tree produced by JavaParser#switchBlockStatementGroup. - def exitSwitchBlockStatementGroup(self, ctx:JavaParser.SwitchBlockStatementGroupContext): - pass - - - # Enter a parse tree produced by JavaParser#switchLabel. - def enterSwitchLabel(self, ctx:JavaParser.SwitchLabelContext): - pass - - # Exit a parse tree produced by JavaParser#switchLabel. - def exitSwitchLabel(self, ctx:JavaParser.SwitchLabelContext): - pass - - - # Enter a parse tree produced by JavaParser#forControl. - def enterForControl(self, ctx:JavaParser.ForControlContext): - pass - - # Exit a parse tree produced by JavaParser#forControl. - def exitForControl(self, ctx:JavaParser.ForControlContext): - pass - - - # Enter a parse tree produced by JavaParser#forInit. - def enterForInit(self, ctx:JavaParser.ForInitContext): - pass - - # Exit a parse tree produced by JavaParser#forInit. - def exitForInit(self, ctx:JavaParser.ForInitContext): - pass - - - # Enter a parse tree produced by JavaParser#enhancedForControl. - def enterEnhancedForControl(self, ctx:JavaParser.EnhancedForControlContext): - pass - - # Exit a parse tree produced by JavaParser#enhancedForControl. - def exitEnhancedForControl(self, ctx:JavaParser.EnhancedForControlContext): - pass - - - # Enter a parse tree produced by JavaParser#parExpression. - def enterParExpression(self, ctx:JavaParser.ParExpressionContext): - pass - - # Exit a parse tree produced by JavaParser#parExpression. - def exitParExpression(self, ctx:JavaParser.ParExpressionContext): - pass - - - # Enter a parse tree produced by JavaParser#expressionList. - def enterExpressionList(self, ctx:JavaParser.ExpressionListContext): - pass - - # Exit a parse tree produced by JavaParser#expressionList. - def exitExpressionList(self, ctx:JavaParser.ExpressionListContext): - pass - - - # Enter a parse tree produced by JavaParser#methodCall. - def enterMethodCall(self, ctx:JavaParser.MethodCallContext): - pass - - # Exit a parse tree produced by JavaParser#methodCall. - def exitMethodCall(self, ctx:JavaParser.MethodCallContext): - pass - - - # Enter a parse tree produced by JavaParser#expression. - def enterExpression(self, ctx:JavaParser.ExpressionContext): - pass - - # Exit a parse tree produced by JavaParser#expression. - def exitExpression(self, ctx:JavaParser.ExpressionContext): - pass - - - # Enter a parse tree produced by JavaParser#lambdaExpression. - def enterLambdaExpression(self, ctx:JavaParser.LambdaExpressionContext): - pass - - # Exit a parse tree produced by JavaParser#lambdaExpression. - def exitLambdaExpression(self, ctx:JavaParser.LambdaExpressionContext): - pass - - - # Enter a parse tree produced by JavaParser#lambdaParameters. - def enterLambdaParameters(self, ctx:JavaParser.LambdaParametersContext): - pass - - # Exit a parse tree produced by JavaParser#lambdaParameters. - def exitLambdaParameters(self, ctx:JavaParser.LambdaParametersContext): - pass - - - # Enter a parse tree produced by JavaParser#lambdaBody. - def enterLambdaBody(self, ctx:JavaParser.LambdaBodyContext): - pass - - # Exit a parse tree produced by JavaParser#lambdaBody. - def exitLambdaBody(self, ctx:JavaParser.LambdaBodyContext): - pass - - - # Enter a parse tree produced by JavaParser#primary. - def enterPrimary(self, ctx:JavaParser.PrimaryContext): - pass - - # Exit a parse tree produced by JavaParser#primary. - def exitPrimary(self, ctx:JavaParser.PrimaryContext): - pass - - - # Enter a parse tree produced by JavaParser#classType. - def enterClassType(self, ctx:JavaParser.ClassTypeContext): - pass - - # Exit a parse tree produced by JavaParser#classType. - def exitClassType(self, ctx:JavaParser.ClassTypeContext): - pass - - - # Enter a parse tree produced by JavaParser#creator. - def enterCreator(self, ctx:JavaParser.CreatorContext): - pass - - # Exit a parse tree produced by JavaParser#creator. - def exitCreator(self, ctx:JavaParser.CreatorContext): - pass - - - # Enter a parse tree produced by JavaParser#createdName. - def enterCreatedName(self, ctx:JavaParser.CreatedNameContext): - pass - - # Exit a parse tree produced by JavaParser#createdName. - def exitCreatedName(self, ctx:JavaParser.CreatedNameContext): - pass - - - # Enter a parse tree produced by JavaParser#innerCreator. - def enterInnerCreator(self, ctx:JavaParser.InnerCreatorContext): - pass - - # Exit a parse tree produced by JavaParser#innerCreator. - def exitInnerCreator(self, ctx:JavaParser.InnerCreatorContext): - pass - - - # Enter a parse tree produced by JavaParser#arrayCreatorRest. - def enterArrayCreatorRest(self, ctx:JavaParser.ArrayCreatorRestContext): - pass - - # Exit a parse tree produced by JavaParser#arrayCreatorRest. - def exitArrayCreatorRest(self, ctx:JavaParser.ArrayCreatorRestContext): - pass - - - # Enter a parse tree produced by JavaParser#classCreatorRest. - def enterClassCreatorRest(self, ctx:JavaParser.ClassCreatorRestContext): - pass - - # Exit a parse tree produced by JavaParser#classCreatorRest. - def exitClassCreatorRest(self, ctx:JavaParser.ClassCreatorRestContext): - pass - - - # Enter a parse tree produced by JavaParser#explicitGenericInvocation. - def enterExplicitGenericInvocation(self, ctx:JavaParser.ExplicitGenericInvocationContext): - pass - - # Exit a parse tree produced by JavaParser#explicitGenericInvocation. - def exitExplicitGenericInvocation(self, ctx:JavaParser.ExplicitGenericInvocationContext): - pass - - - # Enter a parse tree produced by JavaParser#typeArgumentsOrDiamond. - def enterTypeArgumentsOrDiamond(self, ctx:JavaParser.TypeArgumentsOrDiamondContext): - pass - - # Exit a parse tree produced by JavaParser#typeArgumentsOrDiamond. - def exitTypeArgumentsOrDiamond(self, ctx:JavaParser.TypeArgumentsOrDiamondContext): - pass - - - # Enter a parse tree produced by JavaParser#nonWildcardTypeArgumentsOrDiamond. - def enterNonWildcardTypeArgumentsOrDiamond(self, ctx:JavaParser.NonWildcardTypeArgumentsOrDiamondContext): - pass - - # Exit a parse tree produced by JavaParser#nonWildcardTypeArgumentsOrDiamond. - def exitNonWildcardTypeArgumentsOrDiamond(self, ctx:JavaParser.NonWildcardTypeArgumentsOrDiamondContext): - pass - - - # Enter a parse tree produced by JavaParser#nonWildcardTypeArguments. - def enterNonWildcardTypeArguments(self, ctx:JavaParser.NonWildcardTypeArgumentsContext): - pass - - # Exit a parse tree produced by JavaParser#nonWildcardTypeArguments. - def exitNonWildcardTypeArguments(self, ctx:JavaParser.NonWildcardTypeArgumentsContext): - pass - - - # Enter a parse tree produced by JavaParser#typeList. - def enterTypeList(self, ctx:JavaParser.TypeListContext): - pass - - # Exit a parse tree produced by JavaParser#typeList. - def exitTypeList(self, ctx:JavaParser.TypeListContext): - pass - - - # Enter a parse tree produced by JavaParser#typeType. - def enterTypeType(self, ctx:JavaParser.TypeTypeContext): - pass - - # Exit a parse tree produced by JavaParser#typeType. - def exitTypeType(self, ctx:JavaParser.TypeTypeContext): - pass - - - # Enter a parse tree produced by JavaParser#primitiveType. - def enterPrimitiveType(self, ctx:JavaParser.PrimitiveTypeContext): - pass - - # Exit a parse tree produced by JavaParser#primitiveType. - def exitPrimitiveType(self, ctx:JavaParser.PrimitiveTypeContext): - pass - - - # Enter a parse tree produced by JavaParser#typeArguments. - def enterTypeArguments(self, ctx:JavaParser.TypeArgumentsContext): - pass - - # Exit a parse tree produced by JavaParser#typeArguments. - def exitTypeArguments(self, ctx:JavaParser.TypeArgumentsContext): - pass - - - # Enter a parse tree produced by JavaParser#superSuffix. - def enterSuperSuffix(self, ctx:JavaParser.SuperSuffixContext): - pass - - # Exit a parse tree produced by JavaParser#superSuffix. - def exitSuperSuffix(self, ctx:JavaParser.SuperSuffixContext): - pass - - - # Enter a parse tree produced by JavaParser#explicitGenericInvocationSuffix. - def enterExplicitGenericInvocationSuffix(self, ctx:JavaParser.ExplicitGenericInvocationSuffixContext): - pass - - # Exit a parse tree produced by JavaParser#explicitGenericInvocationSuffix. - def exitExplicitGenericInvocationSuffix(self, ctx:JavaParser.ExplicitGenericInvocationSuffixContext): - pass - - - # Enter a parse tree produced by JavaParser#arguments. - def enterArguments(self, ctx:JavaParser.ArgumentsContext): - pass - - # Exit a parse tree produced by JavaParser#arguments. - def exitArguments(self, ctx:JavaParser.ArgumentsContext): - pass - - diff --git a/persper/parser/java/README.md b/persper/parser/java/README.md deleted file mode 100644 index bf2a1ea98db..00000000000 --- a/persper/parser/java/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# Java Antlr Parser - -This directory contains the generated parser and listener for this optimized Antlr [grammar](https://github.com/antlr/grammars-v4/tree/master/java) for Java 7 & 8. It is roughly 200x faster than the more complete Java 8 grammar on average. - - -## How it's generated? - -First, install Antlr4, please see instructions [here](https://github.com/antlr/antlr4/blob/master/doc/getting-started.md). - -Then generate the parser and listener with the following command: - -``` -antlr4 -Dlanguage=Python3 JavaLexer.g4 JavaParser.g4 -``` - -## How to use it? - -The easiest way to use this parser is to create a custom listener, please see this [example](https://github.com/antlr/antlr4/blob/master/doc/python-target.md#how-do-i-create-and-run-a-custom-listener). diff --git a/persper/parser/java/__init__.py b/persper/parser/java/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/seq2seq/textsum/convert_data.py b/seq2seq/textsum/convert_data.py deleted file mode 100755 index 3f960d0a4d0..00000000000 --- a/seq2seq/textsum/convert_data.py +++ /dev/null @@ -1,107 +0,0 @@ -#!/usr/bin/env python2 - -import argparse -import collections -import distutils.dir_util as dir_util -import nltk -import os.path as path -import pickle -import re - -import sys -sys.path.append('../../lib') -import labeler - -# Special tokens -PARAGRAPH_START = '

' -PARAGRAPH_END = '

' -SENTENCE_START = '' -SENTENCE_END = '' -UNKNOWN_TOKEN = '' -PAD_TOKEN = '' -DOCUMENT_START = '' -DOCUMENT_END = '' - -def to_skip(token): - return token in '={}<>()[]--' or '=' in token - -def adjust(token): - if token.isdigit(): - return '#' - return token.lower() - -def get_tokens(string, counter): - string = string.encode('ASCII', errors='ignore').encode('UTF-8') - tokens = [adjust(t) for t in nltk.word_tokenize(string) if not to_skip(t)] - if not counter is None: - counter.update(tokens) - return tokens - -def parse_patch(patch): - label = FS_LABELER[patch['type']] - lines = patch['message'].splitlines() - assert patch['subject'] == lines[0].strip() - return label, lines - -def make_sentence(content, counter): - s = SENTENCE_START + ' ' - s += ' '.join(get_tokens(content, counter)) + ' ' - return s + SENTENCE_END + ' ' - -def to_keep(line): - return not re.search(r"[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+", - line) - -def generate_line(abstract, sentences, counter=None): - line = 'article=' - line += ' '.join([DOCUMENT_START, PARAGRAPH_START]) + ' ' - - line += make_sentence(sentences[0], counter) - if len(sentences) > 1: - content = [s for s in sentences[1:] if to_keep(s)] - if len(content) > 0: - line += make_sentence(' '.join(content), counter) - line += ' '.join([PARAGRAPH_END, DOCUMENT_END]) - - line += '\tabstract=' - line += ' '.join([DOCUMENT_START, PARAGRAPH_START, SENTENCE_START]) + ' ' - line += ' '.join(get_tokens(abstract, counter)) + ' ' - line += ' '.join([SENTENCE_END, PARAGRAPH_END, DOCUMENT_END]) - - return line - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument('-s', '--data-set', required=True, - help='Data set: "fs" (filesystem patches)') - parser.add_argument('-f', '--pickle-file', required=True, - help='Pickle file of data') - parser.add_argument('-o', '--output-dir', required=True, - help='Dir for output data') - args = parser.parse_args() - - dir_util.mkpath(args.output_dir) - - counter = collections.Counter() - - if args.data_set == 'fs': - datasets = pickle.load(open(args.pickle_file, 'rb')) - fss = ['ext3', 'ext4', 'btrfs', 'xfs', 'jfs', 'reiserfs'] - for fs in fss: - with open(path.join(args.output_dir, fs + '.txt'), 'w') as data: - for dp in datasets[fs]: - label, message = parse_patch(dp) - line = generate_line(label, message, counter) - data.write(line + '\n') - - with open(path.join(args.output_dir, 'vocab'), 'w') as vocab: - for word, count in counter.most_common(20000 - 4): - vocab.write(word + ' ' + str(count) + '\n') - vocab.write(SENTENCE_START + ' 1\n') - vocab.write(SENTENCE_END + ' 1\n') - vocab.write(UNKNOWN_TOKEN + ' 1\n') - vocab.write(PAD_TOKEN + ' 1\n') - -if __name__ == '__main__': - main() - diff --git a/seq2seq/textsum/convert_data.sh b/seq2seq/textsum/convert_data.sh deleted file mode 100755 index bad2770b532..00000000000 --- a/seq2seq/textsum/convert_data.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -PICKLE=../../notebooks/data/fs-patch.pickle -CONV=~/tensorflow-py2/models/textsum/data_convert_example.py -OUTPUT=data/ - -echo "Converting data..." -./convert_data.py -s fs -f $PICKLE -o $OUTPUT - -for f in $OUTPUT/*.txt -do - echo "Processing $f" - base=`basename $f .txt` - python $CONV --command text_to_binary --in_file $f --out_file $OUTPUT/$base'.data' - python $CONV --command binary_to_text --in_file $OUTPUT/$base'.data' --out_file $OUTPUT/text_data - diff $f $OUTPUT/text_data -done - -rm -f $OUTPUT/text_data diff --git a/seq2seq/textsum/stats_output.py b/seq2seq/textsum/stats_output.py deleted file mode 100755 index dc87731fef2..00000000000 --- a/seq2seq/textsum/stats_output.py +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env python2 - -import argparse -from sklearn.metrics import accuracy_score -from sklearn.metrics import classification_report - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument('-r', '--ref-file', required=True, - help='file path storing ground truth') - parser.add_argument('-p', '--pred-file', required=True, - help='file path storing predictions') - args = parser.parse_args() - - with open(args.ref_file) as ref_file, open(args.pred_file) as pred_file: - refs = [line.split('=')[1].strip() for line in ref_file.readlines()] - preds = [line.split('=')[1].strip() for line in pred_file.readlines()] - assert len(refs) == len(preds) - print(classification_report(refs, preds, digits=3)) - print('Accuracy: %.3f' % accuracy_score(refs, preds)) - -if __name__ == '__main__': - main() diff --git a/seq2seq/textsum/test.sh b/seq2seq/textsum/test.sh deleted file mode 100755 index 4536bd2a50b..00000000000 --- a/seq2seq/textsum/test.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - -# Example commands (in the current dir): -# $ for i in `seq 0 5`; do ./test.sh $i; done -# $ ./test.sh - -TEXTSUM=~/tensorflow-python2.7/models/bazel-bin/textsum/seq2seq_attention -INPUT=data/ -OUTPUT=log_root/ - -files=($INPUT/*.txt) - -if [ $# -eq 1 ]; then - l=(`wc -l ${files[$1]}`) - $TEXTSUM --mode=decode \ - --article_key=article \ - --abstract_key=abstract \ - --data_path=$INPUT/$1-eval-* \ - --vocab_path=$INPUT/vocab \ - --log_root=$OUTPUT \ - --decode_dir=$OUTPUT/decode \ - --max_article_sentences=2 \ - --truncate_input \ - --decode_batches_per_ckpt=$l \ - --max_decode_steps=1 \ - --beam_size=4 -else - refs=($OUTPUT/decode/ref*) - preds=($OUTPUT/decode/decode*) - n=${#refs[@]} - if [ $n -ne ${#preds[@]} ]; then - echo "Ref and decode files do not match!" - exit 1 - fi - for i in `seq 0 $((n-1))`; do - ./stats_output.py -r ${refs[$i]} -p ${preds[$i]} - done -fi diff --git a/seq2seq/textsum/train.sh b/seq2seq/textsum/train.sh deleted file mode 100755 index 7d4636fb7bb..00000000000 --- a/seq2seq/textsum/train.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash - -TEXTSUM=~/tensorflow-py2/models/bazel-bin/textsum/seq2seq_attention -INPUT=data/ -OUTPUT=log_root/ - -if [ $# -eq 1 ]; then - $TEXTSUM --mode=train \ - --article_key=article \ - --abstract_key=abstract \ - --data_path=$INPUT/$1-train-* \ - --vocab_path=$INPUT/vocab \ - --log_root=$OUTPUT \ - --train_dir=$OUTPUT/train \ - --max_article_sentences=2 \ - --truncate_input -else - files=($INPUT/*.data) - n=${#files[@]} - for i in `seq 0 1 $((n-1))`; do - if [ $i -gt 0 ]; then - for j in `seq 0 1 $((i-1))`; do - ln -fs `basename ${files[j]}` $INPUT/$i-train-$j - done - fi - ln -fs `basename ${files[i]}` $INPUT/$i-eval-$i - if [ $i -lt $((n-1)) ]; then - for j in `seq $((i+1)) 1 $((n-1))`; do - ln -fs `basename ${files[j]}` $INPUT/$i-train-$j - done - fi - done -fi diff --git a/test/go_test_legacy/go_test_repo_temp/A/main.go b/test/go_test_legacy/go_test_repo_temp/A/main.go deleted file mode 100644 index 525e6503520..00000000000 --- a/test/go_test_legacy/go_test_repo_temp/A/main.go +++ /dev/null @@ -1,24 +0,0 @@ -package main -import( - "fmt" - "math" -) - -type Vertex struct { - X, Y float64 -} - -func (v Vertex) Abs() float64 { - return math.Sqrt(v.X*v.X + v.Y*v.Y) -} - -func funcA () { - fmt.Println("func A is called!") -} - -func main() { - funcA() - v := Vertex{3, 4} - fmt.Println(v.Abs()) -} - diff --git a/test/go_test_legacy/go_test_repo_temp/B/main.go b/test/go_test_legacy/go_test_repo_temp/B/main.go deleted file mode 100644 index 1f80e646af6..00000000000 --- a/test/go_test_legacy/go_test_repo_temp/B/main.go +++ /dev/null @@ -1,29 +0,0 @@ -package main -import( - "fmt" - "math" -) - -type Vertex struct { - X, Y float64 -} - -func (v Vertex) Abs() float64 { - return math.Sqrt(v.X*v.X + v.Y*v.Y) -} - -func funcA () { - fmt.Println("func A is called!") -} - -func funcB () { - fmt.Println("func B is called!") -} - -func main() { - funcA() - funcB() - v := Vertex{3, 4} - fmt.Println(v.Abs()) -} - diff --git a/test/go_test_legacy/go_test_repo_temp/C/main.go b/test/go_test_legacy/go_test_repo_temp/C/main.go deleted file mode 100644 index 2ce00e78d92..00000000000 --- a/test/go_test_legacy/go_test_repo_temp/C/main.go +++ /dev/null @@ -1,26 +0,0 @@ -package main -import( - "fmt" - "math" -) - - -type Vertex struct { - X, Y float64 -} - -func (v Vertex) Abs() float64 { - funcA() - return math.Sqrt(v.X*v.X + v.Y*v.Y) -} - -func funcA () { - fmt.Println("func A is called!") -} - -func main() { - funcA() - v := Vertex{3, 4} - fmt.Println(v.Abs()) -} - \ No newline at end of file diff --git a/test/go_test_legacy/go_test_repo_temp/D/main.go b/test/go_test_legacy/go_test_repo_temp/D/main.go deleted file mode 100644 index ef6592daf3c..00000000000 --- a/test/go_test_legacy/go_test_repo_temp/D/main.go +++ /dev/null @@ -1,29 +0,0 @@ -package main -import( - "fmt" - "math" -) - -type Vertex struct { - X, Y float64 -} - -func (v Vertex) Abs() float64 { - return math.Sqrt(v.X*v.X + v.Y*v.Y) -} -func (v *Vertex) Absp() float64{ - return math.Sqrt(v.X*v.X + v.Y*v.Y) -} - -func funcA () { - fmt.Println("func A is called!") -} - -func main() { - funcA() - v := Vertex{3, 4} - fmt.Println(v.Abs()) - p := &Vertex{4,5} - fmt.Println(p.Absp()) -} - diff --git a/test/go_test_legacy/go_test_repo_temp/E/main.go b/test/go_test_legacy/go_test_repo_temp/E/main.go deleted file mode 100644 index 72b4a089073..00000000000 --- a/test/go_test_legacy/go_test_repo_temp/E/main.go +++ /dev/null @@ -1,45 +0,0 @@ -package main -import( - "fmt" - "math" -) -type polygon interface{ - printInfo() -} -type square int -type rectangle int - -type Vertex struct { - X, Y float64 -} - -func (c square) printInfo(){ - fmt.Println("square") -} - -func (d rectangle) printInfo(){ - fmt.Println("rectangle") -} - -func (v Vertex) Abs() float64 { - return math.Sqrt(v.X*v.X + v.Y*v.Y) -} -func (v *Vertex) Absp() float64{ - return math.Sqrt(v.X*v.X + v.Y*v.Y) -} - -func funcA () { - fmt.Println("func A is called!") -} - -func main() { - v := Vertex{3, 4} - fmt.Println(v.Abs()) - p := &Vertex{4,5} - fmt.Println(p.Absp()) - var sq square - var re rectangle - sq.printInfo() - re.printInfo() -} - diff --git a/test/go_test_legacy/go_test_repo_temp/F/main.go b/test/go_test_legacy/go_test_repo_temp/F/main.go deleted file mode 100644 index 69bbc0f5983..00000000000 --- a/test/go_test_legacy/go_test_repo_temp/F/main.go +++ /dev/null @@ -1,52 +0,0 @@ -package main -import( - "fmt" - "math" -) -type polygon interface{ - printInfo() -} -type square int -type rectangle int - -type Vertex struct { - X, Y float64 -} - -func (c square) printInfo(){ - fmt.Println("square") -} - -func (d rectangle) printInfo(){ - fmt.Println("rectangle") -} - -func invoke (a polygon){ - a.printInfo() -} - -func (v Vertex) Abs() float64 { - return math.Sqrt(v.X*v.X + v.Y*v.Y) -} - -func (v *Vertex) Absp() float64{ - return math.Sqrt(v.X*v.X + v.Y*v.Y) -} - -func funcA () { - fmt.Println("func A is called!") -} - -func main() { - v := Vertex{3, 4} - fmt.Println(v.Abs()) - p := &Vertex{4,5} - fmt.Println(p.Absp()) - var sq square - var re rectangle - sq.printInfo() - re.printInfo() - invoke(sq) - invoke(re) -} - diff --git a/test/go_test_legacy/go_test_repo_temp/G/main.go b/test/go_test_legacy/go_test_repo_temp/G/main.go deleted file mode 100644 index a8a9260d57b..00000000000 --- a/test/go_test_legacy/go_test_repo_temp/G/main.go +++ /dev/null @@ -1,53 +0,0 @@ -package main -import( - "fmt" - "math" -) -type polygon interface{ - printInfo() -} -type square int -type rectangle int - - -type Vertex struct { - X, Y float64 -} - -func (c square) printInfo(){ - fmt.Println("square") -} - -func (d rectangle) printInfo(){ - fmt.Println("rectangle") -} - -func invoke (a polygon){ - a.printInfo() -} - -func (v Vertex) Abs() float64 { - return math.Sqrt(v.X*v.X + v.Y*v.Y) -} -func (v *Vertex) Absp() float64{ - return math.Sqrt(v.X*v.X + v.Y*v.Y) -} - -func funcA () { - fmt.Println("func A is called!") -} - - -func main() { - v := Vertex{3, 4} - fmt.Println(v.Abs()) - p := &Vertex{4,5} - fmt.Println(p.Absp()) - var sq square - var re rectangle - sq.printInfo() - re.printInfo() - invoke(sq) - invoke(re) -} - diff --git a/test/go_test_legacy/go_test_repo_temp/H/main.go b/test/go_test_legacy/go_test_repo_temp/H/main.go deleted file mode 100644 index 975ce82ca6c..00000000000 --- a/test/go_test_legacy/go_test_repo_temp/H/main.go +++ /dev/null @@ -1,61 +0,0 @@ -package main -import( - "fmt" - "math" -) -type polygon interface{ - printInfo() -} -type square int -type rectangle int - - -type Vertex struct { - X, Y float64 -} -type Rect struct{ - width,height float64 -} -func (c square) printInfo(){ - fmt.Println("square") -} - -func (d rectangle) printInfo(){ - fmt.Println("rectangle") -} - -func invoke (a polygon){ - a.printInfo() -} - -func (v Rect) Abs() float64{ - return v.width * v.height -} - -func (v Vertex) Abs() float64 { - return math.Sqrt(v.X*v.X + v.Y*v.Y) -} -func (v *Vertex) Absp() float64{ - return math.Sqrt(v.X*v.X + v.Y*v.Y) -} - -func funcA () { - fmt.Println("func A is called!") -} - - -func main() { - v := Vertex{3, 4} - fmt.Println(v.Abs()) - p := &Vertex{4,5} - fmt.Println(p.Absp()) - var sq square - var re rectangle - sq.printInfo() - re.printInfo() - invoke(sq) - invoke(re) - r := Rect{3,4} - fmt.Println(r.Abs()) -} - diff --git a/test/go_test_legacy/go_test_repo_temp/I/main.go b/test/go_test_legacy/go_test_repo_temp/I/main.go deleted file mode 100644 index a8a9260d57b..00000000000 --- a/test/go_test_legacy/go_test_repo_temp/I/main.go +++ /dev/null @@ -1,53 +0,0 @@ -package main -import( - "fmt" - "math" -) -type polygon interface{ - printInfo() -} -type square int -type rectangle int - - -type Vertex struct { - X, Y float64 -} - -func (c square) printInfo(){ - fmt.Println("square") -} - -func (d rectangle) printInfo(){ - fmt.Println("rectangle") -} - -func invoke (a polygon){ - a.printInfo() -} - -func (v Vertex) Abs() float64 { - return math.Sqrt(v.X*v.X + v.Y*v.Y) -} -func (v *Vertex) Absp() float64{ - return math.Sqrt(v.X*v.X + v.Y*v.Y) -} - -func funcA () { - fmt.Println("func A is called!") -} - - -func main() { - v := Vertex{3, 4} - fmt.Println(v.Abs()) - p := &Vertex{4,5} - fmt.Println(p.Absp()) - var sq square - var re rectangle - sq.printInfo() - re.printInfo() - invoke(sq) - invoke(re) -} - diff --git a/test/go_test_legacy/go_test_repo_temp/J/main.go b/test/go_test_legacy/go_test_repo_temp/J/main.go deleted file mode 100644 index 04054681356..00000000000 --- a/test/go_test_legacy/go_test_repo_temp/J/main.go +++ /dev/null @@ -1,59 +0,0 @@ -package main -import( - "fmt" - "math" -) -type polygon interface{ - printInfo() -} -type square int -type rectangle int -type a func() -//comment 1 -type Vertex struct { - X, Y float64 -} - -func (c square) printInfo(){ - fmt.Println("square") -} - -func (d rectangle) printInfo(){ - fmt.Println("rectangle") -} - -func invoke (a polygon){ - a.printInfo() - //comment 2 -} - -func (v Vertex) Abs() float64 { - return math.Sqrt(v.X*v.X + v.Y*v.Y) - //comment 3 -} -func (v *Vertex) Absp() float64{ - return math.Sqrt(v.X*v.X + v.Y*v.Y) -} - -func funcA () { - //comment 4 - fmt.Println("func A is called!") -} - - -func main() { - //comment 5 - v := Vertex{3, 4} - fmt.Println(v.Abs()) - p := &Vertex{4,5} - fmt.Println(p.Absp()) - var sq square - var re rectangle - sq.printInfo() - re.printInfo() - invoke(sq) - invoke(re) - //comment 6 - -} - diff --git a/test/go_test_legacy/go_test_repo_temp/cg.dot b/test/go_test_legacy/go_test_repo_temp/cg.dot deleted file mode 100644 index 0667334147c..00000000000 --- a/test/go_test_legacy/go_test_repo_temp/cg.dot +++ /dev/null @@ -1,3 +0,0 @@ -digraph go_test_repo { - A -> B -> C -> D -> E -> F -> G -> H -> I -> J; -} \ No newline at end of file diff --git a/test/go_test_legacy/go_test_repo_temp/readme.md b/test/go_test_legacy/go_test_repo_temp/readme.md deleted file mode 100644 index 75a6caab048..00000000000 --- a/test/go_test_legacy/go_test_repo_temp/readme.md +++ /dev/null @@ -1,23 +0,0 @@ - -# Go test repos - - -commit A: Add some functions and struct funcion. - -commit B: Add functions funcB - -commit C: Add Abs functions call function funcA delete funcB - -commit D: Add Absp functions which is struct functions - -commit E: Add interface function which name is pirintInfo - -commit F: Add function named invoke to call different interface printInfo - -commit G: Add closure function named closure1 and closure2 (actually ,in current version not add closure) - -commit H: Add Rect struct and a struct function named abs - -commit I: Delete Rect struct - -commit J: Add some comments. diff --git a/test/go_test_legacy/test/__init__.py b/test/go_test_legacy/test/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/test/go_test_legacy/test/test_analyzer_go.py b/test/go_test_legacy/test/test_analyzer_go.py deleted file mode 100644 index 1dd38f5a7a5..00000000000 --- a/test/go_test_legacy/test/test_analyzer_go.py +++ /dev/null @@ -1,109 +0,0 @@ -import os -import pytest -import shutil -import subprocess -from persper.analytics.graph_server import GO_FILENAME_REGEXES -from persper.analytics.go import GoGraphServer -from persper.analytics.analyzer import Analyzer -from persper.util.path import root_path -from test.test_analytics.utility.go_graph_server import GoGraphBackend - -GO_GRAPH_SERVER_PORT = 9089 - - -@pytest.fixture(scope='module') -def az(): - """ Build the test repo if not already exists - - Args: - repo_path - A string, path to the to-be-built test repo - script_path - A string, path to the repo creator script - test_src_path - A string, path to the dir to be passed to repo creator - """ - repo_path = os.path.join(root_path, 'repos/0_common') - script_path = os.path.join(root_path, 'tools/repo_creater/create_repo.py') - test_src_path = os.path.join(root_path, 'test/go_test_repos/0_common') - server_address = 'http://127.0.0.1:%d' % GO_GRAPH_SERVER_PORT - - # Always use latest source to create test repo - if os.path.exists(repo_path): - shutil.rmtree(repo_path) - - cmd = '{} {}'.format(script_path, test_src_path) - subprocess.call(cmd, shell=True) - - return Analyzer(repo_path, GoGraphServer(server_address, GO_FILENAME_REGEXES)) - - -@pytest.mark.asyncio -async def test_analzyer_go(az): - backend = GoGraphBackend(GO_GRAPH_SERVER_PORT) - backend.build() - backend.run() - try: - await _test_analzyer_go(az) - finally: - backend.terminate() - - -@pytest.mark.skip -async def _test_analzyer_go(az): - az._graph_server.reset_graph() - await az.analyze() - ccgraph = az.get_graph() - - history_truth = { - 'D': { - 'main.go:Vertex:Abs': {'adds': 0, 'dels': 2}, - # TODO graph server bug - # related issue https://gitlab.com/persper/code-analytics/issues/12 - 'main.go::funcA': {'adds': 0, 'dels': 0}, - 'main.go::funcB': {'adds': 0, 'dels': 4}, - 'main.go::main': {'adds': 3, 'dels': 4}, - "main.go:Vertex:Absp": {'adds': 3, 'dels': 0}, - }, - 'C': { - 'main.go:Vertex:Abs': {'adds': 2, 'dels': 3}, - 'main.go::funcB': {'adds': 1, 'dels': 0}, - }, - 'B': { - 'main.go:Vertex:Abs': {'adds': 3, 'dels': 0}, - # TODO graph server bug - # related issue https://gitlab.com/persper/code-analytics/issues/12 - 'main.go::funcA': {'adds': 0, 'dels': 0}, - 'main.go::funcB': {'adds': 3, 'dels': 0}, - 'main.go::main': {'adds': 4, 'dels': 1}, - }, - 'A': { - 'main.go:Vertex:Abs': {'adds': 3, 'dels': 0}, - 'main.go::funcA': {'adds': 3, 'dels': 0}, - 'main.go::main': {'adds': 6, 'dels': 0}, - } - } - - commits = ccgraph.commits() - for func, data in ccgraph.nodes(data=True): - history = data['history'] - for csha, csize in history.items(): - commit_message = commits[csha]['message'] - assert (csize == history_truth[commit_message.strip()][func]) - - edges_added_by_a = { - ('main.go::main', 'main.go:Vertex:Abs') - } - - edges_added_by_b = { - ('main.go:Vertex:Abs', 'main.go::funcA') - } - - edges_added_by_c = { - ('main.go::funcB', 'main.go::funcA') - } - - edges_added_by_d = { - ("main.go::main", "main.go:Vertex:Absp") - } - - print(set(ccgraph.edges())) - all_edges = edges_added_by_a.union(edges_added_by_b).union(edges_added_by_c).union(edges_added_by_d) - assert (set(ccgraph.edges()) == all_edges) diff --git a/test/go_test_legacy/test/test_analyzer_go_2.py b/test/go_test_legacy/test/test_analyzer_go_2.py deleted file mode 100644 index c3ac807ece8..00000000000 --- a/test/go_test_legacy/test/test_analyzer_go_2.py +++ /dev/null @@ -1,76 +0,0 @@ -import os -import pytest -import shutil -import subprocess -import tempfile -from persper.analytics.graph_server import GO_FILENAME_REGEXES -from persper.analytics.go import GoGraphServer -from persper.analytics.analyzer import Analyzer -from persper.util.path import root_path - -# TODO: Use a port other than the default 8080 in case of collision -server_port = 9089 -server_addr = ':%d' % server_port - - -@pytest.fixture(scope='module') -def az(): - """ Build the test repo if not already exists - - Args: - repo_path - A string, path to the to-be-built test repo - script_path - A string, path to the repo creator script - test_src_path - A string, path to the dir to be passed to repo creator - """ - repo_path = os.path.join(root_path, 'repos/go_test_repo_temp') - script_path = os.path.join(root_path, 'tools/repo_creater/create_repo.py') - test_src_path = os.path.join(root_path, 'test/go_test_repo_temp') - server_addr = 'http://localhost:%d' % server_port - - # Always use latest source to create test repo - if os.path.exists(repo_path): - shutil.rmtree(repo_path) - - cmd = '{} {}'.format(script_path, test_src_path) - subprocess.call(cmd, shell=True) - - return Analyzer(repo_path, GoGraphServer(server_addr, GO_FILENAME_REGEXES)) - - -def test_analzyer_go(az): - az._graph_server.reset_graph() - az.analyze() - ccgraph = az.get_graph() - - history_truth = { - 'A': {'printInfo': 0, - 'main': 10}, - 'B': {'printInfo': 1, - 'main': 8, - "invoke":3} - } - - commits = ccgraph.commits() - for func, data in ccgraph.nodes(data=True): - history = data['history'] - for cindex, csize in history.items(): - commit_message = commits[int(cindex)]['message'] - assert csize == history_truth[commit_message.strip()][func] - - edges_added_by_A = set([ - ('main', 'printInfo'), - ('printInfo', 'Println'), - ]) - - edges_added_by_B = set([ - ('invoke', 'printInfo'), - ('main', 'invoke'), - ]) - - edges_added_by_C = set([ - ('Abs', 'a'), - ('funcB', 'funcA') - ]) - - all_edges = edges_added_by_A.union(edges_added_by_B) - assert set(az._graph_server.get_graph().edges()) == all_edges diff --git a/test/go_test_legacy/test/test_analyzer_go_call.py b/test/go_test_legacy/test/test_analyzer_go_call.py deleted file mode 100644 index 783c1cfc3f8..00000000000 --- a/test/go_test_legacy/test/test_analyzer_go_call.py +++ /dev/null @@ -1,157 +0,0 @@ -import os -import pytest -import shutil -import subprocess -from persper.analytics.graph_server import GO_FILENAME_REGEXES -from persper.analytics.go import GoGraphServer -from persper.analytics.analyzer2 import Analyzer -from persper.util.path import root_path -from test.test_analytics.utility.go_graph_server import GoGraphBackend - -GO_GRAPH_SERVER_PORT = 9089 - - -@pytest.fixture(scope = 'module') -def az(): - """ Build the test repo if not already exists - - Args: - repo_path - A string, path to the to-be-built test repo - script_path - A string, path to the repo creator script - test_src_path - A string, path to the dir to be passed to repo creator - """ - repo_path = os.path.join(root_path, 'repos/go_test_call') - script_path = os.path.join(root_path, 'tools/repo_creater/create_repo.py') - test_src_path = os.path.join(root_path, 'test/go_test_call') - server_address = 'http://127.0.0.1:%d' % GO_GRAPH_SERVER_PORT - - # Always use latest source to create test repo - if os.path.exists(repo_path): - shutil.rmtree(repo_path) - - cmd = '{} {}'.format(script_path, test_src_path) - subprocess.call(cmd, shell = True) - - return Analyzer(repo_path, GoGraphServer(server_address, GO_FILENAME_REGEXES)) - - -@pytest.mark.asyncio -async def test_analzyer_go(az): - backend = GoGraphBackend(GO_GRAPH_SERVER_PORT) - backend.build() - backend.run() - try: - await _test_analzyer_go(az) - finally: - backend.terminate() - - -@pytest.mark.skip -async def _test_analzyer_go(az): - az._graphServer.reset_graph() - await az.analyze() - ccgraph = az.graph - history_truth = { - 'A': { - 'main.go::funcA': {'adds': 3, 'dels': 0}, - 'main.go::main': {'adds': 3, 'dels': 0} - }, - 'B': {'main.go::funcA': {'adds': 0, 'dels': 0}, - 'main.go::main': {'adds': 1, 'dels': 1} - }, - 'C': {'main.go::funcA': {'adds': 3, 'dels': 0}, - 'main.go::main': {'adds': 1, 'dels': 1} - }, - 'D': {'main.go::funcB': {'adds': 1, 'dels': 0}, - 'main.go::main': {'adds': 1, 'dels': 1}, - 'main.go::funcA': {'adds': 0, 'dels': 1} - }, - 'E': { - 'main.go::funcB': {'adds': 1, 'dels': 1}, - 'main.go::main': {'adds': 1, 'dels': 1}, - 'main.go::funcA': {'adds': 0, 'dels': 0} - }, - 'F': { - 'main.go::funcA': {'adds': 0, 'dels': 1}, - 'main.go::funcB': {'adds': 1, 'dels': 0}, - 'main.go::main': {'adds': 2, 'dels': 2}, #{'adds': 1, 'dels': 1}, - 'main.go::return_1': {'adds': 3, 'dels': 0} - }, - 'G': { - 'main.go::funcB': {'adds': 0, 'dels': 0}, - 'main.go::main': {'adds': 2, 'dels': 0}, - 'main.go::return_1': {'adds': 0, 'dels': 0} - }, - 'H': { - 'main.go::funcB': {'adds': 0, 'dels': 0}, - 'main.go::main': {'adds': 3, 'dels': 2}, - 'main.go::return_1': {'adds': 0, 'dels': 0} - }, - 'I': { - 'main.go::funcA': {'adds': 2, 'dels': 1}, - 'main.go::main': {'adds': 3, 'dels': 1}, - }, - 'J': { - 'main.go::funcA': {'adds': 0, 'dels': 0}, - 'main.go::main': {'adds': 2, 'dels': 2}, - - }, - 'K': { - 'main.go::funcA': {'adds': 2, 'dels': 0}, - 'main.go::main': {'adds': 6, 'dels': 1}, - }, - 'L': { - 'main.go::funcA': {'adds': 0, 'dels': 0}, - 'main.go::main': {'adds': 4, 'dels':3}, - }, - 'M': { - 'main.go::funcA': {'adds': 2, 'dels': 1}, - 'main.go::main': {'adds': 3, 'dels': 1}, - }, - 'N': { - 'main.go::funcA': {'adds': 0, 'dels': 0}, - 'main.go::main': {'adds': 1, 'dels': 1}, - } - } - - commits = ccgraph.commits() - for func, data in ccgraph.nodes(data = True): - history = data['history'] - for csha, csize in history.items(): - commit_message = commits[csha]['message'] - print(commit_message.strip()) - print(func) - assert (csize == history_truth[commit_message.strip()][func]) - - edges_added_by_A = set([ ]) - edges_added_by_B = set([('main.go::main', 'main.go::funcA'), ]) - edges_added_by_C = set([ - ]) - edges_added_by_D = set([ - ('main.go::main', 'main.go::funcB') - ]) - edges_added_by_E = set([ - ]) - edges_added_by_F = set([ - # ('main.go::main', 'main.go::return_1'), - ]) - edges_added_by_G = set([ - ]) - edges_added_by_H = set([ - ]) - edges_added_by_I = set([ - ]) - edges_added_by_J = set([ - ]) - edges_added_by_K = set([ - ]) - edges_added_by_L = set([ - ]) - edges_added_by_M = set([ - ]) - edges_added_by_N = set([ - ]) - all_edges = edges_added_by_A.union(edges_added_by_B).union(edges_added_by_C).union(edges_added_by_D).union(edges_added_by_E).union(edges_added_by_F) \ - .union(edges_added_by_G).union(edges_added_by_H).union(edges_added_by_I).union(edges_added_by_J).union(edges_added_by_K)\ - .union(edges_added_by_L).union(edges_added_by_M).union(edges_added_by_N) - assert(set(ccgraph.edges()) == all_edges) \ No newline at end of file diff --git a/test/go_test_legacy/test/test_analyzer_go_history.py b/test/go_test_legacy/test/test_analyzer_go_history.py deleted file mode 100644 index f0b11b2c51e..00000000000 --- a/test/go_test_legacy/test/test_analyzer_go_history.py +++ /dev/null @@ -1,167 +0,0 @@ -import os -import pytest -import shutil -import subprocess -from persper.analytics.graph_server import GO_FILENAME_REGEXES -from persper.analytics.go import GoGraphServer -from persper.analytics.analyzer2 import Analyzer -from persper.util.path import root_path -from test.test_analytics.utility.go_graph_server import GoGraphBackend - -GO_GRAPH_SERVER_PORT = 9089 - - -@pytest.fixture(scope = 'module') -def az(): - """ Build the test repo if not already exists - - Args: - repo_path - A string, path to the to-be-built test repo - script_path - A string, path to the repo creator script - test_src_path - A string, path to the dir to be passed to repo creator - """ - repo_path = os.path.join(root_path, 'repos/go_test_history') - script_path = os.path.join(root_path, 'tools/repo_creater/create_repo.py') - test_src_path = os.path.join(root_path, 'test/go_test_history') - server_address = 'http://127.0.0.1:%d' % GO_GRAPH_SERVER_PORT - - # Always use latest source to create test repo - if os.path.exists(repo_path): - shutil.rmtree(repo_path) - - cmd = '{} {}'.format(script_path, test_src_path) - subprocess.call(cmd, shell = True) - - return Analyzer(repo_path, GoGraphServer(server_address, GO_FILENAME_REGEXES)) - - -@pytest.mark.asyncio -async def test_analzyer_go(az): - backend = GoGraphBackend(GO_GRAPH_SERVER_PORT) - backend.build() - backend.run() - try: - await _test_analzyer_go(az) - finally: - backend.terminate() - - -@pytest.mark.skip -async def _test_analzyer_go(az): - az._graphServer.reset_graph() - await az.analyze() - ccgraph = az.graph - history_truth = { - 'A': { - 'main.go::funcA': {'adds': 3, 'dels': 0}, - 'main.go::main': {'adds': 3, 'dels': 0} - - }, - 'B': { - 'main.go::funcA': {'adds': 0, 'dels': 0}, - 'main.go::main': {'adds': 1, 'dels': 1} - }, - 'C': { - 'main.go::funcA': {'adds': 0, 'dels': 0}, - 'main.go::main': {'adds': 1, 'dels': 1} - }, - 'D': { - 'main.go::funcA': {'adds': 0, 'dels': 1}, - 'main.go::funcB': {'adds': 1, 'dels': 0}, - 'main.go::main': {'adds': 1, 'dels': 1} - }, - 'E': { - 'main.go::funcA': {'adds': 0, 'dels': 0}, - 'main.go::funcB': {'adds': 1, 'dels': 1}, - 'main.go::main': {'adds': 3, 'dels': 2} - }, - 'F': { - 'main.go::funcA': {'adds': 1, 'dels': 0}, - 'main.go::main': {'adds': 0, 'dels': 0} - }, - 'G': { - 'main.go::funcA': {'adds': 1, 'dels': 0}, - 'main.go::main': {'adds': 0, 'dels': 0} - }, - 'H': { - 'main.go::funcA': {'adds': 1, 'dels': 0}, - 'main.go::main': {'adds': 0, 'dels': 0} - }, - 'I': { - 'main.go::funcA': {'adds': 1, 'dels': 1}, - 'main.go::main': {'adds': 0, 'dels': 0} - }, - 'J': { - 'main.go::funcA': {'adds': 1, 'dels': 1}, - 'main.go::main': {'adds': 0, 'dels': 0} - }, - 'K': { - 'main.go::funcA': {'adds': 0, 'dels': 1}, - 'main.go::main': {'adds': 0, 'dels': 0} - }, - - - 'L': { - 'main.go::funcA': {'adds': 0, 'dels': 0}, - 'main.go::main': {'adds': 1, 'dels': 1} - }, - ###################uncheck##### - 'M': {'main.go::funcA': 2, - 'main.go::main': 0, - }, - 'N': {'main.go::funcA': 2, - 'main.go::main': 0 - }, - 'O': {'main.go::funcA': 0, - 'main.go::main': 0 - }, - #todo - 'P': {'main.go::funcA': 2, - 'main.go::main': 0 - }, - 'Q': {'main.go::funcA': 2, - 'main.go::main': 0 - }, - } - - commits = ccgraph.commits() - for func, data in ccgraph.nodes(data = True): - history = data['history'] - for csha, csize in history.items(): - commit_message = commits[csha]['message'] - assert (csize == history_truth[commit_message.strip()][func]) - - edges_added_by_A = set([ ]) - edges_added_by_B = set([('main.go::main', 'main.go::funcA'), ]) - edges_added_by_C = set([ - ]) - edges_added_by_D = set([ - ##should have ('main.go::main', 'main.go::funcB') - ]) - edges_added_by_E = set([ - ]) - edges_added_by_F = set([ - - ]) - edges_added_by_G = set([ - - ]) - edges_added_by_H = set([ - - ]) - edges_added_by_I = set([ - ]) - edges_added_by_J = set([ - ]) - edges_added_by_K = set([ - ]) - edges_added_by_L = set([ - ]) - edges_added_by_M = set([ - ]) - edges_added_by_N = set([ - ]) - all_edges = edges_added_by_A.union(edges_added_by_B).union(edges_added_by_C).union(edges_added_by_D).union(edges_added_by_E).union(edges_added_by_F) \ - .union(edges_added_by_G).union(edges_added_by_H).union(edges_added_by_I).union(edges_added_by_J).union(edges_added_by_K)\ - .union(edges_added_by_L).union(edges_added_by_M).union(edges_added_by_N) - assert(set(ccgraph.edges()) == all_edges) diff --git a/test/go_test_repos/0_common/A/main.go b/test/go_test_repos/0_common/A/main.go deleted file mode 100644 index 2af71888f59..00000000000 --- a/test/go_test_repos/0_common/A/main.go +++ /dev/null @@ -1,26 +0,0 @@ -package main -import( - "fmt" - "math" -) -type a func() - -type Vertex struct { - X, Y float64 -} - -func (v Vertex) Abs() float64 { - return math.Sqrt(v.X*v.X + v.Y*v.Y) -} - -func funcA () { - fmt.Println("func A is called!") -} - -func main() { - a := funcA - a() - v := Vertex{3, 4} - fmt.Println(v.Abs()) -} - diff --git a/test/go_test_repos/0_common/B/main.go b/test/go_test_repos/0_common/B/main.go deleted file mode 100644 index ea01026d96e..00000000000 --- a/test/go_test_repos/0_common/B/main.go +++ /dev/null @@ -1,35 +0,0 @@ -package main -import( - "fmt" - "math" -) -type a func() -type b func() -type c func() -type Vertex struct { - X, Y float64 -} - -func (v Vertex) Abs() float64 { - funcA() - return math.Sqrt(v.X*v.X + v.Y*v.Y) - - -} - -func funcA () { - fmt.Println("func A is called!") -} -func funcB () { - fmt.Println("func B is called!") -} -func main() { - a := funcA - b := funcB - c := a - b() - c() - v := Vertex{3, 4} - fmt.Println(v.Abs()) -} - \ No newline at end of file diff --git a/test/go_test_repos/0_common/C/main.go b/test/go_test_repos/0_common/C/main.go deleted file mode 100644 index a2a38913ab5..00000000000 --- a/test/go_test_repos/0_common/C/main.go +++ /dev/null @@ -1,32 +0,0 @@ -package main -import( - "fmt" - "math" -) -type a func() -type b func() -type c func() -type Vertex struct { - X, Y float64 -} -func (v Vertex) Abs() float64 { - a:=funcA() - a() - return math.Sqrt(v.X*v.X + v.Y*v.Y) -} -func funcA () { - fmt.Println("func A is called!") -} -func funcB () { - funcA() - fmt.Println("func B is called!") -} -func main() { - a := funcA - b := funcB - c := a - b() - c() - v := Vertex{3, 4} - fmt.Println(v.Abs()) -} diff --git a/test/go_test_repos/0_common/D/main.go b/test/go_test_repos/0_common/D/main.go deleted file mode 100644 index 7b56028e2e8..00000000000 --- a/test/go_test_repos/0_common/D/main.go +++ /dev/null @@ -1,31 +0,0 @@ -package main -import( - "fmt" - "math" -) -type a func() - -type Vertex struct { - X, Y float64 -} - -func (v Vertex) Abs() float64 { - return math.Sqrt(v.X*v.X + v.Y*v.Y) -} -func (v *Vertex) Absp() float64{ - return math.Sqrt(v.X*v.X + v.Y*v.Y) -} - -func funcA () { - fmt.Println("func A is called!") -} - -func main() { - a := funcA - a() - v := Vertex{3, 4} - fmt.Println(v.Abs()) - p := &Vertex{4,5} - fmt.Println(p.Absp()) -} - diff --git a/test/go_test_repos/0_common/cg.dot b/test/go_test_repos/0_common/cg.dot deleted file mode 100644 index f0ae1657596..00000000000 --- a/test/go_test_repos/0_common/cg.dot +++ /dev/null @@ -1,3 +0,0 @@ -digraph go_test_repo { - A -> B -> C -> D; -} \ No newline at end of file diff --git a/test/go_test_repos/1_1_1,2_add_remove_function/A/main.go b/test/go_test_repos/1_1_1,2_add_remove_function/A/main.go deleted file mode 100644 index 80af4abe6d2..00000000000 --- a/test/go_test_repos/1_1_1,2_add_remove_function/A/main.go +++ /dev/null @@ -1,14 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () { - fmt.Println("func A is called!") -} - -func main() { - -} - diff --git a/test/go_test_repos/1_1_1,2_add_remove_function/B/main.go b/test/go_test_repos/1_1_1,2_add_remove_function/B/main.go deleted file mode 100644 index 512ae295fc2..00000000000 --- a/test/go_test_repos/1_1_1,2_add_remove_function/B/main.go +++ /dev/null @@ -1,14 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () { - fmt.Println("func A is called!") -} - -func main() { - funcA() -} - diff --git a/test/go_test_repos/1_1_1,2_add_remove_function/C/main.go b/test/go_test_repos/1_1_1,2_add_remove_function/C/main.go deleted file mode 100644 index 80af4abe6d2..00000000000 --- a/test/go_test_repos/1_1_1,2_add_remove_function/C/main.go +++ /dev/null @@ -1,14 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () { - fmt.Println("func A is called!") -} - -func main() { - -} - diff --git a/test/go_test_repos/1_1_1,2_add_remove_function/cg.dot b/test/go_test_repos/1_1_1,2_add_remove_function/cg.dot deleted file mode 100644 index a7bc0a09881..00000000000 --- a/test/go_test_repos/1_1_1,2_add_remove_function/cg.dot +++ /dev/null @@ -1,3 +0,0 @@ -digraph go_test_repo { - A -> B -> C; //1.1.1 add 1.1.2remove function -} \ No newline at end of file diff --git a/test/go_test_repos/1_1_3_1,2_change_function_name_argument/A/main.go b/test/go_test_repos/1_1_3_1,2_change_function_name_argument/A/main.go deleted file mode 100644 index 80af4abe6d2..00000000000 --- a/test/go_test_repos/1_1_3_1,2_change_function_name_argument/A/main.go +++ /dev/null @@ -1,14 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () { - fmt.Println("func A is called!") -} - -func main() { - -} - diff --git a/test/go_test_repos/1_1_3_1,2_change_function_name_argument/D/main.go b/test/go_test_repos/1_1_3_1,2_change_function_name_argument/D/main.go deleted file mode 100644 index 0d49262f5ce..00000000000 --- a/test/go_test_repos/1_1_3_1,2_change_function_name_argument/D/main.go +++ /dev/null @@ -1,13 +0,0 @@ -package main -import( - "fmt" -) - -func funcB () { - fmt.Println("func A is called!") -} - -func main() { - funcB() -} - diff --git a/test/go_test_repos/1_1_3_1,2_change_function_name_argument/E/main.go b/test/go_test_repos/1_1_3_1,2_change_function_name_argument/E/main.go deleted file mode 100644 index e56ad8344e7..00000000000 --- a/test/go_test_repos/1_1_3_1,2_change_function_name_argument/E/main.go +++ /dev/null @@ -1,13 +0,0 @@ -package main -import( - "fmt" -) - - -func funcB (a int) { - fmt.Println("func A is called!") -} - -func main() { - funcB(1) -} \ No newline at end of file diff --git a/test/go_test_repos/1_1_3_1,2_change_function_name_argument/cg.dot b/test/go_test_repos/1_1_3_1,2_change_function_name_argument/cg.dot deleted file mode 100644 index ece0ef6bf96..00000000000 --- a/test/go_test_repos/1_1_3_1,2_change_function_name_argument/cg.dot +++ /dev/null @@ -1,3 +0,0 @@ -digraph go_test_repo { - A -> D -> E ; //1.1.3.1 change function name 1.1.3.2 change function argument -} \ No newline at end of file diff --git a/test/go_test_repos/1_1_3_3_1,2_add_remove_lines/A/main.go b/test/go_test_repos/1_1_3_3_1,2_add_remove_lines/A/main.go deleted file mode 100644 index 80af4abe6d2..00000000000 --- a/test/go_test_repos/1_1_3_3_1,2_add_remove_lines/A/main.go +++ /dev/null @@ -1,14 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () { - fmt.Println("func A is called!") -} - -func main() { - -} - diff --git a/test/go_test_repos/1_1_3_3_1,2_add_remove_lines/F/main.go b/test/go_test_repos/1_1_3_3_1,2_add_remove_lines/F/main.go deleted file mode 100644 index c74157701d1..00000000000 --- a/test/go_test_repos/1_1_3_3_1,2_add_remove_lines/F/main.go +++ /dev/null @@ -1,15 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () { - fmt.Println("Add first line") - fmt.Println("func A is called!") -} - -func main() { - -} - diff --git a/test/go_test_repos/1_1_3_3_1,2_add_remove_lines/G/main.go b/test/go_test_repos/1_1_3_3_1,2_add_remove_lines/G/main.go deleted file mode 100644 index ebf89469114..00000000000 --- a/test/go_test_repos/1_1_3_3_1,2_add_remove_lines/G/main.go +++ /dev/null @@ -1,16 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () { - fmt.Println("Add first line") - fmt.Println("Add medium line") - fmt.Println("func A is called!") -} - -func main() { - -} - diff --git a/test/go_test_repos/1_1_3_3_1,2_add_remove_lines/H/main.go b/test/go_test_repos/1_1_3_3_1,2_add_remove_lines/H/main.go deleted file mode 100644 index 74de4cc90c6..00000000000 --- a/test/go_test_repos/1_1_3_3_1,2_add_remove_lines/H/main.go +++ /dev/null @@ -1,17 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () { - fmt.Println("Add first line") - fmt.Println("Add medium line") - fmt.Println("func A is called!") - fmt.Println("Add last line") -} - -func main() { - -} - diff --git a/test/go_test_repos/1_1_3_3_1,2_add_remove_lines/I/main.go b/test/go_test_repos/1_1_3_3_1,2_add_remove_lines/I/main.go deleted file mode 100644 index 71c63499257..00000000000 --- a/test/go_test_repos/1_1_3_3_1,2_add_remove_lines/I/main.go +++ /dev/null @@ -1,17 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () { - - fmt.Println("Add medium line") - fmt.Println("func A is called!") - fmt.Println("Add last line") -} - -func main() { - -} - diff --git a/test/go_test_repos/1_1_3_3_1,2_add_remove_lines/J/main.go b/test/go_test_repos/1_1_3_3_1,2_add_remove_lines/J/main.go deleted file mode 100644 index 2171c1b46c5..00000000000 --- a/test/go_test_repos/1_1_3_3_1,2_add_remove_lines/J/main.go +++ /dev/null @@ -1,17 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () { - - fmt.Println("Add medium line") - - fmt.Println("Add last line") -} - -func main() { - -} - diff --git a/test/go_test_repos/1_1_3_3_1,2_add_remove_lines/K/main.go b/test/go_test_repos/1_1_3_3_1,2_add_remove_lines/K/main.go deleted file mode 100644 index e0bb74a0bb2..00000000000 --- a/test/go_test_repos/1_1_3_3_1,2_add_remove_lines/K/main.go +++ /dev/null @@ -1,16 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () { - - fmt.Println("Add medium line") - -} - -func main() { - -} - diff --git a/test/go_test_repos/1_1_3_3_1,2_add_remove_lines/cg.dot b/test/go_test_repos/1_1_3_3_1,2_add_remove_lines/cg.dot deleted file mode 100644 index 998862f687a..00000000000 --- a/test/go_test_repos/1_1_3_3_1,2_add_remove_lines/cg.dot +++ /dev/null @@ -1,5 +0,0 @@ -digraph go_test_repo { - A -> F -> G -> H -> I -> J -> K; //1.1.3.3.1 add lines in function body first line - //1.1.3.3.2. remove lines in function body - -} \ No newline at end of file diff --git a/test/go_test_repos/1_1_3_3_3_update_lines/H/main.go b/test/go_test_repos/1_1_3_3_3_update_lines/H/main.go deleted file mode 100644 index 74de4cc90c6..00000000000 --- a/test/go_test_repos/1_1_3_3_3_update_lines/H/main.go +++ /dev/null @@ -1,17 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () { - fmt.Println("Add first line") - fmt.Println("Add medium line") - fmt.Println("func A is called!") - fmt.Println("Add last line") -} - -func main() { - -} - diff --git a/test/go_test_repos/1_1_3_3_3_update_lines/L/main.go b/test/go_test_repos/1_1_3_3_3_update_lines/L/main.go deleted file mode 100644 index 60cc76e6712..00000000000 --- a/test/go_test_repos/1_1_3_3_3_update_lines/L/main.go +++ /dev/null @@ -1,17 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () { - fmt.Println("Modify Add first line") - fmt.Println("Add medium line") - fmt.Println("func A is called!") - fmt.Println("Add last line") -} - -func main() { - -} - diff --git a/test/go_test_repos/1_1_3_3_3_update_lines/M/main.go b/test/go_test_repos/1_1_3_3_3_update_lines/M/main.go deleted file mode 100644 index cc84a2fec7e..00000000000 --- a/test/go_test_repos/1_1_3_3_3_update_lines/M/main.go +++ /dev/null @@ -1,17 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () { - fmt.Println("Add first line") - fmt.Println("Modify Add medium line") - fmt.Println("func A is called!") - fmt.Println("Add last line") -} - -func main() { - -} - diff --git a/test/go_test_repos/1_1_3_3_3_update_lines/N/main.go b/test/go_test_repos/1_1_3_3_3_update_lines/N/main.go deleted file mode 100644 index b4c90f71afd..00000000000 --- a/test/go_test_repos/1_1_3_3_3_update_lines/N/main.go +++ /dev/null @@ -1,17 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () { - fmt.Println("Add first line") - fmt.Println("Add medium line") - fmt.Println("func A is called!") - fmt.Println("Modify Add last line") -} - -func main() { - -} - diff --git a/test/go_test_repos/1_1_3_3_3_update_lines/cg.dot b/test/go_test_repos/1_1_3_3_3_update_lines/cg.dot deleted file mode 100644 index 33a03b96cc5..00000000000 --- a/test/go_test_repos/1_1_3_3_3_update_lines/cg.dot +++ /dev/null @@ -1,5 +0,0 @@ -digraph go_test_repo { - H -> L -> M -> N ; //1.1.3.3.3. update lines in function body - //1.1.4.1. No new line at end of file - //1.1.4.2. No new line between functions -} \ No newline at end of file diff --git a/test/go_test_repos/1_1_4_1_no_new_line_eof/A/main.go b/test/go_test_repos/1_1_4_1_no_new_line_eof/A/main.go deleted file mode 100644 index 3115eee5f2d..00000000000 --- a/test/go_test_repos/1_1_4_1_no_new_line_eof/A/main.go +++ /dev/null @@ -1,12 +0,0 @@ -package main - -import ( - "fmt" -) - -func funcA() { - fmt.Println("func A is called!") -} - -func main() { -} \ No newline at end of file diff --git a/test/go_test_repos/1_1_4_1_no_new_line_eof/O/main.go b/test/go_test_repos/1_1_4_1_no_new_line_eof/O/main.go deleted file mode 100644 index bf3c1eb0f0a..00000000000 --- a/test/go_test_repos/1_1_4_1_no_new_line_eof/O/main.go +++ /dev/null @@ -1,12 +0,0 @@ -package main - -import ( - "fmt" -) - -func funcA() { - fmt.Println("func A is called!") -} - -func main() { -} diff --git a/test/go_test_repos/1_1_4_1_no_new_line_eof/P/main.go b/test/go_test_repos/1_1_4_1_no_new_line_eof/P/main.go deleted file mode 100644 index 3115eee5f2d..00000000000 --- a/test/go_test_repos/1_1_4_1_no_new_line_eof/P/main.go +++ /dev/null @@ -1,12 +0,0 @@ -package main - -import ( - "fmt" -) - -func funcA() { - fmt.Println("func A is called!") -} - -func main() { -} \ No newline at end of file diff --git a/test/go_test_repos/1_1_4_1_no_new_line_eof/cg.dot b/test/go_test_repos/1_1_4_1_no_new_line_eof/cg.dot deleted file mode 100644 index 7fe32ef349f..00000000000 --- a/test/go_test_repos/1_1_4_1_no_new_line_eof/cg.dot +++ /dev/null @@ -1,3 +0,0 @@ -digraph go_test_repo { - A -> O -> P; //1.1.4.1. No new line at end of file -} diff --git a/test/go_test_repos/1_1_4_2_no_new_line_between_functions/A/main.go b/test/go_test_repos/1_1_4_2_no_new_line_between_functions/A/main.go deleted file mode 100644 index 80af4abe6d2..00000000000 --- a/test/go_test_repos/1_1_4_2_no_new_line_between_functions/A/main.go +++ /dev/null @@ -1,14 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () { - fmt.Println("func A is called!") -} - -func main() { - -} - diff --git a/test/go_test_repos/1_1_4_2_no_new_line_between_functions/P/main.go b/test/go_test_repos/1_1_4_2_no_new_line_between_functions/P/main.go deleted file mode 100644 index 003336d0e5b..00000000000 --- a/test/go_test_repos/1_1_4_2_no_new_line_between_functions/P/main.go +++ /dev/null @@ -1,12 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () { - fmt.Println("func A is called!") -} func main() { - -} - diff --git a/test/go_test_repos/1_1_4_2_no_new_line_between_functions/Q/main.go b/test/go_test_repos/1_1_4_2_no_new_line_between_functions/Q/main.go deleted file mode 100644 index 0546cfdb761..00000000000 --- a/test/go_test_repos/1_1_4_2_no_new_line_between_functions/Q/main.go +++ /dev/null @@ -1,13 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () { - fmt.Println("func A is called!") -} -func main() { - -} - diff --git a/test/go_test_repos/1_1_4_2_no_new_line_between_functions/cg.dot b/test/go_test_repos/1_1_4_2_no_new_line_between_functions/cg.dot deleted file mode 100644 index 5dc3c0f7948..00000000000 --- a/test/go_test_repos/1_1_4_2_no_new_line_between_functions/cg.dot +++ /dev/null @@ -1,3 +0,0 @@ -digraph go_test_repo { - A -> P -> Q; // 1.1.4.2. No new line between functions -} \ No newline at end of file diff --git a/test/go_test_repos/1_2_1_1_function_call/A/main.go b/test/go_test_repos/1_2_1_1_function_call/A/main.go deleted file mode 100644 index 80af4abe6d2..00000000000 --- a/test/go_test_repos/1_2_1_1_function_call/A/main.go +++ /dev/null @@ -1,14 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () { - fmt.Println("func A is called!") -} - -func main() { - -} - diff --git a/test/go_test_repos/1_2_1_1_function_call/B/main.go b/test/go_test_repos/1_2_1_1_function_call/B/main.go deleted file mode 100644 index 512ae295fc2..00000000000 --- a/test/go_test_repos/1_2_1_1_function_call/B/main.go +++ /dev/null @@ -1,14 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () { - fmt.Println("func A is called!") -} - -func main() { - funcA() -} - diff --git a/test/go_test_repos/1_2_1_1_function_call/C/main.go b/test/go_test_repos/1_2_1_1_function_call/C/main.go deleted file mode 100644 index 80af4abe6d2..00000000000 --- a/test/go_test_repos/1_2_1_1_function_call/C/main.go +++ /dev/null @@ -1,14 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () { - fmt.Println("func A is called!") -} - -func main() { - -} - diff --git a/test/go_test_repos/1_2_1_1_function_call/D/main.go b/test/go_test_repos/1_2_1_1_function_call/D/main.go deleted file mode 100644 index ab7af2e3d13..00000000000 --- a/test/go_test_repos/1_2_1_1_function_call/D/main.go +++ /dev/null @@ -1,14 +0,0 @@ -package main -import( - "fmt" -) - - -func funcB () { - fmt.Println("func A is called!") -} - -func main() { - funcB() -} - diff --git a/test/go_test_repos/1_2_1_1_function_call/E/main.go b/test/go_test_repos/1_2_1_1_function_call/E/main.go deleted file mode 100644 index e56ad8344e7..00000000000 --- a/test/go_test_repos/1_2_1_1_function_call/E/main.go +++ /dev/null @@ -1,13 +0,0 @@ -package main -import( - "fmt" -) - - -func funcB (a int) { - fmt.Println("func A is called!") -} - -func main() { - funcB(1) -} \ No newline at end of file diff --git a/test/go_test_repos/1_2_1_1_function_call/cg.dot b/test/go_test_repos/1_2_1_1_function_call/cg.dot deleted file mode 100644 index f8e6c90ae8d..00000000000 --- a/test/go_test_repos/1_2_1_1_function_call/cg.dot +++ /dev/null @@ -1,3 +0,0 @@ -digraph go_test_repo { - A -> B -> C -> D -> E; //1.2.1.1. Function Call -} \ No newline at end of file diff --git a/test/go_test_repos/1_2_1_2_embedded_expression/A/main.go b/test/go_test_repos/1_2_1_2_embedded_expression/A/main.go deleted file mode 100644 index 80af4abe6d2..00000000000 --- a/test/go_test_repos/1_2_1_2_embedded_expression/A/main.go +++ /dev/null @@ -1,14 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () { - fmt.Println("func A is called!") -} - -func main() { - -} - diff --git a/test/go_test_repos/1_2_1_2_embedded_expression/F/main.go b/test/go_test_repos/1_2_1_2_embedded_expression/F/main.go deleted file mode 100644 index 21ec5ed9569..00000000000 --- a/test/go_test_repos/1_2_1_2_embedded_expression/F/main.go +++ /dev/null @@ -1,16 +0,0 @@ -package main -import( - "fmt" -) - -func return_1 () int{ - return 1 -} - -func funcB (a int) { - fmt.Println("func A is called!") -} - -func main() { - funcB(return_1()) -} \ No newline at end of file diff --git a/test/go_test_repos/1_2_1_2_embedded_expression/G/main.go b/test/go_test_repos/1_2_1_2_embedded_expression/G/main.go deleted file mode 100644 index 82de197e99b..00000000000 --- a/test/go_test_repos/1_2_1_2_embedded_expression/G/main.go +++ /dev/null @@ -1,18 +0,0 @@ -package main -import( - "fmt" -) - -func return_1 () int{ - return 1 -} - -func funcB (a int) { - fmt.Println("func A is called!") -} - -func main() { - funcB(return_1()) - var a = return_1() - a = a + 1 -} \ No newline at end of file diff --git a/test/go_test_repos/1_2_1_2_embedded_expression/H/main.go b/test/go_test_repos/1_2_1_2_embedded_expression/H/main.go deleted file mode 100644 index a511f350edb..00000000000 --- a/test/go_test_repos/1_2_1_2_embedded_expression/H/main.go +++ /dev/null @@ -1,19 +0,0 @@ -package main -import( - "fmt" -) - -func return_1 () int{ - return 1 -} - -func funcB (a int) { - fmt.Println("func A is called!") -} - -func main() { - funcB(return_1()) - var a = 1 - a = a + return_1() - -} \ No newline at end of file diff --git a/test/go_test_repos/1_2_1_2_embedded_expression/cg.dot b/test/go_test_repos/1_2_1_2_embedded_expression/cg.dot deleted file mode 100644 index 35886433c43..00000000000 --- a/test/go_test_repos/1_2_1_2_embedded_expression/cg.dot +++ /dev/null @@ -1,4 +0,0 @@ -digraph go_test_repo { - A -> F -> G -> H; //1.2.1.2. Embedded Expression - //1.2.2.1. Conditional Statement -} \ No newline at end of file diff --git a/test/go_test_repos/1_2_2_1_1_if_statement/A/main.go b/test/go_test_repos/1_2_2_1_1_if_statement/A/main.go deleted file mode 100644 index 80af4abe6d2..00000000000 --- a/test/go_test_repos/1_2_2_1_1_if_statement/A/main.go +++ /dev/null @@ -1,14 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () { - fmt.Println("func A is called!") -} - -func main() { - -} - diff --git a/test/go_test_repos/1_2_2_1_1_if_statement/I/main.go b/test/go_test_repos/1_2_2_1_1_if_statement/I/main.go deleted file mode 100644 index d7a36af36a4..00000000000 --- a/test/go_test_repos/1_2_2_1_1_if_statement/I/main.go +++ /dev/null @@ -1,17 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () bool{ - fmt.Println("func A is called!") - return true -} - -func main() { - if(funcA()){ - fmt.Println("yes") - } -} - diff --git a/test/go_test_repos/1_2_2_1_1_if_statement/J/main.go b/test/go_test_repos/1_2_2_1_1_if_statement/J/main.go deleted file mode 100644 index 44a95f45369..00000000000 --- a/test/go_test_repos/1_2_2_1_1_if_statement/J/main.go +++ /dev/null @@ -1,17 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () bool{ - fmt.Println("func A is called!") - return true -} - -func main() { - if(true){ - funcA() - } -} - diff --git a/test/go_test_repos/1_2_2_1_1_if_statement/cg.dot b/test/go_test_repos/1_2_2_1_1_if_statement/cg.dot deleted file mode 100644 index 62e9d47e322..00000000000 --- a/test/go_test_repos/1_2_2_1_1_if_statement/cg.dot +++ /dev/null @@ -1,3 +0,0 @@ -digraph go_test_repo { - A -> I -> J ; //1.2.2.1.1. if statement -} \ No newline at end of file diff --git a/test/go_test_repos/1_2_2_2_1_for_statement/A/main.go b/test/go_test_repos/1_2_2_2_1_for_statement/A/main.go deleted file mode 100644 index 80af4abe6d2..00000000000 --- a/test/go_test_repos/1_2_2_2_1_for_statement/A/main.go +++ /dev/null @@ -1,14 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () { - fmt.Println("func A is called!") -} - -func main() { - -} - diff --git a/test/go_test_repos/1_2_2_2_1_for_statement/M/main.go b/test/go_test_repos/1_2_2_2_1_for_statement/M/main.go deleted file mode 100644 index 07b03805511..00000000000 --- a/test/go_test_repos/1_2_2_2_1_for_statement/M/main.go +++ /dev/null @@ -1,17 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () bool{ - fmt.Println("func A is called!") - return true -} - -func main() { - for i :=0;i<10;i++{ - funcA() - } -} - diff --git a/test/go_test_repos/1_2_2_2_1_for_statement/N/main.go b/test/go_test_repos/1_2_2_2_1_for_statement/N/main.go deleted file mode 100644 index 8f6c8048df9..00000000000 --- a/test/go_test_repos/1_2_2_2_1_for_statement/N/main.go +++ /dev/null @@ -1,17 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () bool{ - fmt.Println("func A is called!") - return true -} - -func main() { - for funcA() { - funcA() - } -} - diff --git a/test/go_test_repos/1_2_2_2_1_for_statement/cg.dot b/test/go_test_repos/1_2_2_2_1_for_statement/cg.dot deleted file mode 100644 index a2bc6f1c42a..00000000000 --- a/test/go_test_repos/1_2_2_2_1_for_statement/cg.dot +++ /dev/null @@ -1,3 +0,0 @@ -digraph go_test_repo { - A -> M -> N ; //1.2.2.2.1. for statement -} \ No newline at end of file diff --git a/test/go_test_repos/1_2_2_2_2_while_statement/A/main.go b/test/go_test_repos/1_2_2_2_2_while_statement/A/main.go deleted file mode 100644 index 80af4abe6d2..00000000000 --- a/test/go_test_repos/1_2_2_2_2_while_statement/A/main.go +++ /dev/null @@ -1,14 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () { - fmt.Println("func A is called!") -} - -func main() { - -} - diff --git a/test/go_test_repos/1_2_2_2_2_while_statement/K/main.go b/test/go_test_repos/1_2_2_2_2_while_statement/K/main.go deleted file mode 100644 index 7c1769e7ab6..00000000000 --- a/test/go_test_repos/1_2_2_2_2_while_statement/K/main.go +++ /dev/null @@ -1,20 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () bool{ - fmt.Println("func A is called!") - return true -} - -func main() { - switch 1 { - case 1: - funcA() - case 2: - fmt.Println("2") - } -} - diff --git a/test/go_test_repos/1_2_2_2_2_while_statement/L/main.go b/test/go_test_repos/1_2_2_2_2_while_statement/L/main.go deleted file mode 100644 index 70ca6e2ed53..00000000000 --- a/test/go_test_repos/1_2_2_2_2_while_statement/L/main.go +++ /dev/null @@ -1,21 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () bool{ - fmt.Println("func A is called!") - return true -} - -func main() { - a:= true - switch a { - case funcA(): - funcA() - case false: - fmt.Println("2") - } -} - diff --git a/test/go_test_repos/1_2_2_2_2_while_statement/cg.dot b/test/go_test_repos/1_2_2_2_2_while_statement/cg.dot deleted file mode 100644 index f738a5a547e..00000000000 --- a/test/go_test_repos/1_2_2_2_2_while_statement/cg.dot +++ /dev/null @@ -1,3 +0,0 @@ -digraph go_test_repo { - A -> K -> L; //1.2.2.2.2. while statement -} \ No newline at end of file diff --git a/test/go_test_repos/1_3_file_attribute/A/alpha.go b/test/go_test_repos/1_3_file_attribute/A/alpha.go deleted file mode 100644 index c983354f308..00000000000 --- a/test/go_test_repos/1_3_file_attribute/A/alpha.go +++ /dev/null @@ -1,5 +0,0 @@ -package file - -func funcA() { - -} \ No newline at end of file diff --git a/test/go_test_repos/1_3_file_attribute/B/alpha.go b/test/go_test_repos/1_3_file_attribute/B/alpha.go deleted file mode 100644 index c983354f308..00000000000 --- a/test/go_test_repos/1_3_file_attribute/B/alpha.go +++ /dev/null @@ -1,5 +0,0 @@ -package file - -func funcA() { - -} \ No newline at end of file diff --git a/test/go_test_repos/1_3_file_attribute/B/beta.go b/test/go_test_repos/1_3_file_attribute/B/beta.go deleted file mode 100644 index c40314f611f..00000000000 --- a/test/go_test_repos/1_3_file_attribute/B/beta.go +++ /dev/null @@ -1,5 +0,0 @@ -package file - -func funcB() { - -} \ No newline at end of file diff --git a/test/go_test_repos/1_3_file_attribute/C/alpha.go b/test/go_test_repos/1_3_file_attribute/C/alpha.go deleted file mode 100644 index b691ba57a43..00000000000 --- a/test/go_test_repos/1_3_file_attribute/C/alpha.go +++ /dev/null @@ -1 +0,0 @@ -package file diff --git a/test/go_test_repos/1_3_file_attribute/C/beta.go b/test/go_test_repos/1_3_file_attribute/C/beta.go deleted file mode 100644 index db6845e6486..00000000000 --- a/test/go_test_repos/1_3_file_attribute/C/beta.go +++ /dev/null @@ -1,9 +0,0 @@ -package file - -func funcA() { - -} - -func funcB() { - -} \ No newline at end of file diff --git a/test/go_test_repos/1_3_file_attribute/D/beta.go b/test/go_test_repos/1_3_file_attribute/D/beta.go deleted file mode 100644 index db6845e6486..00000000000 --- a/test/go_test_repos/1_3_file_attribute/D/beta.go +++ /dev/null @@ -1,9 +0,0 @@ -package file - -func funcA() { - -} - -func funcB() { - -} \ No newline at end of file diff --git a/test/go_test_repos/1_3_file_attribute/D/gamma/gamma.go b/test/go_test_repos/1_3_file_attribute/D/gamma/gamma.go deleted file mode 100644 index 1ce98fbd470..00000000000 --- a/test/go_test_repos/1_3_file_attribute/D/gamma/gamma.go +++ /dev/null @@ -1,8 +0,0 @@ -package gamma - -import "mypkg/file" - -func funcC() { - file.funcA() - file.funcB() -} \ No newline at end of file diff --git a/test/go_test_repos/1_3_file_attribute/cg.dot b/test/go_test_repos/1_3_file_attribute/cg.dot deleted file mode 100644 index c290ec20c92..00000000000 --- a/test/go_test_repos/1_3_file_attribute/cg.dot +++ /dev/null @@ -1,3 +0,0 @@ -digraph go_test_file { - A -> B -> C -> D; -} \ No newline at end of file diff --git a/test/go_test_repos/1_4_feature_branch/A/main.go b/test/go_test_repos/1_4_feature_branch/A/main.go deleted file mode 100644 index 80af4abe6d2..00000000000 --- a/test/go_test_repos/1_4_feature_branch/A/main.go +++ /dev/null @@ -1,14 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () { - fmt.Println("func A is called!") -} - -func main() { - -} - diff --git a/test/go_test_repos/1_4_feature_branch/B/main.go b/test/go_test_repos/1_4_feature_branch/B/main.go deleted file mode 100644 index 512ae295fc2..00000000000 --- a/test/go_test_repos/1_4_feature_branch/B/main.go +++ /dev/null @@ -1,14 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () { - fmt.Println("func A is called!") -} - -func main() { - funcA() -} - diff --git a/test/go_test_repos/1_4_feature_branch/C/main.go b/test/go_test_repos/1_4_feature_branch/C/main.go deleted file mode 100644 index 80af4abe6d2..00000000000 --- a/test/go_test_repos/1_4_feature_branch/C/main.go +++ /dev/null @@ -1,14 +0,0 @@ -package main -import( - "fmt" -) - - -func funcA () { - fmt.Println("func A is called!") -} - -func main() { - -} - diff --git a/test/go_test_repos/1_4_feature_branch/D/func.go b/test/go_test_repos/1_4_feature_branch/D/func.go deleted file mode 100644 index 49472f57455..00000000000 --- a/test/go_test_repos/1_4_feature_branch/D/func.go +++ /dev/null @@ -1,11 +0,0 @@ -package main -import( - "fmt" -) -func return_1 () int{ - return 1 -} - -func funcB (a int) { - fmt.Println("func A is called!") -} diff --git a/test/go_test_repos/1_4_feature_branch/D/main.go b/test/go_test_repos/1_4_feature_branch/D/main.go deleted file mode 100644 index d69ddee741f..00000000000 --- a/test/go_test_repos/1_4_feature_branch/D/main.go +++ /dev/null @@ -1,14 +0,0 @@ -package main -import( - "fmt" -) - -func funcA () { - fmt.Println("func A is called!") -} -func main() { - funcA() - return_1() -} - - diff --git a/test/go_test_repos/1_4_feature_branch/E/func.go b/test/go_test_repos/1_4_feature_branch/E/func.go deleted file mode 100644 index 49472f57455..00000000000 --- a/test/go_test_repos/1_4_feature_branch/E/func.go +++ /dev/null @@ -1,11 +0,0 @@ -package main -import( - "fmt" -) -func return_1 () int{ - return 1 -} - -func funcB (a int) { - fmt.Println("func A is called!") -} diff --git a/test/go_test_repos/1_4_feature_branch/E/main.go b/test/go_test_repos/1_4_feature_branch/E/main.go deleted file mode 100644 index c4b5c0d730e..00000000000 --- a/test/go_test_repos/1_4_feature_branch/E/main.go +++ /dev/null @@ -1,15 +0,0 @@ -package main -import( - "fmt" -) - -func funcA () { - fmt.Println("func A is called!") -} -func main() { - funcA() - - return_1() -} - - diff --git a/test/go_test_repos/1_4_feature_branch/F/func.go b/test/go_test_repos/1_4_feature_branch/F/func.go deleted file mode 100644 index 56c7c4280fe..00000000000 --- a/test/go_test_repos/1_4_feature_branch/F/func.go +++ /dev/null @@ -1,12 +0,0 @@ -package main -import( - "fmt" -) -func return_1 () int{ - fmt.Println("return 1") - return 1 -} - -func funcB (a int) { - fmt.Println("func A is called!") -} diff --git a/test/go_test_repos/1_4_feature_branch/F/main.go b/test/go_test_repos/1_4_feature_branch/F/main.go deleted file mode 100644 index d69ddee741f..00000000000 --- a/test/go_test_repos/1_4_feature_branch/F/main.go +++ /dev/null @@ -1,14 +0,0 @@ -package main -import( - "fmt" -) - -func funcA () { - fmt.Println("func A is called!") -} -func main() { - funcA() - return_1() -} - - diff --git a/test/go_test_repos/1_4_feature_branch/G/func.go b/test/go_test_repos/1_4_feature_branch/G/func.go deleted file mode 100644 index 49472f57455..00000000000 --- a/test/go_test_repos/1_4_feature_branch/G/func.go +++ /dev/null @@ -1,11 +0,0 @@ -package main -import( - "fmt" -) -func return_1 () int{ - return 1 -} - -func funcB (a int) { - fmt.Println("func A is called!") -} diff --git a/test/go_test_repos/1_4_feature_branch/G/main.go b/test/go_test_repos/1_4_feature_branch/G/main.go deleted file mode 100644 index 1417429b9c5..00000000000 --- a/test/go_test_repos/1_4_feature_branch/G/main.go +++ /dev/null @@ -1,13 +0,0 @@ -package main -import( - "fmt" -) - -func funcA () { - fmt.Println("func A is called!") -} -func main() { - -} - - diff --git a/test/go_test_repos/1_4_feature_branch/H/func.go b/test/go_test_repos/1_4_feature_branch/H/func.go deleted file mode 100644 index 49472f57455..00000000000 --- a/test/go_test_repos/1_4_feature_branch/H/func.go +++ /dev/null @@ -1,11 +0,0 @@ -package main -import( - "fmt" -) -func return_1 () int{ - return 1 -} - -func funcB (a int) { - fmt.Println("func A is called!") -} diff --git a/test/go_test_repos/1_4_feature_branch/H/main.go b/test/go_test_repos/1_4_feature_branch/H/main.go deleted file mode 100644 index b430885b3f8..00000000000 --- a/test/go_test_repos/1_4_feature_branch/H/main.go +++ /dev/null @@ -1,13 +0,0 @@ -package main -import( - "fmt" -) - -func funcA () { - fmt.Println("func A is called!") -} -func main() { - funcA() -} - - diff --git a/test/go_test_repos/1_4_feature_branch/I/func.go b/test/go_test_repos/1_4_feature_branch/I/func.go deleted file mode 100644 index 49472f57455..00000000000 --- a/test/go_test_repos/1_4_feature_branch/I/func.go +++ /dev/null @@ -1,11 +0,0 @@ -package main -import( - "fmt" -) -func return_1 () int{ - return 1 -} - -func funcB (a int) { - fmt.Println("func A is called!") -} diff --git a/test/go_test_repos/1_4_feature_branch/I/main.go b/test/go_test_repos/1_4_feature_branch/I/main.go deleted file mode 100644 index 1035c13d4e7..00000000000 --- a/test/go_test_repos/1_4_feature_branch/I/main.go +++ /dev/null @@ -1,14 +0,0 @@ -package main -import( - "fmt" -) - -func funcA () { - fmt.Println("func A is called!") -} -func main() { - funcA() - funcB() -} - - diff --git a/test/go_test_repos/1_4_feature_branch/J/func.go b/test/go_test_repos/1_4_feature_branch/J/func.go deleted file mode 100644 index 56c7c4280fe..00000000000 --- a/test/go_test_repos/1_4_feature_branch/J/func.go +++ /dev/null @@ -1,12 +0,0 @@ -package main -import( - "fmt" -) -func return_1 () int{ - fmt.Println("return 1") - return 1 -} - -func funcB (a int) { - fmt.Println("func A is called!") -} diff --git a/test/go_test_repos/1_4_feature_branch/J/main.go b/test/go_test_repos/1_4_feature_branch/J/main.go deleted file mode 100644 index b430885b3f8..00000000000 --- a/test/go_test_repos/1_4_feature_branch/J/main.go +++ /dev/null @@ -1,13 +0,0 @@ -package main -import( - "fmt" -) - -func funcA () { - fmt.Println("func A is called!") -} -func main() { - funcA() -} - - diff --git a/test/go_test_repos/1_4_feature_branch/K/func.go b/test/go_test_repos/1_4_feature_branch/K/func.go deleted file mode 100644 index 56c7c4280fe..00000000000 --- a/test/go_test_repos/1_4_feature_branch/K/func.go +++ /dev/null @@ -1,12 +0,0 @@ -package main -import( - "fmt" -) -func return_1 () int{ - fmt.Println("return 1") - return 1 -} - -func funcB (a int) { - fmt.Println("func A is called!") -} diff --git a/test/go_test_repos/1_4_feature_branch/K/main.go b/test/go_test_repos/1_4_feature_branch/K/main.go deleted file mode 100644 index e0ebe6e5b5f..00000000000 --- a/test/go_test_repos/1_4_feature_branch/K/main.go +++ /dev/null @@ -1,13 +0,0 @@ -package main -import( - "fmt" -) - -func funcA () { - fmt.Println("func A is called!") -} -func main() { - return_1() -} - - diff --git a/test/go_test_repos/1_4_feature_branch/cg.dot b/test/go_test_repos/1_4_feature_branch/cg.dot deleted file mode 100644 index b48c1877ed7..00000000000 --- a/test/go_test_repos/1_4_feature_branch/cg.dot +++ /dev/null @@ -1,6 +0,0 @@ -digraph test_feature_branch { - A -> B -> C -> D -> E -> F -> K; - B -> G -> D ; - D -> H -> I -> E ; - A -> J -> F ; -} \ No newline at end of file diff --git a/test/go_test_repos/2_1_package/A/calcproj/src/simplemath/add.go b/test/go_test_repos/2_1_package/A/calcproj/src/simplemath/add.go deleted file mode 100644 index 971a9d119b1..00000000000 --- a/test/go_test_repos/2_1_package/A/calcproj/src/simplemath/add.go +++ /dev/null @@ -1,5 +0,0 @@ -package sm - -func Add(a int, b int) int { - return a + b -} \ No newline at end of file diff --git a/test/go_test_repos/2_1_package/A/calcproj/src/simplemath/add_test.go b/test/go_test_repos/2_1_package/A/calcproj/src/simplemath/add_test.go deleted file mode 100644 index f488a25ddb0..00000000000 --- a/test/go_test_repos/2_1_package/A/calcproj/src/simplemath/add_test.go +++ /dev/null @@ -1,11 +0,0 @@ -package sm - -import "testing" - -func TestAdd1(t *testing.T) { - r := Add(1, 2) - - if r != 3 { - t.Errorf("Add(1, 2) failed. Got %d, expected 3.", r) - } -} \ No newline at end of file diff --git a/test/go_test_repos/2_1_package/A/calcproj/src/simplemath/sqrt.go b/test/go_test_repos/2_1_package/A/calcproj/src/simplemath/sqrt.go deleted file mode 100644 index 74402c652d7..00000000000 --- a/test/go_test_repos/2_1_package/A/calcproj/src/simplemath/sqrt.go +++ /dev/null @@ -1,8 +0,0 @@ -package sm - -import "math" - -func Sqrt(i int) int { - v := math.Sqrt(float64(i)) - return int(v) -} \ No newline at end of file diff --git a/test/go_test_repos/2_1_package/A/calcproj/src/simplemath/sqrt_test.go b/test/go_test_repos/2_1_package/A/calcproj/src/simplemath/sqrt_test.go deleted file mode 100644 index 3e9ea1f4a1c..00000000000 --- a/test/go_test_repos/2_1_package/A/calcproj/src/simplemath/sqrt_test.go +++ /dev/null @@ -1,11 +0,0 @@ -package sm - -import "testing" - -func TestSqrt1(t *testing.T) { - v := Sqrt(16) - - if v != 4 { - t.Errorf("Sqrt(16) failed. Got %v, expected 4.", v) - } -} \ No newline at end of file diff --git a/test/go_test_repos/2_1_package/B/calcproj/src/calc/calc.go b/test/go_test_repos/2_1_package/B/calcproj/src/calc/calc.go deleted file mode 100644 index ea333354490..00000000000 --- a/test/go_test_repos/2_1_package/B/calcproj/src/calc/calc.go +++ /dev/null @@ -1,54 +0,0 @@ -package main - -import ("os" - "fmt" - "strconv" - "gitlab.com/meri.co/test/calcproj/src/simplemath") - - -var Usage = func() { - fmt.Println("USAGE: calc command [arguments] ...") - fmt.Println("\nThe commands are:\n\tadd\tAddition of two values.\n\tsqrt\tSquare root of a non-negative value.") -} - -func main() { - args := os.Args - if args == nil || len(args) < 2 { - Usage() - return - } - - switch args[1] { - case "add": - if len(args) != 4 { - fmt.Println("USAGE: calc add ") - return - } - - v1, err1 := strconv.Atoi(args[2]) - v2, err2 := strconv.Atoi(args[3]) - if err1 != nil || err2 != nil { - fmt.Println("USAGE: calc add ") - return - } - - ret := sm.Add(v1, v2) - fmt.Println("Result: ", ret) - case "sqrt": - if len(args) != 3 { - fmt.Println("USAGE: calc sqrt ") - return - } - - v, err := strconv.Atoi(args[2]) - if err != nil { - fmt.Println("USAGE: calc sqrt ") - return - } - - ret := sm.Sqrt(v) - fmt.Println("Result: ", ret) - default: - Usage() - } -} \ No newline at end of file diff --git a/test/go_test_repos/2_1_package/B/calcproj/src/simplemath/add.go b/test/go_test_repos/2_1_package/B/calcproj/src/simplemath/add.go deleted file mode 100644 index 971a9d119b1..00000000000 --- a/test/go_test_repos/2_1_package/B/calcproj/src/simplemath/add.go +++ /dev/null @@ -1,5 +0,0 @@ -package sm - -func Add(a int, b int) int { - return a + b -} \ No newline at end of file diff --git a/test/go_test_repos/2_1_package/B/calcproj/src/simplemath/add_test.go b/test/go_test_repos/2_1_package/B/calcproj/src/simplemath/add_test.go deleted file mode 100644 index f488a25ddb0..00000000000 --- a/test/go_test_repos/2_1_package/B/calcproj/src/simplemath/add_test.go +++ /dev/null @@ -1,11 +0,0 @@ -package sm - -import "testing" - -func TestAdd1(t *testing.T) { - r := Add(1, 2) - - if r != 3 { - t.Errorf("Add(1, 2) failed. Got %d, expected 3.", r) - } -} \ No newline at end of file diff --git a/test/go_test_repos/2_1_package/B/calcproj/src/simplemath/sqrt.go b/test/go_test_repos/2_1_package/B/calcproj/src/simplemath/sqrt.go deleted file mode 100644 index 74402c652d7..00000000000 --- a/test/go_test_repos/2_1_package/B/calcproj/src/simplemath/sqrt.go +++ /dev/null @@ -1,8 +0,0 @@ -package sm - -import "math" - -func Sqrt(i int) int { - v := math.Sqrt(float64(i)) - return int(v) -} \ No newline at end of file diff --git a/test/go_test_repos/2_1_package/B/calcproj/src/simplemath/sqrt_test.go b/test/go_test_repos/2_1_package/B/calcproj/src/simplemath/sqrt_test.go deleted file mode 100644 index 3e9ea1f4a1c..00000000000 --- a/test/go_test_repos/2_1_package/B/calcproj/src/simplemath/sqrt_test.go +++ /dev/null @@ -1,11 +0,0 @@ -package sm - -import "testing" - -func TestSqrt1(t *testing.T) { - v := Sqrt(16) - - if v != 4 { - t.Errorf("Sqrt(16) failed. Got %v, expected 4.", v) - } -} \ No newline at end of file diff --git a/test/go_test_repos/2_1_package/cg.dot b/test/go_test_repos/2_1_package/cg.dot deleted file mode 100644 index 387bee3f469..00000000000 --- a/test/go_test_repos/2_1_package/cg.dot +++ /dev/null @@ -1,3 +0,0 @@ -digraph go_test_repo { - A -> B ; -} \ No newline at end of file diff --git a/test/go_test_repos/2_1_package/readme.md b/test/go_test_repos/2_1_package/readme.md deleted file mode 100644 index 05393fa3b07..00000000000 --- a/test/go_test_repos/2_1_package/readme.md +++ /dev/null @@ -1,5 +0,0 @@ - -# Go test repos 1 - -commit A: package and many go code files in floders. -commit B: Add packages in project. diff --git a/test/java_test_feature_branch/A/CallGraph.java b/test/java_test_feature_branch/A/CallGraph.java deleted file mode 100644 index cac12824bef..00000000000 --- a/test/java_test_feature_branch/A/CallGraph.java +++ /dev/null @@ -1,17 +0,0 @@ -package testers; - -public class CallGraphs -{ - public static void main(String[] args) { - doStuff(); - } - - public static void doStuff() { - new A().foo(); - } - - public static void addFunction(int a, int b){ - int sum = a + b; - doStuff(); - } -} \ No newline at end of file diff --git a/test/java_test_feature_branch/B/CallGraph.java b/test/java_test_feature_branch/B/CallGraph.java deleted file mode 100644 index d9bf2e6d591..00000000000 --- a/test/java_test_feature_branch/B/CallGraph.java +++ /dev/null @@ -1,22 +0,0 @@ -package testers; - -public class CallGraphs -{ - public static void main(String[] args) { - doStuff(); - } - - public static void doStuff() { - new A().foo(); - } - - public static void addFunction(int a, int b){ - int sum = a + b; - doStuff(); - } - - public static void addNewFunction(int a, int b){ - int sum = a + b; - doNewStuff(); - } -} \ No newline at end of file diff --git a/test/java_test_feature_branch/C/CallGraph.java b/test/java_test_feature_branch/C/CallGraph.java deleted file mode 100644 index c765a5ef0f0..00000000000 --- a/test/java_test_feature_branch/C/CallGraph.java +++ /dev/null @@ -1,21 +0,0 @@ -package testers; - -public class CallGraphs -{ - public static void main(String[] args) { - doStuff(); - } - - public static void doStuff() { - new A().foo(); - } - - public static void addFunction(int a, int b){ - int sum = a + b; - doStuff(); - } - - public static void addNewFunction(int a, int b){ - doNewStuff(); - } -} \ No newline at end of file diff --git a/test/java_test_feature_branch/D/CallGraph.java b/test/java_test_feature_branch/D/CallGraph.java deleted file mode 100644 index c765a5ef0f0..00000000000 --- a/test/java_test_feature_branch/D/CallGraph.java +++ /dev/null @@ -1,21 +0,0 @@ -package testers; - -public class CallGraphs -{ - public static void main(String[] args) { - doStuff(); - } - - public static void doStuff() { - new A().foo(); - } - - public static void addFunction(int a, int b){ - int sum = a + b; - doStuff(); - } - - public static void addNewFunction(int a, int b){ - doNewStuff(); - } -} \ No newline at end of file diff --git a/test/java_test_feature_branch/D/SecondFile.java b/test/java_test_feature_branch/D/SecondFile.java deleted file mode 100644 index 737a4828dac..00000000000 --- a/test/java_test_feature_branch/D/SecondFile.java +++ /dev/null @@ -1,12 +0,0 @@ -package testers; - -public class CallGraphs -{ - public static void main(String[] args) { - doStuff(); - } - - public static void doStuff() { - callSum(30, 40); - } -} \ No newline at end of file diff --git a/test/java_test_feature_branch/G/CallGraph.java b/test/java_test_feature_branch/G/CallGraph.java deleted file mode 100644 index cac12824bef..00000000000 --- a/test/java_test_feature_branch/G/CallGraph.java +++ /dev/null @@ -1,17 +0,0 @@ -package testers; - -public class CallGraphs -{ - public static void main(String[] args) { - doStuff(); - } - - public static void doStuff() { - new A().foo(); - } - - public static void addFunction(int a, int b){ - int sum = a + b; - doStuff(); - } -} \ No newline at end of file diff --git a/test/java_test_feature_branch/G/SecondFile.java b/test/java_test_feature_branch/G/SecondFile.java deleted file mode 100644 index 737a4828dac..00000000000 --- a/test/java_test_feature_branch/G/SecondFile.java +++ /dev/null @@ -1,12 +0,0 @@ -package testers; - -public class CallGraphs -{ - public static void main(String[] args) { - doStuff(); - } - - public static void doStuff() { - callSum(30, 40); - } -} \ No newline at end of file diff --git a/test/java_test_feature_branch/cg.dot b/test/java_test_feature_branch/cg.dot deleted file mode 100644 index 9de4d36a394..00000000000 --- a/test/java_test_feature_branch/cg.dot +++ /dev/null @@ -1,4 +0,0 @@ -digraph test_feature_branch { - A -> B -> C -> D ; - B -> G -> D ; -} \ No newline at end of file diff --git a/test/java_test_repo/A/CallGraph.java b/test/java_test_repo/A/CallGraph.java deleted file mode 100644 index cac12824bef..00000000000 --- a/test/java_test_repo/A/CallGraph.java +++ /dev/null @@ -1,17 +0,0 @@ -package testers; - -public class CallGraphs -{ - public static void main(String[] args) { - doStuff(); - } - - public static void doStuff() { - new A().foo(); - } - - public static void addFunction(int a, int b){ - int sum = a + b; - doStuff(); - } -} \ No newline at end of file diff --git a/test/java_test_repo/B/CallGraph.java b/test/java_test_repo/B/CallGraph.java deleted file mode 100644 index c4f1185732c..00000000000 --- a/test/java_test_repo/B/CallGraph.java +++ /dev/null @@ -1,21 +0,0 @@ -package testers; - -public class CallGraphs -{ - public static void main(String[] args) { - doStuff(); - } - - public static void doStuff() { - new A().foo(); - } - - public static void addFunction(int a, int b){ - int sum = a + b; - doStuff(); - } - - public static void tempFunction(){ - int temp = 0; - } -} \ No newline at end of file diff --git a/test/java_test_repo/C/CallGraph.java b/test/java_test_repo/C/CallGraph.java deleted file mode 100644 index df29685fef2..00000000000 --- a/test/java_test_repo/C/CallGraph.java +++ /dev/null @@ -1,18 +0,0 @@ -package testers; - -public class CallGraphs -{ - public static void main(String[] args) { - doStuff(); - } - - public static void doStuff() { - new A().foo(); - } - - public static void addFunction(int a, int b){ - int sum = a + b; - doStuff(); - } - -} \ No newline at end of file diff --git a/test/java_test_repo/D/CallGraph.java b/test/java_test_repo/D/CallGraph.java deleted file mode 100644 index 3504e73aa75..00000000000 --- a/test/java_test_repo/D/CallGraph.java +++ /dev/null @@ -1,18 +0,0 @@ -package testers; - -public class CallGraphs -{ - public static void main(String[] args) { - doStuff(); - } - - public static void doStuff() { - new A().foo(); - } - - public static void AddChangeFunction(int a, int b){ - int sum = a + b; - doStuff(); - } - -} \ No newline at end of file diff --git a/test/java_test_repo/E/CallGraph.java b/test/java_test_repo/E/CallGraph.java deleted file mode 100644 index 8bf3209a389..00000000000 --- a/test/java_test_repo/E/CallGraph.java +++ /dev/null @@ -1,18 +0,0 @@ -package testers; - -public class CallGraphs -{ - public static void main(String[] args) { - doStuff(); - } - - public static void doStuff() { - new A().foo(); - } - - public static void AddChangeFunction(int a, int b, int c){ - int sum = a + b + c; - doStuff(); - } - -} \ No newline at end of file diff --git a/test/java_test_repo/F/CallGraph.java b/test/java_test_repo/F/CallGraph.java deleted file mode 100644 index 7c47a9ec4c1..00000000000 --- a/test/java_test_repo/F/CallGraph.java +++ /dev/null @@ -1,22 +0,0 @@ -package testers; - -public class CallGraphs -{ - public static void main(String[] args) { - doStuff(); - } - - public static void doStuff() { - new A().foo(); - } - - public static void AddChangeFunction(int a, int b, int c){ - int sum = a + b + c; - int add = a + b; - int sub = a - b; - int rem = a % b; - int mul = a * b; - doStuff(); - } - -} \ No newline at end of file diff --git a/test/java_test_repo/G/CallGraph.java b/test/java_test_repo/G/CallGraph.java deleted file mode 100644 index 60171873d83..00000000000 --- a/test/java_test_repo/G/CallGraph.java +++ /dev/null @@ -1,20 +0,0 @@ -package testers; - -public class CallGraphs -{ - public static void main(String[] args) { - doStuff(); - } - - public static void doStuff() { - new A().foo(); - } - - public static void AddChangeFunction(int a, int b, int c){ - int sum = a + b + c; - int add = a + b; - int sub = a - b; - doStuff(); - } - -} \ No newline at end of file diff --git a/test/java_test_repo/I/CallGraph.java b/test/java_test_repo/I/CallGraph.java deleted file mode 100644 index d952379e1bb..00000000000 --- a/test/java_test_repo/I/CallGraph.java +++ /dev/null @@ -1,20 +0,0 @@ -package testers; - -public class CallGraphs -{ - public static void main(String[] args) { - doStuff(); - } - - public static void doStuff() { - new A().foo(); - } - - public static void AddChangeFunction(int a, int b, int c){ - int summation = a + b + c; - int addition = a + b; - int subtraction = a - b; - doStuff(); - } - -} \ No newline at end of file diff --git a/test/java_test_repo/J/CallGraph.java b/test/java_test_repo/J/CallGraph.java deleted file mode 100644 index 1d8aeb01d39..00000000000 --- a/test/java_test_repo/J/CallGraph.java +++ /dev/null @@ -1,18 +0,0 @@ -package testers; - -public class CallGraphs -{ - public static void main(String[] args) { - doStuff(); - } - - public static void doStuff() { - new A().foo(); - }public static void AddChangeFunction(int a, int b, int c){ - int summation = a + b + c; - int addition = a + b; - int subtraction = a - b; - doStuff(); - } - -} \ No newline at end of file diff --git a/test/java_test_repo/K/CallGraph.java b/test/java_test_repo/K/CallGraph.java deleted file mode 100644 index ee414b88d9b..00000000000 --- a/test/java_test_repo/K/CallGraph.java +++ /dev/null @@ -1,25 +0,0 @@ -package testers; - -public class CallGraphs -{ - public static void main(String[] args) { - doStuff(); - } - - public static void doStuff() { - new A().foo(); - } - - public static void AddChangeFunction(int a, int b, int c){ - int summation = a + b + c; - int addition = a + b; - int subtraction = a - b; - doStuff(); - } - - public static int FunctionCaller(int a, int b, int c){ - doStuff(); - AddChangeFunction(a, b, c); - summation(a, b, c); - } -} \ No newline at end of file diff --git a/test/java_test_repo/L/CallGraph.java b/test/java_test_repo/L/CallGraph.java deleted file mode 100644 index f9f47d1fa7c..00000000000 --- a/test/java_test_repo/L/CallGraph.java +++ /dev/null @@ -1,25 +0,0 @@ -package testers; - -public class CallGraphs -{ - public static void main(String[] args) { - doStuff(); - } - - public static void doStuff() { - new A().foo(); - } - - public static void AddChangeFunction(int a, int b, int c){ - int summation = a + b + c; - int addition = a + b; - int subtraction = a - b; - } - - public static int FunctionCaller(int a, int b, int c){ - doStuff(); - AddChangeFunction(a, b); - summation_new(a, b, c); - int a = 30 + addMore(30); - } -} \ No newline at end of file diff --git a/test/java_test_repo/M/CallGraph.java b/test/java_test_repo/M/CallGraph.java deleted file mode 100644 index 9762bfc9618..00000000000 --- a/test/java_test_repo/M/CallGraph.java +++ /dev/null @@ -1,22 +0,0 @@ -package testers; - -public class CallGraphs -{ - public static void main(String[] args) { - doStuff(); - } - - public static void doStuff() { - new A().foo(); - } - - public static void AddChangeFunction(int a, int b, int c){ - int summation = a + b + c; - int addition = a + b; - int subtraction = a - b; - } - - public static int FunctionCaller(int a, int b, int c){ - int a = 30 + addMore(30); - } -} \ No newline at end of file diff --git a/test/java_test_repo/N/CallGraph.java b/test/java_test_repo/N/CallGraph.java deleted file mode 100644 index b1c9f3c6512..00000000000 --- a/test/java_test_repo/N/CallGraph.java +++ /dev/null @@ -1,25 +0,0 @@ -package testers; - -public class CallGraphs -{ - public static void main(String[] args) { - doStuff(); - } - - public static void doStuff() { - new A().foo(); - } - - public static void AddChangeFunction(int a, int b, int c){ - int summation = a + b + c; - int addition = a + b; - int subtraction = a - b; - } - - public static int FunctionCaller(int a, int b, int c){ - int a = 30 + addMore(30); - addNewNumber(add40(40), 20, 30); - int a = returnBigValues(); - int b = sumValue(90) + anotherValue(80); - } -} \ No newline at end of file diff --git a/test/java_test_repo/O/CallGraph.java b/test/java_test_repo/O/CallGraph.java deleted file mode 100644 index 4159ebf19ce..00000000000 --- a/test/java_test_repo/O/CallGraph.java +++ /dev/null @@ -1,70 +0,0 @@ -package testers; - -public class CallGraphs -{ - public static void main(String[] args) { - doStuff(); - } - - public static void doStuff() { - new A().foo(); - } - - public static void AddChangeFunction(int a, int b, int c){ - int summation = a + b + c; - int addition = a + b; - int subtraction = a - b; - } - - public static int FunctionCaller(int a, int b, int c){ - int a = 30 + addMore(30); - addNewNumber(add40(40), 20, 30); - int a = returnBigValues(); - int b = sumValue(90) + anotherValue(80); - } - - public static int FunctionCallerConditionals(int a, int b, int c){ - int a = 30; - if(a == 30){ - addMoreAgain(30); - } - - if(add40(30) == 30){ - int a = greater30(30) + anotherValueAgain(90); - } - } - - public static int FunctionCallerConditionalsSwitch(int a, int b, int c){ - int day = 5; - String dayString; - - // switch statement with int data type - switch (day) { - case 1: - dayString = "Monday"; - getDay(dayString); - break; - case 2: - dayString = "Tuesday"; - break; - case 3: - dayString = "Wednesday"; - break; - case 4: - dayString = "Thursday"; - break; - case getNumDay("Friday"): - dayString = "Friday"; - break; - case 6: - dayString = "Saturday"; - break; - case 7: - dayString = "Sunday"; - break; - default: - dayString = "Invalid day"; - break; - } - } - } diff --git a/test/java_test_repo/P/CallGraph.java b/test/java_test_repo/P/CallGraph.java deleted file mode 100644 index d93a5b98d14..00000000000 --- a/test/java_test_repo/P/CallGraph.java +++ /dev/null @@ -1,83 +0,0 @@ -package testers; - -public class CallGraphs -{ - public static void main(String[] args) { - doStuff(); - } - - public static void doStuff() { - new A().foo(); - } - - public static void AddChangeFunction(int a, int b, int c){ - int summation = a + b + c; - int addition = a + b; - int subtraction = a - b; - } - - public static int FunctionCaller(int a, int b, int c){ - int a = 30 + addMore(30); - addNewNumber(add40(40), 20, 30); - int a = returnBigValues(); - int b = sumValue(90) + anotherValue(80); - } - - public static int FunctionCallerConditionals(int a, int b, int c){ - int a = 30; - if(a == 30){ - addMoreAgain(30); - } - - if(add40(30) == 30){ - int a = greater30(30) + anotherValueAgain(90); - } - } - - public static int FunctionCallerConditionalsSwitch(int a, int b, int c){ - int day = 5; - String dayString; - - // switch statement with int data type - switch (day) { - case 1: - dayString = "Monday"; - getDay(dayString); - break; - case 2: - dayString = "Tuesday"; - break; - case 3: - dayString = "Wednesday"; - break; - case 4: - dayString = "Thursday"; - break; - case getNumDay("Friday"): - dayString = "Friday"; - break; - case 6: - dayString = "Saturday"; - break; - case 7: - dayString = "Sunday"; - break; - default: - dayString = "Invalid day"; - break; - } - } - - public static int FunctionCallerLoops(){ - for(int i = getValue(30); i < str.length("Farhaan"); i++ ){ - doSomething(i); - - } - - while(doSomthingMore("hey")){ - parseIt("Hello"); - } - } - - - } diff --git a/test/java_test_repo/Q/CallGraph.java b/test/java_test_repo/Q/CallGraph.java deleted file mode 100644 index d93a5b98d14..00000000000 --- a/test/java_test_repo/Q/CallGraph.java +++ /dev/null @@ -1,83 +0,0 @@ -package testers; - -public class CallGraphs -{ - public static void main(String[] args) { - doStuff(); - } - - public static void doStuff() { - new A().foo(); - } - - public static void AddChangeFunction(int a, int b, int c){ - int summation = a + b + c; - int addition = a + b; - int subtraction = a - b; - } - - public static int FunctionCaller(int a, int b, int c){ - int a = 30 + addMore(30); - addNewNumber(add40(40), 20, 30); - int a = returnBigValues(); - int b = sumValue(90) + anotherValue(80); - } - - public static int FunctionCallerConditionals(int a, int b, int c){ - int a = 30; - if(a == 30){ - addMoreAgain(30); - } - - if(add40(30) == 30){ - int a = greater30(30) + anotherValueAgain(90); - } - } - - public static int FunctionCallerConditionalsSwitch(int a, int b, int c){ - int day = 5; - String dayString; - - // switch statement with int data type - switch (day) { - case 1: - dayString = "Monday"; - getDay(dayString); - break; - case 2: - dayString = "Tuesday"; - break; - case 3: - dayString = "Wednesday"; - break; - case 4: - dayString = "Thursday"; - break; - case getNumDay("Friday"): - dayString = "Friday"; - break; - case 6: - dayString = "Saturday"; - break; - case 7: - dayString = "Sunday"; - break; - default: - dayString = "Invalid day"; - break; - } - } - - public static int FunctionCallerLoops(){ - for(int i = getValue(30); i < str.length("Farhaan"); i++ ){ - doSomething(i); - - } - - while(doSomthingMore("hey")){ - parseIt("Hello"); - } - } - - - } diff --git a/test/java_test_repo/Q/SecondFile.java b/test/java_test_repo/Q/SecondFile.java deleted file mode 100644 index 737a4828dac..00000000000 --- a/test/java_test_repo/Q/SecondFile.java +++ /dev/null @@ -1,12 +0,0 @@ -package testers; - -public class CallGraphs -{ - public static void main(String[] args) { - doStuff(); - } - - public static void doStuff() { - callSum(30, 40); - } -} \ No newline at end of file diff --git a/test/java_test_repo/R/CallGraph.java b/test/java_test_repo/R/CallGraph.java deleted file mode 100644 index d93a5b98d14..00000000000 --- a/test/java_test_repo/R/CallGraph.java +++ /dev/null @@ -1,83 +0,0 @@ -package testers; - -public class CallGraphs -{ - public static void main(String[] args) { - doStuff(); - } - - public static void doStuff() { - new A().foo(); - } - - public static void AddChangeFunction(int a, int b, int c){ - int summation = a + b + c; - int addition = a + b; - int subtraction = a - b; - } - - public static int FunctionCaller(int a, int b, int c){ - int a = 30 + addMore(30); - addNewNumber(add40(40), 20, 30); - int a = returnBigValues(); - int b = sumValue(90) + anotherValue(80); - } - - public static int FunctionCallerConditionals(int a, int b, int c){ - int a = 30; - if(a == 30){ - addMoreAgain(30); - } - - if(add40(30) == 30){ - int a = greater30(30) + anotherValueAgain(90); - } - } - - public static int FunctionCallerConditionalsSwitch(int a, int b, int c){ - int day = 5; - String dayString; - - // switch statement with int data type - switch (day) { - case 1: - dayString = "Monday"; - getDay(dayString); - break; - case 2: - dayString = "Tuesday"; - break; - case 3: - dayString = "Wednesday"; - break; - case 4: - dayString = "Thursday"; - break; - case getNumDay("Friday"): - dayString = "Friday"; - break; - case 6: - dayString = "Saturday"; - break; - case 7: - dayString = "Sunday"; - break; - default: - dayString = "Invalid day"; - break; - } - } - - public static int FunctionCallerLoops(){ - for(int i = getValue(30); i < str.length("Farhaan"); i++ ){ - doSomething(i); - - } - - while(doSomthingMore("hey")){ - parseIt("Hello"); - } - } - - - } diff --git a/test/java_test_repo/R/SecondFileRename.java b/test/java_test_repo/R/SecondFileRename.java deleted file mode 100644 index 737a4828dac..00000000000 --- a/test/java_test_repo/R/SecondFileRename.java +++ /dev/null @@ -1,12 +0,0 @@ -package testers; - -public class CallGraphs -{ - public static void main(String[] args) { - doStuff(); - } - - public static void doStuff() { - callSum(30, 40); - } -} \ No newline at end of file diff --git a/test/java_test_repo/README.md b/test/java_test_repo/README.md deleted file mode 100644 index 3d50fcf66b6..00000000000 --- a/test/java_test_repo/README.md +++ /dev/null @@ -1,128 +0,0 @@ -## Test for Java - -This file has the info about different test cases -that has to be implemented for java. - -### Commit A - -This commit adds a new file, and a normal functions in it. - -### Commit B - -Spec 1.1.1 - -This commit adds a new functions to the file - -### Commit C - -Spec 1.1.2 - -This commit deletes function from the file - -### Commit D - -Spec 1.1.3.1 - -Change the name of the function from addFunction --> AddChangeFunction - -### Commit E - -Spec 1.1.3.2 - -Add new arguments to the function - -### Commit F - -Spec 1.1.3.3.1 - -Add line to function block - -### Commit G - -Spec 1.1.3.3.2 - -Remove line from function block - -### Commit I - -Spec 1.1.3.3.3 - -Modify function block lines - -### Commit J - -Spec 1.1.4.2 - -Remove line separation between functions - -### Commit K - -Spec 1.2.1.1.1 - -Add function call. - -### Commit L - -Spec 1.2.1.1.3 - -Modify the callee relationship, -change function name summation --> summation_new - -### Commit M - -Spec 1.2.1.1.2 - -Remove the function call - -### Commit N - -Spec 1.2.1.2 - -Spec 1.2.1.2.1 - -Spec 1.2.1.2.2 - -Spec 1.2.1.2.3 - -Function embeddig - -Function in parameter, assigned return -Function value to a variable -Function value used with operator - -### Commit O - -Spec 1.2.2.1 - -Spec 1.2.2.1.1 - -Spec 1.2.2.1.2 - -If conditionals, adding call in -if statement and later in if block itself. - - -Spec 1.2.2.1.2 - -Spec 1.2.2.1.2.1 - -Spec 1.2.2.1.2.2 - -Switch statement tests - -### Commit P - -Spec 1.2.2.2 - -This commit has everything related to loop -and calls. - -### Commit Q - -Add a new file having same function name as `CallGraph.java` -This results in different nodes and edges. - -### Commit R - -Renaming the file, this should keep the previous filename -also in the list to check attribute. \ No newline at end of file diff --git a/test/java_test_repo/cg.dot b/test/java_test_repo/cg.dot deleted file mode 100644 index da6d9547df9..00000000000 --- a/test/java_test_repo/cg.dot +++ /dev/null @@ -1,3 +0,0 @@ -digraph go_test_repo { - A -> B -> C -> D -> E -> F -> G -> I -> J -> K -> L -> M -> N -> O -> P -> Q -> R; -} \ No newline at end of file diff --git a/test/js_test_repo/A/main.js b/test/js_test_repo/A/main.js deleted file mode 100644 index 51a496a5790..00000000000 --- a/test/js_test_repo/A/main.js +++ /dev/null @@ -1,12 +0,0 @@ -const print = console.log; - -function funcA () { - print('func A is called!'); -} - -function main() { - let a = funcA; - a(); -} - -main(); diff --git a/test/js_test_repo/B/main.js b/test/js_test_repo/B/main.js deleted file mode 100644 index 01f238931ce..00000000000 --- a/test/js_test_repo/B/main.js +++ /dev/null @@ -1,17 +0,0 @@ -const print = console.log; - -function funcA () { - print('func A is called!'); -} - -function main() { - let a = funcA; - let b = function funcB () { - print('func B is called!'); - }; - let c = a; - b(); - c(); -} - -main(); diff --git a/test/js_test_repo/C/main.js b/test/js_test_repo/C/main.js deleted file mode 100644 index b078f4ba14f..00000000000 --- a/test/js_test_repo/C/main.js +++ /dev/null @@ -1,18 +0,0 @@ -const print = console.log; - -function funcA () { - print('func A is called!'); -} - -function main() { - let a = funcA; - let b = function funcB () { - funcA(); - print('func B is called!'); - }; - let c = a; - b(); - c(); -} - -main(); diff --git a/test/js_test_repo/cg.dot b/test/js_test_repo/cg.dot deleted file mode 100644 index 36a65b6256d..00000000000 --- a/test/js_test_repo/cg.dot +++ /dev/null @@ -1,3 +0,0 @@ -digraph test_feature_branch { - A -> B -> C; -} diff --git a/test/test_analytics/test_analyzer_java.py b/test/test_analytics/test_analyzer_java.py deleted file mode 100644 index 77e76d0a081..00000000000 --- a/test/test_analytics/test_analyzer_java.py +++ /dev/null @@ -1,178 +0,0 @@ -import os -import pytest -import subprocess -import shutil -from persper.analytics.java import JavaGraphServer -from persper.analytics.analyzer2 import Analyzer -from persper.analytics.graph_server import JAVA_FILENAME_REGEXES -from persper.util.path import root_path - - -@pytest.fixture(scope='module') -def az(): - # build the repo first if not exists yet - repo_path = os.path.join(root_path, 'repos/java_test_repo') - script_path = os.path.join(root_path, 'tools/repo_creater/create_repo.py') - test_src_path = os.path.join(root_path, 'test/java_test_repo') - - # Always use latest source to create test repo - if os.path.exists(repo_path): - shutil.rmtree(repo_path) - - cmd = '{} {}'.format(script_path, test_src_path) - subprocess.call(cmd, shell=True) - - return Analyzer(repo_path, JavaGraphServer(JAVA_FILENAME_REGEXES)) - - -@pytest.fixture(scope='module') -def az_file(): - # build the repo first if not exists yet - repo_path = os.path.join(root_path, 'repos/java_test_repo') - script_path = os.path.join(root_path, 'tools/repo_creater/create_repo.py') - test_src_path = os.path.join(root_path, 'test/java_test_repo') - - # Always use latest source to create test repo - if os.path.exists(repo_path): - shutil.rmtree(repo_path) - - cmd = '{} {}'.format(script_path, test_src_path) - subprocess.call(cmd, shell=True) - - return Analyzer(repo_path, JavaGraphServer(JAVA_FILENAME_REGEXES)) - - -@pytest.mark.asyncio -async def test_analyzer_files(az_file): - az_file.terminalCommit = 'A' - await az_file.analyze() - assert az_file.graph.nodes(data=True)['main']['files'] == {'CallGraph.java'} - - # Different file having the same function name - az_file.terminalCommit = 'Q' - await az_file.analyze() - assert az_file.graph.nodes(data=True)['main']['files'] == {'CallGraph.java', 'SecondFile.java'} - assert az_file.graph.nodes(data=True)['doStuff']['files'] == {'CallGraph.java', 'SecondFile.java'} - - # Renaming the file will store the latest information - az_file.terminalCommit = 'R' - await az_file.analyze() - assert az_file.graph.nodes(data=True)['main']['files'] == {'CallGraph.java', 'SecondFileRename.java'} - assert az_file.graph.nodes(data=True)['doStuff']['files'] == {'CallGraph.java', 'SecondFileRename.java'} - - -@pytest.mark.asyncio -async def test_analyzer_master_only(az): - await az.analyze() - ccgraph = az.graph - - history_truth = { - 'A': { - 'main': {'adds': 3, 'dels': 0}, - 'doStuff': {'adds': 3, 'dels': 0}, - 'addFunction': {'adds': 4, 'dels': 0} - }, - 'B': { - 'tempFunction': {'adds': 3, 'dels': 0} - }, - 'C': { - 'tempFunction': {'adds': 0, 'dels': 3} - }, - 'D': { - 'addFunction': {'adds': 1, 'dels': 1}, - 'AddChangeFunction': {'adds': 1, 'dels': 0} - }, - 'E': { - 'AddChangeFunction': {'adds': 2, 'dels': 2} - }, - 'F': { - 'AddChangeFunction': {'adds': 4, 'dels': 0} - }, - 'G': { - 'AddChangeFunction': {'adds': 0, 'dels': 2} - }, - 'I': { - 'AddChangeFunction': {'adds': 3, 'dels': 3} - }, - 'J': { - 'AddChangeFunction': {'adds': 1, 'dels': 1}, - 'doStuff': {'adds': 0, 'dels': 1} - }, - 'K': { - 'AddChangeFunction': {'adds': 3, 'dels': 1}, - 'FunctionCaller': {'adds': 5, 'dels': 0}, - 'doStuff': {'adds': 0, 'dels': 1} - }, - 'L': { - 'FunctionCaller': {'adds': 3, 'dels': 2}, - 'AddChangeFunction': {'adds': 0, 'dels': 1} - }, - 'M': { - 'FunctionCaller': {'adds': 0, 'dels': 3} - }, - 'N': { - 'FunctionCaller': {'adds': 3, 'dels': 0} - }, - 'O': { - 'FunctionCallerConditionals': {'adds': 10, 'dels': 0}, - 'FunctionCallerConditionalsSwitch': {'adds': 33, 'dels': 0} - }, - 'P': { - 'FunctionCallerLoops': {'adds': 10, 'dels': 0} - }, - # New file added having same function name - 'Q': { - 'main': {'adds': 3, 'dels': 0}, - 'doStuff': {'adds': 3, 'dels': 0} - } - - } - - edges_truth = [ - # caller callee relationship - ('FunctionCaller', 'summation'), - ('main', 'doStuff'), - ('doStuff', 'foo'), - ('addFunction', 'doStuff'), - ('AddChangeFunction', 'doStuff'), - ('FunctionCaller', 'AddChangeFunction'), - # modifying function call - ('FunctionCaller', 'summation_new'), - # Statement expressions - ('FunctionCaller', 'addMore'), - ('FunctionCaller', 'doStuff'), - # Embedded functions - ('FunctionCaller', 'add40'), - ('FunctionCaller', 'returnBigValues'), - ('FunctionCaller', 'sumValue'), - ('FunctionCaller', 'anotherValue'), - ('FunctionCaller', 'addNewNumber'), - # If conditionals - ('FunctionCallerConditionals', 'addMoreAgain'), - ('FunctionCallerConditionals', 'greater30'), - ('FunctionCallerConditionals', 'anotherValueAgain'), - ('FunctionCallerConditionals', 'add40'), - # Switch Test - ('FunctionCallerConditionalsSwitch', 'getDay'), - ('FunctionCallerConditionalsSwitch', 'getNumDay'), - # Loops - ('FunctionCallerLoops', 'getValue'), - ('FunctionCallerLoops', 'length'), - ('FunctionCallerLoops', 'doSomething'), - ('FunctionCallerLoops', 'doSomthingMore'), - ('FunctionCallerLoops', 'parseIt'), - ('FunctionCallerLoops', 'length'), - # New file with same function name - ('doStuff', 'callSum') - ] - - commits = ccgraph.commits() - - for func, data in ccgraph.nodes(data=True): - history = data['history'] - - for cid, chist in history.items(): - message = commits[cid]['message'] - assert (chist == history_truth[message.strip()][func]) - - assert (set(az.graph.edges()) == set(edges_truth)) diff --git a/test/test_analytics/test_analyzer_java_feature_branch.py b/test/test_analytics/test_analyzer_java_feature_branch.py deleted file mode 100644 index e97708d2483..00000000000 --- a/test/test_analytics/test_analyzer_java_feature_branch.py +++ /dev/null @@ -1,78 +0,0 @@ -import os -import pytest -import subprocess -import shutil -from persper.analytics.java import JavaGraphServer -from persper.analytics.analyzer2 import Analyzer -from persper.analytics.graph_server import JAVA_FILENAME_REGEXES -from persper.util.path import root_path - - -@pytest.fixture(scope='module') -def az(): - # build the repo first if not exists yet - repo_path = os.path.join(root_path, 'repos/java_test_feature_branch') - script_path = os.path.join(root_path, 'tools/repo_creater/create_repo.py') - test_src_path = os.path.join(root_path, 'test/java_test_feature_branch') - - # Always use latest source to create test repo - if os.path.exists(repo_path): - shutil.rmtree(repo_path) - - cmd = '{} {}'.format(script_path, test_src_path) - subprocess.call(cmd, shell=True) - - return Analyzer(repo_path, JavaGraphServer(JAVA_FILENAME_REGEXES)) - - -@pytest.mark.asyncio -async def test_analyzer_master_only(az): - await az.analyze() - ccgraph = az.graph - - history_truth = { - 'A': { - 'main': {'adds': 3, 'dels': 0}, - 'addFunction': {'adds': 4, 'dels': 0}, - 'doStuff': {'adds': 3, 'dels': 0}, - }, - 'B': { - 'addNewFunction': {'adds': 4, 'dels': 0} - }, - 'C': { - 'addNewFunction': {'adds': 0, 'dels': 1} - }, - 'G': { - 'main': {'adds': 3, 'dels': 0}, - 'doStuff': {'adds': 3, 'dels': 0}, - 'addNewFunction': {'adds': 0, 'dels': 4} - } - - } - - edges_truth = [ - ('addFunction', 'doStuff'), - ('main', 'doStuff'), - ('doStuff', 'foo'), - ('doStuff', 'callSum'), - ('addNewFunction', 'doNewStuff') - ] - - commits = ccgraph.commits() - - for func, data in ccgraph.nodes(data=True): - history = data['history'] - - for cid, chist in history.items(): - message = commits[cid]['message'] - print(message.strip(), chist, func.strip()) - assert (chist == history_truth[message.strip()][func]) - - filenames = list() - filenames_truth = ['CallGraph.java', 'SecondFile.java'] - for func, data in ccgraph.nodes(data=True): - filenames.extend(data["files"]) - assert (set(filenames) == set(filenames_truth)) - - print(az.graph.edges()) - assert (set(az.graph.edges()) == set(edges_truth)) diff --git a/test/test_analytics/test_analyzer_js.py b/test/test_analytics/test_analyzer_js.py deleted file mode 100644 index 616cb093413..00000000000 --- a/test/test_analytics/test_analyzer_js.py +++ /dev/null @@ -1,83 +0,0 @@ -import os -import time -import pytest -import shutil -import subprocess -from persper.analytics.graph_server import JS_FILENAME_REGEXES -from persper.analytics.graph_server_http import GraphServerHttp -from persper.analytics.analyzer import Analyzer -from persper.util.path import root_path -from .util import assert_size_match_history - -# Use a port other than the default 3000 in case of collision -server_port = 3002 -server_path = os.path.join(root_path, 'contribs/js-callgraph/src/app.js') - - -@pytest.fixture(scope='module') -def az(): - """ Build the test repo if not already exists - - Args: - repo_path - A string, path to the to-be-built test repo - script_path - A string, path to the repo creator script - test_src_path - A string, path to the dir to be passed to repo creator - """ - repo_path = os.path.join(root_path, 'repos/js_test_repo') - script_path = os.path.join(root_path, 'tools/repo_creater/create_repo.py') - test_src_path = os.path.join(root_path, 'test/js_test_repo') - server_addr = 'http://localhost:%d' % server_port - - # Always use latest source to create test repo - if os.path.exists(repo_path): - shutil.rmtree(repo_path) - - cmd = '{} {}'.format(script_path, test_src_path) - subprocess.call(cmd, shell=True) - - return Analyzer(repo_path, GraphServerHttp(server_addr, JS_FILENAME_REGEXES)) - - -def test_az(az: Analyzer): - my_env = os.environ.copy() - my_env["PORT"] = str(server_port) - p = subprocess.Popen(['node', server_path], env=my_env) - - try: - # wait for the server to spin up - time.sleep(1.0) - az._graph_server.reset_graph() - az.analyze() - ccgraph = az.get_graph() - - history_truth = { - 'C': {'main.js:funcB:9:12': 1, - 'main.js:global': 1, - 'main.js:main:7:16': 1}, - 'B': {'main.js:funcB:9:11': 3, - 'main.js:global': 7, - 'main.js:main:7:15': 7}, - 'A': {'main.js:funcA:3:5': 3, - 'main.js:main:7:10': 4, - 'main.js:global': 12} - } - - commits = ccgraph.commits() - for func, data in ccgraph.nodes(data=True): - history = data['history'] - for cindex, csize in history.items(): - commit_message = commits[cindex]['message'] - assert csize == history_truth[commit_message.strip()][func] - - edges_truth = [ - ('main.js:funcB:9:12', 'Native:Window_prototype_print'), - ('main.js:funcB:9:12', 'main.js:funcA:3:5'), - ('main.js:funcA:3:5', 'Native:Window_prototype_print'), - ('main.js:main:7:16', 'main.js:funcB:9:12'), - ('main.js:main:7:16', 'main.js:funcA:3:5'), - ('main.js:global', 'main.js:main:7:16') - ] - assert set(az.graph_server.get_graph().edges()) == set(edges_truth) - - finally: - p.terminate() diff --git a/test/test_analytics/test_go/__init__.py b/test/test_analytics/test_go/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/test/test_analytics/test_go/test_0_common.py b/test/test_analytics/test_go/test_0_common.py deleted file mode 100644 index 23fe3351a61..00000000000 --- a/test/test_analytics/test_go/test_0_common.py +++ /dev/null @@ -1,110 +0,0 @@ -import os -import pytest -import shutil -import subprocess -from persper.analytics.graph_server import GO_FILENAME_REGEXES -from persper.analytics.go import GoGraphServer -from persper.analytics.analyzer2 import Analyzer -from persper.util.path import root_path -from test.test_analytics.utility.go_graph_server import GoGraphBackend -from test.test_analytics.utility.graph_helper import reduce_graph_history_truth, reduce_graph_edge_truth - -GO_GRAPH_SERVER_PORT = 9089 - - -@pytest.fixture(scope='module') -def az(): - """ Build the test repo if not already exists - - Args: - repo_path - A string, path to the to-be-built test repo - script_path - A string, path to the repo creator script - test_src_path - A string, path to the dir to be passed to repo creator - """ - repo_path = os.path.join(root_path, 'repos/0_common') - script_path = os.path.join(root_path, 'tools/repo_creater/create_repo.py') - test_src_path = os.path.join(root_path, 'test/go_test_repos/0_common') - server_address = 'http://127.0.0.1:%d' % GO_GRAPH_SERVER_PORT - - # Always use latest source to create test repo - if os.path.exists(repo_path): - shutil.rmtree(repo_path) - - cmd = '{} {}'.format(script_path, test_src_path) - subprocess.call(cmd, shell=True) - - return Analyzer(repo_path, GoGraphServer(server_address, GO_FILENAME_REGEXES)) - - -@pytest.mark.asyncio -async def test_analzyer_go(az): - backend = GoGraphBackend(GO_GRAPH_SERVER_PORT) - backend.build() - backend.run() - try: - await _test_analzyer_go(az) - finally: - backend.terminate() - - -@pytest.mark.skip -async def _test_analzyer_go(az): - az._graphServer.reset_graph() - await az.analyze() - ccgraph = az.graph - - history_truth = { - 'D': { - 'main.go:Vertex:Abs': {'adds': 0, 'dels': 2}, - # TODO graph server bug - # related issue https://gitlab.com/persper/code-analytics/issues/12 - 'main.go::funcA': {'adds': 0, 'dels': 0}, - 'main.go::funcB': {'adds': 0, 'dels': 4}, - 'main.go::main': {'adds': 3, 'dels': 4}, - "main.go:Vertex:Absp": {'adds': 3, 'dels': 0}, - }, - 'C': { - 'main.go:Vertex:Abs': {'adds': 2, 'dels': 3}, - 'main.go::funcB': {'adds': 1, 'dels': 0}, - }, - 'B': { - 'main.go:Vertex:Abs': {'adds': 3, 'dels': 0}, - # TODO graph server bug - # related issue https://gitlab.com/persper/code-analytics/issues/12 - 'main.go::funcA': {'adds': 0, 'dels': 0}, - 'main.go::funcB': {'adds': 3, 'dels': 0}, - 'main.go::main': {'adds': 4, 'dels': 1}, - }, - 'A': { - 'main.go:Vertex:Abs': {'adds': 3, 'dels': 0}, - 'main.go::funcA': {'adds': 3, 'dels': 0}, - 'main.go::main': {'adds': 6, 'dels': 0}, - } - } - reduced_history_truth = reduce_graph_history_truth(history_truth) - commits = ccgraph.commits() - for func, data in ccgraph.nodes(data=True): - history = data['history'] - for csha, csize in history.items(): - commit_message = commits[csha]['message'] - assert (csize == reduced_history_truth[commit_message.strip()][func]) - - edges_added_by_a = { - ('main.go::main', 'main.go:Vertex:Abs') - } - - edges_added_by_b = { - ('main.go:Vertex:Abs', 'main.go::funcA') - } - - edges_added_by_c = { - ('main.go::funcB', 'main.go::funcA') - } - - edges_added_by_d = { - ("main.go::main", "main.go:Vertex:Absp") - } - - all_edges = edges_added_by_a.union(edges_added_by_b).union(edges_added_by_c).union(edges_added_by_d) - reduced_edges = reduce_graph_edge_truth(all_edges) - assert (set(ccgraph.edges()) == reduced_edges) diff --git a/test/test_analytics/test_go/test_1_1_1,2_add_remove_function.py b/test/test_analytics/test_go/test_1_1_1,2_add_remove_function.py deleted file mode 100644 index 21c7251f42d..00000000000 --- a/test/test_analytics/test_go/test_1_1_1,2_add_remove_function.py +++ /dev/null @@ -1,84 +0,0 @@ -import os -import pytest -import shutil -import subprocess -from persper.analytics.graph_server import GO_FILENAME_REGEXES -from persper.analytics.go import GoGraphServer -from persper.analytics.analyzer2 import Analyzer -from persper.util.path import root_path -from test.test_analytics.utility.go_graph_server import GoGraphBackend -from test.test_analytics.utility.graph_helper import reduce_graph_history_truth, reduce_graph_edge_truth - -GO_GRAPH_SERVER_PORT = 9089 - - -@pytest.fixture(scope = 'module') -def az(): - """ Build the test repo if not already exists - - Args: - repo_path - A string, path to the to-be-built test repo - script_path - A string, path to the repo creator script - test_src_path - A string, path to the dir to be passed to repo creator - """ - repo_path = os.path.join(root_path, 'repos/1_1_1,2_add_remove_function') - script_path = os.path.join(root_path, 'tools/repo_creater/create_repo.py') - test_src_path = os.path.join(root_path, 'test/go_test_repos/1_1_1,2_add_remove_function') - server_address = 'http://127.0.0.1:%d' % GO_GRAPH_SERVER_PORT - - # Always use latest source to create test repo - if os.path.exists(repo_path): - shutil.rmtree(repo_path) - - cmd = '{} {}'.format(script_path, test_src_path) - subprocess.call(cmd, shell = True) - - return Analyzer(repo_path, GoGraphServer(server_address, GO_FILENAME_REGEXES)) - - -@pytest.mark.asyncio -async def test_analzyer_go(az): - backend = GoGraphBackend(GO_GRAPH_SERVER_PORT) - backend.build() - backend.run() - try: - await _test_analzyer_go(az) - finally: - backend.terminate() - - -@pytest.mark.skip -async def _test_analzyer_go(az): - az._graphServer.reset_graph() - await az.analyze() - ccgraph = az.graph - history_truth = { - 'A': { - 'main.go::funcA': {'adds': 3, 'dels': 0}, - 'main.go::main': {'adds': 3, 'dels': 0} - }, - 'B': { - 'main.go::main': {'adds': 1, 'dels': 1} - }, - 'C': { - 'main.go::main': {'adds': 1, 'dels': 1} - }, - } - reduced_history_truth = reduce_graph_history_truth(history_truth) - commits = ccgraph.commits() - for func, data in ccgraph.nodes(data = True): - history = data['history'] - for csha, csize in history.items(): - commit_message = commits[csha]['message'] - assert (csize == reduced_history_truth[commit_message.strip()][func]) - - edges_added_by_A = set([ - ]) - edges_added_by_B = set([ - ('main.go::main', 'main.go::funcA'), - ]) - edges_added_by_C = set([ - ]) - all_edges = edges_added_by_A.union(edges_added_by_B).union(edges_added_by_C) - reduced_edges = reduce_graph_edge_truth(all_edges) - assert (set(ccgraph.edges()) == reduced_edges) diff --git a/test/test_analytics/test_go/test_1_1_3_1,2_change_function_name_argument.py b/test/test_analytics/test_go/test_1_1_3_1,2_change_function_name_argument.py deleted file mode 100644 index 60d8e54f3de..00000000000 --- a/test/test_analytics/test_go/test_1_1_3_1,2_change_function_name_argument.py +++ /dev/null @@ -1,87 +0,0 @@ -import os -import pytest -import shutil -import subprocess -from persper.analytics.graph_server import GO_FILENAME_REGEXES -from persper.analytics.go import GoGraphServer -from persper.analytics.analyzer2 import Analyzer -from persper.util.path import root_path -from test.test_analytics.utility.go_graph_server import GoGraphBackend -from test.test_analytics.utility.graph_helper import reduce_graph_history_truth, reduce_graph_edge_truth - -GO_GRAPH_SERVER_PORT = 9089 - - -@pytest.fixture(scope = 'module') -def az(): - """ Build the test repo if not already exists - - Args: - repo_path - A string, path to the to-be-built test repo - script_path - A string, path to the repo creator script - test_src_path - A string, path to the dir to be passed to repo creator - """ - repo_path = os.path.join(root_path, 'repos/1_1_3_1,2_change_function_name_argument') - script_path = os.path.join(root_path, 'tools/repo_creater/create_repo.py') - test_src_path = os.path.join(root_path, 'test/go_test_repos/1_1_3_1,2_change_function_name_argument') - server_address = 'http://127.0.0.1:%d' % GO_GRAPH_SERVER_PORT - - # Always use latest source to create test repo - if os.path.exists(repo_path): - shutil.rmtree(repo_path) - - cmd = '{} {}'.format(script_path, test_src_path) - subprocess.call(cmd, shell = True) - - return Analyzer(repo_path, GoGraphServer(server_address, GO_FILENAME_REGEXES)) - - -@pytest.mark.asyncio -async def test_analzyer_go(az): - backend = GoGraphBackend(GO_GRAPH_SERVER_PORT) - backend.build() - backend.run() - try: - await _test_analzyer_go(az) - finally: - backend.terminate() - - -@pytest.mark.skip -async def _test_analzyer_go(az): - az._graphServer.reset_graph() - await az.analyze() - ccgraph = az.graph - history_truth = { - 'A': { - 'main.go::funcA': {'adds': 3, 'dels': 0}, - 'main.go::main': {'adds': 3, 'dels': 0} - }, - 'D': { - 'main.go::funcA': {'adds': 0, 'dels': 1}, - 'main.go::funcB': {'adds': 1, 'dels': 0}, - 'main.go::main': {'adds': 1, 'dels': 1} - }, - 'E': { - 'main.go::funcB': {'adds': 1, 'dels': 1}, - 'main.go::main': {'adds': 1, 'dels': 1}, - }, - } - reduced_history_truth = reduce_graph_history_truth(history_truth) - commits = ccgraph.commits() - for func, data in ccgraph.nodes(data = True): - history = data['history'] - for csha, csize in history.items(): - commit_message = commits[csha]['message'] - assert (csize == reduced_history_truth[commit_message.strip()][func]) - - edges_added_by_A = set([]) - edges_added_by_D = set([ - ('main.go::main', 'main.go::funcB') - ]) - edges_added_by_E = set([ - ]) - all_edges = edges_added_by_A.union(edges_added_by_D).union(edges_added_by_E) - reduced_edges = reduce_graph_edge_truth(all_edges) - assert (set(ccgraph.edges()) == reduced_edges) - diff --git a/test/test_analytics/test_go/test_1_1_3_3_3_update_lines.py b/test/test_analytics/test_go/test_1_1_3_3_3_update_lines.py deleted file mode 100644 index c2788e0fb6c..00000000000 --- a/test/test_analytics/test_go/test_1_1_3_3_3_update_lines.py +++ /dev/null @@ -1,83 +0,0 @@ -import os -import pytest -import shutil -import subprocess -from persper.analytics.graph_server import GO_FILENAME_REGEXES -from persper.analytics.go import GoGraphServer -from persper.analytics.analyzer2 import Analyzer -from persper.util.path import root_path -from test.test_analytics.utility.go_graph_server import GoGraphBackend -from test.test_analytics.utility.graph_helper import reduce_graph_history_truth, reduce_graph_edge_truth - -GO_GRAPH_SERVER_PORT = 9089 - - -@pytest.fixture(scope = 'module') -def az(): - """ Build the test repo if not already exists - - Args: - repo_path - A string, path to the to-be-built test repo - script_path - A string, path to the repo creator script - test_src_path - A string, path to the dir to be passed to repo creator - """ - repo_path = os.path.join(root_path, 'repos/1_1_3_3_3_update_lines') - script_path = os.path.join(root_path, 'tools/repo_creater/create_repo.py') - test_src_path = os.path.join(root_path, 'test/go_test_repos/1_1_3_3_3_update_lines') - server_address = 'http://127.0.0.1:%d' % GO_GRAPH_SERVER_PORT - - # Always use latest source to create test repo - if os.path.exists(repo_path): - shutil.rmtree(repo_path) - - cmd = '{} {}'.format(script_path, test_src_path) - subprocess.call(cmd, shell = True) - - return Analyzer(repo_path, GoGraphServer(server_address, GO_FILENAME_REGEXES)) - - -@pytest.mark.asyncio -async def test_analzyer_go(az): - backend = GoGraphBackend(GO_GRAPH_SERVER_PORT) - backend.build() - backend.run() - try: - await _test_analzyer_go(az) - finally: - backend.terminate() - - -@pytest.mark.skip -async def _test_analzyer_go(az): - az._graphServer.reset_graph() - await az.analyze() - ccgraph = az.graph - history_truth = { - - 'H': { - 'main.go::funcA': {'adds': 6, 'dels': 0}, - 'main.go::main': {'adds': 3, 'dels': 0}, - }, - 'L': { - 'main.go::funcA': {'adds': 1, 'dels': 1}, - }, - 'M': { - 'main.go::funcA': {'adds': 2, 'dels': 2}, - }, - 'N': { - 'main.go::funcA': {'adds': 2, 'dels': 2}, - }, - - } - reduced_history_truth = reduce_graph_history_truth(history_truth) - commits = ccgraph.commits() - for func, data in ccgraph.nodes(data = True): - history = data['history'] - for csha, csize in history.items(): - commit_message = commits[csha]['message'] - assert (csize == reduced_history_truth[commit_message.strip()][func]) - - all_edges = set() - reduced_edges = reduce_graph_edge_truth(all_edges) - assert (set(ccgraph.edges()) == reduced_edges) - diff --git a/test/test_analytics/test_go/test_1_1_3_3_add_remove_lines.py b/test/test_analytics/test_go/test_1_1_3_3_add_remove_lines.py deleted file mode 100644 index b0518cc7c09..00000000000 --- a/test/test_analytics/test_go/test_1_1_3_3_add_remove_lines.py +++ /dev/null @@ -1,112 +0,0 @@ -import os -import pytest -import shutil -import subprocess -from persper.analytics.graph_server import GO_FILENAME_REGEXES -from persper.analytics.go import GoGraphServer -from persper.analytics.analyzer2 import Analyzer -from persper.util.path import root_path -from test.test_analytics.utility.go_graph_server import GoGraphBackend -from test.test_analytics.utility.graph_helper import reduce_graph_history_truth, reduce_graph_edge_truth - -GO_GRAPH_SERVER_PORT = 9089 - - -@pytest.fixture(scope = 'module') -def az(): - """ Build the test repo if not already exists - - Args: - repo_path - A string, path to the to-be-built test repo - script_path - A string, path to the repo creator script - test_src_path - A string, path to the dir to be passed to repo creator - """ - repo_path = os.path.join(root_path, 'repos/1_1_3_3_1,2_add_remove_lines') - script_path = os.path.join(root_path, 'tools/repo_creater/create_repo.py') - test_src_path = os.path.join(root_path, 'test/go_test_repos/1_1_3_3_1,2_add_remove_lines') - server_address = 'http://127.0.0.1:%d' % GO_GRAPH_SERVER_PORT - - # Always use latest source to create test repo - if os.path.exists(repo_path): - shutil.rmtree(repo_path) - - cmd = '{} {}'.format(script_path, test_src_path) - subprocess.call(cmd, shell = True) - - return Analyzer(repo_path, GoGraphServer(server_address, GO_FILENAME_REGEXES)) - - -@pytest.mark.asyncio -async def test_analzyer_go(az): - backend = GoGraphBackend(GO_GRAPH_SERVER_PORT) - backend.build() - backend.run() - try: - await _test_analzyer_go(az) - finally: - backend.terminate() - - -@pytest.mark.skip -async def _test_analzyer_go(az): - az._graphServer.reset_graph() - await az.analyze() - ccgraph = az.graph - history_truth = { - 'A': { - 'main.go::funcA': {'adds': 3, 'dels': 0}, - 'main.go::main': {'adds': 3, 'dels': 0} - }, - 'F': { - 'main.go::funcA': {'adds': 1, 'dels': 0}, - 'main.go::main': {'adds': 0, 'dels': 0} - }, - 'G': { - 'main.go::funcA': {'adds': 1, 'dels': 0}, - 'main.go::main': {'adds': 0, 'dels': 0} - }, - 'H': { - 'main.go::funcA': {'adds': 1, 'dels': 0}, - 'main.go::main': {'adds': 0, 'dels': 0} - }, - 'I': { - 'main.go::funcA': {'adds': 1, 'dels': 1}, - 'main.go::main': {'adds': 0, 'dels': 0} - }, - 'J': { - 'main.go::funcA': {'adds': 1, 'dels': 1}, - 'main.go::main': {'adds': 0, 'dels': 0} - }, - 'K': { - 'main.go::funcA': {'adds': 0, 'dels': 1}, - 'main.go::main': {'adds': 0, 'dels': 0} - }, - } - - reduced_history_truth = reduce_graph_history_truth(history_truth) - commits = ccgraph.commits() - for func, data in ccgraph.nodes(data = True): - history = data['history'] - for csha, csize in history.items(): - commit_message = commits[csha]['message'] - assert (csize == reduced_history_truth[commit_message.strip()][func]) - - edges_added_by_A = set([]) - edges_added_by_F = set([ - ]) - edges_added_by_G = set([ - ]) - edges_added_by_H = set([ - ]) - edges_added_by_I = set([ - ]) - edges_added_by_J = set([ - ]) - edges_added_by_K = set([ - ]) - - all_edges = edges_added_by_A.union(edges_added_by_F) \ - .union(edges_added_by_G).union(edges_added_by_H)\ - .union(edges_added_by_I).union(edges_added_by_J).union(edges_added_by_K) - reduced_edges = reduce_graph_edge_truth(all_edges) - assert (set(ccgraph.edges()) == reduced_edges) diff --git a/test/test_analytics/test_go/test_1_1_4_1_no_new_line_eof.py b/test/test_analytics/test_go/test_1_1_4_1_no_new_line_eof.py deleted file mode 100644 index 6f345825f67..00000000000 --- a/test/test_analytics/test_go/test_1_1_4_1_no_new_line_eof.py +++ /dev/null @@ -1,75 +0,0 @@ -import os -import pytest -import shutil -import subprocess -from persper.analytics.graph_server import GO_FILENAME_REGEXES -from persper.analytics.go import GoGraphServer -from persper.analytics.analyzer2 import Analyzer -from persper.util.path import root_path -from test.test_analytics.utility.go_graph_server import GoGraphBackend -from test.test_analytics.utility.graph_helper import reduce_graph_history_truth, reduce_graph_edge_truth - -GO_GRAPH_SERVER_PORT = 9089 - - -@pytest.fixture(scope = 'module') -def az(): - """ Build the test repo if not already exists - - Args: - repo_path - A string, path to the to-be-built test repo - script_path - A string, path to the repo creator script - test_src_path - A string, path to the dir to be passed to repo creator - """ - repo_path = os.path.join(root_path, 'repos/1_1_4_1_no_new_line_eof') - script_path = os.path.join(root_path, 'tools/repo_creater/create_repo.py') - test_src_path = os.path.join(root_path, 'test/go_test_repos/1_1_4_1_no_new_line_eof') - server_address = 'http://127.0.0.1:%d' % GO_GRAPH_SERVER_PORT - - # Always use latest source to create test repo - if os.path.exists(repo_path): - shutil.rmtree(repo_path) - - cmd = '{} {}'.format(script_path, test_src_path) - subprocess.call(cmd, shell = True) - - return Analyzer(repo_path, GoGraphServer(server_address, GO_FILENAME_REGEXES)) - - -@pytest.mark.asyncio -async def test_analzyer_go(az): - backend = GoGraphBackend(GO_GRAPH_SERVER_PORT) - backend.build() - backend.run() - try: - await _test_analzyer_go(az) - finally: - backend.terminate() - - -@pytest.mark.skip -async def _test_analzyer_go(az): - az._graphServer.reset_graph() - await az.analyze() - ccgraph = az.graph - history_truth = { - 'A': { - 'main.go::funcA': {'adds': 3, 'dels': 0}, - 'main.go::main': {'adds': 2, 'dels': 0} - }, - 'O': {}, - 'P': {}, - } - reduced_history_truth = reduce_graph_history_truth(history_truth) - commits = ccgraph.commits() - for func, data in ccgraph.nodes(data = True): - history = data['history'] - for csha, csize in history.items(): - commit_message = commits[csha]['message'] - assert (csize == reduced_history_truth[commit_message.strip()][func]) - - edges_added_by_A = set([]) - edges_added_by_O = set([]) - all_edges = edges_added_by_A.union(edges_added_by_O) - reduced_edges = reduce_graph_edge_truth(all_edges) - assert (set(ccgraph.edges()) == reduced_edges) diff --git a/test/test_analytics/test_go/test_1_1_4_2_no_new_line_between_functions.py b/test/test_analytics/test_go/test_1_1_4_2_no_new_line_between_functions.py deleted file mode 100644 index d9637ca3115..00000000000 --- a/test/test_analytics/test_go/test_1_1_4_2_no_new_line_between_functions.py +++ /dev/null @@ -1,83 +0,0 @@ -import os -import pytest -import shutil -import subprocess -from persper.analytics.graph_server import GO_FILENAME_REGEXES -from persper.analytics.go import GoGraphServer -from persper.analytics.analyzer2 import Analyzer -from persper.util.path import root_path -from test.test_analytics.utility.go_graph_server import GoGraphBackend -from test.test_analytics.utility.graph_helper import reduce_graph_history_truth, reduce_graph_edge_truth - -GO_GRAPH_SERVER_PORT = 9089 - - -@pytest.fixture(scope = 'module') -def az(): - """ Build the test repo if not already exists - - Args: - repo_path - A string, path to the to-be-built test repo - script_path - A string, path to the repo creator script - test_src_path - A string, path to the dir to be passed to repo creator - """ - repo_path = os.path.join(root_path, 'repos/1_1_4_2_no_new_line_between_functions') - script_path = os.path.join(root_path, 'tools/repo_creater/create_repo.py') - test_src_path = os.path.join(root_path, 'test/go_test_repos/1_1_4_2_no_new_line_between_functions') - server_address = 'http://127.0.0.1:%d' % GO_GRAPH_SERVER_PORT - - # Always use latest source to create test repo - if os.path.exists(repo_path): - shutil.rmtree(repo_path) - - cmd = '{} {}'.format(script_path, test_src_path) - subprocess.call(cmd, shell = True) - - return Analyzer(repo_path, GoGraphServer(server_address, GO_FILENAME_REGEXES)) - - -@pytest.mark.asyncio -async def test_analzyer_go(az): - backend = GoGraphBackend(GO_GRAPH_SERVER_PORT) - backend.build() - backend.run() - try: - await _test_analzyer_go(az) - finally: - backend.terminate() - - -@pytest.mark.skip -async def _test_analzyer_go(az): - az._graphServer.reset_graph() - await az.analyze() - ccgraph = az.graph - history_truth = { - 'A': { - 'main.go::funcA': {'adds': 3, 'dels': 0}, - 'main.go::main': {'adds': 3, 'dels': 0} - }, - 'P': { - 'main.go::funcA': {'adds': 1, 'dels': 1}, - 'main.go::main': {'adds': 1, 'dels': 1}, - }, - 'Q': { - 'main.go::funcA': {'adds': 1, 'dels': 1}, - 'main.go::main': {'adds': 1, 'dels': 1}, - }, - } - reduced_history_truth = reduce_graph_history_truth(history_truth) - commits = ccgraph.commits() - for func, data in ccgraph.nodes(data = True): - history = data['history'] - for csha, csize in history.items(): - commit_message = commits[csha]['message'] - assert (csize == reduced_history_truth[commit_message.strip()][func]) - - edges_added_by_A = set([]) - edges_added_by_B = set([]) - edges_added_by_E = set([]) - - all_edges = edges_added_by_A.union(edges_added_by_B).union(edges_added_by_E) - reduced_edges = reduce_graph_edge_truth(all_edges) - assert (set(ccgraph.edges()) == reduced_edges) diff --git a/test/test_analytics/test_go/test_1_2_1_1_function_call.py b/test/test_analytics/test_go/test_1_2_1_1_function_call.py deleted file mode 100644 index f1cd2deaa96..00000000000 --- a/test/test_analytics/test_go/test_1_2_1_1_function_call.py +++ /dev/null @@ -1,101 +0,0 @@ -import os -import pytest -import shutil -import subprocess -from persper.analytics.graph_server import GO_FILENAME_REGEXES -from persper.analytics.go import GoGraphServer -from persper.analytics.analyzer2 import Analyzer -from persper.util.path import root_path -from test.test_analytics.utility.go_graph_server import GoGraphBackend -from test.test_analytics.utility.graph_helper import reduce_graph_history_truth, reduce_graph_edge_truth - -GO_GRAPH_SERVER_PORT = 9089 - - -@pytest.fixture(scope = 'module') -def az(): - """ Build the test repo if not already exists - - Args: - repo_path - A string, path to the to-be-built test repo - script_path - A string, path to the repo creator script - test_src_path - A string, path to the dir to be passed to repo creator - """ - repo_path = os.path.join(root_path, 'repos/1_2_1_1_function_call') - script_path = os.path.join(root_path, 'tools/repo_creater/create_repo.py') - test_src_path = os.path.join(root_path, 'test/go_test_repos/1_2_1_1_function_call') - server_address = 'http://127.0.0.1:%d' % GO_GRAPH_SERVER_PORT - - # Always use latest source to create test repo - if os.path.exists(repo_path): - shutil.rmtree(repo_path) - - cmd = '{} {}'.format(script_path, test_src_path) - subprocess.call(cmd, shell = True) - - return Analyzer(repo_path, GoGraphServer(server_address, GO_FILENAME_REGEXES)) - - -@pytest.mark.asyncio -async def test_analzyer_go(az): - backend = GoGraphBackend(GO_GRAPH_SERVER_PORT) - backend.build() - backend.run() - try: - await _test_analzyer_go(az) - finally: - backend.terminate() - - -@pytest.mark.skip -async def _test_analzyer_go(az): - az._graphServer.reset_graph() - await az.analyze() - ccgraph = az.graph - history_truth = { - 'A': { - 'main.go::funcA': {'adds': 3, 'dels': 0}, - 'main.go::main': {'adds': 3, 'dels': 0} - }, - 'B': { - 'main.go::main': {'adds': 1, 'dels': 1} - }, - 'C': {'main.go::funcA': {'adds': 3, 'dels': 0}, - 'main.go::main': {'adds': 1, 'dels': 1} - }, - 'D': {'main.go::funcB': {'adds': 1, 'dels': 0}, - 'main.go::main': {'adds': 1, 'dels': 1}, - 'main.go::funcA': {'adds': 0, 'dels': 1} - }, - 'E': { - 'main.go::funcB': {'adds': 1, 'dels': 1}, - 'main.go::main': {'adds': 1, 'dels': 1}, - }, - - } - reduced_history_truth = reduce_graph_history_truth(history_truth) - commits = ccgraph.commits() - for func, data in ccgraph.nodes(data = True): - history = data['history'] - for csha, csize in history.items(): - commit_message = commits[csha]['message'] - print(commit_message.strip()) - print(func) - assert (csize == reduced_history_truth[commit_message.strip()][func]) - - edges_added_by_A = set([ - ]) - edges_added_by_B = set([ - ('main.go::main', 'main.go::funcA') - ]) - edges_added_by_C = set([ - ]) - edges_added_by_D = set([ - ('main.go::main', 'main.go::funcB') - ]) - edges_added_by_E = set([ - ]) - - all_edges = edges_added_by_A.union(edges_added_by_B).union(edges_added_by_C).union(edges_added_by_D).union(edges_added_by_E) - reduced_edges = reduce_graph_edge_truth(all_edges) - assert (set(ccgraph.edges()) == reduced_edges) diff --git a/test/test_analytics/test_go/test_1_2_1_2_embedded_expression.py b/test/test_analytics/test_go/test_1_2_1_2_embedded_expression.py deleted file mode 100644 index 0489fddca12..00000000000 --- a/test/test_analytics/test_go/test_1_2_1_2_embedded_expression.py +++ /dev/null @@ -1,97 +0,0 @@ -import os -import pytest -import shutil -import subprocess -import sys -from persper.analytics.graph_server import GO_FILENAME_REGEXES -from persper.analytics.go import GoGraphServer -from persper.analytics.analyzer2 import Analyzer -from persper.util.path import root_path -from test.test_analytics.utility.go_graph_server import GoGraphBackend -from test.test_analytics.utility.graph_helper import reduce_graph_history_truth, reduce_graph_edge_truth - -GO_GRAPH_SERVER_PORT = 9089 - - -@pytest.fixture(scope = 'module') -def az(): - """ Build the test repo if not already exists - - Args: - repo_path - A string, path to the to-be-built test repo - script_path - A string, path to the repo creator script - test_src_path - A string, path to the dir to be passed to repo creator - """ - repo_path = os.path.join(root_path, 'repos/1_2_1_2_embedded_expression') - script_path = os.path.join(root_path, 'tools/repo_creater/create_repo.py') - test_src_path = os.path.join(root_path, 'test/go_test_repos/1_2_1_2_embedded_expression') - server_address = 'http://127.0.0.1:%d' % GO_GRAPH_SERVER_PORT - - # Always use latest source to create test repo - if os.path.exists(repo_path): - shutil.rmtree(repo_path) - - cmd = '{} {}'.format(script_path, test_src_path) - subprocess.call(cmd, shell = True) - - return Analyzer(repo_path, GoGraphServer(server_address, GO_FILENAME_REGEXES)) - - -@pytest.mark.asyncio -async def test_analzyer_go(az): - backend = GoGraphBackend(GO_GRAPH_SERVER_PORT) - backend.build() - backend.run() - try: - await _test_analzyer_go(az) - finally: - backend.terminate() - - -@pytest.mark.skip -async def _test_analzyer_go(az): - az._graphServer.reset_graph() - await az.analyze() - ccgraph = az.graph - history_truth = { - 'A': { - 'main.go::funcA': {'adds': 3, 'dels': 0}, - 'main.go::main': {'adds': 3, 'dels': 0} - }, - 'F': { - 'main.go::funcA': {'adds': 0, 'dels': 1}, - 'main.go::funcB': {'adds': 1, 'dels': 0}, - 'main.go::main': {'adds': 1, 'dels': 1}, - 'main.go::return_1': {'adds': 3, 'dels': 0} - }, - 'G': { - 'main.go::main': {'adds': 2, 'dels': 0}, - }, - 'H': { - 'main.go::main': {'adds': 3, 'dels': 2}, - }, - } - reduced_history_truth = reduce_graph_history_truth(history_truth) - commits = ccgraph.commits() - for func, data in ccgraph.nodes(data = True): - history = data['history'] - for csha, csize in history.items(): - commit_message = commits[csha]['message'] - print(commit_message.strip()) - print(func) - assert (csize == reduced_history_truth[commit_message.strip()][func]) - - edges_added_by_A = set([ - ]) - edges_added_by_F = set([ - ('main.go::main', 'main.go::funcB'), - ('main.go::main', 'main.go::return_1'), - ]) - edges_added_by_G = set([ - ]) - edges_added_by_H = set([ - ]) - all_edges = edges_added_by_A.union(edges_added_by_F)\ - .union(edges_added_by_G).union(edges_added_by_H) - reduced_edges = reduce_graph_edge_truth(all_edges) - assert (set(ccgraph.edges()) == reduced_edges) diff --git a/test/test_analytics/test_go/test_1_2_2_1_1_if_statement.py b/test/test_analytics/test_go/test_1_2_2_1_1_if_statement.py deleted file mode 100644 index da4130ec641..00000000000 --- a/test/test_analytics/test_go/test_1_2_2_1_1_if_statement.py +++ /dev/null @@ -1,87 +0,0 @@ -import os -import pytest -import shutil -import subprocess -from persper.analytics.graph_server import GO_FILENAME_REGEXES -from persper.analytics.go import GoGraphServer -from persper.analytics.analyzer2 import Analyzer -from persper.util.path import root_path -from test.test_analytics.utility.go_graph_server import GoGraphBackend -from test.test_analytics.utility.graph_helper import reduce_graph_history_truth, reduce_graph_edge_truth - -GO_GRAPH_SERVER_PORT = 9089 - - -@pytest.fixture(scope = 'module') -def az(): - """ Build the test repo if not already exists - - Args: - repo_path - A string, path to the to-be-built test repo - script_path - A string, path to the repo creator script - test_src_path - A string, path to the dir to be passed to repo creator - """ - repo_path = os.path.join(root_path, 'repos/1_2_2_1_1_if_statement') - script_path = os.path.join(root_path, 'tools/repo_creater/create_repo.py') - test_src_path = os.path.join(root_path, 'test/go_test_repos/1_2_2_1_1_if_statement') - server_address = 'http://127.0.0.1:%d' % GO_GRAPH_SERVER_PORT - - # Always use latest source to create test repo - if os.path.exists(repo_path): - shutil.rmtree(repo_path) - - cmd = '{} {}'.format(script_path, test_src_path) - subprocess.call(cmd, shell = True) - - return Analyzer(repo_path, GoGraphServer(server_address, GO_FILENAME_REGEXES)) - - -@pytest.mark.asyncio -async def test_analzyer_go(az): - backend = GoGraphBackend(GO_GRAPH_SERVER_PORT) - backend.build() - backend.run() - try: - await _test_analzyer_go(az) - finally: - backend.terminate() - - -@pytest.mark.skip -async def _test_analzyer_go(az): - az._graphServer.reset_graph() - await az.analyze() - ccgraph = az.graph - history_truth = { - 'A': { - 'main.go::funcA': {'adds': 3, 'dels': 0}, - 'main.go::main': {'adds': 3, 'dels': 0} - }, - 'I': { - 'main.go::funcA': {'adds': 2, 'dels': 1}, - 'main.go::main': {'adds': 3, 'dels': 1}, - }, - 'J': { - 'main.go::main': {'adds': 2, 'dels': 2}, - }, - } - reduced_history_truth = reduce_graph_history_truth(history_truth) - commits = ccgraph.commits() - for func, data in ccgraph.nodes(data = True): - history = data['history'] - for csha, csize in history.items(): - commit_message = commits[csha]['message'] - print(commit_message.strip()) - print(func) - assert (csize == reduced_history_truth[commit_message.strip()][func]) - - edges_added_by_A = set([ - ]) - edges_added_by_I = set([ - ('main.go::main', 'main.go::funcA') - ]) - edges_added_by_J = set([ - ]) - all_edges = edges_added_by_A.union(edges_added_by_I).union(edges_added_by_J) - reduced_edges = reduce_graph_edge_truth(all_edges) - assert (set(ccgraph.edges()) == reduced_edges) \ No newline at end of file diff --git a/test/test_analytics/test_go/test_1_2_2_2_1_for_statement.py b/test/test_analytics/test_go/test_1_2_2_2_1_for_statement.py deleted file mode 100644 index 66e058fa654..00000000000 --- a/test/test_analytics/test_go/test_1_2_2_2_1_for_statement.py +++ /dev/null @@ -1,89 +0,0 @@ -import os -import pytest -import shutil -import subprocess -from persper.analytics.graph_server import GO_FILENAME_REGEXES -from persper.analytics.go import GoGraphServer -from persper.analytics.analyzer2 import Analyzer -from persper.util.path import root_path -from test.test_analytics.utility.go_graph_server import GoGraphBackend -from test.test_analytics.utility.graph_helper import reduce_graph_history_truth, reduce_graph_edge_truth - -GO_GRAPH_SERVER_PORT = 9089 - - -@pytest.fixture(scope = 'module') -def az(): - """ Build the test repo if not already exists - - Args: - repo_path - A string, path to the to-be-built test repo - script_path - A string, path to the repo creator script - test_src_path - A string, path to the dir to be passed to repo creator - """ - - repo_path = os.path.join(root_path, 'repos/1_2_2_2_1_for_statement') - script_path = os.path.join(root_path, 'tools/repo_creater/create_repo.py') - test_src_path = os.path.join(root_path, 'test/go_test_repos/1_2_2_2_1_for_statement') - server_address = 'http://127.0.0.1:%d' % GO_GRAPH_SERVER_PORT - - # Always use latest source to create test repo - if os.path.exists(repo_path): - shutil.rmtree(repo_path) - - cmd = '{} {}'.format(script_path, test_src_path) - subprocess.call(cmd, shell = True) - - return Analyzer(repo_path, GoGraphServer(server_address, GO_FILENAME_REGEXES)) - - -@pytest.mark.asyncio -async def test_analzyer_go(az): - backend = GoGraphBackend(GO_GRAPH_SERVER_PORT) - backend.build() - backend.run() - try: - await _test_analzyer_go(az) - finally: - backend.terminate() - - -@pytest.mark.skip -async def _test_analzyer_go(az): - az._graphServer.reset_graph() - await az.analyze() - ccgraph = az.graph - history_truth = { - 'A': { - 'main.go::funcA': {'adds': 3, 'dels': 0}, - 'main.go::main': {'adds': 3, 'dels': 0} - }, - 'M': { - 'main.go::funcA': {'adds': 2, 'dels': 1}, - 'main.go::main': {'adds': 3, 'dels': 1}, - }, - 'N': { - 'main.go::main': {'adds': 1, 'dels': 1}, - } - } - reduced_history_truth = reduce_graph_history_truth(history_truth) - commits = ccgraph.commits() - for func, data in ccgraph.nodes(data = True): - history = data['history'] - for csha, csize in history.items(): - commit_message = commits[csha]['message'] - print(commit_message.strip()) - print(func) - assert (csize == reduced_history_truth[commit_message.strip()][func]) - - edges_added_by_A = set([ - ]) - edges_added_by_M = set([ - ('main.go::main', 'main.go::funcA') - ]) - edges_added_by_N = set([ - ]) - all_edges = edges_added_by_A.\ - union(edges_added_by_M).union(edges_added_by_N) - reduced_edges = reduce_graph_edge_truth(all_edges) - assert (set(ccgraph.edges()) == reduced_edges) \ No newline at end of file diff --git a/test/test_analytics/test_go/test_1_2_2_2_2_while_statement.py b/test/test_analytics/test_go/test_1_2_2_2_2_while_statement.py deleted file mode 100644 index ba3ff395479..00000000000 --- a/test/test_analytics/test_go/test_1_2_2_2_2_while_statement.py +++ /dev/null @@ -1,87 +0,0 @@ -import os -import pytest -import shutil -import subprocess -from persper.analytics.graph_server import GO_FILENAME_REGEXES -from persper.analytics.go import GoGraphServer -from persper.analytics.analyzer2 import Analyzer -from persper.util.path import root_path -from test.test_analytics.utility.go_graph_server import GoGraphBackend -from test.test_analytics.utility.graph_helper import reduce_graph_history_truth, reduce_graph_edge_truth - -GO_GRAPH_SERVER_PORT = 9089 - - -@pytest.fixture(scope = 'module') -def az(): - """ Build the test repo if not already exists - - Args: - repo_path - A string, path to the to-be-built test repo - script_path - A string, path to the repo creator script - test_src_path - A string, path to the dir to be passed to repo creator - """ - repo_path = os.path.join(root_path, 'repos/1_2_2_2_2_while_statement') - script_path = os.path.join(root_path, 'tools/repo_creater/create_repo.py') - test_src_path = os.path.join(root_path, 'test/go_test_repos/1_2_2_2_2_while_statement') - server_address = 'http://127.0.0.1:%d' % GO_GRAPH_SERVER_PORT - - # Always use latest source to create test repo - if os.path.exists(repo_path): - shutil.rmtree(repo_path) - - cmd = '{} {}'.format(script_path, test_src_path) - subprocess.call(cmd, shell = True) - - return Analyzer(repo_path, GoGraphServer(server_address, GO_FILENAME_REGEXES)) - - -@pytest.mark.asyncio -async def test_analzyer_go(az): - backend = GoGraphBackend(GO_GRAPH_SERVER_PORT) - backend.build() - backend.run() - try: - await _test_analzyer_go(az) - finally: - backend.terminate() - - -@pytest.mark.skip -async def _test_analzyer_go(az): - az._graphServer.reset_graph() - await az.analyze() - ccgraph = az.graph - history_truth = { - 'A': { - 'main.go::funcA': {'adds': 3, 'dels': 0}, - 'main.go::main': {'adds': 3, 'dels': 0} - }, - 'K': { - 'main.go::funcA': {'adds': 2, 'dels': 1}, - 'main.go::main': {'adds': 6, 'dels': 1}, - }, - 'L': { - 'main.go::main': {'adds': 4, 'dels': 3}, - }, - } - reduced_history_truth = reduce_graph_history_truth(history_truth) - commits = ccgraph.commits() - for func, data in ccgraph.nodes(data = True): - history = data['history'] - for csha, csize in history.items(): - commit_message = commits[csha]['message'] - print(commit_message.strip()) - print(func) - assert (csize == reduced_history_truth[commit_message.strip()][func]) - - edges_added_by_A = set([ - ]) - edges_added_by_K = set([ - ('main.go::main', 'main.go::funcA') - ]) - edges_added_by_L = set([ - ]) - all_edges = edges_added_by_A.union(edges_added_by_K).union(edges_added_by_L) - reduced_edges = reduce_graph_edge_truth(all_edges) - assert (set(ccgraph.edges()) == reduced_edges) \ No newline at end of file diff --git a/test/test_analytics/test_go/test_1_3_file_attribute.py b/test/test_analytics/test_go/test_1_3_file_attribute.py deleted file mode 100644 index 54f2b644bad..00000000000 --- a/test/test_analytics/test_go/test_1_3_file_attribute.py +++ /dev/null @@ -1,68 +0,0 @@ -import os -import pytest -import shutil -import subprocess -from persper.analytics.graph_server import GO_FILENAME_REGEXES -from persper.analytics.go import GoGraphServer -from persper.analytics.analyzer2 import Analyzer -from persper.util.path import root_path -from test.test_analytics.utility.go_graph_server import GoGraphBackend - -from test.test_analytics.utility.graph_helper import reduce_graph_file_truth - - -GO_GRAPH_SERVER_PORT = 9089 - - -@pytest.fixture(scope='module') -def az(): - """ Build the test repo if not already exists - - Args: - repo_path - A string, path to the to-be-built test repo - script_path - A string, path to the repo creator script - test_src_path - A string, path to the dir to be passed to repo creator - """ - repo_path = os.path.join(root_path, 'repos/1_3_file_attribute') - script_path = os.path.join(root_path, 'tools/repo_creater/create_repo.py') - test_src_path = os.path.join(root_path, 'test/go_test_repos/1_3_file_attribute') - server_address = 'http://127.0.0.1:%d' % GO_GRAPH_SERVER_PORT - - # Always use latest source to create test repo - if os.path.exists(repo_path): - shutil.rmtree(repo_path) - - cmd = '{} {}'.format(script_path, test_src_path) - subprocess.call(cmd, shell=True) - - return Analyzer(repo_path, GoGraphServer(server_address, GO_FILENAME_REGEXES)) - - -@pytest.mark.asyncio -async def test_analzyer_go(az): - backend = GoGraphBackend(GO_GRAPH_SERVER_PORT) - backend.build() - backend.run() - try: - await _test_analzyer_go(az) - finally: - backend.terminate() - - -@pytest.mark.skip -async def _test_analzyer_go(az): - az._graphServer.reset_graph() - await az.analyze() - ccgraph = az.graph - - files_truth = { - "alpha.go::funcA": {"alpha.go"}, - "beta.go::funcB": {"beta.go"}, - "beta.go::funcA": {"beta.go"}, - "gamma/gamma.go::funcC": {"gamma/gamma.go"}, - } - reduced_files_truth = reduce_graph_file_truth(files_truth) - for func, data in ccgraph.nodes(data=True): - files = data['files'] - assert (files == reduced_files_truth[func]) - diff --git a/test/test_analytics/test_go/test_1_4_feature_branch.py b/test/test_analytics/test_go/test_1_4_feature_branch.py deleted file mode 100644 index 54ea56c033b..00000000000 --- a/test/test_analytics/test_go/test_1_4_feature_branch.py +++ /dev/null @@ -1,166 +0,0 @@ -import os -import pytest -import shutil -import subprocess -from persper.analytics.graph_server import GO_FILENAME_REGEXES -from persper.analytics.go import GoGraphServer -from persper.analytics.analyzer2 import Analyzer -from persper.util.path import root_path -from test.test_analytics.utility.go_graph_server import GoGraphBackend -from test.test_analytics.utility.graph_helper import reduce_graph_history_truth, reduce_graph_edge_truth - -GO_GRAPH_SERVER_PORT = 9089 - - -@pytest.fixture(scope = 'module') -def az(): - """ Build the test repo if not already exists - - Args: - repo_path - A string, path to the to-be-built test repo - script_path - A string, path to the repo creator script - test_src_path - A string, path to the dir to be passed to repo creator - """ - repo_path = os.path.join(root_path, 'repos/1_4_feature_branch') - script_path = os.path.join(root_path, 'tools/repo_creater/create_repo.py') - test_src_path = os.path.join(root_path, 'test/go_test_repos/1_4_feature_branch') - server_address = 'http://127.0.0.1:%d' % GO_GRAPH_SERVER_PORT - - # Always use latest source to create test repo - if os.path.exists(repo_path): - shutil.rmtree(repo_path) - - cmd = '{} {}'.format(script_path, test_src_path) - subprocess.call(cmd, shell = True) - - return Analyzer(repo_path, GoGraphServer(server_address, GO_FILENAME_REGEXES)) - - -@pytest.mark.asyncio -async def test_analzyer_go(az): - backend = GoGraphBackend(GO_GRAPH_SERVER_PORT) - backend.build() - backend.run() - try: - await _test_analzyer_go(az) - finally: - backend.terminate() - - -@pytest.mark.skip -async def _test_analzyer_go(az): - az._graphServer.reset_graph() - await az.analyze() - ccgraph = az.graph - - history_truth = { - 'A': { - 'main.go::funcA': {'adds': 3, 'dels': 0}, - 'main.go::main': {'adds': 3, 'dels': 0} - }, - 'B': { - 'main.go::funcA': {'adds': 0, 'dels': 0}, - 'main.go::main': {'adds': 1, 'dels': 1} - }, - 'C': { - 'main.go::funcA': {'adds': 0, 'dels': 0}, - 'main.go::main': {'adds': 1, 'dels': 1} - }, - 'D': { - 'func.go::funcB': {'adds': 3, 'dels': 0}, - 'main.go::funcA': {'adds': 0, 'dels': 0}, - 'main.go::main': {'adds': 2, 'dels': 1}, - "func.go::return_1":{'adds': 3, 'dels': 0}, - }, - 'E': { - 'func.go::funcB': {'adds': 0, 'dels': 0}, - 'main.go::funcA': {'adds': 0, 'dels': 0}, - 'main.go::main': {'adds': 2, 'dels': 1}, - "func.go::return_1":{'adds': 0, 'dels': 0}, - - }, - 'F': { - 'func.go::funcB': {'adds': 0, 'dels': 0}, - 'main.go::funcA': {'adds': 0, 'dels': 0}, - 'main.go::main': {'adds': 0, 'dels': 0}, - "func.go::return_1":{'adds': 1, 'dels': 0}, - - }, - 'G': { - 'func.go::funcB': {'adds': 3, 'dels': 0}, - 'main.go::funcA': {'adds': 0, 'dels': 0}, - 'main.go::main': {'adds': 1, 'dels': 1}, - "func.go::return_1":{'adds': 3, 'dels': 0}, - }, - 'H': { - 'func.go::funcB': {'adds': 0, 'dels': 0}, - 'main.go::funcA': {'adds': 0, 'dels': 0}, - 'main.go::main': {'adds': 0, 'dels': 1}, - "func.go::return_1":{'adds': 0, 'dels': 0}, - - }, - 'I': { - 'func.go::funcB': {'adds': 0, 'dels': 0}, - 'main.go::funcA': {'adds': 0, 'dels': 0}, - 'main.go::main': {'adds': 1, 'dels': 0}, - "func.go::return_1":{'adds': 0, 'dels': 0}, - - }, - 'J': { - 'func.go::funcB': {'adds': 3, 'dels': 0}, - 'main.go::funcA': {'adds': 0, 'dels': 0}, - 'main.go::main': {'adds': 1, 'dels': 1}, - "func.go::return_1":{'adds': 4, 'dels': 0}, - - }, - 'K': { - 'func.go::funcB': {'adds': 0, 'dels': 0}, - 'main.go::funcA': {'adds': 0, 'dels': 0}, - 'main.go::main': {'adds': 0, 'dels': 1}, - "func.go::return_1":{'adds': 0, 'dels': 0}, - }, - } - reduced_history_truth = reduce_graph_history_truth(history_truth) - commits = ccgraph.commits() - for func, data in ccgraph.nodes(data = True): - history = data['history'] - for csha, csize in history.items(): - commit_message = commits[csha]['message'] - assert (csize == reduced_history_truth[commit_message.strip()][func]) - - edges_added_by_A = set([ ]) - edges_added_by_B = set([('main.go::main', 'main.go::funcA'), ]) - edges_added_by_C = set([ - ]) - edges_added_by_D = set([ - ('main.go::main', 'func.go::funcB'), - ('main.go::main', 'func.go::return_1') - ]) - edges_added_by_E = set([ - ]) - edges_added_by_F = set([ - ('main.go::main', 'func.go::return_1'), - ]) - edges_added_by_G = set([ - ('main.go::main', 'func.go::funcB') - ]) - edges_added_by_H = set([ - - ]) - edges_added_by_I = set([ - ]) - edges_added_by_J = set([ - ]) - edges_added_by_K = set([ - ]) - edges_added_by_L = set([ - ]) - edges_added_by_M = set([ - ]) - edges_added_by_N = set([ - ]) - all_edges = edges_added_by_A.union(edges_added_by_B).union(edges_added_by_C).union(edges_added_by_D).union(edges_added_by_E).union(edges_added_by_F) \ - .union(edges_added_by_G).union(edges_added_by_H).union(edges_added_by_I).union(edges_added_by_J).union(edges_added_by_K)\ - .union(edges_added_by_L).union(edges_added_by_M).union(edges_added_by_N) - reduced_edges = reduce_graph_edge_truth(all_edges) - assert (set(ccgraph.edges()) == reduced_edges) diff --git a/test/test_analytics/test_go/test_1_5_persistence.py b/test/test_analytics/test_go/test_1_5_persistence.py deleted file mode 100644 index 601e2fed9ea..00000000000 --- a/test/test_analytics/test_go/test_1_5_persistence.py +++ /dev/null @@ -1,132 +0,0 @@ -import os -import pickle -import pytest -import shutil -import subprocess -from persper.analytics.graph_server import GO_FILENAME_REGEXES -from persper.analytics.go import GoGraphServer -from persper.analytics.analyzer2 import Analyzer -from persper.util.path import root_path -from test.test_analytics.utility.go_graph_server import GoGraphBackend -from test.test_analytics.utility.graph_helper import reduce_graph_history_truth, reduce_graph_edge_truth -from test.test_analytics.utility.graph_helper import reduce_graph_history_truth, reduce_graph_edge_truth - -GO_GRAPH_SERVER_PORT = 9089 - - -@pytest.fixture(scope='module') -def az(): - """ Build the test repo if not already exists - - Args: - repo_path - A string, path to the to-be-built test repo - script_path - A string, path to the repo creator script - test_src_path - A string, path to the dir to be passed to repo creator - """ - repo_path = os.path.join(root_path, 'repos/0_common') - script_path = os.path.join(root_path, 'tools/repo_creater/create_repo.py') - test_src_path = os.path.join(root_path, 'test/go_test_repos/0_common') - server_address = 'http://127.0.0.1:%d' % GO_GRAPH_SERVER_PORT - - # Always use latest source to create test repo - if os.path.exists(repo_path): - shutil.rmtree(repo_path) - - cmd = '{} {}'.format(script_path, test_src_path) - subprocess.call(cmd, shell=True) - - return Analyzer(repo_path, GoGraphServer(server_address, GO_FILENAME_REGEXES)) - - -@pytest.mark.asyncio -async def test_analzyer_go(az): - backend = GoGraphBackend(GO_GRAPH_SERVER_PORT) - backend.build() - backend.run() - try: - await _test_analzyer_go(az) - finally: - backend.terminate() - - -@pytest.mark.skip -async def _test_analzyer_go(az): - az._graphServer.reset_graph() - await az.analyze(2) - ccg = az.graph - history_truth = { - 'A': { - 'main.go:Vertex:Abs': {'adds': 3, 'dels': 0}, - 'main.go::funcA': {'adds': 3, 'dels': 0}, - 'main.go::main': {'adds': 6, 'dels': 0}, - }, - 'B': { - 'main.go:Vertex:Abs': {'adds': 3, 'dels': 0}, - 'main.go::funcA': {'adds': 0, 'dels': 0}, - 'main.go::funcB': {'adds': 3, 'dels': 0}, - 'main.go::main': {'adds': 4, 'dels': 1}, - }, - } - reduced_history_truth = reduce_graph_history_truth(history_truth) - commits = ccg.commits() - for func, data in ccg.nodes(data=True): - history = data['history'] - for csha, csize in history.items(): - commit_message = commits[csha]['message'] - assert (csize == reduced_history_truth[commit_message.strip()][func]) - edges_added_by_a = { - ('main.go::main', 'main.go:Vertex:Abs') - } - edges_added_by_b = { - ('main.go:Vertex:Abs', 'main.go::funcA') - } - all_edges = edges_added_by_a.union(edges_added_by_b) - reduced_edges = reduce_graph_edge_truth(all_edges) - assert (set(ccg.edges()) == reduced_edges) - - # pickle - pickle_content = pickle.dumps(az) - az = None - ccg = None - - # recover - az2: Analyzer = pickle.loads(pickle_content) - ccg = az2.graph - commits = ccg.commits() - # verify existing nodes and edges - for func, data in ccg.nodes(data=True): - history = data['history'] - for csha, csize in history.items(): - commit_message = commits[csha]['message'] - assert (csize == reduced_history_truth[commit_message.strip()][func]) - assert (set(ccg.edges()) == reduced_edges) - # start analyze - await az2.analyze() - ccg = az2.graph - history_truth['C'] = { - 'main.go:Vertex:Abs': {'adds': 2, 'dels': 3}, - 'main.go::funcB': {'adds': 1, 'dels': 0}, - } - history_truth['D'] = { - 'main.go:Vertex:Abs': {'adds': 0, 'dels': 2}, - 'main.go::funcA': {'adds': 0, 'dels': 0}, - 'main.go::funcB': {'adds': 0, 'dels': 4}, - 'main.go::main': {'adds': 3, 'dels': 4}, - "main.go:Vertex:Absp": {'adds': 3, 'dels': 0}, - } - reduced_history_truth = reduce_graph_history_truth(history_truth) - commits = ccg.commits() - for func, data in ccg.nodes(data=True): - history = data['history'] - for csha, csize in history.items(): - commit_message = commits[csha]['message'] - assert (csize == reduced_history_truth[commit_message.strip()][func]) - edges_added_by_c = { - ('main.go::funcB', 'main.go::funcA') - } - edges_added_by_d = { - ("main.go::main", "main.go:Vertex:Absp") - } - all_edges = edges_added_by_a.union(edges_added_by_b).union(edges_added_by_c).union(edges_added_by_d) - reduced_edges = reduce_graph_edge_truth(all_edges) - assert (set(ccg.edges()) == reduced_edges) diff --git a/test/test_analytics/test_go/test_2_1_package.py b/test/test_analytics/test_go/test_2_1_package.py deleted file mode 100644 index b9c723eaa88..00000000000 --- a/test/test_analytics/test_go/test_2_1_package.py +++ /dev/null @@ -1,88 +0,0 @@ -import os -import pytest -import shutil -import subprocess -from persper.analytics.graph_server import GO_FILENAME_REGEXES -from persper.analytics.go import GoGraphServer -from persper.analytics.analyzer2 import Analyzer -from persper.util.path import root_path -from test.test_analytics.utility.go_graph_server import GoGraphBackend -from test.test_analytics.utility.graph_helper import reduce_graph_history_truth, reduce_graph_edge_truth - -GO_GRAPH_SERVER_PORT = 9089 - - -@pytest.fixture(scope = 'module') -def az(): - """ Build the test repo if not already exists - - Args: - repo_path - A string, path to the to-be-built test repo - script_path - A string, path to the repo creator script - test_src_path - A string, path to the dir to be passed to repo creator - """ - repo_path = os.path.join(root_path, 'repos/2_1_package') - script_path = os.path.join(root_path, 'tools/repo_creater/create_repo.py') - test_src_path = os.path.join(root_path, 'test/go_test_repos/2_1_package') - server_address = 'http://127.0.0.1:%d' % GO_GRAPH_SERVER_PORT - - # Always use latest source to create test repo - if os.path.exists(repo_path): - shutil.rmtree(repo_path) - - cmd = '{} {}'.format(script_path, test_src_path) - subprocess.call(cmd, shell = True) - - return Analyzer(repo_path, GoGraphServer(server_address, GO_FILENAME_REGEXES)) - -@pytest.mark.asyncio -async def test_analzyer_go(az): - backend = GoGraphBackend(GO_GRAPH_SERVER_PORT) - backend.build() - backend.run() - try: - await _test_analzyer_go(az) - finally: - backend.terminate() - - -@pytest.mark.skip -async def _test_analzyer_go(az): - az._graphServer.reset_graph() - await az.analyze() - ccgraph = az.graph - history_truth = { - 'A': { - 'calcproj/src/simplemath/add.go::Add': {'adds': 3, 'dels': 0}, - 'calcproj/src/simplemath/add_test.go::TestAdd1': {'adds': 7, 'dels': 0}, - 'calcproj/src/simplemath/sqrt.go::Sqrt': {'adds': 4, 'dels': 0}, - 'calcproj/src/simplemath/sqrt_test.go::TestSqrt1': {'adds': 7, 'dels': 0}, - - }, - 'B': { - 'calcproj/src/calc/calc.go::main': {'adds': 41, 'dels': 0}, - }, - } - reduced_history_truth = reduce_graph_history_truth(history_truth) - commits = ccgraph.commits() - for func, data in ccgraph.nodes(data = True): - history = data['history'] - for csha, csize in history.items(): - commit_message = commits[csha]['message'] - print(commit_message.strip()) - print(func) - assert (csize == reduced_history_truth[commit_message.strip()][func]) - - edges_added_by_A = set([ - ('calcproj/src/simplemath/sqrt.go::Sqrt', 'calcproj/src/simplemath/sqrt.go::Sqrt'), - ('calcproj/src/simplemath/add_test.go::TestAdd1', 'calcproj/src/simplemath/add.go::Add'), - ('calcproj/src/simplemath/sqrt_test.go::TestSqrt1', 'calcproj/src/simplemath/sqrt.go::Sqrt'), - ]) - - edges_added_by_B = set([ - ('calcproj/src/calc/calc.go::main', 'calcproj/src/simplemath/add.go::Add'), - ('calcproj/src/calc/calc.go::main', 'calcproj/src/simplemath/sqrt.go::Sqrt'), - ]) - all_edges = edges_added_by_A.union(edges_added_by_B) - reduced_edges = reduce_graph_edge_truth(all_edges) - assert (set(ccgraph.edges()) == reduced_edges) diff --git a/test/test_analytics/test_go/test_2_1_vendor.py b/test/test_analytics/test_go/test_2_1_vendor.py deleted file mode 100644 index 31d356f5dd6..00000000000 --- a/test/test_analytics/test_go/test_2_1_vendor.py +++ /dev/null @@ -1,19 +0,0 @@ -import pytest -from persper.analytics.graph_server import GO_FILENAME_REGEXES -from persper.analytics.go import GoGraphServer - - -@pytest.fixture(scope='module') -def gs(): - return GoGraphServer(None, GO_FILENAME_REGEXES) - - -def test_analzyer_go(gs): - assert (gs.filter_file('main.go') is True) - assert (gs.filter_file('foo.go') is True) - assert (gs.filter_file('lib/bar.go') is True) - assert (gs.filter_file('./lib/bar.go') is True) - - assert (gs.filter_file('vendor/main.go') is False) - assert (gs.filter_file('lib/vendor/main.go') is False) - assert (gs.filter_file('./lib/vendor/foo.go') is False) diff --git a/test/test_analytics/utility/go_graph_server.py b/test/test_analytics/utility/go_graph_server.py deleted file mode 100644 index f8ed5052308..00000000000 --- a/test/test_analytics/utility/go_graph_server.py +++ /dev/null @@ -1,73 +0,0 @@ -import os -import subprocess -import shutil -import tempfile -import time - -GO_GRAPH_SERVER_GIT_REPO = "git@gitlab.com:meri.co/golang/graph-server.git" -GO_GRAPH_SERVER_GIT_BRANCH = "master" -GO_GRAPH_SERVER_PKG_MAIN = "gitlab.com/meri.co/golang/gs/app/graphserver" - - -class GoGraphBackend: - - def __init__(self, server_port: int): - self.server_port = server_port - self.git_repo = os.environ.get("GO_GRAPH_SERVER_GIT_REPO") - if self.git_repo is None or self.git_repo == "": - self.git_repo = GO_GRAPH_SERVER_GIT_REPO - self.git_branch = os.environ.get("GO_GRAPH_SERVER_GIT_BRANCH") - if self.git_branch is None or self.git_branch == "": - self.git_branch = GO_GRAPH_SERVER_GIT_BRANCH - self.pkg_main = os.environ.get("GO_GRAPH_SERVER_PKG_MAIN") - if self.pkg_main is None or self.pkg_main == "": - self.pkg_main = GO_GRAPH_SERVER_PKG_MAIN - temp_dir = tempfile.gettempdir() - self.src_path = os.path.join(temp_dir, 'merico', 'src', 'graph-server') - self.bin_path = os.path.join(temp_dir, 'merico', 'bin', 'graphserver') - print("git repo:", self.git_repo) - print("git branch:", self.git_branch) - print("pkg main:", self.pkg_main) - print("src path:", self.src_path) - print("bin path:", self.bin_path) - self.process = None - - def build(self): - # Always use latest source to create test repo - if os.path.exists(self.src_path): - shutil.rmtree(self.src_path) - if os.path.exists(self.bin_path): - os.remove(self.bin_path) - - ret = subprocess.call(["git", "clone", self.git_repo, self.src_path]) - if ret != 0: - print("git clone failed") - exit(1) - if self.git_branch is not "master": - ret = subprocess.call(["git", "checkout", "-b", self.git_branch, "origin/" + self.git_branch], - cwd=self.src_path) - if ret != 0: - print("git checkout failed") - exit(1) - - ret = subprocess.call(["git", "pull"], cwd=self.src_path) - if ret != 0: - print("git pull failed") - exit(1) - ret = subprocess.call( - ["go", "build", "-o", self.bin_path, self.pkg_main], cwd=self.src_path) - if ret != 0: - print("go build failed") - exit(1) - - def run(self): - server_address = '127.0.0.1:%d' % self.server_port - self.process = subprocess.Popen([self.bin_path, "-addr", server_address]) - print("go graph server pid:", self.process.pid) - print("sleep for 1 second before graph server has been completely started") - time.sleep(1) - - def terminate(self): - if self.process is not None: - self.process.terminate() - self.process = None diff --git a/test/test_analytics/utility/graph_helper.py b/test/test_analytics/utility/graph_helper.py deleted file mode 100644 index 8da1e477a9f..00000000000 --- a/test/test_analytics/utility/graph_helper.py +++ /dev/null @@ -1,38 +0,0 @@ -def reduce_graph_history_truth(history_truth): - reduced = {} - for csha, history in history_truth.items(): - c = {} - for fid, change in history.items(): - fn = fid.split(':')[2] - if fn in c: - c[fn] = merge_change(c[fn], change) - else: - c[fn] = change - reduced[csha] = c - return reduced - - -def merge_change(a, b): - merged = { - 'adds': a['adds'] + b['adds'], - 'dels': a['dels'] + b['dels'], - } - return merged - - -def reduce_graph_edge_truth(edge_truth): - reduced = set() - for edge in edge_truth: - reduced.add((edge[0].split(':')[2], edge[1].split(':')[2])) - return reduced - - -def reduce_graph_file_truth(file_truth): - reduced = {} - for fid, files in file_truth.items(): - fn = fid.split(':')[2] - if fn in reduced: - reduced[fn] = reduced[fn].union(files) - else: - reduced[fn] = files - return reduced