Skip to content
This repository was archived by the owner on Feb 29, 2024. It is now read-only.

Commit fd25930

Browse files
authored
chore: Switch from antlr 2.7.2 to antlr 2.7.7 (#63)
In addition to adopting antlr 2.7.7, libantlr.jar is now built from source allowing the current libantlr.jar (2.7.2) to be deleted. This contributes to resolving #56.
1 parent 6808ee1 commit fd25930

File tree

333 files changed

+62695
-1735
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

333 files changed

+62695
-1735
lines changed

build.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ PARALLEL_BUILD_OPTION="-j $(($(nproc 2> /dev/null || echo 4)*3/2))"
4747
# Clean up previously generated files
4848
pushd "${ROOT}"/third_party
4949
rm -rf gflags* glog* jsoncpp* install
50+
rm -rf antlr/build
5051
rm -f antlr/lib/cpp/src/*.o
5152
popd
5253

src/agent/BUILD

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1145,14 +1145,14 @@ genrule(
11451145
name = "java_expression_grammar_gen",
11461146
srcs = ["java_expression.g"],
11471147
outs = [
1148-
"antlrgen/JavaExpressionCompiler.cc",
1148+
"antlrgen/JavaExpressionCompiler.cpp",
11491149
"antlrgen/JavaExpressionCompiler.hpp",
11501150
"antlrgen/JavaExpressionCompilerTokenTypes.hpp",
1151-
"antlrgen/JavaExpressionLexer.cc",
1151+
"antlrgen/JavaExpressionLexer.cpp",
11521152
"antlrgen/JavaExpressionLexer.hpp",
11531153
"antlrgen/JavaExpressionLexerTokenTypes.hpp",
11541154
"antlrgen/JavaExpressionLexerTokenTypes.txt",
1155-
"antlrgen/JavaExpressionParser.cc",
1155+
"antlrgen/JavaExpressionParser.cpp",
11561156
"antlrgen/JavaExpressionParser.hpp",
11571157
"antlrgen/JavaExpressionParserTokenTypes.hpp",
11581158
],

src/agent/Makefile

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ ifneq ($(OS),Darwin)
88
ANTLR_DISABLED_WARNINGS = \
99
-Wno-unused-but-set-variable \
1010
-Wno-stringop-overflow \
11-
-Wno-use-after-free
11+
-Wno-use-after-free \
12+
-Wno-misleading-indentation
1213
endif
1314

1415
# Ignore warning produced by glog
@@ -97,7 +98,6 @@ TARGET_VERSION_TXT = $(BUILD_TARGET_PATH)/version.txt
9798
APPENGINE_FORMAT_SCRIPT = format-env-appengine-vm.sh
9899

99100
ANTLR_RUNTIME_SOURCES = \
100-
$(ANTLR_CPP_LIB_SRC)/ANTLRException.cpp \
101101
$(ANTLR_CPP_LIB_SRC)/ANTLRUtil.cpp \
102102
$(ANTLR_CPP_LIB_SRC)/ASTFactory.cpp \
103103
$(ANTLR_CPP_LIB_SRC)/ASTNULLType.cpp \
@@ -106,14 +106,10 @@ ANTLR_RUNTIME_SOURCES = \
106106
$(ANTLR_CPP_LIB_SRC)/BitSet.cpp \
107107
$(ANTLR_CPP_LIB_SRC)/CharBuffer.cpp \
108108
$(ANTLR_CPP_LIB_SRC)/CharScanner.cpp \
109-
$(ANTLR_CPP_LIB_SRC)/CharStreamException.cpp \
110-
$(ANTLR_CPP_LIB_SRC)/CharStreamIOException.cpp \
111109
$(ANTLR_CPP_LIB_SRC)/CommonAST.cpp \
112110
$(ANTLR_CPP_LIB_SRC)/CommonASTWithHiddenTokens.cpp \
113111
$(ANTLR_CPP_LIB_SRC)/CommonHiddenStreamToken.cpp \
114112
$(ANTLR_CPP_LIB_SRC)/CommonToken.cpp \
115-
$(ANTLR_CPP_LIB_SRC)/ExceptionSlot.cpp \
116-
$(ANTLR_CPP_LIB_SRC)/IOException.cpp \
117113
$(ANTLR_CPP_LIB_SRC)/InputBuffer.cpp \
118114
$(ANTLR_CPP_LIB_SRC)/LLkParser.cpp \
119115
$(ANTLR_CPP_LIB_SRC)/MismatchedCharException.cpp \
@@ -122,26 +118,23 @@ ANTLR_RUNTIME_SOURCES = \
122118
$(ANTLR_CPP_LIB_SRC)/NoViableAltForCharException.cpp \
123119
$(ANTLR_CPP_LIB_SRC)/Parser.cpp \
124120
$(ANTLR_CPP_LIB_SRC)/RecognitionException.cpp \
125-
$(ANTLR_CPP_LIB_SRC)/SemanticException.cpp \
126121
$(ANTLR_CPP_LIB_SRC)/String.cpp \
127122
$(ANTLR_CPP_LIB_SRC)/Token.cpp \
128123
$(ANTLR_CPP_LIB_SRC)/TokenBuffer.cpp \
124+
$(ANTLR_CPP_LIB_SRC)/TokenRefCount.cpp \
129125
$(ANTLR_CPP_LIB_SRC)/TokenStreamBasicFilter.cpp \
130-
$(ANTLR_CPP_LIB_SRC)/TokenStreamException.cpp \
131126
$(ANTLR_CPP_LIB_SRC)/TokenStreamHiddenTokenFilter.cpp \
132-
$(ANTLR_CPP_LIB_SRC)/TokenStreamIOException.cpp \
133-
$(ANTLR_CPP_LIB_SRC)/TokenStreamRecognitionException.cpp \
134-
$(ANTLR_CPP_LIB_SRC)/TokenStreamRetryException.cpp \
127+
$(ANTLR_CPP_LIB_SRC)/TokenStreamRewriteEngine.cpp \
135128
$(ANTLR_CPP_LIB_SRC)/TokenStreamSelector.cpp \
136129
$(ANTLR_CPP_LIB_SRC)/TreeParser.cpp \
137130

138131
JAVA_EXPRESSION_GRAMMAR_FILE = \
139132
java_expression.g \
140133

141134
ANTLR_JAVA_EXPRESSION_GENERATED_SOURCES = \
142-
antlrgen/JavaExpressionCompiler.cc \
143-
antlrgen/JavaExpressionLexer.cc \
144-
antlrgen/JavaExpressionParser.cc \
135+
antlrgen/JavaExpressionCompiler.cpp \
136+
antlrgen/JavaExpressionLexer.cpp \
137+
antlrgen/JavaExpressionParser.cpp \
145138

146139
ANTLR_JAVA_EXPRESSION_GENERATED_HEADERS = \
147140
antlrgen/JavaExpressionCompiler.hpp \
@@ -201,8 +194,9 @@ all: \
201194
target_version_txt \
202195

203196
antlrgen: $(JAVA_EXPRESSION_GRAMMAR_FILE)
197+
make -C $(ANTLR_TOOL_PATH) libantlr.jar
204198
mkdir antlrgen
205-
java -classpath $(ANTLR_TOOL_PATH)/libantlr.jar antlr.Tool -o antlrgen $(JAVA_EXPRESSION_GRAMMAR_FILE)
199+
java -classpath $(ANTLR_TOOL_PATH)/build/libantlr.jar antlr.Tool -o antlrgen $(JAVA_EXPRESSION_GRAMMAR_FILE)
206200

207201
$(ANTLR_JAVA_EXPRESSION_GENERATED_SOURCES) $(ANTLR_JAVA_EXPRESSION_GENERATED_HEADERS): antlrgen
208202

src/agent/expression_util.cc

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,10 @@ CompiledExpression CompileExpression(const std::string& string_expression,
5555
JavaExpressionParser parser(lexer);
5656
parser.Init();
5757

58-
parser.statement();
59-
if (parser.ActiveException()) {
60-
parser.reportError(parser.ActiveException()->getMessage());
58+
try {
59+
parser.statement();
60+
} catch (const antlr::ANTLRException& e) {
61+
parser.reportError(e.getMessage());
6162
}
6263

6364
if (parser.num_errors() > 0) {

src/agent/java_expression.g

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -457,7 +457,14 @@ options {
457457
return nullptr;
458458
}
459459

460-
std::unique_ptr<JavaExpression> expression(statement(ast));
460+
std::unique_ptr<JavaExpression> expression;
461+
try {
462+
expression.reset(statement(ast));
463+
}
464+
catch (const antlr::ANTLRException& e) {
465+
reportError(e.getMessage());
466+
}
467+
461468
if (expression == nullptr) {
462469
// Set generic error message if specific error wasn't set.
463470
SetErrorMessage({ ExpressionParserError });

tests/agent/java_expression_parser_test.cc

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,10 @@ static std::unique_ptr<JavaExpression> ParseExpression(const std::string& input,
5555
JavaExpressionParser parser(lexer);
5656
parser.Init();
5757

58-
parser.statement();
59-
if (parser.ActiveException()) {
60-
parser.reportError(parser.ActiveException()->getMessage());
58+
try {
59+
parser.statement();
60+
} catch (const antlr::ANTLRException& e) {
61+
parser.reportError(e.getMessage());
6162
}
6263

6364
if (parser.num_errors() > 0) {
@@ -513,9 +514,10 @@ TEST(JavaExpressionTest, ParserNegative) {
513514
JavaExpressionParser parser(lexer);
514515
parser.Init();
515516

516-
parser.statement();
517-
if (parser.ActiveException()) {
518-
parser.reportError(parser.ActiveException()->getMessage());
517+
try {
518+
parser.statement();
519+
} catch (const antlr::ANTLRException& e) {
520+
parser.reportError(e.getMessage());
519521
}
520522

521523
if (parser.num_errors() > 0) {

third_party/antlr/BUILD

Lines changed: 209 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,219 @@
11
package(default_visibility = ["//visibility:public"])
22

3-
java_import(
4-
name = "libantlr",
5-
jars = [
6-
"libantlr.jar",
7-
]
3+
java_library(
4+
name = "antlr",
5+
srcs = [
6+
"antlr/ANTLRError.java",
7+
"antlr/ANTLRException.java",
8+
"antlr/ANTLRGrammarParseBehavior.java",
9+
"antlr/ANTLRHashString.java",
10+
"antlr/ANTLRLexer.java",
11+
"antlr/ANTLRParser.java",
12+
"antlr/ANTLRStringBuffer.java",
13+
"antlr/ANTLRTokdefLexer.java",
14+
"antlr/ANTLRTokdefParser.java",
15+
"antlr/ANTLRTokdefParserTokenTypes.java",
16+
"antlr/ANTLRTokenTypes.java",
17+
"antlr/ASTFactory.java",
18+
"antlr/ASTIterator.java",
19+
"antlr/ASTNULLType.java",
20+
"antlr/ASTPair.java",
21+
"antlr/ASTVisitor.java",
22+
"antlr/ActionElement.java",
23+
"antlr/ActionTransInfo.java",
24+
"antlr/Alternative.java",
25+
"antlr/AlternativeBlock.java",
26+
"antlr/AlternativeElement.java",
27+
"antlr/BaseAST.java",
28+
"antlr/BlockContext.java",
29+
"antlr/BlockEndElement.java",
30+
"antlr/BlockWithImpliedExitPath.java",
31+
"antlr/ByteBuffer.java",
32+
"antlr/CharBuffer.java",
33+
"antlr/CharFormatter.java",
34+
"antlr/CharLiteralElement.java",
35+
"antlr/CharQueue.java",
36+
"antlr/CharRangeElement.java",
37+
"antlr/CharScanner.java",
38+
"antlr/CharStreamException.java",
39+
"antlr/CharStreamIOException.java",
40+
"antlr/CodeGenerator.java",
41+
"antlr/CommonAST.java",
42+
"antlr/CommonASTWithHiddenTokens.java",
43+
"antlr/CommonHiddenStreamToken.java",
44+
"antlr/CommonToken.java",
45+
"antlr/CppBlockFinishingInfo.java",
46+
"antlr/CppCharFormatter.java",
47+
"antlr/CppCodeGenerator.java",
48+
"antlr/DefaultFileLineFormatter.java",
49+
"antlr/DefaultJavaCodeGeneratorPrintWriterManager.java",
50+
"antlr/DefaultToolErrorHandler.java",
51+
"antlr/DefineGrammarSymbols.java",
52+
"antlr/DiagnosticCodeGenerator.java",
53+
"antlr/DocBookCodeGenerator.java",
54+
"antlr/DumpASTVisitor.java",
55+
"antlr/ExceptionHandler.java",
56+
"antlr/ExceptionSpec.java",
57+
"antlr/FileCopyException.java",
58+
"antlr/FileLineFormatter.java",
59+
"antlr/Grammar.java",
60+
"antlr/GrammarAnalyzer.java",
61+
"antlr/GrammarAtom.java",
62+
"antlr/GrammarElement.java",
63+
"antlr/GrammarSymbol.java",
64+
"antlr/HTMLCodeGenerator.java",
65+
"antlr/ImportVocabTokenManager.java",
66+
"antlr/InputBuffer.java",
67+
"antlr/JavaBlockFinishingInfo.java",
68+
"antlr/JavaCharFormatter.java",
69+
"antlr/JavaCodeGenerator.java",
70+
"antlr/JavaCodeGeneratorPrintWriterManager.java",
71+
"antlr/LLkAnalyzer.java",
72+
"antlr/LLkGrammarAnalyzer.java",
73+
"antlr/LLkParser.java",
74+
"antlr/LexerGrammar.java",
75+
"antlr/LexerSharedInputState.java",
76+
"antlr/Lookahead.java",
77+
"antlr/MakeGrammar.java",
78+
"antlr/MismatchedCharException.java",
79+
"antlr/MismatchedTokenException.java",
80+
"antlr/NameSpace.java",
81+
"antlr/NoViableAltException.java",
82+
"antlr/NoViableAltForCharException.java",
83+
"antlr/OneOrMoreBlock.java",
84+
"antlr/Parser.java",
85+
"antlr/ParserGrammar.java",
86+
"antlr/ParserSharedInputState.java",
87+
"antlr/ParseTree.java",
88+
"antlr/ParseTreeRule.java",
89+
"antlr/ParseTreeToken.java",
90+
"antlr/PreservingFileWriter.java",
91+
"antlr/PrintWriterWithSMAP.java",
92+
"antlr/RecognitionException.java",
93+
"antlr/RuleBlock.java",
94+
"antlr/RuleEndElement.java",
95+
"antlr/RuleRefElement.java",
96+
"antlr/RuleSymbol.java",
97+
"antlr/SemanticException.java",
98+
"antlr/SimpleTokenManager.java",
99+
"antlr/StringLiteralElement.java",
100+
"antlr/StringLiteralSymbol.java",
101+
"antlr/StringUtils.java",
102+
"antlr/SynPredBlock.java",
103+
"antlr/Token.java",
104+
"antlr/TokenBuffer.java",
105+
"antlr/TokenManager.java",
106+
"antlr/TokenQueue.java",
107+
"antlr/TokenRangeElement.java",
108+
"antlr/TokenRefElement.java",
109+
"antlr/TokenStream.java",
110+
"antlr/TokenStreamBasicFilter.java",
111+
"antlr/TokenStreamException.java",
112+
"antlr/TokenStreamHiddenTokenFilter.java",
113+
"antlr/TokenStreamIOException.java",
114+
"antlr/TokenStreamRecognitionException.java",
115+
"antlr/TokenStreamRetryException.java",
116+
"antlr/TokenStreamRewriteEngine.java",
117+
"antlr/TokenStreamSelector.java",
118+
"antlr/TokenSymbol.java",
119+
"antlr/TokenWithIndex.java",
120+
"antlr/Tool.java",
121+
"antlr/ToolErrorHandler.java",
122+
"antlr/TreeBlockContext.java",
123+
"antlr/TreeElement.java",
124+
"antlr/TreeParser.java",
125+
"antlr/TreeParserSharedInputState.java",
126+
"antlr/TreeSpecifierNode.java",
127+
"antlr/TreeWalkerGrammar.java",
128+
"antlr/Utils.java",
129+
"antlr/Version.java",
130+
"antlr/WildcardElement.java",
131+
"antlr/ZeroOrMoreBlock.java",
132+
"antlr/ASdebug/ASDebugStream.java",
133+
"antlr/ASdebug/IASDebugStream.java",
134+
"antlr/ASdebug/TokenOffsetInfo.java",
135+
"antlr/actions/cpp/ActionLexer.java",
136+
"antlr/actions/cpp/ActionLexerTokenTypes.java",
137+
"antlr/actions/java/ActionLexer.java",
138+
"antlr/actions/java/ActionLexerTokenTypes.java",
139+
"antlr/collections/AST.java",
140+
"antlr/collections/ASTEnumeration.java",
141+
"antlr/collections/Enumerator.java",
142+
"antlr/collections/List.java",
143+
"antlr/collections/Stack.java",
144+
"antlr/collections/impl/ASTArray.java",
145+
"antlr/collections/impl/ASTEnumerator.java",
146+
"antlr/collections/impl/BitSet.java",
147+
"antlr/collections/impl/IndexedVector.java",
148+
"antlr/collections/impl/IntRange.java",
149+
"antlr/collections/impl/LLCell.java",
150+
"antlr/collections/impl/LLEnumeration.java",
151+
"antlr/collections/impl/LList.java",
152+
"antlr/collections/impl/Vector.java",
153+
"antlr/collections/impl/VectorEnumeration.java",
154+
"antlr/collections/impl/VectorEnumerator.java",
155+
"antlr/debug/DebuggingCharScanner.java",
156+
"antlr/debug/DebuggingInputBuffer.java",
157+
"antlr/debug/DebuggingParser.java",
158+
"antlr/debug/Event.java",
159+
"antlr/debug/GuessingEvent.java",
160+
"antlr/debug/InputBufferAdapter.java",
161+
"antlr/debug/InputBufferEvent.java",
162+
"antlr/debug/InputBufferEventSupport.java",
163+
"antlr/debug/InputBufferListener.java",
164+
"antlr/debug/InputBufferReporter.java",
165+
"antlr/debug/LLkDebuggingParser.java",
166+
"antlr/debug/ListenerBase.java",
167+
"antlr/debug/MessageAdapter.java",
168+
"antlr/debug/MessageEvent.java",
169+
"antlr/debug/MessageListener.java",
170+
"antlr/debug/NewLineEvent.java",
171+
"antlr/debug/NewLineListener.java",
172+
"antlr/debug/ParserAdapter.java",
173+
"antlr/debug/ParserController.java",
174+
"antlr/debug/ParserEventSupport.java",
175+
"antlr/debug/ParserListener.java",
176+
"antlr/debug/ParserMatchAdapter.java",
177+
"antlr/debug/ParserMatchEvent.java",
178+
"antlr/debug/ParserMatchListener.java",
179+
"antlr/debug/ParserReporter.java",
180+
"antlr/debug/ParserTokenAdapter.java",
181+
"antlr/debug/ParserTokenEvent.java",
182+
"antlr/debug/ParserTokenListener.java",
183+
"antlr/debug/ParseTreeDebugParser.java",
184+
"antlr/debug/SemanticPredicateAdapter.java",
185+
"antlr/debug/SemanticPredicateEvent.java",
186+
"antlr/debug/SemanticPredicateListener.java",
187+
"antlr/debug/SyntacticPredicateAdapter.java",
188+
"antlr/debug/SyntacticPredicateEvent.java",
189+
"antlr/debug/SyntacticPredicateListener.java",
190+
"antlr/debug/TraceAdapter.java",
191+
"antlr/debug/TraceEvent.java",
192+
"antlr/debug/TraceListener.java",
193+
"antlr/debug/Tracer.java",
194+
"antlr/debug/misc/ASTFrame.java",
195+
"antlr/debug/misc/JTreeASTModel.java",
196+
"antlr/debug/misc/JTreeASTPanel.java",
197+
"antlr/preprocessor/Grammar.java",
198+
"antlr/preprocessor/GrammarFile.java",
199+
"antlr/preprocessor/Hierarchy.java",
200+
"antlr/preprocessor/Option.java",
201+
"antlr/preprocessor/Preprocessor.java",
202+
"antlr/preprocessor/PreprocessorLexer.java",
203+
"antlr/preprocessor/PreprocessorTokenTypes.java",
204+
"antlr/preprocessor/Rule.java",
205+
"antlr/preprocessor/Tool.java",
206+
],
207+
javacopts = [
208+
"-Xep:EqualsHashCode:OFF",
209+
"-Xep:EqualsIncompatibleType:OFF",
210+
],
8211
)
9212

10213
java_binary(
11214
name = "antlr_tool",
12215
main_class = "antlr.Tool",
13216
runtime_deps = [
14-
":libantlr",
217+
":antlr",
15218
]
16219
)

0 commit comments

Comments
 (0)