-
TIL 121일 - Visitor 패턴과 Antlr공부/개발 전체적인 2022. 4. 30. 01:00
Antlr 예시 코드를 보다 보면, walket.walk 메서드 안에 listener를 넣는 코드가 있다. 오늘 알게 된 것인데 이를 Vistitor 패턴이라고 한다.
@Test void name2() { String plusString = "1 + 2 + 3"; PlusLexer plusLexer = new PlusLexer(CharStreams.fromString(plusString)); CommonTokenStream tokens = new CommonTokenStream(plusLexer); PlusParser parser = new PlusParser(tokens); ParseTree tree = parser.operation(); ParseTreeWalker walker = new ParseTreeWalker(); PlusOperationListener listener = new PlusOperationListener(); walker.walk(listener, tree); assertThat(listener.getResult()).isEqualTo(6); }
Visiter 패턴은 방문자와 방문 공간을 분리하여, 방문 공간이 방문자를 맞이할 때, 이후에 대한 행동을 방문자에게 위임하는 패턴이다.
그러니까 listener안에 exitOperation 같은 메서드가 있잖아. 이런걸 listener에게 알아서 하게 맡긴거지
왜냐하면 walker.walk는 어떤 코드에서도 동일할 것인디, 리스너는 antlr의 문법에 따라 달라질 수 있잖아..
사실 오늘 술먹어서 진득하게 몬함 히히;;
'공부 > 개발 전체적인' 카테고리의 다른 글
TIL 123일 - Antlr로 환불 규정 만들기(2) (0) 2022.05.01 TIL 122일 - 시퀀스 다이어그램 (0) 2022.05.01 TIL 120일 - Antlr으로 환불 규정...만들기?? (0) 2022.04.28 TIL 119일 - Antlr로 덧셈 구현하기 (0) 2022.04.28 TIL 116일 - TDD로 알고리즘 문제 풀기 (0) 2022.04.24