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
;
該指令,密鑰和參數(單一個用於測試)規則只是用於獲取的主要語法。
感謝您的幫助!