[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[mgp-users-jp 00440] Re: bugs (?) in mgp2ps
- To: mgp-users-jp@mew.org
- Subject: [mgp-users-jp 00440] Re: bugs (?) in mgp2ps
- From: KAWABATA Hideyuki <kawabata@arch.ce.hiroshima-cu.ac.jp>
- Date: Tue, 9 Feb 1999 18:35:34 +0900
- Cc: kawabata@arch.ce.hiroshima-cu.ac.jp
- In-reply-to: Your message of "Mon, 08 Feb 1999 21:23:25 JST." <>
- Posted: Tue, 09 Feb 1999 18:35:32 +0900
- Reply-to: mgp-users-jp@mew.org
自己フォローしておきます。
>>>>> KAWABATA Hideyuki <kawabata@arch.ce.hiroshima-cu.ac.jp> writes:
> 当方、SPARC マシンの上の Solaris 2.4 あるいは Solaris 2.5.1 で、
> gcc 2.7.2.2, bison 1.22, flex 2.4.6
> でコンパイルしてみたのですが、いずれにおいても、
> mgp2ps の出力(標準出力)の先頭に、数十個のヌル文字が入るのです。
ちなみに mgp のバージョンは 'mgp version 1.04a (980906)' です。
> 少しソースを見たところ、
> parse.c 内の read_rc() や read_file() における yyparse() の
> 呼び出しの際に、ときどきヌル文字が出るようです。
どうも、ヌル文字は yylex() の中のデフォルトのアクションで
出力されているようです。ので、
とりあえず対症療法として、以下の2つの解決策が考えられます。
どちらにしろ、根本的な解決にはなっていないかもしれませんが、
とりあえず報告しておきます。御参考まで。
______________________________________________________
川端@情報工.広島市大 <kawabata@ce.hiroshima-cu.ac.jp>
●方法1:scanner.l の ECHO を無理矢理定義しておく。
(flex を使った場合、ECHO が fwrite() になり、ヌル文字でも出力するので)
*** scanner.l.orig Fri Sep 4 18:00:43 1998
--- scanner.l Tue Feb 9 18:22:33 1999
***************
*** 61,66 ****
--- 61,68 ----
static int stoi __P((char *));
static inline int xdtoi __P((int));
+ #define ECHO (void) fputs(yytext, yyout)
+
#ifdef FLEX_SCANNER
#define YY_NO_UNPUT
#undef YY_INPUT
●方法2:scanner.l で、パターンマッチングから漏れたものを無視する。
(つまり、ヌル文字などは無視させる)
*** scanner.l.orig Fri Sep 4 18:00:43 1998
--- scanner.l Tue Feb 9 18:24:38 1999
***************
*** 161,166 ****
--- 161,167 ----
yylval.s[strlen(yylval.s) - 1] = '\0';
return STR;
}
+ . ;
%%
void