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件)
- 最新から表示
- 回答順に表示
No.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,秀丸といったエディタは、マクロ機能が強力で、それ自体が一つの言語として機能するくらいです。
なので、これを前者の「外部コマンド」の変わりに利用するものです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Microsoft ASP C#からvbsを実行したい 5 2022/11/24 17:31
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 入力待ちをして、受け取った正の整数が表す行数だけ既存 4 2022/07/05 10:12
- その他(プログラミング・Web制作) ファイル名の一部をbatで変更したい batファイルを使って、以下のようにファイル名の一部を変更した 3 2023/02/21 20:09
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- その他(プログラミング・Web制作) テキストデータ変換(プログラミング、linux、python) 8 2023/08/08 16:39
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
” OS ビルド ” の意味が分か...
-
ILSpyで、デコンパイルできない。
-
VBAを何回も作り直して、容量が...
-
「fatal error C1189」を回避す...
-
1 つ以上の複数回定義されてい...
-
エクセルVBAではRound...
-
GetStockObject()で未定義エラ...
-
C言語でヘッダファイルにグロー...
-
Makefile作成時の拡張子.oとは?
-
DLLの明示的な読み込みの方法
-
DllEntryPointが呼び出されてい...
-
[c++] <pthread.h>がinclude で...
-
MO, PO, POT, ファイルの開き方...
-
C++/CLIで、アンマネージC++のD...
-
Cygwin boost
-
【VC++6.0(MFC)】警告「LINK : ...
-
C++Builder XEのコンパイル&実行
-
nEditというテキストエディタを...
-
C++コンパイル時に『 C1083: in...
-
RPGでプログラムからソースファ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAを何回も作り直して、容量が...
-
<math.h>があるのにsqrtが・...
-
Makefile作成時の拡張子.oとは?
-
C言語でヘッダファイルにグロー...
-
エクセルVBAではRound...
-
1 つ以上の複数回定義されてい...
-
「fatal error C1189」を回避す...
-
ILSpyで、デコンパイルできない。
-
” OS ビルド ” の意味が分か...
-
外部シンボル "_main"は未解決です
-
セミコロンについて
-
C++コンパイル時に『 C1083: in...
-
マクロ コンパイルがグレーバック
-
[c++] <pthread.h>がinclude で...
-
コンパイルエラー:ユーザ定義...
-
ビルドとリビルドの違いを教え...
-
クリティカルエラー Expressio...
-
sys/types.hの必要性について
-
【VC++6.0(MFC)】警告「LINK : ...
-
PRO*C コンパイルエラー
おすすめ情報