簡體   English   中英

如何使用ANTLR4進行精確的單詞解析?

[英]How to do exact word parsing with ANTLR4?

我有以下語法

grammar test;

expression : SALUTATION NAME;

SALUTATION:'Hello'; 
NAME: ('a'..'z'|'A'..'Z')+;

如果我有一個輸入字符串像

  1. 你好約翰
  2. 你好約翰。
  3. 你好約翰史密斯

該語法將正確解析所有這些字符串

如何修改語法以使其僅解析如示例1中具有精確定義的語法的字符串,而在其他情況下(如示例2和3)失敗?

很簡單:

expression : SALUTATION NAME EOF;

添加EOF將強制解析器嘗試匹配在令牌流末尾自動插入的EOF (文件末尾)令牌。 因此,如果最后還有其他數據,它將失敗。

您還可以在文件的末尾添加以下詞法分析器規則:

UNKNOWN_CHAR: . ;

這將確保詞法分析器始終成功,並且所有錯誤都將在解析器中發生。

暫無
暫無

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

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