Skip to content

The interpreter for the "qiitan" script. A Qiitan fan-made script.

License

Notifications You must be signed in to change notification settings

Qiitadon/Qiitan-go

Repository files navigation

  • キーたん(Qiitan)は、Qiita™️ の SNS である「Qiitadonβ」のマスコット・キャラクターです。
  • Qiitan-go は非公認の Qiitan のファン・アプリです。Qiita™️ とは一切関係がありません。

platform icon homebrew icon MIT license

Qiitan-goalpha

キーたん語(Qiitan-go)は、キーたん(Qiitan) ファンの、Qiitan ファンによる、Qiitan ファンのための「お遊び用スクリプト言語」です。

qiitan スクリプトの Hello World

スクリプトと実行例

$ # スクリプト
$ cat ./hello_world.qiitan
/* Hello World of Qiitan Script */
foo := import("fmt")
foo.println("Hello World!")

$ # 実行
$ qiitan ./helloworld.qiitan
Hello World!
  • スクリプトの簡易説明(./hello_world.qiitan

    foo := import("fmt")
    foo.println("Hello World!")
    • この qiitan スクリプトは、標準モジュール(qiitan インタプリタに同梱されているモジュール)から fmt モジュールを foo に代入し、その fmt モジュール内で定義されている println 関数(改行付き print 関数)を呼び出して標準出力に出力しています。

対話モード(REPL)で実行する例

$ # 対話モード(REPL)で実行
$ qiitan
Welcome to Qiitan Script Interactive Mode! (To exit just type `bye`)
> foo := import("fmt")
LOG: {__module_name__: "fmt", print: <user-function>, printf: <user-function>, println: <user-function>, sprintf: <user-function>}
> foo.println("Hello World!")
Hello World!
LOG: <undefined> object returned. Perhaps the statement has no return or nothing is assigned to it.
>
> bye
Nice chatting with you. Thank you! Bye-bye~.
$

プリ・コンパイルと実行

キーたん語は、なんちゃってプリ・コンパイル型の言語です。

qiitan スクリプトの実行だけでなく、その中間ファイル(バイトコード)を出力することができ、この中間ファイルも qiitan インタプリタで実行することができます。 複数ファイルで構成されている qiitan スクリプトを 1 つのファイルとして配布したい場合に便利です。(実行速度は大して変わりません)

$ qiitan -compile ./helloworld.qiitan
compiled: ./helloworld.qtn

$ qiitan ./helloworld.qtn
Hello World!

リソース


Install

  • Homebrew (macOS: x86_64/Intel/AMD64, M1/ARM64, Linux & Windows WSL2: x86_64, ARM64, ARM v6)

    brew install Qiitadon/apps/qiitan
  • 手動インストール(Windows, macOS, Linux)

    • Releases ページ
    • qiitan インタプリタは単体バイナリです。リリース・ページから OS + アーキテクチャに該当するバイナリをダウンロードし、実行権限を与えてパスの通ったディレクトリに設置するだけで利用できます。
    • macOS で「Operation not permitted」エラーが出る場合は、ターミナル・アプリにディスク・アクセスの権限が与えられていない可能性があります。

Statuses

このリポジトリでは、以下のような最低限のセキュリティ対策が施されています。

go1.14+ Platform Tests golangci-lint CodeQL codecov Go Report Card


言語拡張開発(コントリビュート)

go1.16+ Go Reference

  • qiitan コマンド(インタプリタ)自体は Go 言語で開発されています。
  • qiitan コマンド(インタプリタ)は、スタンドアロン(単体)のバイナリとして動作するように設計されています。
  • CONTRIBUTING

License

謝辞

  • qiitan スクリプトは Tengo 言語をベースに拡張した上位互換言語です。
  • qiitan インタプリタは、以下の Go モジュールにお世話になっています。