0

我目前正在做一个关于 yang parser 的项目。我遇到了一个名为“jYang”的开源工具,它是 Java 中 Yang 文件的解析器。我已经下载了源文件并理解了它的过程,但我不知道如何将 Yang 文件输入到解析器中。到目前为止,我已经浏览了以下网站,但我无法找到解决方案: https : //hal.inria.fr/inria-00411261/file/yang.pdf http://jyang.gforge.inria.fr/JYang_Home_Page .html

4

1 回答 1

0

以下是您提供的第一个链接中第 4.3.2 节“程序访问”中的示例,为清楚起见添加了我的评论。

public static void main(String[] args) throws Exception {
    // Create a FileInputStream using a string with the path to your yang file
    FileInputStream yangfile = new FileInputStream(args[0]);
    // Pass the yang file input stream to the parser by calling its static constructor
    new yang(yangfile);
    // Run the parser on the yang file and store the result in spec
    YANG_Specification spec = yang.Start();
    // Call spec's functions to access it
    spec.check();
}

查看源代码,jYang 提供了 4 个不同的静态构造函数,您将希望使用其中的第 2 个或第 3 个来指定文件的编码:

yang(java.io.InputStream stream);
yang(java.io.InputStream stream, String encoding);
yang(java.io.Reader stream);
yang(yangTokenManager tm);

如果您尝试多次调用 jYang 的构造函数中的任何一个,它们将抛出错误。开发人员通过使用静态状态变量来强制类以静态方式运行,该变量跟踪其构造函数是否已被调用。如果您需要重试解析文件或开始解析新的yang文件,您将需要使用ReInit函数后面的Start函数。

// One of these 4
yang.ReInit(java.io.InputStream stream);
yang.ReInit(java.io.InputStream stream, String encoding);
yang.ReInit(java.io.Reader stream);
yang.ReInit(yangTokenManager tm);
// Followed by
YANG_Specification spec = yang.Start();
于 2015-07-13T19:17:51.463 回答