LINUX.ORG.RU

Сообщения DarkKnight_spb

 

Бизон выдает ошибки

Форум — Development

Здравствуйте!Изучаю bison+flex. На данный момент необходимо выводить все слова(буквы,цифры и пробелы), остальное - пропускать. При компиляции бизон выдает ошибку,вида

bison.b:31.29-30: $1 шч `PRINT' эх шьххЄ юяшёрээюую Єшяр

flex.l

%{				// Начало блока, прямо копируемого в результирующий файл
#include <stdio.h> 
#include <string.h>
#include "p_bison.hpp"	// Файл, содержащий макроопределения сделанные в bison.b

extern YYSTYPE yylval;


%}				// Окончание блока, прямо копируемого в результирующий файл

comments   \/\*[^*]*\*+([^/*][^*]*\*+)*\/
formating	[\n\r\t\f]*
except_spaces [ ]{2,}
word [a-zA-Zа-яА-Я0-9 ]+



%%

{word}			{
					yylval.str=strdup(yytext); 
					return T_STRING;
				}
.+				// пропускаем остальное

%%

int yywrap()			// Функция обработки обнаружения конца файла
{
	return(1);		// После обнаружения конца файла прекратить парсинг
}

bison.b


%{					// Начало блока, прямо копируемого в результирующий файл
 
#include <stdio.h>
#include <string.h>

extern int yylex(void);		// Объявление внешней функции yylex
void yyerror(char *s);			// Объявление функции обработки ошибки

char out_str[255];
 


%}

%debug

%union
{
char* str;
}					
 
%token <str> T_STRING

%start PRINT

%%					// Начало секции определения правил

PRINT:
	| STR
	{
		printf("%s",$1);
	}
	;
STR:
	T_STRING
	| STR T_STRING
	; 

%%						
#include <stdio.h>

void yyerror(char *s)				// Функция сообщения об ошибке
{
	fflush(stdout);
	printf("\n%s\n", s);
}

 , ,

DarkKnight_spb
()

RSS подписка на новые темы