From f83b83c6641d930af04c40b8ba97806d508a4922 Mon Sep 17 00:00:00 2001 From: tangttangtang <206374282@qq.com> Date: Mon, 23 Mar 2026 18:27:36 +0800 Subject: [PATCH] =?UTF-8?q?Lab1=20=E4=BF=AE=E6=94=B9=E7=89=88=EF=BC=88?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E6=B5=8B=E8=AF=95=E8=84=9A=E6=9C=AC=E5=B7=B2?= =?UTF-8?q?=E5=A4=8D=E5=88=B6=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/lab1_build_test.sh | 93 + scripts/verify_asm.sh | 0 scripts/verify_ir.sh | 0 src/antlr4/.antlr/SysYBaseListener.java | 255 ++ src/antlr4/.antlr/SysYLexer.java | 358 +++ src/antlr4/.antlr/SysYListener.java | 197 ++ src/antlr4/.antlr/SysYParser.java | 2707 +++++++++++++++++ src/antlr4/SysY.g4 | 252 +- .../runtime/src/ANTLRErrorListener.h | 0 .../runtime/src/ANTLRErrorStrategy.h | 0 .../runtime/src/ANTLRFileStream.cpp | 0 .../runtime/src/ANTLRFileStream.h | 0 .../runtime/src/ANTLRInputStream.cpp | 0 .../runtime/src/ANTLRInputStream.h | 0 .../runtime/src/BailErrorStrategy.cpp | 0 .../runtime/src/BailErrorStrategy.h | 0 .../runtime/src/BaseErrorListener.cpp | 0 .../runtime/src/BaseErrorListener.h | 0 .../runtime/src/BufferedTokenStream.cpp | 0 .../runtime/src/BufferedTokenStream.h | 0 .../runtime/src/CharStream.cpp | 0 .../runtime/src/CharStream.h | 0 .../runtime/src/CommonToken.cpp | 0 .../runtime/src/CommonToken.h | 0 .../runtime/src/CommonTokenFactory.cpp | 0 .../runtime/src/CommonTokenFactory.h | 0 .../runtime/src/CommonTokenStream.cpp | 0 .../runtime/src/CommonTokenStream.h | 0 .../runtime/src/ConsoleErrorListener.cpp | 0 .../runtime/src/ConsoleErrorListener.h | 0 .../runtime/src/DefaultErrorStrategy.cpp | 0 .../runtime/src/DefaultErrorStrategy.h | 0 .../runtime/src/DiagnosticErrorListener.cpp | 0 .../runtime/src/DiagnosticErrorListener.h | 0 .../runtime/src/FailedPredicateException.cpp | 0 .../runtime/src/FailedPredicateException.h | 0 .../runtime/src/InputMismatchException.cpp | 0 .../runtime/src/InputMismatchException.h | 0 .../runtime/src/IntStream.cpp | 0 .../runtime/src/IntStream.h | 0 .../runtime/src/InterpreterRuleContext.cpp | 0 .../runtime/src/InterpreterRuleContext.h | 0 .../runtime/src/Lexer.cpp | 0 .../antlr4-runtime-4.13.2/runtime/src/Lexer.h | 0 .../runtime/src/LexerInterpreter.cpp | 0 .../runtime/src/LexerInterpreter.h | 0 .../runtime/src/LexerNoViableAltException.cpp | 0 .../runtime/src/LexerNoViableAltException.h | 0 .../runtime/src/ListTokenSource.cpp | 0 .../runtime/src/ListTokenSource.h | 0 .../runtime/src/NoViableAltException.cpp | 0 .../runtime/src/NoViableAltException.h | 0 .../runtime/src/Parser.cpp | 0 .../runtime/src/Parser.h | 0 .../runtime/src/ParserInterpreter.cpp | 0 .../runtime/src/ParserInterpreter.h | 0 .../runtime/src/ParserRuleContext.cpp | 0 .../runtime/src/ParserRuleContext.h | 0 .../runtime/src/ProxyErrorListener.cpp | 0 .../runtime/src/ProxyErrorListener.h | 0 .../runtime/src/RecognitionException.cpp | 0 .../runtime/src/RecognitionException.h | 0 .../runtime/src/Recognizer.cpp | 0 .../runtime/src/Recognizer.h | 0 .../runtime/src/RuleContext.cpp | 0 .../runtime/src/RuleContext.h | 0 .../runtime/src/RuleContextWithAltNum.cpp | 0 .../runtime/src/RuleContextWithAltNum.h | 0 .../runtime/src/RuntimeMetaData.cpp | 0 .../runtime/src/RuntimeMetaData.h | 0 .../antlr4-runtime-4.13.2/runtime/src/Token.h | 0 .../runtime/src/TokenFactory.h | 0 .../runtime/src/TokenSource.h | 0 .../runtime/src/TokenStream.cpp | 0 .../runtime/src/TokenStream.h | 0 .../runtime/src/TokenStreamRewriter.cpp | 0 .../runtime/src/TokenStreamRewriter.h | 0 .../runtime/src/UnbufferedCharStream.cpp | 0 .../runtime/src/UnbufferedCharStream.h | 0 .../runtime/src/UnbufferedTokenStream.cpp | 0 .../runtime/src/UnbufferedTokenStream.h | 0 .../runtime/src/Vocabulary.cpp | 0 .../runtime/src/Vocabulary.h | 0 .../runtime/src/WritableToken.h | 0 .../runtime/src/atn/ATN.cpp | 0 .../runtime/src/atn/ATN.h | 0 .../runtime/src/atn/ATNConfig.cpp | 0 .../runtime/src/atn/ATNConfig.h | 0 .../runtime/src/atn/ATNConfigSet.cpp | 0 .../runtime/src/atn/ATNConfigSet.h | 0 .../src/atn/ATNDeserializationOptions.cpp | 0 .../src/atn/ATNDeserializationOptions.h | 0 .../runtime/src/atn/ATNDeserializer.cpp | 0 .../runtime/src/atn/ATNDeserializer.h | 0 .../runtime/src/atn/ATNSimulator.cpp | 0 .../runtime/src/atn/ATNSimulator.h | 0 .../runtime/src/atn/ATNState.cpp | 0 .../runtime/src/atn/ATNState.h | 0 .../runtime/src/atn/ATNType.h | 0 .../runtime/src/atn/ActionTransition.cpp | 0 .../runtime/src/atn/ActionTransition.h | 0 .../runtime/src/atn/AmbiguityInfo.cpp | 0 .../runtime/src/atn/AmbiguityInfo.h | 0 .../src/atn/ArrayPredictionContext.cpp | 0 .../runtime/src/atn/ArrayPredictionContext.h | 0 .../runtime/src/atn/AtomTransition.cpp | 0 .../runtime/src/atn/AtomTransition.h | 0 .../runtime/src/atn/BasicBlockStartState.h | 0 .../runtime/src/atn/BasicState.h | 0 .../runtime/src/atn/BlockEndState.h | 0 .../runtime/src/atn/BlockStartState.h | 0 .../src/atn/ContextSensitivityInfo.cpp | 0 .../runtime/src/atn/ContextSensitivityInfo.h | 0 .../runtime/src/atn/DecisionEventInfo.cpp | 0 .../runtime/src/atn/DecisionEventInfo.h | 0 .../runtime/src/atn/DecisionInfo.cpp | 0 .../runtime/src/atn/DecisionInfo.h | 0 .../runtime/src/atn/DecisionState.cpp | 0 .../runtime/src/atn/DecisionState.h | 0 .../runtime/src/atn/EpsilonTransition.cpp | 0 .../runtime/src/atn/EpsilonTransition.h | 0 .../runtime/src/atn/ErrorInfo.cpp | 0 .../runtime/src/atn/ErrorInfo.h | 0 .../runtime/src/atn/LL1Analyzer.cpp | 0 .../runtime/src/atn/LL1Analyzer.h | 0 .../runtime/src/atn/LexerATNConfig.cpp | 0 .../runtime/src/atn/LexerATNConfig.h | 0 .../runtime/src/atn/LexerATNSimulator.cpp | 0 .../runtime/src/atn/LexerATNSimulator.h | 0 .../runtime/src/atn/LexerAction.h | 0 .../runtime/src/atn/LexerActionExecutor.cpp | 0 .../runtime/src/atn/LexerActionExecutor.h | 0 .../runtime/src/atn/LexerActionType.h | 0 .../runtime/src/atn/LexerChannelAction.cpp | 0 .../runtime/src/atn/LexerChannelAction.h | 0 .../runtime/src/atn/LexerCustomAction.cpp | 0 .../runtime/src/atn/LexerCustomAction.h | 0 .../src/atn/LexerIndexedCustomAction.cpp | 0 .../src/atn/LexerIndexedCustomAction.h | 0 .../runtime/src/atn/LexerModeAction.cpp | 0 .../runtime/src/atn/LexerModeAction.h | 0 .../runtime/src/atn/LexerMoreAction.cpp | 0 .../runtime/src/atn/LexerMoreAction.h | 0 .../runtime/src/atn/LexerPopModeAction.cpp | 0 .../runtime/src/atn/LexerPopModeAction.h | 0 .../runtime/src/atn/LexerPushModeAction.cpp | 0 .../runtime/src/atn/LexerPushModeAction.h | 0 .../runtime/src/atn/LexerSkipAction.cpp | 0 .../runtime/src/atn/LexerSkipAction.h | 0 .../runtime/src/atn/LexerTypeAction.cpp | 0 .../runtime/src/atn/LexerTypeAction.h | 0 .../runtime/src/atn/LookaheadEventInfo.cpp | 0 .../runtime/src/atn/LookaheadEventInfo.h | 0 .../runtime/src/atn/LoopEndState.h | 0 .../runtime/src/atn/NotSetTransition.cpp | 0 .../runtime/src/atn/NotSetTransition.h | 0 .../runtime/src/atn/OrderedATNConfigSet.cpp | 0 .../runtime/src/atn/OrderedATNConfigSet.h | 0 .../runtime/src/atn/ParseInfo.cpp | 0 .../runtime/src/atn/ParseInfo.h | 0 .../runtime/src/atn/ParserATNSimulator.cpp | 0 .../runtime/src/atn/ParserATNSimulator.h | 0 .../runtime/src/atn/PlusBlockStartState.h | 0 .../runtime/src/atn/PlusLoopbackState.h | 0 .../src/atn/PrecedencePredicateTransition.cpp | 0 .../src/atn/PrecedencePredicateTransition.h | 0 .../runtime/src/atn/PredicateEvalInfo.cpp | 0 .../runtime/src/atn/PredicateEvalInfo.h | 0 .../runtime/src/atn/PredicateTransition.cpp | 0 .../runtime/src/atn/PredicateTransition.h | 0 .../runtime/src/atn/PredictionContext.cpp | 0 .../runtime/src/atn/PredictionContext.h | 0 .../runtime/src/atn/PredictionMode.cpp | 0 .../runtime/src/atn/PredictionMode.h | 0 .../runtime/src/atn/ProfilingATNSimulator.cpp | 0 .../runtime/src/atn/ProfilingATNSimulator.h | 0 .../runtime/src/atn/RangeTransition.cpp | 0 .../runtime/src/atn/RangeTransition.h | 0 .../runtime/src/atn/RuleStartState.h | 0 .../runtime/src/atn/RuleStopState.h | 0 .../runtime/src/atn/RuleTransition.cpp | 0 .../runtime/src/atn/RuleTransition.h | 0 .../runtime/src/atn/SemanticContext.cpp | 0 .../runtime/src/atn/SemanticContext.h | 0 .../runtime/src/atn/SetTransition.cpp | 0 .../runtime/src/atn/SetTransition.h | 0 .../src/atn/SingletonPredictionContext.cpp | 0 .../src/atn/SingletonPredictionContext.h | 0 .../runtime/src/atn/StarBlockStartState.h | 0 .../runtime/src/atn/StarLoopEntryState.h | 0 .../runtime/src/atn/StarLoopbackState.cpp | 0 .../runtime/src/atn/StarLoopbackState.h | 0 .../runtime/src/atn/TokensStartState.h | 0 .../runtime/src/atn/Transition.cpp | 0 .../runtime/src/atn/Transition.h | 0 .../runtime/src/atn/WildcardTransition.cpp | 0 .../runtime/src/atn/WildcardTransition.h | 0 .../runtime/src/dfa/DFA.cpp | 0 .../runtime/src/dfa/DFA.h | 0 .../runtime/src/dfa/DFASerializer.cpp | 0 .../runtime/src/dfa/DFASerializer.h | 0 .../runtime/src/dfa/DFAState.cpp | 0 .../runtime/src/dfa/DFAState.h | 0 .../runtime/src/dfa/LexerDFASerializer.cpp | 0 .../runtime/src/dfa/LexerDFASerializer.h | 0 .../src/misc/InterpreterDataReader.cpp | 0 .../runtime/src/misc/InterpreterDataReader.h | 0 .../runtime/src/misc/Interval.cpp | 0 .../runtime/src/misc/Interval.h | 0 .../runtime/src/misc/IntervalSet.cpp | 0 .../runtime/src/misc/IntervalSet.h | 0 .../runtime/src/misc/MurmurHash.cpp | 0 .../runtime/src/misc/MurmurHash.h | 0 .../runtime/src/misc/Predicate.h | 0 .../runtime/src/support/CPPUtils.cpp | 0 .../src/tree/AbstractParseTreeVisitor.h | 0 .../runtime/src/tree/ErrorNode.h | 0 .../runtime/src/tree/ErrorNodeImpl.cpp | 0 .../runtime/src/tree/ErrorNodeImpl.h | 0 .../runtime/src/tree/ParseTree.cpp | 0 .../runtime/src/tree/ParseTree.h | 0 .../runtime/src/tree/ParseTreeListener.h | 0 .../runtime/src/tree/ParseTreeProperty.h | 0 .../runtime/src/tree/ParseTreeVisitor.h | 0 .../runtime/src/tree/ParseTreeWalker.cpp | 0 .../runtime/src/tree/ParseTreeWalker.h | 0 .../runtime/src/tree/TerminalNode.h | 0 .../runtime/src/tree/TerminalNodeImpl.cpp | 0 .../runtime/src/tree/TerminalNodeImpl.h | 0 .../runtime/src/tree/Trees.cpp | 0 .../runtime/src/tree/Trees.h | 0 .../runtime/src/tree/pattern/Chunk.h | 0 .../src/tree/pattern/ParseTreeMatch.cpp | 0 .../runtime/src/tree/pattern/ParseTreeMatch.h | 0 .../src/tree/pattern/ParseTreePattern.cpp | 0 .../src/tree/pattern/ParseTreePattern.h | 0 .../tree/pattern/ParseTreePatternMatcher.cpp | 0 .../tree/pattern/ParseTreePatternMatcher.h | 0 .../runtime/src/tree/pattern/RuleTagToken.cpp | 0 .../runtime/src/tree/pattern/RuleTagToken.h | 0 .../runtime/src/tree/pattern/TagChunk.cpp | 0 .../runtime/src/tree/pattern/TagChunk.h | 0 .../runtime/src/tree/pattern/TextChunk.cpp | 0 .../runtime/src/tree/pattern/TextChunk.h | 0 .../src/tree/pattern/TokenTagToken.cpp | 0 .../runtime/src/tree/pattern/TokenTagToken.h | 0 .../runtime/src/tree/xpath/XPath.cpp | 0 .../runtime/src/tree/xpath/XPath.h | 0 .../runtime/src/tree/xpath/XPathElement.cpp | 0 .../runtime/src/tree/xpath/XPathElement.h | 0 .../tree/xpath/XPathLexerErrorListener.cpp | 0 .../src/tree/xpath/XPathLexerErrorListener.h | 0 .../tree/xpath/XPathRuleAnywhereElement.cpp | 0 .../src/tree/xpath/XPathRuleAnywhereElement.h | 0 .../src/tree/xpath/XPathRuleElement.cpp | 0 .../runtime/src/tree/xpath/XPathRuleElement.h | 0 .../tree/xpath/XPathTokenAnywhereElement.cpp | 0 .../tree/xpath/XPathTokenAnywhereElement.h | 0 .../src/tree/xpath/XPathTokenElement.cpp | 0 .../src/tree/xpath/XPathTokenElement.h | 0 .../xpath/XPathWildcardAnywhereElement.cpp | 0 .../tree/xpath/XPathWildcardAnywhereElement.h | 0 .../src/tree/xpath/XPathWildcardElement.cpp | 0 .../src/tree/xpath/XPathWildcardElement.h | 0 264 files changed, 3777 insertions(+), 85 deletions(-) create mode 100644 scripts/lab1_build_test.sh mode change 100755 => 100644 scripts/verify_asm.sh mode change 100755 => 100644 scripts/verify_ir.sh create mode 100644 src/antlr4/.antlr/SysYBaseListener.java create mode 100644 src/antlr4/.antlr/SysYLexer.java create mode 100644 src/antlr4/.antlr/SysYListener.java create mode 100644 src/antlr4/.antlr/SysYParser.java mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/ANTLRErrorListener.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/ANTLRErrorStrategy.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/ANTLRFileStream.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/ANTLRFileStream.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/ANTLRInputStream.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/ANTLRInputStream.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/BailErrorStrategy.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/BailErrorStrategy.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/BaseErrorListener.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/BaseErrorListener.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/BufferedTokenStream.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/BufferedTokenStream.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/CharStream.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/CharStream.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/CommonToken.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/CommonToken.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/CommonTokenFactory.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/CommonTokenFactory.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/CommonTokenStream.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/CommonTokenStream.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/ConsoleErrorListener.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/ConsoleErrorListener.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/DefaultErrorStrategy.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/DefaultErrorStrategy.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/DiagnosticErrorListener.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/DiagnosticErrorListener.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/FailedPredicateException.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/FailedPredicateException.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/InputMismatchException.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/InputMismatchException.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/IntStream.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/IntStream.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/InterpreterRuleContext.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/InterpreterRuleContext.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/Lexer.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/Lexer.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/LexerInterpreter.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/LexerInterpreter.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/LexerNoViableAltException.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/LexerNoViableAltException.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/ListTokenSource.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/ListTokenSource.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/NoViableAltException.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/NoViableAltException.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/Parser.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/Parser.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/ParserInterpreter.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/ParserInterpreter.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/ParserRuleContext.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/ParserRuleContext.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/ProxyErrorListener.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/ProxyErrorListener.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/RecognitionException.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/RecognitionException.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/Recognizer.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/Recognizer.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/RuleContext.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/RuleContext.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/RuleContextWithAltNum.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/RuleContextWithAltNum.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/RuntimeMetaData.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/RuntimeMetaData.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/Token.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/TokenFactory.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/TokenSource.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/TokenStream.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/TokenStream.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/TokenStreamRewriter.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/TokenStreamRewriter.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/UnbufferedCharStream.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/UnbufferedCharStream.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/UnbufferedTokenStream.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/UnbufferedTokenStream.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/Vocabulary.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/Vocabulary.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/WritableToken.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATN.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATN.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNConfig.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNConfig.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNConfigSet.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNConfigSet.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNDeserializationOptions.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNDeserializationOptions.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNDeserializer.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNDeserializer.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNSimulator.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNSimulator.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNState.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNState.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNType.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ActionTransition.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ActionTransition.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/AmbiguityInfo.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/AmbiguityInfo.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ArrayPredictionContext.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ArrayPredictionContext.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/AtomTransition.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/AtomTransition.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/BasicBlockStartState.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/BasicState.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/BlockEndState.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/BlockStartState.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ContextSensitivityInfo.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ContextSensitivityInfo.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/DecisionEventInfo.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/DecisionEventInfo.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/DecisionInfo.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/DecisionInfo.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/DecisionState.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/DecisionState.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/EpsilonTransition.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/EpsilonTransition.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ErrorInfo.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ErrorInfo.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LL1Analyzer.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LL1Analyzer.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerATNConfig.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerATNConfig.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerATNSimulator.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerATNSimulator.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerAction.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerActionExecutor.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerActionExecutor.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerActionType.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerChannelAction.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerChannelAction.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerCustomAction.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerCustomAction.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerIndexedCustomAction.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerIndexedCustomAction.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerModeAction.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerModeAction.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerMoreAction.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerMoreAction.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerPopModeAction.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerPopModeAction.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerPushModeAction.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerPushModeAction.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerSkipAction.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerSkipAction.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerTypeAction.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerTypeAction.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LookaheadEventInfo.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LookaheadEventInfo.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/LoopEndState.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/NotSetTransition.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/NotSetTransition.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/OrderedATNConfigSet.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/OrderedATNConfigSet.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ParseInfo.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ParseInfo.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ParserATNSimulator.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ParserATNSimulator.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/PlusBlockStartState.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/PlusLoopbackState.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/PrecedencePredicateTransition.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/PrecedencePredicateTransition.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/PredicateEvalInfo.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/PredicateEvalInfo.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/PredicateTransition.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/PredicateTransition.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/PredictionContext.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/PredictionContext.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/PredictionMode.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/PredictionMode.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ProfilingATNSimulator.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/ProfilingATNSimulator.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/RangeTransition.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/RangeTransition.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/RuleStartState.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/RuleStopState.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/RuleTransition.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/RuleTransition.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/SemanticContext.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/SemanticContext.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/SetTransition.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/SetTransition.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/SingletonPredictionContext.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/SingletonPredictionContext.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/StarBlockStartState.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/StarLoopEntryState.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/StarLoopbackState.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/StarLoopbackState.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/TokensStartState.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/Transition.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/Transition.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/WildcardTransition.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/atn/WildcardTransition.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/dfa/DFA.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/dfa/DFA.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/dfa/DFASerializer.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/dfa/DFASerializer.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/dfa/DFAState.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/dfa/DFAState.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/dfa/LexerDFASerializer.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/dfa/LexerDFASerializer.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/misc/InterpreterDataReader.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/misc/InterpreterDataReader.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/misc/Interval.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/misc/Interval.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/misc/IntervalSet.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/misc/IntervalSet.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/misc/MurmurHash.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/misc/MurmurHash.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/misc/Predicate.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/support/CPPUtils.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/AbstractParseTreeVisitor.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/ErrorNode.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/ErrorNodeImpl.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/ErrorNodeImpl.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/ParseTree.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/ParseTree.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/ParseTreeListener.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/ParseTreeProperty.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/ParseTreeVisitor.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/ParseTreeWalker.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/ParseTreeWalker.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/TerminalNode.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/TerminalNodeImpl.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/TerminalNodeImpl.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/Trees.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/Trees.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/Chunk.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/ParseTreeMatch.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/ParseTreeMatch.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/ParseTreePattern.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/ParseTreePattern.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/ParseTreePatternMatcher.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/ParseTreePatternMatcher.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/RuleTagToken.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/RuleTagToken.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/TagChunk.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/TagChunk.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/TextChunk.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/TextChunk.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/TokenTagToken.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/TokenTagToken.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPath.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPath.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathElement.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathElement.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathLexerErrorListener.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathLexerErrorListener.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathRuleAnywhereElement.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathRuleAnywhereElement.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathRuleElement.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathRuleElement.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathTokenAnywhereElement.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathTokenAnywhereElement.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathTokenElement.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathTokenElement.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathWildcardAnywhereElement.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathWildcardAnywhereElement.h mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathWildcardElement.cpp mode change 100755 => 100644 third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathWildcardElement.h diff --git a/scripts/lab1_build_test.sh b/scripts/lab1_build_test.sh new file mode 100644 index 0000000..a18944e --- /dev/null +++ b/scripts/lab1_build_test.sh @@ -0,0 +1,93 @@ +#!/usr/bin/env bash +# Lab1 自动化构建 + 解析测评脚本 +# 用法:bash scripts/lab1_build_test.sh [测试目录] +# 默认测试目录:test/test_case/functional test/test_case/performance +# +# 退出码: +# 0 全部用例解析通过 +# 1 存在解析失败用例 + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" +COMPILER="$REPO_ROOT/build/bin/compiler" +ANTLR_JAR="$REPO_ROOT/third_party/antlr-4.13.2-complete.jar" + +# 颜色输出 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' + +# ─── Step 1:生成 Lexer/Parser ──────────────────────────────────────────────── +echo "==> [1/3] 生成 ANTLR Lexer/Parser ..." +mkdir -p "$REPO_ROOT/build/generated/antlr4" +java -jar "$ANTLR_JAR" \ + -Dlanguage=Cpp \ + -visitor -no-listener \ + -Xexact-output-dir \ + -o "$REPO_ROOT/build/generated/antlr4" \ + "$REPO_ROOT/src/antlr4/SysY.g4" +echo " Lexer/Parser 生成完毕" + +# ─── Step 2:CMake 构建(禁用后端)──────────────────────────────────────────── +echo "==> [2/3] CMake 构建(UNABLE_BACKEND=ON)..." +cmake -S "$REPO_ROOT" -B "$REPO_ROOT/build" \ + -DCMAKE_BUILD_TYPE=Release \ + -DUNABLE_BACKEND=ON \ + -DCMAKE_EXPORT_COMPILE_COMMANDS=OFF \ + > /dev/null +cmake --build "$REPO_ROOT/build" -j "$(nproc)" 2>&1 | grep -E "error:|warning:|Built target|Linking" || true +echo " 构建完毕:$COMPILER" + +# ─── Step 3:批量解析测试 ───────────────────────────────────────────────────── +echo "==> [3/3] 批量解析测试 ..." + +# 收集测试目录 +if [[ $# -ge 1 ]]; then + TEST_DIRS=("$@") +else + TEST_DIRS=( + "$REPO_ROOT/test/test_case/functional" + "$REPO_ROOT/test/test_case/performance" + ) +fi + +PASS=0 +FAIL=0 +FAIL_LIST=() + +for TEST_DIR in "${TEST_DIRS[@]}"; do + if [[ ! -d "$TEST_DIR" ]]; then + echo -e " ${YELLOW}警告:目录不存在,跳过:$TEST_DIR${NC}" + continue + fi + + while IFS= read -r -d '' sy_file; do + rel="$(realpath --relative-to="$REPO_ROOT" "$sy_file")" + if "$COMPILER" --emit-parse-tree "$sy_file" > /dev/null 2>&1; then + echo -e " ${GREEN}PASS${NC} $rel" + ((PASS++)) || true + else + echo -e " ${RED}FAIL${NC} $rel" + FAIL_LIST+=("$rel") + ((FAIL++)) || true + fi + done < <(find "$TEST_DIR" -name "*.sy" -print0 | sort -z) +done + +# ─── 汇总 ───────────────────────────────────────────────────────────────────── +echo "" +echo "──────────────────────────────────────────" +echo -e " 测试结果:${GREEN}${PASS} PASS${NC} / ${RED}${FAIL} FAIL${NC} / 总计 $((PASS + FAIL))" +if [[ ${#FAIL_LIST[@]} -gt 0 ]]; then + echo "" + echo " 失败用例:" + for f in "${FAIL_LIST[@]}"; do + echo -e " ${RED}- $f${NC}" + done +fi +echo "──────────────────────────────────────────" + +[[ $FAIL -eq 0 ]] diff --git a/scripts/verify_asm.sh b/scripts/verify_asm.sh old mode 100755 new mode 100644 diff --git a/scripts/verify_ir.sh b/scripts/verify_ir.sh old mode 100755 new mode 100644 diff --git a/src/antlr4/.antlr/SysYBaseListener.java b/src/antlr4/.antlr/SysYBaseListener.java new file mode 100644 index 0000000..bda7548 --- /dev/null +++ b/src/antlr4/.antlr/SysYBaseListener.java @@ -0,0 +1,255 @@ +// Generated from //wsl.localhost/Ubuntu/home/hw/nudt-compiler-cpp/src/antlr4/SysY.g4 by ANTLR 4.13.1 + +import org.antlr.v4.runtime.ParserRuleContext; +import org.antlr.v4.runtime.tree.ErrorNode; +import org.antlr.v4.runtime.tree.TerminalNode; + +/** + * This class provides an empty implementation of {@link SysYListener}, + * which can be extended to create a listener which only needs to handle a subset + * of the available methods. + */ +@SuppressWarnings("CheckReturnValue") +public class SysYBaseListener implements SysYListener { + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCompUnit(SysYParser.CompUnitContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCompUnit(SysYParser.CompUnitContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDecl(SysYParser.DeclContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDecl(SysYParser.DeclContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBtype(SysYParser.BtypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBtype(SysYParser.BtypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterVarDef(SysYParser.VarDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitVarDef(SysYParser.VarDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInitValue(SysYParser.InitValueContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInitValue(SysYParser.InitValueContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFuncDef(SysYParser.FuncDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFuncDef(SysYParser.FuncDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFuncType(SysYParser.FuncTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFuncType(SysYParser.FuncTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBlockStmt(SysYParser.BlockStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBlockStmt(SysYParser.BlockStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBlockItem(SysYParser.BlockItemContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBlockItem(SysYParser.BlockItemContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStmt(SysYParser.StmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStmt(SysYParser.StmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterReturnStmt(SysYParser.ReturnStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitReturnStmt(SysYParser.ReturnStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterVarExp(SysYParser.VarExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitVarExp(SysYParser.VarExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNumberExp(SysYParser.NumberExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNumberExp(SysYParser.NumberExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterParenExp(SysYParser.ParenExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitParenExp(SysYParser.ParenExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAdditiveExp(SysYParser.AdditiveExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAdditiveExp(SysYParser.AdditiveExpContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterVar(SysYParser.VarContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitVar(SysYParser.VarContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLValue(SysYParser.LValueContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLValue(SysYParser.LValueContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterNumber(SysYParser.NumberContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitNumber(SysYParser.NumberContext ctx) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEveryRule(ParserRuleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEveryRule(ParserRuleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void visitTerminal(TerminalNode node) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void visitErrorNode(ErrorNode node) { } +} \ No newline at end of file diff --git a/src/antlr4/.antlr/SysYLexer.java b/src/antlr4/.antlr/SysYLexer.java new file mode 100644 index 0000000..804dcc1 --- /dev/null +++ b/src/antlr4/.antlr/SysYLexer.java @@ -0,0 +1,358 @@ +// Generated from //wsl.localhost/Ubuntu/home/hw/nudt-compiler-cpp/src/antlr4/SysY.g4 by ANTLR 4.13.1 +import org.antlr.v4.runtime.Lexer; +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.Token; +import org.antlr.v4.runtime.TokenStream; +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.dfa.DFA; +import org.antlr.v4.runtime.misc.*; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue", "this-escape"}) +public class SysYLexer extends Lexer { + static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); } + + protected static final DFA[] _decisionToDFA; + protected static final PredictionContextCache _sharedContextCache = + new PredictionContextCache(); + public static final int + CONST=1, INT=2, FLOAT=3, VOID=4, IF=5, ELSE=6, WHILE=7, BREAK=8, CONTINUE=9, + RETURN=10, ADD=11, SUB=12, MUL=13, DIV=14, MOD=15, ASSIGN=16, EQ=17, NE=18, + LT=19, LE=20, GT=21, GE=22, NOT=23, AND=24, OR=25, LPAREN=26, RPAREN=27, + LBRACK=28, RBRACK=29, LBRACE=30, RBRACE=31, COMMA=32, SEMI=33, IDENT=34, + ILITERAL=35, FLITERAL=36, WS=37, LINE_COMMENT=38, BLOCK_COMMENT=39; + public static String[] channelNames = { + "DEFAULT_TOKEN_CHANNEL", "HIDDEN" + }; + + public static String[] modeNames = { + "DEFAULT_MODE" + }; + + private static String[] makeRuleNames() { + return new String[] { + "CONST", "INT", "FLOAT", "VOID", "IF", "ELSE", "WHILE", "BREAK", "CONTINUE", + "RETURN", "ADD", "SUB", "MUL", "DIV", "MOD", "ASSIGN", "EQ", "NE", "LT", + "LE", "GT", "GE", "NOT", "AND", "OR", "LPAREN", "RPAREN", "LBRACK", "RBRACK", + "LBRACE", "RBRACE", "COMMA", "SEMI", "IDENT", "DIGIT", "NON_ZERO_DIGIT", + "OCT_DIGIT", "HEX_DIGIT", "DEC_INTEGER", "OCT_INTEGER", "HEX_INTEGER", + "DEC_FRACTION", "DEC_EXPONENT", "DEC_FLOAT", "HEX_FRACTION", "BIN_EXPONENT", + "HEX_FLOAT", "ILITERAL", "FLITERAL", "WS", "LINE_COMMENT", "BLOCK_COMMENT" + }; + } + public static final String[] ruleNames = makeRuleNames(); + + private static String[] makeLiteralNames() { + return new String[] { + null, "'const'", "'int'", "'float'", "'void'", "'if'", "'else'", "'while'", + "'break'", "'continue'", "'return'", "'+'", "'-'", "'*'", "'/'", "'%'", + "'='", "'=='", "'!='", "'<'", "'<='", "'>'", "'>='", "'!'", "'&&'", "'||'", + "'('", "')'", "'['", "']'", "'{'", "'}'", "','", "';'" + }; + } + private static final String[] _LITERAL_NAMES = makeLiteralNames(); + private static String[] makeSymbolicNames() { + return new String[] { + null, "CONST", "INT", "FLOAT", "VOID", "IF", "ELSE", "WHILE", "BREAK", + "CONTINUE", "RETURN", "ADD", "SUB", "MUL", "DIV", "MOD", "ASSIGN", "EQ", + "NE", "LT", "LE", "GT", "GE", "NOT", "AND", "OR", "LPAREN", "RPAREN", + "LBRACK", "RBRACK", "LBRACE", "RBRACE", "COMMA", "SEMI", "IDENT", "ILITERAL", + "FLITERAL", "WS", "LINE_COMMENT", "BLOCK_COMMENT" + }; + } + private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); + public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); + + /** + * @deprecated Use {@link #VOCABULARY} instead. + */ + @Deprecated + public static final String[] tokenNames; + static { + tokenNames = new String[_SYMBOLIC_NAMES.length]; + for (int i = 0; i < tokenNames.length; i++) { + tokenNames[i] = VOCABULARY.getLiteralName(i); + if (tokenNames[i] == null) { + tokenNames[i] = VOCABULARY.getSymbolicName(i); + } + + if (tokenNames[i] == null) { + tokenNames[i] = ""; + } + } + } + + @Override + @Deprecated + public String[] getTokenNames() { + return tokenNames; + } + + @Override + + public Vocabulary getVocabulary() { + return VOCABULARY; + } + + + public SysYLexer(CharStream input) { + super(input); + _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); + } + + @Override + public String getGrammarFileName() { return "SysY.g4"; } + + @Override + public String[] getRuleNames() { return ruleNames; } + + @Override + public String getSerializedATN() { return _serializedATN; } + + @Override + public String[] getChannelNames() { return channelNames; } + + @Override + public String[] getModeNames() { return modeNames; } + + @Override + public ATN getATN() { return _ATN; } + + public static final String _serializedATN = + "\u0004\u0000\'\u0171\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002\u0001"+ + "\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004"+ + "\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007"+ + "\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b"+ + "\u0007\u000b\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002"+ + "\u000f\u0007\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002"+ + "\u0012\u0007\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002"+ + "\u0015\u0007\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002"+ + "\u0018\u0007\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002"+ + "\u001b\u0007\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002"+ + "\u001e\u0007\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007"+ + "!\u0002\"\u0007\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007"+ + "&\u0002\'\u0007\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007"+ + "+\u0002,\u0007,\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u0007"+ + "0\u00021\u00071\u00022\u00072\u00023\u00073\u0001\u0000\u0001\u0000\u0001"+ + "\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0001"+ + "\u0001\u0001\u0001\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001"+ + "\u0002\u0001\u0002\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001"+ + "\u0003\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005\u0001"+ + "\u0005\u0001\u0005\u0001\u0005\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+ + "\u0006\u0001\u0006\u0001\u0006\u0001\u0007\u0001\u0007\u0001\u0007\u0001"+ + "\u0007\u0001\u0007\u0001\u0007\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b"+ + "\u0001\b\u0001\b\u0001\b\u0001\b\u0001\t\u0001\t\u0001\t\u0001\t\u0001"+ + "\t\u0001\t\u0001\t\u0001\n\u0001\n\u0001\u000b\u0001\u000b\u0001\f\u0001"+ + "\f\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f\u0001"+ + "\u0010\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0001\u0011\u0001"+ + "\u0012\u0001\u0012\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0014\u0001"+ + "\u0014\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0016\u0001\u0016\u0001"+ + "\u0017\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0018\u0001"+ + "\u0019\u0001\u0019\u0001\u001a\u0001\u001a\u0001\u001b\u0001\u001b\u0001"+ + "\u001c\u0001\u001c\u0001\u001d\u0001\u001d\u0001\u001e\u0001\u001e\u0001"+ + "\u001f\u0001\u001f\u0001 \u0001 \u0001!\u0001!\u0005!\u00d9\b!\n!\f!\u00dc"+ + "\t!\u0001\"\u0001\"\u0001#\u0001#\u0001$\u0001$\u0001%\u0001%\u0001&\u0001"+ + "&\u0005&\u00e8\b&\n&\f&\u00eb\t&\u0001\'\u0001\'\u0005\'\u00ef\b\'\n\'"+ + "\f\'\u00f2\t\'\u0001(\u0001(\u0001(\u0004(\u00f7\b(\u000b(\f(\u00f8\u0001"+ + ")\u0004)\u00fc\b)\u000b)\f)\u00fd\u0001)\u0001)\u0005)\u0102\b)\n)\f)"+ + "\u0105\t)\u0001)\u0001)\u0004)\u0109\b)\u000b)\f)\u010a\u0003)\u010d\b"+ + ")\u0001*\u0001*\u0003*\u0111\b*\u0001*\u0004*\u0114\b*\u000b*\f*\u0115"+ + "\u0001+\u0001+\u0003+\u011a\b+\u0001+\u0001+\u0001+\u0003+\u011f\b+\u0001"+ + ",\u0005,\u0122\b,\n,\f,\u0125\t,\u0001,\u0001,\u0004,\u0129\b,\u000b,"+ + "\f,\u012a\u0001,\u0004,\u012e\b,\u000b,\f,\u012f\u0001,\u0001,\u0003,"+ + "\u0134\b,\u0001-\u0001-\u0003-\u0138\b-\u0001-\u0004-\u013b\b-\u000b-"+ + "\f-\u013c\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0003"+ + ".\u0147\b.\u0001/\u0001/\u0001/\u0003/\u014c\b/\u00010\u00010\u00030\u0150"+ + "\b0\u00011\u00041\u0153\b1\u000b1\f1\u0154\u00011\u00011\u00012\u0001"+ + "2\u00012\u00012\u00052\u015d\b2\n2\f2\u0160\t2\u00012\u00012\u00013\u0001"+ + "3\u00013\u00013\u00053\u0168\b3\n3\f3\u016b\t3\u00013\u00013\u00013\u0001"+ + "3\u00013\u0001\u0169\u00004\u0001\u0001\u0003\u0002\u0005\u0003\u0007"+ + "\u0004\t\u0005\u000b\u0006\r\u0007\u000f\b\u0011\t\u0013\n\u0015\u000b"+ + "\u0017\f\u0019\r\u001b\u000e\u001d\u000f\u001f\u0010!\u0011#\u0012%\u0013"+ + "\'\u0014)\u0015+\u0016-\u0017/\u00181\u00193\u001a5\u001b7\u001c9\u001d"+ + ";\u001e=\u001f? A!C\"E\u0000G\u0000I\u0000K\u0000M\u0000O\u0000Q\u0000"+ + "S\u0000U\u0000W\u0000Y\u0000[\u0000]\u0000_#a$c%e&g\'\u0001\u0000\f\u0003"+ + "\u0000AZ__az\u0004\u000009AZ__az\u0001\u000009\u0001\u000019\u0001\u0000"+ + "07\u0003\u000009AFaf\u0002\u0000XXxx\u0002\u0000EEee\u0002\u0000++--\u0002"+ + "\u0000PPpp\u0003\u0000\t\n\r\r \u0002\u0000\n\n\r\r\u017c\u0000\u0001"+ + "\u0001\u0000\u0000\u0000\u0000\u0003\u0001\u0000\u0000\u0000\u0000\u0005"+ + "\u0001\u0000\u0000\u0000\u0000\u0007\u0001\u0000\u0000\u0000\u0000\t\u0001"+ + "\u0000\u0000\u0000\u0000\u000b\u0001\u0000\u0000\u0000\u0000\r\u0001\u0000"+ + "\u0000\u0000\u0000\u000f\u0001\u0000\u0000\u0000\u0000\u0011\u0001\u0000"+ + "\u0000\u0000\u0000\u0013\u0001\u0000\u0000\u0000\u0000\u0015\u0001\u0000"+ + "\u0000\u0000\u0000\u0017\u0001\u0000\u0000\u0000\u0000\u0019\u0001\u0000"+ + "\u0000\u0000\u0000\u001b\u0001\u0000\u0000\u0000\u0000\u001d\u0001\u0000"+ + "\u0000\u0000\u0000\u001f\u0001\u0000\u0000\u0000\u0000!\u0001\u0000\u0000"+ + "\u0000\u0000#\u0001\u0000\u0000\u0000\u0000%\u0001\u0000\u0000\u0000\u0000"+ + "\'\u0001\u0000\u0000\u0000\u0000)\u0001\u0000\u0000\u0000\u0000+\u0001"+ + "\u0000\u0000\u0000\u0000-\u0001\u0000\u0000\u0000\u0000/\u0001\u0000\u0000"+ + "\u0000\u00001\u0001\u0000\u0000\u0000\u00003\u0001\u0000\u0000\u0000\u0000"+ + "5\u0001\u0000\u0000\u0000\u00007\u0001\u0000\u0000\u0000\u00009\u0001"+ + "\u0000\u0000\u0000\u0000;\u0001\u0000\u0000\u0000\u0000=\u0001\u0000\u0000"+ + "\u0000\u0000?\u0001\u0000\u0000\u0000\u0000A\u0001\u0000\u0000\u0000\u0000"+ + "C\u0001\u0000\u0000\u0000\u0000_\u0001\u0000\u0000\u0000\u0000a\u0001"+ + "\u0000\u0000\u0000\u0000c\u0001\u0000\u0000\u0000\u0000e\u0001\u0000\u0000"+ + "\u0000\u0000g\u0001\u0000\u0000\u0000\u0001i\u0001\u0000\u0000\u0000\u0003"+ + "o\u0001\u0000\u0000\u0000\u0005s\u0001\u0000\u0000\u0000\u0007y\u0001"+ + "\u0000\u0000\u0000\t~\u0001\u0000\u0000\u0000\u000b\u0081\u0001\u0000"+ + "\u0000\u0000\r\u0086\u0001\u0000\u0000\u0000\u000f\u008c\u0001\u0000\u0000"+ + "\u0000\u0011\u0092\u0001\u0000\u0000\u0000\u0013\u009b\u0001\u0000\u0000"+ + "\u0000\u0015\u00a2\u0001\u0000\u0000\u0000\u0017\u00a4\u0001\u0000\u0000"+ + "\u0000\u0019\u00a6\u0001\u0000\u0000\u0000\u001b\u00a8\u0001\u0000\u0000"+ + "\u0000\u001d\u00aa\u0001\u0000\u0000\u0000\u001f\u00ac\u0001\u0000\u0000"+ + "\u0000!\u00ae\u0001\u0000\u0000\u0000#\u00b1\u0001\u0000\u0000\u0000%"+ + "\u00b4\u0001\u0000\u0000\u0000\'\u00b6\u0001\u0000\u0000\u0000)\u00b9"+ + "\u0001\u0000\u0000\u0000+\u00bb\u0001\u0000\u0000\u0000-\u00be\u0001\u0000"+ + "\u0000\u0000/\u00c0\u0001\u0000\u0000\u00001\u00c3\u0001\u0000\u0000\u0000"+ + "3\u00c6\u0001\u0000\u0000\u00005\u00c8\u0001\u0000\u0000\u00007\u00ca"+ + "\u0001\u0000\u0000\u00009\u00cc\u0001\u0000\u0000\u0000;\u00ce\u0001\u0000"+ + "\u0000\u0000=\u00d0\u0001\u0000\u0000\u0000?\u00d2\u0001\u0000\u0000\u0000"+ + "A\u00d4\u0001\u0000\u0000\u0000C\u00d6\u0001\u0000\u0000\u0000E\u00dd"+ + "\u0001\u0000\u0000\u0000G\u00df\u0001\u0000\u0000\u0000I\u00e1\u0001\u0000"+ + "\u0000\u0000K\u00e3\u0001\u0000\u0000\u0000M\u00e5\u0001\u0000\u0000\u0000"+ + "O\u00ec\u0001\u0000\u0000\u0000Q\u00f3\u0001\u0000\u0000\u0000S\u010c"+ + "\u0001\u0000\u0000\u0000U\u010e\u0001\u0000\u0000\u0000W\u011e\u0001\u0000"+ + "\u0000\u0000Y\u0133\u0001\u0000\u0000\u0000[\u0135\u0001\u0000\u0000\u0000"+ + "]\u0146\u0001\u0000\u0000\u0000_\u014b\u0001\u0000\u0000\u0000a\u014f"+ + "\u0001\u0000\u0000\u0000c\u0152\u0001\u0000\u0000\u0000e\u0158\u0001\u0000"+ + "\u0000\u0000g\u0163\u0001\u0000\u0000\u0000ij\u0005c\u0000\u0000jk\u0005"+ + "o\u0000\u0000kl\u0005n\u0000\u0000lm\u0005s\u0000\u0000mn\u0005t\u0000"+ + "\u0000n\u0002\u0001\u0000\u0000\u0000op\u0005i\u0000\u0000pq\u0005n\u0000"+ + "\u0000qr\u0005t\u0000\u0000r\u0004\u0001\u0000\u0000\u0000st\u0005f\u0000"+ + "\u0000tu\u0005l\u0000\u0000uv\u0005o\u0000\u0000vw\u0005a\u0000\u0000"+ + "wx\u0005t\u0000\u0000x\u0006\u0001\u0000\u0000\u0000yz\u0005v\u0000\u0000"+ + "z{\u0005o\u0000\u0000{|\u0005i\u0000\u0000|}\u0005d\u0000\u0000}\b\u0001"+ + "\u0000\u0000\u0000~\u007f\u0005i\u0000\u0000\u007f\u0080\u0005f\u0000"+ + "\u0000\u0080\n\u0001\u0000\u0000\u0000\u0081\u0082\u0005e\u0000\u0000"+ + "\u0082\u0083\u0005l\u0000\u0000\u0083\u0084\u0005s\u0000\u0000\u0084\u0085"+ + "\u0005e\u0000\u0000\u0085\f\u0001\u0000\u0000\u0000\u0086\u0087\u0005"+ + "w\u0000\u0000\u0087\u0088\u0005h\u0000\u0000\u0088\u0089\u0005i\u0000"+ + "\u0000\u0089\u008a\u0005l\u0000\u0000\u008a\u008b\u0005e\u0000\u0000\u008b"+ + "\u000e\u0001\u0000\u0000\u0000\u008c\u008d\u0005b\u0000\u0000\u008d\u008e"+ + "\u0005r\u0000\u0000\u008e\u008f\u0005e\u0000\u0000\u008f\u0090\u0005a"+ + "\u0000\u0000\u0090\u0091\u0005k\u0000\u0000\u0091\u0010\u0001\u0000\u0000"+ + "\u0000\u0092\u0093\u0005c\u0000\u0000\u0093\u0094\u0005o\u0000\u0000\u0094"+ + "\u0095\u0005n\u0000\u0000\u0095\u0096\u0005t\u0000\u0000\u0096\u0097\u0005"+ + "i\u0000\u0000\u0097\u0098\u0005n\u0000\u0000\u0098\u0099\u0005u\u0000"+ + "\u0000\u0099\u009a\u0005e\u0000\u0000\u009a\u0012\u0001\u0000\u0000\u0000"+ + "\u009b\u009c\u0005r\u0000\u0000\u009c\u009d\u0005e\u0000\u0000\u009d\u009e"+ + "\u0005t\u0000\u0000\u009e\u009f\u0005u\u0000\u0000\u009f\u00a0\u0005r"+ + "\u0000\u0000\u00a0\u00a1\u0005n\u0000\u0000\u00a1\u0014\u0001\u0000\u0000"+ + "\u0000\u00a2\u00a3\u0005+\u0000\u0000\u00a3\u0016\u0001\u0000\u0000\u0000"+ + "\u00a4\u00a5\u0005-\u0000\u0000\u00a5\u0018\u0001\u0000\u0000\u0000\u00a6"+ + "\u00a7\u0005*\u0000\u0000\u00a7\u001a\u0001\u0000\u0000\u0000\u00a8\u00a9"+ + "\u0005/\u0000\u0000\u00a9\u001c\u0001\u0000\u0000\u0000\u00aa\u00ab\u0005"+ + "%\u0000\u0000\u00ab\u001e\u0001\u0000\u0000\u0000\u00ac\u00ad\u0005=\u0000"+ + "\u0000\u00ad \u0001\u0000\u0000\u0000\u00ae\u00af\u0005=\u0000\u0000\u00af"+ + "\u00b0\u0005=\u0000\u0000\u00b0\"\u0001\u0000\u0000\u0000\u00b1\u00b2"+ + "\u0005!\u0000\u0000\u00b2\u00b3\u0005=\u0000\u0000\u00b3$\u0001\u0000"+ + "\u0000\u0000\u00b4\u00b5\u0005<\u0000\u0000\u00b5&\u0001\u0000\u0000\u0000"+ + "\u00b6\u00b7\u0005<\u0000\u0000\u00b7\u00b8\u0005=\u0000\u0000\u00b8("+ + "\u0001\u0000\u0000\u0000\u00b9\u00ba\u0005>\u0000\u0000\u00ba*\u0001\u0000"+ + "\u0000\u0000\u00bb\u00bc\u0005>\u0000\u0000\u00bc\u00bd\u0005=\u0000\u0000"+ + "\u00bd,\u0001\u0000\u0000\u0000\u00be\u00bf\u0005!\u0000\u0000\u00bf."+ + "\u0001\u0000\u0000\u0000\u00c0\u00c1\u0005&\u0000\u0000\u00c1\u00c2\u0005"+ + "&\u0000\u0000\u00c20\u0001\u0000\u0000\u0000\u00c3\u00c4\u0005|\u0000"+ + "\u0000\u00c4\u00c5\u0005|\u0000\u0000\u00c52\u0001\u0000\u0000\u0000\u00c6"+ + "\u00c7\u0005(\u0000\u0000\u00c74\u0001\u0000\u0000\u0000\u00c8\u00c9\u0005"+ + ")\u0000\u0000\u00c96\u0001\u0000\u0000\u0000\u00ca\u00cb\u0005[\u0000"+ + "\u0000\u00cb8\u0001\u0000\u0000\u0000\u00cc\u00cd\u0005]\u0000\u0000\u00cd"+ + ":\u0001\u0000\u0000\u0000\u00ce\u00cf\u0005{\u0000\u0000\u00cf<\u0001"+ + "\u0000\u0000\u0000\u00d0\u00d1\u0005}\u0000\u0000\u00d1>\u0001\u0000\u0000"+ + "\u0000\u00d2\u00d3\u0005,\u0000\u0000\u00d3@\u0001\u0000\u0000\u0000\u00d4"+ + "\u00d5\u0005;\u0000\u0000\u00d5B\u0001\u0000\u0000\u0000\u00d6\u00da\u0007"+ + "\u0000\u0000\u0000\u00d7\u00d9\u0007\u0001\u0000\u0000\u00d8\u00d7\u0001"+ + "\u0000\u0000\u0000\u00d9\u00dc\u0001\u0000\u0000\u0000\u00da\u00d8\u0001"+ + "\u0000\u0000\u0000\u00da\u00db\u0001\u0000\u0000\u0000\u00dbD\u0001\u0000"+ + "\u0000\u0000\u00dc\u00da\u0001\u0000\u0000\u0000\u00dd\u00de\u0007\u0002"+ + "\u0000\u0000\u00deF\u0001\u0000\u0000\u0000\u00df\u00e0\u0007\u0003\u0000"+ + "\u0000\u00e0H\u0001\u0000\u0000\u0000\u00e1\u00e2\u0007\u0004\u0000\u0000"+ + "\u00e2J\u0001\u0000\u0000\u0000\u00e3\u00e4\u0007\u0005\u0000\u0000\u00e4"+ + "L\u0001\u0000\u0000\u0000\u00e5\u00e9\u0003G#\u0000\u00e6\u00e8\u0003"+ + "E\"\u0000\u00e7\u00e6\u0001\u0000\u0000\u0000\u00e8\u00eb\u0001\u0000"+ + "\u0000\u0000\u00e9\u00e7\u0001\u0000\u0000\u0000\u00e9\u00ea\u0001\u0000"+ + "\u0000\u0000\u00eaN\u0001\u0000\u0000\u0000\u00eb\u00e9\u0001\u0000\u0000"+ + "\u0000\u00ec\u00f0\u00050\u0000\u0000\u00ed\u00ef\u0003I$\u0000\u00ee"+ + "\u00ed\u0001\u0000\u0000\u0000\u00ef\u00f2\u0001\u0000\u0000\u0000\u00f0"+ + "\u00ee\u0001\u0000\u0000\u0000\u00f0\u00f1\u0001\u0000\u0000\u0000\u00f1"+ + "P\u0001\u0000\u0000\u0000\u00f2\u00f0\u0001\u0000\u0000\u0000\u00f3\u00f4"+ + "\u00050\u0000\u0000\u00f4\u00f6\u0007\u0006\u0000\u0000\u00f5\u00f7\u0003"+ + "K%\u0000\u00f6\u00f5\u0001\u0000\u0000\u0000\u00f7\u00f8\u0001\u0000\u0000"+ + "\u0000\u00f8\u00f6\u0001\u0000\u0000\u0000\u00f8\u00f9\u0001\u0000\u0000"+ + "\u0000\u00f9R\u0001\u0000\u0000\u0000\u00fa\u00fc\u0003E\"\u0000\u00fb"+ + "\u00fa\u0001\u0000\u0000\u0000\u00fc\u00fd\u0001\u0000\u0000\u0000\u00fd"+ + "\u00fb\u0001\u0000\u0000\u0000\u00fd\u00fe\u0001\u0000\u0000\u0000\u00fe"+ + "\u00ff\u0001\u0000\u0000\u0000\u00ff\u0103\u0005.\u0000\u0000\u0100\u0102"+ + "\u0003E\"\u0000\u0101\u0100\u0001\u0000\u0000\u0000\u0102\u0105\u0001"+ + "\u0000\u0000\u0000\u0103\u0101\u0001\u0000\u0000\u0000\u0103\u0104\u0001"+ + "\u0000\u0000\u0000\u0104\u010d\u0001\u0000\u0000\u0000\u0105\u0103\u0001"+ + "\u0000\u0000\u0000\u0106\u0108\u0005.\u0000\u0000\u0107\u0109\u0003E\""+ + "\u0000\u0108\u0107\u0001\u0000\u0000\u0000\u0109\u010a\u0001\u0000\u0000"+ + "\u0000\u010a\u0108\u0001\u0000\u0000\u0000\u010a\u010b\u0001\u0000\u0000"+ + "\u0000\u010b\u010d\u0001\u0000\u0000\u0000\u010c\u00fb\u0001\u0000\u0000"+ + "\u0000\u010c\u0106\u0001\u0000\u0000\u0000\u010dT\u0001\u0000\u0000\u0000"+ + "\u010e\u0110\u0007\u0007\u0000\u0000\u010f\u0111\u0007\b\u0000\u0000\u0110"+ + "\u010f\u0001\u0000\u0000\u0000\u0110\u0111\u0001\u0000\u0000\u0000\u0111"+ + "\u0113\u0001\u0000\u0000\u0000\u0112\u0114\u0003E\"\u0000\u0113\u0112"+ + "\u0001\u0000\u0000\u0000\u0114\u0115\u0001\u0000\u0000\u0000\u0115\u0113"+ + "\u0001\u0000\u0000\u0000\u0115\u0116\u0001\u0000\u0000\u0000\u0116V\u0001"+ + "\u0000\u0000\u0000\u0117\u0119\u0003S)\u0000\u0118\u011a\u0003U*\u0000"+ + "\u0119\u0118\u0001\u0000\u0000\u0000\u0119\u011a\u0001\u0000\u0000\u0000"+ + "\u011a\u011f\u0001\u0000\u0000\u0000\u011b\u011c\u0003M&\u0000\u011c\u011d"+ + "\u0003U*\u0000\u011d\u011f\u0001\u0000\u0000\u0000\u011e\u0117\u0001\u0000"+ + "\u0000\u0000\u011e\u011b\u0001\u0000\u0000\u0000\u011fX\u0001\u0000\u0000"+ + "\u0000\u0120\u0122\u0003K%\u0000\u0121\u0120\u0001\u0000\u0000\u0000\u0122"+ + "\u0125\u0001\u0000\u0000\u0000\u0123\u0121\u0001\u0000\u0000\u0000\u0123"+ + "\u0124\u0001\u0000\u0000\u0000\u0124\u0126\u0001\u0000\u0000\u0000\u0125"+ + "\u0123\u0001\u0000\u0000\u0000\u0126\u0128\u0005.\u0000\u0000\u0127\u0129"+ + "\u0003K%\u0000\u0128\u0127\u0001\u0000\u0000\u0000\u0129\u012a\u0001\u0000"+ + "\u0000\u0000\u012a\u0128\u0001\u0000\u0000\u0000\u012a\u012b\u0001\u0000"+ + "\u0000\u0000\u012b\u0134\u0001\u0000\u0000\u0000\u012c\u012e\u0003K%\u0000"+ + "\u012d\u012c\u0001\u0000\u0000\u0000\u012e\u012f\u0001\u0000\u0000\u0000"+ + "\u012f\u012d\u0001\u0000\u0000\u0000\u012f\u0130\u0001\u0000\u0000\u0000"+ + "\u0130\u0131\u0001\u0000\u0000\u0000\u0131\u0132\u0005.\u0000\u0000\u0132"+ + "\u0134\u0001\u0000\u0000\u0000\u0133\u0123\u0001\u0000\u0000\u0000\u0133"+ + "\u012d\u0001\u0000\u0000\u0000\u0134Z\u0001\u0000\u0000\u0000\u0135\u0137"+ + "\u0007\t\u0000\u0000\u0136\u0138\u0007\b\u0000\u0000\u0137\u0136\u0001"+ + "\u0000\u0000\u0000\u0137\u0138\u0001\u0000\u0000\u0000\u0138\u013a\u0001"+ + "\u0000\u0000\u0000\u0139\u013b\u0003E\"\u0000\u013a\u0139\u0001\u0000"+ + "\u0000\u0000\u013b\u013c\u0001\u0000\u0000\u0000\u013c\u013a\u0001\u0000"+ + "\u0000\u0000\u013c\u013d\u0001\u0000\u0000\u0000\u013d\\\u0001\u0000\u0000"+ + "\u0000\u013e\u013f\u00050\u0000\u0000\u013f\u0140\u0007\u0006\u0000\u0000"+ + "\u0140\u0141\u0003Y,\u0000\u0141\u0142\u0003[-\u0000\u0142\u0147\u0001"+ + "\u0000\u0000\u0000\u0143\u0144\u0003Q(\u0000\u0144\u0145\u0003[-\u0000"+ + "\u0145\u0147\u0001\u0000\u0000\u0000\u0146\u013e\u0001\u0000\u0000\u0000"+ + "\u0146\u0143\u0001\u0000\u0000\u0000\u0147^\u0001\u0000\u0000\u0000\u0148"+ + "\u014c\u0003M&\u0000\u0149\u014c\u0003O\'\u0000\u014a\u014c\u0003Q(\u0000"+ + "\u014b\u0148\u0001\u0000\u0000\u0000\u014b\u0149\u0001\u0000\u0000\u0000"+ + "\u014b\u014a\u0001\u0000\u0000\u0000\u014c`\u0001\u0000\u0000\u0000\u014d"+ + "\u0150\u0003W+\u0000\u014e\u0150\u0003].\u0000\u014f\u014d\u0001\u0000"+ + "\u0000\u0000\u014f\u014e\u0001\u0000\u0000\u0000\u0150b\u0001\u0000\u0000"+ + "\u0000\u0151\u0153\u0007\n\u0000\u0000\u0152\u0151\u0001\u0000\u0000\u0000"+ + "\u0153\u0154\u0001\u0000\u0000\u0000\u0154\u0152\u0001\u0000\u0000\u0000"+ + "\u0154\u0155\u0001\u0000\u0000\u0000\u0155\u0156\u0001\u0000\u0000\u0000"+ + "\u0156\u0157\u00061\u0000\u0000\u0157d\u0001\u0000\u0000\u0000\u0158\u0159"+ + "\u0005/\u0000\u0000\u0159\u015a\u0005/\u0000\u0000\u015a\u015e\u0001\u0000"+ + "\u0000\u0000\u015b\u015d\b\u000b\u0000\u0000\u015c\u015b\u0001\u0000\u0000"+ + "\u0000\u015d\u0160\u0001\u0000\u0000\u0000\u015e\u015c\u0001\u0000\u0000"+ + "\u0000\u015e\u015f\u0001\u0000\u0000\u0000\u015f\u0161\u0001\u0000\u0000"+ + "\u0000\u0160\u015e\u0001\u0000\u0000\u0000\u0161\u0162\u00062\u0000\u0000"+ + "\u0162f\u0001\u0000\u0000\u0000\u0163\u0164\u0005/\u0000\u0000\u0164\u0165"+ + "\u0005*\u0000\u0000\u0165\u0169\u0001\u0000\u0000\u0000\u0166\u0168\t"+ + "\u0000\u0000\u0000\u0167\u0166\u0001\u0000\u0000\u0000\u0168\u016b\u0001"+ + "\u0000\u0000\u0000\u0169\u016a\u0001\u0000\u0000\u0000\u0169\u0167\u0001"+ + "\u0000\u0000\u0000\u016a\u016c\u0001\u0000\u0000\u0000\u016b\u0169\u0001"+ + "\u0000\u0000\u0000\u016c\u016d\u0005*\u0000\u0000\u016d\u016e\u0005/\u0000"+ + "\u0000\u016e\u016f\u0001\u0000\u0000\u0000\u016f\u0170\u00063\u0000\u0000"+ + "\u0170h\u0001\u0000\u0000\u0000\u0019\u0000\u00da\u00e9\u00f0\u00f8\u00fd"+ + "\u0103\u010a\u010c\u0110\u0115\u0119\u011e\u0123\u012a\u012f\u0133\u0137"+ + "\u013c\u0146\u014b\u014f\u0154\u015e\u0169\u0001\u0006\u0000\u0000"; + public static final ATN _ATN = + new ATNDeserializer().deserialize(_serializedATN.toCharArray()); + static { + _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; + for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { + _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); + } + } +} \ No newline at end of file diff --git a/src/antlr4/.antlr/SysYListener.java b/src/antlr4/.antlr/SysYListener.java new file mode 100644 index 0000000..1a424a3 --- /dev/null +++ b/src/antlr4/.antlr/SysYListener.java @@ -0,0 +1,197 @@ +// Generated from //wsl.localhost/Ubuntu/home/hw/nudt-compiler-cpp/src/antlr4/SysY.g4 by ANTLR 4.13.1 +import org.antlr.v4.runtime.tree.ParseTreeListener; + +/** + * This interface defines a complete listener for a parse tree produced by + * {@link SysYParser}. + */ +public interface SysYListener extends ParseTreeListener { + /** + * Enter a parse tree produced by {@link SysYParser#compUnit}. + * @param ctx the parse tree + */ + void enterCompUnit(SysYParser.CompUnitContext ctx); + /** + * Exit a parse tree produced by {@link SysYParser#compUnit}. + * @param ctx the parse tree + */ + void exitCompUnit(SysYParser.CompUnitContext ctx); + /** + * Enter a parse tree produced by {@link SysYParser#decl}. + * @param ctx the parse tree + */ + void enterDecl(SysYParser.DeclContext ctx); + /** + * Exit a parse tree produced by {@link SysYParser#decl}. + * @param ctx the parse tree + */ + void exitDecl(SysYParser.DeclContext ctx); + /** + * Enter a parse tree produced by {@link SysYParser#btype}. + * @param ctx the parse tree + */ + void enterBtype(SysYParser.BtypeContext ctx); + /** + * Exit a parse tree produced by {@link SysYParser#btype}. + * @param ctx the parse tree + */ + void exitBtype(SysYParser.BtypeContext ctx); + /** + * Enter a parse tree produced by {@link SysYParser#varDef}. + * @param ctx the parse tree + */ + void enterVarDef(SysYParser.VarDefContext ctx); + /** + * Exit a parse tree produced by {@link SysYParser#varDef}. + * @param ctx the parse tree + */ + void exitVarDef(SysYParser.VarDefContext ctx); + /** + * Enter a parse tree produced by {@link SysYParser#initValue}. + * @param ctx the parse tree + */ + void enterInitValue(SysYParser.InitValueContext ctx); + /** + * Exit a parse tree produced by {@link SysYParser#initValue}. + * @param ctx the parse tree + */ + void exitInitValue(SysYParser.InitValueContext ctx); + /** + * Enter a parse tree produced by {@link SysYParser#funcDef}. + * @param ctx the parse tree + */ + void enterFuncDef(SysYParser.FuncDefContext ctx); + /** + * Exit a parse tree produced by {@link SysYParser#funcDef}. + * @param ctx the parse tree + */ + void exitFuncDef(SysYParser.FuncDefContext ctx); + /** + * Enter a parse tree produced by {@link SysYParser#funcType}. + * @param ctx the parse tree + */ + void enterFuncType(SysYParser.FuncTypeContext ctx); + /** + * Exit a parse tree produced by {@link SysYParser#funcType}. + * @param ctx the parse tree + */ + void exitFuncType(SysYParser.FuncTypeContext ctx); + /** + * Enter a parse tree produced by {@link SysYParser#blockStmt}. + * @param ctx the parse tree + */ + void enterBlockStmt(SysYParser.BlockStmtContext ctx); + /** + * Exit a parse tree produced by {@link SysYParser#blockStmt}. + * @param ctx the parse tree + */ + void exitBlockStmt(SysYParser.BlockStmtContext ctx); + /** + * Enter a parse tree produced by {@link SysYParser#blockItem}. + * @param ctx the parse tree + */ + void enterBlockItem(SysYParser.BlockItemContext ctx); + /** + * Exit a parse tree produced by {@link SysYParser#blockItem}. + * @param ctx the parse tree + */ + void exitBlockItem(SysYParser.BlockItemContext ctx); + /** + * Enter a parse tree produced by {@link SysYParser#stmt}. + * @param ctx the parse tree + */ + void enterStmt(SysYParser.StmtContext ctx); + /** + * Exit a parse tree produced by {@link SysYParser#stmt}. + * @param ctx the parse tree + */ + void exitStmt(SysYParser.StmtContext ctx); + /** + * Enter a parse tree produced by {@link SysYParser#returnStmt}. + * @param ctx the parse tree + */ + void enterReturnStmt(SysYParser.ReturnStmtContext ctx); + /** + * Exit a parse tree produced by {@link SysYParser#returnStmt}. + * @param ctx the parse tree + */ + void exitReturnStmt(SysYParser.ReturnStmtContext ctx); + /** + * Enter a parse tree produced by the {@code varExp} + * labeled alternative in {@link SysYParser#exp}. + * @param ctx the parse tree + */ + void enterVarExp(SysYParser.VarExpContext ctx); + /** + * Exit a parse tree produced by the {@code varExp} + * labeled alternative in {@link SysYParser#exp}. + * @param ctx the parse tree + */ + void exitVarExp(SysYParser.VarExpContext ctx); + /** + * Enter a parse tree produced by the {@code numberExp} + * labeled alternative in {@link SysYParser#exp}. + * @param ctx the parse tree + */ + void enterNumberExp(SysYParser.NumberExpContext ctx); + /** + * Exit a parse tree produced by the {@code numberExp} + * labeled alternative in {@link SysYParser#exp}. + * @param ctx the parse tree + */ + void exitNumberExp(SysYParser.NumberExpContext ctx); + /** + * Enter a parse tree produced by the {@code parenExp} + * labeled alternative in {@link SysYParser#exp}. + * @param ctx the parse tree + */ + void enterParenExp(SysYParser.ParenExpContext ctx); + /** + * Exit a parse tree produced by the {@code parenExp} + * labeled alternative in {@link SysYParser#exp}. + * @param ctx the parse tree + */ + void exitParenExp(SysYParser.ParenExpContext ctx); + /** + * Enter a parse tree produced by the {@code additiveExp} + * labeled alternative in {@link SysYParser#exp}. + * @param ctx the parse tree + */ + void enterAdditiveExp(SysYParser.AdditiveExpContext ctx); + /** + * Exit a parse tree produced by the {@code additiveExp} + * labeled alternative in {@link SysYParser#exp}. + * @param ctx the parse tree + */ + void exitAdditiveExp(SysYParser.AdditiveExpContext ctx); + /** + * Enter a parse tree produced by {@link SysYParser#var}. + * @param ctx the parse tree + */ + void enterVar(SysYParser.VarContext ctx); + /** + * Exit a parse tree produced by {@link SysYParser#var}. + * @param ctx the parse tree + */ + void exitVar(SysYParser.VarContext ctx); + /** + * Enter a parse tree produced by {@link SysYParser#lValue}. + * @param ctx the parse tree + */ + void enterLValue(SysYParser.LValueContext ctx); + /** + * Exit a parse tree produced by {@link SysYParser#lValue}. + * @param ctx the parse tree + */ + void exitLValue(SysYParser.LValueContext ctx); + /** + * Enter a parse tree produced by {@link SysYParser#number}. + * @param ctx the parse tree + */ + void enterNumber(SysYParser.NumberContext ctx); + /** + * Exit a parse tree produced by {@link SysYParser#number}. + * @param ctx the parse tree + */ + void exitNumber(SysYParser.NumberContext ctx); +} \ No newline at end of file diff --git a/src/antlr4/.antlr/SysYParser.java b/src/antlr4/.antlr/SysYParser.java new file mode 100644 index 0000000..3072637 --- /dev/null +++ b/src/antlr4/.antlr/SysYParser.java @@ -0,0 +1,2707 @@ +// Generated from //wsl.localhost/Ubuntu/home/hw/nudt-compiler-cpp/src/antlr4/SysY.g4 by ANTLR 4.13.1 +import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.dfa.DFA; +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.misc.*; +import org.antlr.v4.runtime.tree.*; +import java.util.List; +import java.util.Iterator; +import java.util.ArrayList; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue"}) +public class SysYParser extends Parser { + static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); } + + protected static final DFA[] _decisionToDFA; + protected static final PredictionContextCache _sharedContextCache = + new PredictionContextCache(); + public static final int + CONST=1, INT=2, FLOAT=3, VOID=4, IF=5, ELSE=6, WHILE=7, BREAK=8, CONTINUE=9, + RETURN=10, ADD=11, SUB=12, MUL=13, DIV=14, MOD=15, ASSIGN=16, EQ=17, NE=18, + LT=19, LE=20, GT=21, GE=22, NOT=23, AND=24, OR=25, LPAREN=26, RPAREN=27, + LBRACK=28, RBRACK=29, LBRACE=30, RBRACE=31, COMMA=32, SEMI=33, IDENT=34, + ILITERAL=35, FLITERAL=36, WS=37, LINE_COMMENT=38, BLOCK_COMMENT=39; + public static final int + RULE_compUnit = 0, RULE_decl = 1, RULE_constDecl = 2, RULE_bType = 3, + RULE_constDef = 4, RULE_constInitVal = 5, RULE_varDecl = 6, RULE_varDef = 7, + RULE_initVal = 8, RULE_funcDef = 9, RULE_funcType = 10, RULE_funcFParams = 11, + RULE_funcFParam = 12, RULE_block = 13, RULE_blockItem = 14, RULE_stmt = 15, + RULE_exp = 16, RULE_cond = 17, RULE_lVal = 18, RULE_primaryExp = 19, RULE_number = 20, + RULE_unaryExp = 21, RULE_unaryOp = 22, RULE_funcRParams = 23, RULE_mulExp = 24, + RULE_addExp = 25, RULE_relExp = 26, RULE_eqExp = 27, RULE_lAndExp = 28, + RULE_lOrExp = 29, RULE_constExp = 30; + private static String[] makeRuleNames() { + return new String[] { + "compUnit", "decl", "constDecl", "bType", "constDef", "constInitVal", + "varDecl", "varDef", "initVal", "funcDef", "funcType", "funcFParams", + "funcFParam", "block", "blockItem", "stmt", "exp", "cond", "lVal", "primaryExp", + "number", "unaryExp", "unaryOp", "funcRParams", "mulExp", "addExp", "relExp", + "eqExp", "lAndExp", "lOrExp", "constExp" + }; + } + public static final String[] ruleNames = makeRuleNames(); + + private static String[] makeLiteralNames() { + return new String[] { + null, "'const'", "'int'", "'float'", "'void'", "'if'", "'else'", "'while'", + "'break'", "'continue'", "'return'", "'+'", "'-'", "'*'", "'/'", "'%'", + "'='", "'=='", "'!='", "'<'", "'<='", "'>'", "'>='", "'!'", "'&&'", "'||'", + "'('", "')'", "'['", "']'", "'{'", "'}'", "','", "';'" + }; + } + private static final String[] _LITERAL_NAMES = makeLiteralNames(); + private static String[] makeSymbolicNames() { + return new String[] { + null, "CONST", "INT", "FLOAT", "VOID", "IF", "ELSE", "WHILE", "BREAK", + "CONTINUE", "RETURN", "ADD", "SUB", "MUL", "DIV", "MOD", "ASSIGN", "EQ", + "NE", "LT", "LE", "GT", "GE", "NOT", "AND", "OR", "LPAREN", "RPAREN", + "LBRACK", "RBRACK", "LBRACE", "RBRACE", "COMMA", "SEMI", "IDENT", "ILITERAL", + "FLITERAL", "WS", "LINE_COMMENT", "BLOCK_COMMENT" + }; + } + private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); + public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); + + /** + * @deprecated Use {@link #VOCABULARY} instead. + */ + @Deprecated + public static final String[] tokenNames; + static { + tokenNames = new String[_SYMBOLIC_NAMES.length]; + for (int i = 0; i < tokenNames.length; i++) { + tokenNames[i] = VOCABULARY.getLiteralName(i); + if (tokenNames[i] == null) { + tokenNames[i] = VOCABULARY.getSymbolicName(i); + } + + if (tokenNames[i] == null) { + tokenNames[i] = ""; + } + } + } + + @Override + @Deprecated + public String[] getTokenNames() { + return tokenNames; + } + + @Override + + public Vocabulary getVocabulary() { + return VOCABULARY; + } + + @Override + public String getGrammarFileName() { return "SysY.g4"; } + + @Override + public String[] getRuleNames() { return ruleNames; } + + @Override + public String getSerializedATN() { return _serializedATN; } + + @Override + public ATN getATN() { return _ATN; } + + public SysYParser(TokenStream input) { + super(input); + _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); + } + + @SuppressWarnings("CheckReturnValue") + public static class CompUnitContext extends ParserRuleContext { + public TerminalNode EOF() { return getToken(SysYParser.EOF, 0); } + public List decl() { + return getRuleContexts(DeclContext.class); + } + public DeclContext decl(int i) { + return getRuleContext(DeclContext.class,i); + } + public List funcDef() { + return getRuleContexts(FuncDefContext.class); + } + public FuncDefContext funcDef(int i) { + return getRuleContext(FuncDefContext.class,i); + } + public CompUnitContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_compUnit; } + } + + public final CompUnitContext compUnit() throws RecognitionException { + CompUnitContext _localctx = new CompUnitContext(_ctx, getState()); + enterRule(_localctx, 0, RULE_compUnit); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(64); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + setState(64); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,0,_ctx) ) { + case 1: + { + setState(62); + decl(); + } + break; + case 2: + { + setState(63); + funcDef(); + } + break; + } + } + setState(66); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & 30L) != 0) ); + setState(68); + match(EOF); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class DeclContext extends ParserRuleContext { + public ConstDeclContext constDecl() { + return getRuleContext(ConstDeclContext.class,0); + } + public VarDeclContext varDecl() { + return getRuleContext(VarDeclContext.class,0); + } + public DeclContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_decl; } + } + + public final DeclContext decl() throws RecognitionException { + DeclContext _localctx = new DeclContext(_ctx, getState()); + enterRule(_localctx, 2, RULE_decl); + try { + setState(72); + _errHandler.sync(this); + switch (_input.LA(1)) { + case CONST: + enterOuterAlt(_localctx, 1); + { + setState(70); + constDecl(); + } + break; + case INT: + case FLOAT: + enterOuterAlt(_localctx, 2); + { + setState(71); + varDecl(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ConstDeclContext extends ParserRuleContext { + public TerminalNode CONST() { return getToken(SysYParser.CONST, 0); } + public BTypeContext bType() { + return getRuleContext(BTypeContext.class,0); + } + public List constDef() { + return getRuleContexts(ConstDefContext.class); + } + public ConstDefContext constDef(int i) { + return getRuleContext(ConstDefContext.class,i); + } + public TerminalNode SEMI() { return getToken(SysYParser.SEMI, 0); } + public List COMMA() { return getTokens(SysYParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(SysYParser.COMMA, i); + } + public ConstDeclContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constDecl; } + } + + public final ConstDeclContext constDecl() throws RecognitionException { + ConstDeclContext _localctx = new ConstDeclContext(_ctx, getState()); + enterRule(_localctx, 4, RULE_constDecl); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(74); + match(CONST); + setState(75); + bType(); + setState(76); + constDef(); + setState(81); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(77); + match(COMMA); + setState(78); + constDef(); + } + } + setState(83); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(84); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class BTypeContext extends ParserRuleContext { + public TerminalNode INT() { return getToken(SysYParser.INT, 0); } + public TerminalNode FLOAT() { return getToken(SysYParser.FLOAT, 0); } + public BTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_bType; } + } + + public final BTypeContext bType() throws RecognitionException { + BTypeContext _localctx = new BTypeContext(_ctx, getState()); + enterRule(_localctx, 6, RULE_bType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(86); + _la = _input.LA(1); + if ( !(_la==INT || _la==FLOAT) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ConstDefContext extends ParserRuleContext { + public TerminalNode IDENT() { return getToken(SysYParser.IDENT, 0); } + public TerminalNode ASSIGN() { return getToken(SysYParser.ASSIGN, 0); } + public ConstInitValContext constInitVal() { + return getRuleContext(ConstInitValContext.class,0); + } + public List LBRACK() { return getTokens(SysYParser.LBRACK); } + public TerminalNode LBRACK(int i) { + return getToken(SysYParser.LBRACK, i); + } + public List constExp() { + return getRuleContexts(ConstExpContext.class); + } + public ConstExpContext constExp(int i) { + return getRuleContext(ConstExpContext.class,i); + } + public List RBRACK() { return getTokens(SysYParser.RBRACK); } + public TerminalNode RBRACK(int i) { + return getToken(SysYParser.RBRACK, i); + } + public ConstDefContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constDef; } + } + + public final ConstDefContext constDef() throws RecognitionException { + ConstDefContext _localctx = new ConstDefContext(_ctx, getState()); + enterRule(_localctx, 8, RULE_constDef); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(88); + match(IDENT); + setState(95); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==LBRACK) { + { + { + setState(89); + match(LBRACK); + setState(90); + constExp(); + setState(91); + match(RBRACK); + } + } + setState(97); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(98); + match(ASSIGN); + setState(99); + constInitVal(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ConstInitValContext extends ParserRuleContext { + public ConstExpContext constExp() { + return getRuleContext(ConstExpContext.class,0); + } + public TerminalNode LBRACE() { return getToken(SysYParser.LBRACE, 0); } + public TerminalNode RBRACE() { return getToken(SysYParser.RBRACE, 0); } + public List constInitVal() { + return getRuleContexts(ConstInitValContext.class); + } + public ConstInitValContext constInitVal(int i) { + return getRuleContext(ConstInitValContext.class,i); + } + public List COMMA() { return getTokens(SysYParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(SysYParser.COMMA, i); + } + public ConstInitValContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constInitVal; } + } + + public final ConstInitValContext constInitVal() throws RecognitionException { + ConstInitValContext _localctx = new ConstInitValContext(_ctx, getState()); + enterRule(_localctx, 10, RULE_constInitVal); + int _la; + try { + setState(114); + _errHandler.sync(this); + switch (_input.LA(1)) { + case ADD: + case SUB: + case NOT: + case LPAREN: + case IDENT: + case ILITERAL: + case FLITERAL: + enterOuterAlt(_localctx, 1); + { + setState(101); + constExp(); + } + break; + case LBRACE: + enterOuterAlt(_localctx, 2); + { + setState(102); + match(LBRACE); + setState(111); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 121408329728L) != 0)) { + { + setState(103); + constInitVal(); + setState(108); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(104); + match(COMMA); + setState(105); + constInitVal(); + } + } + setState(110); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + setState(113); + match(RBRACE); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class VarDeclContext extends ParserRuleContext { + public BTypeContext bType() { + return getRuleContext(BTypeContext.class,0); + } + public List varDef() { + return getRuleContexts(VarDefContext.class); + } + public VarDefContext varDef(int i) { + return getRuleContext(VarDefContext.class,i); + } + public TerminalNode SEMI() { return getToken(SysYParser.SEMI, 0); } + public List COMMA() { return getTokens(SysYParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(SysYParser.COMMA, i); + } + public VarDeclContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_varDecl; } + } + + public final VarDeclContext varDecl() throws RecognitionException { + VarDeclContext _localctx = new VarDeclContext(_ctx, getState()); + enterRule(_localctx, 12, RULE_varDecl); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(116); + bType(); + setState(117); + varDef(); + setState(122); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(118); + match(COMMA); + setState(119); + varDef(); + } + } + setState(124); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(125); + match(SEMI); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class VarDefContext extends ParserRuleContext { + public TerminalNode IDENT() { return getToken(SysYParser.IDENT, 0); } + public List LBRACK() { return getTokens(SysYParser.LBRACK); } + public TerminalNode LBRACK(int i) { + return getToken(SysYParser.LBRACK, i); + } + public List constExp() { + return getRuleContexts(ConstExpContext.class); + } + public ConstExpContext constExp(int i) { + return getRuleContext(ConstExpContext.class,i); + } + public List RBRACK() { return getTokens(SysYParser.RBRACK); } + public TerminalNode RBRACK(int i) { + return getToken(SysYParser.RBRACK, i); + } + public TerminalNode ASSIGN() { return getToken(SysYParser.ASSIGN, 0); } + public InitValContext initVal() { + return getRuleContext(InitValContext.class,0); + } + public VarDefContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_varDef; } + } + + public final VarDefContext varDef() throws RecognitionException { + VarDefContext _localctx = new VarDefContext(_ctx, getState()); + enterRule(_localctx, 14, RULE_varDef); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(127); + match(IDENT); + setState(134); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==LBRACK) { + { + { + setState(128); + match(LBRACK); + setState(129); + constExp(); + setState(130); + match(RBRACK); + } + } + setState(136); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(139); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ASSIGN) { + { + setState(137); + match(ASSIGN); + setState(138); + initVal(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class InitValContext extends ParserRuleContext { + public ExpContext exp() { + return getRuleContext(ExpContext.class,0); + } + public TerminalNode LBRACE() { return getToken(SysYParser.LBRACE, 0); } + public TerminalNode RBRACE() { return getToken(SysYParser.RBRACE, 0); } + public List initVal() { + return getRuleContexts(InitValContext.class); + } + public InitValContext initVal(int i) { + return getRuleContext(InitValContext.class,i); + } + public List COMMA() { return getTokens(SysYParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(SysYParser.COMMA, i); + } + public InitValContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_initVal; } + } + + public final InitValContext initVal() throws RecognitionException { + InitValContext _localctx = new InitValContext(_ctx, getState()); + enterRule(_localctx, 16, RULE_initVal); + int _la; + try { + setState(154); + _errHandler.sync(this); + switch (_input.LA(1)) { + case ADD: + case SUB: + case NOT: + case LPAREN: + case IDENT: + case ILITERAL: + case FLITERAL: + enterOuterAlt(_localctx, 1); + { + setState(141); + exp(); + } + break; + case LBRACE: + enterOuterAlt(_localctx, 2); + { + setState(142); + match(LBRACE); + setState(151); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 121408329728L) != 0)) { + { + setState(143); + initVal(); + setState(148); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(144); + match(COMMA); + setState(145); + initVal(); + } + } + setState(150); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + + setState(153); + match(RBRACE); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class FuncDefContext extends ParserRuleContext { + public FuncTypeContext funcType() { + return getRuleContext(FuncTypeContext.class,0); + } + public TerminalNode IDENT() { return getToken(SysYParser.IDENT, 0); } + public TerminalNode LPAREN() { return getToken(SysYParser.LPAREN, 0); } + public TerminalNode RPAREN() { return getToken(SysYParser.RPAREN, 0); } + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public FuncFParamsContext funcFParams() { + return getRuleContext(FuncFParamsContext.class,0); + } + public FuncDefContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_funcDef; } + } + + public final FuncDefContext funcDef() throws RecognitionException { + FuncDefContext _localctx = new FuncDefContext(_ctx, getState()); + enterRule(_localctx, 18, RULE_funcDef); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(156); + funcType(); + setState(157); + match(IDENT); + setState(158); + match(LPAREN); + setState(160); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==INT || _la==FLOAT) { + { + setState(159); + funcFParams(); + } + } + + setState(162); + match(RPAREN); + setState(163); + block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class FuncTypeContext extends ParserRuleContext { + public TerminalNode VOID() { return getToken(SysYParser.VOID, 0); } + public TerminalNode INT() { return getToken(SysYParser.INT, 0); } + public TerminalNode FLOAT() { return getToken(SysYParser.FLOAT, 0); } + public FuncTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_funcType; } + } + + public final FuncTypeContext funcType() throws RecognitionException { + FuncTypeContext _localctx = new FuncTypeContext(_ctx, getState()); + enterRule(_localctx, 20, RULE_funcType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(165); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 28L) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class FuncFParamsContext extends ParserRuleContext { + public List funcFParam() { + return getRuleContexts(FuncFParamContext.class); + } + public FuncFParamContext funcFParam(int i) { + return getRuleContext(FuncFParamContext.class,i); + } + public List COMMA() { return getTokens(SysYParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(SysYParser.COMMA, i); + } + public FuncFParamsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_funcFParams; } + } + + public final FuncFParamsContext funcFParams() throws RecognitionException { + FuncFParamsContext _localctx = new FuncFParamsContext(_ctx, getState()); + enterRule(_localctx, 22, RULE_funcFParams); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(167); + funcFParam(); + setState(172); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(168); + match(COMMA); + setState(169); + funcFParam(); + } + } + setState(174); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class FuncFParamContext extends ParserRuleContext { + public BTypeContext bType() { + return getRuleContext(BTypeContext.class,0); + } + public TerminalNode IDENT() { return getToken(SysYParser.IDENT, 0); } + public List LBRACK() { return getTokens(SysYParser.LBRACK); } + public TerminalNode LBRACK(int i) { + return getToken(SysYParser.LBRACK, i); + } + public List RBRACK() { return getTokens(SysYParser.RBRACK); } + public TerminalNode RBRACK(int i) { + return getToken(SysYParser.RBRACK, i); + } + public List exp() { + return getRuleContexts(ExpContext.class); + } + public ExpContext exp(int i) { + return getRuleContext(ExpContext.class,i); + } + public FuncFParamContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_funcFParam; } + } + + public final FuncFParamContext funcFParam() throws RecognitionException { + FuncFParamContext _localctx = new FuncFParamContext(_ctx, getState()); + enterRule(_localctx, 24, RULE_funcFParam); + int _la; + try { + setState(191); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,17,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(175); + bType(); + setState(176); + match(IDENT); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(178); + bType(); + setState(179); + match(IDENT); + setState(180); + match(LBRACK); + setState(181); + match(RBRACK); + setState(188); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==LBRACK) { + { + { + setState(182); + match(LBRACK); + setState(183); + exp(); + setState(184); + match(RBRACK); + } + } + setState(190); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class BlockContext extends ParserRuleContext { + public TerminalNode LBRACE() { return getToken(SysYParser.LBRACE, 0); } + public TerminalNode RBRACE() { return getToken(SysYParser.RBRACE, 0); } + public List blockItem() { + return getRuleContexts(BlockItemContext.class); + } + public BlockItemContext blockItem(int i) { + return getRuleContext(BlockItemContext.class,i); + } + public BlockContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_block; } + } + + public final BlockContext block() throws RecognitionException { + BlockContext _localctx = new BlockContext(_ctx, getState()); + enterRule(_localctx, 26, RULE_block); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(193); + match(LBRACE); + setState(197); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 129998266286L) != 0)) { + { + { + setState(194); + blockItem(); + } + } + setState(199); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(200); + match(RBRACE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class BlockItemContext extends ParserRuleContext { + public DeclContext decl() { + return getRuleContext(DeclContext.class,0); + } + public StmtContext stmt() { + return getRuleContext(StmtContext.class,0); + } + public BlockItemContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_blockItem; } + } + + public final BlockItemContext blockItem() throws RecognitionException { + BlockItemContext _localctx = new BlockItemContext(_ctx, getState()); + enterRule(_localctx, 28, RULE_blockItem); + try { + setState(204); + _errHandler.sync(this); + switch (_input.LA(1)) { + case CONST: + case INT: + case FLOAT: + enterOuterAlt(_localctx, 1); + { + setState(202); + decl(); + } + break; + case IF: + case WHILE: + case BREAK: + case CONTINUE: + case RETURN: + case ADD: + case SUB: + case NOT: + case LPAREN: + case LBRACE: + case SEMI: + case IDENT: + case ILITERAL: + case FLITERAL: + enterOuterAlt(_localctx, 2); + { + setState(203); + stmt(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class StmtContext extends ParserRuleContext { + public StmtContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_stmt; } + + public StmtContext() { } + public void copyFrom(StmtContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class WhileStmtContext extends StmtContext { + public TerminalNode WHILE() { return getToken(SysYParser.WHILE, 0); } + public TerminalNode LPAREN() { return getToken(SysYParser.LPAREN, 0); } + public CondContext cond() { + return getRuleContext(CondContext.class,0); + } + public TerminalNode RPAREN() { return getToken(SysYParser.RPAREN, 0); } + public StmtContext stmt() { + return getRuleContext(StmtContext.class,0); + } + public WhileStmtContext(StmtContext ctx) { copyFrom(ctx); } + } + @SuppressWarnings("CheckReturnValue") + public static class IfStmtContext extends StmtContext { + public TerminalNode IF() { return getToken(SysYParser.IF, 0); } + public TerminalNode LPAREN() { return getToken(SysYParser.LPAREN, 0); } + public CondContext cond() { + return getRuleContext(CondContext.class,0); + } + public TerminalNode RPAREN() { return getToken(SysYParser.RPAREN, 0); } + public List stmt() { + return getRuleContexts(StmtContext.class); + } + public StmtContext stmt(int i) { + return getRuleContext(StmtContext.class,i); + } + public TerminalNode ELSE() { return getToken(SysYParser.ELSE, 0); } + public IfStmtContext(StmtContext ctx) { copyFrom(ctx); } + } + @SuppressWarnings("CheckReturnValue") + public static class BlockStmtContext extends StmtContext { + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public BlockStmtContext(StmtContext ctx) { copyFrom(ctx); } + } + @SuppressWarnings("CheckReturnValue") + public static class AssignStmtContext extends StmtContext { + public LValContext lVal() { + return getRuleContext(LValContext.class,0); + } + public TerminalNode ASSIGN() { return getToken(SysYParser.ASSIGN, 0); } + public ExpContext exp() { + return getRuleContext(ExpContext.class,0); + } + public TerminalNode SEMI() { return getToken(SysYParser.SEMI, 0); } + public AssignStmtContext(StmtContext ctx) { copyFrom(ctx); } + } + @SuppressWarnings("CheckReturnValue") + public static class BreakStmtContext extends StmtContext { + public TerminalNode BREAK() { return getToken(SysYParser.BREAK, 0); } + public TerminalNode SEMI() { return getToken(SysYParser.SEMI, 0); } + public BreakStmtContext(StmtContext ctx) { copyFrom(ctx); } + } + @SuppressWarnings("CheckReturnValue") + public static class ExpStmtContext extends StmtContext { + public TerminalNode SEMI() { return getToken(SysYParser.SEMI, 0); } + public ExpContext exp() { + return getRuleContext(ExpContext.class,0); + } + public ExpStmtContext(StmtContext ctx) { copyFrom(ctx); } + } + @SuppressWarnings("CheckReturnValue") + public static class ReturnStmtContext extends StmtContext { + public TerminalNode RETURN() { return getToken(SysYParser.RETURN, 0); } + public TerminalNode SEMI() { return getToken(SysYParser.SEMI, 0); } + public ExpContext exp() { + return getRuleContext(ExpContext.class,0); + } + public ReturnStmtContext(StmtContext ctx) { copyFrom(ctx); } + } + @SuppressWarnings("CheckReturnValue") + public static class ContinueStmtContext extends StmtContext { + public TerminalNode CONTINUE() { return getToken(SysYParser.CONTINUE, 0); } + public TerminalNode SEMI() { return getToken(SysYParser.SEMI, 0); } + public ContinueStmtContext(StmtContext ctx) { copyFrom(ctx); } + } + + public final StmtContext stmt() throws RecognitionException { + StmtContext _localctx = new StmtContext(_ctx, getState()); + enterRule(_localctx, 30, RULE_stmt); + int _la; + try { + setState(240); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,23,_ctx) ) { + case 1: + _localctx = new AssignStmtContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(206); + lVal(); + setState(207); + match(ASSIGN); + setState(208); + exp(); + setState(209); + match(SEMI); + } + break; + case 2: + _localctx = new ExpStmtContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(212); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 120334587904L) != 0)) { + { + setState(211); + exp(); + } + } + + setState(214); + match(SEMI); + } + break; + case 3: + _localctx = new BlockStmtContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(215); + block(); + } + break; + case 4: + _localctx = new IfStmtContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(216); + match(IF); + setState(217); + match(LPAREN); + setState(218); + cond(); + setState(219); + match(RPAREN); + setState(220); + stmt(); + setState(223); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,21,_ctx) ) { + case 1: + { + setState(221); + match(ELSE); + setState(222); + stmt(); + } + break; + } + } + break; + case 5: + _localctx = new WhileStmtContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(225); + match(WHILE); + setState(226); + match(LPAREN); + setState(227); + cond(); + setState(228); + match(RPAREN); + setState(229); + stmt(); + } + break; + case 6: + _localctx = new BreakStmtContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(231); + match(BREAK); + setState(232); + match(SEMI); + } + break; + case 7: + _localctx = new ContinueStmtContext(_localctx); + enterOuterAlt(_localctx, 7); + { + setState(233); + match(CONTINUE); + setState(234); + match(SEMI); + } + break; + case 8: + _localctx = new ReturnStmtContext(_localctx); + enterOuterAlt(_localctx, 8); + { + setState(235); + match(RETURN); + setState(237); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 120334587904L) != 0)) { + { + setState(236); + exp(); + } + } + + setState(239); + match(SEMI); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ExpContext extends ParserRuleContext { + public AddExpContext addExp() { + return getRuleContext(AddExpContext.class,0); + } + public ExpContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_exp; } + } + + public final ExpContext exp() throws RecognitionException { + ExpContext _localctx = new ExpContext(_ctx, getState()); + enterRule(_localctx, 32, RULE_exp); + try { + enterOuterAlt(_localctx, 1); + { + setState(242); + addExp(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class CondContext extends ParserRuleContext { + public LOrExpContext lOrExp() { + return getRuleContext(LOrExpContext.class,0); + } + public CondContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_cond; } + } + + public final CondContext cond() throws RecognitionException { + CondContext _localctx = new CondContext(_ctx, getState()); + enterRule(_localctx, 34, RULE_cond); + try { + enterOuterAlt(_localctx, 1); + { + setState(244); + lOrExp(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class LValContext extends ParserRuleContext { + public TerminalNode IDENT() { return getToken(SysYParser.IDENT, 0); } + public List LBRACK() { return getTokens(SysYParser.LBRACK); } + public TerminalNode LBRACK(int i) { + return getToken(SysYParser.LBRACK, i); + } + public List exp() { + return getRuleContexts(ExpContext.class); + } + public ExpContext exp(int i) { + return getRuleContext(ExpContext.class,i); + } + public List RBRACK() { return getTokens(SysYParser.RBRACK); } + public TerminalNode RBRACK(int i) { + return getToken(SysYParser.RBRACK, i); + } + public LValContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_lVal; } + } + + public final LValContext lVal() throws RecognitionException { + LValContext _localctx = new LValContext(_ctx, getState()); + enterRule(_localctx, 36, RULE_lVal); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(246); + match(IDENT); + setState(253); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,24,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(247); + match(LBRACK); + setState(248); + exp(); + setState(249); + match(RBRACK); + } + } + } + setState(255); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,24,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class PrimaryExpContext extends ParserRuleContext { + public TerminalNode LPAREN() { return getToken(SysYParser.LPAREN, 0); } + public ExpContext exp() { + return getRuleContext(ExpContext.class,0); + } + public TerminalNode RPAREN() { return getToken(SysYParser.RPAREN, 0); } + public LValContext lVal() { + return getRuleContext(LValContext.class,0); + } + public NumberContext number() { + return getRuleContext(NumberContext.class,0); + } + public PrimaryExpContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_primaryExp; } + } + + public final PrimaryExpContext primaryExp() throws RecognitionException { + PrimaryExpContext _localctx = new PrimaryExpContext(_ctx, getState()); + enterRule(_localctx, 38, RULE_primaryExp); + try { + setState(262); + _errHandler.sync(this); + switch (_input.LA(1)) { + case LPAREN: + enterOuterAlt(_localctx, 1); + { + setState(256); + match(LPAREN); + setState(257); + exp(); + setState(258); + match(RPAREN); + } + break; + case IDENT: + enterOuterAlt(_localctx, 2); + { + setState(260); + lVal(); + } + break; + case ILITERAL: + case FLITERAL: + enterOuterAlt(_localctx, 3); + { + setState(261); + number(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class NumberContext extends ParserRuleContext { + public TerminalNode ILITERAL() { return getToken(SysYParser.ILITERAL, 0); } + public TerminalNode FLITERAL() { return getToken(SysYParser.FLITERAL, 0); } + public NumberContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_number; } + } + + public final NumberContext number() throws RecognitionException { + NumberContext _localctx = new NumberContext(_ctx, getState()); + enterRule(_localctx, 40, RULE_number); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(264); + _la = _input.LA(1); + if ( !(_la==ILITERAL || _la==FLITERAL) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnaryExpContext extends ParserRuleContext { + public UnaryExpContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unaryExp; } + + public UnaryExpContext() { } + public void copyFrom(UnaryExpContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class OpUnaryExpContext extends UnaryExpContext { + public UnaryOpContext unaryOp() { + return getRuleContext(UnaryOpContext.class,0); + } + public UnaryExpContext unaryExp() { + return getRuleContext(UnaryExpContext.class,0); + } + public OpUnaryExpContext(UnaryExpContext ctx) { copyFrom(ctx); } + } + @SuppressWarnings("CheckReturnValue") + public static class CallUnaryExpContext extends UnaryExpContext { + public TerminalNode IDENT() { return getToken(SysYParser.IDENT, 0); } + public TerminalNode LPAREN() { return getToken(SysYParser.LPAREN, 0); } + public TerminalNode RPAREN() { return getToken(SysYParser.RPAREN, 0); } + public FuncRParamsContext funcRParams() { + return getRuleContext(FuncRParamsContext.class,0); + } + public CallUnaryExpContext(UnaryExpContext ctx) { copyFrom(ctx); } + } + @SuppressWarnings("CheckReturnValue") + public static class PrimaryUnaryExpContext extends UnaryExpContext { + public PrimaryExpContext primaryExp() { + return getRuleContext(PrimaryExpContext.class,0); + } + public PrimaryUnaryExpContext(UnaryExpContext ctx) { copyFrom(ctx); } + } + + public final UnaryExpContext unaryExp() throws RecognitionException { + UnaryExpContext _localctx = new UnaryExpContext(_ctx, getState()); + enterRule(_localctx, 42, RULE_unaryExp); + int _la; + try { + setState(276); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,27,_ctx) ) { + case 1: + _localctx = new PrimaryUnaryExpContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(266); + primaryExp(); + } + break; + case 2: + _localctx = new CallUnaryExpContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(267); + match(IDENT); + setState(268); + match(LPAREN); + setState(270); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 120334587904L) != 0)) { + { + setState(269); + funcRParams(); + } + } + + setState(272); + match(RPAREN); + } + break; + case 3: + _localctx = new OpUnaryExpContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(273); + unaryOp(); + setState(274); + unaryExp(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class UnaryOpContext extends ParserRuleContext { + public TerminalNode ADD() { return getToken(SysYParser.ADD, 0); } + public TerminalNode SUB() { return getToken(SysYParser.SUB, 0); } + public TerminalNode NOT() { return getToken(SysYParser.NOT, 0); } + public UnaryOpContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unaryOp; } + } + + public final UnaryOpContext unaryOp() throws RecognitionException { + UnaryOpContext _localctx = new UnaryOpContext(_ctx, getState()); + enterRule(_localctx, 44, RULE_unaryOp); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(278); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 8394752L) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class FuncRParamsContext extends ParserRuleContext { + public List exp() { + return getRuleContexts(ExpContext.class); + } + public ExpContext exp(int i) { + return getRuleContext(ExpContext.class,i); + } + public List COMMA() { return getTokens(SysYParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(SysYParser.COMMA, i); + } + public FuncRParamsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_funcRParams; } + } + + public final FuncRParamsContext funcRParams() throws RecognitionException { + FuncRParamsContext _localctx = new FuncRParamsContext(_ctx, getState()); + enterRule(_localctx, 46, RULE_funcRParams); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(280); + exp(); + setState(285); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(281); + match(COMMA); + setState(282); + exp(); + } + } + setState(287); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class MulExpContext extends ParserRuleContext { + public MulExpContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_mulExp; } + + public MulExpContext() { } + public void copyFrom(MulExpContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class BinaryMulExpContext extends MulExpContext { + public Token op; + public MulExpContext mulExp() { + return getRuleContext(MulExpContext.class,0); + } + public UnaryExpContext unaryExp() { + return getRuleContext(UnaryExpContext.class,0); + } + public TerminalNode MUL() { return getToken(SysYParser.MUL, 0); } + public TerminalNode DIV() { return getToken(SysYParser.DIV, 0); } + public TerminalNode MOD() { return getToken(SysYParser.MOD, 0); } + public BinaryMulExpContext(MulExpContext ctx) { copyFrom(ctx); } + } + @SuppressWarnings("CheckReturnValue") + public static class UnaryMulExpContext extends MulExpContext { + public UnaryExpContext unaryExp() { + return getRuleContext(UnaryExpContext.class,0); + } + public UnaryMulExpContext(MulExpContext ctx) { copyFrom(ctx); } + } + + public final MulExpContext mulExp() throws RecognitionException { + return mulExp(0); + } + + private MulExpContext mulExp(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + MulExpContext _localctx = new MulExpContext(_ctx, _parentState); + MulExpContext _prevctx = _localctx; + int _startState = 48; + enterRecursionRule(_localctx, 48, RULE_mulExp, _p); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + _localctx = new UnaryMulExpContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + + setState(289); + unaryExp(); + } + _ctx.stop = _input.LT(-1); + setState(296); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,29,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new BinaryMulExpContext(new MulExpContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_mulExp); + setState(291); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(292); + ((BinaryMulExpContext)_localctx).op = _input.LT(1); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 57344L) != 0)) ) { + ((BinaryMulExpContext)_localctx).op = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(293); + unaryExp(); + } + } + } + setState(298); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,29,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class AddExpContext extends ParserRuleContext { + public AddExpContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_addExp; } + + public AddExpContext() { } + public void copyFrom(AddExpContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class BinaryAddExpContext extends AddExpContext { + public Token op; + public AddExpContext addExp() { + return getRuleContext(AddExpContext.class,0); + } + public MulExpContext mulExp() { + return getRuleContext(MulExpContext.class,0); + } + public TerminalNode ADD() { return getToken(SysYParser.ADD, 0); } + public TerminalNode SUB() { return getToken(SysYParser.SUB, 0); } + public BinaryAddExpContext(AddExpContext ctx) { copyFrom(ctx); } + } + @SuppressWarnings("CheckReturnValue") + public static class MulAddExpContext extends AddExpContext { + public MulExpContext mulExp() { + return getRuleContext(MulExpContext.class,0); + } + public MulAddExpContext(AddExpContext ctx) { copyFrom(ctx); } + } + + public final AddExpContext addExp() throws RecognitionException { + return addExp(0); + } + + private AddExpContext addExp(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + AddExpContext _localctx = new AddExpContext(_ctx, _parentState); + AddExpContext _prevctx = _localctx; + int _startState = 50; + enterRecursionRule(_localctx, 50, RULE_addExp, _p); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + _localctx = new MulAddExpContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + + setState(300); + mulExp(0); + } + _ctx.stop = _input.LT(-1); + setState(307); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,30,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new BinaryAddExpContext(new AddExpContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_addExp); + setState(302); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(303); + ((BinaryAddExpContext)_localctx).op = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==ADD || _la==SUB) ) { + ((BinaryAddExpContext)_localctx).op = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(304); + mulExp(0); + } + } + } + setState(309); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,30,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class RelExpContext extends ParserRuleContext { + public RelExpContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_relExp; } + + public RelExpContext() { } + public void copyFrom(RelExpContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AddRelExpContext extends RelExpContext { + public AddExpContext addExp() { + return getRuleContext(AddExpContext.class,0); + } + public AddRelExpContext(RelExpContext ctx) { copyFrom(ctx); } + } + @SuppressWarnings("CheckReturnValue") + public static class BinaryRelExpContext extends RelExpContext { + public Token op; + public RelExpContext relExp() { + return getRuleContext(RelExpContext.class,0); + } + public AddExpContext addExp() { + return getRuleContext(AddExpContext.class,0); + } + public TerminalNode LT() { return getToken(SysYParser.LT, 0); } + public TerminalNode GT() { return getToken(SysYParser.GT, 0); } + public TerminalNode LE() { return getToken(SysYParser.LE, 0); } + public TerminalNode GE() { return getToken(SysYParser.GE, 0); } + public BinaryRelExpContext(RelExpContext ctx) { copyFrom(ctx); } + } + + public final RelExpContext relExp() throws RecognitionException { + return relExp(0); + } + + private RelExpContext relExp(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + RelExpContext _localctx = new RelExpContext(_ctx, _parentState); + RelExpContext _prevctx = _localctx; + int _startState = 52; + enterRecursionRule(_localctx, 52, RULE_relExp, _p); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + _localctx = new AddRelExpContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + + setState(311); + addExp(0); + } + _ctx.stop = _input.LT(-1); + setState(318); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,31,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new BinaryRelExpContext(new RelExpContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_relExp); + setState(313); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(314); + ((BinaryRelExpContext)_localctx).op = _input.LT(1); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 7864320L) != 0)) ) { + ((BinaryRelExpContext)_localctx).op = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(315); + addExp(0); + } + } + } + setState(320); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,31,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class EqExpContext extends ParserRuleContext { + public EqExpContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_eqExp; } + + public EqExpContext() { } + public void copyFrom(EqExpContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class BinaryEqExpContext extends EqExpContext { + public Token op; + public EqExpContext eqExp() { + return getRuleContext(EqExpContext.class,0); + } + public RelExpContext relExp() { + return getRuleContext(RelExpContext.class,0); + } + public TerminalNode EQ() { return getToken(SysYParser.EQ, 0); } + public TerminalNode NE() { return getToken(SysYParser.NE, 0); } + public BinaryEqExpContext(EqExpContext ctx) { copyFrom(ctx); } + } + @SuppressWarnings("CheckReturnValue") + public static class RelEqExpContext extends EqExpContext { + public RelExpContext relExp() { + return getRuleContext(RelExpContext.class,0); + } + public RelEqExpContext(EqExpContext ctx) { copyFrom(ctx); } + } + + public final EqExpContext eqExp() throws RecognitionException { + return eqExp(0); + } + + private EqExpContext eqExp(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + EqExpContext _localctx = new EqExpContext(_ctx, _parentState); + EqExpContext _prevctx = _localctx; + int _startState = 54; + enterRecursionRule(_localctx, 54, RULE_eqExp, _p); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + _localctx = new RelEqExpContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + + setState(322); + relExp(0); + } + _ctx.stop = _input.LT(-1); + setState(329); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,32,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new BinaryEqExpContext(new EqExpContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_eqExp); + setState(324); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(325); + ((BinaryEqExpContext)_localctx).op = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==EQ || _la==NE) ) { + ((BinaryEqExpContext)_localctx).op = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(326); + relExp(0); + } + } + } + setState(331); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,32,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class LAndExpContext extends ParserRuleContext { + public LAndExpContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_lAndExp; } + + public LAndExpContext() { } + public void copyFrom(LAndExpContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class EqLAndExpContext extends LAndExpContext { + public EqExpContext eqExp() { + return getRuleContext(EqExpContext.class,0); + } + public EqLAndExpContext(LAndExpContext ctx) { copyFrom(ctx); } + } + @SuppressWarnings("CheckReturnValue") + public static class BinaryLAndExpContext extends LAndExpContext { + public LAndExpContext lAndExp() { + return getRuleContext(LAndExpContext.class,0); + } + public TerminalNode AND() { return getToken(SysYParser.AND, 0); } + public EqExpContext eqExp() { + return getRuleContext(EqExpContext.class,0); + } + public BinaryLAndExpContext(LAndExpContext ctx) { copyFrom(ctx); } + } + + public final LAndExpContext lAndExp() throws RecognitionException { + return lAndExp(0); + } + + private LAndExpContext lAndExp(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + LAndExpContext _localctx = new LAndExpContext(_ctx, _parentState); + LAndExpContext _prevctx = _localctx; + int _startState = 56; + enterRecursionRule(_localctx, 56, RULE_lAndExp, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + _localctx = new EqLAndExpContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + + setState(333); + eqExp(0); + } + _ctx.stop = _input.LT(-1); + setState(340); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,33,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new BinaryLAndExpContext(new LAndExpContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_lAndExp); + setState(335); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(336); + match(AND); + setState(337); + eqExp(0); + } + } + } + setState(342); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,33,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class LOrExpContext extends ParserRuleContext { + public LOrExpContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_lOrExp; } + + public LOrExpContext() { } + public void copyFrom(LOrExpContext ctx) { + super.copyFrom(ctx); + } + } + @SuppressWarnings("CheckReturnValue") + public static class AndLOrExpContext extends LOrExpContext { + public LAndExpContext lAndExp() { + return getRuleContext(LAndExpContext.class,0); + } + public AndLOrExpContext(LOrExpContext ctx) { copyFrom(ctx); } + } + @SuppressWarnings("CheckReturnValue") + public static class BinaryLOrExpContext extends LOrExpContext { + public LOrExpContext lOrExp() { + return getRuleContext(LOrExpContext.class,0); + } + public TerminalNode OR() { return getToken(SysYParser.OR, 0); } + public LAndExpContext lAndExp() { + return getRuleContext(LAndExpContext.class,0); + } + public BinaryLOrExpContext(LOrExpContext ctx) { copyFrom(ctx); } + } + + public final LOrExpContext lOrExp() throws RecognitionException { + return lOrExp(0); + } + + private LOrExpContext lOrExp(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + LOrExpContext _localctx = new LOrExpContext(_ctx, _parentState); + LOrExpContext _prevctx = _localctx; + int _startState = 58; + enterRecursionRule(_localctx, 58, RULE_lOrExp, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + { + _localctx = new AndLOrExpContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + + setState(344); + lAndExp(0); + } + _ctx.stop = _input.LT(-1); + setState(351); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,34,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new BinaryLOrExpContext(new LOrExpContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_lOrExp); + setState(346); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(347); + match(OR); + setState(348); + lAndExp(0); + } + } + } + setState(353); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,34,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ConstExpContext extends ParserRuleContext { + public AddExpContext addExp() { + return getRuleContext(AddExpContext.class,0); + } + public ConstExpContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constExp; } + } + + public final ConstExpContext constExp() throws RecognitionException { + ConstExpContext _localctx = new ConstExpContext(_ctx, getState()); + enterRule(_localctx, 60, RULE_constExp); + try { + enterOuterAlt(_localctx, 1); + { + setState(354); + addExp(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { + switch (ruleIndex) { + case 24: + return mulExp_sempred((MulExpContext)_localctx, predIndex); + case 25: + return addExp_sempred((AddExpContext)_localctx, predIndex); + case 26: + return relExp_sempred((RelExpContext)_localctx, predIndex); + case 27: + return eqExp_sempred((EqExpContext)_localctx, predIndex); + case 28: + return lAndExp_sempred((LAndExpContext)_localctx, predIndex); + case 29: + return lOrExp_sempred((LOrExpContext)_localctx, predIndex); + } + return true; + } + private boolean mulExp_sempred(MulExpContext _localctx, int predIndex) { + switch (predIndex) { + case 0: + return precpred(_ctx, 1); + } + return true; + } + private boolean addExp_sempred(AddExpContext _localctx, int predIndex) { + switch (predIndex) { + case 1: + return precpred(_ctx, 1); + } + return true; + } + private boolean relExp_sempred(RelExpContext _localctx, int predIndex) { + switch (predIndex) { + case 2: + return precpred(_ctx, 1); + } + return true; + } + private boolean eqExp_sempred(EqExpContext _localctx, int predIndex) { + switch (predIndex) { + case 3: + return precpred(_ctx, 1); + } + return true; + } + private boolean lAndExp_sempred(LAndExpContext _localctx, int predIndex) { + switch (predIndex) { + case 4: + return precpred(_ctx, 1); + } + return true; + } + private boolean lOrExp_sempred(LOrExpContext _localctx, int predIndex) { + switch (predIndex) { + case 5: + return precpred(_ctx, 1); + } + return true; + } + + public static final String _serializedATN = + "\u0004\u0001\'\u0165\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001\u0002"+ + "\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004\u0002"+ + "\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007\u0002"+ + "\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b\u0002"+ + "\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007\u000f"+ + "\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002\u0012\u0007\u0012"+ + "\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002\u0015\u0007\u0015"+ + "\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002\u0018\u0007\u0018"+ + "\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002\u001b\u0007\u001b"+ + "\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002\u001e\u0007\u001e"+ + "\u0001\u0000\u0001\u0000\u0004\u0000A\b\u0000\u000b\u0000\f\u0000B\u0001"+ + "\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0003\u0001I\b\u0001\u0001"+ + "\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0005\u0002P\b"+ + "\u0002\n\u0002\f\u0002S\t\u0002\u0001\u0002\u0001\u0002\u0001\u0003\u0001"+ + "\u0003\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0005"+ + "\u0004^\b\u0004\n\u0004\f\u0004a\t\u0004\u0001\u0004\u0001\u0004\u0001"+ + "\u0004\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0005"+ + "\u0005k\b\u0005\n\u0005\f\u0005n\t\u0005\u0003\u0005p\b\u0005\u0001\u0005"+ + "\u0003\u0005s\b\u0005\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+ + "\u0005\u0006y\b\u0006\n\u0006\f\u0006|\t\u0006\u0001\u0006\u0001\u0006"+ + "\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0005\u0007"+ + "\u0085\b\u0007\n\u0007\f\u0007\u0088\t\u0007\u0001\u0007\u0001\u0007\u0003"+ + "\u0007\u008c\b\u0007\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0005\b\u0093"+ + "\b\b\n\b\f\b\u0096\t\b\u0003\b\u0098\b\b\u0001\b\u0003\b\u009b\b\b\u0001"+ + "\t\u0001\t\u0001\t\u0001\t\u0003\t\u00a1\b\t\u0001\t\u0001\t\u0001\t\u0001"+ + "\n\u0001\n\u0001\u000b\u0001\u000b\u0001\u000b\u0005\u000b\u00ab\b\u000b"+ + "\n\u000b\f\u000b\u00ae\t\u000b\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f"+ + "\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0005\f\u00bb\b\f\n\f"+ + "\f\f\u00be\t\f\u0003\f\u00c0\b\f\u0001\r\u0001\r\u0005\r\u00c4\b\r\n\r"+ + "\f\r\u00c7\t\r\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0003\u000e\u00cd"+ + "\b\u000e\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001"+ + "\u000f\u0003\u000f\u00d5\b\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001"+ + "\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0003"+ + "\u000f\u00e0\b\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001"+ + "\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001"+ + "\u000f\u0001\u000f\u0003\u000f\u00ee\b\u000f\u0001\u000f\u0003\u000f\u00f1"+ + "\b\u000f\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0001\u0012\u0001"+ + "\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0005\u0012\u00fc\b\u0012\n"+ + "\u0012\f\u0012\u00ff\t\u0012\u0001\u0013\u0001\u0013\u0001\u0013\u0001"+ + "\u0013\u0001\u0013\u0001\u0013\u0003\u0013\u0107\b\u0013\u0001\u0014\u0001"+ + "\u0014\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0003\u0015\u010f"+ + "\b\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0003\u0015\u0115"+ + "\b\u0015\u0001\u0016\u0001\u0016\u0001\u0017\u0001\u0017\u0001\u0017\u0005"+ + "\u0017\u011c\b\u0017\n\u0017\f\u0017\u011f\t\u0017\u0001\u0018\u0001\u0018"+ + "\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0005\u0018\u0127\b\u0018"+ + "\n\u0018\f\u0018\u012a\t\u0018\u0001\u0019\u0001\u0019\u0001\u0019\u0001"+ + "\u0019\u0001\u0019\u0001\u0019\u0005\u0019\u0132\b\u0019\n\u0019\f\u0019"+ + "\u0135\t\u0019\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a"+ + "\u0001\u001a\u0005\u001a\u013d\b\u001a\n\u001a\f\u001a\u0140\t\u001a\u0001"+ + "\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0005"+ + "\u001b\u0148\b\u001b\n\u001b\f\u001b\u014b\t\u001b\u0001\u001c\u0001\u001c"+ + "\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0005\u001c\u0153\b\u001c"+ + "\n\u001c\f\u001c\u0156\t\u001c\u0001\u001d\u0001\u001d\u0001\u001d\u0001"+ + "\u001d\u0001\u001d\u0001\u001d\u0005\u001d\u015e\b\u001d\n\u001d\f\u001d"+ + "\u0161\t\u001d\u0001\u001e\u0001\u001e\u0001\u001e\u0000\u000602468:\u001f"+ + "\u0000\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a"+ + "\u001c\u001e \"$&(*,.02468:<\u0000\b\u0001\u0000\u0002\u0003\u0001\u0000"+ + "\u0002\u0004\u0001\u0000#$\u0002\u0000\u000b\f\u0017\u0017\u0001\u0000"+ + "\r\u000f\u0001\u0000\u000b\f\u0001\u0000\u0013\u0016\u0001\u0000\u0011"+ + "\u0012\u0170\u0000@\u0001\u0000\u0000\u0000\u0002H\u0001\u0000\u0000\u0000"+ + "\u0004J\u0001\u0000\u0000\u0000\u0006V\u0001\u0000\u0000\u0000\bX\u0001"+ + "\u0000\u0000\u0000\nr\u0001\u0000\u0000\u0000\ft\u0001\u0000\u0000\u0000"+ + "\u000e\u007f\u0001\u0000\u0000\u0000\u0010\u009a\u0001\u0000\u0000\u0000"+ + "\u0012\u009c\u0001\u0000\u0000\u0000\u0014\u00a5\u0001\u0000\u0000\u0000"+ + "\u0016\u00a7\u0001\u0000\u0000\u0000\u0018\u00bf\u0001\u0000\u0000\u0000"+ + "\u001a\u00c1\u0001\u0000\u0000\u0000\u001c\u00cc\u0001\u0000\u0000\u0000"+ + "\u001e\u00f0\u0001\u0000\u0000\u0000 \u00f2\u0001\u0000\u0000\u0000\""+ + "\u00f4\u0001\u0000\u0000\u0000$\u00f6\u0001\u0000\u0000\u0000&\u0106\u0001"+ + "\u0000\u0000\u0000(\u0108\u0001\u0000\u0000\u0000*\u0114\u0001\u0000\u0000"+ + "\u0000,\u0116\u0001\u0000\u0000\u0000.\u0118\u0001\u0000\u0000\u00000"+ + "\u0120\u0001\u0000\u0000\u00002\u012b\u0001\u0000\u0000\u00004\u0136\u0001"+ + "\u0000\u0000\u00006\u0141\u0001\u0000\u0000\u00008\u014c\u0001\u0000\u0000"+ + "\u0000:\u0157\u0001\u0000\u0000\u0000<\u0162\u0001\u0000\u0000\u0000>"+ + "A\u0003\u0002\u0001\u0000?A\u0003\u0012\t\u0000@>\u0001\u0000\u0000\u0000"+ + "@?\u0001\u0000\u0000\u0000AB\u0001\u0000\u0000\u0000B@\u0001\u0000\u0000"+ + "\u0000BC\u0001\u0000\u0000\u0000CD\u0001\u0000\u0000\u0000DE\u0005\u0000"+ + "\u0000\u0001E\u0001\u0001\u0000\u0000\u0000FI\u0003\u0004\u0002\u0000"+ + "GI\u0003\f\u0006\u0000HF\u0001\u0000\u0000\u0000HG\u0001\u0000\u0000\u0000"+ + "I\u0003\u0001\u0000\u0000\u0000JK\u0005\u0001\u0000\u0000KL\u0003\u0006"+ + "\u0003\u0000LQ\u0003\b\u0004\u0000MN\u0005 \u0000\u0000NP\u0003\b\u0004"+ + "\u0000OM\u0001\u0000\u0000\u0000PS\u0001\u0000\u0000\u0000QO\u0001\u0000"+ + "\u0000\u0000QR\u0001\u0000\u0000\u0000RT\u0001\u0000\u0000\u0000SQ\u0001"+ + "\u0000\u0000\u0000TU\u0005!\u0000\u0000U\u0005\u0001\u0000\u0000\u0000"+ + "VW\u0007\u0000\u0000\u0000W\u0007\u0001\u0000\u0000\u0000X_\u0005\"\u0000"+ + "\u0000YZ\u0005\u001c\u0000\u0000Z[\u0003<\u001e\u0000[\\\u0005\u001d\u0000"+ + "\u0000\\^\u0001\u0000\u0000\u0000]Y\u0001\u0000\u0000\u0000^a\u0001\u0000"+ + "\u0000\u0000_]\u0001\u0000\u0000\u0000_`\u0001\u0000\u0000\u0000`b\u0001"+ + "\u0000\u0000\u0000a_\u0001\u0000\u0000\u0000bc\u0005\u0010\u0000\u0000"+ + "cd\u0003\n\u0005\u0000d\t\u0001\u0000\u0000\u0000es\u0003<\u001e\u0000"+ + "fo\u0005\u001e\u0000\u0000gl\u0003\n\u0005\u0000hi\u0005 \u0000\u0000"+ + "ik\u0003\n\u0005\u0000jh\u0001\u0000\u0000\u0000kn\u0001\u0000\u0000\u0000"+ + "lj\u0001\u0000\u0000\u0000lm\u0001\u0000\u0000\u0000mp\u0001\u0000\u0000"+ + "\u0000nl\u0001\u0000\u0000\u0000og\u0001\u0000\u0000\u0000op\u0001\u0000"+ + "\u0000\u0000pq\u0001\u0000\u0000\u0000qs\u0005\u001f\u0000\u0000re\u0001"+ + "\u0000\u0000\u0000rf\u0001\u0000\u0000\u0000s\u000b\u0001\u0000\u0000"+ + "\u0000tu\u0003\u0006\u0003\u0000uz\u0003\u000e\u0007\u0000vw\u0005 \u0000"+ + "\u0000wy\u0003\u000e\u0007\u0000xv\u0001\u0000\u0000\u0000y|\u0001\u0000"+ + "\u0000\u0000zx\u0001\u0000\u0000\u0000z{\u0001\u0000\u0000\u0000{}\u0001"+ + "\u0000\u0000\u0000|z\u0001\u0000\u0000\u0000}~\u0005!\u0000\u0000~\r\u0001"+ + "\u0000\u0000\u0000\u007f\u0086\u0005\"\u0000\u0000\u0080\u0081\u0005\u001c"+ + "\u0000\u0000\u0081\u0082\u0003<\u001e\u0000\u0082\u0083\u0005\u001d\u0000"+ + "\u0000\u0083\u0085\u0001\u0000\u0000\u0000\u0084\u0080\u0001\u0000\u0000"+ + "\u0000\u0085\u0088\u0001\u0000\u0000\u0000\u0086\u0084\u0001\u0000\u0000"+ + "\u0000\u0086\u0087\u0001\u0000\u0000\u0000\u0087\u008b\u0001\u0000\u0000"+ + "\u0000\u0088\u0086\u0001\u0000\u0000\u0000\u0089\u008a\u0005\u0010\u0000"+ + "\u0000\u008a\u008c\u0003\u0010\b\u0000\u008b\u0089\u0001\u0000\u0000\u0000"+ + "\u008b\u008c\u0001\u0000\u0000\u0000\u008c\u000f\u0001\u0000\u0000\u0000"+ + "\u008d\u009b\u0003 \u0010\u0000\u008e\u0097\u0005\u001e\u0000\u0000\u008f"+ + "\u0094\u0003\u0010\b\u0000\u0090\u0091\u0005 \u0000\u0000\u0091\u0093"+ + "\u0003\u0010\b\u0000\u0092\u0090\u0001\u0000\u0000\u0000\u0093\u0096\u0001"+ + "\u0000\u0000\u0000\u0094\u0092\u0001\u0000\u0000\u0000\u0094\u0095\u0001"+ + "\u0000\u0000\u0000\u0095\u0098\u0001\u0000\u0000\u0000\u0096\u0094\u0001"+ + "\u0000\u0000\u0000\u0097\u008f\u0001\u0000\u0000\u0000\u0097\u0098\u0001"+ + "\u0000\u0000\u0000\u0098\u0099\u0001\u0000\u0000\u0000\u0099\u009b\u0005"+ + "\u001f\u0000\u0000\u009a\u008d\u0001\u0000\u0000\u0000\u009a\u008e\u0001"+ + "\u0000\u0000\u0000\u009b\u0011\u0001\u0000\u0000\u0000\u009c\u009d\u0003"+ + "\u0014\n\u0000\u009d\u009e\u0005\"\u0000\u0000\u009e\u00a0\u0005\u001a"+ + "\u0000\u0000\u009f\u00a1\u0003\u0016\u000b\u0000\u00a0\u009f\u0001\u0000"+ + "\u0000\u0000\u00a0\u00a1\u0001\u0000\u0000\u0000\u00a1\u00a2\u0001\u0000"+ + "\u0000\u0000\u00a2\u00a3\u0005\u001b\u0000\u0000\u00a3\u00a4\u0003\u001a"+ + "\r\u0000\u00a4\u0013\u0001\u0000\u0000\u0000\u00a5\u00a6\u0007\u0001\u0000"+ + "\u0000\u00a6\u0015\u0001\u0000\u0000\u0000\u00a7\u00ac\u0003\u0018\f\u0000"+ + "\u00a8\u00a9\u0005 \u0000\u0000\u00a9\u00ab\u0003\u0018\f\u0000\u00aa"+ + "\u00a8\u0001\u0000\u0000\u0000\u00ab\u00ae\u0001\u0000\u0000\u0000\u00ac"+ + "\u00aa\u0001\u0000\u0000\u0000\u00ac\u00ad\u0001\u0000\u0000\u0000\u00ad"+ + "\u0017\u0001\u0000\u0000\u0000\u00ae\u00ac\u0001\u0000\u0000\u0000\u00af"+ + "\u00b0\u0003\u0006\u0003\u0000\u00b0\u00b1\u0005\"\u0000\u0000\u00b1\u00c0"+ + "\u0001\u0000\u0000\u0000\u00b2\u00b3\u0003\u0006\u0003\u0000\u00b3\u00b4"+ + "\u0005\"\u0000\u0000\u00b4\u00b5\u0005\u001c\u0000\u0000\u00b5\u00bc\u0005"+ + "\u001d\u0000\u0000\u00b6\u00b7\u0005\u001c\u0000\u0000\u00b7\u00b8\u0003"+ + " \u0010\u0000\u00b8\u00b9\u0005\u001d\u0000\u0000\u00b9\u00bb\u0001\u0000"+ + "\u0000\u0000\u00ba\u00b6\u0001\u0000\u0000\u0000\u00bb\u00be\u0001\u0000"+ + "\u0000\u0000\u00bc\u00ba\u0001\u0000\u0000\u0000\u00bc\u00bd\u0001\u0000"+ + "\u0000\u0000\u00bd\u00c0\u0001\u0000\u0000\u0000\u00be\u00bc\u0001\u0000"+ + "\u0000\u0000\u00bf\u00af\u0001\u0000\u0000\u0000\u00bf\u00b2\u0001\u0000"+ + "\u0000\u0000\u00c0\u0019\u0001\u0000\u0000\u0000\u00c1\u00c5\u0005\u001e"+ + "\u0000\u0000\u00c2\u00c4\u0003\u001c\u000e\u0000\u00c3\u00c2\u0001\u0000"+ + "\u0000\u0000\u00c4\u00c7\u0001\u0000\u0000\u0000\u00c5\u00c3\u0001\u0000"+ + "\u0000\u0000\u00c5\u00c6\u0001\u0000\u0000\u0000\u00c6\u00c8\u0001\u0000"+ + "\u0000\u0000\u00c7\u00c5\u0001\u0000\u0000\u0000\u00c8\u00c9\u0005\u001f"+ + "\u0000\u0000\u00c9\u001b\u0001\u0000\u0000\u0000\u00ca\u00cd\u0003\u0002"+ + "\u0001\u0000\u00cb\u00cd\u0003\u001e\u000f\u0000\u00cc\u00ca\u0001\u0000"+ + "\u0000\u0000\u00cc\u00cb\u0001\u0000\u0000\u0000\u00cd\u001d\u0001\u0000"+ + "\u0000\u0000\u00ce\u00cf\u0003$\u0012\u0000\u00cf\u00d0\u0005\u0010\u0000"+ + "\u0000\u00d0\u00d1\u0003 \u0010\u0000\u00d1\u00d2\u0005!\u0000\u0000\u00d2"+ + "\u00f1\u0001\u0000\u0000\u0000\u00d3\u00d5\u0003 \u0010\u0000\u00d4\u00d3"+ + "\u0001\u0000\u0000\u0000\u00d4\u00d5\u0001\u0000\u0000\u0000\u00d5\u00d6"+ + "\u0001\u0000\u0000\u0000\u00d6\u00f1\u0005!\u0000\u0000\u00d7\u00f1\u0003"+ + "\u001a\r\u0000\u00d8\u00d9\u0005\u0005\u0000\u0000\u00d9\u00da\u0005\u001a"+ + "\u0000\u0000\u00da\u00db\u0003\"\u0011\u0000\u00db\u00dc\u0005\u001b\u0000"+ + "\u0000\u00dc\u00df\u0003\u001e\u000f\u0000\u00dd\u00de\u0005\u0006\u0000"+ + "\u0000\u00de\u00e0\u0003\u001e\u000f\u0000\u00df\u00dd\u0001\u0000\u0000"+ + "\u0000\u00df\u00e0\u0001\u0000\u0000\u0000\u00e0\u00f1\u0001\u0000\u0000"+ + "\u0000\u00e1\u00e2\u0005\u0007\u0000\u0000\u00e2\u00e3\u0005\u001a\u0000"+ + "\u0000\u00e3\u00e4\u0003\"\u0011\u0000\u00e4\u00e5\u0005\u001b\u0000\u0000"+ + "\u00e5\u00e6\u0003\u001e\u000f\u0000\u00e6\u00f1\u0001\u0000\u0000\u0000"+ + "\u00e7\u00e8\u0005\b\u0000\u0000\u00e8\u00f1\u0005!\u0000\u0000\u00e9"+ + "\u00ea\u0005\t\u0000\u0000\u00ea\u00f1\u0005!\u0000\u0000\u00eb\u00ed"+ + "\u0005\n\u0000\u0000\u00ec\u00ee\u0003 \u0010\u0000\u00ed\u00ec\u0001"+ + "\u0000\u0000\u0000\u00ed\u00ee\u0001\u0000\u0000\u0000\u00ee\u00ef\u0001"+ + "\u0000\u0000\u0000\u00ef\u00f1\u0005!\u0000\u0000\u00f0\u00ce\u0001\u0000"+ + "\u0000\u0000\u00f0\u00d4\u0001\u0000\u0000\u0000\u00f0\u00d7\u0001\u0000"+ + "\u0000\u0000\u00f0\u00d8\u0001\u0000\u0000\u0000\u00f0\u00e1\u0001\u0000"+ + "\u0000\u0000\u00f0\u00e7\u0001\u0000\u0000\u0000\u00f0\u00e9\u0001\u0000"+ + "\u0000\u0000\u00f0\u00eb\u0001\u0000\u0000\u0000\u00f1\u001f\u0001\u0000"+ + "\u0000\u0000\u00f2\u00f3\u00032\u0019\u0000\u00f3!\u0001\u0000\u0000\u0000"+ + "\u00f4\u00f5\u0003:\u001d\u0000\u00f5#\u0001\u0000\u0000\u0000\u00f6\u00fd"+ + "\u0005\"\u0000\u0000\u00f7\u00f8\u0005\u001c\u0000\u0000\u00f8\u00f9\u0003"+ + " \u0010\u0000\u00f9\u00fa\u0005\u001d\u0000\u0000\u00fa\u00fc\u0001\u0000"+ + "\u0000\u0000\u00fb\u00f7\u0001\u0000\u0000\u0000\u00fc\u00ff\u0001\u0000"+ + "\u0000\u0000\u00fd\u00fb\u0001\u0000\u0000\u0000\u00fd\u00fe\u0001\u0000"+ + "\u0000\u0000\u00fe%\u0001\u0000\u0000\u0000\u00ff\u00fd\u0001\u0000\u0000"+ + "\u0000\u0100\u0101\u0005\u001a\u0000\u0000\u0101\u0102\u0003 \u0010\u0000"+ + "\u0102\u0103\u0005\u001b\u0000\u0000\u0103\u0107\u0001\u0000\u0000\u0000"+ + "\u0104\u0107\u0003$\u0012\u0000\u0105\u0107\u0003(\u0014\u0000\u0106\u0100"+ + "\u0001\u0000\u0000\u0000\u0106\u0104\u0001\u0000\u0000\u0000\u0106\u0105"+ + "\u0001\u0000\u0000\u0000\u0107\'\u0001\u0000\u0000\u0000\u0108\u0109\u0007"+ + "\u0002\u0000\u0000\u0109)\u0001\u0000\u0000\u0000\u010a\u0115\u0003&\u0013"+ + "\u0000\u010b\u010c\u0005\"\u0000\u0000\u010c\u010e\u0005\u001a\u0000\u0000"+ + "\u010d\u010f\u0003.\u0017\u0000\u010e\u010d\u0001\u0000\u0000\u0000\u010e"+ + "\u010f\u0001\u0000\u0000\u0000\u010f\u0110\u0001\u0000\u0000\u0000\u0110"+ + "\u0115\u0005\u001b\u0000\u0000\u0111\u0112\u0003,\u0016\u0000\u0112\u0113"+ + "\u0003*\u0015\u0000\u0113\u0115\u0001\u0000\u0000\u0000\u0114\u010a\u0001"+ + "\u0000\u0000\u0000\u0114\u010b\u0001\u0000\u0000\u0000\u0114\u0111\u0001"+ + "\u0000\u0000\u0000\u0115+\u0001\u0000\u0000\u0000\u0116\u0117\u0007\u0003"+ + "\u0000\u0000\u0117-\u0001\u0000\u0000\u0000\u0118\u011d\u0003 \u0010\u0000"+ + "\u0119\u011a\u0005 \u0000\u0000\u011a\u011c\u0003 \u0010\u0000\u011b\u0119"+ + "\u0001\u0000\u0000\u0000\u011c\u011f\u0001\u0000\u0000\u0000\u011d\u011b"+ + "\u0001\u0000\u0000\u0000\u011d\u011e\u0001\u0000\u0000\u0000\u011e/\u0001"+ + "\u0000\u0000\u0000\u011f\u011d\u0001\u0000\u0000\u0000\u0120\u0121\u0006"+ + "\u0018\uffff\uffff\u0000\u0121\u0122\u0003*\u0015\u0000\u0122\u0128\u0001"+ + "\u0000\u0000\u0000\u0123\u0124\n\u0001\u0000\u0000\u0124\u0125\u0007\u0004"+ + "\u0000\u0000\u0125\u0127\u0003*\u0015\u0000\u0126\u0123\u0001\u0000\u0000"+ + "\u0000\u0127\u012a\u0001\u0000\u0000\u0000\u0128\u0126\u0001\u0000\u0000"+ + "\u0000\u0128\u0129\u0001\u0000\u0000\u0000\u01291\u0001\u0000\u0000\u0000"+ + "\u012a\u0128\u0001\u0000\u0000\u0000\u012b\u012c\u0006\u0019\uffff\uffff"+ + "\u0000\u012c\u012d\u00030\u0018\u0000\u012d\u0133\u0001\u0000\u0000\u0000"+ + "\u012e\u012f\n\u0001\u0000\u0000\u012f\u0130\u0007\u0005\u0000\u0000\u0130"+ + "\u0132\u00030\u0018\u0000\u0131\u012e\u0001\u0000\u0000\u0000\u0132\u0135"+ + "\u0001\u0000\u0000\u0000\u0133\u0131\u0001\u0000\u0000\u0000\u0133\u0134"+ + "\u0001\u0000\u0000\u0000\u01343\u0001\u0000\u0000\u0000\u0135\u0133\u0001"+ + "\u0000\u0000\u0000\u0136\u0137\u0006\u001a\uffff\uffff\u0000\u0137\u0138"+ + "\u00032\u0019\u0000\u0138\u013e\u0001\u0000\u0000\u0000\u0139\u013a\n"+ + "\u0001\u0000\u0000\u013a\u013b\u0007\u0006\u0000\u0000\u013b\u013d\u0003"+ + "2\u0019\u0000\u013c\u0139\u0001\u0000\u0000\u0000\u013d\u0140\u0001\u0000"+ + "\u0000\u0000\u013e\u013c\u0001\u0000\u0000\u0000\u013e\u013f\u0001\u0000"+ + "\u0000\u0000\u013f5\u0001\u0000\u0000\u0000\u0140\u013e\u0001\u0000\u0000"+ + "\u0000\u0141\u0142\u0006\u001b\uffff\uffff\u0000\u0142\u0143\u00034\u001a"+ + "\u0000\u0143\u0149\u0001\u0000\u0000\u0000\u0144\u0145\n\u0001\u0000\u0000"+ + "\u0145\u0146\u0007\u0007\u0000\u0000\u0146\u0148\u00034\u001a\u0000\u0147"+ + "\u0144\u0001\u0000\u0000\u0000\u0148\u014b\u0001\u0000\u0000\u0000\u0149"+ + "\u0147\u0001\u0000\u0000\u0000\u0149\u014a\u0001\u0000\u0000\u0000\u014a"+ + "7\u0001\u0000\u0000\u0000\u014b\u0149\u0001\u0000\u0000\u0000\u014c\u014d"+ + "\u0006\u001c\uffff\uffff\u0000\u014d\u014e\u00036\u001b\u0000\u014e\u0154"+ + "\u0001\u0000\u0000\u0000\u014f\u0150\n\u0001\u0000\u0000\u0150\u0151\u0005"+ + "\u0018\u0000\u0000\u0151\u0153\u00036\u001b\u0000\u0152\u014f\u0001\u0000"+ + "\u0000\u0000\u0153\u0156\u0001\u0000\u0000\u0000\u0154\u0152\u0001\u0000"+ + "\u0000\u0000\u0154\u0155\u0001\u0000\u0000\u0000\u01559\u0001\u0000\u0000"+ + "\u0000\u0156\u0154\u0001\u0000\u0000\u0000\u0157\u0158\u0006\u001d\uffff"+ + "\uffff\u0000\u0158\u0159\u00038\u001c\u0000\u0159\u015f\u0001\u0000\u0000"+ + "\u0000\u015a\u015b\n\u0001\u0000\u0000\u015b\u015c\u0005\u0019\u0000\u0000"+ + "\u015c\u015e\u00038\u001c\u0000\u015d\u015a\u0001\u0000\u0000\u0000\u015e"+ + "\u0161\u0001\u0000\u0000\u0000\u015f\u015d\u0001\u0000\u0000\u0000\u015f"+ + "\u0160\u0001\u0000\u0000\u0000\u0160;\u0001\u0000\u0000\u0000\u0161\u015f"+ + "\u0001\u0000\u0000\u0000\u0162\u0163\u00032\u0019\u0000\u0163=\u0001\u0000"+ + "\u0000\u0000#@BHQ_lorz\u0086\u008b\u0094\u0097\u009a\u00a0\u00ac\u00bc"+ + "\u00bf\u00c5\u00cc\u00d4\u00df\u00ed\u00f0\u00fd\u0106\u010e\u0114\u011d"+ + "\u0128\u0133\u013e\u0149\u0154\u015f"; + public static final ATN _ATN = + new ATNDeserializer().deserialize(_serializedATN.toCharArray()); + static { + _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; + for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { + _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); + } + } +} \ No newline at end of file diff --git a/src/antlr4/SysY.g4 b/src/antlr4/SysY.g4 index 263aeef..8ec5e13 100644 --- a/src/antlr4/SysY.g4 +++ b/src/antlr4/SysY.g4 @@ -1,98 +1,180 @@ -// SysY 子集语法:支持形如 -// int main() { int a = 1; int b = 2; return a + b; } -// 的最小返回表达式编译。 +grammar SysY; -// 后续需要自行添加 +// ========================= Parser Rules ========================= -grammar SysY; +compUnit: (decl | funcDef)+ EOF; + +decl: constDecl | varDecl; + +constDecl: CONST bType constDef (COMMA constDef)* SEMI; + +bType: INT | FLOAT; + +constDef: IDENT (LBRACK constExp RBRACK)* ASSIGN constInitVal; + +constInitVal: + constExp + | LBRACE (constInitVal (COMMA constInitVal)*)? RBRACE; + +varDecl: bType varDef (COMMA varDef)* SEMI; + +varDef: IDENT (LBRACK constExp RBRACK)* (ASSIGN initVal)?; + +initVal: exp | LBRACE (initVal (COMMA initVal)*)? RBRACE; + +funcDef: funcType IDENT LPAREN funcFParams? RPAREN block; + +funcType: VOID | INT | FLOAT; + +funcFParams: funcFParam (COMMA funcFParam)*; + +funcFParam: + bType IDENT + | bType IDENT LBRACK RBRACK (LBRACK exp RBRACK)*; + +block: LBRACE blockItem* RBRACE; + +blockItem: decl | stmt; + +stmt: + lVal ASSIGN exp SEMI # assignStmt + | exp? SEMI # expStmt + | block # blockStmt + | IF LPAREN cond RPAREN stmt (ELSE stmt)? # ifStmt + | WHILE LPAREN cond RPAREN stmt # whileStmt + | BREAK SEMI # breakStmt + | CONTINUE SEMI # continueStmt + | RETURN exp? SEMI # returnStmt; + +exp: addExp; + +cond: lOrExp; + +lVal: IDENT (LBRACK exp RBRACK)*; + +primaryExp: LPAREN exp RPAREN | lVal | number; + +number: ILITERAL | FLITERAL; + +unaryExp: + primaryExp # primaryUnaryExp + | IDENT LPAREN funcRParams? RPAREN # callUnaryExp + | unaryOp unaryExp # opUnaryExp; + +unaryOp: ADD | SUB | NOT; + +funcRParams: exp (COMMA exp)*; + +mulExp: + unaryExp # unaryMulExp + | mulExp op = (MUL | DIV | MOD) unaryExp # binaryMulExp; + +addExp: + mulExp # mulAddExp + | addExp op = (ADD | SUB) mulExp # binaryAddExp; + +relExp: + addExp # addRelExp + | relExp op = (LT | GT | LE | GE) addExp # binaryRelExp; -/*===-------------------------------------------===*/ -/* Lexer rules */ -/*===-------------------------------------------===*/ +eqExp: + relExp # relEqExp + | eqExp op = (EQ | NE) relExp # binaryEqExp; +lAndExp: eqExp # eqLAndExp | lAndExp AND eqExp # binaryLAndExp; + +lOrExp: lAndExp # andLOrExp | lOrExp OR lAndExp # binaryLOrExp; + +constExp: addExp; + +// ========================= Lexer Rules ========================= + +// keywords +CONST: 'const'; INT: 'int'; +FLOAT: 'float'; +VOID: 'void'; +IF: 'if'; +ELSE: 'else'; +WHILE: 'while'; +BREAK: 'break'; +CONTINUE: 'continue'; RETURN: 'return'; -ASSIGN: '='; +// operators ADD: '+'; +SUB: '-'; +MUL: '*'; +DIV: '/'; +MOD: '%'; + +ASSIGN: '='; +EQ: '=='; +NE: '!='; +LT: '<'; +LE: '<='; +GT: '>'; +GE: '>='; + +NOT: '!'; +AND: '&&'; +OR: '||'; + +// punctuations LPAREN: '('; RPAREN: ')'; +LBRACK: '['; +RBRACK: ']'; LBRACE: '{'; RBRACE: '}'; -SEMICOLON: ';'; - -ID: [a-zA-Z_][a-zA-Z_0-9]*; -ILITERAL: [0-9]+; - -WS: [ \t\r\n] -> skip; -LINECOMMENT: '//' ~[\r\n]* -> skip; -BLOCKCOMMENT: '/*' .*? '*/' -> skip; - -/*===-------------------------------------------===*/ -/* Syntax rules */ -/*===-------------------------------------------===*/ - -compUnit - : funcDef EOF - ; - -decl - : btype varDef SEMICOLON - ; - -btype - : INT - ; - -varDef - : lValue (ASSIGN initValue)? - ; - -initValue - : exp - ; - -funcDef - : funcType ID LPAREN RPAREN blockStmt - ; - -funcType - : INT - ; - -blockStmt - : LBRACE blockItem* RBRACE - ; - -blockItem - : decl - | stmt - ; - -stmt - : returnStmt - ; - -returnStmt - : RETURN exp SEMICOLON - ; - -exp - : LPAREN exp RPAREN # parenExp - | var # varExp - | number # numberExp - | exp ADD exp # additiveExp - ; - -var - : ID - ; - -lValue - : ID - ; - -number - : ILITERAL - ; +COMMA: ','; +SEMI: ';'; + +// identifiers +IDENT: [a-zA-Z_] [a-zA-Z_0-9]*; + +// integer literals +fragment DIGIT: [0-9]; + +fragment NON_ZERO_DIGIT: [1-9]; + +fragment OCT_DIGIT: [0-7]; + +fragment HEX_DIGIT: [0-9a-fA-F]; + +fragment DEC_INTEGER: NON_ZERO_DIGIT DIGIT*; + +fragment OCT_INTEGER: '0' OCT_DIGIT*; + +fragment HEX_INTEGER: '0' [xX] HEX_DIGIT+; + +// float literals +fragment DEC_FRACTION: DIGIT+ '.' DIGIT* | '.' DIGIT+; + +fragment DEC_EXPONENT: [eE] [+\-]? DIGIT+; + +fragment DEC_FLOAT: + DEC_FRACTION DEC_EXPONENT? + | DEC_INTEGER DEC_EXPONENT; + +fragment HEX_FRACTION: + HEX_DIGIT* '.' HEX_DIGIT+ + | HEX_DIGIT+ '.'; + +fragment BIN_EXPONENT: [pP] [+\-]? DIGIT+; + +fragment HEX_FLOAT: + '0' [xX] HEX_FRACTION BIN_EXPONENT + | HEX_INTEGER BIN_EXPONENT; + +ILITERAL: DEC_INTEGER | OCT_INTEGER | HEX_INTEGER; + +FLITERAL: DEC_FLOAT | HEX_FLOAT; + +// comments and whitespace +WS: [ \t\r\n]+ -> skip; + +LINE_COMMENT: '//' ~[\r\n]* -> skip; + +BLOCK_COMMENT: '/*' .*? '*/' -> skip; \ No newline at end of file diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/ANTLRErrorListener.h b/third_party/antlr4-runtime-4.13.2/runtime/src/ANTLRErrorListener.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/ANTLRErrorStrategy.h b/third_party/antlr4-runtime-4.13.2/runtime/src/ANTLRErrorStrategy.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/ANTLRFileStream.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/ANTLRFileStream.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/ANTLRFileStream.h b/third_party/antlr4-runtime-4.13.2/runtime/src/ANTLRFileStream.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/ANTLRInputStream.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/ANTLRInputStream.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/ANTLRInputStream.h b/third_party/antlr4-runtime-4.13.2/runtime/src/ANTLRInputStream.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/BailErrorStrategy.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/BailErrorStrategy.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/BailErrorStrategy.h b/third_party/antlr4-runtime-4.13.2/runtime/src/BailErrorStrategy.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/BaseErrorListener.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/BaseErrorListener.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/BaseErrorListener.h b/third_party/antlr4-runtime-4.13.2/runtime/src/BaseErrorListener.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/BufferedTokenStream.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/BufferedTokenStream.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/BufferedTokenStream.h b/third_party/antlr4-runtime-4.13.2/runtime/src/BufferedTokenStream.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/CharStream.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/CharStream.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/CharStream.h b/third_party/antlr4-runtime-4.13.2/runtime/src/CharStream.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/CommonToken.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/CommonToken.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/CommonToken.h b/third_party/antlr4-runtime-4.13.2/runtime/src/CommonToken.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/CommonTokenFactory.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/CommonTokenFactory.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/CommonTokenFactory.h b/third_party/antlr4-runtime-4.13.2/runtime/src/CommonTokenFactory.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/CommonTokenStream.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/CommonTokenStream.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/CommonTokenStream.h b/third_party/antlr4-runtime-4.13.2/runtime/src/CommonTokenStream.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/ConsoleErrorListener.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/ConsoleErrorListener.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/ConsoleErrorListener.h b/third_party/antlr4-runtime-4.13.2/runtime/src/ConsoleErrorListener.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/DefaultErrorStrategy.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/DefaultErrorStrategy.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/DefaultErrorStrategy.h b/third_party/antlr4-runtime-4.13.2/runtime/src/DefaultErrorStrategy.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/DiagnosticErrorListener.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/DiagnosticErrorListener.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/DiagnosticErrorListener.h b/third_party/antlr4-runtime-4.13.2/runtime/src/DiagnosticErrorListener.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/FailedPredicateException.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/FailedPredicateException.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/FailedPredicateException.h b/third_party/antlr4-runtime-4.13.2/runtime/src/FailedPredicateException.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/InputMismatchException.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/InputMismatchException.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/InputMismatchException.h b/third_party/antlr4-runtime-4.13.2/runtime/src/InputMismatchException.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/IntStream.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/IntStream.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/IntStream.h b/third_party/antlr4-runtime-4.13.2/runtime/src/IntStream.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/InterpreterRuleContext.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/InterpreterRuleContext.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/InterpreterRuleContext.h b/third_party/antlr4-runtime-4.13.2/runtime/src/InterpreterRuleContext.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/Lexer.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/Lexer.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/Lexer.h b/third_party/antlr4-runtime-4.13.2/runtime/src/Lexer.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/LexerInterpreter.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/LexerInterpreter.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/LexerInterpreter.h b/third_party/antlr4-runtime-4.13.2/runtime/src/LexerInterpreter.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/LexerNoViableAltException.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/LexerNoViableAltException.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/LexerNoViableAltException.h b/third_party/antlr4-runtime-4.13.2/runtime/src/LexerNoViableAltException.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/ListTokenSource.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/ListTokenSource.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/ListTokenSource.h b/third_party/antlr4-runtime-4.13.2/runtime/src/ListTokenSource.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/NoViableAltException.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/NoViableAltException.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/NoViableAltException.h b/third_party/antlr4-runtime-4.13.2/runtime/src/NoViableAltException.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/Parser.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/Parser.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/Parser.h b/third_party/antlr4-runtime-4.13.2/runtime/src/Parser.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/ParserInterpreter.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/ParserInterpreter.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/ParserInterpreter.h b/third_party/antlr4-runtime-4.13.2/runtime/src/ParserInterpreter.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/ParserRuleContext.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/ParserRuleContext.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/ParserRuleContext.h b/third_party/antlr4-runtime-4.13.2/runtime/src/ParserRuleContext.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/ProxyErrorListener.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/ProxyErrorListener.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/ProxyErrorListener.h b/third_party/antlr4-runtime-4.13.2/runtime/src/ProxyErrorListener.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/RecognitionException.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/RecognitionException.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/RecognitionException.h b/third_party/antlr4-runtime-4.13.2/runtime/src/RecognitionException.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/Recognizer.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/Recognizer.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/Recognizer.h b/third_party/antlr4-runtime-4.13.2/runtime/src/Recognizer.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/RuleContext.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/RuleContext.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/RuleContext.h b/third_party/antlr4-runtime-4.13.2/runtime/src/RuleContext.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/RuleContextWithAltNum.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/RuleContextWithAltNum.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/RuleContextWithAltNum.h b/third_party/antlr4-runtime-4.13.2/runtime/src/RuleContextWithAltNum.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/RuntimeMetaData.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/RuntimeMetaData.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/RuntimeMetaData.h b/third_party/antlr4-runtime-4.13.2/runtime/src/RuntimeMetaData.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/Token.h b/third_party/antlr4-runtime-4.13.2/runtime/src/Token.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/TokenFactory.h b/third_party/antlr4-runtime-4.13.2/runtime/src/TokenFactory.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/TokenSource.h b/third_party/antlr4-runtime-4.13.2/runtime/src/TokenSource.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/TokenStream.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/TokenStream.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/TokenStream.h b/third_party/antlr4-runtime-4.13.2/runtime/src/TokenStream.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/TokenStreamRewriter.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/TokenStreamRewriter.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/TokenStreamRewriter.h b/third_party/antlr4-runtime-4.13.2/runtime/src/TokenStreamRewriter.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/UnbufferedCharStream.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/UnbufferedCharStream.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/UnbufferedCharStream.h b/third_party/antlr4-runtime-4.13.2/runtime/src/UnbufferedCharStream.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/UnbufferedTokenStream.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/UnbufferedTokenStream.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/UnbufferedTokenStream.h b/third_party/antlr4-runtime-4.13.2/runtime/src/UnbufferedTokenStream.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/Vocabulary.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/Vocabulary.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/Vocabulary.h b/third_party/antlr4-runtime-4.13.2/runtime/src/Vocabulary.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/WritableToken.h b/third_party/antlr4-runtime-4.13.2/runtime/src/WritableToken.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATN.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATN.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATN.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATN.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNConfig.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNConfig.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNConfig.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNConfig.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNConfigSet.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNConfigSet.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNConfigSet.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNConfigSet.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNDeserializationOptions.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNDeserializationOptions.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNDeserializationOptions.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNDeserializationOptions.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNDeserializer.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNDeserializer.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNDeserializer.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNDeserializer.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNSimulator.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNSimulator.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNSimulator.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNSimulator.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNState.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNState.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNState.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNState.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNType.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ATNType.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ActionTransition.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ActionTransition.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ActionTransition.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ActionTransition.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/AmbiguityInfo.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/AmbiguityInfo.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/AmbiguityInfo.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/AmbiguityInfo.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ArrayPredictionContext.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ArrayPredictionContext.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ArrayPredictionContext.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ArrayPredictionContext.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/AtomTransition.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/AtomTransition.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/AtomTransition.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/AtomTransition.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/BasicBlockStartState.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/BasicBlockStartState.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/BasicState.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/BasicState.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/BlockEndState.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/BlockEndState.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/BlockStartState.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/BlockStartState.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ContextSensitivityInfo.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ContextSensitivityInfo.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ContextSensitivityInfo.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ContextSensitivityInfo.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/DecisionEventInfo.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/DecisionEventInfo.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/DecisionEventInfo.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/DecisionEventInfo.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/DecisionInfo.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/DecisionInfo.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/DecisionInfo.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/DecisionInfo.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/DecisionState.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/DecisionState.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/DecisionState.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/DecisionState.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/EpsilonTransition.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/EpsilonTransition.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/EpsilonTransition.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/EpsilonTransition.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ErrorInfo.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ErrorInfo.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ErrorInfo.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ErrorInfo.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LL1Analyzer.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LL1Analyzer.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LL1Analyzer.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LL1Analyzer.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerATNConfig.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerATNConfig.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerATNConfig.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerATNConfig.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerATNSimulator.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerATNSimulator.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerATNSimulator.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerATNSimulator.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerAction.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerAction.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerActionExecutor.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerActionExecutor.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerActionExecutor.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerActionExecutor.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerActionType.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerActionType.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerChannelAction.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerChannelAction.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerChannelAction.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerChannelAction.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerCustomAction.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerCustomAction.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerCustomAction.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerCustomAction.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerIndexedCustomAction.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerIndexedCustomAction.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerIndexedCustomAction.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerIndexedCustomAction.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerModeAction.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerModeAction.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerModeAction.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerModeAction.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerMoreAction.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerMoreAction.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerMoreAction.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerMoreAction.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerPopModeAction.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerPopModeAction.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerPopModeAction.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerPopModeAction.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerPushModeAction.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerPushModeAction.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerPushModeAction.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerPushModeAction.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerSkipAction.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerSkipAction.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerSkipAction.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerSkipAction.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerTypeAction.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerTypeAction.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerTypeAction.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LexerTypeAction.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LookaheadEventInfo.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LookaheadEventInfo.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LookaheadEventInfo.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LookaheadEventInfo.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LoopEndState.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/LoopEndState.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/NotSetTransition.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/NotSetTransition.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/NotSetTransition.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/NotSetTransition.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/OrderedATNConfigSet.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/OrderedATNConfigSet.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/OrderedATNConfigSet.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/OrderedATNConfigSet.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ParseInfo.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ParseInfo.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ParseInfo.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ParseInfo.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ParserATNSimulator.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ParserATNSimulator.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ParserATNSimulator.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ParserATNSimulator.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/PlusBlockStartState.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/PlusBlockStartState.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/PlusLoopbackState.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/PlusLoopbackState.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/PrecedencePredicateTransition.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/PrecedencePredicateTransition.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/PrecedencePredicateTransition.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/PrecedencePredicateTransition.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/PredicateEvalInfo.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/PredicateEvalInfo.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/PredicateEvalInfo.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/PredicateEvalInfo.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/PredicateTransition.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/PredicateTransition.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/PredicateTransition.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/PredicateTransition.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/PredictionContext.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/PredictionContext.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/PredictionContext.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/PredictionContext.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/PredictionMode.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/PredictionMode.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/PredictionMode.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/PredictionMode.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ProfilingATNSimulator.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ProfilingATNSimulator.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ProfilingATNSimulator.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/ProfilingATNSimulator.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/RangeTransition.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/RangeTransition.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/RangeTransition.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/RangeTransition.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/RuleStartState.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/RuleStartState.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/RuleStopState.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/RuleStopState.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/RuleTransition.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/RuleTransition.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/RuleTransition.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/RuleTransition.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/SemanticContext.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/SemanticContext.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/SemanticContext.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/SemanticContext.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/SetTransition.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/SetTransition.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/SetTransition.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/SetTransition.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/SingletonPredictionContext.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/SingletonPredictionContext.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/SingletonPredictionContext.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/SingletonPredictionContext.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/StarBlockStartState.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/StarBlockStartState.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/StarLoopEntryState.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/StarLoopEntryState.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/StarLoopbackState.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/StarLoopbackState.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/StarLoopbackState.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/StarLoopbackState.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/TokensStartState.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/TokensStartState.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/Transition.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/Transition.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/Transition.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/Transition.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/WildcardTransition.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/WildcardTransition.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/atn/WildcardTransition.h b/third_party/antlr4-runtime-4.13.2/runtime/src/atn/WildcardTransition.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/dfa/DFA.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/dfa/DFA.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/dfa/DFA.h b/third_party/antlr4-runtime-4.13.2/runtime/src/dfa/DFA.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/dfa/DFASerializer.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/dfa/DFASerializer.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/dfa/DFASerializer.h b/third_party/antlr4-runtime-4.13.2/runtime/src/dfa/DFASerializer.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/dfa/DFAState.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/dfa/DFAState.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/dfa/DFAState.h b/third_party/antlr4-runtime-4.13.2/runtime/src/dfa/DFAState.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/dfa/LexerDFASerializer.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/dfa/LexerDFASerializer.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/dfa/LexerDFASerializer.h b/third_party/antlr4-runtime-4.13.2/runtime/src/dfa/LexerDFASerializer.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/misc/InterpreterDataReader.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/misc/InterpreterDataReader.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/misc/InterpreterDataReader.h b/third_party/antlr4-runtime-4.13.2/runtime/src/misc/InterpreterDataReader.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/misc/Interval.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/misc/Interval.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/misc/Interval.h b/third_party/antlr4-runtime-4.13.2/runtime/src/misc/Interval.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/misc/IntervalSet.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/misc/IntervalSet.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/misc/IntervalSet.h b/third_party/antlr4-runtime-4.13.2/runtime/src/misc/IntervalSet.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/misc/MurmurHash.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/misc/MurmurHash.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/misc/MurmurHash.h b/third_party/antlr4-runtime-4.13.2/runtime/src/misc/MurmurHash.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/misc/Predicate.h b/third_party/antlr4-runtime-4.13.2/runtime/src/misc/Predicate.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/support/CPPUtils.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/support/CPPUtils.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/AbstractParseTreeVisitor.h b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/AbstractParseTreeVisitor.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/ErrorNode.h b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/ErrorNode.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/ErrorNodeImpl.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/ErrorNodeImpl.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/ErrorNodeImpl.h b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/ErrorNodeImpl.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/ParseTree.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/ParseTree.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/ParseTree.h b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/ParseTree.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/ParseTreeListener.h b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/ParseTreeListener.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/ParseTreeProperty.h b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/ParseTreeProperty.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/ParseTreeVisitor.h b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/ParseTreeVisitor.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/ParseTreeWalker.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/ParseTreeWalker.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/ParseTreeWalker.h b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/ParseTreeWalker.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/TerminalNode.h b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/TerminalNode.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/TerminalNodeImpl.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/TerminalNodeImpl.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/TerminalNodeImpl.h b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/TerminalNodeImpl.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/Trees.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/Trees.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/Trees.h b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/Trees.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/Chunk.h b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/Chunk.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/ParseTreeMatch.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/ParseTreeMatch.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/ParseTreeMatch.h b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/ParseTreeMatch.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/ParseTreePattern.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/ParseTreePattern.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/ParseTreePattern.h b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/ParseTreePattern.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/ParseTreePatternMatcher.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/ParseTreePatternMatcher.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/ParseTreePatternMatcher.h b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/ParseTreePatternMatcher.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/RuleTagToken.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/RuleTagToken.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/RuleTagToken.h b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/RuleTagToken.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/TagChunk.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/TagChunk.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/TagChunk.h b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/TagChunk.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/TextChunk.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/TextChunk.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/TextChunk.h b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/TextChunk.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/TokenTagToken.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/TokenTagToken.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/TokenTagToken.h b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/pattern/TokenTagToken.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPath.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPath.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPath.h b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPath.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathElement.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathElement.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathElement.h b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathElement.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathLexerErrorListener.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathLexerErrorListener.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathLexerErrorListener.h b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathLexerErrorListener.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathRuleAnywhereElement.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathRuleAnywhereElement.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathRuleAnywhereElement.h b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathRuleAnywhereElement.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathRuleElement.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathRuleElement.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathRuleElement.h b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathRuleElement.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathTokenAnywhereElement.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathTokenAnywhereElement.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathTokenAnywhereElement.h b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathTokenAnywhereElement.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathTokenElement.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathTokenElement.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathTokenElement.h b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathTokenElement.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathWildcardAnywhereElement.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathWildcardAnywhereElement.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathWildcardAnywhereElement.h b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathWildcardAnywhereElement.h old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathWildcardElement.cpp b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathWildcardElement.cpp old mode 100755 new mode 100644 diff --git a/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathWildcardElement.h b/third_party/antlr4-runtime-4.13.2/runtime/src/tree/xpath/XPathWildcardElement.h old mode 100755 new mode 100644