簡體   English   中英

在遞歸下降解析器中使用第一集合

[英]Using first-set in recursive descent parser

我正在用C ++為C編寫遞歸下降解析器。 在以下情況下,我不知道如何選擇合適的產品:

statement: labeled-statement | compound-statement | expression-statement | selection-statement | iteration-statement | jump-statement

我讀到有關“第一套”的文章,該套書將前瞻性令牌/字符與可能出現的終端(在生產中排在第一位)進行了比較。 目前,我一直堅持在遞歸下降解析器中使用第一個集合,因為我只有一個函數,沒有別的東西,每個規則或其他可以識別規則/生產的對象都沒有對象。

您的語法對於遞歸下降解析器無效,因為它在左側含糊不清:

  • labeled-statement以標識符開頭
  • compound-statement{開頭(很好)
  • expression-statement以標識符或數字開頭(或(

可以在這里停止,您在標記語句和表達式語句之間存在沖突。 您需要轉換語法以消除左側歧義(通過臨時語法節點包含公共部分,因此在分支時,您可以僅使用前瞻性來確定要轉到哪個分支)。

暫無
暫無

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

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