[1756] Re:DIKSAM_book_0_4のLinuxでの実行結果について (その2)
投稿者:(ぱ)こと管理人
2011/12/19 12:56:43
すみません、回答遅れております。
その場所はencがSJISであるかどうかで動きが変わるのですが、それを決めているのはMakefileの-DSHIFT_JIS_SOURCEとかです。
今は携帯で辛いので詳細は今夜に。
>先日は、Solaris+SJISコードで動作させる為の環境構築の方法を教えて頂いてありがとうございました。
>やっとDIKSAMが、マルチバイト無しの正常系が動作し始めました。
>まだ、マルチバイト無しのエラー系は完璧には動作していません。
>#####################
>int a=0;
>
>if(a==0){
> println("CCCC");
>#####################
>このソースと全く同じではありませんが、「}なし」のエラーを狙いテストしますが、
>EUC版は、「文法エラー($(token)付近)」 が出力されます。
>自分のSJIS環境では、「不正なマルチバイト文字です。」と
>なってしまいます。
>
>そこで、つっかえている所がマルチバイトの読込み辺りだと当たりがつきます。
>
>また、自分の構築している環境では、マルチバイトが処理出来ていません。
>字句解析(lex)でのマルチバイトの読込みがまだうまく出来ていないからだと思っています。
>
>ちゃんと調べてもいないのに質問して申し訳ありませんが、教えてください。
>以下の箇所は、EUC版もWINDOWS版(SJIS)も違いがありませんが、コード系関係なく同じで構わないのでしょうか?
>自分の構築したい環境でなにか考慮すべき所はありませんでしょうか?
>
><STRING_LITERAL_STATE>[\x81-\x9f\xe0-\xef][\x40-\x7e\x80-\xfc] {
> dkc_add_string_literal(yytext[0]);
> dkc_add_string_literal(yytext[1]);
>}
><STRING_LITERAL_STATE>. {
> Encoding enc = dkc_get_current_compiler()->source_encoding;
> dkc_add_string_literal(yytext[0]);
> if (enc == SHIFT_JIS_ENCODING
> && ((unsigned char*)yytext)[0] >= 0x81
> && ((unsigned char*)yytext)[0] <= 0x9e) {
> BEGIN SHIFT_JIS_2ND_CHAR;
> }
>}
><SHIFT_JIS_2ND_CHAR>. {
> dkc_add_string_literal(yytext[0]);
> BEGIN STRING_LITERAL_STATE;
>}
>