안녕하세요. 학교에서 열렸던 교내소프트웨어 공모대전에서 대상을 수상했습니다.
저는 친구와 함께 대회에 참가하였는데 친구가 예전에 windows form과 C#을 이용해 만들어놓은 ESO 프로그래밍 언어를 갖고 대회에 참가하기로 했습니다.
언어의 이름은 큰말(CNMAL)입니다. 저희 학교가 충남삼성고등학교(Chungnam Samsung Academy)를 줄여서 CNSA라고 부르는데 CNSA의 큰(CN)과 언어라는 뜻의 말을 합쳐 만든 이름입니다.
저는 CNMAL IDE인 CNMAL editor 제작을 맡았습니다.
큰말의 기본 문법은 다음과 같습니다.
CNMAL(큰말)은 기본적으로 한 줄에 하나의 문장을 규칙으로 합니다. 또한 아래 지시어들에 해당하지 않는 다른 문장들은 무시되어 실행되지 않습니다.
◈ 연산 지시어
자율적인 큰사이언은 ~ : 자리에 들어가는 문자열의 어절 수만큼 스택에 값을 추가합니다.
창의적인 큰사이언은 ~ : ~ 자리에 들어가는 문자열의 글자 수만큼(공백 제외) 스택에 값을 추가합니다.
품격있는 큰사이언은 ~ : ~ 자리에 들어가는 문자열의 어절 수만큼 스택에서 값을 뽑아 모두 곱한 뒤 다시 스택에 추가합니다.
○○○ 선생님은 ~ : ~ 자리의 들어가는 어절 수만큼 스택의 위에서부터 값의 부호를 바꿉니다.
□□□ 친구들은 ~ : 위에서부터 □□□ 자리에 들어가는 어절 수만큼의 위치에 있는 값을 복사해서 스택 맨 꼭대기에 ~ 자리에 들어가는 어절 수만큼 복사해서 추가합니다.
큰사넷 : 문장 어디든지 “큰사넷”이라는 단어가 포함되어 있을 경우, 해당 줄을 무시하고 스택에 0을 추가합니다. 단, “빠릅니다” 또는 “빠른”이 같이 포함되어 있을 경우에는 0 대신 1을, “느립니다” 또는 “느린”이 같이 포함되어 있을 경우에는 0 대신 –1을 추가합니다.
방울토마토 : 문장 어디든지 방울토마토라는 단어가 포함되어 있을 경우, 해당 줄을 무시하고 스택에 있는 모든 값을 제거합니다.
◈ 출력 지시어
○○○ 선생님께서 말씀하시기를 ~ : 스택의 맨 위에서 ~ 자리에 들어가는 어절 수만큼 값을 뽑아 모두 더한 뒤 해당 정수를 아스키 코드로 출력합니다.
□□□ 친구들이 말하기를 ~ : 스택의 맨 위에서 ~ 자리에 들어가는 어절 수만큼 값을 뽑아 모두 더한 뒤 해당 정수를 숫자로 출력합니다.
로그아웃 되었습니다 : 문장 어디든지 이 문장이 포함되어 있다면 해당 줄을 실행하고 프로그램을 정상적으로 종료합니다.
◈ 분기 지시어
지금은 ~ 입니다 : 이 문장이 있는 줄을 분기점으로 지정합니다. 분기점의 이름은 “지금은”과 “입니다”사이에 있는 문자열로 지정되며, ○○에는 ~~ □□에는 ~~ 지시어를 통해 다른 분기점으로 이동할 수 있습니다.
○○에는 ~ : ~ 자리에 들어가는 어절 수가 스택 맨 위의 값과 같으면 ○○ 분기점으로 이동하고, 다르면 넘어갑니다.
◈ 기타 지시어
겨레의 하나됨과 : 문장 어디든지 ‘겨레의 하나됨과’라는 단어가 포함되어 있다면 해당 줄을 실행하고 교가를 프로그램이 종료될 때까지 재생합니다.
또한 IDE의 특징은 다음과 같습니다.
먼저 UI 중심 디자인으로 화면을 구성하여 사용하기 편리하도록 디자인하였습니다. 아래쪽에는 콘솔 창을 구비하여 프로그램 실행 결과와 오류 코드를 한 번에 확인할 수 있습니다.
간편 메모 기능도 지원하여서 간편한 내용을 메모할 수 있고요.
여러가지 팁을 우측에 띄워줍니다.
또한 exe(executable installer file) 파일 형태로 인스톨러(설치프로그램)을 제공하여 간편한 설치를 제공합니다. 6개국어를 지원하며 다양한 옵션을 제공하고 삭제프로그램도 함께 제공합니다.
대부분의 기능은 이정도입니다. 코드 인터프리팅을 제외하고 여러 부가 기능들을 지원합니다.
다음은 간단하게 예제를 확인해봅시다.
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
자율적인 큰사이언은 누구 보다 빠르게 남들과는 다르게 색다르게 리듬을 타는
- 비트 위의 나그네 더 빠르게 빨려 들어가 빠져버리는
- 네 박자 비트 위에 나는 매일 비트를 쪼개
자율적인 큰사이언은 매일 노래를 듣습니다
품격있는 큰사이언은 인사를 잘합니다
선생님께서 말씀하시기를 수업시간입니다
언제나 그렇지만 방울토마토는 맛있습니다
창의적인 큰사이언은 언제나 열심히 일합니다
자율적인 큰사이언은 밥을 맛있게 먹는 척을 합니다
자율적인 큰사이언은 열심히 노동합니다
품격있는 큰사이언은 수업시간에 늦지 않습니다
자율적인 큰사이언은 없습니다
선생님께서 말씀하시기를 오늘은 정복데이입니다
창의적인 큰사이언은 공부를 열심히 합니다
자율적인 큰사이언은 언제나 밝게 웃습니다
자율적인 큰사이언은 항상 복습을 철저히 합니다
품격있는 큰사이언은 예습을 철저히 합니다
선생님께서 말씀하시기를 면학시간입니다
항상 그랬지만 방울토마토는 맛있습니다
창의적인 큰사이언은 수업시간에 안 잡니다
자율적인 큰사이언은 언제나 잘 해냅니다
자율적인 큰사이언은 항상 시험대비를 열심히 합니다
품격있는 큰사이언은 준비을 철저히 합니다
선생님께서 말씀하시기를 자습시간입니다
창의적인 큰사이언은 매사에 최선을 다합니다
창의적인 큰사이언은 어디서나 밝게 생활합니다
품격있는 큰사이언은 잘 놉니다
자율적인 큰사이언은 잘생겼습니다
선생님께서 말씀하시기를 오늘은 캐주얼데이입니다
단언컨데 방울토마토는 세상에서 가장 완벽한 물질입니다
(이쯤 되면 대략 정신이 멍해진다)
창의적인 큰사이언은 언제나 밝은 얼굴입니다
자율적인 큰사이언은 선생님께 인사를 잘 합니다
품격있는 큰사이언은 공부를 합니다
자율적인 큰사이언은 세상에서 가장 완벽한 사랍입니다
선생님께서 말씀하시기를 오늘은 모의고사입니다
창의적인 큰사이언은 수업시간에 졸거나 자지 않을 것입니다
자율적인 큰사이언은 시험을 망칩니다
품격있는 큰사이언은 사람이 문재다(먼저인)
선생님께서 말씀하시기를 연장면학입니다
다시 말하지만 방울토마토는 가장 완벽한 물질입니다
창의적인 큰사이언은 어디서나 멋지게 다닙니다
창의적인 큰사이언은 언제나 멋진 얼굴입니다
품격있는 큰사이언은 자퇴를 합니다(?)
창의적인 큰사이언은 면학시간에 안 잡니다
선생님께서 말씀하시기를 오늘은 믹스입니다
창의적인 큰사이언은 언제나 최선을 다합니다
창의적인 큰사이언은 언제나 기쁘게 생활합니다
품격있는 큰사이언은 잘 잡니다
자율적인 큰사이언은 예쁩니다
선생님께서 말씀하시기를 오늘은 1회고사입니다
창의적인 큰사이언은 언제나 간지나게 다닙니다
창의적인 큰사이언은 항상 잘생긴 얼굴입니다
품격있는 큰사이언은 가락바위소류지로 떠납니다(?)
자율적인 큰사이언은 잘생기고 예쁘고 애인도 있습니다(난 아니네)
선생님께서 말씀하시기를 오늘은 2회고사입니다
창의적인 큰사이언은 인사를 열심히 합니다
자율적인 큰사이언은 무슨일이 있어도 웃지 않습니다
자율적인 큰사이언은 복습을 철저히 합니다
품격있는 큰사이언은 자습을 철저히 합니다
선생님께서 말씀하시기를 취침시간입니다
창의적인 큰사이언은 장지훈을 한 대 때립니다
자율적인 큰사이언은 노동의 메카인 학생회실에 가지 않습니다
자율적인 큰사이언은 노동을 싫어합니다
품격있는 큰사이언은 오늘도 잠을 잡니다
선생님께서 말씀하시기를 체육대회입니다
자율적인 큰사이언은 방울토마토를 맛있게 먹습니다
자율적인 큰사이언은 맨밥도 맛있게 먹습니다
창의적인 큰사이언은 샐러드도 맛있게 먹습니다
큰말은 정원배가 만들었습니다
품격있는 큰사이언은 밥을 거릅니다
선생님께서 말씀하시기를 정보올림피아드입니다
로그아웃 되었습니다
|
cs |
위에 -는 이음표입니다.
위 코드는 hello, world!를 출력하는 코드인데요. 스택에 값을 담고 지우면서 글자를 출력합니다.