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