4-2학기 2009. 9. 16. 03:32

수업시간에 교수님이 한번 해보라고 농담삼아 던지신 심플파서

S-> aS | bS | c '\n' 으로 끝나는 심플한 그래머를 만족하는
파서를 작성하는것.
의외로 간단하다....



#include <iostream>
#include <conio.h>

using namespace std;
 
// S->aS|hS|c'\n'

int S()
{
 char ch,temp;
 ch=getch();
 if(ch=='a' || ch=='h')
 {
  cout  << "valid Parse : " << ch << endl;
  return S();
 }
 else if(ch=='c')
 {
  temp=getch();      
  if(temp=='\0' || temp==13)
  {
   cout  << "valid Parse : " << ch << endl<<endl;
   cout << "Finished Parse : OK" << endl;
   return 0;
  }
  else
  {
   cout << endl << "invalid Parse : " << ch << endl;
   cout << "err" << endl;
   return -1;
  }
 }
 else
 {
  cout << endl << "invalid Parse : " << ch << endl;
  cout << "ERR" << endl;
  return -1;
 }
 return 0;
}

int main()
{
 // Start Parser
 S();
 return 0;
}

posted by Sense.J
: