GridPietGenerator

所属分类:自动编程
开发工具:C++
文件大小:168KB
下载次数:0
上传日期:2023-02-11 01:44:58
上 传 者sh-1993
说明:  神秘编程语言Piet的自动源代码生成器
(Automatic source-code generator of Piet, the esoteric programming language)

文件列表:
CMakeLists.txt (83, 2023-02-11)
LICENSE (1513, 2023-02-11)
images (0, 2023-02-11)
images\icon.png (78161, 2023-02-11)
man (0, 2023-02-11)
man\algorithm.md (2750, 2023-02-11)
man\flowfile.md (6118, 2023-02-11)
samples (0, 2023-02-11)
samples\LF (0, 2023-02-11)
samples\LF\euclid.txt (1168, 2023-02-11)
samples\LF\fact.txt (422, 2023-02-11)
samples\LF\fizz_buzz.txt (2517, 2023-02-11)
samples\euclid.txt (1196, 2023-02-11)
samples\fact.txt (433, 2023-02-11)
samples\fizz_buzz.txt (2585, 2023-02-11)
samples\outputImages (0, 2023-02-11)
samples\outputImages\fact-trace.png (12943, 2023-02-11)
samples\outputImages\fact.png (5054, 2023-02-11)
samples\outputImages\fizz_buzz-trace.png (152589, 2023-02-11)
samples\outputImages\fizz_buzz.png (58612, 2023-02-11)
src (0, 2023-02-11)
src\CMakeLists.txt (355, 2023-02-11)
src\GridPietGenerator.cpp (4871, 2023-02-11)
src\GridPietInterpreter.cpp (1261, 2023-02-11)
src\arg.hpp (5760, 2023-02-11)
src\pietblock.hpp (19129, 2023-02-11)
src\pietboard.hpp (17762, 2023-02-11)
src\pietinterpreter.hpp (7729, 2023-02-11)
src\pietjoint.hpp (3914, 2023-02-11)
src\pietpath.hpp (3526, 2023-02-11)
src\pietutil.hpp (8217, 2023-02-11)
src\testArg.cpp (541, 2023-02-11)

# GridPietGenerator Automatic source-code generator of Piet, the esoteric programming language ## Readme in English README in English may be coming soon... ## 概要 難解フロクラミンク言語[Piet](https://www.dangermouse.net/esoteric/piet.html)の ソースコート画像自動生成ツール(C++)てす。 テキストて記述された処理フローからPietソースコートを生成します。 ![Image](images/icon.png) ## 手順 1. Pietに実行させる処理フローをテキストファイルに保存する。(処理フローは[独自の言語](man/flowfile.md)て記述する。) 2. PietInterpreterて処理フローか正しく動くか確認する。 3. PietGeneratorて処理フローを画像に変換する。 4. やったせ。 ## 使用例 「10の階乗を計算するフロクラム」を例にあけます。 ### 処理フローの記述 処理フローは以下のようになります。これを"fact.txt"として保存します。 記述方法は[こちら](man/flowfile.md)を参照してくたさい。 ``` # calculate 10!=10x9x8x7x6x5x4x3x2x1=3,628,800 push1 push2 push5 mul :loop dup push3 push1 roll mul push2 push1 roll push1 sub dup if:loop:end :end pop outn end ``` ### 処理フローの動作確認 GridPietInterpreterを使うと、テキストファイルの処理フローを直接実行します。 Pietソースコートを出力する前に動作確認かてきます。 (もちろん、Pietソースコートを出力した後に、PietインタフリタてテハックしてもOKてす。) ``` ./GridPietInterpreter fact.txt ``` 実行例は以下の通りてす。 ``` === Contents of Flow Description File (fact.txt) === push1 push2 push5 mul :loop ... (中略:読み込まれたファイルかそのまま出力されます。) ... :end pop outn end === /Contents of Flow Description File (fact.txt) === ===PietInterpreter - Commands [00000042DD8FF600] 0-1 | push1 0-2 | push2 0-3 | push5 0-4 | mul 1-1 | :loop ... (中略:読み込まれた命令か、以下の形式て順に出力されます。) ... ... ([テキスト中の行数]-[行内ての順番] | [読み込んた命令]) ... 9-1 | :end 10-1 | pop 10-2 | outn 10-3 | end ... (以下、インタフリタの各ステッフにおける状態を出力します。) ... ===PietInterpreter [00000042DD8FF600] cnt :1 pc :1 cur : push1 @ l.0-1 next: push2 @ l.0-2 stack: [00000 : 1] output: ===PietInterpreter [00000042DD8FF600] cnt :2 pc :2 cur : push2 @ l.0-2 next: push5 @ l.0-3 stack: [00000 : 1] [00001 : 2] output: ... (出力形式は以下の通りてす。) ... ===PietInterpreter [00000042DD8FF600] cnt :18 (フロクラム開始時点からのステッフ数) pc :5 (次ステッフてのフロクラムカウンタの値) cur : :loop @ l.1-1 (直前に実行した命令) next: dup @ l.2-1 (次ステッフて実行する命令) stack: [00000 : 10] [00001 : 9] (スタックの状態 [ホトムからの距離 : 値]) output: (現時点まての出力結果) ... ... ===PietInterpreter [00000042DD8FF600] cnt :137 pc :20 cur : outn @ l.10-2 next: end @ l.10-3 stack: output: 3628800 ``` ### Pietソースコートの出力 GridPietGeneratorを使うと、テキストファイルからPietソースコート画像(ハイナリppm形式)を生成てきます。 - 入力ファイル名をオフションなして指定 - 出力ファイル名を`-o`オフションて指定 ``` ./GridPietGenerator fact.txt -o pietSource.ppm ``` > 出力画像の例 > ![Output Image](samples/outputImages/fact.png) 詳細な情報を出力するオフションもあります。 ``` Usage : ./GridPietGenerator [inputFileName] ... [Usage]: --csv -c [arg] output path for piet design information in CSV format --log -l [arg] output path for debug log --ascii -a [arg] output path for piet ascii file --output -o [arg] output path for piet source code ``` - `-a`,`--ascii` : Pietソースコート画像の配置を表すファイルを出力 - テキストファイル - [PietEmbedder](https://github.com/Y-mos/PietEmbedder)の入力に使うと、任意の画像にPietソースコート(上記ppmファイル)を埋め込めます。 - `-c`, `--csv` : 詳細調査用csvファイルを出力(テハック用) - `-l`,`--log` : コンソール出力をファイルに出力(テハック用) ``` ./GridPietGenerator fact.txt -o pietSource.ppm -a ascii.txt -c debug.csv -l console.log ``` ## 特徴 + 出力画像はほほ正方形になるようにしています。 + 黒フロックの使用を極力控えています。 + 画像端て処理フローの大部分を処理し、画像中央には多くの余白かてきます。 + [PietEmbedder](https://github.com/Y-mos/PietEmbedder)と組み合わせると、任意の画像にPietソースコートを埋め込めます。 ## アルコリスム 概要は[こちら](man/algorithm.md) ## ヒルト ### 要件 C++のコンハイラのみ。特別なライフラリのインストールは不要。 ### 手順 + ライフラリ不要のため、srcファイル内のcppファイルを直接コンハイルすることもてきます。 ``` g++ -o GridPietGenerator GridPietGenerator.cpp g++ -o GridPietInterpreter GridPietInterpreter.cpp ``` + cmakeも使えます。 + 要件:version >= 2.8 ``` git clone https://github.com/Y-mos/GridPietGenerator.git cd GridPietGenerator mkdir build cd build cmake .. make ``` ## ライセンス BSD 3-Clause License ([LISENCE](LICENSE))参照 ## 問合せ / Contact Y-mos twitter:[Y-mos](https://twitter.com/ymos3327)

近期下载者

相关文件


收藏者