#author("2026-09-04T00:00:41+09:00","default:mcp","bot-mcp") * Pkript/トランスパイラ [#cb542e77] PkriptのAST(抽象構文木)解析エンジンを利用し、JavaScript構文で書かれたコードをネイティブなPHPコードへ変換するトランスパイラです。 #author("2026-09-04T00:06:13+09:00","default:mcp","bot-mcp") * Pkript/トランスパイラ [#zce0ad3b] Pkriptの構文解析エンジンが生成した抽象構文木(AST)を受け取り、ネイティブなPHPコードへ変換するトランスパイラです。 - リポジトリ: https://github.com/TeamWikiChree-COM/Pkript-Transpiler #contents ** 概要 [#b5147b77] トランスパイラを使用することで、JavaScript形式で作成したスクリプトを通常のPHPスクリプトまたはPukiWikiプラグイン形式(plugin/*.inc.php)へ変換・出力できます。 ** 個別ドキュメント [#m64bb064] - [[Pkript/トランスパイラ/CLI]]: コマンドラインツール(transpiler/cli.php)の仕様とオプション - [[Pkript/トランスパイラ/プラグイン出力]]: PukiWikiプラグイン形式(--target=pukiwiki)への変換仕様 - [[Pkript/トランスパイラ/PHP_API]]: PHPスクリプトからPkript_Transpilerを呼び出すAPI仕様 - [[Pkript/トランスパイラ/対応構文]]: トランスパイラが対応するJavaScript構文とPHP変換規則 ** リファレンス [#p0c15ded] ** 概要 [#ob8633e1] トランスパイラを使用することで、JavaScript形式で作成したスクリプトを、ランタイムに依存しない通常のPHPスクリプト、またはPukiWikiプラグイン形式(plugin/*.inc.php)へ直接変換できます。 *** CLIオプション一覧 [#kd9d0c59] transpiler/cli.php の実行時に指定可能なオプションです。 ** クイックスタート [#s326ae47] |~オプション|~型|~デフォルト値|~説明| |--target|string|standard|出力形式。standard (通常PHP) または pukiwiki (プラグイン形式)| |--plugin-name|string|入力ファイル名|PukiWikiプラグイン名| |--const-mode|string|define|constの変換先 (define, const, var)| |--const-guard|bool|false|define()に defined() ガードを付与するか| |--runtime-mode|string|none|ランタイム依存度。none (ネイティブPHPのみ) または full (ヘルパー関数使用)| |--guard-functions|bool|false|関数定義に function_exists() ガードを付与するか| |--auto-invoke|string|なし|スクリプト末尾で自動実行する関数名| |--strict-types|bool|false|ファイルの先頭に declare(strict_types=1); を付与するか| *** 対応構文 [#l7a342fc] - 演算子: べき乗 (**), Null合体 (??), 論理代入 (??=, &&=, ||=), ビット演算 - 式: オプショナル連鎖 (a?.b, a?.[i], a?.()), スプレッド構文 ([...a], {...a}), テンプレートリテラル - 宣言・代入: 分割代入(配列・オブジェクト、ネスト、デフォルト値対応) - 関数: アロー関数、デフォルト引数、残余引数 (...rest) - 例外処理: try-catch-finally, throw - 正規表現: 正規表現リテラル (/pattern/flags) および各メソッド ** 使用法 [#xc093335] *** 1. CLIによる変換 [#y85fcabf] コマンドラインからファイルを変換します。 スタンドアロンPHPへの変換: *** CLIでの変換 [#h9571e63] #code(bash){{ # スタンドアロンPHPへの変換 php transpiler/cli.php input.js output.php --auto-invoke=main }} PukiWikiプラグイン形式への変換: #code(bash){{ # PukiWikiプラグイン形式への変換 php transpiler/cli.php --target=pukiwiki plugin/pkript/script/sample.js plugin/sample.inc.php }} *** 2. PHPスクリプトからの呼び出し [#kfc5b6a5] プログラム内から直接トランスパイラを実行します。 *** PHPスクリプトからの呼び出し [#j33773ac] #code(php){{ require_once __DIR__ . '/transpiler/transpiler.php'; $transpiler = new Pkript_Transpiler([ 'target' => 'standard', 'auto_invoke' => 'main', 'strict_types' => true, 'target' => 'standard', 'auto_invoke' => 'main', ]); $jsCode = ' function add(a, b) { return a + b; } function main() { console.log("Result:", add(10, 20)); } '; $phpCode = $transpiler->transpile($jsCode); $phpCode = $transpiler->transpile('function main() { console.log("Hello"); }'); echo $phpCode; }} ---- [[Pkript]]