小编lfe*_*asu的帖子

从yacc文件中提取BNF语法规则

我有一个描述某种语言的yacc文件,我正在使用IMP(eclipse项目)开发一个编辑器.我使用LPG作为解析器生成器,所以我需要从我的yacc文件中提取BNF规则.我收到的yacc文件包含规则和操作.但是,我想只提取要在LPG中使用的语法描述的规则.一种方法是通过手动提取规则并将其重新格式化为BNF语法(或者可以编写程序将其转换为我想要的方式).我想知道是否有自动执行此操作的方法.我在一些博客中读到野牛可以提供帮助,但我无法找到合适的命令.有谁知道如何处理这个问题.

我不能真正发布我所拥有的yacc文件,因为它是保密的.但我可举个例子如下

argExprList:
       assignExp
          {
            // some rules here 
          }
        | assignExpList ',' assignExp
            {
              //some other rules here
            }
        ;
Run Code Online (Sandbox Code Playgroud)

我希望它被转换成简单的样子

argExpList ::= assignExp|assignExpList ',' assignExp
Run Code Online (Sandbox Code Playgroud)

grammar parsing yacc bnf imp

10
推荐指数
1
解决办法
1384
查看次数

如何使用 Qt 实现三态按钮

我需要创建一个具有三种状态的按钮:

  • 未点击
  • 中间的
  • 点击

我想用这个按钮实现的逻辑是,每当这个按钮被点击时,我希望系统进入中间状态并等待一个事件。

在其他的方式,当状态转变unclicked --> intermediate -- > clicked,然后clicked --> intermediate -->unclicked

Qt 支持实现这种按钮吗?如果是这样,如何?

c++ user-interface qt tri-state-logic qpushbutton

3
推荐指数
1
解决办法
2449
查看次数

标签 统计

bnf ×1

c++ ×1

grammar ×1

imp ×1

parsing ×1

qpushbutton ×1

qt ×1

tri-state-logic ×1

user-interface ×1

yacc ×1