2005-01-01から1年間の記事一覧

PL/SQL に対応する

PL/SQL用に処理を変更しなければいけないのは、 ・「--」〜は単一行コメント ・「'」〜「'」は文字列 ・「"」〜「"」は識別子 などである。 SourceToHtml16.plx use strict; use Getopt::Std; # オプション解析用 #****************************************…

Delphi に対応する

Delphi用に処理を変更しなければいけないのは、 ・「(*」〜「*)」は複数行コメント ・「{」〜「}」は複数行コメント ・「'」〜「'」は文字列 ・「{$」〜「}」はコンパイラ指令 ・8進表記はない ・16進表記は「$」ではじまる ・整数定数を「#」〜であらわす (…

VisualBasic に対応する

VisualBasic用に処理を変更しなければいけないのは、 ・「'」以降は単一行コメント ・複数行コメントはない ・「"」〜「"」は文字列 ・「#」〜「#」は日付 ・「[」〜「]」は識別子 ・8進表記は「&O」ではじまる ・16進表記は「&H」ではじまる ・「型文字」と…

他言語に対応する (VC++, C++Builder, Java, JavaScript)

これまで、「VC#」のソースを HTML化することを考えてきたが、 @"〜"形式の「逐語的文字列」を除けば、 「VC++」「C++Builder」「Java」「JavaScript」などは全て、 予約語の定義ファイルを変えるだけで対応できる。 SourceToHtml13.plx use strict; use Get…

Token の種類を判定する (ディレクティブ)

#region、#if などのプリプロセッサディレクティブの処理を追加する。 少し乱暴だが、「#」から始まる文字列を「ディレクティブ」とみなして まず問題ないだろう。 SourceToHtml12.plx use strict; #******************************************************…

Token の種類を判定する (識別子・予約語)

以前、英数字と「_」からなる文字列を「識別子」と定義したが、 今回は少し改良して、「識別子」のうち、あらかじめ「予約語」として 登録されているものを「予約語」と定義し、それ以外を「識別子」と定義する。 SourceToHtml11.plx use strict; #*********…

Token の種類を判定する (演算子・区切り記号)

前回は、「+」「-」「/」「*」「=」など、記号全てを「区切り記号」として 定義したが、今回は少し改良して、あらかじめ「演算子」として登録されているものを 「演算子」として扱い、それ以外の記号を「区切り記号」とする。 SourceToHtml10.plx use strict…

Token の種類を判定する (区切り記号)

今回は、「区切り記号」の処理を追加する。 「区切り記号」の定義は、「+」「-」「/」「*」「=」などの記号 全てとする。 SourceToHtml9.plx use strict; #****************************************************************************** # C# → HTML 変…

Token の種類を判定する (数字・識別子)

今回は、数字・識別子を認識できるようにする。「数字」は、「数字から始まり、数字か『.』からなる文字列」、と定義したいところだが、 16進表記だと、「ABCDEFXabcdefx」の英字が使用されるし、 数値リテラルとして「FDMULfdmul」の英字も使用できる。 厳…

Token の種類を判定する (文字・文字列)

前回は、少し本格的に、 「/*」から 「*/」までと、「//」から「\n」までを「コメント」と判定できるようにしたが、 文字列中の、「/*」、 「*/」、 「//」 もコメントの開始・終了と認識してしまう。そこで今回は、文字・文字列を認識する処理を追加して、 …

Token の種類を判定する (コメント)

前回は仮に、英数字を「予約語」としてあつかったが、 今回は実際に、「/*」 から 「*/」 までと、「//」から「\n」までを「コメント」として扱う。 それ以外は、「その他」として扱う。 SourceToHtml6.plx use strict; #**********************************…

トークンごとに処理する

まずは、練習として、英数字からなる文字列を予約語として扱ってみる。 SourceToHtml5.plx # ヘッダ部 fileCopy(".\\Template\\header.txt");# ソース部の変換 putLine($line) while ($line = getLine());# フッタ部 fileCopy(".\\Template\\footer.txt");# …

詳細を隠す

関数を作成して、詳細な処理を関数内に隠す。 SourceToHtml4.plx # ヘッダ部のコピー fileCopy(".\\Template\\header.txt");# ソース部の変換 while ($_ = getLine()) { putLine($_); }# フッタ部のコピー fileCopy(".\\Template\\footer.txt");# ファイルの…

, &, |, (, ) を置換

<, >, &, |, (, ) を置換する。 SourceToHtml3.plx #ヘッダ部 open(F, ".\\Template\\header.txt") || die "open: $!"; while () { print; } close(F);#ソース部 while (<>) { while(($pos = index($_, "\t")) >= 0) #TABがあるか { $num = 4 - ($pos % 4); …

TABを空白に変換

TABを、適当な数の空白に変換する。 SourceToHtml2.plx #ヘッダ部 open(F, ".\\Template\\header.txt") || die "open: $!"; while () { print; } close(F);#ソース部 while (<>) { while(($pos = index($_, "\t")) >= 0) #TABがあるか { $num = 4 - ($pos % …

ファイルの連結

続いて、ソースファイルとテンプレートファイルとを連結して出力する。 SourceToHtml1.plx #ヘッダ部 open(F, ".\\Template\\header.txt") || die "open: $!"; while () { print; } close(F);#ソース部 while (<>) { print; }#フッタ部 open(F, ".\\Template…

ファイルのCOPY

今日から、Perl に挑戦。 まずは、単純な File の Copy から。 copy.plx while (<>) { print; } 実行形式 C:\Perl5>copy.plx input.txt > output.txt

文脈情報 クラス

これまでC# で作成してきた「SourceToHTML」を、C++Builder に焼きなおしてみます。 TokenContext.h //******************************************************************************************************* // 文脈情報クラス //*******************…

トークン読み込み用クラス (T-SQL用)

これまでC# で作成してきた「SourceToHTML」を、C++Builder に焼きなおしてみます。 TokenReaderTsql.h //******************************************************************************************************* // トークンごとに 文字列と その種類…

トークン読み込み用クラス (PL/SQL用)

これまでC# で作成してきた「SourceToHTML」を、C++Builder に焼きなおしてみます。 TokenReaderPlsql.h //******************************************************************************************************* // トークンごとに 文字列と その種類…

トークン読み込み用クラス (Delphi用)

これまでC# で作成してきた「SourceToHTML」を、C++Builder に焼きなおしてみます。 TokenReaderDelphi.h //******************************************************************************************************* // トークンごとに 文字列と その種…

トークン読み込み用クラス (VisualBasic用)

これまでC# で作成してきた「SourceToHTML」を、C++Builder に焼きなおしてみます。 TokenReaderVB.h //******************************************************************************************************* // トークンごとに 文字列と その種類を…

トークン読み込み用クラス (C#用)

これまでC# で作成してきた「SourceToHTML」を、C++Builder に焼きなおしてみます。 TokenReaderCSharp.h //******************************************************************************************************* // トークンごとに 文字列と その種…

トークン読み込み用クラス (大文字・小文字を意識しない 言語用)

これまでC# で作成してきた「SourceToHTML」を、C++Builder に焼きなおしてみます。 TokenReaderNoCase.h //******************************************************************************************************* // トークンごとに 文字列と その種…

トークン読み込み用クラス (大文字・小文字を意識する 言語用)

これまでC# で作成してきた「SourceToHTML」を、C++Builder に焼きなおしてみます。 TokenReaderCase.h //******************************************************************************************************* // トークンごとに 文字列と その種類…

トークン読み込み用クラス (共通)

これまでC# で作成してきた「SourceToHTML」を、C++Builder に焼きなおしてみます。 TokenReaderCommon.h //******************************************************************************************************* // トークンごとに 文字列と その種…

トークン読み込み用クラス

これまでC# で作成してきた「SourceToHTML」を、C++Builder に焼きなおしてみます。 TokenReader.h //******************************************************************************************************* // トークンごとに その種類と、内容を返す…

トークン書き込み用クラス

これまでC# で作成してきた「SourceToHTML」を、C++Builder に焼きなおしてみます。 TokenWriter.h //******************************************************************************************************* // トークンごとに 種類に応じた色指定タグ…

トークン クラス

これまでC# で作成してきた「SourceToHTML」を、C++Builder に焼きなおしてみます。 Token.h //******************************************************************************************************* // トークン情報クラス //**********************…

テキストファイル書き込み用クラス

これまでC# で作成してきた「SourceToHTML」を、C++Builder に焼きなおしてみます。 TextWriter.h //*************************************************************************** // テキストファイル 書き込み用クラス //******************************…