Eclipse Xtext 实现PLC ST 语言到C的转换

这篇具有很好参考价值的文章主要介绍了Eclipse Xtext 实现PLC ST 语言到C的转换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

   Eclipse Xtext 是开发领域专用语言(DSL)的工具。例如数据库的SQL 语言,PLC 的ST 语言都是一种领域专用语言。在开放自动化领域,提倡基于模型的设计方法。DSL 是描述模型的强有力工具。

   在开发PLC 程序IDE时,开发ST编译器是一项重要的任务,使用的方法大致有两种:

  •   使用 Bison 和Flex
  •    使用Eclipse Xtext

  开源PLC项目Beremiz中,使用的就是Bison/Flex.而IEC61499 开源项目4diac 中使用的是Xtext。关于Xtext 实现ST 到C语言转换,我在两年前做过,有一些读者觉得不够详细,最近又将Eclipse Xtext 实现ST 语言转化为C++ 程序的过程做了一遍。供读者参考。其中的语法描述和代码生成是从4diacIDE 移植过来的。

整个过程在Window 下完成。

下载Eclipse Install 

官网地址:

Eclipse Downloads | The Eclipse Foundation

运行Eclipse Install

Eclipse Xtext 实现PLC ST 语言到C的转换,eclipse,java,ide

        以前介绍Xtext 是Eclipse Modeling Tool 下加Xtext 插件的方式安装Xtext IDE ,现在不需要了,直接选择安装DSL Developers 就可以了。 

新建一个xtext项目

Eclipse Xtext 实现PLC ST 语言到C的转换,eclipse,java,ide

新建了xtext 项目之后,回在Eclipse workspace 下建立了4 个项目。

Eclipse Xtext 实现PLC ST 语言到C的转换,eclipse,java,ide

 xtext 项目开发的主要工作

描述你打算开发的DSL 语言的语法描述文件。这是一个xtext 的文件

编写代码生成程序,这是一个xtend 文件

运行mwe2

Eclipse Xtext 实现PLC ST 语言到C的转换,eclipse,java,ide

运行DSL 编辑器

Eclipse Xtext 实现PLC ST 语言到C的转换,eclipse,java,ide

这相当于自动生成了一个DSL 的Eclipse IDE。你可以在里面编辑一个xxx.ST 文档,能够高亮关键字等等。 

独立的命令行编译程序

        我们已经知道,Eclipse Xtext 项目会建立一个针对DSL 的Eclipse IDE。在这个DSL IDE下能够编辑DSL 。但是,有时我们只需要一个独立的命令行编译器(类似于gcc)。Eclipse Xtext 项目能够导出命令行编辑程序。

     鼠标指向Main.Java文件 击右键 Run As | Java Application 这时在控制台下会出现“Aborting: no path to EMF resource provided!" 不要担心,因为你没有带任何命令参数。

Eclipse Xtext 实现PLC ST 语言到C的转换,eclipse,java,ide

 文件菜单中选择 Export... | Java | Runnable JAR File,然后点击 Next.

  按如下设参数
  

Eclipse Xtext 实现PLC ST 语言到C的转换,eclipse,java,ide

运行

PS E:\yao2023\eclipse-workspace> java  -jar STCompiler.jar ./GenericFB.ST
Code generation finished.
PS E:\yao2023\eclipse-workspace>

 ST 代码

VAR
	X :INT;
	Y:REAL;
	Z:BOOL;
	A:ARRAY[1..12] OF INT;
	i:INT;
END_VAR;
IF Z THEN
	X:=0;
	X:=X*60;
	Y:=sin(3.14156);
ELSIF X>0 THEN 
	X:=10;
ELSE
   X:=10;		
END_IF;
	Z:=TRUE;
	i:=0;
WHILE i<14 DO
	A[i]:=i;
	i:=i+1;
END_WHILE;
	X:=3;
FOR i:=0 TO 12 DO
    X:=X+i;
END_FOR;
CASE i OF
0:i:=1;
1:i:=2;
END_CASE;
RETURN;

翻译的C语言

int X;
double Y;
bool Z;
int A[11];
int i;
if(Z) {
	X = 0;
	X = MUL(X, 60);
	Y = sin(3.14156);
}
else if((X > 0)) {
	X = 10;
}
else {
	X = 10;
};
Z = true;
i = 0;
while((i < 14)) {
  A[i] = i;
  i = ADD(i, 1);
};
X = 3;
for(i = 0;i <= 12;i = i +1){
	X = ADD(X, i);
};
switch (i) {
	case 0:
		i = 1;
		break;
	case 1:
		i = 2;
		break;
}
return;

过程记录难免不全,有问题就问吧!

结束语

        最近再次对DSL 感兴趣的原因是本人对自动化行业的信息模型文本描述十分关注。觉得使用DSL 语言描述模型更加有效。文章来源地址https://www.toymoban.com/news/detail-723917.html

到了这里,关于Eclipse Xtext 实现PLC ST 语言到C的转换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何在Eclipse IDE中安装TestNG插件

    目录 使用Eclipse Marketplace安装TestNG插件 通过输入URL安装TestNG 1.点击安装新软件 2.输入URL以安装TestNG 3.遵循正常的安装过程 4.重新启动Eclipse 在Eclipse中安装TestNG插件的视频 在这篇文章中,我们将介绍如何在Eclipse IDE中安装TestNG插件,我们还在文章末尾放置 了一个视频 ,解释如

    2024年01月19日
    浏览(36)
  • Eclipse IDE 2023-06 新特性说明及下载地址

    Eclipse IDE 2023-06 新特性说明: 支持最新的 JAVA 安装JDK 17以上,支持 Java 20 并提供必要的开发工具 经过验证的可扩展性 具有种类繁多的平台插件,可简化新功能的添加 改进的平台 安全功能,例如强制使用 https 协议、PGP 密钥撤销处理、跟踪受信任的主机和不受信任的工件处理

    2024年02月11日
    浏览(44)
  • Eclipse、IntelliJ IDEA、PyCharm三种IDE的区别

    Eclipse、IntelliJ IDEA和PyCharm是三种流行的集成开发环境(IDE),每个都有其特性和优点。 1.Eclipse:Eclipse是一款开源的Java IDE,由Eclipse基金会开发。它具有许多功能,包括代码自动完成、调试、源代码控制等。另外,Eclipse有许多插件可以安装,以扩展其功能。它的优点包括免费

    2024年01月22日
    浏览(49)
  • 【计算机编程语言】JAVA-MyBatis(Eclipse)

    官网:https://mybatis.org/mybatis-3/zh/index.html 环境: JDK1.8(尽量) MySQL - 5.7(超经典) maven - 3.6.3 Eclipse 回顾: JDBC MySQL Java基础 maven Junit 框架:配置文件、最好的方式:官网文档 SSM框架:Spring SpringMVC Mybatis 1.1什么是Mybatis [外链图片转存失败,源站可能有防盗链机制,建议将图片保

    2024年02月16日
    浏览(42)
  • MCUXPresso IDE(Eclipse):每次build都重新编译,重新生成makefile

    最近在使用MCUXPresso IDE开发项目,但是有几个问题,这里来汇总一下 1、只要修改了某个文件,就会导致整个工程都要重新编译一遍 项目-Properties-C/C++ Build-Refresh Policy-Resources 在使用External buider时,需要保证Resources中的名称与标题栏显示的工程名称一样。 2、已经build过了,点调

    2023年04月17日
    浏览(43)
  • 【Eclipse】汉化简体中文教程(官方汉化包,IDE自带软件安装功能),图文详情

    目录 0.环境 1.步骤 1)查看eclipse的版本  2)在官网找语言包,并复制链接 3)将链接复制到eclipse中 4)汉化完成 windows11,64位; eclipse 2021-6版本 思路:在官网找到eclipse对应版本的中文汉化包 -- 在eclipse中下载 -- 重启eclipse 注意:中文包的版本需要与eclipse版本对应 在【Help】

    2024年02月11日
    浏览(57)
  • Android SDK 上手指南||第一章 环境需求||第二章 IDE:Eclipse速览

    这是我们系列教程的第一篇,让我们来安装Android的开发环境并且把Android SDK运行起来! 介绍 欢迎来到Android SDK入门指南系列文章,如果你想开始开发Android App,这个系列将从头开始教你所须的技能。我们假定你没有任何编程技能,当然,有经验当然更好。 我们将从安装Andro

    2024年02月14日
    浏览(54)
  • SpringBoot中使用Spring integration加Eclipse Paho Java Client 实现MQTT客户端

    Spring Integration 是一个开源的集成消息处理框架,它提供了消息传递、消息过滤、消息转换、消息路由等功能,可以用于构建异步、分布式的系统。 Spring-integration-stream是Spring Integration框架的一个组件,用于在不同的系统和应用之间进行消息传递、集成和流处理。 它提供了一套

    2024年02月10日
    浏览(55)
  • 基于XML的Web服务Java接口(JAX-WS)、Jakarta XML Web Services Eclipse 实现

    JAX-WS(Java API for XML-Based Web Services),是创建web服务的Java编程接口,特别是SOAP服务。是Java XML编程接口之一,是Java SE 和Java EE 平台的一部分。 JAX-WS 2.0 规范是代替JAX-RPC 1.0的下一代Web服务API。JAX-RPC(The Java API for XML Based RPC)是基于XML的RPC(远程过程调用)的Java API。 JAX-WS 2

    2024年02月08日
    浏览(49)
  • java毕业设计——基于java+Eclipse+jsp的网上手机销售系统设计与实现(毕业论文+程序源码)——网上手机销售系统

    大家好,今天给大家介绍基于java+Eclipse+jsp的网上手机销售系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦 文章目录: 本文所讲述的

    2024年02月09日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包