https://github.com/ekicyou/pasta
Memories of pasta twine together—now and then a knot, yet always a delight.
https://github.com/ekicyou/pasta
pasta ukagaka ukagaka-shiori
Last synced: 2 months ago
JSON representation
Memories of pasta twine together—now and then a knot, yet always a delight.
- Host: GitHub
- URL: https://github.com/ekicyou/pasta
- Owner: ekicyou
- License: mit
- Created: 2025-12-16T00:30:22.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2026-02-21T23:39:06.000Z (3 months ago)
- Last Synced: 2026-02-22T06:20:53.521Z (3 months ago)
- Topics: pasta, ukagaka, ukagaka-shiori
- Language: HTML
- Homepage:
- Size: 20.7 MB
- Stars: 3
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
README

# pasta
Memories of pasta twine together—now and then a knot, yet always a delight.
## Pasta DSL サンプル
```pasta
*OnBoot
@挨拶:ごきげんよう、お待ちしておりましたわ、まあまあ
%ぱすた、ラザニア
ラザニア:@挨拶 !
:べ、別にあなたを待っていたわけではありませんのよ?
ぱすた:素直じゃないなあ……
:ようこそ!一緒に楽しもうね。
```
> **Pasta** は里々/Ren'Pyにインスパイアされた対話スクリプト言語/SHIORI.DLLです。
> 日本語フレンドリーな全角マーカー、前方一致によるランダム選択、Luaランタイムによる拡張性を特徴とします。
> 上のサンプルのように、シンプルな記述で自然な対話を実現できます。
---
## 関連ドキュメント
| ドキュメント | 説明 |
| ------------------------ | ------------------------------------------------------------ |
| [GRAMMAR.md](GRAMMAR.md) | Pasta DSL 文法リファレンス(学習用クイックガイド) |
| [doc/spec/](doc/spec/) | Pasta DSL 正式言語仕様書(章別分割、実装判断の権威的ソース) |
| [AGENTS.md](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 トランスパイル |
#### 使用方法
```rust
// 現行スタック
use pasta_dsl::parser::{parse_str, parse_file};
use pasta_lua::transpiler::Transpiler;
```
### parserについて
`parser`モジュールは、独立クレート `pasta_dsl` として提供され、`grammar.pest`文法に基づいています。
主な特徴:
- 3層スコープ構造:`FileScope` ⊃ `GlobalSceneScope` ⊃ `LocalSceneScope`
- 未名グローバルシーンの自動名前継承
- 全角/半角数字の自動正規化
- 継続行アクション(`:`で始まる行)のサポート
---
## ドキュメントマップ
### Level 0: Entry Point
- [README.md](README.md) - プロジェクト概要(このドキュメント)
### Level 1: Core Docs
- [GRAMMAR.md](GRAMMAR.md) - Pasta DSL 文法リファレンス
- [doc/spec/](doc/spec/) - 言語仕様書(章別分割、権威的ソース)
- [AGENTS.md](AGENTS.md) - AI開発支援ドキュメント
### Level 2: Crate Docs
- [pasta_dsl/README.md](crates/pasta_dsl/README.md) - DSLパーサー
- [pasta_core/README.md](crates/pasta_core/README.md) - レジストリ・ユーティリティ
- [pasta_lua/README.md](crates/pasta_lua/README.md) - Luaトランスパイラ
- [pasta_shiori/README.md](crates/pasta_shiori/README.md) - SHIORI DLL統合
### Level 3: Steering
- [.kiro/steering/](.kiro/steering/) - AI/仕様駆動開発コンテキスト
### 開発者向けリソース
- [crates/pasta_lua/tests/fixtures/](crates/pasta_lua/tests/fixtures/) - テストフィクスチャ
---
## オンボーディングパス
### DSLユーザー向け(推定所要時間: 30分)
1. [GRAMMAR.md](GRAMMAR.md) - 基本文法を学ぶ
2. [crates/pasta_lua/tests/fixtures/sample.pasta](crates/pasta_lua/tests/fixtures/sample.pasta) - サンプルスクリプト
3. [クイックスタート](#クイックスタート) - ビルド・実行方法
4. [pasta DSL vscode拡張](https://marketplace.visualstudio.com/items?itemName=ekicyou.pasta-vscode) - pasta構文 vscode拡張
### 開発者向け(推定所要時間: 2-3時間)
1. [doc/spec/](doc/spec/) - 言語仕様の理解(必要な章のみ)
2. [pasta_dsl/README.md](crates/pasta_dsl/README.md) - DSLパーサー
3. [pasta_core/README.md](crates/pasta_core/README.md) - レジストリ
3. [.kiro/steering/structure.md](.kiro/steering/structure.md) - プロジェクト構造
4. [.kiro/steering/workflow.md](.kiro/steering/workflow.md) - 開発ワークフロー
### AI開発支援向け(推定所要時間: 1時間)
1. [AGENTS.md](AGENTS.md) - AI開発支援概要
2. [.kiro/steering/](.kiro/steering/) - ステアリングファイル群
3. [doc/spec/README.md](doc/spec/README.md) - 正式仕様(章別インデックス)
---
## クイックスタート
### 前提条件
- Rust 2024 edition
- cargo
### ビルド
```bash
cargo build --workspace
```
### テスト
```bash
cargo test --workspace
```
### プロジェクト構造
```
pasta/
├── crates/
│ ├── pasta_dsl/ # DSLパーサー(Pest PEG → AST)
│ ├── pasta_core/ # レジストリ・ユーティリティ(言語非依存層)
│ ├── pasta_lua/ # Luaトランスパイラ・ランタイム
│ └── pasta_shiori/ # SHIORI DLL統合
└── tests/ # 統合テスト・フィクスチャ
```
---
## ライセンス
[LICENSE](LICENSE) ファイルを参照してください。