如何解决使用Antlr4的100个Java编译错误
我是使用ANTLR4的新手,并且在编译过程中遇到了一些麻烦(使用Ubuntu)。 我正在使用以下语法“ Expr”:
grammar Expr;
prog: (expr NEWLINE)* ;
expr: expr ('*'|'/') expr
| expr ('+'|'-') expr
| INT
| '(' expr ')'
;
NEWLINE : [\r\n]+ ;
INT : [0-9]+ ;
当我运行命令“ antlr4 Expr.g4” ..没有错误.. 但是,当我尝试使用“ javac Expr * .java”进行编译时,我得到了100个错误的列表:
ExprBaseListener.java:3: error: package org.antlr.v4.runtime does not exist
import org.antlr.v4.runtime.ParserRuleContext;
^
ExprBaseListener.java:4: error: package org.antlr.v4.runtime.tree does not exist
import org.antlr.v4.runtime.tree.ErrorNode;
^
ExprBaseListener.java:5: error: package org.antlr.v4.runtime.tree does not exist
import org.antlr.v4.runtime.tree.TerminalNode;
^
ExprListener.java:2: error: package org.antlr.v4.runtime.tree does not exist
import org.antlr.v4.runtime.tree.ParseTreeListener;
^
ExprListener.java:8: error: cannot find symbol
public interface ExprListener extends ParseTreeListener {
^
symbol: class ParseTreeListener
ExprParser.java:3: error: package org.antlr.v4.runtime.dfa does not exist
import org.antlr.v4.runtime.dfa.DFA;
^
ExprParser.java:12: error: cannot find symbol
public class ExprParser extends Parser {
^
symbol: class Parser
ExprParser.java:90: error: cannot find symbol
public static class ProgContext extends ParserRuleContext {
^
symbol: class ParserRuleContext
location: class ExprParser
ExprParser.java:151: error: cannot find symbol
public static class ExprContext extends ParserRuleContext {
^
symbol: class ParserRuleContext
location: class ExprParser
ExprBaseListener.java:43: error: cannot find symbol
@Override public void enterEveryRule(ParserRuleContext ctx) { }
^
symbol: class ParserRuleContext
location: class ExprBaseListener
ExprBaseListener.java:49: error: cannot find symbol
@Override public void exitEveryRule(ParserRuleContext ctx) { }
^
symbol: class ParserRuleContext
location: class ExprBaseListener
ExprBaseListener.java:55: error: cannot find symbol
@Override public void visitTerminal(TerminalNode node) { }
^
symbol: class TerminalNode
location: class ExprBaseListener
ExprBaseListener.java:61: error: cannot find symbol
@Override public void visitErrorNode(ErrorNode node) { }
^
symbol: class ErrorNode
location: class ExprBaseListener
ExprParser.java:152: error: cannot find symbol
public TerminalNode INT() { return getToken(ExprParser.INT,0); }
^
symbol: class TerminalNode
location: class ExprContext
ExprParser.java:159: error: cannot find symbol
public ExprContext(ParserRuleContext parent,int invokingState) {
^
symbol: class ParserRuleContext
location: class ExprContext
ExprParser.java:164: error: cannot find symbol
public void enterRule(ParseTreeListener listener) {
^
symbol: class ParseTreeListener
location: class ExprContext
ExprParser.java:168: error: cannot find symbol
public void exitRule(ParseTreeListener listener) {
^
symbol: class ParseTreeListener
location: class ExprContext
ExprParser.java:97: error: cannot find symbol
public List<TerminalNode> NEWLINE() { return getTokens(ExprParser.NEWLINE); }
^
symbol: class TerminalNode
location: class ProgContext
ExprParser.java:98: error: cannot find symbol
public TerminalNode NEWLINE(int i) {
^
symbol: class TerminalNode
location: class ProgContext
ExprParser.java:101: error: cannot find symbol
public ProgContext(ParserRuleContext parent,int invokingState) {
^
symbol: class ParserRuleContext
location: class ProgContext
ExprParser.java:106: error: cannot find symbol
public void enterRule(ParseTreeListener listener) {
^
symbol: class ParseTreeListener
location: class ProgContext
ExprParser.java:110: error: cannot find symbol
public void exitRule(ParseTreeListener listener) {
^
symbol: class ParseTreeListener
location: class ProgContext
ExprParser.java:15: error: cannot find symbol
protected static final DFA[] _decisionToDFA;
^
symbol: class DFA
location: class ExprParser
ExprParser.java:16: error: cannot find symbol
protected static final PredictionContextCache _sharedContextCache =
^
symbol: class PredictionContextCache
location: class ExprParser
ExprParser.java:41: error: cannot find symbol
public static final Vocabulary VOCABULARY = new VocabularyImpl(_LIteraL_NAMES,_SYMBOLIC_NAMES);
^
symbol: class Vocabulary
location: class ExprParser
ExprParser.java:70: error: cannot find symbol
public Vocabulary getVocabulary() {
^
symbol: class Vocabulary
location: class ExprParser
ExprParser.java:84: error: cannot find symbol
public ATN getATN() { return _ATN; }
^
symbol: class ATN
location: class ExprParser
ExprParser.java:86: error: cannot find symbol
public ExprParser(TokenStream input) {
^
symbol: class TokenStream
location: class ExprParser
ExprParser.java:115: error: cannot find symbol
public final ProgContext prog() throws RecognitionException {
^
symbol: class RecognitionException
location: class ExprParser
ExprParser.java:173: error: cannot find symbol
public final ExprContext expr() throws RecognitionException {
^
symbol: class RecognitionException
location: class ExprParser
ExprParser.java:177: error: cannot find symbol
private ExprContext expr(int _p) throws RecognitionException {
^
symbol: class RecognitionException
location: class ExprParser
ExprParser.java:283: error: cannot find symbol
public boolean sempred(RuleContext _localctx,int ruleIndex,int predindex) {
^
symbol: class RuleContext
location: class ExprParser
ExprParser.java:311: error: cannot find symbol
public static final ATN _ATN =
^
symbol: class ATN
location: class ExprParser
ExprParser.java:2: error: package org.antlr.v4.runtime.atn does not exist
import org.antlr.v4.runtime.atn.*;
^
ExprParser.java:4: error: package org.antlr.v4.runtime does not exist
import org.antlr.v4.runtime.*;
^
ExprParser.java:5: error: package org.antlr.v4.runtime.misc does not exist
import org.antlr.v4.runtime.misc.*;
^
ExprParser.java:6: error: package org.antlr.v4.runtime.tree does not exist
import org.antlr.v4.runtime.tree.*;
^
ExprLexer.java:2: error: package org.antlr.v4.runtime does not exist
import org.antlr.v4.runtime.Lexer;
^
ExprLexer.java:3: error: package org.antlr.v4.runtime does not exist
import org.antlr.v4.runtime.CharStream;
^
ExprLexer.java:4: error: package org.antlr.v4.runtime does not exist
import org.antlr.v4.runtime.Token;
^
ExprLexer.java:5: error: package org.antlr.v4.runtime does not exist
import org.antlr.v4.runtime.TokenStream;
^
ExprLexer.java:8: error: package org.antlr.v4.runtime.dfa does not exist
import org.antlr.v4.runtime.dfa.DFA;
^
ExprLexer.java:12: error: cannot find symbol
public class ExprLexer extends Lexer {
^
symbol: class Lexer
ExprLexer.java:15: error: cannot find symbol
protected static final DFA[] _decisionToDFA;
^
symbol: class DFA
location: class ExprLexer
ExprLexer.java:16: error: cannot find symbol
protected static final PredictionContextCache _sharedContextCache =
^
symbol: class PredictionContextCache
location: class ExprLexer
ExprLexer.java:47: error: cannot find symbol
public static final Vocabulary VOCABULARY = new VocabularyImpl(_LIteraL_NAMES,_SYMBOLIC_NAMES);
^
symbol: class Vocabulary
location: class ExprLexer
ExprLexer.java:76: error: cannot find symbol
public Vocabulary getVocabulary() {
^
symbol: class Vocabulary
location: class ExprLexer
ExprLexer.java:81: error: cannot find symbol
public ExprLexer(CharStream input) {
^
symbol: class CharStream
location: class ExprLexer
ExprLexer.java:102: error: cannot find symbol
public ATN getATN() { return _ATN; }
^
symbol: class ATN
location: class ExprLexer
ExprLexer.java:117: error: cannot find symbol
public static final ATN _ATN =
^
symbol: class ATN
location: class ExprLexer
ExprLexer.java:6: error: package org.antlr.v4.runtime does not exist
import org.antlr.v4.runtime.*;
^
ExprLexer.java:7: error: package org.antlr.v4.runtime.atn does not exist
import org.antlr.v4.runtime.atn.*;
^
ExprLexer.java:9: error: package org.antlr.v4.runtime.misc does not exist
import org.antlr.v4.runtime.misc.*;
^
ExprBaseListener.java:43: error: method does not override or implement a method from a supertype
@Override public void enterEveryRule(ParserRuleContext ctx) { }
^
ExprBaseListener.java:49: error: method does not override or implement a method from a supertype
@Override public void exitEveryRule(ParserRuleContext ctx) { }
^
ExprBaseListener.java:55: error: method does not override or implement a method from a supertype
@Override public void visitTerminal(TerminalNode node) { }
^
ExprBaseListener.java:61: error: method does not override or implement a method from a supertype
@Override public void visitErrorNode(ErrorNode node) { }
^
ExprParser.java:13: error: cannot find symbol
static { RuntimeMetaData.checkVersion("4.7.2",RuntimeMetaData.VERSION); }
^
symbol: variable RuntimeMetaData
location: class ExprParser
ExprParser.java:13: error: cannot find symbol
static { RuntimeMetaData.checkVersion("4.7.2",RuntimeMetaData.VERSION); }
^
symbol: variable RuntimeMetaData
location: class ExprParser
ExprParser.java:17: error: cannot find symbol
new PredictionContextCache();
^
symbol: class PredictionContextCache
location: class ExprParser
ExprParser.java:41: error: cannot find symbol
public static final Vocabulary VOCABULARY = new VocabularyImpl(_LIteraL_NAMES,_SYMBOLIC_NAMES);
^
symbol: class VocabularyImpl
location: class ExprParser
ExprParser.java:62: error: method does not override or implement a method from a supertype
@Override
^
ExprParser.java:68: error: method does not override or implement a method from a supertype
@Override
^
ExprParser.java:74: error: method does not override or implement a method from a supertype
@Override
^
ExprParser.java:77: error: method does not override or implement a method from a supertype
@Override
^
ExprParser.java:80: error: method does not override or implement a method from a supertype
@Override
^
ExprParser.java:83: error: method does not override or implement a method from a supertype
@Override
^
ExprParser.java:88: error: cannot find symbol
_interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
^
symbol: variable _interp
location: class ExprParser
ExprParser.java:88: error: cannot find symbol
_interp = new ParserATNSimulator(this,_sharedContextCache);
^
symbol: class ParserATNSimulator
location: class ExprParser
ExprParser.java:92: error: cannot find symbol
return getRuleContexts(ExprContext.class);
^
symbol: method getRuleContexts(Class<ExprContext>)
location: class ProgContext
ExprParser.java:95: error: cannot find symbol
return getRuleContext(ExprContext.class,i);
^
symbol: method getRuleContext(Class<ExprContext>,int)
location: class ProgContext
ExprParser.java:97: error: cannot find symbol
public List<TerminalNode> NEWLINE() { return getTokens(ExprParser.NEWLINE); }
^
symbol: method getTokens(int)
location: class ProgContext
ExprParser.java:99: error: cannot find symbol
return getToken(ExprParser.NEWLINE,i);
^
symbol: method getToken(int,int)
location: class ProgContext
ExprParser.java:104: error: method does not override or implement a method from a supertype
@Override public int getRuleIndex() { return RULE_prog; }
^
ExprParser.java:105: error: method does not override or implement a method from a supertype
@Override
^
ExprParser.java:109: error: method does not override or implement a method from a supertype
@Override
^
ExprParser.java:116: error: cannot find symbol
ProgContext _localctx = new ProgContext(_ctx,getState());
^
symbol: variable _ctx
location: class ExprParser
ExprParser.java:116: error: cannot find symbol
ProgContext _localctx = new ProgContext(_ctx,getState());
^
symbol: method getState()
location: class ExprParser
ExprParser.java:117: error: cannot find symbol
enterRule(_localctx,RULE_prog);
^
symbol: method enterRule(ProgContext,int,int)
location: class ExprParser
ExprParser.java:120: error: cannot find symbol
enterOuteralt(_localctx,1);
^
symbol: method enterOuteralt(ProgContext,int)
location: class ExprParser
ExprParser.java:122: error: cannot find symbol
setState(9);
^
symbol: method setState(int)
location: class ExprParser
ExprParser.java:123: error: cannot find symbol
_errHandler.sync(this);
^
symbol: variable _errHandler
location: class ExprParser
ExprParser.java:124: error: cannot find symbol
_la = _input.LA(1);
^
symbol: variable _input
location: class ExprParser
ExprParser.java:128: error: cannot find symbol
setState(4);
^
symbol: method setState(int)
location: class ExprParser
ExprParser.java:130: error: cannot find symbol
setState(5);
^
symbol: method setState(int)
location: class ExprParser
ExprParser.java:131: error: cannot find symbol
match(NEWLINE);
^
symbol: method match(int)
location: class ExprParser
ExprParser.java:134: error: cannot find symbol
setState(11);
^
symbol: method setState(int)
location: class ExprParser
ExprParser.java:135: error: cannot find symbol
_errHandler.sync(this);
^
symbol: variable _errHandler
location: class ExprParser
ExprParser.java:136: error: cannot find symbol
_la = _input.LA(1);
^
symbol: variable _input
location: class ExprParser
ExprParser.java:140: error: cannot find symbol
catch (RecognitionException re) {
^
symbol: class RecognitionException
location: class ExprParser
ExprParser.java:141: error: cannot find symbol
_localctx.exception = re;
^
symbol: variable exception
location: variable _localctx of type ProgContext
ExprParser.java:142: error: cannot find symbol
_errHandler.reportError(this,re);
^
symbol: variable _errHandler
location: class ExprParser
ExprParser.java:143: error: cannot find symbol
_errHandler.recover(this,re);
^
symbol: variable _errHandler
location: class ExprParser
ExprParser.java:146: error: cannot find symbol
exitRule();
^
symbol: method exitRule()
location: class ExprParser
ExprParser.java:152: error: cannot find symbol
public TerminalNode INT() { return getToken(ExprParser.INT,0); }
^
symbol: method getToken(int,int)
location: class ExprContext
ExprParser.java:154: error: cannot find symbol
return getRuleContexts(ExprContext.class);
^
symbol: method getRuleContexts(Class<ExprContext>)
location: class ExprContext
ExprParser.java:157: error: cannot find symbol
return getRuleContext(ExprContext.class,int)
location: class ExprContext
ExprParser.java:162: error: method does not override or implement a method from a supertype
@Override public int getRuleIndex() { return RULE_expr; }
^
ExprParser.java:163: error: method does not override or implement a method from a supertype
@Override
^
ExprParser.java:167: error: method does not override or implement a method from a supertype
@Override
^
100 errors
似乎此错误始终在我运行的所有文件中再次出现 任何帮助将不胜感激!
谢谢!
解决方法
您的问题与此问题类似:
Compiling sample ANTRL4 output
您必须检查您的类路径,这是install ANTLR Run-time的一种方式 在设备上,但是请注意,下载antlr时必须将http更改为https。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。