博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编译器二次开发定制服务?
阅读量:5865 次
发布时间:2019-06-19

本文共 819 字,大约阅读时间需要 2 分钟。

数据和 Microsoft 中间语言 (MSIL) 并可选择在磁盘上生成 PE 文件的类。这些类的主要客户端是脚本引擎和编译器。很多时候,对于某个行业的业务而言,所使用的编程语言的某个功能是非常频繁,而别的功能基本很少使用。

因此对于寻附上重点的功能,原有的语言,难以满足要求,

所以世界上出现了很多的专用语言。

但是重新开发一门专用语言,工作量是巨大的,所以跟通用的c,c++,C#,vb, java, delphi相比 很多专用语言的通用功能非常弱, 连基本的语句结构,可能也有很大的缺陷,编辑器和调试器功能就相当弱。

那充,如何在一门成功的主流语言里面,加入所需的功能呢?

能不能开放(不是开源)编译器语法API,这样认都可以跟写c++,vb,C#,java一样,简单的就能开发新的语言元素? 

像那个parallet语言,本来只是加入异步支持,却要从头写个全功能的编译器,后面还有编辑器的智能提示,语法高亮,调试...一大堆的问题!

如果编译器(结合IDE)提供二次开发,那么就可以加入自己专用的语法,关键字,扩充已有功能,当然不能去掉已有的功能,但是可以替换 override,overload,或者deprecate(对原有功能进行标记,注为过期,如果使用,提出提示,警告,建议新功能,但向后兼容,可以正确编译运行)。

你喜欢VB,就可以把VB的某些语言功能加入进来,喜欢Java,就把Java中想要的功能加进来,喜欢lisp,就把lisp的功能加进来,python,ruby,boo,js,fortran, matlab, r ... 

这样就获得了原编译器的所有功能,编辑器的智能提示,语法高亮等功能,以及IDE的调试等... 

注:编译器二次开发,跟.net提供的System.Reflection.Emi不一样。Emit是元数据和中间语言工具,我这里说的目标是开发一门新语言,或者在语言特性(主要是DSL,不是扩充函数,类)

转载地址:http://tvynx.baihongyu.com/

你可能感兴趣的文章
Kafka 高性能吞吐揭秘
查看>>
listview与checkbox结合,界面混乱问题
查看>>
Jsp 9大内置对象
查看>>
JDK8中ArrayList的工作原理剖析
查看>>
LAN、WAN和WLAN的区别
查看>>
jFinal研究与见解
查看>>
2个小练习:Javascript打印菱形和99乘法表
查看>>
MySQL 慢查询日志及相关信息
查看>>
深入理解Java内存模型(二)——重排序
查看>>
Android proguard.flags
查看>>
使用命令行启动服务
查看>>
Android实现的网络收音机示例利用Vitamio组件
查看>>
关于PyQt5响应QML发送信号的方法?
查看>>
ListView图标图像不清晰的解决方法
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
MySQL中常见的函数&常见的问题
查看>>
tomcat 启动内存溢出
查看>>
iptables详解
查看>>
mysql.user表中Host为%的含义
查看>>