yacc/lex: nie widzi odwrotnego apostrofa

yacc/lex: nie widzi odwrotnego apostrofa
SA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 513
0

Zaczynam przygodę z yacc'em i lex'em. Mam kompletne źródło kompilatora jakiegoś basica, w którym "pionowy" apostrof (który w C jest używany do '0') jest zarezerwowany na komentaż.
Postanowiłem dodać '0' z C w postaci 0, ale niestety nie daję rady: ani , "", ` nie są wyłapywane, tylko lecą od handlera "każdy inny znak":

Kopiuj
// plik.l, kompilowany alex.exe'em z http://www.bumblebeesoftware.com/
// tu cała masa tokenów

`      { fprintf(stdout, "jest"); }
\`     { fprintf(stdout, "jest"); }
"`"    { fprintf(stdout, "jest"); }
\x60   { fprintf(stdout, "jest"); }
`[^`]` { fprintf(stdout, "jest"); }

. { sprintf(buf,"invalid character '0x%02x'\n", (unsigned int)yytext[0]); 
	yy_warning(buf);}

Kod basica dla tego: int i = 1``Lexer nie sygnalizuje "jest", a kompilator czepia się pierwszego apostrofu pisząc domyślny błąd "invalid character".

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0

a \140 ?

SA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 513
0

Ok już działa. Jak na złość zapomniałem zmienić kompilator basica z domyślnego na ten nowy.

Załapałem że coś jest nie tak dopiero po zmianie "invalid character" na inny string. Kompilator usilnie pokazywał "invalid character".

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.