Memories of pasta twine together—now and then a knot, yet always a delight.
*OnBoot
@挨拶:ごきげんよう、お待ちしておりましたわ、まあまあ
%ぱすた、ラザニア
ラザニア:@挨拶 !
:べ、別にあなたを待っていたわけではありませんのよ?
ぱすた:素直じゃないなあ……
:ようこそ!一緒に楽しもうね。
Pasta は里々/Ren'Pyにインスパイアされた対話スクリプト言語/SHIORI.DLLです。 日本語フレンドリーな全角マーカー、前方一致によるランダム選択、Luaランタイムによる拡張性を特徴とします。 上のサンプルのように、シンプルな記述で自然な対話を実現できます。
| ドキュメント | 説明 |
|---|---|
| GRAMMAR.md | Pasta DSL 文法リファレンス(学習用クイックガイド) |
| doc/spec/ | Pasta DSL 正式言語仕様書(章別分割、実装判断の権威的ソース) |
| AGENTS.md | AI開発支援ドキュメント(Kiro仕様駆動開発) |
Pastaは、「伺か」などのデスクトップマスコットアプリケーション、あるいはノベルゲーム用途に向いたスクリプトエンジンです。
Engine (上位API) → Cache/Loader
↓
Transpiler (2pass) ← Parser (pasta_dsl, Pest)
↓
Runtime (Lua VM) → IR Output (ScriptEvent)
Pastaは現行の parser + transpiler スタックを使用しています:
| モジュール | 文法ファイル | 状態 | 用途 |
|---|---|---|---|
pasta_dsl::parser |
grammar.pest |
現行 | DSL→AST変換 |
pasta_lua::transpiler |
- | 現行 | 2-pass トランスパイル |
// 現行スタック
use pasta_dsl::parser::{parse_str, parse_file};
use pasta_lua::transpiler::Transpiler;parserモジュールは、独立クレート pasta_dsl として提供され、grammar.pest文法に基づいています。
主な特徴:
- 3層スコープ構造:
FileScope⊃GlobalSceneScope⊃LocalSceneScope - 未名グローバルシーンの自動名前継承
- 全角/半角数字の自動正規化
- 継続行アクション(
:で始まる行)のサポート
- README.md - プロジェクト概要(このドキュメント)
- GRAMMAR.md - Pasta DSL 文法リファレンス
- doc/spec/ - 言語仕様書(章別分割、権威的ソース)
- AGENTS.md - AI開発支援ドキュメント
- pasta_dsl/README.md - DSLパーサー
- pasta_core/README.md - レジストリ・ユーティリティ
- pasta_lua/README.md - Luaトランスパイラ
- pasta_shiori/README.md - SHIORI DLL統合
- .kiro/steering/ - AI/仕様駆動開発コンテキスト
- crates/pasta_lua/tests/fixtures/ - テストフィクスチャ
- GRAMMAR.md - 基本文法を学ぶ
- crates/pasta_lua/tests/fixtures/sample.pasta - サンプルスクリプト
- クイックスタート - ビルド・実行方法
- pasta DSL vscode拡張 - pasta構文 vscode拡張
- doc/spec/ - 言語仕様の理解(必要な章のみ)
- pasta_dsl/README.md - DSLパーサー
- pasta_core/README.md - レジストリ
- .kiro/steering/structure.md - プロジェクト構造
- .kiro/steering/workflow.md - 開発ワークフロー
- AGENTS.md - AI開発支援概要
- .kiro/steering/ - ステアリングファイル群
- doc/spec/README.md - 正式仕様(章別インデックス)
- Rust 2024 edition
- cargo
cargo build --workspacecargo test --workspacepasta/
├── crates/
│ ├── pasta_dsl/ # DSLパーサー(Pest PEG → AST)
│ ├── pasta_core/ # レジストリ・ユーティリティ(言語非依存層)
│ ├── pasta_lua/ # Luaトランスパイラ・ランタイム
│ └── pasta_shiori/ # SHIORI DLL統合
└── tests/ # 統合テスト・フィクスチャ
LICENSE ファイルを参照してください。