최근 수정 시각 : 2024-10-12 23:41:06

HRON

HRON exists for 해로온.
1. 개요2. 주요 특징3. 문법
3.1. HRON의 기본 규칙3.2. 데이터 타입
3.2.1. 정수형(해롱롱)3.2.2. 문자형(해해롱)
3.3. 변수 선언 및 초기화
3.3.1. 변수 선언3.3.2. 변수 초기화
3.4. 입출력
3.4.1. 입력3.4.2. 출력
3.5. 연산자
3.5.1. 산술 연산자3.5.2. 관계 연산자
3.6. 조건문3.7. 반복문
4. 예제
4.1. "Hello World!"4.2. 두 숫자의 합 출력4.3. 중첩 반복문을 사용해 타워 출력
5. 외부 링크6. 관련 문서

1. 개요

모든 명령어와 변수가 '해'와 '롱' 두 글자로만 구성된[1] 한글 프로그래밍 언어이자 난해한 프로그래밍 언어. Shine Loi Lee라는 닉네임의 지하아이돌 팬이 만들었다.[2] 모티브가 된 인물은 국내 지하아이돌 하라무코의 멤버 해로온이다.[3][4]

2. 주요 특징

  • 한글 기반 문법: 코드 종료 명령어 '해로온이라'를 제외한 모든 명령어와 변수는 두 개의 한글 문자 '해'와 '롱' 두 글자로만 구성된다.
  • 절차적 프로그래밍 지원: C언어와 유사한 절차적 프로그래밍 스타일을 따른다.
  • 인터프리터 프로그래밍 언어: Python과 유사한 인터프리터 프로그래밍 언어로, 실시간으로 코드를 해석하고 실행한다.

3. 문법

3.1. HRON의 기본 규칙

  • '해', '롱', '해로온이라'를 제외한 모든 문자는 사용할 수 없다.
  • 모든 코드는 '해로온이라'로 끝나야 한다.
  • 숫자나 문자열을 사용하려면 변수를 선언하고, 값을 할당한 후 이를 호출하는 방식으로 사용한다.
  • 명령어로 정의된 문자열도 변수로 사용할 수 있다.

3.2. 데이터 타입

HRON은 변수에 값을 할당하기 전에 해당 값의 데이터 타입을 명시해야 한다.

3.2.1. 정수형(해롱롱)

  • 정수를 나타낸다.
  • '해'는 1, '롱'은 0으로 하여 2진법으로 값을 입력한다.
  • 예시
    • 4 (100): 해롱롱
    • 17 (101110): 해롱해해해롱
    • 692 (1010110100): 해롱해롱해해롱해롱롱

3.2.2. 문자형(해해롱)

  • 문자를 나타낸다.
  • 할당하고자 하는 문자의 아스키 코드 값을 2진법으로 입력한다.
  • 문자열을 만들려면 개별 문자를 여러 변수에 저장하고 합 연산으로 문자열을 구성한다.

3.3. 변수 선언 및 초기화

3.3.1. 변수 선언

  • '해롱해롱'을 입력하면 다음 토큰을 변수로 선언한다.
  • 변수는 반드시 '해'와 '롱' 두 글자의 조합으로만 이루어져야 한다.
  • 선언할 변수 뒤에 데이터 타입을 지정하고, 값을 할당할 수 있다.
    • 해롱해롱 (변수) (데이터 타입) (값)
      {{{해롱해롱 해롱 해롱롱 해롱
변수 '해롱'을 선언하고 정수(해롱롱) 2(해롱, 10)를 할당한다.}}}

3.3.2. 변수 초기화

  • '해롱'을 입력하면 변수의 값을 초기화할 수 있다.[5]
    • 해롱 (변수) (데이터 타입) (값)
      {{{해롱 해롱 해롱롱 해롱롱
이미 선언된 변수 '해롱'에 정수(해롱롱) 4(해롱롱, 100)를 할당한다.}}}

3.4. 입출력

3.4.1. 입력

  • '해해롱해롱' 다음에 오는 변수에 사용자가 입력한 값을 저장한다.[6]

3.4.2. 출력

  • '해롱해해롱' 다음에 오는 변수에 저장된 값을 출력한다.

3.5. 연산자

  • 연산자를 입력하고, 세 개의 변수를 차례로 입력하면 앞선 두 개의 변수의 연산 결과를 세 번째 변수에 저장한다.

3.5.1. 산술 연산자

  • '해롱해롱해': 더하기 (+)
  • '해롱롱해': 빼기 (-)
  • '해롱해롱해롱해': 곱하기 (*)
  • '해롱롱해롱롱해': 나누기 (//)
  • '해롱해롱해롱해롱해': 거듭제곱 (**)
  • '해롱롱해해롱해': 나머지 연산 (%)

3.5.2. 관계 연산자

관계 연산자는 연산 결과를 bool 타입('True', 'False')으로 저장한다.
  • '해해롱롱해해': 일치 (==)
  • '해해롱롱해롱': 불일치 (!=)
  • '해롱해롱롱해롱': 크다 (>)
  • '해롱롱롱해롱해': 작다 (<)
  • '해롱해롱롱해해': 크거나 같다 (>=)
  • '해해롱롱해롱해': 작거나 같다 (<=)

3.6. 조건문

  • '해롱해롱롱해' 다음에 입력되는 변수에 저장된 값이 참이면 다음 명령어를 실행한다.
  • '해롱해롱롱해롱'은 위 조건이 거짓일 때 추가적인 조건식을 평가해 참이면 다음 명령어를 실행한다.
  • '해롱해롱롱해롱해롱'은 이전 모든 조건이 거짓일 때 다음 명령어를 실행한다.
  • 조건문의 끝을 나타내는 '롱롱'을 입력하여 조건문에 속한 명령어 블록을 종료한다.

3.7. 반복문[7]

  • '해롱롱롱'을 입력하면 네 개의 변수를 입력한다.
  • 각각 인덱스 변수, 시작 인덱스, 종료 인덱스, 증감값을 의미한다.
  • 종료 명령어 '롱롱'[8]을 입력하기 전까지 입력된 명령어를 반복 실행한다.

4. 예제

4.1. "Hello World!"

해롱해롱 해롱 해해롱 해롱롱해롱롱롱
해롱해롱 해롱롱 해해롱 해해롱롱해롱해
해롱해롱해 해롱 해롱롱 해롱
해롱 해롱롱 해해롱 해해롱해해롱롱
해롱해롱해 해롱 해롱롱 해롱
해롱해롱해 해롱 해롱롱 해롱
해롱 해롱롱 해해롱 해해롱해해해해
해롱해롱해 해롱 해롱롱 해롱
해롱 해롱롱 해해롱 해롱롱롱롱롱
해롱해롱해 해롱 해롱롱 해롱
해롱 해롱롱 해해롱 해롱해롱해해해
해롱해롱해 해롱 해롱롱 해롱
해롱 해롱롱 해해롱 해해롱해해해해
해롱해롱해 해롱 해롱롱 해롱
해롱 해롱롱 해해롱 해해해롱롱해롱
해롱해롱해 해롱 해롱롱 해롱
해롱 해롱롱 해해롱 해해롱해해롱롱
해롱해롱해 해롱 해롱롱 해롱
해롱 해롱롱 해해롱 해해롱롱해롱롱
해롱해롱해 해롱 해롱롱 해롱
해롱 해롱롱 해해롱 해롱롱롱롱해
해롱해롱해 해롱 해롱롱 해롱
해롱해해롱 해롱
해로온이라

출력 결과
Hello World!

4.2. 두 숫자의 합 출력

아래 코드는 변수 '해롱'과 '해롱롱'에 각각 2, 6을 할당하고, 두 변수의 값의 합을 출력한다.
해롱해롱 해롱 해롱롱 해롱
해롱해롱 해롱롱 해롱롱 해해롱
해롱해롱해 해롱 해롱롱 해롱해롱
해롱해해롱 해롱해롱
해로온이라

출력 결과
8

4.3. 중첩 반복문을 사용해 타워 출력

해롱해롱 해롱 해롱롱 롱
해롱해롱 해롱해롱 해롱롱 해롱해
해롱해롱 해해롱 해롱롱 해
해롱해롱 해롱해롱해 해해롱 해롱해롱해롱
해롱롱롱 해 해롱 해롱해롱 해해롱
해롱롱롱 롱 해롱 해 해해롱
해롱해롱해롱해 해롱해롱해 해 해롱해롱해롱
해롱해해롱 해롱해롱해롱
롱롱
롱롱
해로온이라

출력 결과
*
**
**
***
***
***
****
****
****
****

5. 외부 링크

* HRON Github 링크

6. 관련 문서


[1] 다만 코드 종료 명령어는 '해로온이라'를 사용한다.[2] https://x.com/shineloilee/status/1845010607856025873[3] HRON이 '해'와 '롱'으로만 구성된 이유는 해로온의 별명이 '해롱이'이기 때문이다.[4] 참고로 코드 종료 명령어 '해로온이라'는 X에서 해로온과 관련된 게시물을 업로드할 때 사용하는 해시태그에서 유래했다.[5] 명령어 '해롱해롱'과 마찬가지로 데이터 타입을 지정한 후에 값을 입력한다.[6] 해당 변수가 선언되지 않은 경우 새로운 변수로 선언하고 값을 할당한다.[7] 중첩 반복문도 구현되어 있다.[8] 조건문의 종료 코드와 일치한다.