개발자 99% 커뮤니티에서 수다 떨어요!
💡 연습문제 4.
간단한 터틀 그래픽 시스템을 제어하기 위해 소형 언어를 하나 구현하려 한다. 이 언어는 한 글자짜리 명령어들로 구성되는데, 어떤 명령어는 뒤에 한 자리 숫자가 따라 나올 수도 있다. 예를 들어 다음 내용을 입력하면 사각형이 하나 그려진다.
......
이 언어를 파싱하는 코드를 구현하라. 새로운 명령어를 추가하기 쉽게 코드를 설계해야 한다,
명령어와 인자필요여부, 명령을 처리할 함수를 딕셔너리로 구현
명령과 인자를 입력 받고, 명령이 인자가 필요하다면 관련 처리를 해주고, 필요하지 않다면 바로 함명령에 해당하는 함수를 불러온다.
연습문제 해답은 C로 구현했음. Python 연습을 하고 싶어서 Python으로 구현해보았는데.. 맞게 했는지는 ㅠㅠ 잘 모르겠습니다..
commands = {'cmd': []}
commands = {
{'P' : [ARG, select_pen]},
{'U' : [NO_ARG, pen_up]},
{'D' : [No_ARG, pen_down]},
{'N' : [ARG, pen_dir]},
{'E' : [ARG, pen_dir]},
{'S' : [ARG, pen_dir]},
{'W' : [ARG, pen_dir]}
}
char, number = input().split()
number = int(number)
while char or number:
if not char:
print("명령어를 입력하세요.")
continue
else:
for command in commands:
if char in command and command[char][0] == ARG:
if not number:
print("인자가 필요합니다.")
continue
else:
command[char][1](char, number)
else:
command[char][1](char)
na27.tistory.com/230 : Parsing이란? Parser란?
- Parsing : 다양하게 뜻이 설명될 수 있으나, 요약해보자면 어떤 문장을 분석하거나 문법적 관계를 해석하는 행위 즉 특정 문서를 읽어서 다른 프로그램이나 서브루틴이 사용할 수 있는 내부의 표현 방식으로 변환해 주는 것임.
-Parser : 컴퓨팅에서 Parser는 interpreter 나 compiler의 구성요소 가운데 하나로, 입력 token에 내재된 자료 구조를 빌드하고 문법을 검사한다.(즉 문장의 구조를 알아내는 구문분석-parsing-을 행하는 프로그램)
도메인 특화 언어(위키백과) : 특정한 도메인을 적용하는데 특화된 컴퓨터 언어. 특정 비즈니스 도메인의 문제를 해결하려고 만든 언어. (외부 도메인언어, 내부 도메인 언어) 도메인언어는 원래 코드의 어휘를 확장시키는 것. 외부도메인언어에 JSON, CSV, YAML 등 있음.