PHP/JavaScript/CSS需要的解析器精度?

PHP/JavaScript/CSS需要的解析器精度?,php,javascript,css,parsing,Php,Javascript,Css,Parsing,我正在为PHP、JavaScript和CSS编写一些自下而上的解析器。最好,我想编写一个能够解析所有语言的解析器。我听说JavaScript可以用LALR(1)解析器解析(如果我错了,请纠正我)。对于PHP和CSS,一个LALR(1)解析器是否足够,或者我是否需要编写一些不同的东西?我怀疑您能否实现一个解析器来解析所有这3种语言。我想你需要3个解析器。他们可能共享解析引擎,如果你是这个意思的话 几乎任何解析技术都可以解析任何语言,方法是接受“太多”(因为解析机制不够强大,无法区分),并添加捕获结

我正在为PHP、JavaScript和CSS编写一些自下而上的解析器。最好,我想编写一个能够解析所有语言的解析器。我听说JavaScript可以用LALR(1)解析器解析(如果我错了,请纠正我)。对于PHP和CSS,一个LALR(1)解析器是否足够,或者我是否需要编写一些不同的东西?

我怀疑您能否实现一个解析器来解析所有这3种语言。我想你需要3个解析器。他们可能共享解析引擎,如果你是这个意思的话

几乎任何解析技术都可以解析任何语言,方法是接受“太多”(因为解析机制不够强大,无法区分),并添加捕获结构的解析后处理(通常是ASTs),以检查/处理/消除多余的已接受结构

争论的焦点在于你必须收集多少多余的东西,以及消除多余的东西有多痛苦

因此,LALR(1)将完成这项工作。也有存在的证据;PHP解释器是使用Bison(LALR(1))实现的;通过下载PHP tarball并在其中挖掘,您可以自己发现这一点

我不认为CSS是一个难学的语法。不过我觉得有很多

JavaScript会让您在缺少分号的问题上陷入困境,因为它被定义为“如果解析器在没有分号的情况下会给您一个错误,并且它不存在,那么就假装它存在”。因此,本质上,您必须滥用解析器中的错误处理机制来进行恢复


你看了很多工作。获取现有的解析器不是更容易吗?或者你想要一套统一的机器是有原因的吗?

你应该在这个问题上添加一些额外的标记,因为它实际上并不特定于php/javascript,除非你打算用这些语言编写解析器。谢谢。我计划用JavaScript为web应用程序编写解析器。我不知道有哪种解析器是用JavaScript编写的,也没有哪种解析器能够提供我想要的错误处理控制。为什么web应用程序需要解析这些语言?您是否正在尝试将IDE构建为web应用程序?它应该是PHP WYSIWYG。我还没有找到一个已经存在的。A什么?我熟悉屏幕编辑器的概念“你看到的就是你得到的程序文本”。你的意思是,“这是一个重新定义的HTML页面,在PHP上进行编辑?”不管怎样,我认为你咬了很多;我已经为这3种语言中的2种构建了解析器,这不是一个晚上的工作。