使用Irony开发译码器
使用Irony开发一个针对G代码的译码器。不想使用Lex&Yacc的原因是:
1.我只会用C#和Python写代码,用Lex&Yacc还得学习新的语法规范,我懒;
2.Lex&Yacc需要安装;
3.Lex&Yacc将词法分析和语法分析分开进行,要分别编写词法规范和语法规范,感觉听起来就很麻烦
之所以使用Irony,是在网上随便搜的时候,发现了这个工具。可以直接添加引用到代码中,使用起来很方便。虽然相关资料不是特别多,但是源代码开放也有一些例子,是用C#写的,所以也能读懂。其次,Irony中词法分析和语法分析是一起进行的,很方便。
关于Irony的资料如下:
https://en.wikibooks.org/wiki/Irony_-_Language_Implementation_Kit/Introduction
https://www.codeproject.com/Articles/22650/Irony-NET-Compiler-Construction-Kit
https://archive.codeplex.com/?p=irony
https://github.com/IronyProject/
G代码是用来编写数控程序的,这个不是关键了。只需要知道G代码是一种语言,现在我想编写一个译码器,可以将用G代码编写的数控程序翻译成加工函数。
首先要编写符合Irony规范的G代码的语法规范。使用Irony无需安装,只要引用Irony.dll就可以了。
Irony将词法分析和语法分析一起进行,语法规范就相对应的可以分为两部分,第一部分使用NonTerminal()命令来定义G代码中的非终止符。第二部分定义非终止符的语法规范。比如:
var linearinterpo = new NonTerminal("Linear Interpolation");
linearinterpo.Rule = ToTerm("G1")|ToTerm("G01");
使用Irony开发译码器的更多相关文章
- 03-组合逻辑电路设计之译码器——小梅哥FPGA设计思想与验证方法视频教程配套文档
芯航线——普利斯队长精心奉献 课程目标: 1. 再次熟悉Quartus II工程的建立以及完整的FPGA开发流程 2. 以译码器为例学会简单组合逻辑电路设计 实验平台:无 实验原理: 组合逻辑, ...
- 【原创】FPGA开发手记(二) VGA接口
以下内容均以Xilinx的Nexys3作为开发板 1.VGA接口介绍 首先,先看电路图(3*5为例): 标准VGA一共15个接口,但是实际应用的接口信号只用五个:HSYNC,行同步信号:VSYNC,场 ...
- 在ASP.NET Core中使用Apworks快速开发数据服务
不少关注我博客的朋友都知道我在2009年左右开发过一个名为Apworks的企业级应用程序开发框架,旨在为分布式企业系统软件开发提供面向领域驱动(DDD)的框架级别的解决方案,并对多种系统架构风格提供支 ...
- 在.NET Core中使用Irony实现自己的查询语言语法解析器
在之前<在ASP.NET Core中使用Apworks快速开发数据服务>一文的评论部分,.NET大神张善友为我提了个建议,可以使用Compile As a Service的Roslyn为语 ...
- FPGA学习笔记(二)——FPGA学习路线及开发流程
###### [该随笔部分内容转载自小梅哥] ######### 一.FPGA学习路线 工具使用 -> 语法学习 -> 逻辑设计 -> IP使用 ->接口设计 -& ...
- FPGA开发随笔汇总
点击标题即可进入相关随笔. DE-SOC开发板VrilogHDL开发相关部分: (本过程需要Verilog HDL 的基本语言基础) 1.FPGA的发展史及FPGA 的基础架构 2.首先看一下友晶DE ...
- .NET 开源开发项目【翻译】
原文地址 本文列出了 .NET 开源开发项目(open source developer projects).意在包括对开发过程的所有方面有所帮组的项目.对于消费项目(consumer project ...
- NET Core中使用Irony
在.NET Core中使用Irony实现自己的查询语言语法解析器 在之前<在ASP.NET Core中使用Apworks快速开发数据服务>一文的评论部分,.NET大神张善友为我提了个建 ...
- 嵌入式开发—C语言面试题
嵌入式开发—C语言面试题 源地址:http://blog.csdn.net/xdx2ct1314/article/details/7358929 1. 用预处理指令#define 声明一个常数,用 ...
随机推荐
- gin中自定义路由日志的格式
package main import ( "fmt" "github.com/gin-gonic/gin" "net/http" &quo ...
- 源码安装 python3.7
yum install libffi-devel openssl -y wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz ta ...
- python10day
昨日回顾 函数是以功能为导向,减少重复代码.增强可读性. 函数的调用:func().写几次执行几次 函数的返回值return 终止函数 return单个值 return多个值,按元组返回 函数的参数: ...
- 有关softmax函数代码实现的思考
有关softmax函数代码实现的思考 softmax函数 def softmax2(x): if x.ndim == 2: x = x.T x = x - np.max(x, axis=0) y = ...
- 使用 Frp 和 Docker 通过远程桌面和 SSH 来远程控制 Windows(反向代理)
最新博客文章链接 大体思路 使用 Docker 容器,在云服务器上部署 Frps 容器来中转流量,在被控制的 Windows 上部署 Frpc 容器来暴露内网的服务,在主控制端的 Windows 上直 ...
- 解决github.com无法访问
解决 绕过DNS解析,直接使用本地DNS记录进行直接跳转. DNS查询 在浏览器中打开DNS查询网站:http://tool.chinaz.com/dns?type=1&host=github ...
- SimpleDateFormat简介及替代方案
简介 SimpleDateFormat是一个时间格式化工具,可以将字符串格式化时间Date类型,也可以将Date类型格式化为字符串String类型,但其线程不安全. 常用方法 public final ...
- 各种形式存放token
1.可以将token存储在 localstorage里面,在一个统一的地方复写请求头,让每次请求都在header中带上这个token, 当token失效的时候,后端肯定会返回401,这个时候在你可以在 ...
- Mysql 返回JSON值属性的函数 (五)
本节中的函数返回JSON值的属性. JSON_DEPTH(json_doc) 返回JSON文档的最大深度.NULL如果参数为,则 返回 NULL.如果参数不是有效的JSON文档,则会发生错误. 一个空 ...
- js实现网页中英文翻译
1,html 2,metrics.js 3,需要 http://www.microsoftTranslator.com/ajax/v3/WidgetV3.ashx?siteData=ueOIGRSKk ...