微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Antlr4的100个Java编译错误

如何解决使用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 举报,一经查实,本站将立刻删除。