1、在Java包中建立一个文件,定义一个ProtoBufTokenType类型的类,继承自IElementType。如图。
2、在ProtoBufTokenType的构造函数中要传递一个单例的Language实例。如图。
3、在与ProtoBufTokenType同一个包下面建立ProtoBufElementType类型的类,继承自IElementType。并且同样在构造函数中要传递一个单例的Language实例。如图
4、定义一个“proto”属性文件的“bnf” 语法配置文件。如图
5、在bnf中添加语法。到其中属性文件可以包含属性、注释和换行符。语法定义了对语言的支持是多么灵活。我们指定一个属性可能具有或可能没有键和值。这允许IDE仍然识别错误定义的属性,并提供相应的代码分析和快速修复。如图
6、那么现在我们可以生成一个语法解析器了。当语法定义之后,我们可以通过从protobuf.bnf文件的上下文菜单中生成的解析器代码,生成一个PSI类解析器。这将在生成d 的文件夹中生成解析器和PSI元素。将此文件夹标记为生成的源根,确保所有内容都没有错误编译。如图