Ruby 求工业 G 语言实现 C++ 转换思路

DazhaKrab · 2022年03月14日 · 最后由 DazhaKrab 回复于 2022年03月19日 · 427 次阅读

例如有如下一段 G 语言编程 IF A==TRUE STOP R1 ENDIF

工程背景: 基于 Visual studio C++ 的编程环境,上位机允许用户输入 G 语法,下位机需要识别并编译成对应的 C++ 程序, 其中 A 为一个 IO 输入,R1 为一个 IO 输出,现在有一段简单的工艺程序,如果 A 为真,则停止 R1,STOP 对应的是一个 C++ 已经写好函数,整个 IF 判断需要译码器识别并在 C++ 环境下执行。

想求求各位大大给点方案思路(无需要实现标准复杂的编译器,因为用户的自定义输入程序都是很简单的逻辑),谢谢

为什么上位机要用 G 语言输入?嵌套 js,ruby,python,lua 等等脚本不香吗

你可以看看这三个

  1. https://www.hwaci.com/sw/lemon/
  2. https://gitlab.com/fbb-git/bisoncpp
  3. https://github.com/javacc/javacc

这三个都能生成 C++ 代码(但我不知道能不能在 Windows 上编译运行,第一个应该没问题)

if else 的语法规则,类似这样,剩下的你可以自己补充

if_stmt      : keyword_if expr then
              compstmt
              if_tail
              keyword_end
             ;

if_tail    : opt_else
           | keyword_elsif expr then
             compstmt
             if_tail
            ;

opt_else   : // empty
           | keyword_else 
             compstmt
           ;
kowalskidark 回复

感谢感谢,我研究研究!

ccmywish 回复

十分感谢提供的资源,我研究看看

316786359 回复

这个是工艺需求呢

7 楼 已删除
需要 登录 后方可回复, 如果你还没有账号请 注册新账号