为什么编程语言不被设计成有自己的文件结构,就像Word文档".docx"那样,必须用特定的文档编辑器查看或修改?
方便集成第三方工具。例如 diff 二进制的效果没有纯文本的好。你看易语言,现在都没个 diff 工具,还得靠能人逆向分析格式转 .txt 储存。
这些代码,肯定不方便直接编辑了。这个时候使用专用的编辑器编辑即可:
复制粘贴不方便,需要定义新的纯文本格式,或定义一个大家都支持的二进制协议。
如果我要复制到网页怎么办?像易语言那样?
如果用户多复制了或少复制了一些空行,你要在编辑器做容错吗?还是直接报告不是合法的代码?
其词法分析和语法分析实现应该也更加容易
都结构存储了,就不需要语法解析了。直接解析二进制结构体就行。
比如SetText(A, B);在自己的文件结构可以以紧凑的字节码方式保存,
需要思考如何实现。
储存索引?如果函数要删除怎么办,硬是留着?新版本编译器/编辑器打开旧版源码怎么处理?谁来维护索引到函数的规则?
或者说拿易语言做例子,我用到了支持库 X 的 Y 函数,现在把代码给用户 B。他没有安装支持库 X,现在连代码都看不到。如果是纯文本,即便没有安装这个额外的支持库也可以查阅、理解它的行为。
同时这种定义方式保证了开发者不会在定义函数上犯语法错误。
也会限制编辑器的扩展性、语法灵活性。
GCC 支持这些函数体特性(常见部分): https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html
改成填表的话,你的表会很长,大部分还不会用到。得重新思考如何构建 UI。
而且在使用中文编辑器打开时显示为"把[A]的文本设置到[B]",使用英文编辑器时显示为"Set the text of [A] to [B]"。
工作量太大了。再回到一开始说的复制粘贴,如果翻译错了,下个版本修正了,我粘贴进来,如何识别/匹配上之前的版本的代码?
以Scratch为例,其语法基本不可能出错
但你也受编辑器的限制。
如果大家知道有类似工具或概念还请告知
易语言吧,但是真开源易语言还是图一乐,二进制代码项目文件根本没法 diff/合作并行开发。后续的火山我记得也是改成纯文字 + 编辑器渲染表格。
如果你给语言实现了一个新的语法特性,你还要修编辑器让它支持。纯文本的编辑器,最多没有正确的语法高亮,但是编译器只要支持就还可以继续使用。
|