프로그램 사용/antlr2012. 2. 23. 21:25
lexer(어휘분석기)는 token을 구분해내고
paser(구문분석기)는 lexer가 구분해낸 token의 문법구조를 분석한다.
아래예제에서 startRule()은 .g(rule)파일에서 가장 처음 규칙을 지칭한다.

int main(int argc,char** argv)
{
  try {
    std::ifstream inputstream("test.c", std::ifstream::in);
    MLexer* mainLexer = new MLexer(inputstream);
    mainLexer->setFilename("test.c");
    
    parser = new PParser(*mainLexer);
    parser->setFilename("test.c");
    gCurrentInputStream = &inputstream;
    parser->startRule();
  }
  catch(exception& e) {
    cerr << "exception: " << e.what() << endl;
  }
return 0;
}


int main(int argc,char** argv)
{
  try {
    … // 어휘 분석기/구문 분석기를 설정하기 위한 코드
    parser->startRule();
  }
  catch(ANTLR_USE_NAMESPACE(antlr)RecognitionException& e) {
    // 필요한 작업 수행
  }
  catch(ANTLR_USE_NAMESPACE(antlr)TokenStreamException& e) { 
    // 필요한 작업 수행
  }
return 0;
}

[링크 : http://www.ibm.com/developerworks/kr/library/tutorial/au-parsingwithantlr/index.html]
     [링크 : http://www.ibm.com/developerworks/kr/library/tutorial/au-parsingwithantlr/section5.html]

'프로그램 사용 > antlr' 카테고리의 다른 글

java를 이용한 antlr AST 탐색하기(AST navigation)  (0) 2011.11.02
ANTLR IDE 2.1.2 for ANTLR 3.0 above  (0) 2011.11.02
antlrworks  (0) 2011.11.02
antlr + eclipse & java  (0) 2011.10.30
antlr / pccts package  (0) 2011.10.24
Posted by 구차니