XML - language Syntax の実装の検討
20050717 -KM-
2005070253 => 2005071751
0)
tableTools/UMScodeGeneratorForClng.java
tableTools/UMScodeGeneratorForJava.java
txt_lang.xsl を2段階に分割。
初段で XML-XML syntax => XML-language syntax 変換を行い
次段で XML-language syntax => post 未処理 XML 形式を生成
それぞれ、FILE1, FILE2 を生成する。
semicolonParser.java を作成
txt_lang2.xsl 及び
data.xsl, value.xsl (preTransform 経由) にて使用。
0) src/xslt/duplicate.xsl
シンプルに書き直した。
1) datatype/src/typeConversion_lang.xsl
datatype/src/W3C_typeConversion_lang.xsl
datatype/src/typeConversion_lang1.xsl
-
-
datatype/src/typeConversion_lang2.xsl
- その他の template
に分割。W3C_* も同様。
W3C_typeConversion_lang1.xsl
ums__tmp => call-template name="duplicate"
2) src/xslt/txt_lang.xsl
src/xslt/txt_lang1.xsl
- include href="file://localhost/defineVariables.xsl"
- include href="file://localhost/defineFunctions.xsl"
- include href="file://localhost/function.xsl"
- include href="file://localhost/datavalue.xsl" (新規)
- template name="varTypeDefinition"
変数宣言の部分は、varTypeDefinition 部にマージされる。
以下は txt_lang.xsl の template match="/" から切り出して作成
- template match="java:class" (java)
- template match="clng:package" (clng)
切り出されなかった部分 (grammar,start) の部分は、
duplicate の動作でカバーできる。
src/xslt/txt_lang2.xsl
に分割。それぞれ以下を include 。
- datatype/src/typeConversion_lang?.xsl
- src/xslt/duplicate.xsl
- src/xslt/common.xsl
- src/xslt/tool_java.xsl
(tool_java は分けようと思えば分けられる。)
名前空間の定義を適宜追加
data.xsl, value.xsl => datavalue.xsl
preTransForm のロジックを datavalue.xsl に移動
pass1 において、direction はパラメータではない。
preTransForm への変更
- if test="@useLang" を削除
- template name="encodeLibraryParameterLang" を削除
- 以下の処理内容は置き換え
- template match="pre:langtype2datatypeConversion"
- template match="pre:langtype2datatypeConversion"
- もともと入っていた
- xs:call-template name="langtype2datatypeConversion"
- xs:call-template name="datatype2langtypeConversion"
- は datavalue.xsl へ。
data.xsl, value.xsl への変更
- useLang="true" を削除
- xalan 呼びだし用の名前空間関連宣言を追加
- lxslt:component は不要らしい
4) secondTransform_lang.xsl
ums:grammar, ums:start の処理は、ここのみで行う。
pre:tagComment の処理もここに移動。duplicate の
処理の記述は簡素化。common.xsl を include する必要あり。
5) defineMapping.xsl
- text() ノード用の再起処理を追加。
- defineMapping 最後の return 文を削除
XML-language syntax において
defineMapping の外部で処理を行うため。
- java 版の buffer reset を暫定追加 (バグ対応)
6) ValidateSample を追加。
- XML-language syntax で validate する例
残件
- tableTools/umsCodeGenerator の最新版に組み込み。
- もろもろサンプル作成。
A) tableTools 最新版への組み込み
2005070253
=> 2005071201 (正規版最新)
=> 2005071752 (XML-language syntax 検討版)
=> 2005072301 (マージされた正規版)
基本的には 2005071201 をベースに
tableTools-2005071751.txt
に従って手作業で変更を行う。
ただし、2005070253 と 2005071201 で差分がない
ところは作業を省くために 2005071752 のものをコピー。
./src/java
./src/xslt/duplicate.xsl
./src/xslt/txt_langN.xsl
ただし名前空間の walk arround のみ適用
./src/xslt/datavalue.xsl
B) umsCodeGenerator 最新版への組み込み
※ umsCodeGenerator/2005072204
... zeroOrMoreSample/java でエラーが起きている。
... oneOrMoreSample/java でエラーが起きている。
... choiceSample/java でエラーが起きている。
... ValueSample/java でエラーが起きている。
... コメントアウト
preTransform の中で ums__state に ok を代入している。
なにこれ?コメントアウト。num_alive -- は実は C だけ??
=> tableTools/2005071201
=> umsCodeGenerator/2005072204
=> umsCodeGenerator/2005072302
※ C) に記す追加修正が必要なので tableTools の
マージ版より版番号が大きい。
基本的には 2005072204 をベースに
tableTools-2005071751.txt
に従って手作業で変更を行う。
ただし、tableTools/2005071201 と
umsCodeGenerator/2005072204 で差がない部分は
作業を省くために tableTools/2005072301 のものをコピー。
./src/java/ /*.java (3つのファイル)
./src/xslt/duplicate.xsl
./src/xslt/datavalue.xsl
data.xsl
- dat:data, lang:data
いらない synchronize を削除
結局この段階ではサンプルは動くようにならない。
tableTools-2005072302.txt
「関数内の defineVariables」
を参照のこと。
なぜか IntType_signedEncode/java のサンプルの処理時間が
異様に長くなった気がする。
処理アルゴリズムからくる限界だろうか?
UnsignedIntType_unsignedEncodeSampleTest.c