Trong flex, tôi muốn trả lại nhiều mã thông báo cho một kết hợp của cụm từ thông dụng. Có cách nào để làm việc này không?FLEX: Có cách nào để trả lại mã thông báo cùng một lúc
7
A
Trả lời
0
Bạn có nghĩa là tất cả các kết quả phù hợp không? Bạn đang sử dụng chức năng regex hoặc chức năng chuỗi? Sử dụng cờ toàn cầu.
Đối với flex, tôi không nghĩ rằng bạn có thể làm điều đó. Bạn thử nghiệm cho phù hợp với một mẫu tại một thời điểm để có thể nằm ngoài phạm vi. Tại sao bạn muốn điều đó? Là một tối ưu hóa? Vấn đề phạm vi?
2
Cách tôi đã thực hiện việc này là tạo hàng đợi mã thông báo trả lại và vào đầu số yylex()
, hãy kiểm tra mã thông báo và trả lại chúng.
-1
Thông thường, điều này được xử lý bởi một trình phân tích cú pháp phía trên máy quét cung cấp cho bạn mã sạch hơn nhiều. Bạn có thể mô phỏng ở một mức độ nào đó với các trạng thái:
%option noyywrap
%top {
#define TOKEN_LEFT_PAREN 4711
#define TOKEN_RIGHT_PAREN 4712
#define TOKEN_NUMBER 4713
}
%x PAREN_STATE
%%
"(" BEGIN(PAREN_STATE); return TOKEN_LEFT_PAREN;
<PAREN_STATE>{
[0-9]+ return TOKEN_NUMBER;
")" BEGIN(INITIAL); return TOKEN_RIGHT_PAREN;
.|\n /* maybe signal syntax error here */
}
%%
int main (int argc, char *argv [])
{
int i;
while ((i = yylex()))
printf ("%d\n", i);
return 0;
}
nhưng điều này sẽ rất lộn xộn ngay khi ngữ pháp của bạn trở nên phức tạp hơn.
Các vấn đề liên quan
- 1. Parse.com: Làm cách nào để trả lại mã thông báo phiên?
- 2. Tìm kiếm solitaire Sunspot, cách trả lại tất cả các bản ghi cùng một lúc?
- 3. Flex/Bison: Quản lý mã thông báo không hợp lệ?
- 4. Làm cách nào để tạo cùng một mã thông báo này trong PHP? (Từ .NET)
- 5. Làm thế nào để hiển thị các thông báo lỗi Salesforce Validation Rule cùng một lúc thông qua API
- 6. Cách hiển thị thông báo lỗi xác thực biểu mẫu Ruby on Rails cùng một lúc
- 7. plot3D - có hai ô cùng một lúc
- 8. Có cách nào để sửa tất cả các tin nhắn MATLAB mlint cùng một lúc không?
- 9. Trả lại thông báo đúng hoặc lỗi trong Ruby
- 10. Bộ sưu tập .Net nào để thêm nhiều đối tượng cùng một lúc và được thông báo?
- 11. Trong Symfony, có cách nào để tạo các trang tập tin pdf cùng một lúc không?
- 12. Thông báo trên CoreBlueTooth trả về mã CBErrorDomain = 0
- 13. Trong bash, làm cách nào để đặt mã trả lại?
- 14. thông báo đẩy android cho nhiều thiết bị cùng một lúc bằng cách sử dụng google c2dm
- 15. Tại sao HMAC SHA-1 trả về một thông báo khác với cùng một đầu vào?
- 16. Cách 'Ruby' để lặp qua hai mảng cùng một lúc
- 17. Nhiều lần đăng lại Async cùng một lúc - ASP.NET
- 18. Eclipse có thể định dạng lại nhiều tệp cùng một lúc không?
- 19. Có công cụ tốt hơn (hiện đại hơn lex/flex) để tạo trình mã thông báo cho C++ không?
- 20. Thêm nhiều phong cách cùng một lúc để SpannableString
- 21. Làm thế nào để bạn tải lại tất cả các cửa sổ vim cùng một lúc?
- 22. Lỗi trả về jQuery.ajax: Mã thông báo không mong muốn với Thông báo lỗi: parseerror?
- 23. Có cách nào để setTitle trên UIButton cập nhật tất cả UIControlStates cùng một lúc không?
- 24. Có cách nào để mở nhiều tệp cùng một lúc từ vim không?
- 25. Xác thực mẫu email cùng một lúc
- 26. Làm cách nào để hiển thị lại Chế độ xem thông báo "Bạn muốn gửi cho bạn thông báo đẩy"?
- 27. Ajax nhiều yêu cầu cùng một lúc
- 28. JQuery: đăng Mã thông báo FormData và csrf cùng nhau
- 29. Làm cách nào để có thông báo đèn LED?
- 30. Làm cách nào để chỉ hiển thị một Hộp thoại cùng một lúc?
Thành thật mà nói, tôi khá mới để uốn cong và tôi không chắc chắn. Tôi nghĩ rằng tôi đã sử dụng một sự kết hợp của biểu thức thông thường và phù hợp với chuỗi. Dưới đây là một ví dụ "(" \t \t {return L_PAREN;} { INT} {yylval.Int = atoi (yytext); return INT;} Những gì tôi muốn là để có thể quay trở lại hai thẻ cùng một lúc . – Eburetto