String 为什么在小型编译器中使用高级编译器技术而不是简单的字符串操作?

String 为什么在小型编译器中使用高级编译器技术而不是简单的字符串操作?,string,compiler-construction,String,Compiler Construction,与简单的字符串操作相比,使用(我理解为)高级编译器技术(如特殊语法、AST等)来生成非常小的编程语言有什么优势?我对编译器设计很感兴趣,不知道如果我只打算制作小型和简单的语言,我是否应该学习所有的编译器理论。我知道,当我开始制作更大的语言时,我可能不得不使用解析器生成器之类的工具,但在那之前,我应该费心吗?您肯定知道什么是an以及如何构建an。即使以后使用解析器生成器。我的意思是,你怎么会对编译器设计感兴趣而对语法和语法树不感兴趣呢?在引擎盖下学习东西是如何工作的总是有回报的,而不是把它当作魔法

与简单的字符串操作相比,使用(我理解为)高级编译器技术(如特殊语法、AST等)来生成非常小的编程语言有什么优势?我对编译器设计很感兴趣,不知道如果我只打算制作小型和简单的语言,我是否应该学习所有的编译器理论。我知道,当我开始制作更大的语言时,我可能不得不使用解析器生成器之类的工具,但在那之前,我应该费心吗?

您肯定知道什么是an以及如何构建an。即使以后使用解析器生成器。我的意思是,你怎么会对编译器设计感兴趣而对语法和语法树不感兴趣呢?在引擎盖下学习东西是如何工作的总是有回报的,而不是把它当作魔法


说真的,当字符串操作变得更复杂时,解析除此之外的任何内容都是糟糕的…

我不确定这是否真的是应该负责的。在“简单的字符串操作”还不够用之前,您不需要这些技术,而在这之后,您就需要它们了。但最终你需要更多的技术来使编译器变得更好。真正的答案是,对于任何“编程语言”来说,字符串操作都远远不够好。这有点像用手钉钉子:在非常罕见的情况下,它可能会起作用,但一般来说,你最好用锤子。你说的是什么“弦操纵”?我不知道有哪种“简单”的字符串操作技术比简单的代码生成链解析更容易。