5

我们正在尝试破译一些规则语法,但不确定其来源。

这是一个例子:

(CARS->TYPE='C').and.(CARS->CD_CODE<>'').and.('|'+INVOICE->TYPE+'|'$'|AAA|').and.('|'+SUBSTR(INVOICE->TYPE,1,2)+'|'$'|11|')

具体来说,我们试图理解|$。任何人都可以让我知道他们是否看到了与源语言相似的内容或对|and的正确解释$吗?

4

4 回答 4

1

从它的语法我们可以看出它是一种“现代”语言。记住“现代”好吗;)

substr
.and. 
-> 

与 cobol 和汇编语言相比,它们非常现代。

(CARS->TYPE='C').and.(CARS->CD_CODE<>'').and.('|'+INVOICE->TYPE+'|'$'|AAA|').and.(' |'+SUBSTR(INVOICE->TYPE,1,2)+'|'$'|11|')

伪代码将是:

(if car type is 'C'
and
if car cd_code is not empty
and
if invoice type is 'AAA'
and
if invoice type first 2 letters are '11')
then return true

我对使用 $ 的猜测是:

= and <> are only when compare against a character
$ when compare array of character, i.e. strings.

(我不知道输出是什么,因为它将整个发票类型与 AAA 进行比较,甚至前两个字母为 11。也许您在提交之前编辑了代码?)

Fortran 90可能是一个猜测,但甚至可能是DBase III

DBase 链接: http: //lynnbob.com/bob/articles/DBASEIIIPlusLevel2.htm

Fortran 链接: http ://www.ews.uiuc.edu/~mrgates2/docs/fortran.html

对于 DBASE 关于管道...

如果传递参数,它们必须用 | 分隔。| (管道)。即使没有传递参数,管道 || 也是必需的。如果您传递参数,它们将在 || 中分隔。

于 2013-04-18T20:45:54.890 回答
0

这不是 BASIC、Pascal、C、Java、perl、Python、COBOL 或 FORTRAN,我可以从这些语言的经验中告诉你很多。提及您正在使用的规则引擎可能会有所帮助。

正在执行的操作看起来很像匹配操作。

'|' 看起来像管道字符的字符串文字 | ,并且考虑到上下文,它可能被用作类似 CSV 的平面文件格式数据库中的分隔符。例如,明文可能类似于 |INVOICETYPE|something|AAA|

但是,无法帮助您使用 $ 运算符。这可能是变量替换或匹配任何操作,甚至是连接器。

于 2013-04-18T18:36:55.300 回答
0

我的猜测:Fortran。

它现在是一种相当复杂的语言。我不相信它有一个->运营商,但它似乎有=>。也许这是您的代码片段中的供应商扩展。

支持 Fortran 的证据是.and.运算符。

于 2013-04-18T18:46:41.770 回答
0

看起来像 FORTRAN 语言。虽然->不是标准运算符。|只是一个字符串(看起来不像运算符),但肯定$看起来像一个运算符,也许是用于指定字符串格式的东西?推断此 cform 始终出现在字符串组之间的事实。

于 2013-04-18T20:38:13.507 回答