[英]How to split an ANTLR grammar file into multiple ones
我有一個大的語法文件,並計划將其拆分為多個文件,以便可以在另一個語法文件中重用一些較小的文件。 我曾嘗試這樣做,但失敗了。 您能告訴我是否有這樣的功能嗎?如果有,請指導我舉一個例子。
如果要拆分詞法分析器和解析器。
Lexer:
lexer grammar HelloLexer;
Hello : 'hello' ;
ID : [a-z]+ ; // match lower-case identifiers
WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines
解析器:
parser grammar HelloParser;
options { tokenVocab=HelloLexer; }
r : Hello ID ;
記住將文件命名為HelloLexer.g4和HelloParser.g4
如果要導入整個語法,則應使用import關鍵字
grammar Hello;
import OtherGrammar;
Hello : 'hello' ;
ID : [a-z]+ ; // match lower-case identifiers
WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines
r : Hello ID ;
您沒有提到ANTLR版本,所以我假設您使用的是當前版本-4.x。 在ANTLR4中,可以使用import
關鍵字導入語法。 像這樣:
文件:CommonLexerRules.g4
lexer grammar CommonLexerRules;
ID : [a-zA-Z]+ ;
...
文件:MyParser.g4
grammar MyParser;
import CommonLexerRules; //includes all rules from lexer CommonLexerRules.g4
...
“主語法”中的規則會覆蓋導入語法中的規則以實現繼承。 在此處查看更多詳細信息: https : //theantlrguy.atlassian.net/wiki/display/ANTLR4/Grammar+Structure#GrammarStructure-GrammarImports
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.