프로그램 사용/antlr
antlr을 이용한 구문분석(parsing)하기
구차니
2012. 2. 23. 21:25
lexer(어휘분석기)는 token을 구분해내고
paser(구문분석기)는 lexer가 구분해낸 token의 문법구조를 분석한다.
아래예제에서 startRule()은 .g(rule)파일에서 가장 처음 규칙을 지칭한다.
[링크 : http://www.ibm.com/developerworks/kr/library/tutorial/au-parsingwithantlr/index.html]
[링크 : http://www.ibm.com/developerworks/kr/library/tutorial/au-parsingwithantlr/section5.html]
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]