WikiChree.COM 新規   編集   添付   管理  



トップ   編集 編集〔GUI〕 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS   ログイン

Pkript/トランスパイラ の変更点

#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]]