本文将介绍一个小型的图形用户界面(GUI)编辑器,它专门用于处理PCK(Parser Construction Kit)和XBNF(Extended Backus-Naur Form)文件。这个工具旨在帮助开发者快速生成PCK规范、解析器和分词器。
要开始使用这个编辑器,首先需要创建或加载一个文档,通常是XBNF文件。编辑器支持编辑XBNF文件、PCK文件,甚至C#和Visual Basic文件。根据当前激活的文档类型,构建菜单中的某些操作可能会被禁用。
构建操作是在当前激活的文档上执行的。一旦输入了代码,可以使用构建菜单将其转换为解析器、分词器或PCK规范。值得注意的是,要为LL(1)解析器创建匹配的分词器,必须使用LL(1)版本的分词器菜单项,或者从已经分解的PCK规范中创建分词器。否则,分词器将拥有错误的符号表,这将导致解析器无法解析输入。
消息、警告和错误会在文本编辑器下方的消息视图中报告。点击一行将把带到相关文件中的关联位置,如果没有关联文件,则类似于Visual Studio。通常没有关联文件,因为中间的PCK是在内存中生成的,没有关联文件。如果喜欢,可以显式生成PCK。然后,即使该文档尚未保存,错误也会有PCK文档中的行号。
与Visual Studio不同,不必保存文档就可以从它们构建,从它们构建也不会导致它们被保存。文件被写入的唯一时间是选择保存它的时候。
可以在选项菜单中设置代码生成语言,但Visual Basic的代码DOM提供程序存在bug,可能无法为工作,直到找到一个不会破坏设计的解决方法。
在项目中嵌入了一个旧版本的ICSharpCode.TextEditor,用于语法高亮。编辑器最初是基于Qwertie的这个提交构建的,已经进行了大量修改以适应这个项目。
2019年8月15日 - 初始提交
以下是使用这个GUI编辑器生成解析器的示例代码。
// 假设有一个XBNF文件,内容如下:
expression = term { ('+' | '-') term }
term = factor { ('*' | '/') factor }
factor = '(' expression ')' | number
number = digit { digit }
digit = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'