Java有一个很好的术语重写库吗?

时间:2011-04-29 16:26:44

标签: java language-design

我正在开发一个Java应用程序,它对语言的基本术语做了一些推理,通常是作为Composites实现的(它们都是内部生成的,不是从文本中解析的)。现在我需要对术语语言应用一组重写规则,这个问题正在变得非常烦人。经过一些研究后,我发现Tom和可能的Stratego / XT可能是为Java添加术语重写能力的替代方案。有没有人对他们有一些经验可以告诉我两者的优点和缺点是什么?有没有人知道任何替代方案?鉴于软件的大小,重写作为POJO数据结构实现的术语的能力是必要的(我接近截止日期,我不想用另一个替换当前术语表示,尽管我将来可能会这样)。

1 个答案:

答案 0 :(得分:1)

还存在termware:http://redmine.gradsoft.ua/projects/show/termware

不确定,这正是你想要的,但它可以处理规​​则中的任何java对象,即

domain(examples,
  system(Invoicing,default,
         ruleset(
           # import general operations.
           import(general),

           # handle new invoice and set one to paid if possible.
           @class("ua.gradsoft.termwaredemos.invoicing.Invoice", $invoice)
                        [ ! $invoice.isPayed()
                           &&
                            $invoice.getCustomer().getAccountBalance() - $invoice.getAmount() + $invoice.getCustomer().getCreditLimit() > 0
                        ]
                          -> true
                             [ $invoice.getCustomer().decrementAccount($invoice.getAmount())
                               &&
                               $invoice.setPayed(true) ],

           # set credit limit in depend from summary payments.
           @class("ua.gradsoft.termwaredemos.invoicing.Customer", $customer)
                        [ $customer.getAccountBalance() > 0 && $customer.getSummaryPayments() > 2000 ] -> true [ $customer.setCreditLimit(500) ]

         ),
         FirstTop)
);

你也可以=看看jess方面。   http://www.jessrules.com/