· Stack VM · 16 Dot Characters

·jeom

점으로 프로그래밍하는 난해 언어

유니코드 점 계열 문자 16종만으로 모든 코드를 작성합니다.
난해하지만, 함수 · 배열 · 딕셔너리 · 오류처리 · 파일시스템을 갖춘 완전한 언어입니다.

● 웹 IDE 바로가기 ⸳ 다운로드
hello.jeom
◘ Hello, Jeom! — 점 언어로 Hello World •· ●.·......·‧.·.....·‧··..··.·‧··..··.·‧···..··● ·· ⋮⋮

난해하지만 강력하게

점 16개로 시작해서, 실제로 동작하는 프로그램을 만들 수 있습니다.

점만 사용

유니코드 점 계열 문자 16종만으로 코드를 작성합니다. 공백은 토큰 구분자로만 사용됩니다.

스택 기반 VM

스택 기반 가상 머신 위에서 동작합니다. 모든 연산은 스택에서 팝/푸시로 처리됩니다.

˙

함수 & 재귀

함수 정의, 호출, 재귀, 람다, 커링을 완전히 지원합니다. 클로저도 동작합니다.

배열 & 딕셔너리

동적 배열과 해시맵을 지원합니다. map, filter, reduce 고차 함수도 사용 가능합니다.

‥·

오류 처리

TRY / CATCH / FINALLY 구문으로 예외를 처리합니다. THROW로 직접 예외를 발생시킬 수도 있습니다.

모듈 & 파일시스템

다른 .jeom 파일을 임포트할 수 있습니다. 파일 읽기/쓰기, 디렉터리 조작도 지원합니다.

⋮⋮

JS 엔진

공용 JS 엔진(UMD)이 브라우저와 Node.js 양쪽에서 동작합니다.

웹 IDE 내장

서버 없이 브라우저에서 바로 실행되는 웹 IDE가 포함됩니다. 인코더, 디코더, 명령 참조도 내장됩니다.

16개의 점 문자

이 문자들의 조합만으로 모든 프로그램을 작성합니다. 숫자는 이진수로, 문자열은 UTF-8 바이트로 인코딩됩니다.

.
U+002E
FULL STOP · 0비트
·
U+00B7
MIDDLE DOT · 1비트
˙
U+02D9
DOT ABOVE · 함수
U+2022
BULLET · 숫자 구분자
U+2024
ONE DOT LEADER
U+2025
TWO DOT LEADER · 반복
U+2026
HORIZONTAL ELLIPSIS · IF
U+2027
HYPHENATION POINT · 바이트 구분
U+2218
RING OPERATOR · 변수
U+22C5
DOT OPERATOR · 산술
U+25CF
BLACK CIRCLE · 문자열 구분자
U+25E6
WHITE BULLET · 배열
U+2981
Z NOTATION SPOT · 스택
U+2E33
RAISED DOT · 타입 변환
U+22EE
VERTICAL ELLIPSIS · 블록
U+22EF
MIDLINE ELLIPSIS · 파일·모듈
U+25D8
INVERSE BULLET · 주석

브라우저에서 바로 실행

서버 없이 파일만 열면 됩니다. 인코더, 디코더, 명령 참조, 8가지 예제가 내장되어 있습니다.

점(Jeom) 웹 IDE WebVM
editor · main.jeom
◘ 팩토리얼 계산˙ ·∘· ˙∘ · ∘∘ · •·• ⋅‧∘∘ •·• ˙˙ ⋮⋮ ∘∘ · ∘∘ · •·• ⋅⋅ ˙˙˙ ·∘· ⋅⋅⋅ ˙˙ ⋮⋮ •· •·.·• ˙˙˙ ·∘· ·· ⋮⋮
output
▶ 실행 시작
120
◘ 정상 종료

파일 다운로드

필요한 파일만 골라 사용하세요. 모든 파일은 무료입니다.

● ⋮

웹 IDE

브라우저에서 바로 실행되는 IDE입니다. 에디터, 출력, 인코더, 명령 참조가 모두 포함됩니다.

HTML CSS JS 서버 불필요
● 바로 열기
⋯ ·

Node.js CLI

터미널에서 .jeom 파일을 실행합니다. REPL, 문법 검사, 인코딩 유틸이 포함됩니다.

Node.js 18+ engine.js 필요
node cli.js run hello.jeom
⸳ cli.js
•· ⋮

공용 엔진

렉서·파서·VM이 통합된 UMD 엔진입니다. 브라우저와 Node.js 양쪽에서 동작합니다.

UMD 의존성 없음
⸳ engine.js
∘∘ ◦

표준 라이브러리

sort, max, min, sum, reverse, contains, join 함수가 포함된 표준 라이브러리입니다.

.jeom 7개 함수
⸳ std.jeom
˙ ·∘·

예제 파일

Hello World, FizzBuzz, 팩토리얼 예제 파일입니다. 언어 학습의 시작점으로 활용하세요.

hello.jeom fizzbuzz.jeom factorial.jeom
hello fizzbuzz factorial
⋮· ⋮⋮

명세서 & 문서

언어 명세서(SPEC.md)와 README입니다. 토큰 테이블, 실행 모델, 문법 규칙이 정리되어 있습니다.

Markdown
README.md SPEC.md

명령 토큰 참조

모든 명령은 점 문자 시퀀스로 표현됩니다.

I/O
변수·스택
산술·논리
흐름 제어
함수
배열·딕셔너리
타입·오류
시스템·파일
토큰 명령 설명
· PRINT stdout 출력 (줄바꿈 없음)
·· PRINTLN stdout 출력 + 줄바꿈
·˙ INPUT stdin → 스택 (문자열)
·˙˙ INPUTN stdin → 스택 (숫자)
·∘ ERR stderr 출력
토큰 명령 설명
VAR ∘ <이름> <값> — 변수 선언+할당
∘∘ GET 변수 읽기 → 스택 push
∘⋅ STORE ★ 스택 팝 → 변수 저장
∘∘∘ DEL 변수 삭제
PUSH 값을 스택에 push
⦁⦁ POP 스택 팝 (버림)
⦁⦁⦁ SWAP 상위 2개 교환
⦁∘⦁ DUP 최상단 복제
⦁∘ PEEK 최상단 복사 (팝 없이)
토큰 명령 설명
ADD a + b
⋅⋅ SUB a - b
⋅⋅⋅ MUL a × b
⋅∘ DIV a ÷ b
⋅∘∘ MOD a % b
⋅∘∘∘ POW a ^ b
⋅‧ EQ a == b → 1/0
⋅‧‧ NEQ a != b → 1/0
⋅‧‧‧ LT a < b → 1/0
⋅‧∘ GT a > b → 1/0
⋅‧∘∘ LTE a <= b → 1/0
⋅‧∘∘∘ GTE a >= b → 1/0
⋅⦁ AND a && b → 1/0
⋅⦁⦁ OR a || b → 1/0
⋅⦁⦁⦁ NOT !a → 1/0
⋅⦁∘ XOR a XOR b → 1/0
토큰 명령 설명
IF truthy면 then 블록 실행
…· ELSE IF 거짓 분기
…‥ ELIF 추가 조건 분기
LOOP n회 반복 (스택 팝)
‥‥ WHILE 조건+본문 반복
‥∘ BREAK 반복 탈출
‥∘∘ CONT 다음 반복으로
BLOCK 블록 시작
⋮⋮ END 블록 끝
GOTO 레이블로 점프
⋯· LABEL 레이블 정의
토큰 명령 설명
˙ FUNC 함수 정의 시작
˙∘ ARG 인자 이름 선언
˙˙ RET 반환 (스택 팝 → 반환값)
˙˙˙ CALL 함수 호출
˙⦁ LAMBDA 익명 함수
˙⋅ CURRY 첫 인자 부분 적용
토큰 명령 설명
ARR n개 팝 → 배열 생성
◦◦ IDX arr[idx]
◦◦◦ IDXS arr[idx] = val
◦∘ APP 배열에 값 추가
◦∘∘ SLICE 슬라이싱 [start:end]
◦⋅ MAP 배열에 함수 적용
◦⋅⋅ FILTER 배열 필터
◦⋅⋅⋅ REDUCE 배열 리듀스
◦‧ DICT n쌍 → 딕셔너리 생성
◦‧‧ DGET dict[key]
◦‧‧‧ DSET dict[key] = val
◦⦁ KEYS 키 목록
◦⦁⦁ VALS 값 목록
토큰 명령 설명
INT 정수 변환
⸳⸳ FLOAT 실수 변환
⸳⸳⸳ STR 문자열 변환
⸳∘ BOOL 불리언 변환
⸳⦁ TYPE 타입 이름
⸳‧ LEN 길이
‥· TRY 예외 처리 시작
‥·· CATCH 예외 처리 (에러 메시지 스택 push)
‥·˙ FINALLY 항상 실행
‥·∘ THROW 예외 발생
‥·⦁ ASSERT 조건 실패 시 예외
토큰 명령 설명
⋯⋯ FOPEN 파일 핸들 생성
⋯⋯⋯ FREAD 파일 읽기
⋯∘ FWRITE 파일 쓰기
⋯∘∘ FCLOSE 파일 닫기
⋯⦁ FEXIST 파일 존재 여부 (1/0)
⋯⦁⦁ FDELETE 파일 삭제
⋯⋅ FLIST 디렉터리 목록
⋯‧ MKDIR 디렉터리 생성
⋯·⦁ IMPORT 모듈 임포트
⋯·˙ EXPORT 심볼 내보내기
⋮∘ EXIT 프로그램 종료
⋮⦁ DEBUG 스택 전체 stderr 출력
⋮‧ RAND 0.0~1.0 난수
⋮⋅ TIME 유닉스 타임스탬프
⋮‧‧ HASH djb2 해시
⋮‧‧‧ REGEX 정규식 매칭
⋮·⦁ SLEEP 대기 (밀리초)
⋮· EVAL 문자열을 코드로 실행
⋮·· EXEC 시스템 명령 실행
⋮·∘ ENV 환경변수 읽기
⋮∘∘ NOOP 아무것도 안 함