- Timestamp:
- May 22, 2019, 10:03:37 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/core/tecsgen.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2017 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ … … 56 41 class TECSGEN 57 42 58 @@b_post_coded = false # ãã¹ãã³ã¼ãçæéå§å¾true59 60 #=== import ãã¹ (-I) ãæ«å°¾ã«è¿½å61 # æ¢ã«ç»é²æ¸ã¿ã§ããã°ã追å ããªã43 @@b_post_coded = false # ポストコード生成開始後 true 44 45 #=== import パス (-I) を末尾に追加 46 # 既に登録済みであれば、追加しない 62 47 def self.add_import_path path 63 48 if $import_path.index( path ) == nil then … … 67 52 end 68 53 69 #=== EXEB çã®ãã¹ã®èª¿æ´70 # ç°å¢å¤æ° TECSPATH ã cygwin ã¹ã¿ã¤ã«ã ã¨ãexerb çã§ã¯æ±ããªã71 # $import_path 㨠$TECSPATH ã調æ´ãã54 #=== EXEB 版のパスの調整 55 # 環境変数 TECSPATH が cygwin スタイルだと、exerb 版では扱えない 56 # $import_path と $TECSPATH を調整する 72 57 def self.adjust_exerb_path 73 58 if $IN_EXERB then … … 76 61 paths = [] 77 62 $import_path.each{ |path| 78 # cygpath 㯠'..' ãç°¡ç´ãã¦ãã¾ãã®ã§ãnew_tecspath ã§ç½®æãã63 # cygpath は '..' を簡約してしまうので、new_tecspath で置換する 79 64 # paths << cygpath( path, path ) 80 65 paths << path.sub( pattern, new_tecspath ) … … 87 72 end 88 73 89 #=== $(TECSPATH) ã¸ã®ç½®æ90 #path::String : ENV[ 'TECSPATH' ] ã«ä¸è´ããé¨åãããã°ã "$(TECSPATH)" ã«ç½®æ91 #b_global::Bool : true ãªã gsub ã§ç½®æãfalse ãªã sub ã§ç½®æ74 #=== $(TECSPATH) への置換 75 #path::String : ENV[ 'TECSPATH' ] に一致する部分があれば、 "$(TECSPATH)" に置換 76 #b_global::Bool : true なら gsub で置換。false なら sub で置換 92 77 def self.subst_tecspath( path, b_global = false ) 93 78 tp = $tecspath.dup … … 104 89 end 105 90 106 #=== path ã¯çµ¶å¯¾ãã¹ã?91 #=== path は絶対パスか? 107 92 #path:: String : 108 # '/' ã¾ã㯠'$' ã§å§ã¾ãå ´åã絶対ãã¹ã¨å¤å®ãã93 # '/' または '$' で始まる場合、絶対パスと判定する 109 94 def self.is_absolute_path?( path ) 110 95 pa = path[0..0]; pa2 = path[0..1] … … 118 103 end 119 104 120 #=== tecsgen ã®ããã©ã«ããè¨å®105 #=== tecsgen のデフォルトを設定 121 106 def self.set_default_config 122 107 Makefile::set_default_config … … 124 109 125 110 ### 126 #== Makefile.templ ã®åºåå 127 容ã追å ãå¤æ´ããããã®æä½ 111 #== Makefile.templ の出力内容を追加、変更するための操作 128 112 module Makefile 129 # åºå®ããã¦ããå¤æ°(add_var ã§å¤æ´ã§ããªã)113 # 固定されている変数(add_var で変更できない) 130 114 @@fixed_vars = { :INCLUDES => nil, :DEFINES => nil, :TARGET_BASE => nil, :BASE_DIR => nil } 131 115 @@config_mode = false … … 142 126 @@lines = [] 143 127 144 #=== OTHER_OBJS ã«è¿½å ãã128 #=== OTHER_OBJS に追加する 145 129 def self.add_obj obj 146 130 @@objs << obj 147 131 end 148 #=== 追å ããå¤æ°149 # ãã©ã°ã¤ã³ããã¯ãããã©ã«ãå¤ãå¤æ´ã§ãã150 # config ã«ãã132 #=== 追加する変数 133 # プラグインからは、デフォルト値を変更できる 134 # config により 151 135 def self.add_var( var, val, comment = nil ) 152 136 if @@fixed_vars[ var ] … … 161 145 end 162 146 end 163 #=== LDFLAGS ã«è¿½å ãã147 #=== LDFLAGS に追加する 164 148 def self.add_ldflag ldflag 165 149 @@ldflags += " " + ldflag 166 150 end 167 #=== ãµã¼ããã¹ã追å ãã168 # CFLAGS, vpath ã«è¿½å ãã151 #=== サーチパスを追加する 152 # CFLAGS, vpath に追加する 169 153 def self.add_search_path path 170 154 @@search_path << path 171 155 end 172 #=== PRE_TECSGEN_TARGET ã«è¿½å ãã173 # PRE_TECSGEN_TARGET ã« target ã追å ãã156 #=== PRE_TECSGEN_TARGET に追加する 157 # PRE_TECSGEN_TARGET に target を追加する 174 158 def self.add_pre_tecsgen_target target 175 159 @@pre_tecsgen_target << pre_tecsgen_target 176 160 end 177 #=== POST_TECSGEN_TARGET ã«è¿½å ãã178 # POST_TECSGEN_TARGET ã« target ã追å ãã161 #=== POST_TECSGEN_TARGET に追加する 162 # POST_TECSGEN_TARGET に target を追加する 179 163 def self.add_post_tecsgen_target target 180 164 @@post_tecsgen_target << pre_tecsgen_target 181 165 end 182 #=== 追å ããå¤æ°166 #=== 追加する変数 183 167 def self.add_line( line ) 184 168 @@lines << line.to_s + "\n" 185 169 end 186 170 187 def self.get_objs # Array ãè¿ã171 def self.get_objs # Array を返す 188 172 return @@objs.uniq 189 173 end 190 def self.get_vars # Array ãè¿ã174 def self.get_vars # Array を返す 191 175 if RUBY_VERSION >= '1.9' then 192 176 return (@@vars.keys + @@vars_default.keys).sort.uniq 193 177 else 194 # V1.8 ã§ã¯ãSymbol ã® sort ãã§ããªãã®ã§ãä¸æ¦ String ã«ç½®æãã178 # V1.8 では、Symbol の sort ができないので、一旦 String に置換する 195 179 return (@@vars.keys + @@vars_default.keys).map{|s| s.to_s }.sort.uniq.map!{|s| s.to_sym } 196 180 end … … 202 186 return @@var_comments[ var ] 203 187 end 204 def self.get_ldflags # String ãè¿ã188 def self.get_ldflags # String を返す 205 189 return @@ldflags 206 190 end 207 def self.get_search_path # Array ãè¿ã191 def self.get_search_path # Array を返す 208 192 return @@search_path.uniq 209 193 end 210 def self.get_pre_tecsgen_target # Array ãè¿ã194 def self.get_pre_tecsgen_target # Array を返す 211 195 return @@pre_tecsgen_target.uniq 212 196 end 213 def self.get_post_tecsgen_target # Array ãè¿ã197 def self.get_post_tecsgen_target # Array を返す 214 198 return @@post_tecsgen_target.uniq 215 199 end 216 def self.get_lines # ä»å ããè¡ãå¾ã200 def self.get_lines # 付加する行を得る 217 201 return @@lines.uniq 218 202 end 219 203 220 #=== TECSGEN ã®ããã©ã«ãè¨å®ãè¡ã204 #=== TECSGEN のデフォルト設定を行う 221 205 # Makefile 222 # @@fixed_vars ã§å®ç¾©ããã¦ããå¤æ°ã¯ãå¤æ´ã§ãããå®æ°å®ç¾©ããã¦ãã206 # @@fixed_vars で定義されている変数は、変更できず、定数定義されている 223 207 def self.set_default_config 224 208 add_var( "TARGET", "$(TARGET_BASE).exe", "default target name" ) … … 241 225 242 226 def syntax_analisys argv 243 # ã«ã¼ã namespace (region) ãçæ227 # ルート namespace (region) を生成 244 228 @root_namespace = Region.new("::") 245 229 246 #### æ§æ解æ (post ã³ã¼ããé¤ã) ####247 # ãã¹ã¦ã® cdl ã import ãã230 #### 構文解析 (post コードを除く) #### 231 # すべての cdl を import する 248 232 argv.each{ |f| 249 233 dbgPrint( "## Import: #{f}\n") … … 251 235 } 252 236 253 # ãã¹ã¦ã®æ§æ解éãå®äºãããã¨ã®å ±å254 # å®éã«ã¯ãå¾ãããã©ã°ã¤ã³ã®çæãã CDL ã®ãã¼ã¹ãè¡ããã255 # ã¨ã©ã¼è¡æ°ã®æ±ºå®æ¹æ³ã®å¤æ´ã®ããã«è¡ã237 # すべての構文解釈が完了したことの報告 238 # 実際には、後からプラグインの生成する CDL のパースが行われる 239 # エラー行数の決定方法の変更のために行う 256 240 Generator.end_all_parse 257 241 dbgPrint( "## End all parse (except Post Code)\n") … … 262 246 # other objects (signature, celltype, typedef, etc ) are checked while syntax analisys 263 247 def semantics_analisys_1 264 #### æå³è§£æï¼ (post ã³ã¼ããé¤ã) ####248 #### 意味解析1 (post コードを除く) #### 265 249 dbgPrint( "## Creating reverse join \n") 266 250 Cell.create_reverse_join … … 270 254 Celltype.check_dynamic_join 271 255 272 #0 set_definition_join ã¯2åå¼ã³åºãããï¼1åç®ï¼256 #0 set_definition_join は2回呼び出される(1回目) 273 257 dbgPrint( "## Checking all join\n") 274 258 @root_namespace.set_definition_join 275 # @root_namespace.set_require_join ### ãã£ããè¦åãããéè¤ã¨ã©ã¼ãè¦éã276 # through ãã©ã°ã¤ã³ã§çæãããã»ã«ã«ã require ãçæã§ãã (set_definition_join ã®å¾ãã§å®æ½)277 278 #### post ã³ã¼ãã®çæã¨æ§æ解æ####279 @@b_post_coded = true # ãã¹ãã³ã¼ãçæéå§å¾true280 # å¼æ°ããªããã°ããã©ã°ã¤ã³ã®ãã¹ãã³ã¼ããåºåããªã259 # @root_namespace.set_require_join ### いったん見合わせ。重複エラーを見逃す 260 # through プラグインで生成されたセルにも require も生成できる (set_definition_join の後ろで実施) 261 262 #### post コードの生成と構文解析 #### 263 @@b_post_coded = true # ポストコード生成開始後 true 264 # 引数がなければ、プラグインのポストコードを出力しない 281 265 if ARGV.length > 0 then 282 266 dbgPrint( "## Generating Post Code\n") 283 # ãã©ã°ã¤ã³ã®ãã¹ãã³ã¼ãã®åºåã¨import267 # プラグインのポストコードの出力と import 284 268 tmp_file_name = "#{$gen}/tmp_plugin_post_code.cdl" 285 269 file = nil … … 291 275 292 276 if file then 293 # through ãã©ã°ã¤ã³ã®ãã¹ãã³ã¼ãçæ277 # through プラグインのポストコード生成 294 278 PluginModule.gen_plugin_post_code file 295 279 … … 304 288 end 305 289 306 #### æå³è§£æï¼ (post ã³ã¼ã) ####290 #### 意味解析1 (post コード) #### 307 291 dbgPrint( "## Creating reverse join (for post code) \n") 308 292 Cell.create_reverse_join 309 293 310 # Join ã®å®ç¾©ã®è¨å®ã¨ãã§ã㯠311 #0 # åæ¹åç 312 §å¯¾å¿ 313 #0 set_definition_join ã¯2åå¼ã³åºãããï¼2åç®ï¼ post_code ã§çæããã 294 # Join の定義の設定とチェック 295 #0 # 前方参照対応 296 #0 set_definition_join は2回呼び出される(2回目) post_code で生成された 314 297 dbgPrint( "## Checking all join (for cells generated by Post Code\n") 315 298 @root_namespace.set_definition_join … … 317 300 318 301 dbgPrint( "## Set require join\n") 319 @root_namespace.set_require_join # mikan post ã®åã«ã 320 # ãã¹ãã³ã¼ãã§çæãããã»ã«ã® require ã®join ãçæ 321 # mikan require 㧠through ãé©ç¨ããã¦ããã¹ãã³ã¼ããå¿ 322 è¦ã¨ãªã£ã¦ãåºåãããªã 302 @root_namespace.set_require_join # mikan post の前にも 303 # ポストコードで生成されたセルの require のjoin を生成 304 # mikan require で through が適用されて、ポストコードが必要となっても出力されない 323 305 end # semantics_analisys_1 324 306 325 307 def semantics_analisys_2 326 #### æå³è§£æï¼####308 #### 意味解析2 #### 327 309 Cell.make_cell_list2 328 310 dbgPrint( "## Set fixed join\n") 329 311 Cell.create_reverse_require_join 330 # create_reverse_require_join 㯠set_detinition_join ã«åãè¾¼ããã¨ãã§ããªã 331 # namespace ã«ä¾åããªãåºç¾é ã§è¡ã 332 # mikan through ãã©ã°ã¤ã³ãé©ç¨ãããã¹ãã³ã¼ãã«å½±é¿ãä¸ããå ´åãèæ 333 ®ã§ãã¦ããªã 334 # mikan post code ã«å½±é¿ã®ãããã®ã§ããã°ãæ©ãã« reverse_require_join ã®çµåãå¿ 335 è¦ 312 # create_reverse_require_join は set_detinition_join に埋め込むことができない 313 # namespace に依存しない出現順で行う 314 # mikan through プラグインが適用されポストコードに影響を与える場合が考慮できていない 315 # mikan post code に影響のあるものであれば、早くに reverse_require_join の結合が必要 336 316 dbgPrint( "## Setting port reference count\n") 337 317 @root_namespace.set_port_reference_count … … 340 320 @root_namespace.check_join 341 321 342 # mikan ãã©ã°ã¤ã³ã§çæãããã³ã³ãã¼ãã³ãã®set_def_and_check_join322 # mikan プラグインで生成されたコンポーネントの set_def_and_check_join 343 323 344 324 dbgPrint( "## Checking referenced but undefined cell\n") … … 347 327 348 328 def optimize_and_generate 349 #### Region link root ãã¨ã«ãªããã£ãã¤ãºããã³çæ####329 #### Region link root ごとにオプティマイズおよび生成 #### 350 330 Region.get_link_roots.each { |region| 351 331 … … 369 349 end 370 350 371 # ã»ã«ãä¸ã¤ããªããã°çæããªã372 # ã»ã«ã®çæããªãå ´å351 # セルが一つもなければ生成しない 352 # セルの生成がない場合 373 353 if region.get_n_cells == 0 then 374 354 if $region_list.length > 0 then … … 400 380 401 381 dbgPrint( "## Unset optimize variables\n") 402 @root_namespace.reset_optimize # æé©åããªã»ãããã382 @root_namespace.reset_optimize # 最適化をリセットする 403 383 404 384 if Generator.get_n_error == 0 then 405 # ã¨ã©ã¼ãçºçãã¦ããããè¨å®ããªã385 # エラーが発生していたら、設定しない 406 386 dbgPrint( "## Set cell id\n") 407 @root_namespace.set_cell_id_and_domain # ã»ã«ã® ID ã¨ãã¡ã¤ã³æ 408 å ±ãè¨å®ï¼linkunit æ¯ã«0ããã¤ããï¼ 409 410 # ã¨ã©ã¼ãçºçãã¦ããããæé©åã¯å®æ½ããªã 387 @root_namespace.set_cell_id_and_domain # セルの ID とドメイン情報を設定(linkunit 毎に0からつける) 388 389 # エラーが発生していたら、最適化は実施しない 411 390 if ! $unopt then 412 391 dbgPrint( "## Optimizing: Link Region=#{@root_namespace.get_name}\n") … … 416 395 417 396 if $show_tree then 418 # ã¨ã©ã¼ãçºçãã¦ãã¦ã表示ï¼ã¨ã©ã¼çºçæã¯æé©åããã¦ããªãã®ã§æ³¨æï¼397 # エラーが発生していても表示(エラー発生時は最適化されていないので注意) 419 398 print "##### show_tree LinkRegion=#{region.get_name} #####\n" 420 399 @root_namespace.show_tree(0) … … 422 401 end 423 402 424 # æ§æ解éãæå³è§£æã§ã¨ã©ã¼çºçãã¦ããããã³ã¼ãçæãããªã403 # 構文解釈、意味解析でエラー発生していたら、コード生成をしない 425 404 if Generator.get_n_error != 0 then 426 405 print_report … … 428 407 end 429 408 430 #### ã³ã¼ãçæ####409 #### コード生成 #### 431 410 begin 432 411 dbgPrint( "## Generating: Link Region=#{@root_namespace.get_name}\n") … … 435 414 @root_namespace.generate_post 436 415 rescue 437 # é常ããã¸ã¯æ¥ãªã (generate, generate_post ã§å¦ç½®ããã)416 # 通常ここへは来ない (generate, generate_post で処置される) 438 417 Generator.error( "G9999 fail to generate" ) 439 418 end … … 453 432 } 454 433 455 # update ãã456 # APPFile ã§çæããããã¡ã¤ã«ã¯ãããå¤åãããã°ãããã§æ´æ°ãã457 # ã³ã¼ãçæ段éã§ã¨ã©ã¼ãçºçããã°ãæ´æ°ããªã458 # CFile ã§çæããããã®ã¯ãæ´æ°ããã¦ãã434 # update する 435 # APPFile で生成されたファイルは、もし変化があれば、ここで更新する 436 # コード生成段階でエラーが発生すれば、更新しない 437 # CFile で生成されたものは、更新されている 459 438 if Generator.get_n_error == 0 then 460 439 begin … … 477 456 def dump_tecsgen_rbdmp 478 457 dbgPrint "dump_tecsgen_rbdmp 0:\n" 479 #### unjoin_plugin å¾ã«è¡ãå¿ 480 è¦ããããããã³ã¼ãçæå¾ã«ãã³ããè¡ã 481 #### Region link root ãã¨ã«ãªããã£ãã¤ãºãã¦ãã³ã #### 458 #### unjoin_plugin 後に行う必要があるため、コード生成後にダンプを行う 459 #### Region link root ごとにオプティマイズしてダンプ #### 482 460 Namespace.get_root.unjoin_plugin 483 461 Namespace.get_root.find_plugin 0, [] … … 497 475 498 476 dbgPrint "dump_tecsgen_rbdmp 2: Region.path_str: #{region.get_namespace_path.get_path_str}\n" 499 # ã»ã«ãä¸ã¤ããªããã°çæããªã500 # ã»ã«ã®çæããªãå ´å477 # セルが一つもなければ生成しない 478 # セルの生成がない場合 501 479 if region.get_n_cells == 0 then 502 480 # if $region_list.length > 0 then … … 522 500 dbgPrint "dump_tecsgen_rbdmp 4: Region.path_str: #{region.get_namespace_path.get_path_str}\n" 523 501 dbgPrint( "## Unset optimize variables\n") 524 @root_namespace.reset_optimize # æé©åããªã»ãããã502 @root_namespace.reset_optimize # 最適化をリセットする 525 503 526 504 # if Generator.get_n_error == 0 then 527 # # ã¨ã©ã¼ãçºçãã¦ããããããã¸ã¯æ¥ãªã505 # # エラーが発生していたら、ここへは来ない 528 506 dbgPrint( "## Set cell id\n") 529 @root_namespace.set_cell_id_and_domain # ã»ã«ã® ID ã¨ãã¡ã¤ã³æ 530 å ±ãè¨å®ï¼linkunit æ¯ã«0ããã¤ããï¼ 531 532 # ã¨ã©ã¼ãçºçãã¦ããããæé©åã¯å®æ½ããªã 507 @root_namespace.set_cell_id_and_domain # セルの ID とドメイン情報を設定(linkunit 毎に0からつける) 508 509 # エラーが発生していたら、最適化は実施しない 533 510 if ! $unopt then 534 511 dbgPrint( "## Optimizing: Link Region=#{@root_namespace.get_name}\n") -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.