Conference Room SAD
[thread display] [new arrival display] [word search] [past log] [管理用]

Subject Re^3: SAD on MacOS 10.7.3
Date: 2012/05/06(Sun) 13:29:42
ContributorAkio Morita

> > > oldsad-snapshot-2012-04-09.tar.gz - (1)
> > > oldsad-V1.0.10.5a.tar.gz - (2)
> > > oldsad-amorita-snapshot-3995.tar.gz -(3)
>
> > * 正常な処理系を構成する SAD source codeを問題があったターゲット環境上で makeして結果がどうなるか
> > * 正常な処理系の実行環境で、問題があった SAD source codeを makeして結果がどうなるか
>
> 以前の『正常な処理系』と環境は、oldsad-1.0.8.20.5b と Mac OS 10.5 でした。
>
> 再度、oldsad-snapshot-2012-04-09 で試したところ以下のエラーを得ていたことがわかりました。
> QEF=( L=LQA/2.0, K1=KQEF )! APERTURE=RQA
> LALR(1) parser: syntax error
> QED=( L=LQA/2.0, K1=KQED )! APERTURE=RQA
> LALR(1) parser: syntax error
> ....
> したがって、sad入力ファイル中の , をスペースに交換すると上のsyntax errorがなくなり、正常な結果が得られるようになりました。 ただし、使用していた入力のSAD-scriptは以前のものと同じです。また、acsad5.kek.jp上でもsyntax errorは出ていません。
>
既に、acsad5つまり Compaq Tru64上の SADの保守は打ちきられています

> oldsad-amorita-snapshot-3995 も試しましたが、この場合、結果は改善されませんでした。別の原因のようです。
>
> とりあえず、syntax errorを無くすようにscriptを変え、oldsad-snapshot-2012-04-09 を使用し、問題なくsadを利用できるようになりました。
>
私の個人的見解では、古いSADの実装の曖昧さに起因する非互換性です

MAIN levelの構文解析器の実装で、パラメータ部の部分式解析器を YACCで生成している(calc.y)ですが、
昔の実装は 部分式の評価は必ず文法エラーになっていました(YACC上で定義している 部分式の文法)
で、ある時点から後続する字句が次のパラメータ式あるいは パラメータブロックの終了記号の場合に受理、
それ以外は拒否となるように部分式文法の定義を修正しています(2008/03/21 Revision 1.4)
もっとも、現時点でも正しく文脈依存性が実装されていません
(地の文に現れる代入式と構文解析器を共有しているため `;'が終端記号になり得る)

一貫した文法定義自体が存在しない&構文解析器にも不具合多数なので、
文法的な解釈とSADの実行系の解釈が一致しない事例もそれなりにあります

> 報告した"X Error of failed request: BadValue (integer parameter out of range for operation)"は、sad.confで、TCLTK_FONT_SYSTEM=Xlib|Xftを指定したためです。
> これを指定せず、USE_TCLTK=YES の場合だけとすると、リンク時に、
> Undefined symbols for architecture x86_64:
> "_FcCharSetHasChar", referenced from:
> _GetFont in tkUnixRFont.o
> ....
> ld: symbol(s) not found for architecture x86_64
> collect2: ld returned 1 exit status
> make[3]: *** [libtk8.5.dylib] Error 1
> make[2]: *** [/Users/tauchi/oldsad-snapshot-2012-04-09/obj/i386-Darwin11/tk8.5.10/.build_done] Error 2
> のエラーで終了してしまいます。
>
コメントの意味は、TCLTK_FONT_SYSTEM=Xlib or TCLTK_FONT_SYSTEM=Xftのどちらか2択という意味です
設定が無い場合、Tcl/Tk 8.5では Xftベースの font systemが採用されるので、
fontconfig libraryが link可能である必要があるます
これは、runtime libraryだけではなく開発環境もインストールされている必要があります
(FcCharSetHasCharは fontconfig libraryが提供するはずのシンボル)

設定が正しくない場合は、build frameworkによって TCLTK_FONT_SYSTEM=Xlibへフォールバックしますので
前回のレポートにあったエラーメッセージ
>>X Error of failed request: BadValue (integer parameter out of range for operation)
>>Major opcode of failed request: 45 (X_OpenFont)
>>Value in failed request: 0x1000034
は、XLFDベースの昔ながらのX11 Font Systemに対する Font Queryに失敗を意味します
X Serverと通信していれば、Xに寄贈されたフォント群にフォールバックするはずなので、
X11 Font System周りがまともに動いているようには見えません

> また、TclTkはMacOS 10.7にinstallされていますので、
> USE_TCLTK=NO
> TCLTK_PREFIX=/usr
> TCLTK_INCDIR=$(TCLTK_PREFIX)/include
> TCLTK_LIBDIR=$(TCLTK_PREFIX)/lib
> として、compileしました。 その後、amida.sadを入力したところ、
> a = Amida[];
> No such loadable library[SAD/Tkinter]
> ???General::wrongtype: Argument must be Character-string in StringReplace[Tcl["return $tk_version",String],("."->",")]
> ???General::wrongtype: Argument must be Character-string in StringReplace[Tcl["return $tk_version",String],("."->",")]
> ...
> などのエラーがでました。
>
* USE_TCLTK=NOだと Tcl/Tk bindingは組み込まれません (したがってTcl[]関数自体が存在しない)
* 生のTcl/Tkは使えません!
Makefile読むと分かるはずですが、SAD側からTcl/TKの内部データにアクセスするためと
Toolkitの機能拡張のためににパッチを当てています
追加の APIを埋め込むため生のTcl/Tkに対してはシンボル不足でlinkに失敗します
(このために、Tcl/Tk 8.6系列は beta1以降には未対応です)


- 関連一覧ツリー (Click ▼ to display all articles in a thread.)