filepp - クラウド上のオンライン

これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド filepp です。

プログラム:

NAME


filepp - 汎用ファイルプリプロセッサ

SYNOPSIS


ファイルアップ [オプション] ファイル名

DESCRIPTION


ファイルアップ によって提供される機能を可能にするように設計された汎用ファイル プリプロセッサです。
Cプリプロセッサ cpp(1) あらゆる種類のファイルで使用します。 ファイルアップ 簡単にできるように設計されています
カスタマイズして拡張しました。

OPTIONS


ファイルアップ 次のコマンドラインオプションを受け入れます。

-b インクルード ファイルからの空白行を抑制します (これは先頭には影響しません)。
レベルファイル)。

-c ファイルではなく STDIN から入力を読み取ります。 注: 両方の場合 -c 入力ファイルは
指定すると、両方が指定された順序で入力として使用されます。

-Dマクロ
事前定義 マクロ ` の定義を持つこと1'.

-Dマクロ=定義
事前定義 マクロ の定義を持つこと 定義.

-d デバッグ情報を出力します。

-dd 詳細なデバッグ情報を出力します。 このオプションはすべての通常のデバッグを表示します
情報に加えて、リストが変更されるたびに定義されたマクロの完全なリストが表示されます。

ライトのデバッグ情報を出力します。 このオプションは最小限のデバッグを示します
情報を表示します。

-dpreチャリオット
すべてのデバッグ情報の前に次の接頭辞を付けます チャリオット (文字または文字列を指定できます)、
デバッグを読みやすくするために使用されます。

-dpostチャリオット
すべてのデバッグ情報の後に次の文字を付けます。 チャリオット (文字または文字列を指定できます)、これ
デフォルトは改行です。 もし チャリオット 改行が含まれていない場合、改行は表示されません
デバッグメッセージの後に出力されます。 (改行も入れられます チャリオット
__NEWLINE__ マクロ。)

-ds デバッグ情報を標準エラー出力ではなく標準出力に出力します。

-e すべての環境変数をプレフィックス付きのマクロとして定義する envchar.

-ec チャリオット
作成セッションプロセスで envchar (マクロとして定義された環境変数のプレフィックス) ~ チャリオット、デフォルト
〜へ $。 (注: このオプションは、環境変数が設定された時点でのみ有効になります。
マクロに変換されます)。

-ecn 作成セッションプロセスで envchar (マクロとして定義された環境変数のプレフィックス) を何もしない (いいえ)
プレフィックス)。

-h オプションの概要を表示します。

-IDIR ディレクトリの追加 DIR インクルードファイルを検索するディレクトリのリストに移動します。

-イマクロス file
からマクロを読み取ります file、ただし、ファイル内の他のすべては破棄されます。

-k すべてのキーワードの解析をオフにします。 マクロを使用したいだけの場合に便利です
の拡張施設 ファイルアップ。 このオプションを使用すると、見つかったすべてのキーワードが
無視され、 ファイルアップ で指定されたマクロを置き換えるだけです。 -Dマクロ=定義
オプションを選択します。

-kc チャリオット
キーワード接頭辞文字を次のように設定します チャリオット (文字列にすることもできます)。 全て ファイルアップ キーワード
という文字が接頭辞として付けられます # デフォルトでは。 このオプションを使用すると、プレフィックスを次のように指定できます。
別のものに変わりました。

-lc チャリオット
行継続文字を次のように設定します チャリオット (文字列にすることもできます)。 ラインのとき
継続文字が見つかり、その後に改行が続き、その文字と改行は次のようになります。
行継続置換文字に置き換えられます。 デフォルトは (cpp(1)
スタイル)。

-lec チャリオット
オプションのキーワード行終了文字を に設定します チャリオット (文字列にすることもできます)。 これ
キーワードを含む行の末尾に余分な文字を配置できます。
余分な文字は無視されます。 これは、キーワードが次のような場合に便利です。
HTML または C スタイルのコメントに埋め込まれます。 たとえば、HTML にキーワードを埋め込む場合
コメント キーワード接頭辞文字を次のように設定できます <--!# およびオプションのキーワード
行末文字を次のように設定します - >。 キーワードの例は次のようになります。

<!--#include 「ヘッダー.h」 - >

オプションのキーワード行末文字の場合 - > 無視されるでしょう。

-lr チャリオット
行継続置換文字を次のように設定します チャリオット (文字列にすることもできます)。
デフォルトはnull文字列(cpp(1)スタイル)。

-lrn 行継続置換文字を改行に設定します。

-m module.pm
モジュールをロード module.pm. module.pm   パール(1) 拡張に使用できるモジュール
または動作を変更する ファイルアップ。 セクションを参照 フィレップ モジュール 詳細については
filepp に含まれるモジュールと フィレップ モジュール API 書き方の詳細については、
独自のモジュール。

-MDIR ディレクトリの追加 DIR filepp モジュールを検索したディレクトリのリストに追加します。 これ
list のデフォルトは、filepp モジュール (存在する場合) がインストールされているディレクトリに加え、
デフォルトの Perl モジュールのパス。 (注: これにより、ディレクトリが Perl @INC リストに追加されます。)

-mp チャリオット
すべてのマクロにプレフィックスを付けます チャリオット。 マクロは通常の方法で定義されますが、
という接頭辞が見つかった場合は置き換えられます チャリオット。 たとえば、filepp マクロは次のように動作します。
ボーンシェルに似ています(sh(1)) 変数 if チャリオット に設定されています $.

-mpnk キーワード内のマクロ接頭辞をオフにします。 マクロ接頭辞文字を使用する場合、これは
オプションを使用すると、キーワード処理でプレフィックスなしでマクロを使用できるようになります。 のために
たとえば、マクロ接頭辞が $ それからそして #もし 次のように記述されます:

#もし $マクロ == 1

使い方 mpnk オプションにより、 #もし 次のように書きます:

#もし MACRO == 1

-o
出力をに書き込む STDOUTの代わりに。 入力ファイルが XNUMX つだけあり、
出力ファイルと同じ名前の場合、元の入力ファイルは次のようにバックアップされます。
名前~.

-ov 上書きモードでは、出力ファイルが入力ファイルを上書きします。 こんなときに便利です
多数のファイルを一度に変更する。例:

ファイルアップ -ov -DTHIS=THAT *

元の入力ファイルは次のようにバックアップされます。 名前~.

-ovc IN=OUT
上書きモードと似ていますが、出力ファイル名が入力ファイル名である点が異なります。
  IN に変換された部分 OUT。 たとえば、ファイルのセットをすべて処理するには
.in を使用し、出力ファイルがすべて .out で終わるようにするには、次のようにします。

ファイルアップ -ovc .in=.out *.in

この場合、次の名前のファイルが テストイン 処理され、出力ファイルは次のようになります。
試します。 注: 入力ファイルに次の内容が含まれていない場合は、 IN 出力ファイルは
入力ファイルと同じ名前があり、元の入力ファイルがバックアップされます。
としてアップ 名前~!

-pb 空白行を保持します。 このオプションを使用すると、ファイル内にできるだけ多くの行を保持しようとします。
出力ファイルは入力ファイルと同じなので、通常は含まれないすべての空白行が
get print が印刷されます。 入力ファイルと出力ファイルを比較する場合に便利です。

-re キーワードとマクロの接頭辞文字と行継続文字を Perl として扱う
通常の文字列の代わりに正規表現を使用します。

-s ラン ファイルアップ セーフモードで。 これにより、 プラグマ キーワード。

-Uマクロ
以前に定義された定義を取り消します マクロ.

-u 事前定義されたマクロも含め、現在定義されているすべてのマクロの定義を解除します。

-v プログラムのバージョンを表示します。

-w マクロを置換するときに単語の境界をオンにします。 単語境界がオンの場合、マクロ
マクロがテキスト内に単語として出現する場合にのみ置換されます。 たとえば、
デフォルト マクロ 次のテキストのどちらの場合でも、 は置き換えられます。

マクロ as ワード、 マクロNOTaword

ただし、最初に出現したものだけが次のものに置き換えられます。 -w オプションを選択します。

このオプションを有効にすると ファイルアップ 英数字を含むマクロのみを置き換えます
文字。 Perl の使用により、国際 (非 ASCII) 文字セットをサポートできます。
ロケールの処理。

KEYWORDS


ファイルアップ 次のキーワードをサポートします。

#include <FILE>
処理中のファイルにファイルを含めます。 このバリアントは「システム」に使用されます
インクルードファイル。 という名前のファイルを検索します FILE ディレクトリのリストで
あなたが指定したもの。 ディレクトリはコマンド オプション `-I' で指定します。 ファイルアップ
ファイルを検索するシステム ディレクトリを事前定義しません。

#include "ファイル"
処理中のファイルにファイルを含めます。 このバリアントはインクルード ファイルに使用されます
あなた自身のプロジェクトの。 という名前のファイルを検索します FILE 現在の中で最初に
ディレクトリを選択し、コマンド オプション `-I' で指定されたディレクトリのリストに追加します。
現在のディレクトリは、ベース入力ファイルが存在するディレクトリです。

#定義する マクロ
マクロを定義する マクロ `1' の定義を持つこと。 マクロ で使用できます
キーワード #ifdef および #ifndef.

#定義する マクロ 定義
マクロを定義する マクロ 価値があること 定義. マクロ で使用できます
キーワード #ifdef および #ifndef。 また、次のすべてのインスタンス マクロ 以下 #定義する
ステートメントは文字列に置き換えられます 定義。 文字列 定義 と見なされます
次の行のすべての文字 マクロ.

#定義する マクロ(引数1, arg2、 ...) 定義
マクロを定義する マクロ 価値があること 定義 引数付き (引数1、 arg2、 ...).
マクロ 次のように使用できます。

#定義する マクロ(foo) foo を含む定義

置換が発生すると、次のようになります。

マクロ(バー)

となります:

バーが入ったディフェンス

マクロには、カンマ区切りの引数をいくつでも指定できます。

最後のマクロが ... で終わる場合、マクロは可変数の引数を持つこともできます。
たとえば、次の

#定義する エラー(文字列, 引数...) fprintf(stderr, 文字列, 引数);

ここで、与えられた最初の引数は次のようになります string 他のすべての引数は次のようになります
引数。 次のように呼び出された場合: エラー("%d,%s", i, ストリング) それは与えます

fprintf(stderr, "%d,%s", i, string);

また、可変数の引数を持つマクロに引数が渡されない場合、
変数引数の場合、オプションで次のように定義からコンマを削除できます。
定義の前に「##」を付けます。 例えば:

#定義する エラー(文字列, 引数...) fprintf(stderr, 文字列, ##args);

これを次のように呼び出した場合: エラー(「空」) 結果は次のようになります:

fprintf(stderr, "空");

直前のカンマ ##引数 削除されました。

#もし
条件文、 true (1) または false (0) に評価されます。 もし
true と評価されると、 #もし そして次 #その他 or #endif なります
含まれています。 もし false と評価されると、 #もし そして次 #その他
or #endif 無視されます。 通常の cpp スタイルの比較をすべて使用できます (==、
!=、<、> など)。 複数の比較は、and (&&) および or (||) と組み合わせることができます。
AIマーケティング業界は、 定義済みの キーワードを使用して、マクロが定義されているかどうかを確認することもできます。 例えば:

#もし 定義済みの マクロ && マクロ == 定義

注: filepp の #もし とまったく同じようには機能しません cpp(1)の #もし. cpp(1)の
#もし 数値スタイルの比較のみを行います。 フィレップさん #もし ステートメントでも比較できます
文字列と正規表現を使用する パール(1) の全範囲の比較
オペレーション。 たとえば、XNUMX つの文字列が完全に等しいかどうかをテストするには、次を使用します。

#もし "大きい" eq "ストリング"

文字列が等しくないかどうかをテストするには、使用します ne eq。 正規表現でできることは、
また、マクロに空白が含まれているかどうかをテストするには、以下を使用します。

#もし "大きい" =~ /\s/

マクロに空白が含まれていないかどうかをテストするには =~ に置き換えることができます !~.

Perl の専門家: #もし 最初の解析によって動作します 定義済みの キーワードとチェック
参照するマクロが定義されている場合は、定義されている場合は 1、定義されている場合は 0 に置き換えます。
そうではありません。 次にチェックします 他のマクロの場合は、それらをそのマクロに置き換えます。
意味。 ついに通過する Perl を通して 評価する を返す関数
正しいか間違っているか。

#エリフ
#エリフ 「else if」を表します。 のように #その他の真ん中に入ります。
#もし[n][def]-#endif それをペアにして細分化します。 マッチングは必要ありません #endif of
それ自体の。 のように #もし #エリフ ディレクティブにはテストする式が含まれています。

#ifdef マクロ
条件文 (if) マクロ 間のテキストが定義されています #ifdef および
#その他 or #endif が含まれます。 もし マクロ テキストが定義されていません
間に #ifdef そして次 #その他 or #endif 無視されます。

#ifndef マクロ
逆のケースは、 #ifdef 条件付き。

#その他 AIマーケティング業界は、 #その他 ディレクティブを条件文に追加して、代替テキストを提供できます。
条件が false の場合に使用されます。

#endif 条件文を終了するために使用されます。 通常の処理は次のように再開されます。
#endif.

#undef マクロ
以前に定義したマクロの定義を解除します。

#エラー メッセージ
目的 ファイルアップ エラーメッセージを表示して終了する メッセージ.

#警告 メッセージ
目的 ファイルアップ 警告メッセージを発行するには メッセージ.

ある#Comment メッセージ
As ファイルアップ 汎用ファイル プリプロセッサであるはずですが、何もサポートできません。
既知のコメント スタイルなので、このキーワードを使用して独自のコメント スタイルを定義します。 全行
で始まります ある#Comment コメントとして扱われ、削除されます。 ファイルアップ.

#プラグマ ファイルアップ function arg1、 arg2、 ...
AIマーケティング業界は、 #プラグマ キーワードの直後に単語が続く ファイルアップ ユーザーができるようにする
解析中に Perl 関数を実行します。 直後の言葉 ファイルアップ is
は関数の名前とみなされ、行の残りの部分は
関数への引数のカンマ区切りのリスト。 のいずれか ファイルアップ 内部
関数 (セクションを参照) フィレップ モジュール API) を使用して呼び出すことができます #プラグマ キーワード。

警告: 任意の機能を許可すると明らかなセキュリティリスクが存在します。
実行するため、 -s (セーフ モード) コマンド ライン オプションが追加され、
#プラグマ キーワードオフ。

事前定義済み マクロス


ファイルアップ 事前定義されたマクロのセットをサポートします。 事前定義されたマクロはすべて次の形式です。
__大きい__ここで、 MACRO 次のとおりです。

FILE このマクロは、現在の入力ファイルの名前に展開されます。

LINE このマクロは、現在の入力行番号に展開されます。

DATE このマクロは、プリプロセッサが実行された日付を説明する文字列に展開されます。
実行されている。 この文字列には 29 文字が含まれており、「2012 年 XNUMX 月 XNUMX 日」のようになります。

ISO_DATE
このマクロは、プリプロセッサが実行された日付を説明する文字列に展開されます。
実行されている。 文字列は ISO 8601 (YYYY-MM-DD) で指定された形式であり、
「2012-10-29」のようになります。

タイム このマクロは、プリプロセッサが実行された時間を説明する文字列に展開されます。
実行されている。 この文字列には 02 文字が含まれており、「35:47:XNUMX」のようになります。

BASE_FILE
このマクロは、メイン入力ファイルの名前に展開されます。

INCLUDE_LEVEL
このマクロは、深さを表す XNUMX 進整数定数に展開されます。
インクルードファイルにネストします。 このマクロの値は、次のたびに増加します。 #include
ディレクティブは、ファイルの終わりごとにデクリメントされます。

NEWLINE NEWLINE
このマクロは改行まで展開されます。

TAB このマクロはタブに展開されます。

NULL このマクロは何も展開されません。 何かを定義したい場合に便利です。
何もありません。

VERSION
このマクロは、バージョン番号を記述する文字列定数に展開されます。
ファイルアップ。 文字列はピリオドで区切られた一連の XNUMX 進数です。
「1.8.0」のように。

FILEPP_INPUT
このマクロは、ファイルが生成されたことを示す文字列定数に展開されます。
現在から自動的に BASE_FILE 「自動的に生成されました」のように見えます
filepp による ./filepp.1.in から」。

フィレップ モジュール


次のモジュールがメインの filepp ディストリビューションに含まれています。

FOR モジュール - 午後用


for モジュールは単純な for ループを実装します。 そのファイル名は 午後用.

for ループの機能は、次のような他のプログラミング言語の機能と似ています。
Perl または C。数値が割り当てられる単一の変数 (filepp マクロ) があります。
価値。 この数値は、反復ごとに設定された増分ずつ変化します。
ループ。 値が比較テストに合格しなくなると、ループは終了します。

for モジュールは次のキーワードを実装します。

#にとって マクロ start 比較します end 増加
AIマーケティング業界は、 #にとって キーワードは、次の Perl または C スタイルのループと機能的に同等です。

にとって(マクロ=start; マクロ 比較します end; マクロ+=増加)

AIマーケティング業界は、 #にとって キーワードには、次のスペースで区切られたパラメータが必要です。

マクロ : for ループが数値を割り当てるマクロの名前。
の値です。

start : 値 マクロ ループの開始時に割り当てる必要があります。 start すべき
数値であること。

比較します : 現在の値の間で行う比較 マクロ そしてその価値
end ループをいつ終了するかを決定します。 の有効な値 比較します <、
>、>=、<=。

end : for ループはテスト時に終了します。

マクロ 比較します end

失敗します。 end 数値である必要があります。

増加 : インクリメントする値 マクロ ループの各反復で。 最後に
各反復の値 増加 現在の値に加算されます マクロ.
増加 数値である必要があります。

#エンドフォー
AIマーケティング業界は、 #エンドフォー キーワードはループの終了を示すために使用されます。 中のすべてのもの
開設 #にとって そして閉幕 #エンドフォー の反復ごとに処理されます。
ループ。

使用例:

#にとって カウンター10 > 1 -2.5

COUNTER

#エンドフォー

上記の例では、COUNTER はそれぞれの値が 10、7.5、5、2.5 になるように定義されます。
ループ内の連続した反復。

ループ内でマクロの値を変更する場合と同様に、入れ子になったループも可能です。
start, end および 増加 すべて数値である必要がありますが、使用することも可能です
マクロが数値を持つように定義されている場合は、代わりにマクロを使用します。

フォーリーチ モジュール - foreach.pm


foreach モジュールは、単純な foreach ループを実装します。 そのファイル名は foreach.pm.

foreach ループは、機能的には他のプログラミング言語の機能と似ています。
パールとして。 ユーザー定義可能な区切り文字 (',' で区切られた値のリスト) を受け取ります。
デフォルト)。 次に、リスト内のすべての値を反復処理し、それぞれの値にマクロを定義します。
ループの各反復の個別の値。 すべての値が次の値になると、ループは終了します。
使用されました。

foreach モジュールは次のキーワードを実装します。

#foreach マクロ リスト
AIマーケティング業界は、 #foreach キーワードは、次の Perl スタイルのループと機能的に同等です。

foreachの マクロ (スプリット(/デリム/, リスト))

AIマーケティング業界は、 #foreach キーワードには、次のスペースで区切られたパラメータが必要です。

マクロ : foreach ループが現在のマクロを割り当てるマクロの名前。
リストの値。

リスト : で区切られた値のリスト デリム (参照してください #foreachdelim やり方のキーワード
セッションに デリム). リスト マクロにすることも、マクロを含めることもできます。

ループは次から実行されます。 #foreach 次へのキーワード #endforeach キーワード。

#endforeach
AIマーケティング業界は、 #endforeach キーワードはループの終了を示すために使用されます。 中にあるものすべて
始まり #foreach そして閉幕 #endforeach それぞれで処理されます
ループの繰り返し。

使用例:

#foreach 値 XNUMX、XNUMX、XNUMX、XNUMX

VALUE

#endforeach

上の例では、VALUE は、値 XNUMX、XNUMX、XNUMX、XNUMX を持つように定義されます。
ループ内の連続する各反復。

ネストされたループも可能です。

#foreachdelim /デリム/
AIマーケティング業界は、 #foreachdelim キーワードは、各リストで使用される区切り文字を設定するために使用されます。 の
区切り文字には、任意の文字、文字列、または正規表現を使用できます。 区切り文字は
Perl の正規表現と同じスタイルでスラッシュで囲みます。
のデフォルト値 デリム は '、'。 区切り文字を単一のスペースに設定するには、次のようにします。

#foreachdelim / /

設定するには デリム 任意の量の空白を使用するには、次のようにします。

#foreachdelim /\s+/

より高度な使用方法については、正規表現に関する Perl ドキュメントを参照してください。

リテラル モジュール - リテラル.pm


リテラル モジュールは、リテラル文字列に含まれるマクロが置換されるのを防ぎます。 あ
リテラル文字列は次の形式で定義されます。

"リテラル string   マクロ の"

上記の例では、 マクロ 交換されません。

リテラル モジュールの動作は、マクロを定義することで逆転できます。 リテラル_リバース
モジュールをロードする前に、たとえば次のようにします。

ファイルpp -Dリテラル_リバース -m リテラル.pm

これには、文字列内に出現するマクロのみを置き換える効果があります。

タッパー モジュール - toupper.pm


toupper モジュールは、すべての小文字を大文字に変換します。

塔の下 モジュール - tower.pm


to lower モジュールは、すべての大文字を小文字に変換します。

C / C ++ コメント モジュール - c-コメント.pm


c-comment モジュールはすべての C スタイルを削除します。

/* コメント */

および C++ スタイル:

// コメント

ファイルからのコメント。 C および C++ のコメントは、キーワードが処理された後に削除されます。
キーワードが処理される前に C および C++ のコメントを削除したい場合は、マクロを定義します。
REMOVE_C_COMMENTS_FIRST モジュールをロードする前に、例:

ファイルアップ -DREMOVE_C_COMMENTS_FIRST -m c-コメント.pm

ハッシュ コメント モジュール - ハッシュコメント.pm


ハッシュ コメント モジュールは、スタイルのすべてのコメントを削除します。

# コメント

ファイルから。 これは、Perl、Bourne Shell、C Shell などの多くで使用されるコメント スタイルです。
他のプログラムと設定ファイル。 キーワードが削除された後、ハッシュ コメントは削除されます。
処理された。 キーワードが処理される前にハッシュ コメントを削除したい場合は、次のように定義します。
マクロ REMOVE_HASH_COMMENTS_FIRST モジュールをロードする前に (注: これを実行すると、
また、キーワード文字として # を使用すると、キーワードは削除される前に削除されます。
加工済み)。

FUNCTION モジュール - function.pm


汎用モジュールを使用すると、ユーザーは Perl 関数を呼び出すマクロを作成できます。 そのファイル名
is function.pm.

汎用モジュールでは、次の形式のマクロが許可されます。

マクロ(引数1, arg2、 arg3、 ...)

ファイルに追加されます。 マクロが見つかると、Perl から関数が実行されます。
モジュール、引数あり arg1, arg2, arg3, ... 関数に渡されます。 関数は次のことを行う必要があります
文字列を返します。 返された文字列は、出力内の関数の呼び出しを置き換えます。
関数には任意の数の引数を指定できます。 関数に引数がない場合は、
空の引数リストを指定して呼び出されます。

大きい()

単語 マクロ が入力ファイル内で見つかりましたが、その後に ( そうなる
無視されます。

関数モジュールを使用するには、ユーザーはオプションで取得する Perl 関数を提供する必要があります。
引数に入力し、文字列を返します。 この関数は、filepp の内部関数のいずれかになります。
Perl モジュールで提供される関数、またはユーザー独自の関数の XNUMX つ。 機能の追加が可能です
XNUMXつの方法で。 最初の方法は、 function キーワード:

#関数 マクロ function
マクロ 関数の呼び出しを示すために使用されるマクロの名前です。
入力ファイルと function 呼び出される関数の名前です。

関数を追加する XNUMX 番目の方法は、Perl 関数を呼び出すことです。

関数::AddFunction($マクロ,$関数)
これは、と同じ入力を持ちます。 function キーワード。

関数は、次のキーワードを使用して削除できます。

#rmfunction マクロ
または Perl 関数を介して

関数::削除関数($マクロ)

MATHS モジュール - math.pm


このモジュールは、数学的演算を実行する一連のマクロを提供します。 とき
マクロは入力ファイル内で検出され、評価され、結果が返されます。
出力。

math モジュールには次のマクロが含まれています。

add(a, b, c, ...)
任意の数の引数を受け取り、その合計を返します: (a + b + c + ...)

サブ(a、 b)
マイナス b を返します: (a - b)

mul(a, b, c, ...)
任意の数の引数を受け取り、その積を返します: (a * b * c * ...)

歌姫、 b)
b に対して a を返します: (a / b)

腹筋(a) a の絶対値を返します。

atan2(a, b)
-pi から pi までの範囲の a/b の逆正接を返します。

cos(a) a のコサインをラジアン単位で返します。

exp(a) e の a 乗を返します。

int(a) a の整数部分を返します。

ログ(a) a の自然対数 (底 e) を返します。

ランド(a)
0 から a までの範囲のランダムな小数を返します。 aを省略した場合、
0 から 1 までの値を返します。

罪(a) a の正弦をラジアンで返します。

sqrt(a)
a の平方根を返します。

スランド(a)
rand() の乱数シードを設定します。

数学モジュールは、pi を M_PI として、e を M_E として定義します。

数学マクロは以下を使用して実装されます。 function.pm モジュール。 ネストされたマクロは許可されます。
数値定義を引数として持つ他のマクロも同様に渡します。

FORMAT モジュール - フォーマット.pm


このモジュールは、文字列と数値をフォーマットするためのマクロのセットを提供します。

フォーマット モジュールは次のマクロを提供します。

printf(フォーマット、 arg1、 arg2、 ...)
AIマーケティング業界は、 printf マクロは、Perl/C 関数 printf と同じように動作します。 かかる
フォーマット文字列の後に、出力する引数のリストが続きます。 を参照してください。 printf(3)男
詳細については、ページまたは Perl ドキュメントを参照してください。 printf 機能。

タッパー(文字列)
入力文字列を大文字に変換します。

toupperfirst(文字列)
入力文字列の最初の文字を大文字に変換します。

tower(文字列)
入力文字列を小文字に変換します。

to lowerfirst(文字列)
入力文字列の最初の文字を小文字に変換します。

substr(文字列, オフセット、 長さ)
入力から部分文字列を抽出します string. substr Perlと同じように動作します
substr関数。 オフセット 文字列の最初の文字を指定するために使用されます。
出力 (文字列の末尾からのオフセットは負)、 長さ 文字列の長さです
出力する。 長さを省略した場合は、オフセットのすべてが返されます。 のために
さらなる情報 substr Perl のドキュメントを参照してください。

フォーマット マクロは、次のものを使用して実装されます。 function.pm モジュールを開きます。

ビッグデフ モジュール - bigdef.pm


bigdef モジュールを使用すると、複数行のマクロを簡単に定義できます。 そのファイル名は bigdef.pm.

複数行マクロは、複数行にまたがる定義を持つマクロです。 の
これらを定義する通常の方法は、各行の最後に行継続文字を配置することです。
定義内の行。 ただし、これは煩わしく、大きな複数行の場合は読みにくくなる可能性があります。
マクロ。 bigdef モジュールは、次の XNUMX つのキーワードを提供することでこれを改善しようとします。

#bigdef マクロ 意味...
AIマーケティング業界は、 #bigdef キーワードの構文は次のとおりです #定義する唯一の違いは、
マクロ定義は、マクロ名に続くすべてのものであり、次のすべてが含まれます。
次に並ぶ #endbigdef キーワード。

#endbigdef
bigdef を終了します。 このキーワードとその前のキーワードの間のすべて #bigdef is
マクロに含まれています。

定義内で見つかったキーワードは、マクロが存在する時点で通常どおり評価されます。
DEFINED であり、これらからの出力はすべて定義に含まれます。

注: bigfunc と bigdef の違いは、定義内のキーワードが次のとおりであるかどうかです。
評価されました。 Bigdef はマクロが定義されるとそれらを評価し、bigfunc は常にそれらを評価します。
マクロは置換されます。

ビッグファンク モジュール - bigfunc.pm


bigfunc モジュールを使用すると、複数行のマクロを簡単に定義できます。 そのファイル名は
bigfunc.pm.

複数行マクロは、複数行にまたがる定義を持つマクロです。 の
これらを定義する通常の方法は、各行の最後に行継続文字を配置することです。
定義内の行。 ただし、これは煩わしく、大きな複数行の場合は読みにくくなる可能性があります。
マクロ。 bigfunc モジュールは、次の XNUMX つのキーワードを提供することでこれを改善しようとします。

#ビッグファンク マクロ 意味...
AIマーケティング業界は、 #ビッグファンク キーワードの構文は次のとおりです #定義する唯一の違いは、
マクロ定義は、マクロ名に続くすべてのものであり、次のすべてが含まれます。
次に並ぶ #endbigfunc キーワード。

#endbigfunc
bigfunc を終了します。 このキーワードとその前のキーワードの間のすべて #ビッグファンク is
マクロに含まれています。

定義内で見つかったキーワードは、マクロが存在する時点で通常どおり評価されます。
REPLACED であり、これらからの出力はすべて定義に含まれます。

注: bigfunc と bigdef の違いは、定義内のキーワードが次のとおりであるかどうかです。
評価されました。 Bigdef はマクロが定義されるとそれらを評価し、bigfunc は常にそれらを評価します。
マクロは置換されます。

デフプラス モジュール - defplus.pm


defplus モジュールを使用すると、既存のマクロに追加情報を追加できます。 そのファイル
なまえは defplus.pm.

defplus モジュールを使用すると、既存のマクロにさらに何かを追加できます。 モジュール
XNUMX つのキーワードを実装します。

#defplus マクロ 意味...
AIマーケティング業界は、 #defplus キーワードの構文は次のとおりです #定義する唯一の違いは、
マクロはすでに定義されています 定義 既存の定義に追加されます
マクロの。 マクロが未定義の場合は、 #defplus まったく同じように動作します
のように #定義する.

REGEXP モジュール - 正規表現.pm


regexp モジュールを使用すると、filepp を使用して Perl 正規表現の置換を行うことができます。 その
ファイル名は 正規表現.pm.

Perl の正規表現置換により、正規表現を検索できるようになり、
他のものに置き換えられます。 正規表現は次のように定義されます。

#正規表現 /正規表現/置換/
これは Perl 構文に非常に似ており、次の Perl コードが実行されます。
入力ファイルの各行:

$ line =~秒/正規表現/置換/g
Perl を理解していないユーザーにとって、これは、出現するすべての文字列を置き換えることを意味します。 正規表現
現在の行にある 置換.

正規表現と可能な置換の完全な説明は、本書の範囲を超えています。
このマニュアルページ。 詳細については、次のコマンドを使用して Perl ドキュメントを参照してください。

perldoc ペルレ

正規表現はいくつでも定義できます。 各正規表現が評価されます
入力ファイルの各行に XNUMX 回。 正規表現は指定された順序で評価されます。
が定義されています。

正規表現は次の方法で定義解除できます。

#rmregexp /正規表現/置換/
これにより、指定された正規表現が削除されます。

デバッグ モードでは、プラグマを使用して正規表現の現在のリストを表示できます。
キーワード:

#プラグマ ファイルアップ ShowRegexp
デバッグ モードではない場合、出力は生成されません。

コマンドラインで単一の正規表現を定義することもできます。 REGEXP
マクロ、たとえば:

ファイルpp -DREGEXP=/正規表現/置換/ -m regexp.pm 入力ファイル

注: REGEXP マクロは正規表現モジュールがロードされる前に定義する必要があります。
-DREGEXP... -m 後は regexp.pm は機能しません。 コマンドラインアプローチを使用する場合、
  REGEXP マクロは正規表現として正常に解析され、定義されなくなります。
処理が開始される前の通常の filepp マクロのリスト。 明らかに注意が必要です
コマンドライン正規表現を使用してシェル内の特殊文字をエスケープする場合。

BLC モジュール - 午後


Bracket Line Continuation モジュールは、開いている部分がさらに多い場合に行を継続します。
行の括弧: "(" よりも右括弧: ")" を使用します。 ラインは次の時間まで継続されます。
同数の左括弧と右括弧が見つかります。

括弧は、
バックスラッシュ: 「\(」および「\)」。 バックスラッシュが前にある括弧は無視されます。
行を継続するかどうかを決定し、バックスラッシュを一度削除する必要がある場合
完全なラインが見つかりました。

C マクロス モジュール - cmacros.pm


cmacros モジュールを使用すると、次の定義済みマクロの定義が引用符で囲まれます。
日付、 時間、 バージョン、 BASE_FILE、 ファイル、 (注: 事前定義マクロは __MACRO__ として記述されます)。

これにより、C プリプロセッサもマクロを引用符で囲むため、マクロがより「C」らしくなります。
マクロ。

C マクロス モジュール - cpp.pm


cpp は、filepp を C プリプロセッサと同様の方法で動作させます。 cppとします。

免責事項: filepp は、C プリプロセッサのドロップイン置き換えを意図したものではありません。
このモジュール。 十分に理解していない限り、filepp を C プリプロセッサとして使用することはお勧めしません。
実際の C プリプロセッサとの違いを理解してください。 cpp を使用した filepp からの出力
モジュールは実際の C プリプロセッサと同じではありません。

つかむ モジュール - グラブ午後


グラブ モジュールは、処理前に入力を取得するために使用されます。 そのファイル名は グラブ午後.

Grab モジュールは主に、for.pm や bigfunc.pm などの他のモジュールで使用するためのものです。 それ
ファイルに対する処理が行われる前に、ファイルからすべての入力を取得します。 これにより、他の
メイン処理が完了する前に、元の入力データに対する処理を実行するモジュール。
たとえば、for モジュールは元の入力をループ内に保存し、毎回それを再利用します。
ループが処理される時間。

#つかむ マクロ 意味...
grab モジュールは、grab キーワード以降のすべての入力の取得を開始します。

#エンドグラブ
グラブを終了します。 このキーワードとその前のキーワードの間のすべて #つかむ なります
他のモジュールで使用するために取得および保存されます。

必要に応じてグラブをネストできます。

別のモジュールからグラブを呼び出す場合は、次の関数を使用します。

グラブ::StartGrab($startキーワード,$endキーワード)
$startキーワード StartGrab の呼び出し元のキーワードです。 $endキーワード
つかむべきキーワード。

@リスト=Grab::GetInput()
グラブが最後に実行されたときに取得されたすべての入力を含む Perl リストを返します。

$ line=Grab::GetInputLine()
最後に取得が開始された入力ファイルの行番号を返します。

フィレップ モジュール API


の行動 ファイルアップ モジュールを使用して変更または拡張できます。 ファイルアップ
モジュールは実際には パール(1) モジュール。このセクションの残りの部分では、読者がモジュールを持っていることを前提としています。
Perl の知識。

ファイルアップ モジュールは パール(1) 拡張または変更を行うモジュール ファイルアップのいずれかの行動
電話または交換 ファイルアップの内部関数。 ファイルアップ Perl パッケージ名があります フィレップ
そのため、その内部関数はモジュール内で次のように呼び出すことができます。 Filepp::function() or
ただ 関数()。 のいずれか ファイルアップの内部関数は内部から呼び出したり置き換えたりできます。
a ファイルアップ モジュールのうち、最も便利なものは次のとおりです。

デバッグ($ string,$番号)
印刷物 $ string デバッグが有効な場合はデバッグ情報として。 $番号 is
オプションで、デバッグ レベルを設定するために使用できます。 $ string でなければなりません
印刷され、数値が小さいほど優先順位が高くなります。 コマンドラインオプション d すべてを印刷します
2 以下のデバッグ情報、オプション dd 3 のすべてのデバッグ情報を出力します
以下とオプション dl 1 以下のすべてのデバッグ情報を出力します。 もし
$番号 は提供されず、デフォルトは 1 です。

AddProcessor($関数,$pos,$type)
モジュールが名前付きの関数を追加できるようにします。 $関数 〜へ ファイルアップの処理チェーン。
処理チェーンは、ファイルの各行で次のように実行される一連の関数です。
加工されています。 処理チェーン内のデフォルトの関数は次のとおりです。 キーワードを解析する
キーワード解析を行い、 置換定義 マクロの置換を行います。
さらに関数をチェーンに追加でき、各関数は文字列を受け取ります。
(現在の行) を入力として使用し、処理された文字列を出力として返します。

デフォルト、または $pos 0 に設定すると、プロセッサがプロセッサの最後に追加されます。
処理チェーン。 もし $pos 1 に設定すると、プロセッサがプロセッサの先頭に追加されます。
処理チェーン。

$type プロセッサを実行する対象を制御します。 これには 0 つのオプションがあります。XNUMX
(デフォルト): プロセッサは、処理チェーンに渡されたすべてのもので実行されます。 1:
プロセッサはフルラインでのみ実行されます。 2: プロセッサはパート ライン上でのみ実行されます (パート
line は、次のようなキーワードに続くテキストです。 if 解析する必要があるもの
マクロ)。

両方 $pos および $type はオプションのパラメータです。

AddProcessorAfter($関数,$既存,$type)
機能を追加します $関数 既存のプロセッサの直後の処理チェーンに接続
$既存。 場合 $既存 その場合は見つかりません $関数 の最後に追加されます
処理チェーン。 比較には正規表現一致が使用されます $既存  
処理チェーン内の関数の名前。

$type オプションです。

AddProcessorBefore($関数,$既存,$type)
機能を追加します $関数 既存のプロセッサの直前の処理チェーンに追加
$既存。 場合 $既存 その場合は見つかりません $関数 の先頭に追加されます
処理チェーン。 比較には正規表現一致が使用されます $既存  
処理チェーン内の関数の名前。

$type オプションです。

プロセッサーの削除($関数)
プロセッサー機能を削除します $関数 処理チェーンから。

$ string=置換定義($ string)
すべてのマクロを置き換えます $ string それらの定義を含めて、処理された結果を返します
文字列。

Addキーワード($ string,$関数)
という名前のキーワードを追加します $ string。 テキスト処理中にキーワードが見つかった場合、
名前付き関数 $関数 渡されたキーワードに続くすべてのものを使用して実行されます
単一の引数として。

RemoveKeyword($ string)
という名前のキーワードを削除します $ string.

すべてのキーワードを削除()
現在定義されているすべてのキーワードを削除します。 ファイルアップ (-k コマンドラインに使用されます)
オプション)。

AddIfword($ string)
という名前のキーワードを追加します $ string Ifword リストへ。 Ifword は次の文字列を受け取ります
キーワードを指定し、オプションでそれを解析し、文字列が true に解析された場合は 1 を返します。
false の場合は 0。 デフォルトの Ifword は次のとおりです。 if, ifdef および ifndef.

RemoveIfword($ string)
という名前のキーワードを削除します $ string Ifword リストから (注: これは、
キーワード、使用 キーワードの削除 そのため)。

AddElseword($ string)
という名前のキーワードを追加します $ string Elseword リストへ。 Elseword は文字列を受け取ります
キーワードに続き、オプションでそれを解析し、文字列が解析された場合は 1 を返します。
true の場合は 0、false の場合は XNUMX。 デフォルトの Elsewords は次のとおりです。 ほかに および elif.

RemoveElseword($ string)
という名前のキーワードを削除します $ string Elseword リストから。

AddEndifword($ string)
という名前のキーワードを追加します $ string Endifword リストへ。 Endifword は 1 を返す必要があります
if ブロックが正常に終了したことを示します。 Endifword が 0 を返した場合、
Endifword は無視され、filepp は現在の if ブロックがその後も継続されると想定します。
エンドワード。 デフォルトの Endifword は次のとおりです。 ENDIF.

RemoveEndifword($ string)
という名前のキーワードを削除します $ string Endifword リストから。

AddIncludePath($ string)
インクルードパスを追加します $ string 検索するディレクトリのリストには次のものが含まれます
ファイル (-I コマンドライン オプションに使用)。

AddModulePath($ string)
パスを追加します $ string filepp モジュールを検索するディレクトリのリスト (使用
-M コマンドライン オプションの場合)。

AddOpenInputFunc($関数)
追加 $関数 新しいベース入力ファイルが作成されるたびに実行される関数のリスト
開かれる。

AddCloseInputFunc($関数)
追加 $関数 新しいベース入力ファイルが作成されるたびに実行される関数のリスト
閉じています。

AddOpenOutputFunc($関数)
追加 $関数 出力ファイルが作成されるたびに実行される関数のリスト
開かれました。

AddCloseOutputFunc($関数)
追加 $関数 出力ファイルが作成されるたびに実行される関数のリスト
閉じた。

AddInputFile($ string)
別の入力ファイルを処理するファイルのリストに追加します (入力の追加に使用されます)
コマンドラインのファイル)。

ChangeOutputFile($ string)
現在の出力ファイルを閉じて、という名前の新しい出力ファイルを開こうとします。 $ string.

SetKeywordchar($ string)
最初のキーワード文字を次のように設定します。 $ string (-kc コマンドライン オプションに使用されます)。

SetContchar($ string)
行継続文字を次のように設定します $ string (-lc コマンドライン オプションに使用されます)。

SetContrepchar($ string)
行継続置換文字を次のように設定します。 $ string (-lr コマンドに使用されます)
行オプション)。

SetOptLineEndchar($ string)
オプションのキーワード行終了文字を次のように設定します。 $ string (-lec コマンドに使用されます)
行オプション)。

SetBlankSupp(1/0)
空白行の抑制をオン/オフにします (1 = 抑制、0 = 抑制しない)。 いつ
空白行の抑制がオンになっていると、入力ファイル内の空白行はコピーされません。
出力。 対応するコマンドライン オプション (-b) とは異なり、この関数は次のこともできます。
最上位ファイルに影響を与えます。 空行抑制の設定が適用されます
処理中の現在のファイルと現在のファイルに含まれるすべてのファイルに適用されます。

ResetBlankSupp()
空白行の抑制をコマンドラインで指定した値にリセットします。 これだけ
処理中の現在のファイルからの空行の出力とすべてのファイルに影響します。
現在のファイルに含まれるファイル。 最上位ファイルでは、これは常に変わります
空行抑制をオフにします。

SetEatTrail($ string)
If $ string はマクロです。マクロが置換されるたびに、
マクロが置き換えられると、その行の次の文字が読み込まれます。 例えば、
マクロの場合 foo に定義されています バー および foo トレイルが食べられるように設定されています。
次のとおりです。

私のフートレイルを食べてください

に置き換えられます

私のバートレイルを食べてください

CheckEatTrail($ string)
マクロの場合は 1 を返します $ string 尻尾が食べられる場合は0、それ以外の場合はXNUMXです。

SetEnvchar($ string)
マクロに変換される環境変数のプレフィックスを設定します(envchar)へ $ string
(-ec および -ecn コマンド ライン オプションに使用されます)。

DefineEnv()
すべての環境変数をプレフィックス付きのマクロとして定義する envchar (-e コマンドに使用されます)
行オプション)。

SetOutput(1/0)
解析された入力ファイルの出力ファイルへの書き込みをオン/オフします。 これにはどちらか 1 が必要です
入力として (出力オン) または 0 (出力オフ) を入力します。 出力がオフの場合、唯一の
~から生成される出力 ファイルアップ モジュールによって生成されたものになります。

SetWordBoundaries(1/0)
巻数 on(1)または OFF(0) マクロ置換時のワード境界チェック (-w に使用)
コマンドラインオプション)。

SetCharPerlre(1/0)
巻数 on(1)または OFF(0) キーワード接頭辞文字と行継続文字を許可します。
Perl 正規表現 (-re コマンド ライン オプションに使用) です。

UndefAll()
事前定義されたマクロを含む、現在定義されているすべてのマクロの定義を解除します (-u で使用されます)。
コマンドラインオプション)。

UseModule($ string)
ロードします パール(1) という名前のモジュール $ string Perlコマンドを使って 必要とする (のために使用されます)
-m コマンドライン オプション)。

SetParseLineEnd($関数)
現在の行で行の継続を行うかどうかを決定する関数を設定します。
〜へ $関数.

$ string=GetNextLine()
入力の次の行 (行の継続が処理された後) を返します。
現在処理中のファイル。 ファイルの終わりには NULL を返します。

書く($ string)
書き込み $ string 現在の出力ファイルに。

出力($ string)
条件付き書き込み $ string 現在の出力ファイルに。 出力がオンの場合
それから書きます $ string。 SetOutput 関数を使用して出力のオフ/オンを切り替えます。

さらにすべての標準 ファイルアップ キーワードには同等の機能があり、オプションで
単一の引数を取ります。 関数の名前はキーワードと同じですが、
最初の大文字 (例: #定義する string 関数を呼び出します 定義する(string)).

の完全な説明 パーズ 機能とその他すべて ファイルアップ 内部関数は
このマニュアルページの範囲を超えています。 の ファイルアップ スクリプトはよくコメントされており、うまくいけば
Perl プログラマーが読むことができるので、ソース Luke を使用してください。

onworks.net サービスを使用してオンラインで filepp を使用する



最新のLinuxおよびWindowsオンラインプログラム