Ngôn ngữ AFL (AmiBroker Formula Language)
AFL là một ngôn ngữ lập trình đặc biệt được sử dụng để định nghĩa và tạo các chỉ báo, quét, thăm dò, kiểm tra lại và bình luận của guru.
Từ vựng
Nội dung sau mô tả các loại đơn vị từ (token) được công nhận bởi trình thông dịch ngôn ngữ AFL.
Khoảng trắng
Khoảng trắng là tên chung cho các ký tự không gian (khoảng trắng), tab, ký tự dòng mới và các chú thích. Khoảng trắng có thể chỉ ra nơi bắt đầu và kết thúc của các token, nhưng ngoài chức năng này, bất kỳ khoảng trắng thừa nào sẽ bị loại bỏ.
Chú thích
Chú thích là các đoạn văn bản dùng để ghi chú chương trình. Chúng chỉ phục vụ cho người lập trình; sẽ bị loại bỏ khỏi mã nguồn trước khi phân tích cú pháp. Có hai cách để đánh dấu chú thích: chú thích kiểu C và chú thích kiểu C++. Chú thích kiểu C là bất kỳ chuỗi ký tự nào sau cặp ký hiệu /*. Chú thích kết thúc tại lần xuất hiện đầu tiên của cặp */ sau /* ban đầu. Toàn bộ chuỗi, bao gồm cả bốn ký hiệu chú thích, sẽ được thay thế bằng một khoảng trắng. Chú thích kiểu C++ là chú thích một dòng bắt đầu bằng hai dấu gạch chéo liền nhau (//) ở bất kỳ vị trí nào trong dòng và kéo dài cho đến dòng mới tiếp theo.
AFL không cho phép chú thích lồng nhau.
Các token
AFL nhận diện năm lớp token:
- Nhận diện (Identifiers)
- Hằng số (Constants)
- Chuỗi ký tự (String-literals)
- Toán tử (Operators)
- Dấu phân cách (Punctuators)
Nhận diện (Identifiers)
Nhận diện là tên tùy ý có độ dài bất kỳ được gán cho các hàm và biến. Nhận diện có thể chứa các chữ cái (a-z, A-Z), ký tự gạch dưới (_), và các chữ số (0-9). Ký tự đầu tiên phải là một chữ cái. Nhận diện trong AFL không phân biệt chữ hoa chữ thường.
Hằng số (Constants)
Hằng số là các token đại diện cho các giá trị số học hoặc ký tự cố định. Hằng số số học bao gồm số nguyên thập phân và tùy chọn: dấu chấm thập phân và phần thập phân. Hằng số số học âm có dấu trừ (-) phía trước.
Chuỗi ký tự (String-literals)
Chuỗi ký tự là một thể loại đặc biệt của hằng số dùng để xử lý các chuỗi ký tự cố định và được viết dưới dạng chuỗi các ký tự được bao quanh bởi dấu ngoặc kép:
str = "This is literally a string";
Chuỗi rỗng (null) được viết là "". Các ký tự trong dấu ngoặc kép có thể bao gồm các chuỗi thoát (escape sequences) như \n (chuỗi thoát cho dòng mới).
Một biểu thức hằng số là biểu thức luôn luôn đánh giá thành hằng số. Chúng được đánh giá như các biểu thức thông thường.
-
Dấu phân cách (Punctuators): Dấu phân cách trong AFL là một trong các ký tự sau:
()dấu ngoặc đơn: nhóm các biểu thức, phân cách biểu thức điều kiện và chỉ ra các lời gọi hàm cùng với tham số hàm.
d = c * ( a + b ) /* ghi đè mức độ ưu tiên bình thường */
a= (b AND c) OR (d AND e) /* biểu thức điều kiện */
func() /* gọi hàm không có đối số */-
,dấu phẩy: phân cách các phần tử trong danh sách tham số hàm. -
;dấu chấm phẩy: kết thúc câu lệnh. Mọi biểu thức hợp lệ theo sau dấu chấm phẩy được coi là một câu lệnh (statement) trong AFL. -
.dấu chấm: toán tử truy cập thành viên. Dùng để gọi các phương thức của đối tượng COM.
myobj.Method();=dấu bằng: phân tách khai báo biến khỏi danh sách khởi tạo hoặc chỉ ra giá trị mặc định của tham số.
x=5;Nó cũng chỉ ra giá trị mặc định cho một tham số (xem mô tả hàm tích hợp):
macd( fast = 12; slow = 26 ) /* giá trị mặc định cho các đối số fast và slow */