【问题标题】:parsing Block using flex and bison使用 flex 和 bison 解析 Block
【发布时间】:2016-02-04 11:29:48
【问题描述】:

是否可以通过flex和bison来解析Block??

例子:

假设

BEGIN BLOCK BLK_ROWDEC
            NAME                          cell_rowdec
            SIZE                          UNI_rowdecSize
            ITERATE                       itr_rows
            DIRECTION                     lgDir_rowdec
            STRAP                         STRD1,STRD3,STRD2
            WRAP                          WRD1
            VIA                           VIAB,VIAC,VIAD
ENDS BLK_ROWDEC

现在我想检查 BEGIN 和 END 是否属于同一个块?/flex 和 bison 是否可以

【问题讨论】:

    标签: parsing block flex-lexer bisonc++


    【解决方案1】:

    是的,这是可能的,只需将块名称与 BEGIN 一起保存,并在获得 END 时检查它。

    但是这里的方块名称是多余的,Bison 会自动匹配开始和结束。如果你可以从你的语法中删除它,我会这样做。

    【讨论】:

    • 我没听懂你。你能给我举个例子吗?
    • 一个 END 与尚未匹配的最近的先前 BEGIN 匹配。就像 IF 和 ELSE,或 { 和 }。
    • 不,不匹配。如果 BLOCK 名称不同意味着 BLOCK 名称 BEGIN 和 ENDS 不同,我必须生成错误。那么 FLEX 和 BISON 怎么可能呢。
    • 错误,是的,它确实匹配。如果您必须保留块名称并在不匹配时生成错误,则必须按照我的回答中所说的去做,但是这种微不足道的语法似乎不值得。这不是 Bison 教程的地方。
    • 你能通过例子解释一下吗??请......我是 flex 和 bison 的新手,所以
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    相关资源
    最近更新 更多