2011-07-09 13 views
5

Lưu ý: Một người có trên 1500 đại diện .. vui lòng thêm flex ++ và bison ++ làm thẻ :).Khó khăn chung với Flex ++

Có vẻ như mọi người trên Internet đã nhận được các lỗi sau đây với Flex ++:

scanner.l:1: bad character: % 
scanner.l:1: unknown error processing section 1 

Điều này xảy ra trên bất kỳ ví dụ tôi đưa ra Flex ++. Phiên bản tôi có là từ here và tôi đã thử các ví dụ chính xác trên trang đó và tôi vẫn gặp phải các lỗi này. Tôi đã thử trên Linux và Mac và đã hoàn toàn hết ý tưởng!

Có vẻ như Flex ++ là tên của một vi-rút cũ ở đó quá nên rất khó nhận được thảo luận hữu ích!

EDIT:

Dưới đây là một ví dụ mà tạo ra lỗi trên (đầu tiên vài dòng từ ví dụ lấy từ liên kết ở trên):

%name CalcScanner 
%define IOSTREAM 
%define LEX_PARAM YY_CalcParser_STYPE *val, YY_CalcParser_LTYPE *loc 
%define MEMBERS public: int line, column;                        
%define CONSTRUCTOR_INIT : line(1), column(1) 

%header{ 
#include<sstream> 
#include "parser.h" 
%} 

Bất kỳ trợ giúp sẽ là tuyệt vời hơn.

CHỈNH SỬA 2: Mọi người có thể không chỉnh sửa bài đăng này bằng cách đặt thẻ 'flex' vào không? Flex sẽ là những gì tôi sẽ sử dụng để gắn thẻ nhưng Flex cũng là một công nghệ Adobe - nó không phải là công cụ tôi đang sử dụng. Thẻ flex trên SO là cho sản phẩm Adobe (do đó logo trên thẻ). Cảm ơn bạn :).

+0

Hãy hiển thị một vài dòng đầu tiên trong ví dụ của bạn. –

+0

Chỉ cần thêm một số mã vào bài đăng của tôi. Cảm ơn. – ale

+0

Bạn đúng rằng 'flex' là thẻ sai. Có 'gnu-flex' cho trình tạo trình phân tích cú pháp/trình phân tích cú pháp. –

Trả lời

2

Kiểm tra dòng kết thúc của bạn? CR + LF vs NL có thể tạo nên sự khác biệt ở đây.

+0

Ý tưởng hay nhưng không may, dường như không phải như vậy. Ngoài ra, nó phàn nàn về nhân vật đầu tiên trong tập tin đó là khó hiểu: s! – ale

+0

Nếu kết thúc dòng sai, sau đó flex ++ sẽ xem xét toàn bộ tệp nằm trong dòng 1. Sau đó, nó có thể là phiên bản thứ hai của '%' nó đang khiếu nại. Bạn có thể đặt dòng đầu tiên vào một tập tin của chính nó và xem nếu các thông báo lỗi là như nhau? –

+0

Cảm ơn lời khuyên Ben. Thứ nhất, thay đổi kết thúc dòng không khắc phục được sự cố ... Tôi đã thử cả hai loại bằng cách chuyển đổi các kết thúc, lưu dưới dạng tệp mới và chạy tệp đó trên tệp mới. Đặt dòng đầu tiên vào một tệp riêng của nó tạo ra tệp này: – ale