Skip to content

katedegree/japa

Repository files navigation

日本語プログラミング言語「JAPA」

公開URL

アプリケーション概要

  • 気軽に日本語でプログラミングが書けるそんなアプリになっています。
  • ドキュメントも用意しているのでプログラミングの入り口。そんな風になればいいなと思っています。

使用技術スタック

  • フレームワーク: React
  • デプロイ: AWS EC2
  • 開発環境: Docker, Git

創意工夫

【ユーザー体験の向上】

  • 日本語でコードを打つため、半角と全角の切り替えを使用するとユーザー体験の低下につながります。そのため全て全角で書けるように実装いたしました。
  • コードスペースとドキュメントページを行き来することが想定されるので、コードをローカルストレージに保存することでページ遷移時も入力値を保持できるようにしました。

【ターゲットの理解】

  • 「プログラミングの専門学校に興味があるけど合わなかったらどうしよう」という人に向けての比較的学習コストが低く実際のプログラミング言語に近いという特性を持った言語として開発しました。

実際のアプリケーション画像

コードスペース ドキュメントページ
スクリーンショット 2024-12-19 14 51 01 スクリーンショット 2024-12-21 14 41 32

楽しかったこと!!(コアな内容)

  • 日本語で変数を定義するのは危険なのでオブジェクトのキーとして定義
変数  ハローワールド
// vars["変数"] = "ハローワールド"
  • 構文解析を使用していないのでゴリゴリの正規表現を使用

 -> そうすると、"二次元配列"や"関数の中の関数"などを認識できないのでそこはループを使用

const initial_types = {
        space: /^[  ]*$/,
        if: /^ (.+)$/,  // If文
        elseIf: /^[] (.+)$/,  // Else if文
        else: /^$/,  // Else文
        for: /^ (.+)  (.+)$/,  // For文
        print: /^(.*)$/, //出力関数   
        assign: /^([^]+)  ([^]+)$/,  // 代入式
        funcs: /^(?:[^]+(?:[^]+)+)$/,
    }
const arg_types = {
        funcs: /^(?:[^]+(?:[^]+)+)$/,
        func: /^(.+)(.*)$/,  // 関数
        list: /^(.+?(?:.+)*)$/,  // リスト
        item: /^(.+?)((?:(.*?))+)$/,  // リストの値
        num: /^?[]+$/,  // 数字
        fin: /(  |  |  |  |  )/
    }
const func_types = {
        int: /^(.*)$/,
        str: /^(.*)$/,
        split: /^(.*)$/,
        input: /^(.*)$/,
        push: /^(.*)$/,
        delete: /^(.*)$/,
        len: /^(.*)$/,
        range: /^(.*)$/,
    }
  • 引き算の記号をにしたためハローワールドが"ハロ" - "ワ" - "ルド"などになってしまった。そのため記号を使用する際は全て前後に全角スペースを入れるように実装した
  • 割り算の記号で/をできない(全角のみで実装予定のため)のでで割り算を実装で論理和を実装
  • ループ処理を実装する際に代入する変数を作らないといけないためa~zを使う様に指定した
ループ 「0、1、2」 => 
// for (const a of [0, 1, 2]) {
//    vars["値"] = a;
const abc_list: string[] = [
        'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 
        'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'
    ];

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors