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