簡體   English   中英

匹配規則時的Grako結束符

[英]Grako end closure when rule is matched

我有這個語法:

name = /[_a-zA-Z][a-zA-Z0-9]*/;
expression = name '+' name;
def_body = 'def' name:name args:{name} body:expression;

但是,當我嘗試解析時,它總是將表達式的名字用作參數的一部分。 有沒有辦法讓它在args閉包中的每個名稱之前進行測試,如果它可以匹配表達式並通過則結束?

提前致謝。

編輯:我通過語義解決了它,但是我仍然很好奇是否可以通過grako ebnf。

對於參數缺少定界符,需要在輸入中進一步向前看,以確定關閉是否應該繼續。 否定的前瞻應在語法級別解決該問題:

def_body = 'def' name:name args:{name !'+'} body:expression;

前瞻不是“作弊” 由於重要原因,它們是PEG定義的組成部分。

暫無
暫無

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

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