chúng tôi chỉ bắt đầu sử dụng flex để xây dựng một lexer cho một dự án, nhưng chúng tôi không thể tìm ra cách để làm cho nó hoạt động. Tôi sao chép mã ví dụ được đưa ra trong hướng dẫn và cố gắng chạy flex ++ với tệp tut làm đối số của nó tuy nhiên tôi chỉ nhận được một lỗi mỗi lần. ví dụ.Lỗi ký tự lỗi Flex ++ và hơn thế nữa. mới để flex
tập tin đầu vào (calc.l)
%name Scanner
%define IOSTREAM
DIGIT [0-9]
DIGIT1 [1-9]
%%
"+" { cout << "operator <" << yytext[0] << ">" << endl; }
"-" { cout << "operator <" << yytext[0] << ">" << endl; }
"=" { cout << "operator <" << yytext[0] << ">" << endl; }
{DIGIT1}{DIGIT}* { cout << " number <" << yytext << ">" << endl; }
. { cout << " UNKNOWN <" << yytext[0] << ">" << endl; }
%%
int main(int argc, char ** argv)
{
Scanner scanner;
scanner.yylex();
return 0;
}
với mã này tôi nhận được
flex ++ calc.l
calc.l: 1: nhân vật xấu:% calc. l: 1: phần xử lý lỗi không xác định 1
calc.l: 1: phần xử lý lỗi không xác định 1
calc.l: 1: process error unknownin g phần 1
calc.l: 2: không được công nhận '%' chỉ thị
ai cũng có thể giúp tôi hiểu những gì đang làm sai ở đây? cổ vũ
bạn có một cách tình cờ có được điều này từ http://www.mario-konrad.ch/index.php?page=20024? Tôi đang gặp vấn đề tương tự mặc dù tôi vừa tải xuống nó lần thứ hai vì vậy tôi sẽ xem xét nó. – Ell
Tôi gặp lỗi tương tự ở đây. – JohnTortugo
Tôi biết đây là một câu hỏi thực sự cũ ... nhưng tôi tìm thấy ít nhất một cách để có được loại tập tin này để biên dịch và chạy nếu bạn cần nó trong tương lai. – summea