명령어를 한 줄에 모두 써야 한다는 또 하나의 함정 ㅋㅋㅋ
코드는 다음과 같습니다.
프로그래밍 언어 만들기
1. 기본 요소
1234567890 로만 프로그램을 만들어 보자.
기본적으로 int형 리스트와 char형 리스트, bool형 리스트가 하나씩 주어진다.
2. 명령어
0* : 입출력
00 : 정수형 변수의 선언과 동시에 입력받는다.
01 : 문자형 변수의 선언과 동시에 입력받는다.
02 : 논리값 변수의 선언과 동시에 입력받는다.
03 : 공백을 입력한다.
04 : 줄을 바꾼다.
05 *** : ***번째로 선언한 정수형 변수를 출력한다.
06 *** : ***번째로 선언한 문자형 변수를 출력한다.
07 *** : ***번째로 선언한 논리값 변수를 수로 출력한다.
08 *** : ***번째로 선언한 정수형 변수를 문자로 출력한다.
09 *** : ***번째로 선언한 문자형 변수를 아스키 코드로 출력한다.
1* : 기타 시스템
10 *** : ***초만큼 쉰다.
11 *** : ***밀리초만큼 쉰다.
12 : 화면을 모두 지운다.
13 : 0을 리턴하고 프로그램을 종료한다.
14 *** : ***을 리턴하고 프로그램을 종료한다.
15 : exit한다.
2* : 정수형 변수 바꾸기
20 *** : 새로운 정수형 변수를 선언하고 값을 ***로 한다.
21 *** ^^^ : ***번째로 선언한 변수의 값을 ^^^로 변하게 한다.
22 *** ^^^ : ***번째로 선언한 변수의 값에 ^^^만큼 더한다.
23 *** ^^^ : ***번째로 선언한 변수의 값에 ^^^만큼 뺀다.
24 *** ^^^ : ***번째로 선언한 변수의 값에 ^^^만큼 곱한다.
25 *** ^^^ : ***번째로 선언한 변수의 값에 ^^^만큼 나눈 몫을 넣는다.
26 *** ^^^ : ***번째로 선언한 변수의 값에 ^^^만큼 나눈 나머지를 넣는다.
27 *** ^^^ : ***번째로 선언한 변수의 값을 ^^^번째로 선언한 변수의 값으로 바꾼다.
28 *** ^^^ : ***번째 정수형 변수를 ^^^번째 문자형 변수의 값으로 바꾼다.
29 *** ^^^ : ***번째 정수형 변수를 ^^^번째 논리형 변수의 값으로 바꾼다.
3* : 문자형 변수 바꾸기
30 *** : 새로운 문자형 변수를 선언하고 값을 ***로 한다.
31 *** ^^^ : ***번째로 선언한 변수의 값을 ^^^로 변하게 한다.
32 *** ^^^ : ***번째로 선언한 변수의 값에 ^^^만큼 더한다.
33 *** ^^^ : ***번째로 선언한 변수의 값에 ^^^만큼 뺀다.
34 *** ^^^ : ***번째로 선언한 변수의 값에 ^^^만큼 곱한다.
35 *** ^^^ : ***번째로 선언한 변수의 값에 ^^^만큼 나눈 몫을 넣는다.
36 *** ^^^ : ***번째로 선언한 변수의 값에 ^^^만큼 나눈 나머지를 넣는다.
37 *** ^^^ : ***번째로 선언한 변수의 값을 ^^^번째로 선언한 변수의 값으로 바꾼다.
38 *** ^^^ : ***번째 문자형 변수를 ^^^번째 정수형 변수의 값으로 바꾼다.
39 *** ^^^ : ***번째 문자형 변수를 ^^^번째 논리형 변수의 값으로 바꾼다.
4* : 논리형 변수 바꾸기
40 *** : 새로운 논리값 변수를 선언하고 값을 ***가 0이면 false, 아니면 true로 한다.
41 *** ^^^ : ***번째로 선언한 변수의 값을 ^^^번째로 선언한 변수의 값으로 바꾼다.
42 *** : ***번째로 선언한 변수의 값을 거꾸로 한다.
43 *** ^^^ : ***번째 논리형 변수를 ^^^번째 정수형 변수의 값으로 바꾼다.
44 *** ^^^ : ***번째 논리형 변수를 ^^^번째 문자형 변수의 값으로 바꾼다.
5* = if
50 *** /// 69 : ***가 ///이면 69까지 모든 명령어를 수행한다.
51 *** /// 69 : ***가 ///이 아니면 69까지 모든 명령어를 수행한다.
52 *** /// 69 : *** > ///이면 69까지 모두 수행.
53 *** /// 69 : *** < ///이면 69까지 모두 수행.
54 *** /// 69 : *** >= ///이면 69까지 모두 수행.
55 *** /// 69 : *** <= ///이면 69까지 모두 수행.
기타 : return 0.
(참고: 위의 모든 *** /// &&& 들은 정수이다.)
댓글을 작성하려면 로그인해야 합니다.
79brue 8년 전 1
저만의 언어를 만들었습니다
ㅋㅋㅋㅋㅋㅋㅋ
(근데 사용법이 외워지지가 않는다는 함정 ㅋㅋㅋ)
// #define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include <vector>
int n, m, o;
char nonstop;
using std::vector;
vector<int> stackInt;
vector<char> stackChar;
vector<bool> stackBool;
void work(int i);
int temp;
int main(){
stackInt.push_back(0);
stackChar.push_back(0);
stackBool.push_back(false);
int number=-1;
while (1){
scanf("%d", &number);
if (number > 12 && number < 16){
switch (number){
case 13: temp = 0; goto finish;
case 14:
scanf("%d", &temp);
goto finish;
case 15:
temp = 1; goto finish;
default: return 0;
}
}
work(number);
}
finish:
puts("");
system("pause");
return temp;
}
void work(int i){
switch (i){
case 0:
scanf("%d", &n);
stackInt.push_back(n);
return;
case 1:
scanf("%d", &n);
stackChar.push_back((char)n);
return;
case 2:
scanf("%d", &n);
stackBool.push_back(n == 0 ? false : true);
return;
case 3:
printf(" ");
return;
case 4:
puts("");
return;
case 5:
scanf("%d", &n);
printf("%d", stackInt[n]);
return;
case 6:
scanf("%d", &n);
printf("%c", stackChar[n]);
return;
case 7:
scanf("%d", &n);
printf("%d", stackBool[n]);
return;
return;
case 8:
scanf("%d", &n);
printf("%c", stackInt[n]);
return;
case 9:
scanf("%d", &n);
printf("%d", stackChar[n]);
return;
case 10:
scanf("%d", &n);
Sleep(n * 1000);
return;
case 11:
scanf("%d", &n);
Sleep(n);
return;
case 12:
system("cls");
return;
case 20:
scanf("%d", &n);
stackInt.push_back(n);
return;
case 21:
scanf("%d %d", &n, &m);
stackInt[n]=m;
return;
case 22:
scanf("%d %d", &n, &m);
stackInt[n]+=m;
return;
case 23:
scanf("%d %d", &n, &m);
stackInt[n] -= m;
return;
case 24:
scanf("%d %d", &n, &m);
stackInt[n] *= m;
return;
case 25:
scanf("%d %d", &n, &m);
stackInt[n] /= m;
return;
case 26:
scanf("%d %d", &n, &m);
stackInt[n] %= m;
return;
case 27:
scanf("%d %d", &n, &m);
stackInt[n] = stackInt[m];
return;
case 28:
scanf("%d %d", &n, &m);
stackInt[n] = stackChar[m];
return;
case 29:
scanf("%d %d", &n, &m);
stackInt[n] = (stackBool[m]) ? 1 : 0;
return;
case 30:
scanf("%d", &n);
stackChar.push_back(n);
return;
case 31:
scanf("%d %d", &n, &m);
stackChar[n] = m;
return;
case 32:
scanf("%d %d", &n, &m);
stackChar[n] += m;
return;
case 33:
scanf("%d %d", &n, &m);
stackChar[n] -= m;
return;
case 34:
scanf("%d %d", &n, &m);
stackChar[n] *= m;
return;
case 35:
scanf("%d %d", &n, &m);
stackChar[n] /= m;
return;
case 36:
scanf("%d %d", &n, &m);
stackChar[n] %= m;
return;
case 37:
scanf("%d %d", &n, &m);
stackChar[n] = stackChar[m];
return;
case 38:
scanf("%d %d", &n, &m);
stackChar[n] = stackInt[m];
return;
case 39:
scanf("%d %d", &n, &m);
stackChar[n] = (stackBool[m]) ? 1 : 0;
return;
case 40:
scanf("%d", &n);
stackBool.push_back(n == 0 ? false : true);
return;
case 41:
scanf("%d %d", &n, &m);
stackBool[n] = stackBool[m];
return;
case 42:
scanf("%d", &n);
stackBool[n] = (stackBool[n]) ? true : false;
case 43:
scanf("%d %d", &n, &m);
stackBool[n] = stackInt[m];
return;
case 44:
scanf("%d %d", &n, &m);
stackBool[n] = stackChar[m];
return;
case 50:
scanf("%d %d", &n, &m);
if (n == m){
work50:
scanf("%d", &o);
if (o == 69) return;
work(o);
goto work50;
}
return;
case 51:
scanf("%d %d", &n, &m);
if (n != m){
work51:
scanf("%d", &o);
if (o == 69) return;
work(o);
goto work51;
}
return;
case 52:
scanf("%d %d", &n, &m);
if (n > m){
work52:
scanf("%d", &o);
if (o == 69) return;
work(o);
goto work52;
}
return;
case 53:
scanf("%d %d", &n, &m);
if (n < m){
work53:
scanf("%d", &o);
if (o == 69) return;
work(o);
goto work53;
}
return;
case 54:
scanf("%d %d", &n, &m);
if (n >= m){
work54:
scanf("%d", &o);
if (o == 69) return;
work(o);
goto work54;
}
return;
case 55:
scanf("%d %d", &n, &m);
if (n <= m){
work55:
scanf("%d", &o);
if (o == 69) return;
work(o);
goto work55;
}
return;
default: exit(1);
}
}