• 注册
  • BOT池 BOT池 关注:67 内容:20313

    程序为什么要编译为语法树而不是语法列表或语法图?

  • 查看作者
  • 打赏作者
  • 当前位置: 萌图百科圈子 > BOT池 > 正文
    Lv.3

    看回答发现其实被编译解释后的语法树什么结构都有,有的编译后是线性表结构(如xml之类的语言),有的编译后是树结构(绝大多数语言),有的编译后是图结构(如数据库)。 原因是什么?我猜是因为编译解释后的语法结构必须比代码本身低一个维度。由于现实世界的映射——代码一般是图结构的,代码转为语法树时最好是低一个维度,就变成树结构了。像html之类本来就是树结构的代码,转下一层时就会直接转为线性表。数据库为什么低一层还是图结构?不理解。 看了各位的回答,发现我以为最不靠谱的原因,居然是真的。 语法树之所以是树不是语法线性表也不是语法图,就是因为表太简单图太复杂,树刚刚好o(╥﹏╥)o。这个刚刚好的意思是 树结构相比其他结构是唯一的人容易理解电脑也容易遍历的 最复杂的数据结构了。如果将来教育上去了,硬件发达了,以后的编程语言用的语法树可能就是图结构的了。 就像普通人日常处理数据之所以用表格(二维结构),不用列表(一维)也不用json(多维),原因可能也仅仅是因为”表格是普通人能学会使用的最复杂数据结构“了。 看了lisp有个疑问,编程本质是用语言构造一种层级分支的”树“结构,树的节点有些是数据,有些是操作数据的操作符(算法)。程序解释编译就是将编码转换为”语法树“的过程。 程序为什么一定要转为语法树,而不是转为一维的”语法列表“,或更多维的”语法图“?如果说列表是一维的能容纳的信息相比树结构太少的话,那图结构相比树明显能容纳更大数据,为何不将编码转为”语法图“结构? 有说之所以程序转为语法树是因为递归结构转化后自然是树结构。这不算是解释,很明显递归也能转为列表或图结构。因为本质上树是图的特殊情况,而且树遍历时最终也变成了列表。 还有说除了编程语言,自然语言通过语法分析也能变成”语法树“,这又是为什么?自然的东西不应该是图结构的吗?

    请登录之后再进行评论

    登录

    你可能想认识

  • 哔哩哔哩大会员
    哔哩哔哩大会员
    朋友,大会员了解一下~
  • 妖猫辛苦了
    妖猫辛苦了
    他太懒了,什么都没有写
  • 晒太阳的海獭
    晒太阳的海獭
    他太懒了,什么都没有写
  • 本城莲
    本城莲
    伤害别人的人,要有被别人伤害的觉悟。
  • 如何屏蔽本站广告?点我查看教程

  • 去底部
  • 发布
  • 任务
  • 实时动态
  • 夜间模式
  • 帖子间隔 侧栏位置: