Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Parsing 跨平台解析器开发-有哪些选项?_Parsing_Cross Platform - Fatal编程技术网

Parsing 跨平台解析器开发-有哪些选项?

Parsing 跨平台解析器开发-有哪些选项?,parsing,cross-platform,Parsing,Cross Platform,我目前正在从事一个项目,该项目使用一种自定义语言和一个简单的 由于项目的特点,同一种语言必须在多个平台上使用,尤其是移动平台。目前,我正在使用我的小型手写Java解析器(用于Android平台)。很快,我将不得不为JavaScript编写基本相同的解析器,以后可能还要为C#(Windows Phone)和Objective C(iOS)编写解析器。还有一个机会,我还必须为PHP编写它 我的问题是:有哪些选项可以简化解析器开发过程?我真的必须为每个平台编写基本相同的解析器,还是有一种工作强度较低

我目前正在从事一个项目,该项目使用一种自定义语言和一个简单的

由于项目的特点,同一种语言必须在多个平台上使用,尤其是移动平台。目前,我正在使用我的小型手写Java解析器(用于Android平台)。很快,我将不得不为JavaScript编写基本相同的解析器,以后可能还要为C#(Windows Phone)和Objective C(iOS)编写解析器。还有一个机会,我还必须为PHP编写它


我的问题是:有哪些选项可以简化解析器开发过程?我真的必须为每个平台编写基本相同的解析器,还是有一种工作强度较低的方法


从开发过程的角度来看,最好的替代方法是让我编写一个语法定义,然后自动编译成解析器

然而,基本上是我迄今为止发现的唯一一个跨平台解析器生成器,它支持我的两个目标平台(Java和C#)。如果你能告诉我其他的选择,那就太棒了

如果您不知道其他跨平台编译器:您有关于如何构造代码以实现未来语言扩展性的提示吗?

看看,我正在使用它转换java代码,它真的很棒。此外,您还可以找到不同的语法。

我建议您注意:如果我们将域限制为Java和C/C++,则表明APG、GOLD、SableCC和SLK(以及其他)是跨语言的,足以实现您所述的目标。(我还要求动作代码与语法分开,而不是内联,因为后者将无法达到目的。)如果您也需要JavaScript,那么您的选择看起来是(GPL许可)和(MIT许可)


如果您的语言相当简单,那么我会说,只使用您认为最容易集成到构建环境中并且与您的想法合理匹配的语言。除非解析时间占应用程序总工作负载的很大一部分,否则解析速度不应该是一个问题——尽管表大小和内存使用在移动上下文中可能很重要。如果您的语法“足够简单”(例如,不是Perl),我希望这些工具中的任何一个都能工作。

支持所需的目标,但Objective C和PHP除外(这些工具的代码生成器可能是可能的)。不过,它还没有以开源的形式发布,也没有像样的文档,只有示例语法。但也有一些项目正在成功地使用它,例如。是一篇描述该项目经验的论文。

谢谢您的回复。Antlr也是我以前看过的东西。或者Antlr还有更多的目标吗?Antlr让您可以使用自己的语法。因此,我认为它将支持任何你想要的语言,如果你找到或设计适当的语法。希望这对您有所帮助。是的,Antlr为自定义语法生成了一个解析器。但是,它只能为有限的一组目标编程语言/平台生成解析器代码。我正在寻找一种工具,它可以为更多的目标编程语言/平台生成解析器代码,而不是GOLD或Antlr。希望你能找到它。祝你好运