Phần lớn các chương trình này nên trông quen thuộc với lập trình C, vì hầu hết trong số đó là C. Một
chương trình flex bao gồm ba phần, ngăn cách bởi %% dòng. Phần đầu tiên chứa
các khai báo và thiết lập tùy chọn. Phần thứ hai là danh sách các mẫu và hành động,
và phần thứ ba là mã C được sao chép vào máy quét tạo ra, thường nhỏ
thói quen liên quan đến mã trong hành động.
Trong phần khai báo, mã bên trong của% {và%} được sao chép nguyên văn thông qua gần
đầu file nguồn tạo ra C. Trong trường hợp này nó chỉ thiết lập các biến cho các dòng,
lời nói, và các nhân vật.
Trong phần thứ hai, mỗi mô hình là vào lúc bắt đầu của một dòng, tiếp theo là mã C
để thực thi khi các mô hình phù hợp. Các mã C có thể là một tuyên bố hoặc có thể là một
khối multiline trong niềng răng, {}. (Mỗi mẫu phải bắt đầu ở đầu dòng,
kể từ flex xem xét bất kỳ dòng lệnh bắt đầu với khoảng trắng được mã được sao chép vào
các chương trình C tạo ra.)
Trong chương trình này, chỉ có ba mẫu. Việc đầu tiên, [a-zA-Z] +, phù hợp với một từ.
Các nhân vật trong dấu ngoặc, được biết đến như là một lớp nhân vật, phù hợp với bất kỳ thượng lưu hoặc đơn
thư chữ thường, và các dấu + có nghĩa là để phù hợp với một hoặc nhiều trước điều,
mà ở đây có nghĩa là một chuỗi các chữ cái hoặc một từ. Các mã hành động cập nhật các số
từ và ký tự nhìn thấy. Trong bất kỳ hành động flex, các yytext biến được thiết lập để trỏ đến các
văn bản đầu vào mô hình chỉ phù hợp. Trong trường hợp này, tất cả chúng ta quan tâm là có bao nhiêu
ký tự nó là vì vậy chúng tôi có thể cập nhật các nhân vật tính cách thích hợp.
Các mô hình thứ hai, n, chỉ phù hợp với một dòng mới. Các hành động cập nhật số lượng các dòng
và các nhân vật.
Regular Expressions và quét | 3
Tải về tại Boykma.Com
Các mô hình cuối cùng là một dấu chấm, đó là regex-ese cho bất kỳ nhân vật. (Nó tương tự như một? Trong
shell script.) Các hành động cập nhật số lượng ký tự. Và đó là tất cả các mô hình
chúng ta cần. †
Mã C ở cuối là một chương trình chính mà các cuộc gọi yylex (), tên mà gồng cho đến
những thói quen máy quét, và sau đó in ra kết quả. Trong trường hợp không có bất kỳ thoả thuận khác,
các máy quét đọc từ đầu vào chuẩn. Vì vậy, hãy chạy nó
đang được dịch, vui lòng đợi..