분류 전체보기
-
TIL 123일 - Antlr로 환불 규정 만들기(2)공부/개발 전체적인 2022. 5. 1. 16:14
아래 문자열이 의미하는 것은 환불 규정이다, begin end가 둘 다 있는 경우, end만 있는 경우, begin만 있는 경우 이렇게 3가지 표현이 있따. begin:D-4of1|end:D-1of2|20000원 end:D-1of2|20000원 begin:D-4of1|20000원 이렇게 한 덕분에 코드 단에서 아래처럼 접근할 수 있게 되었다. beginDate().beginDDay().dDay().NUMBER() 일단 지금까지 봤을 때 문법은 완성이 되었다고 생각했고, 그래서 실제 실무에 적용을 해보려고 node.js에서의 antlr를 찾아봤는데 노드 버전이 부족해서 패키지를 설치할 수가 없다고 한다... 흠.... 당황 조금 스럽네.... 일단 비지터랑 리스너 개념이 나왔었는데 지금까지 했던 방식은 ..
-
TIL 122일 - 시퀀스 다이어그램공부/개발 전체적인 2022. 5. 1. 02:52
시퀀스 다이어그램 - 제발 다이어그램을 무조건 그리려고 하지 마라 작성법 1. 협력에 참여하는 객체와 클래스는 맨 위에 그린다.(객체는 이름에 밑줄을 쳐준다, 만약 어떤 메시지로부터 반환되는 객체라면 변수명을 할당할 수 있다.) 2. 허수아비(졸라맨)은 액터이다. 3. 객체와 허수아비 아래로 뻣는 점선(생명선)을 그린다. 4. 한 객체에서 다른 객체로 보내는 메시지는 화살표로 그린다. 5. 메시지는 아래 쪽에 있을수록 나중에 보낸 것이다. 6. 생명선에 있는 얇은 상자는 활성 상자이다. 함수가 실행되는 시간을 의미한다. 친구 약속땜시 오늘도 조금... 내일은 스터디 하는 날이니까 길게 하자.
-
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 ParseT..
-
TIL 120일 - Antlr으로 환불 규정...만들기??공부/개발 전체적인 2022. 4. 28. 23:53
아래와 같은 stirng이 들어왔을 때 환불 금액을 만들어 주는 문법을 만들어 보려고 한다. D-8/1/100% D-0/1/75% D-0/2/50% D-0/3/25% D-0/4/0% g4 파일 일단은 아래처럼 만들었다. 가장 첫 칸은 DDAY, 두 번째는 음 그냥 어떤 row의 id라고 생각하면 될 것 같고, 세 번째는 수수료 비율이다. grammar Refund; /* * Parser Rules */ operation : DDAY'/'MEETING_ORDER'/'FEE | operation operation ; /* * Lexer Rules */ DDAY : 'D-'[0-9]+ ; MEETING_ORDER : [0-9]+ ; FEE : [0-9]+'%' ; WHITESPACE : ' ' -> skip ..
-
TIL 119일 - Antlr로 덧셈 구현하기공부/개발 전체적인 2022. 4. 28. 02:03
Antlr Antlr은 구조화돈 텍스트를 프로세싱하는 툴이다. 구현 일단 gradle 예시가 없어서 maven으로 했다. pom.xml을 아래처럼 한다. 4.0.0 org.example Antlr2 1.0-SNAPSHOT 16 16 org.antlr antlr4-runtime 4.7.1 org.antlr antlr4-maven-plugin 4.7.1 antlr4 Antlr이 동작하는 과정은 1. 문법 파일을 준비한다. 2. 소스를 생성한다. 3. 리스너를 생성한다. 아무튼 위처럼 pom.xml을 수정하고, 아래 링크에서 문법을 가져온다.(메서드의 이름이 소문자로 시작하는지 확인하는 문법이라는데...) https://github.com/antlr/codebuff/blob/master/grammars/org..
-
TIL 118일 - java 짜잘짜잘공부/Java와 Spring 2022. 4. 27. 00:10
DateTimeFormatter 포매터를 통해서 포맷을 만들 수 있다. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd LLLL yyyy"); 이렇게 만든 formater는 아래처럼 사용할 수 있다. LocalDateTime.parse(dateStirng, formatter); 그럼 dateString의 형태에 따라 formatter를 만들어 주면, LocalDateTime이 생성된다. 반대로 어떤 LocalDateTime이 있으면 LocalDateTime.format(formatter) 이렇게 해주면 해당 포맷으로 string이 나온다.