2013-04-18 43 views
5

Chúng tôi đang cố gắng giải mã một số cú pháp quy tắc và không chắc chắn về nguồn gốc của nó.Giải mã ngôn ngữ hoặc cú pháp này là

Dưới đây là một ví dụ:

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

Cụ thể chúng tôi đang cố gắng để hiểu |$. Bất cứ ai có thể cho tôi biết nếu họ đã nhìn thấy tương tự và lảng tránh với ngôn ngữ nguồn hoặc giải thích chính xác của |$?

+0

Có rất nhiều ngôn ngữ trở lại trong những ngày cũ với cú pháp tương tự như vậy. Nó là FORTRANish, nhưng nhiều khả năng là cái gì khác. –

+0

(Có vẻ như cơ sở dữ liệu-ish. Nhưng không phải COBOL và chắc chắn không phải là RPG. Có thể là một số ngôn ngữ trình tạo báo cáo khác.) –

+0

Thành thật mà nói, bạn nên cung cấp tên miền, điều này có thể giúp chỉ ra ý nghĩa của các toán tử. Nó có thể là bất cứ điều gì từ cổ xưa để Coq với các nhà điều hành infix tùy chỉnh. –

Trả lời

1

Từ cú pháp của nó, chúng tôi có thể nói đó là một ngôn ngữ "hiện đại". Ghi "hiện đại" alright;)

substr 
.and. 
-> 

là khá hiện đại, trong so sánh với COBOL và ngôn ngữ lắp ráp.

(CARS-> type = 'C') và (CARS-> CD_CODE <> '').. Và (.. '|' + Hoá đơn> LOẠI + '|' $ '| AAA |' .) .và ('|' + SUBSTR (hoá đơn> TYPE, 1,2) + '|' $ '| 11 |')

Một mã giả sẽ là một cái gì đó như:

(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 

Đoán của tôi về việc sử dụng $ sẽ là:

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

(Tôi không biết đầu ra sẽ là gì, vì nó so sánh toàn bộ loại hóa đơn với AAA và thậm chí với hai chữ cái đầu tiên là 11. Có thể bạn đã chỉnh sửa mã trước khi gửi?)

Fortran 90 sẽ là phỏng đoán, nhưng thậm chí DBase III có thể.

DBase liên kết: http://lynnbob.com/bob/articles/DBASEIIIPlusLevel2.htm

Fortran liên kết: http://www.ews.uiuc.edu/~mrgates2/docs/fortran.html

Đối dBASE liên quan đến các đường ống ...

Nếu bạn vượt qua các thông số, họ phải được giới hạn bởi | | (ống). Các đường ống, ||, được yêu cầu ngay cả khi không có thông số nào được truyền. Nếu bạn vượt qua các tham số, chúng được phân định trong ||.

0

Nó không phải là BASIC, Pascal, C, Java, perl, Python, COBOL hoặc FORTRAN, mà tôi có thể cho bạn biết từ trải nghiệm với các ngôn ngữ đó. Nó có thể hữu ích để đề cập đến những gì quy tắc động cơ bạn đang sử dụng.

Thao tác đang được thực hiện trông giống như thao tác khớp.

'|' trông giống như một chuỗi chữ cho ký tự ống | và với bối cảnh, nó có thể được sử dụng như một dấu phân tách trong một cơ sở dữ liệu định dạng tập tin dạng phẳng giống như CSV. Ví dụ, bản rõ có lẽ sẽ là một cái gì đó như | INVOICETYPE | something | AAA |

Không thể giúp bạn với toán tử $. Đó có thể là một thay thế biến hoặc một hoạt động khớp với bất kỳ thứ gì hoặc thậm chí là một bộ nối.

0

Đoán của tôi: Fortran.

Bây giờ là một ngôn ngữ khá phức tạp. Tôi không tin rằng nó có một nhà điều hành -> nhưng nó dường như có =>. Có lẽ đó là phần mở rộng của nhà cung cấp trong đoạn mã của bạn.

Bằng chứng ủng hộ Fortran là toán tử .and..

+0

Không FORTRAN sử dụng '/ =' hoặc '.ne''instead of' <> '? –

0

Trông giống như ngôn ngữ FORTRAN-ish. Tuy nhiên, -> không phải là một toán tử chuẩn. Các | chỉ là một chuỗi (không giống như một nhà điều hành), nhưng các $ chắc chắn trông giống như một nhà điều hành, có thể một cái gì đó để xác định định dạng chuỗi? suy ra cform này thực tế là nó luôn xuất hiện giữa các nhóm dây.

Các vấn đề liên quan