Changeset 321 for EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecsgen.rb
- Timestamp:
- Aug 23, 2017, 9:27:43 AM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecsgen.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r270 r321 7 7 # Copyright (C) 2008-2016 by TOPPERS Project 8 8 #-- 9 # ä¸è¨èä½æ¨©è 10 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 11 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 12 # å¤ã»åé 13 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 14 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 15 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 16 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 17 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 18 # ç¨ã§ããå½¢ã§åé 19 å¸ããå ´åã«ã¯ï¼åé 20 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 21 # è 22 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 23 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 24 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 25 # ç¨ã§ããªãå½¢ã§åé 26 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 27 # ã¨ï¼ 28 # (a) åé 29 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 30 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 31 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 32 # (b) åé 33 å¸ã®å½¢æ 34 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 35 # å ±åãããã¨ï¼ 36 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 37 # 害ãããï¼ä¸è¨èä½æ¨©è 38 ããã³TOPPERSããã¸ã§ã¯ããå 39 責ãããã¨ï¼ 40 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 41 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 42 ããã³TOPPERSããã¸ã§ã¯ãã 43 # å 44 責ãããã¨ï¼ 9 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 10 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 11 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 12 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 13 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 14 # スコード中に含まれていること. 15 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 16 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 17 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 18 # の無保証規定を掲載すること. 19 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 20 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 21 # と. 22 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 23 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 24 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 25 # 報告すること. 26 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 27 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 28 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 29 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 30 # 免責すること. 45 31 # 46 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 47 ã 48 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 49 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 50 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 51 # ã®è²¬ä»»ãè² ããªãï¼ 32 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 33 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 34 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 35 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 36 # の責任を負わない. 52 37 # 53 # $Id : tecsgen.rb 1011 2016-07-11 02:20:01Z coas-nagasima$38 # $Id$ 54 39 #++ 55 40 56 #= tecsgen : TECS ã®ã¸ã§ãã¬ã¼ã¿41 #= tecsgen : TECS のジェネレータ 57 42 # 58 #Authors:: ç³å·ãæä¹(HRP2Plugin) 59 #Authors:: åããæ(åççµåä»æ§) 60 #Authors:: æ²³ç°ãæºæ(NotifierPlugin) 61 #Authors:: é«ç°ãåºç« (ASP3 ã¸ã® TECS çµè¾¼ã¿) 62 #Authors:: é«æ¨ãä¿¡å°(ã©ã³ã¿ã¤ã ããã) 63 #Authors:: æç¬ãæç¾(TECS flow å®è£ 64 ) 65 #Authors:: éµé£¼ãæ¬å¹¸(ATK1Plugin) 66 #Authors:: 大山ãåå¸(ã¸ã§ãã¬ã¼ã¿å®è£ 67 , RPCPlugin, TracePlugin, MrubyBridgePlugin) 68 #Authors:: å±±æ¬ãå°ä¹(ã¸ã§ãã¬ã¼ã¿åæãããã¿ã¤ãå®è£ 69 ) 70 #Authors:: å°åãéé(ãã¹ãã³ã¼ãã®ä¸é¨) 71 #Authors:: å®ç©ãåä¹(ASP+TECS, EV3RT+TECS, mruby on TECSçå®è£ 72 ) 43 #Authors:: 石川 拓也(HRP2Plugin) 44 #Authors:: 原 拓(動的結合仕様) 45 #Authors:: 河田 智明(NotifierPlugin) 46 #Authors:: 高田 広章(ASP3 への TECS 組込み) 47 #Authors:: 高木 信尚(ランタイムヘッダ) 48 #Authors:: 成瀬 有美(TECS flow 実装) 49 #Authors:: 鵜飼 敬幸(ATK1Plugin) 50 #Authors:: 大山 博司(ジェネレータ実装, RPCPlugin, TracePlugin, MrubyBridgePlugin) 51 #Authors:: 山本 将也(ジェネレータ初期プロトタイプ実装) 52 #Authors:: 小南 靖雄(テストコードの一部) 53 #Authors:: 安積 卓也(ASP+TECS, EV3RT+TECS, mruby on TECS等実装) 73 54 # Authors list is in i-ro-ha order. 74 55 #Version:: see version.rb … … 81 62 82 63 ### 83 #= Array initializer ã® '{', '}' ã§å²ã¾ããå ´å84 # mikan AggregateInitializer ãªã©ãã¯ã©ã¹ãå¤æ´ãã¹ãã§ãã64 #= Array initializer の '{', '}' で囲まれた場合 65 # mikan AggregateInitializer など、クラスを変更すべきである 85 66 class Array 86 #=== CDL ã®æååãçæãã67 #=== CDL の文字列を生成する 87 68 def to_CDL_str 88 69 str = '{ ' … … 105 86 end 106 87 107 #=== RUBY ã©ã¤ãã©ãªããã¼ããã88 #=== RUBY ライブラリをロードする 108 89 # 109 # -L, $RUBYLIB, ã·ã¹ãã (/usr/lib/rub..ãªã©) ã®é ã«ãµã¼ããè¡ããã110 # exerb 対å¿ã®ãããä¸è¨ãã¹ã«ãã¡ã¤ã«ãè¦ã¤ãããªãå ´å require ãå®è¡ãã¦ã¿ã90 # -L, $RUBYLIB, システム(/usr/lib/rub..など) の順にサーチが行われる 91 # exerb 対応のため、上記パスにファイルが見つからない場合 require を実行してみる 111 92 # 112 # ãã©ã°ã¤ã³ã®å ´å㯠b_fatal = false ãæå®ããã¡ã¤ã«ããªãã¦ãã¨ã©ã¼åºåå¾ãå¦çç¶è¡ 113 # b_fatal = false ã®å ´å tecslib/core ããµã¼ããã¹ã«è¿½å ããã 114 #RETURN::Bool : true=æåã false=失æ 失æããå ´åãGenerator.error ã¯å¼ã³å 115 ã§åºåãã 93 # プラグインの場合は b_fatal = false を指定。ファイルがなくてもエラー出力後、処理続行 94 # b_fatal = false の場合 tecslib/core がサーチパスに追加される 95 #RETURN::Bool : true=成功、 false=失敗 失敗した場合、Generator.error は呼び元で出力する 116 96 def require_tecsgen_lib( fname, b_fatal = true ) 117 97 dbgPrint( "require_lib: #{fname}\n") … … 121 101 b_exception = false 122 102 123 # -L ã $RUBYLIB ã§æå®ããããã¹ããã³ã·ã¹ãã ã®ãã¹ãããµã¼ã 124 # exerb ã§ã¯ $LOAD_PATH 㯠["."] ã®ã¿å 125 ¥ã£ã¦ããããã 103 # -L 、 $RUBYLIB で指定されたパスおよびシステムのパスからサーチ 104 # exerb では $LOAD_PATH は ["."] のみ入っているようだ 126 105 ($library_path+$LOAD_PATH).each{ |path| 127 106 [ "", "tecslib/plugin/" ].each { |lp| 128 107 lib = File.expand_path( path ) + '/' + lp + fname 129 108 130 if File.exist? lib then # ãã¡ã¤ã«åå¦ã¨ä»ã®ã¨ã©ã¼ãåºå¥ããããåå¨ç¢ºèªããã109 if File.exist? lib then # ファイル存否と他のエラーを区別するため存在確認をする 131 110 begin 132 111 require( lib ) … … 145 124 146 125 if b_require == false && b_exception == false then 147 # exerb å¯¾å¿ "." ããµã¼ããã¹ã®æåã«å ãã148 # "tecslib/" 㯠RPCPlugin.rb, TracePlugin.rb ã®ããã«ç¨æãã¦ãã149 # RPCPlugin.rb, TracePlugin.rb ã tecslib ä¸ã§ãªããã°ä¸è¦ã«ãªããããã®ããã«ãã¦ãã126 # exerb 対応 "." をサーチパスの最初に加える 127 # "tecslib/" は RPCPlugin.rb, TracePlugin.rb のために用意してある 128 # RPCPlugin.rb, TracePlugin.rb が tecslib 下でなければ不要になるが、このようにしておく 150 129 ["","tecslib/plugin/"].each{ |lp| 151 130 path = lp + fname … … 155 134 rescue LoadError => e 156 135 # p "LoadError to load #{fname}" 157 # 2015.12.18 exerb çã§ãã©ã°ã¤ã³ã®ãã¼ãã§ã¨ã©ã¼ãåºãã®ã§ãç¡è¦ãã. ããããæããã¨ã©ã¼ã¯åºã¦ãã136 # 2015.12.18 exerb 版でプラグインのロードでエラーが出るので、無視する. おそらく昔からエラーは出ていた 158 137 # print_exception( e ) 159 138 rescue Exception => e 160 139 b_exception = true 161 # ææ³ã¨ã©ã¼ãªã©ãçºç140 # 文法エラーなどが発生 162 141 print_exception( e ) 163 142 break … … 167 146 168 147 if b_require == false then 169 # è¦ã¤ãããªãã£ã148 # 見つからなかった 170 149 if b_exception == false then 171 150 STDERR << "tecsgen: Fail to load #{fname}. Check $RUBYLIB environment variable or -L option\n" 172 151 end 173 # tecsgen ãæ§æãããã¡ã¤ã«ã®å ´åã¯ä¸æ¢ãã152 # tecsgen を構成するファイルの場合は中止する 174 153 if b_fatal then 175 154 STDERR << "tecsgen: Exit because of unrecoverble error\n" … … 180 159 return true 181 160 ensure 182 # $KCODE ã CDL ã®æåã³ã¼ãã«æ»ãã¦ãã161 # $KCODE を CDL の文字コードに戻しておく 183 162 set_kcode $KCODE_CDL 184 163 end 185 164 end 186 165 187 #=== ä¾å¤ã®è¡¨ç¤º166 #=== 例外の表示 188 167 #evar:: Exception 189 168 def print_exception( evar ) 190 # ããã¹ã¿ãã¯ãã¬ã¼ã¹ãåºãã¾ã§ãæéãããããããªãã°ã次ãã³ã¡ã³ãã¢ã¦ããã¦ã¿ãã¹ã169 # もしスタックトレースが出るまでい時間がかかるようならば、次をコメントアウトしてみるべし 191 170 print "*** Begin Ruby exception message ***\n" 192 171 puts( evar.to_s ) … … 211 190 end 212 191 213 #=== ã¨ã©ã¼ããã³è¦åã®ã¬ãã¼ã192 #=== エラーおよび警告のレポート 214 193 def print_report 215 194 msg = nil … … 229 208 end 230 209 231 #=== $KCODE ãè¨å®210 #=== $KCODE を設定 232 211 def set_kcode kcode 233 212 if ! $b_no_kcode then … … 299 278 # include RUNIT::Assert 300 279 301 ### ã°ãã¼ãã«å¤æ°å®ç¾©###302 303 # ã³ãã³ãã©ã¤ã³å¼æ°ã (Makefile.templ ã¸åºå)280 ### グローバル変数定義 ### 281 282 # コマンドライン引数 (Makefile.templ へ出力) 304 283 $arguments = "" 305 284 ARGV.each { |a| $arguments += " " + a } … … 325 304 $ram_initializer = false # bool: generate ram initializer 326 305 $region_list = {} #string array : region path which is generated 327 $generating_region = nil # Region: Region to optimisze & generate code # ã³ãã³ãã©ã¤ã³ãªãã·ã§ã³ã§ã¯ãªã 328 # Cell#is_generate? ã«ã¦åç 329 §ããã 306 $generating_region = nil # Region: Region to optimisze & generate code # コマンドラインオプションではない 307 # Cell#is_generate? にて参照される 330 308 $unit_test = false # bool: unit test verification 331 309 $kcode = nil # nil | String: Kanji code type "euc"|"sjis"|"none"|"utf8" … … 333 311 $no_banner = false # bool: not print banner 334 312 $print_version = false # bool: print version 335 $target = "tecs" # String: target name, ARGV[0] ããåè¨å®ããï¼"tecs" ã¯ä»®ã®ã¿ã¼ã²ãã)313 $target = "tecs" # String: target name, ARGV[0] から再設定する("tecs" は仮のターゲット) 336 314 $no_default_import_path = false # bool: no default import path 337 315 $c_suffix = "c" # suffix for C progorams (for C++ source) … … 362 340 end 363 341 364 # # æåã³ã¼ãã®è¨å®342 # # 文字コードの設定 365 343 if $IN_EXERB then 366 # KCODE_CDL, $KCONV_CDL ãä»®ã«è¨å®ãã (tecs_lang.rb ã§ããã«åè¨å®ããã)344 # KCODE_CDL, $KCONV_CDL を仮に設定する (tecs_lang.rb ですぐに再設定される) 367 345 $KCODE_CDL = "SJIS" # string: "EUC" | "SJIS" | "NONE" | "UTF8" 368 $KCONV_CDL = Kconv::SJIS # const: NONE ã«ã¯ ASCII ã対å¿ããã346 $KCONV_CDL = Kconv::SJIS # const: NONE には ASCII を対応させる 369 347 else 370 348 $KCODE_CDL = "EUC" # string: "EUC" | "SJIS" | "NONE" | "UTF8" 371 $KCONV_CDL = Kconv::EUC # const: NONE ã«ã¯ ASCII ã対å¿ããã372 end 373 # $KCODE_TECSGEN, $KCONV_TECSGEN ãä»®ã«è¨å®ãã (tecs_lang.rb ã§ããã«åè¨å®ããã)374 $KCODE_TECSGEN = "UTF8" # string: "EUC" ãã®ãã¡ã¤ã«ã®æåã³ã¼ãï¼ãªãã·ã§ã³ã§ã¯ãªãå®æ°ï¼349 $KCONV_CDL = Kconv::EUC # const: NONE には ASCII を対応させる 350 end 351 # $KCODE_TECSGEN, $KCONV_TECSGEN を仮に設定する (tecs_lang.rb ですぐに再設定される) 352 $KCODE_TECSGEN = "UTF8" # string: "EUC" このファイルの文字コード(オプションではなく定数) 375 353 $KCONV_TECSGEN = Kconv::UTF8 # const: 376 set_kcode( $KCODE_TECSGEN ) # ãã®ãã¡ã¤ã«ã®æåã³ã¼ããè¨å®354 set_kcode( $KCODE_TECSGEN ) # このファイルの文字コードを設定 377 355 378 356 end # initialize_global_var … … 380 358 def self.analyze_option( additional_option_parser ) 381 359 382 ### tecsgen ã³ãã³ããªãã·ã§ã³è§£æ###360 ### tecsgen コマンドオプション解析 ### 383 361 ARGV.options {|parser| 384 362 parser.banner = "Usage: tecsgen [options] files" … … 428 406 $kcode = code 429 407 } 430 # old_mode 㯠V1.0.C.22 ã§å»æ¢408 # old_mode は V1.0.C.22 で廃止 431 409 # parser.on('-o', '--old-mode', 'old mode' ){ 432 410 # $old_mode = true … … 497 475 498 476 def self.load_modules 499 ### tecsgen ã¢ã¸ã¥ã¼ã«ã®ãã¼ã####500 # -L ã§ãã¹æå®å¯è½ã¨ããããããããããã¼ããéå§ãã501 502 # tecsgen ãã¼ã¸ã§ã³ãã¡ã¤ã«ã®ãã¼ã503 # ãããå®è¡ããã¾ã§ tecsgen ã®ãã¼ã¸ã§ã³ã表示ã§ããªã504 # ãã®ãã¡ã¤ã«ã誤ã£ã¦èªã¿è¾¼ãã¨ãç°ãªããã¼ã¸ã§ã³åã表示ãã¦ãã¾ã477 ### tecsgen モジュールのロード #### 478 # -L でパス指定可能としたため、ここからロードを開始する 479 480 # tecsgen バージョンファイルのロード 481 # これを実行するまで tecsgen のバージョンを表示できない 482 # このファイルを誤って読み込むと、異なるバージョン名を表示してしまう 505 483 require_tecsgen_lib 'tecslib/version.rb' 506 484 if ! $no_banner || $print_version … … 514 492 end 515 493 516 # æåã³ã¼ã決å®ã®ããæåã«èªã¿ãã494 # 文字コード決定のため最初に読みこむ 517 495 require_tecsgen_lib 'tecslib/core/tecs_lang.rb' 518 496 … … 523 501 end 524 502 525 # syntaxobj.rb ã«ã¯ Node ãå®ç¾©ããã¦ããã®ã§ãæ©ã段éã§require503 # syntaxobj.rb には Node が定義されているので、早い段階で require 526 504 require_tecsgen_lib 'tecslib/core/syntaxobj.rb' 527 505 require_tecsgen_lib 'tecslib/core/pluginModule.rb' … … 543 521 require_tecsgen_lib 'tecslib/plugin/DomainPlugin.rb' 544 522 545 # C è¨èªãã¼ãµ523 # C 言語パーサ 546 524 require_tecsgen_lib 'tecslib/core/C_parser.tab.rb' 547 525 require_tecsgen_lib 'tecslib/core/ctypes.rb' … … 554 532 555 533 def self.setup 556 # $import_path, $tecspath ã調æ´534 # $import_path, $tecspath を調整 557 535 TECSGEN.adjust_exerb_path 558 536 559 # $import_path ã«ç°å¢å¤æ° $TECSGEN ããã³ãã®ç´ä¸ã追å537 # $import_path に環境変数 $TECSGEN およびその直下を追加 560 538 if $no_default_import_path == false then 561 # $TECSGEN ããã³ããã®ç´ä¸ã®ãã£ã¬ã¯ããªããã¹ã«è¿½å539 # $TECSGEN および、その直下のディレクトリをパスに追加 562 540 if $tecspath != "." then 563 541 TECSGEN.add_import_path $tecspath … … 570 548 } 571 549 rescue 572 # ç¡è¦550 # 無視 573 551 end 574 552 end 575 553 end 576 554 577 # ããã©ã«ãè¨å®555 # デフォルト設定 578 556 TECSGEN.set_default_config 579 557 580 # $target ã®è¨å®558 # $target の設定 581 559 $target = ARGV[0] 582 560 pos = $target.rindex( /[:\\\/]/ ) 583 561 if pos then 584 $target = $target[pos+1..-1] # ãã£ã¬ã¯ããªåºåããé¤ããæåå562 $target = $target[pos+1..-1] # ディレクトリ区切りを除いた文字列 585 563 end 586 564 pos = $target.rindex( /\./ ) 587 565 if pos then 588 $target = $target[0..pos-1] # æ¡å¼µåãåãé¤ããæåå589 end 590 591 # gen ãã£ã¬ã¯ããªã®ä½æ566 $target = $target[0..pos-1] # 拡張子を取り除いた文字列 567 end 568 569 # gen ディレクトリの作成 592 570 begin 593 571 if ! File.directory?( $gen_base ) then … … 615 593 end # TECSGEN 616 594 617 # è¤æ°ã®ã¸ã§ãã¬ã¼ã¿ã¤ã³ã¹ã¿ã³ã¹ãçæãããã¨ã¯ãå¯è½ã ãã以ä¸ã®åé¡ããã 618 # ã¯ã©ã¹å¤æ°ã®ãªã»ããã確å®ã«è¡ãå¿ 619 è¦ããã 595 # 複数のジェネレータインスタンスを生成することは、可能だが、以下の問題がある 596 # クラス変数のリセットを確実に行う必要がある 620 597 621 598 if $TECSCDE != true then -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.