红孩儿编辑器的模块设计14
代码自动格式化
格式化的规则需要事先定义,采用配置的方式进行设置。例如把制表符替换成4个空格符号。同一级的分界符对齐。代码块父子层级之间的加4个空格符缩进,超长代码行的自动换行。对象的方法之间加一个空行。
代码的格式化的目的是使程序的代码逻辑关系更清晰,提高了代码的可读性。代码主要是给人阅读的,顺便它也能在机器上执行。
但有时候,格式化可能画蛇添足,甚至执行错误,这需要针对格式化的操作,有一键恢复的操作。
实现过程:替换字符没有问题。分界符对齐,需要词法分析,让系统随时知道哪些分界符是成对的。父子层级的缩进问题需要进行语法分析,得到抽象语法树这个数据结构。让系统随时知道,代码块间的树状层级关系。
词法分析和语法分析都属于编译器技术的一部分。将在解释器的开发中详细描述。也可以参考我的计算机编程的结构与解释的第四章的翻译文章。
超长行的自动换行需要编程语言本身的支持,要加特定的换行符,告诉编译器这两行得合并。加空行仍需要代码的分析。就不详细描述了。这代码分析的程序有很大的附加价值,稍加修改就可用于方法的行数统计等静态代码分析功能。
红孩儿编输器的模块设计14
最新推荐文章于 2018-11-30 20:55:47 发布