これ何て呼びますか

nEditというテキストエディタを改造して、自分用のテキストエディタを作ろうと考えているのですが…。

環境
OS:Windows XP
言語:C言語(bcc55)

http://www.shiftup.net/ (シフトアップネット)
というサイトの
http://www.shiftup.jpn.org/flash/game2/ (ツクアド2)
というコンテンツがあります。
子供でも簡単にブラウザ上でプログラミングができ、なお且つ簡単にゲームを公開できると言うコンテンツです。
ただ、その簡単さ故に大した機能もありません。
ファイルの分割ができない、関数と言う概念がない、マクロ定義もできない…。
そこで、ツクアド2用のテキストエディタを作成し、追加命令を作ろうと思います。
「ファイルを分割して管理し、結合する」
main.txt func0.txt , func1.txt , func2.txt
という4つのファイルがあったとして、
main.txtに
#include "func0.txt" (ツクアド2の言語使用ではセミコロンはコメント化なので;は使えない)
#include "func1.txt"
#include "func2.txt"
と記述しコンパイルすると、新たにウィンドウが開いて3つのファイルを結合後のファイルを表示する。
「#enum」
#enum {A,B,C}
と記述しコンパイルすると
A = 0
B = 1
C = 2
に変換する

などを実装したテキストエディタを作りたいです。
1からテキストエディタを作成するのにはあまりにも無知なのでオープンソースのnEditをダウンロードしてきました。
rcファイルに、コンパイル用のメニューを追加して、メッセージを受け取るところまでは作りました。
で、メッセージを受け取った後どうすればいいのかわからないんです。
正規表現を使って置換しようと思ったのですが、C言語って正規表現サポートしていないみたいです…。
そこでregex.hというライブラリを探してきて、使おうと思ったら、コンパイルエラーがでてしまいました。
どうやらstream_iteratorヘッダのtemplateという文が原因のようです。
で、よくソースを見てみるとC++のソースでしたorz
.cでコンパイルできるわけもないので、.cppにファイルを変換してコンパイル…(。
したら今度はnEdit.cが驚くほど大量のエラーを履きました(C++はCの上位互換程度にしか考えてませんでしたが上手くいきませんでした。。)
流石に他人が書いたコードをcpp用にデバッグするのは厳しいです。。
なんとかする方法はないでしょうか。

他にC言語で正規表現を使えるようにする方法はありますか?
それとも正規表現を使わなくても希望の動作が可能な方法はありますか?

A 回答 (1件)

nEditとはこちらのことでしょうか?


http://www.nedit.org/
もしそうなら、そもそも素のWindowsでは動作しません
http://www.nedit.org/platforms.php
にあるように、Unix系OSで使用されてるGUI環境であるX Window Systemが必要です。
Windowsで動作させるには、Windows用に移植されたX Window System(と、それ用プログラムをコンパイルできる環境)が必要です。

また、どのような操作を考えているかわかりませんが、
よくある総合開発環境のように、ボタンを押したら、現在開いてるファイルをコンパイル、というものなら
・「現在開いているファイル」の状態(ファイル名、保存されているかどうか等)を知る方法
・そこから、内容を取り出す方法
・新しいウィンドウを開いて、その内容を変更する方法
といったことは最低限必要でしょう。

regex.hを追加しても、できることは、regex.hで宣言された関数等のC++のプログラム中での使用であって、neditに正規表現機能が追加されるわけでもありません。

「流石に他人が書いたコードをcpp用にデバッグするのは厳しいです。」とありますが、それが必要です。



こういうコンパイル(というか変換)の常套手段は
・外部のコマンドを利用する。必要ならば、その結果をエディタで取り込む
・強力なマクロ機能が使えるテキストエディタなら、マクロでプログラムする
です。

前者は、Visual Studio,Eclipseと言った総合開発環境でも採られている方法です。
VIsual Studioでは、ビルドを実行すると、各コンパイラに処理を任せます。エディタ部では、その結果を待つだけです。

今回の場合、Cで外部コマンドを作成してもよいのですが、 Perl.Python,Rubyといった文字列処理が得意なスクリプト言語や、Cプリプロセッサ,m4といったマクロ処理専門のプログラムを利用するのがよいと思います。
http://ja.wikipedia.org/wiki/M4_%28%E3%83%97%E3% …


後者は、emacs,xyzzy,秀丸といったエディタは、マクロ機能が強力で、それ自体が一つの言語として機能するくらいです。
なので、これを前者の「外部コマンド」の変わりに利用するものです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!