Tôi có ngữ pháp JavaScript ANTLR (được lấy từ Internet), dường như hỗ trợ mọi thứ ngoại trừ các chữ regex.Phân tích cú pháp JavaScript regex với ANTLR
Vấn đề với một regex đen là bạn có hai quy tắc, về cơ bản:.
multiplicativeExpression
: unaryExpression (LT!* ('*' | '/' | '%')^ LT!* unaryExpression)*
và
regexLiteral
: '/' RegexLiteralChar* '/'
nơi RegexLiteralChar quy tắc sử dụng quy tắc lexer khác nhau hơn là một biểu hiện bình thường (ví dụ như một báo giá kép không chấm dứt nó).
Điều này có nghĩa là tôi cần, theo một cách nào đó, hãy thay đổi một số loại trạng thái lexer từ trình phân tích cú pháp của tôi. Tôi có thể làm cái này như thế nào? Thậm chí có thể không?
Truyền thông giữa phân tích cú pháp và quy tắc lexer là không thể. Có lẽ có một cái nhìn tại ngữ pháp này, mà dường như để xử lý regex-literals: http://research.xebic.com/es3/ (kiểm tra các tập tin ZIP). –