Здравствуйте возникла проблема,нужно во входном тексте найти числа состоящие только либо из 0 или из 1
%{
#include <ctype.h>
#include <stdio.h>
int yylex (void);
void yyerror (char const *);
%}
%token ONE TWO
%%
input: { printf("\n\tThis program expecting string as 0^n or 1^n\n");}
| input line
;
line: '\n' { printf ("empty line was introduced\n");}
| exp '\n' {printf("Right binary expression\n");}
|exp1 '\n' {printf("Right binary expression\n");}
//|exp2 '\n' {printf("Wrong binary expression\n");}
;
exp: ONE
| exp ONE
;
exp1: TWO
|exp1 TWO
;
%%
int yylex (void)
{
int c;
while ((c = getchar ()) == ' ' || c == '\t');
if (c == '0')
return ONE;
else
if (c == '1')
return TWO;
else
if (c == EOF)
return 0;
return c;
}
void yyerror (char const *s)
{
fprintf (stderr, "Not a binary expression\nstderror: %s\n", s);
}
int main (void)
{
return yyparse ();
}
однако нужно что бы на записи 01010 нужно что бы выводилось сообщение пишу вот так exp2: TWO|ONE|exp2 ONE|exp2 TWO; однако выдается сообщение о конфликте, как это можно исправить?