在RFC 3986中,他們定義了規則:
path-empty = 0<pchar>
為簡單起見,我們假設pchar定義:
pchar = 'a' / 'b' / 'c'
什么是path-empty匹配的,它是如何匹配的?
我已經閱讀了ABNF 上的維基百科頁面。我的猜測是匹配空字串(正則運算式^(?![\s\S]))。如果是這樣,為什么還要參考pchar?沒有更簡單的方法來匹配 ABNF 語法中的空字串而不參考另一個規則嗎?
這怎么能翻譯成ANTLR4?
uj5u.com熱心網友回復:
是的,你是對的。path-empty派生出空字串。
在 ABNF 中,規則的右側必須包含一個element,它可以是空格、換行符和注釋以外的任何內容。參見rfc5234,第 10 頁。給定這種語法,有幾種方法可以定義空字串。path-empty = 0<pchar>是一種方式。它的意思是“正好為零<pchar>”。但是,path-empty = ""并且path-empty = 0pchar也可以。ABNF 沒有定義一個是否優于另一個。
請注意,rfc3986 規范使用prose-val, 即<pchar>代替“規則名稱” pchar(甚至"",0pchar或 just <empty string>)。目前尚不清楚為什么,但它具有相同的效果 -path-empty派生空字串。但是,<pchar>不一樣pchar。散文值是添加規則的非正式描述的“最后手段”方式。
在 Antlr4 中,規則就是path_empty : ;. 注意,Antlr 有一個不同的命名約定,它定義了詞法分析器和決議器之間的嚴格界限。ABNF 沒有這個區別。事實上,該語法可以轉換為單個 Antlr 詞法分析器語法,這是一種了解 Antlr 詞法分析器功能的練習。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/494032.html
