2013-04-18 16 views
5

Stiamo provando a decifrare alcune sintassi delle regole e non siamo sicuri della sua origine.Decifra quale lingua o sintassi si tratta di

Ecco un esempio:

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

In particolare stiamo cercando di capire | e $. Qualcuno può farmi sapere se hanno visto simili e eludere alla lingua di partenza o l'interpretazione corretta di | e $?

+0

C'erano molte lingue indietro nei tempi passati con sintassi simile a quella. È FORTRANish, ma più probabilmente qualcos'altro. –

+0

(Sembra un po 'database-ish, ma non COBOL e certamente non RPG. Potrebbe comunque essere un altro linguaggio di generazione di report.) –

+0

Onestamente, dovresti probabilmente dare il dominio, il che potrebbe aiutare a indicare i significati degli operatori. Potrebbe essere qualsiasi cosa, da antica a Coq con operatori infissi personalizzati. –

risposta

1

Dalla sua sintassi possiamo dire che è un linguaggio "moderno". Ricordate "moderno" va bene;)

substr 
.and. 
-> 

sono abbastanza moderno, in confronto con COBOL e la lingua di assemblaggio.

(Auto-> type = 'C') e (Auto-> CD_CODE <> '').. E (.. '|' + INVOICE-> TYPE + '|' $ '| AAA |' .) .e ('|' + SUBSTR (INVOICE-> TIPO, 1,2) + '|' $ '| 11 |')

Un codice pseudo sarebbe qualcosa come:

(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 

mia ipotesi sull'utilizzo di $ sarebbe:

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

(Non so quale sarebbe l'output, in quanto confronta l'intero tipo di fattura con AAA e anche con le prime due lettere come 11. Forse hai modificato il codice prima di inviarlo?)

Fortran 90 sarebbe una supposizione, ma anche dBASE III forse.

DBase link: http://lynnbob.com/bob/articles/DBASEIIIPlusLevel2.htm

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

Per DBASE per quanto riguarda i tubi ...

Se si passa parametri, devono essere delimitato da | | (tubi). I tubi, ||, sono richiesti anche se non vengono passati parametri. Se si passano i parametri, vengono delimitati all'interno di ||.

0

Non è BASIC, Pascal, C, Java, perl, Python, COBOL o FORTRAN, così tanto posso dirti dall'esperienza con quelle lingue. Potrebbe essere utile menzionare il motore delle regole che stai utilizzando.

L'operazione eseguita sembra molto simile a un'operazione di corrispondenza.

'|' sembra una stringa letterale per il carattere pipe | e dato il contesto, è probabilmente usato come separatore in un database in formato file flat come CSV. Ad esempio, il testo in chiaro sarebbe probabilmente qualcosa come | INVOICETYPE | qualcosa | AAA |

Non posso aiutarti con l'operatore $, però. Potrebbe trattarsi di una sostituzione variabile o di una operazione match-anything o addirittura di un concatenatore.

0

La mia ipotesi: Fortran.

È un linguaggio piuttosto complesso ora. Non credo che abbia un operatore -> ma sembra che abbia =>. Forse questa è un'estensione del venditore nel tuo snippet.

Le prove pro-Fortran sono l'operatore .and..

+0

Non FORTRAN usare '/ =' o '.ne .instead di' <> '? –

0

Sembra una lingua FORTRAN-ish. Lo -> non è un operatore standard. Il | è solo una stringa (non sembra un operatore), ma lo $ sembra sicuramente un operatore, forse qualcosa per specificare la formattazione delle stringhe? inferendo questa cform il fatto che appare sempre tra gruppi di stringhe.

Problemi correlati