2013-04-18 9 views
5

Wir versuchen, einige Regel-Syntax zu entschlüsseln und sind uns ihrer Herkunft nicht sicher. HierEntziffern, welche Sprache oder Syntax das ist

ein Beispiel:

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

Insbesondere versuchen wir | und $ zu verstehen. Kann mir jemand Bescheid geben, wenn sie ähnliche gesehen haben und sich der Ausgangssprache oder der korrekten Interpretation der | und $ entziehen?

+0

Es gab viele Sprachen zurück in den alten Tagen mit ähnlicher Syntax. Es ist FORTRANish, aber eher etwas anderes. –

+0

(Sieht irgendwie Datenbank-ish. Aber nicht COBOL und sicherlich nicht RPG. Könnte aber eine andere Report Generator Sprache sein.) –

+0

Ehrlich gesagt, sollten Sie wahrscheinlich die Domain geben, die helfen könnte, auf die Bedeutungen der Operatoren zeigen. Es könnte alles von alt zu Coq mit benutzerdefinierten Infix-Operatoren sein. –

Antwort

1

Von seiner Syntax können wir sagen, dass es eine "moderne" Sprache ist. Denken Sie daran, "moderne" In Ordnung;)

substr 
.and. 
-> 

ziemlich modern, mit COBOL und Montage Sprache vergleichen.

(Autos-> TYPE = 'C') und (Auto-> CD_CODE <> '').. Und (.. '|' + Abrechnungs> TYPE + '|' $ '| AAA |' . .und) ('|' + SUBSTR (abrechnungs> TYPE, 1,2) + '|' $ '| 11 |')

Ein Pseudo-Code wäre etwas wie:

(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 

Meine Vermutung über $ Verwendung wäre:

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

(Ich weiß nicht, was die Ausgabe sein würde, da es den gesamten Rechnungstyp mit AAA und sogar mit den ersten beiden Buchstaben als 11 vergleicht. Vielleicht haben Sie den Code vor dem Einreichen bearbeitet?)

Fortran 90 würde eine Vermutung, aber dBase III sogar vielleicht.

dBase Link: http://lynnbob.com/bob/articles/DBASEIIIPlusLevel2.htm

Fortran Link: | http://www.ews.uiuc.edu/~mrgates2/docs/fortran.html

Für DBASE in Bezug auf die Rohre ...

Wenn Sie Parameter übergeben, müssen sie durch abgegrenzt werden | (Rohre). Die Pipes, ||, werden benötigt, auch wenn keine Parameter übergeben werden. Wenn Sie Parameter übergeben, werden sie innerhalb der || begrenzt.

0

Es ist nicht BASIC, Pascal, C, Java, Perl, Python, COBOL oder FORTRAN, so viel kann ich Ihnen aus Erfahrung mit diesen Sprachen erzählen. Es könnte hilfreich sein, zu erwähnen, welche Regel-Engine Sie verwenden.

Die Operation, die ausgeführt wird, ähnelt einer Match-Operation.

'|' sieht aus wie ein String-Literal für das Pipe-Zeichen | und angesichts des Kontextes wird es wahrscheinlich als Trennzeichen in einer Datei im flachen Dateiformat wie CSV verwendet. Zum Beispiel wäre der Klartext wahrscheinlich etwas wie | INVOICETYPE | etwas | AAA |

Kann Ihnen jedoch nicht mit dem $ -Operator helfen. Das könnte eine Variablensubstitution oder eine Match-Anyone-Operation oder sogar ein Konkatenator sein.

0

Meine Schätzung: Fortran.

Es ist jetzt eine ziemlich komplexe Sprache. Ich glaube nicht, dass es einen Operator -> hat, aber es scheint => zu haben. Vielleicht ist das eine Erweiterung des Herstellers in Ihrem Snippet.

Der Pro-Fortran-Beweis ist der Operator .and..

+0

Wäre FORTRAN nicht '/ =' oder '.ne' anstelle von' <> 'zu verwenden? –

0

Sieht aus wie eine FORTRAN-Sprache. Die -> ist jedoch kein Standardoperator. Die | ist nur eine Zeichenfolge (sieht nicht wie ein Operator aus), aber die $ sieht sicherlich wie ein Operator, vielleicht etwas für die Angabe von String-Formatierung? Daraus folgst du der Tatsache, dass es immer zwischen Gruppen von Strings erscheint.

Verwandte Themen