簡體   English   中英

在ANTLR中需要匹配的括號

[英]Requiring matching parentheses in ANTLR

我知道在ANTLR4中可以使用嗎? 0或1次。 但是例如對於標識符,用戶可以使用括號,也可以不使用括號。 但是如果我這樣做

'('? identifier ')'?

解析器將允許諸如'(x' or 'y)'語句,而不是要求(x) 在ANTLR4中定義語法時,是否有方法需要匹配的括號

您可以同時定義一個帶有括號的選擇項和一個不包含任何括號的選擇項,例如

expression: 
    '(' identifier ')'
    | identifier
;

如果要允許標識符在(()和')之間或不帶括號,則可以簡單地使用兩個替代方法代替? 運營商:

'(' identifier ')' | identifier

請注意,這僅允許使用一組括號。 要允許任意數字,您將使用如下遞歸規則:

identfiierWithParens
    : '(' identifierWithParens ')'
    | identifier
    ;

由於在大多數語言中,可以將任意表達式括在括號中(並且只有將標識符用作表達式或可以像這樣被括號括起來的其他實體時,標識符才可以),因此通常將其作為expression規則的一部分來處理:

expression
    : identifier
    | '(' expression ')'
    | // other types of expression
    ;

暫無
暫無

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

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