#include<stdio.h>
#include<string.h>

#define  max_dlug_tekstu 1000

char wejscie;
char tekst[max_dlug_tekstu];

void czyt_wejscie() {  // wczytanie nowego wejscia
  do {  /* az wczytany zostanie znak widoczny lub zm.wiersza */ ;
    scanf("%c", &wejscie);
  } while ((wejscie < '!' || wejscie > '~') && wejscie != '\n');
  int dlug_tekstu = strlen(tekst);
  tekst[dlug_tekstu] = wejscie;
  tekst[dlug_tekstu+1] = '\0';
}

//------------------------------------------------------
// SERCE PARSERA:
//   po jednej funkcji na kazdy nieterminal gramatyki

int wyrazenie();
int liczba();

int wyrazenie() {
  if (liczba())  return 1;
  else
    if (wejscie == '+') {
      czyt_wejscie();
      if (liczba())
        if (liczba())  return 1;
        else  return 0;
      else  return 0;
    }
    else  return 0;      
}

int liczba() {
  if (wejscie == '0')  { czyt_wejscie();  return 1; }  else
  if (wejscie == '1')  { czyt_wejscie();  return 1; }  else
  if (wejscie == '2')  { czyt_wejscie();  return 1; }
  else  return 0;
}

//------------------------------------------------------

int main() {
  tekst[0] = '\0';  /* tekst jest pusty */
  czyt_wejscie();
  if (wyrazenie() && wejscie == '\n')
    printf("\n  WYRAZENIE POPRAWNE\n  %s\n", tekst);
  else
    printf("\n  WYRAZENIE BLEDNE:\n  %s\n\n", tekst);
  return 0;
}
