19 ポイント 投稿者 smc0478 2025-11-19 | 29件のコメント | WhatsAppで共有

こんにちは。
韓国語で書くプログラミング言語を作りました。

制作理由

  • Umjunsik-lang や Aheui のような、ハングルで書くプログラミング言語を見て、韓国語で自然にコーディングしてみたくなりました。
  • 将来きちんとした言語を作るための勉強です。

インストール

pip install korean-lang  

文法の種類

以下で紹介するような文法を作りました。
詳しくは私の GitHub リンクを参照してください。

出力

"annyeong sesang!"を出力する。  

変数

  • 変数名はハングル(kiyeok のようなものは不可です)、_、数字で構成されています。
  • 変数には整数、文字列、配列、辞書などを入れられます。
jeongsuneun 1i doenda.  
sosuneun 3.141592ga doenda.  
ireumeun "Hong Gildong"i doenda.  
chamgapseun chami doenda.  
bingapseun eopseumi doenda.  
sutja_baeyeoreun [1 daeum 2 daeum 3 daeum 4]i doenda.  
saram_jeongboneun {"ireum"eun "Gim Cheolsu" tto "nai"neun 25}i doenda.  

条件

  • man-yak ... imyeon/myeonanigo man-yak ... imyeon/myeonanimyeon ... imyeon/myeon は if、else if、else のように動作し、daeum ... mundaneul silhaenghanda. を実行します。
nai-neun ibryeokhan geoseul jeongsuro_byeonhan geosi doenda.  
  
man-yak nai-ga 18boda keugeona gatdamyeon daeum  
    "seonginimnida."reul chulryeokhanda.  
mundaneul silhaenghanda.  
anigo man-yak nai-ga 13boda keuda tto-neun nai-ga 13rang gatdamyeon daeum  
    "cheongsonyeonimnida."reul chulryeokhanda.  
mundaneul silhaenghanda.  
animyeon daeum  
    "eoriniimnida."reul chulryeokhanda.  
mundaneul silhaenghanda  

繰り返し文

  • gyesok ... in donganwhile に近く、daeum ... mundaneul banbokhanda. を実行します。
  • ...e inneun gak hangmokdeureul ...ro gajyeowafor ... in ... で、daeum ... mundaneul banbokhanda. を実行します。
sutjaneun 0i doenda.  
gyesok sutjaga 5boda jakdain dongan daeum  
    sutjareul chulryeokhanda.  
    sutjaneun sutjawa 1eul deohan geosi doenda.  
mundaneul banbokhanda.  
  
baeyeoreun [10 daeum 20 daeum 30]i doenda.  
baeyeore inneun gak hangmokdeureul sutjaro gajyeowa daeum  
    sutjareul chulryeokhanda.  
mundaneul banbokhanda.  

関数

  • hamsu ...neun (...gwa ...ro) が関数を定義する部分で、daeum ... mundaneul silhaenghanda. が関数の実行部分です。
  • ...gwa/wa ...eul/reul ... ro/euro ...handa./da. のように関数を呼び出します。
hamsu paektorieoreul_guhandaneun garo daeum  
    man-yak gaga 0irang gatdamyeon daeum  
        gyeolgwa gapseun 1i doenda. geurigo kkeutnanda.  
    mundaneul silhaenghanda.  
    gyeolgwa gapseun gawa ((gareul 1ro ppaen geot)euro paektorieoreul_guhan geot)eul gophan geosi doenda.   
    geurigo kkeutnanda.  
mundaneul silhaenghanda.  
  
4ro paektorieoreul_guhan geoseul chulryeokhanda.   

構造体

  • 構造体は C 言語の struct に似ています。
gujo sarameun daeum  
    byeonsu ireumi itda.  
    byeonsu naiga itda.  
gapseul gajinda.  
  
Cheolsuneun sarami doenda.  
Cheolsuui ireumeun "Cheolsuda"ga doenda.  
Cheolsuui ireumeul chulryeokhanda.   

クラス

  • yuhyeong は他の言語でいうクラスです。
yuhyeong dongmureun daeum  
    byeonsu ireumi itda.  
    
    hamsu sorireul_naendaneun daeum  
        dongmurui ireumgwa "i(ga) sorireul naemnida."reul deohan geoseul chulryeokhanda.  
    mundaneul silhaenghanda.  
gapseul gajinda.  
  
Gangajineun dongmuri doenda.  
Gangajiui ireumeun "Badugi"ga doenda.  
Gangaji aneseo sorireul_naenda.   

惜しい点

  • 配列のように、韓国語として自然ではないぎこちない文法があり、その点は残念です。
  • class を韓国語で yuhyeong と訳してはいますが、これより良い単語がありそうなので、後で見つかったら変えようと思っています。

まとめ

役に立つものでもなく、内部コードも2週間で急いで書いたのでかなり雑ですが、楽しく見てもらえれば嬉しいです。
読んでいただきありがとうございました。

29件のコメント

 
qlghwp123 2025-11-26

本当に素晴らしいと思います!応援しています。

 
smc0478 2025-11-26

ありがとうございます。

 
rkttu 2025-11-26

韓国語をプログラミング言語として採用しようという試みは、コミュニティレベルでこれまでも続いてきたのですが、これを思い出したのでリンクを貼っておきます。笑

https://namu.wiki/w/%EC%B0%BD%EC%A1%B0(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%20%EC%96%B8%EC%96%B4)

 
smc0478 2025-11-26

作って調べてみると、面白い試みがたくさんありました。
印象深かったものの一つが下のリンクで、数字もハングルで表現していて面白かったです。
https://github.com/recu3125/malC_lang

 
oktroco 2025-11-26

英語や数学に慣れていない人向けの教育用としても、とても良いと思います。
ifforwhile= などの記号なしで、ハングルで計算論的思考をうまく説明できるのは、教育的に非常に大きな利点だと思います。
とても素晴らしいアイデアだと思います!

 
smc0478 2025-11-26

ありがとうございます。確かに韓国語だと、英語よりも読みやすい部分もあるように思います。

 
cronex 2025-11-26

配列は、あえて というデリミタを使わずに、comma を使ってもよかった気がします。
そして、配列が構造体/クラス、配列、あるいは辞書も含められる構造なのかが気になります。

 
smc0478 2025-11-26

当時の目標は本当にハングルだけを使って、できるだけ英語や句読点は排除しようということだったので使わなかったのですが、やはりカンマは入れたほうがより自然になりそうです。後で追加してみようと思います。

そして配列は、すべての型のデータを格納できる構造として設計しました。できないならバグです。T_T

 
t7vonn 2025-11-26

面白いですね

 
smc0478 2025-11-26

ありがとうございます。

 
tesla52 2025-11-26

面白いですね。良いインスピレーションが湧いたので、サイドプロジェクトとしてやってみようと思います。

 
smc0478 2025-11-26

いいですね。期待しています。

 
softer 2025-11-23

おお.. 応援しています

 
smc0478 2025-11-26

ありがとうございます。

 
kornet 2025-11-22

+-=$& のような特殊文字を他の言語より少なく使っているのがいいですね。小型の携帯機器のキーボードでは特殊文字の入力が大変ですから。

 
smc0478 2025-11-26

おお、そういう利点があるんですね。ありがとうございます。

 
nottiger 2025-11-19

とても良いです…

 
smc0478 2025-11-20

ありがとうございます。

 
roxie 2025-11-19

個人的な好みの違いかもしれませんが、「になる」より「である」のほうが良かった気がします。

 
smc0478 2025-11-19

もともと初期のころは、変数代入は 가는 ~だ。 でした。ですが開発するときに「~だ/da」を関数呼び出しにも使っていたため、式のパースが曖昧になってしまい、「なる」に変えました。後で「~だ」としてパースできるようにすることも試してみようと思います。

 
roxie 2025-11-19

そうですね、関数呼び出しは「〜する」べきな気がします(笑)

 
girr311 2025-11-19

よく読みました。

 
smc0478 2025-11-19

ありがとうございます。

 
ifmkl 2025-11-19

大学のコンパイラの授業時間に似たようなものをやっていた記憶がよみがえりますね。

 
smc0478 2025-11-19

まだ学んでいませんが、楽しみですね。

 
beoks 2025-11-19

おや、lexer や parser のファイル名を見ると、コンパイラを勉強されたように見えますが、違うのでしょうか?

 
smc0478 2025-11-19

あ、私はまだ大学3年生で、コンパイラの授業もまだ受けておらず、独学で作ったものでもありますし、素早く作ろうとして自己流で学習して開発したので、そうなっています。

 
futurist 2025-11-19

すてきな試みですね!! 面白いです(笑)
自然に表現するために、かなり悩んで工夫されたのだろうという感じがします。

 
smc0478 2025-11-19

ありがとうございます。