{"id":16743109,"url":"https://github.com/abiriadev/hango","last_synced_at":"2025-04-10T13:32:52.032Z","repository":{"id":209401898,"uuid":"723964633","full_name":"abiriadev/hango","owner":"abiriadev","description":"Go로 컴파일되는 한글 프로그래밍 언어","archived":false,"fork":false,"pushed_at":"2023-11-27T09:48:18.000Z","size":113,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-06T02:58:50.274Z","etag":null,"topics":["esoteric-language","golang","hangul"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/abiriadev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-27T05:51:33.000Z","updated_at":"2024-01-22T02:24:59.000Z","dependencies_parsed_at":"2024-06-21T18:59:33.486Z","dependency_job_id":"f69d59ec-fcd5-42fc-84a5-134d6bbb13b5","html_url":"https://github.com/abiriadev/hango","commit_stats":null,"previous_names":["abiriadev/hango"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abiriadev%2Fhango","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abiriadev%2Fhango/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abiriadev%2Fhango/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abiriadev%2Fhango/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abiriadev","download_url":"https://codeload.github.com/abiriadev/hango/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248225712,"owners_count":21068078,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["esoteric-language","golang","hangul"],"created_at":"2024-10-13T01:25:57.961Z","updated_at":"2025-04-10T13:32:51.995Z","avatar_url":"https://github.com/abiriadev.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\" style=\"font-size: 200em;\"\u003e한고\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003eGo로 컴파일되는 한글 프로그래밍 언어\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"./sum.png\" width=\"500px\"\u003e\u003c/img\u003e\u003c/p\u003e\n\n## 개요\n\n한고는 Go에 기반한 한글 프로그래밍 언어로, 다음 개념의 증명을 위해 만들어졌습니다.\n\n1. [라틴 문자에 불필요하게 의존하는 식별자 공개 원칙](https://go.dev/doc/faq#unicode_identifiers)에 대한 신선한 비판[^식]\n2. 외부 라이브러리나 직접 짠 렉서 혹은 파서 없이 내장 [`text/scanner`](https://pkg.go.dev/text/scanner)만으로 구현이 가능함의 증명\n\n## 예시\n\n\u003c!-- AUTO-GENERATED-CONTENT:START (CODE:src=./examples/hello.go) --\u003e\n\u003c!-- The below code snippet is automatically added from ./examples/hello.go --\u003e\n\n```go\n묶음 main\n\n사용 \"fmt\"\n\n함수 main() {\n\tfmt.Println(\"안녕, 세상!\")\n}\n```\n\n\u003c!-- AUTO-GENERATED-CONTENT:END --\u003e\n\n## 한고 키워드\n\n한고는 주어진 키워드를 Go의 키워드로 1:1 변환시키는 방법으로 컴파일됩니다.\n\n| 한고 키워드 | Go 키워드   | 한고 키워드 | Go 키워드     |\n| ----------- | ----------- | ----------- | ------------- |\n| `정지`      | `break`     | `묶음`      | `package`     |\n| `기본`      | `default`   | `비교`      | `switch`      |\n| `함수`      | `func`      | `상수`      | `const`       |\n| `특성`      | `interface` | `이어서`    | `fallthrough` |\n| `선택`      | `select`    | `만약`      | `if`          |\n| `경우`      | `case`      | `범위`      | `range`       |\n| `지연`      | `defer`     | `형`        | `type`        |\n| `출발`      | `go`        | `계속`      | `continue`    |\n| `사전`      | `map`       | `반복`      | `for`         |\n| `구조체`    | `struct`    | `사용`      | `import`      |\n| `통로`      | `chan`      | `반환`      | `return`      |\n| `아니라면`  | `else`      | `선언`      | `var`         |\n| `이동`      | `goto`      |             |               |\n\n## 빌드 및 사용법\n\n먼저 본 저장소를 복제합니다.\n\n```sh\n$ git clone https://github.com/abiriadev/hango \u0026\u0026 cd hango\n```\n\n다음 명령을 통해 `hango` 컴파일러를 설치합니다.\n\n```sh\n$ go install ./cmd/hango\n```\n\n컴파일하고자 하는 한고 파일을 인자로 제공합니다. 이때 확장자는 반드시 `.hgo`여야 합니다.\n\n예를 들어, 본 저장소의 [`examples`](./examples) 폴더 내의 모든 파일을 컴파일하려면 다음 명령을 사용합니다.\n\n```sh\n$ hango ./examples/*\n```\n\n아무 인자도 주어지지 않는다면 표준 입력에서 한고 소스를 읽어 컴파일된 결과를 표준 출력으로 내보냅니다.\n\n```sh\n$ hango \u003c ./examples/hello.hgo\n```\n\n## 고민중인 기능\n\n본 프로젝트의 원 목적은 \u003cins\u003e표준 라이브러리만 사용하여\u003c/ins\u003e 100줄 이내의 짧은 코드만으로 Go와 1:1 변환 가능한 언어를 구현하는 것이었습니다.\n\n당초 목적한 구현이 표준 라이브러리 없이 가능함이 증명되었으므로 앞으로는 다음과 같은 기능을 차차 추가할 예정입니다:\n\n-   [ ] `공개` 키워드\n-   [ ] Context-sensitive transformations: 자체 파서 구현 필요\n-   [x] Syntax highlighting support\n-   [ ] 더 적은 키워드\n-   [ ] 기본 타입(`int`, `string`), 빌트인 함수(`len`, `make`) 지원: name resolution needed\n\n[^식]: 사실 한고 자체는 식별자가 아닌 키워드만 한글화하므로 본 문제와 무관합니다. 단, 100% 한글만으로 이루어진 식별자를 공개하는 것이 애시당초 불가능함을 일깨워 줄 수 있습니다.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabiriadev%2Fhango","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabiriadev%2Fhango","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabiriadev%2Fhango/lists"}