相关疑难解决方法(0)

26
推荐指数
5
解决办法
1万
查看次数

在Java中编写针对特定于域的语言的解析器

我们想要设计一种简单的特定于域的语言来编写测试脚本,以自动测试我们其中一个应用程序的基于XML的接口.样本测试将是:

  • 从网络共享文件夹或subversion存储库获取输入XML文件
  • 使用界面导入XML文件
  • 检查导入结果消息是否成功
  • 导出与刚刚使用接口导入的对象对应的XML,并检查它是否正确.

如果特定于域的语言可以是声明性的,并且其语句看起来尽可能接近上面示例中的句子,那么它将是非常棒的,因为人们不一定必须是程序员来理解/编写/维护测试.就像是:

newObject = GET FILE "http://svn/repos/template1.xml"
reponseMessage = IMPORT newObject
newObjectID = GET PROPERTY '/object/id/' FROM responseMessage
(..)
Run Code Online (Sandbox Code Playgroud)

但后来我不确定如何在Java中为该languange实现一个简单的解析器.回到学校,10年前,我使用LexYacc为C语言编写了一个语言解析器.也许一种方法是使用Java的等价物?

或者,我可以放弃使用声明性语言并选择基于XML的语言,这可能更容易为其创建解析器?你会推荐什么方法?

java dsl parsing

11
推荐指数
2
解决办法
5282
查看次数

哪个面向Java的lexer解析器用于简单项目(ANTLR,DIY等)

我正在研究一个小型文本编辑器项目,并希望为几种语言添加基本的语法高亮(Java,XML ......仅举几例).作为一种学习经历,我想添加一个流行或非流行的Java词法分析器.

你推荐什么项目.Antlr可能是最知名的,但它似乎相当复杂和沉重.

这是我所知道的选项.

  1. ANTLR
  2. Ragel(是的,它可以生成用于处理输入的Java源代码)
  3. 自己动手(我想我可以编写一个简单的令牌解析器并突出显示源代码).

java dsl parsing antlr ragel

7
推荐指数
1
解决办法
6483
查看次数

标签 统计

parsing ×3

dsl ×2

java ×2

antlr ×1

c++ ×1

conventions ×1

programming-languages ×1

ragel ×1