79brue   8년 전

저만의 언어를 만들었습니다

ㅋㅋㅋㅋㅋㅋㅋ

(근데 사용법이 외워지지가 않는다는 함정 ㅋㅋㅋ)


// #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);
}
}

79brue   8년 전

명령어를 한 줄에 모두 써야 한다는 또 하나의 함정 ㅋㅋㅋ

yetree   8년 전

으잌ㅋㅋㅋ이게뭐람!

79brue   8년 전

코드는 다음과 같습니다.


프로그래밍 언어 만들기

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.

(참고: 위의 모든 *** /// &&& 들은 정수이다.)

댓글을 작성하려면 로그인해야 합니다.