LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1023|回复: 6

请问设计一个编程语言, 有哪些过程?

[复制链接]
发表于 2005-7-13 21:52:34 | 显示全部楼层 |阅读模式
请前辈指点一下, 让我少走些弯路..
发表于 2005-7-14 07:50:54 | 显示全部楼层
这个估计比较难。。。
个人感觉理论必须至少精通程序设计方法学,语义学,数理逻辑,编译原理等等吧。。。否则做出来的东东就是bullshit
回复 支持 反对

使用道具 举报

发表于 2005-7-14 09:19:18 | 显示全部楼层
Post by welans
这个估计比较难。。。
个人感觉理论必须至少精通程序设计方法学,语义学,数理逻辑,编译原理等等吧。。。否则做出来的东东就是bullshit


welans, 不要这么刺激别人哪,呵呵.
学点编译原理就可以设计编程语言了, 自己用的脚本语言之类,如果想设计了一个有点特色能
广为大众接受的语言, 那就还是多学点好.
回复 支持 反对

使用道具 举报

发表于 2005-7-14 12:26:41 | 显示全部楼层
说说动机和目标吧

ps: 用你的名字(lex)就能写词法分析器了, ^_^
回复 支持 反对

使用道具 举报

发表于 2005-7-14 12:32:21 | 显示全部楼层
《编译原理》讲的是如何设计实现编译器,而不是如何设计编程语言。

设计一种编程语言,我想大概需要
1、明确这种语言的适用范围
2、明确这种语言有哪些基本元素和概念:数据类型、变量、常量、运算符、保留字、语句、子程序等等
3、详细、严格的定义这些元素的语法和语义
4、证明这种语言在其声称的适用范围内的可靠性和完备性
5、实现一个编译器及若干示范程序来验证这种语言。

另:有讲编程语言的书,叫《高级程序设计语言》、《程序设计语言学》等,可以找来看看。
回复 支持 反对

使用道具 举报

发表于 2005-7-15 05:54:20 | 显示全部楼层
如果设计自己的语言,设计部分比较复杂。特别是涉及到OO部分。你可以看一下java specification这本书,以它为基础设计自己的数据类型、语法等,利用lex&yacc进行semantic analysis & grammar analysis,然后用C或C++等高级语言分析之前所得到的语法树,最后生成C或汇编的代码。

我曾做过一个类似于java的compiler,数据类型只有int,但要实现OO,主要是继承和重载,最后生成汇编代码。设计部分由老师完成,其它实现部分用lex&yacc&C&C++做的,最后生成汇编代码。

不知道你做这个目的是什么,但做一个完整的语言的工作量很大,涉及的知识也很多。你可以先用lex&yacc设计一个四则计算器就知道复杂程度了。
回复 支持 反对

使用道具 举报

发表于 2005-7-15 11:58:32 | 显示全部楼层
推荐看《程序语言设计实践》裘宗燕 译
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表