2011-07-09 12 views
5

Uwaga: Ktoś, kto ma ponad 1500 powtórzeń. Proszę dodać flex ++ i bison ++ jako znaczniki :).Typowa trudność z Flex ++

Wydaje się ludzie na całym Internecie zostały uzyskiwanie następujące błędy z Flex ++:

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

Dzieje się tak na dowolnym przykładzie daję Flex ++. Mam wersję od here i wypróbowałem dokładne przykłady na tej stronie i nadal dostaję te błędy. Próbowałem już na Linuksie i Macu i całkowicie zabrakło pomysłów!

Wygląda na to, że Flex ++ to nazwa starego wirusa, więc bardzo trudno jest uzyskać użyteczną dyskusję!

Edycja:

Oto przykład, który daje powyższy błąd (pierwszy z kilku linii np pobierane z linku powyżej):

%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" 
%} 

Każda pomoc będzie więcej niż fantastyczne.

EDYCJA 2: Czy ludzie nie mogą edytować tego posta, umieszczając tag "flex"? Flex byłby tym, co chciałbym oznaczyć, ale Flex jest także technologią Adobe - nie jest to narzędzie, którego używam. Tag flex na SO jest dla produktu Adobe (stąd logo na tagu). Dziękuję Ci :).

+0

Pokaż kilka pierwszych linii swojego przykładu. –

+0

Właśnie dodałem kod do mojego posta. Dzięki. – ale

+0

Masz rację, że 'flex' to niewłaściwy tag. Jest 'gnu-flex' dla lexer/parser-generator. –

Odpowiedz

2

Sprawdź zakończenia linii? CR + LF vs NL może mieć znaczenie tutaj.

+0

Dobry pomysł, ale niestety tak się nie dzieje. Narzeka również na pierwszy znak w pliku, który jest mylący: s! – ale

+0

Jeśli końcówki linii były niepoprawne, to flex ++ uznałby cały plik za wiersz 1. Może to być drugie wystąpienie '%', na które narzeka. Czy możesz sam umieścić sam wiersz w pliku i sprawdzić, czy komunikaty o błędach są takie same? –

+0

Dzięki za porady Ben. Po pierwsze, zmiana końcówek linii nie rozwiązuje problemu ... Próbowałem obu typów, przełączając końcówki, zapisując jako nowy plik i uruchamiając go na nowym pliku. Umieszczenie pierwszego wiersza w pliku powoduje: – ale