Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
TIL 연습문제 4번 풀이
#pragmatic
2년 전
748

💡 연습문제 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 등 있음.