Antlr4 C ++目标看起来像Java

时间:2019-02-19 10:56:29

标签: antlr4

我用antlr4 c ++目标生成了一个c ++ python解析器,但是当我尝试使用它时,出现以下错误: Python3Lexer.h:48:5:错误:程序中出现“ @”错误

这个Python3Lexer.h(由Antlr4 c ++目标生成)看起来不好吗? 错误行是@Override,它是一个Java关键字,而不是c ++! 你知道我在做什么错吗?

这是此Python3Lexer.h的样子:

#include "antlr4-runtime.h"

class  Python3Lexer : public antlr4::Lexer {
public:
  (...)
  Python3Lexer(antlr4::CharStream *input);
  ~Python3Lexer();

    // A queue where extra tokens are pushed on (see the NEWLINE lexer rule).
    private java.util.LinkedList<Token> tokens = new java.util.LinkedList<>();
    // The stack that keeps track of the indentation level.
    private java.util.Stack<Integer> indents = new java.util.Stack<>();
    // The amount of opened braces, brackets and parenthesis.
    private int opened = 0;
    // The most recently produced token.
    private Token lastToken = null;
    @Override
    public void emit(Token t) {
      super.setToken(t);
      tokens.offer(t);
    }

    @Override
    public Token nextToken() {
(...)

1 个答案:

答案 0 :(得分:1)

如果查看正在使用的语法文件(已链接到注释中),则会看到该文件包含Java代码。为了在C ++中使用此语法,您首先必须将Java代码转换为C ++。