1
我正在用ANTLR4构建解析Quake III着色器的语法。如何制作“全局解析器规则”?
这里是一个着色器的为例:
textures/liquids/lava-example
{
deformVertexes wave sin 0 3 0 0.1
q3map_tessSize 64
surfaceparm lava
qer_editorimage textures/common/lava.tga
{
map textures/common/lava.tga
}
}
正如你所看到的,结构是:
shadername
{
directive
directive
//....
{
directive
//...
}
}
我的问题
正如你所看到的,一个指令是由一个键和一些参数组成。键和参数是已知的(可能有超过100个键)。我想知道如何为一个指令(键+参数)设置一个全局规则,并在它旁边指定所有的规则。而且,如果我可以将它们全部放在不同的文件中以保持清晰的语法,那就更好了。
我有什么,现在
parser grammar ShaderParser;
options {
tokenVocab=ShaderLexer;
}
shaderlist
: shader+
;
shader
: shadername LBracket directive* stage* RBracket
;
shadername
: Path CompileTime?
;
stage
: LBracket directive* RBracket
;
directive
: key parameter?
| key DQuote parameter DQuote
| key SQuote parameter SQuote
;
key
: Word
;
parameter
: Word
| Integer
| Double
| Path
;
该指令,密钥和参数(单一个用于测试)规则只是用于获取的主要语法。
感谢您的帮助!