簡體   English   中英

ANTLR4 和 C++ 入門

[英]Getting Started with ANTLR4 and C++

第一次在這里提問,所以請多多包涵。 因此,我從語法存儲庫中獲得了一個語法文件,我正在嘗試將其與 C++ 一起使用。 (在 macOS 上開發)。 使用 ANTLR 生成詞法分析器和解析器沒有問題。 但在那之后,我不知道如何運行/使用生成的 .cpp 和 .h 文件。 我知道我必須下載一個 antlr 運行時,並且我已經從 antlr.org 網站下載(給了我兩個文件夾,antlr4-runtime 和 lib),但是我對 C++ 的新手理解似乎阻止了我除此之外。 如何使用運行時處理這些文件? 我沒有使用 IDE,只是從命令行使用 g++。 感謝您的任何幫助!

我發現本指南很有幫助: C++ 中的 ANTLR 入門 (啊,后來看到@ggorlen 的評論。)

如果您在該頁面上向下滾動到中途,則有一個標題為如何在 C++ 中使用 ANTLR 的部分 我想這就是你所在的地方。

我將復制該示例,因為 SO 通常更喜歡這個。 說這是你的 main.cpp:

#include <iostream>
#include "antlr4-runtime/antlr4-runtime.h"
#include "antlr4-runtime/SceneLexer.h"
#include "antlr4-runtime/SceneParser.h"
#include "ImageVisitor.h"

using namespace std;
using namespace antlr4;
int main(int argc, const char* argv[]) {

    std::ifstream stream;
    stream.open("input.scene");

    ANTLRInputStream input(stream);
    SceneLexer lexer(&input);
    CommonTokenStream tokens(&lexer);
    SceneParser parser(&tokens);    
    SceneParser::FileContext* tree = parser.file();
    ImageVisitor visitor;
    Scene scene = visitor.visitFile(tree);
    scene.draw();
    return 0;
}

您希望在示例中包含您的 lexer 和 parser.h(頭文件)文件而不是 SceneLexer/Parser,並且還包含 antlr4-runtime.h。 然后在所有 your.cpp 文件上運行 g++,例如

$ g++ main.cpp YourLexer.h YourParser.h

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM