ElyxLang — コンパクトなスクリプト言語

Tool

概要

Elyx は TypeScript で書かれ Deno 上で実行される小型スクリプト言語です。チュートリアル由来のインタプリタ実装をベースに機能拡張が行われ、使える REPL、クラスや例外処理(try/catch)、switch/case、パッケージ化して配布可能な CLI バイナリなど実用的な機能が追加されています。文法は C/JavaScript に似ており、数値(小数含む)や文字列、関数、制御構造をサポート。学習目的の実装ながら、スクリプト実行や組み込みの言語としても利用できる設計です。

GitHub

リポジトリの統計情報

  • スター数: 1
  • フォーク数: 0
  • ウォッチャー数: 1
  • コミット数: 8
  • ファイル数: 22
  • メインの言語: TypeScript

主な特徴

  • Deno 上で動作する TypeScript 実装のインタプリタ/REPL
  • C/JS 風の文法(セミコロン任意)と基本データ型、演算子をサポート
  • クラス、try/catch、switch/case、関数といった実用的な構造
  • CLI バイナリ化(パッケージ化)を見据えた構成とツール群

技術的なポイント

Elyx の実装は典型的なインタプリタ構造に従っています。ソースコードはトークナイザ(字句解析)、パーサ(構文解析)で入力を AST(抽象構文木)に変換し、評価器(インタプリタ本体)が AST を走査して実行結果を生成します。TypeScript で書かれているため、型情報による安全性と可読性が確保され、Deno の実行環境を活用して単一バイナリ化やモジュール管理が容易です。

言語機能面では、C/JS に似た式・文法を採用しているため学習コストが低く、セミコロンの省略を許すなど柔軟なパーサ設計が施されています。数値リテラル(小数含む)や文字列、関数定義/呼び出し、クラス定義とインスタンス生成、例外処理(try/catch)、switch/case といった制御構造に対応しており、REPL を通じた対話的な試行が可能です。

実行面では環境(スコープ/変数束縛)の管理、関数クロージャ、メソッド呼び出しの解決が重要になります。TypeScript 実装により AST ノード型や評価器のインタフェースが明確になっており、将来的な最適化(バイトコード化や VM 層の導入)や型チェック機能の追加もしやすい設計です。また、CLI 周りは cli.ts を中心に用意されており、Deno のビルド(deno compile など)で配布可能なバイナリへ変換することを想定した構成になっています。学習目的のコードベースとしてドキュメント性が高く、インタプリタの各フェーズ(字句 → 構文 → 実行)を追いやすい点が魅力です。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .vscode: dir
  • LICENSE.txt: file
  • README.md: file
  • bk: dir
  • cli.ts: file

…他 17 ファイル

まとめ

学習用インタプリタとして実用要素も備えた、Deno/TypeScript ベースの小型スクリプト言語。

リポジトリ情報:

  • 名前: ElyxLang
  • 説明: Elyx is a compact scripting language implemented in TypeScript and designed to run on Deno. It grew from a tutorial-based interpreter project and has been extended with many practical features including a usable REPL, classes, try/catch, switch/case, and packaging-ready CLI binaries.
  • スター数: 1
  • 言語: TypeScript
  • URL: https://github.com/ZtaMDev/ElyxLang
  • オーナー: ZtaMDev
  • アバター: https://avatars.githubusercontent.com/u/85247633?v=4

READMEの抜粋: Elyx — small scripting language (Deno)

Elyx is a compact scripting language implemented in TypeScript and designed to run on Deno. It grew from a tutorial-based interpreter project and has been extended with many practical features including a usable REPL, classes, try/catch, switch/case, and packaging-ready CLI binaries.

Features

  • Familiar C/JS-like expression and statement syntax with optional semicolons.
  • Numbers (including decimal literals, …