Index: EcnlProtoTool/trunk/asp3_dcre/cfg/pass2.rb
===================================================================
--- EcnlProtoTool/trunk/asp3_dcre/cfg/pass2.rb	(revision 270)
+++ EcnlProtoTool/trunk/asp3_dcre/cfg/pass2.rb	(revision 321)
@@ -7,61 +7,46 @@
 #              Graduate School of Information Science, Nagoya Univ., JAPAN
 #
-#  ä¸è¨èä½æ¨©è
-ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§
-#  ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ãä½¿ç¨ã»è¤è£½ã»æ¹
-#  å¤ã»åé
-å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼
-#  (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½
-#      æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼
-#      ã¹ã³ã¼ãä¸­ã«å«ã¾ãã¦ãããã¨ï¼
-#  (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿
-#      ç¨ã§ããå½¢ã§åé
-å¸ããå ´åã«ã¯ï¼åé
-å¸ã«ä¼´ããã­ã¥ã¡ã³ãï¼å©ç¨
-#      è
-ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨
-#      ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
-#  (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿
-#      ç¨ã§ããªãå½¢ã§åé
-å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã
-#      ã¨ï¼
-#    (a) åé
-å¸ã«ä¼´ããã­ã¥ã¡ã³ãï¼å©ç¨è
-ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è
-#        ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
-#    (b) åé
-å¸ã®å½¢æ
-ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSãã­ã¸ã§ã¯ãã«
-#        å ±åãããã¨ï¼
-#  (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ
-#      å®³ãããï¼ä¸è¨èä½æ¨©è
-ããã³TOPPERSãã­ã¸ã§ã¯ããå
-è²¬ãããã¨ï¼
-#      ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç
-#      ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è
-ããã³TOPPERSãã­ã¸ã§ã¯ãã
-#      å
-è²¬ãããã¨ï¼
-#
-#  æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è
-ã
-#  ãã³TOPPERSãã­ã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç
-#  ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§
-#  ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ã
-#  ã®è²¬ä»»ãè² ããªãï¼
-#
-#  $Id: pass2.rb 1011 2016-07-11 02:20:01Z coas-nagasima $
-#
-
-#
-#		ãã¹2ã®å¦ç
-#
-
-#
-#  ãã¹1ã®çæç©ã®èª­ã¿è¾¼ã¿
+#  上記著作権者は，以下の(1)～(4)の条件を満たす場合に限り，本ソフトウェ
+#  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+#  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+#  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+#      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+#      スコード中に含まれていること．
+#  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+#      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+#      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+#      の無保証規定を掲載すること．
+#  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+#      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+#      と．
+#    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+#        作権表示，この利用条件および下記の無保証規定を掲載すること．
+#    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+#        報告すること．
+#  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+#      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+#      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+#      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+#      免責すること．
+#
+#  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+#  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+#  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+#  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+#  の責任を負わない．
+#
+#  $Id$
+#
+
+#
+#		パス2の処理
+#
+
+#
+#  パス1の生成物の読み込み
 #
 module Cfg1Out
   #
-  #  Sã¬ã³ã¼ããã¡ã¤ã«ããã·ã³ãã«ã®å¤ãåãåºã
+  #  Sレコードファイルからシンボルの値を取り出す
   #
   def self.GetSymbolValue(symbol, size, signed)
@@ -74,11 +59,11 @@
 
   #
-  #  ãã¹1ã®çæç©ã®èª­ã¿è¾¼ã¿ï¼ã¡ã¤ã³ã®å¦çï¼
+  #  パス1の生成物の読み込み（メインの処理）
   #
   def self.Read
-    # cfg1_out.symsã®èª­ã¿è¾¼ã¿
+    # cfg1_out.symsの読み込み
     @symbolAddress = ReadSymbolFile(CFG1_OUT_SYMS)
 
-    # cfg1_out.srecã®èª­ã¿è¾¼ã¿
+    # cfg1_out.srecの読み込み
     begin
       @cfg1SRec = SRecord.new(CFG1_OUT_SREC)
@@ -87,5 +72,5 @@
     end
 
-    # ãã¸ãã¯ãã³ãã¼ã®åå¾
+    # マジックナンバーの取得
     if @symbolAddress.has_key?(CFG1_MAGIC_NUM)
       $asmLabel = ""
@@ -108,8 +93,8 @@
     end
 
-    # åºå®åºåããå¤æ°ã®åå¾
+    # 固定出力した変数の取得
     $sizeOfSigned = GetSymbolValue($asmLabel + CFG1_SIZEOF_SIGNED, 4, false)
 
-    # å¤åå¾ã·ã³ãã«ã®åå¾
+    # 値取得シンボルの取得
     $symbolValueTable.each do |symbolName, symbolData|
       symbol = $cfg1_prefix + symbolName
@@ -117,5 +102,5 @@
         value = GetSymbolValue(symbol, $sizeOfSigned, true)
         if !value.nil?
-          # Cè¨èªã®çå½å¤ãRubyã®çå½å¤ã«å¤æãã¦åãè¾¼ã
+          # C言語の真偽値をRubyの真偽値に変換して取り込む
           symbolData[:VALUE] = (value != 0)
         end
@@ -130,5 +115,5 @@
 
     #
-    #  ããã·ã¥ã®åæå
+    #  ハッシュの初期化
     #
     $cfgData = {}
@@ -148,5 +133,5 @@
 
     #
-    #  ãã¡ã¤ã³çæãã¼ã¿ãã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¼ã¿ï¼$cfgDataï¼ã«æ ¼ç´
+    #  ドメイン生成データをコンフィギュレーションデータ（$cfgData）に格納
     #
     $cfgData[:CRE_DOM] = {}
@@ -160,11 +145,10 @@
 
   #
-  #  ãã©ã¡ã¼ã¿ã®å¤ãåãåºã
+  #  パラメータの値を取り出す
   #
   def self.GetParamValue(paramName, param, apiIndex, index, apiParam, cfgInfo)
-    if apiParam.has_key?(:ID_DEF)				# ãªãã¸ã§ã¯ãè­å¥åï¼å®ç¾©ï¼
+    if apiParam.has_key?(:ID_DEF)				# オブジェクト識別名（定義）
       value = @objidValues[paramName][param]
-    elsif apiParam.has_key?(:ID_REF)			# ãªãã¸ã§ã¯ãè­å¥åï¼åç
-§ï¼
+    elsif apiParam.has_key?(:ID_REF)			# オブジェクト識別名（参照）
       if @objidValues[paramName].has_key?(param)
         value = @objidValues[paramName][param]
@@ -175,5 +159,5 @@
         value = nil
       end
-    elsif apiParam.has_key?(:EXPTYPE)			# æ´æ°å®æ°å¼ãã©ã¡ã¼ã¿
+    elsif apiParam.has_key?(:EXPTYPE)			# 整数定数式パラメータ
       if apiIndex.nil?
         if param.is_a?(NumStr)
@@ -187,5 +171,5 @@
 									apiParam.has_key?(:SIGNED))
       end
-    else										# ä¸è¬å®æ°å¼ï¼æå­åãã©ã¡ã¼ã¿
+    else										# 一般定数式／文字列パラメータ
       return(param)
     end
@@ -194,40 +178,39 @@
 
   #
-  #  æå®ãããã§ã¼ãºã®ããã®ãã¹1ã®çæç©ã®èª­ã¿è¾¼ã¿
+  #  指定したフェーズのためのパス1の生成物の読み込み
   #
   def self.ReadPhase(phase)
     #
-    #  ãªãã¸ã§ã¯ãIDã®å²å½ã¦
-    #
-    # å²ãå½ã¦ããªãã¸ã§ã¯ãIDã¯ï¼@objidValuesã«ä¿æããï¼@objidValuesã¯ï¼
-    # 2éã®ããã·ã¥ï¼ããã·ã¥ã®ããã·ã¥ï¼ã§ããï¼
-    #
-    # å
-·ä½çã«ã¯ï¼@objidValuesã¯ï¼ãªãã¸ã§ã¯ãIDã®ãã©ã¡ã¼ã¿åï¼ä¾ãã°ï¼ã»
-    # ããã©IDã§ããã°"semid"ï¼ãããä¿æããå¤æ°åã¯ï¼objidParamNameã¨ã
-    # ãï¼ãã­ã¼ã¨ãï¼ãã®ãªãã¸ã§ã¯ãIDã®å²å½ã¦è¡¨ï¼ãããä¿æããå¤æ°å
-    # ã¯ï¼objidListã¨ããï¼ãå¤ã¨ããããã·ã¥ã§ããï¼ãªãã¸ã§ã¯ãIDã®å²å½
-    # ã¦è¡¨ã¯ï¼ãªãã¸ã§ã¯ãåï¼ãããä¿æããå¤æ°åã¯ï¼objNameã¨ããï¼ãã­ã¼
-    # ã¨ãï¼ãã®IDçªå·ï¼ãããä¿æããå¤æ°åã¯ï¼objidNumberã¨ããï¼ãå¤ã¨
-    # ããããã·ã¥ã§ããï¼
-    #
-    # ä¾ãã°ï¼ã»ããã©SEM1ã®IDçªå·ã1ã®å ´åã«ã¯ï¼æ¬¡ã®ããã«è¨­å®ãããï¼
+    #  オブジェクトIDの割当て
+    #
+    # 割り当てたオブジェクトIDは，@objidValuesに保持する．@objidValuesは，
+    # 2重のハッシュ（ハッシュのハッシュ）である．
+    #
+    # 具体的には，@objidValuesは，オブジェクトIDのパラメータ名（例えば，セ
+    # マフォIDであれば"semid"．これを保持する変数名は，objidParamNameとす
+    # る）をキーとし，そのオブジェクトIDの割当て表（これを保持する変数名
+    # は，objidListとする）を値とするハッシュである．オブジェクトIDの割当
+    # て表は，オブジェクト名（これを保持する変数名は，objNameとする）をキー
+    # とし，そのID番号（これを保持する変数名は，objidNumberとする）を値と
+    # するハッシュである．
+    #
+    # 例えば，セマフォSEM1のID番号が1の場合には，次のように設定される．
     #   @objidValues["semid"]["SEM1"] == 1
     #
 
-    # IDçªå·å²ãå½ã¦ã®åå¦ç
+    # ID番号割り当ての前処理
     objidParamNameList = []
     $cfgFileInfo.each do |cfgInfo|
-      # ããªãã­ã»ããµãã£ã¬ã¯ãã£ãã¯èª­ã¿é£ã°ã
+      # プリプロセッサディレクティブは読み飛ばす
       next if cfgInfo.has_key?(:DIRECTIVE)
 
       apiDef = $apiDefinition[cfgInfo[:APINAME]]
-      # ç°ãªããã§ã¼ãºã®éçAPIã¯èª­ã¿é£ã°ã
+      # 異なるフェーズの静的APIは読み飛ばす
       next if apiDef[:PHASE] != phase
 
       apiIndex = cfgInfo[:INDEX]
       if !apiIndex.nil?
-        # ã·ã³ãã«ãã¡ã¤ã«ã«éçAPIã®ã¤ã³ããã¯ã¹ãå­å¨ããªããã°èª­ã¿é£
-        # ã°ãï¼ifdefç­ã§æ¶ããéçAPIï¼
+        # シンボルファイルに静的APIのインデックスが存在しなければ読み飛
+        # ばす（ifdef等で消えた静的API）
         symbol = "#{$cfg1_prefix}static_api_#{apiIndex}"
         next unless @symbolAddress.has_key?(symbol)
@@ -239,6 +222,5 @@
           objName = cfgInfo[objidParamName]
           if $inputObjid.has_key?(objName)
-            # IDçªå·å
-¥åãã¡ã¤ã«ã«å®ç¾©ããã¦ããå ´å
+            # ID番号入力ファイルに定義されていた場合
             @objidValues[objidParamName][objName] = $inputObjid[objName]
           else
@@ -250,21 +232,20 @@
     end
 
-    # IDçªå·ã®å²å½ã¦å¦ç
+    # ID番号の割当て処理
     objidParamNameList.each do |objidParamName|
       objidList = @objidValues[objidParamName]
 
-      # æªä½¿ç¨ã®IDçªå·ã®ãªã¹ãï¼ä½¿ç¨ãããã®ããæ¶ãã¦ããï¼
+      # 未使用のID番号のリスト（使用したものから消していく）
       unusedObjidList = (1.upto(objidList.keys.size)).to_a
 
-      # å²ãå½ã¦æ¸ã¿ã®IDçªå·ã®å¦ç
+      # 割り当て済みのID番号の処理
       objidList.each do |objName, objidNumber|
         if $inputObjid.has_key?(objName)
           objidIndex = unusedObjidList.index($inputObjid[objName])
           if objidIndex.nil?
-            # IDçªå·å
-¥åãã¡ã¤ã«ã§æå®ãããå¤ãä¸æ­£
+            # ID番号入力ファイルで指定された値が不正
             error_exit("value of `#{objName}' in ID input file is illegal")
           else
-            # æªä½¿ç¨ã®IDçªå·ã®ãªã¹ãããåé¤
+            # 未使用のID番号のリストから削除
             unusedObjidList.delete_at(objidIndex)
           end
@@ -272,8 +253,8 @@
       end
 
-      # IDçªå·ã®å²å½ã¦
+      # ID番号の割当て
       objidList.each do |objName, objidNumber|
         if objidList[objName].nil?
-          # ä»¥ä¸ã§ï¼@objidValuesãæ¸ãæãã¦ãã
+          # 以下で，@objidValuesを書き換えている
           objidList[objName] = unusedObjidList.shift
         end
@@ -282,12 +263,12 @@
 
     #
-    #  éçAPIãã¼ã¿ãã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¼ã¿ï¼$cfgDataï¼ã«æ ¼ç´
+    #  静的APIデータをコンフィギュレーションデータ（$cfgData）に格納
     #
     $cfgFileInfo.each do |cfgInfo|
-      # ããªãã­ã»ããµãã£ã¬ã¯ãã£ãã¯èª­ã¿é£ã°ã
+      # プリプロセッサディレクティブは読み飛ばす
       next if cfgInfo.has_key?(:DIRECTIVE)
 
       apiDef = $apiDefinition[cfgInfo[:APINAME]]
-      # ç°ãªããã§ã¼ãºã®éçAPIã¯èª­ã¿é£ã°ã
+      # 異なるフェーズの静的APIは読み飛ばす
       next if apiDef[:PHASE] != phase
 
@@ -295,16 +276,16 @@
       apiIndex = cfgInfo[:INDEX]
       if !apiIndex.nil?
-        # ã·ã³ãã«ãã¡ã¤ã«ã«éçAPIã®ã¤ã³ããã¯ã¹ãå­å¨ããªããã°èª­ã¿é£
-        # ã°ãï¼ifdefç­ã§æ¶ããéçAPIï¼
+        # シンボルファイルに静的APIのインデックスが存在しなければ読み飛
+        # ばす（ifdef等で消えた静的API）
         symbol = "#{$cfg1_prefix}static_api_#{apiIndex}"
         next unless @symbolAddress.has_key?(symbol)
       end
 
-      # ãã©ã¡ã¼ã¿ã®å¤ãããã·ã¥å½¢å¼ã«æ ¼ç´
+      # パラメータの値をハッシュ形式に格納
       params = {}
       apiDef[:PARAM].each do |apiParam|
         next unless apiParam.has_key?(:NAME)
         paramName = apiParam[:NAME]
-        next unless cfgInfo.has_key?(paramName)		# ãã©ã¡ã¼ã¿ããªãå ´å
+        next unless cfgInfo.has_key?(paramName)		# パラメータがない場合
         paramData = cfgInfo[paramName]
 
@@ -321,5 +302,5 @@
       end
 
-      # ãã¡ã¤ã³IDãè¿½å 
+      # ドメインIDを追加
       if cfgInfo.has_key?(:DOMAIN)
         domainName = cfgInfo[:DOMAIN]
@@ -327,5 +308,5 @@
       end
 
-      # ã¯ã©ã¹IDãè¿½å 
+      # クラスIDを追加
       if cfgInfo.has_key?(:CLASS)
         if apiIndex.nil?
@@ -338,15 +319,15 @@
       end
 
-      # APIåï¼ãã¡ã¤ã«åï¼è¡çªå·ãè¿½å 
+      # API名，ファイル名，行番号を追加
       params[:apiname] = cfgInfo[:APINAME]
       params[:_file_] = cfgInfo[:_FILE_]
       params[:_line_] = cfgInfo[:_LINE_]
 
-      # ç»é²ã­ã¼ãæ±ºå®ãã
+      # 登録キーを決定する
       if apiDef.has_key?(:KEYPAR)
         keyParam = params[apiDef[:KEYPAR].to_sym]
         key = keyParam.val
         if $cfgData[apiSym].has_key?(key)
-          # ç»é²ã­ã¼ã®éè¤
+          # 登録キーの重複
           error("E_OBJ: #{apiDef[:KEYPAR]} `#{keyParam}' " \
 								"is duplicated in #{cfgInfo[:APINAME]}",
@@ -361,5 +342,5 @@
 
   #
-  #  IDçªå·åºåãã¡ã¤ã«ã®çæ
+  #  ID番号出力ファイルの生成
   #
   def self.OutputId(fileName)
@@ -374,10 +355,9 @@
 
 #
-#  ãã¹2ã®å¦ç
+#  パス2の処理
 #
 def Pass2
   #
-  #  ãã¹1ããå¼ãæ¸¡ãããæ
-å ±ããã¡ã¤ã«ããèª­ã¿è¾¼ã
+  #  パス1から引き渡される情報をファイルから読み込む
   #
   db = PStore.new(CFG1_OUT_DB)
@@ -392,16 +372,16 @@
 
   #
-  #  ãã¹1ã®çæç©ãèª­ã¿è¾¼ã
+  #  パス1の生成物を読み込む
   #
   Cfg1Out.Read()
-  abort if $errorFlag					# ã¨ã©ã¼çºçæã¯abortãã
-
-  #
-  #  å¤åå¾ã·ã³ãã«ãã°ã­ã¼ãã«å¤æ°ã¨ãã¦å®ç¾©ãã
+  abort if $errorFlag					# エラー発生時はabortする
+
+  #
+  #  値取得シンボルをグローバル変数として定義する
   #
   DefineSymbolValue()
 
   #
-  #  çæã¹ã¯ãªããï¼trbãã¡ã¤ã«ï¼ãå®è¡ãã
+  #  生成スクリプト（trbファイル）を実行する
   #
   $trbFileNames.each do |trbFileName|
@@ -414,5 +394,5 @@
 
   #
-  #  IDçªå·åºåãã¡ã¤ã«ã®çæ
+  #  ID番号出力ファイルの生成
   #
   if !$idOutputFileName.nil?
@@ -421,6 +401,5 @@
 
   #
-  #  ãã¹3ã«å¼ãæ¸¡ãæ
-å ±ããã¡ã¤ã«ã«çæ
+  #  パス3に引き渡す情報をファイルに生成
   #
   if $omitOutputDb.nil?
