OneLang32/OneLang32Console(0, 0, 0, 6/Nishi-Funabashi #6) -デバッグ時のコマンドライン引数対応. etc...

デバッグ時のコマンドライン引数対応するのと、ワイド文字への対応を実装した。

プロパティでコマンドライン引数を指定
プロパティでコマンドライン引数を指定

プロパティでコマンドライン引数を指定して、作業ディレクトリも暫定でセットして、これでデバッガからもtest.1が読めるようにした。

リリースビルド
リリースビルド

リリースビルドも同様に。

これはいいとして、メインはワイド文字対応。

LexicalAnalyzer.cppで、

コマンドプロンプトはワイド文字が苦手なので、ソースのコメントなどにワイド文字があっても大丈夫なように、そもそもソースそのものは出力しない。

読み込まれるテキストはCTextFileクラスによって、UTF16のワイド文字に変換されている。
その上で、0xffを超えれば、その文字はワイド文字。
トークンが空なら、ワイド文字から始まるトークンなので、先頭に"<WCS>"と付ける。
今回はそうでない場合でも、例えば、"aあ”のようにアルファベットから始まって、ワイド文字に来た場合は、先頭を見て、そうであれば、先頭に"<WCS>"を付ける。
そして、この2つのパターンの場合、トークンを連結する。
"aあaあ"の場合、2つ目の"あ"の時、トークンは空ではないし、先頭は"<WCS>"の"<"になっているはずなので、二重に"<WCS>"を付けてしまうことはない。

m_vectstrTokenListの中からfindで、"<WCS>"があるかを探し、あった場合は、"<WCS>"とだけ出力して、内容は出力しない。
それ以外は出力する。
これでコンソール出力が途中で切れたりしない。

今回から、しばらくは、C言語の"Hello, world!"をいかにOneLang風に削っていくかを試していくので、test.1は、

C言語の"Hello, world!"プログラムにした。
("/* aあaあ */"という一応先程のケースのテストコメントも入れている。)

実行すると、

argv[1] = test.1
CLexicalAnalyzer::Analyze!
----- start -----
----- end -----
/
*
<Space>
<WCS>
<Space>
*
/
<CR>
<LF>
#
include
<Space>
<
stdio
.
h
>
<Space>
/
*
<Space>
<WCS>
<Space>
*
/
<CR>
<LF>
/
*
<Space>
<WCS>
<Space>
*
/
<CR>
<LF>
/
*
<Space>
<WCS>
<Space>
*
/
<CR>
<LF>
int
<Space>
main
(
void
)
{
<Space>
/
*
<Space>
<WCS>
.
<Space>
*
/
<CR>
<LF>
<CR>
<LF>
<Space>
<Space>
/
*
<Space>
<WCS>
<Space>
*
/
<CR>
<LF>
<Space>
<Space>
printf
(
"
Hello
,
<Space>
world
!
\
n
"
)
;
<Space>
/
*
<Space>
<WCS>
"
Hello
,
<Space>
world
!
"
<WCS>
.
<Space>
*
/
<CR>
<LF>
<CR>
<LF>
<Space>
<Space>
/
*
<Space>
<WCS>
<Space>
*
/
<CR>
<LF>
<Space>
<Space>
return
<Space>
0
;
<Space>
/
*
<Space>
<WCS>
0
<WCS>
.
<Space>
*
/
<CR>
<LF>
<CR>
<LF>
}
続行するには何かキーを押してください . . .

このように、本来、ワイド文字が出力される部分には、"<WCS>"が出力されている。

-デバッグ時のコマンドライン引数対応. · bg1bgst333/OneLang32@e6f7aa5 · GitHub