티스토리 뷰

SW개발/ANTLR

ANTLR Hello 예제

개소왕 2018. 5. 21. 21:59

* 개요

- ANTLR 기본 프로젝트 실행 하는 방법

- NEW -> Antlr Project 하면 생성되는 Hello.g4 를 JUnit 이용해서 실행하는 과정


자동생성 되는 Hello.g4 내용

/**

 * Define a grammar called Hello

 */

grammar Hello;

r  : 'hello' ID ;         // match keyword hello followed by an identifier


ID : [a-z]+ ;             // match lower-case identifiers


WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines





* 환경

Eclipse Oxygen

Antlr IDE 4

JUnit 5



1. JUnit  이 빌드패스 추가되어있어야 함.


2.  Hello.g4 우클릭 >> Run As >> Generate ANTLR Recognizer 실행하면 

프로젝트/target/genereated-sources/antlr4 폴더에 자바 파일 생성됨.


3. 빌드패스 - 소스에 '2' 의 폴더를 추가시킴


4. 테스트용 클래스 생성하여 다음 메서드 추가


@Test

public void t_1_hello() throws IOException { 

String s ="hello abc123";

ANTLRInputStream is = new ANTLRInputStream(s);

HelloLexer l = new HelloLexer(is); // 툴은 v4 사용하도록 생성.. 

CommonTokenStream cts = new CommonTokenStream(l);

HelloParser p = new HelloParser(cts);


ParseTree pt = p.r();

System.out.println(pt.toStringTree(p));

}


- r() 은 Hello.g4 에서 선언한 초기상태 r 로 선언한 메서드로 생성된 것.




* 주의 : import 시  org.antlr.v4.runtime.*와  org.antlr.runtime.* 두 가지가 있음


v4 의 클래스를 사용한 예제임

(Deprecated가 많지만, 일단 책의 예제 대로...)



* 오류  : HelloParser 를 인식하지 못 하는 경우

- 테스트 클래스와 동일 패키지 안에 있어야 함

(Hello.g4 는 패키지 없이 생성됨)


- 물론 패키지 지정하여 import 할 수도 있음.

http://dogcowking.tistory.com/65



'SW개발 > ANTLR' 카테고리의 다른 글

ANTLRInputsream DEPRECATED  (0) 2018.06.16
visitor 사용  (0) 2018.05.30
antlr ide Package 지정  (0) 2017.09.25
ANTLR - IDE 설치, 프로젝트시작 / Eclipse  (0) 2017.09.21
antlr 예제 실행 / 콘솔환경  (0) 2017.09.06
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함