这些需求的Java解析器生成器
我一直在致力于开发一种脚本语言,该语言将这些需求的Java解析器生成器,java,parser-generator,Java,Parser Generator,我一直在致力于开发一种脚本语言,该语言将java.awt.Graphics类中的方法移植到 setcolor_0,127,214,255 //R,G,B,Alpha setcolor_0127214255//R,G,B,Alpha 或 fillrect_50,25100,75//x,y,w,h 这样我就可以避免每次创建某个图像时都需要编写整个程序。该语言本身目前仅限于伪函数和命令(直接映射到图形方法调用),加上一些输出说明符作为每个脚本的头,但我想添加更多。脚本在一个程序中处理,该程序同时充当解
java.awt.Graphics
类中的方法移植到setcolor_0,127,214,255 //R,G,B,Alpha setcolor_0127214255//R,G,B,Alpha 或
fillrect_50,25100,75//x,y,w,h 这样我就可以避免每次创建某个图像时都需要编写整个程序。该语言本身目前仅限于伪函数和命令(直接映射到图形方法调用),加上一些输出说明符作为每个脚本的头,但我想添加更多。脚本在一个程序中处理,该程序同时充当解析器和解释器,但我直接处理输入字符串的方法不足以满足我的要求 虽然我已经搜索并找到了大量的解析器和词法生成器,但我一直遇到与解析器生成器相同的两个问题,即
欢迎来到软件重用的广阔世界,在这里,您可以从大量的组件中进行选择,而这些组件都不能完全满足您的需要 获得一个没有“外部依赖”的解析器生成器包可能是不现实的。几乎任何复杂的软件都使用一个特殊函数库来支持其目的,解析器生成器也没有什么不同。你所作的区分似乎也相当人为。假设解析器生成器只是发出外部库的代码,而不是简单地引用它。您得到的代码数量以及它的组织方式不会有什么不同。那你为什么要反对图书馆的版本呢 如果您希望解析器生成器不是不完整的,我建议您使用成熟的解析器生成器。Java世界中的ANTLR和JavaCC有着相当长的成功记录
如果你坚持你仍然不想要这样的东西,你总是可以的。这对于“简单”语言尤其有效,比如您的语言。[您将发现,您最终编写了自己的支持库,尽管它不一定很大。]正如@Ira所说,生成的解析器至少依赖于一个运行时,该运行时使通用解析选项易于调用。另一种方法是将完全相同的运行时代码复制到每个生成的解析器中 也就是说,我认为JavaCC具有最少的运行时需求:可以从其库中复制的CharStream类 不幸的是,生成的解析器的可读性与运行时的特性成反比。运行时间越短,级别越低,可读性越差
考虑到您所需的Java解析范围有限,您可能需要分析您所需的内容是否只需一个regexp库即可实现。谢谢。您提醒过我,有时候,最好的解决方案是“处理它”。我将从提供的库中查看我需要的东西,看看我是否不能只复制部分代码。我还将更认真地研究JavaCC。 fillrect_50,25,100,75 //x,y,w,h