亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 yacc 的模態解析器

使用 yacc 的模態解析器

Go
滄海一幻覺 2022-01-17 16:32:39
我正在用 yacc 編寫我的第一個解析器。我想解析一個有 3 種“模式”的文件:語句模式表格標題模式表格行模式我希望我的解析器以語句模式開始,然后當它看到由減號組成的行時,切換到表標題模式。當它看到另一行減號時,切換到表格行模式,最后當它看到第三組減號時切換到語句模式:statement...statement...statement...----table heading----table rowtable rowtable row----statementstatementstatement我想到的一件事是,我可以有 3 個單獨的語法,我可以在換行循環中切換它們。但是,我不知道如何在一個.y文件中創建多個語法。另一件看起來可能的事情是使用“Lexical Tie-ins”(不幸的是,您必須在文檔中搜索該字符串)。然而,yacc 教程的作者并沒有真正告訴我關于這些“詞法關聯”的任何信息,只是說“這種‘后門’方法可以被詳細闡述到有害的程度。不過,它代表了一種方式做一些很難做的事情,如果不是不可能做的話?!?這很難令人鼓舞。
查看完整描述

1 回答

?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

我通過創建使用詞法分析器插入的偽符號解決了這個問題:


line

    : TABLE_HEADING sentences ',' table_heading_columns ',' sentences

    {

      fmt.Println("TABLE_HEADING")

    }

    | TABLE_BODY table_body_columns

    {

      fmt.Println("TABLE_BODY")

    }

    | STATEMENT sentences

    {

      fmt.Println("STATEMENT")

    }

    ;


查看完整回答
反對 回復 2022-01-17
  • 1 回答
  • 0 關注
  • 124 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號