簡體   English   中英

在ANTLR中重用保留關鍵字規則

[英]Reuse a reserved keyword rule in ANTLR

我正在使用ANTLR 3.4。我已經定義了一個lexer規則

Description:
'description'
 ;

如果我使用這個規則,我將無法在我的語言中使用'description',因為它現在是一個關鍵字。我有什么方法可以為非保留關鍵字編寫規則。 語法規則看起來像 -

Lexer rule

Description
:
'description'
;

Protocol
:
'protocol'
;
Define
:
'define'
;
Equal
:
'='
;




Parser rule


mainrule
:
Define Protocol stringrule descrule? fields* finishrule
;

descrule
:
Description? stringrule?
;

fields
:
type stringrule  Equal? stringrule?

stringrule
:
// rule which accept any string
;

示例:我的語言看起來像這樣 -

define protocol description 'Protocol for login'
int ip=192.168.0.0;
string description='remote user';
finish protocol;

這里ip和description是協議字段,協議有描述(這是關鍵字)。但是我不能使用'description'作為字段名,因為它是一個關鍵字。

使stringrule匹配任何關鍵字和詞法分析器的標識符規則:

stringrule
 : Description
 | Protocol
 | Define
 | Identifier
 ;

Description
 : 'description'
 ;

Protocol
 : 'protocol'
 ;

Define
 : 'define'
 ;

Identifier
 : ('a'..'z' | 'A'..'Z')+
 ;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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