Sto cercando di usare flex e bison per creare un filtro, perché voglio ottenere determinati elementi grammaticali da un linguaggio complesso. Il mio piano è usare flex + bison per riconoscere la grammatica e scaricare la posizione degli elementi di interesse. (Quindi utilizzare uno script per afferrare il testo in base alle posizioni scaricate.)In che modo flex supporta esattamente la posizione del bisonte?
Ho trovato flex in grado di supportare una funzione di bisonte chiamata posizione di bisonte, ma come funziona esattamente. Ho provato l'esempio nel documento flex, sembra che yylloc non sia impostato automaticamente da flex, ottengo sempre (1,0)-(1,0)
. Potrebbe flettere calcolare automaticamente la posizione di ciascun token? In caso contrario, quale funzione di interfaccia è definita per me da implementare? C'è qualche esempio?
Qualunque soluzione migliore per gli strumenti?
migliori saluti, Kevin
Edit:
Ora l'interfaccia per turno yylex a:
int yylex(YYSTYPE * yylval_param,YYLTYPE * yylloc_param);
manuale bisonti non specifica come lexer dovrebbe attuare per impostare correttamente yylloc_param. Per me è difficile tracciare manualmente il numero di colonna di ciascun token.
ho pensato che solo numero di riga è di importazione per me. –