使用jyang解析器将yang文件转换为yin

时间:2015-02-13 10:47:18

标签: java ietf-netmod-yang

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

1 个答案:

答案 0 :(得分:0)

以下是您提供的first link第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种不同的静态构造函数,您需要使用第二个或第三个来指定文件的编码:

yang(java.io.InputStream stream);
yang(java.io.InputStream stream, String encoding);
yang(java.io.Reader stream);
yang(yangTokenManager tm);
如果你尝试多次调用它们,jYang的构造函数将抛出一个错误。开发人员通过使用静态状态变量强制该类静态地运行,该变量跟踪其构造函数是否已被调用。如果您需要重试解析文件或开始解析新的杨文件,则需要使用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();