簡體   English   中英

如何將ANTLR語法文件拆分為多個

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM