Changeset 321 for EcnlProtoTool/trunk/asp3_dcre/utils/gentest.rb
- Timestamp:
- Aug 23, 2017, 9:27:43 AM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/asp3_dcre/utils/gentest.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r270 r321 8 8 # Graduate School of Information Science, Nagoya Univ., JAPAN 9 9 # 10 # ä¸è¨èä½æ¨©è 11 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 12 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 13 # å¤ã»åé 14 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 15 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 16 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 17 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 18 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 19 # ç¨ã§ããå½¢ã§åé 20 å¸ããå ´åã«ã¯ï¼åé 21 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 22 # è 23 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 24 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 25 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 26 # ç¨ã§ããªãå½¢ã§åé 27 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 28 # ã¨ï¼ 29 # (a) åé 30 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 31 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 32 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 33 # (b) åé 34 å¸ã®å½¢æ 35 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 36 # å ±åãããã¨ï¼ 37 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 38 # 害ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ããå 40 責ãããã¨ï¼ 41 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 42 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 43 ããã³TOPPERSããã¸ã§ã¯ãã 44 # å 45 責ãããã¨ï¼ 10 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 11 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 12 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 13 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 14 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 15 # スコード中に含まれていること. 16 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 17 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 18 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 19 # の無保証規定を掲載すること. 20 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 21 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 22 # と. 23 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 24 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 25 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 26 # 報告すること. 27 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 28 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 29 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 30 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 31 # 免責すること. 46 32 # 47 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 48 ã 49 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 50 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 51 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 52 # ã®è²¬ä»»ãè² ããªãï¼ 33 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 34 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 35 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 36 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 37 # の責任を負わない. 53 38 # 54 # $Id : gentest.rb 1011 2016-07-11 02:20:01Z coas-nagasima$39 # $Id$ 55 40 # 56 41 57 42 # 58 # ãã¹ãããã°ã©ã çæãã¼ã«43 # テストプログラム生成ツール 59 44 # 60 45 61 46 # 62 # çæåä½ã決ããããã®è¨å®47 # 生成動作を決めるための設定 63 48 # 64 49 $parameterDefinition = { … … 117 102 118 103 # 119 # å¦çåä½ã®ã³ã¼ããæ ¼ç´ããã¯ã©ã¹104 # 処理単位のコードを格納するクラス 120 105 # 121 106 class PUCode 122 # åæå107 # 初期化 123 108 def initialize(puName) 124 @puName = puName # å¦çåä½ã®åå125 @currentCount = "" # å¦çã«ã¦ã³ã126 @countFlag = false # å¦çã«ã¦ã³ãã使ãããã127 @code = Hash.new { |h,k| h[k] = [] } # å¦çåä½ã®ã³ã¼ã128 @variableList = {} # å¦çåä½ã®å¤æ°129 @silFlag = false # SIL ã使ãããã130 131 # å¦çã«ã¦ã³ãå¤æ°åã®çæ109 @puName = puName # 処理単位の名前 110 @currentCount = "" # 処理カウント 111 @countFlag = false # 処理カウントが使われたか 112 @code = Hash.new { |h,k| h[k] = [] } # 処理単位のコード 113 @variableList = {} # 処理単位の変数 114 @silFlag = false # SILが使われたか 115 116 # 処理カウント変数名の生成 132 117 case puName 133 118 when /^TASK([0-9]*)$/ … … 148 133 end 149 134 150 # å¦çã«ã¦ã³ãã®è¨å®135 # 処理カウントの設定 151 136 def setCount(count) 152 137 @countFlag = true if count != "" … … 154 139 end 155 140 156 # å¦çã«ã¦ã³ãã®ã¤ã³ã¯ãªã¡ã³ã141 # 処理カウントのインクリメント 157 142 def incrementCount 158 143 if @currentCount != "" … … 161 146 end 162 147 163 # ã³ã¼ãã®è¿½å148 # コードの追加 164 149 def append(*lines) 165 150 lines.each do |line| … … 168 153 end 169 154 170 # å¤æ°ã®è¿½å155 # 変数の追加 171 156 def addVariable(varName, typeName) 172 157 @variableList[varName] = typeName 173 158 end 174 159 175 # SIL ã®ä½¿ç¨160 # SILの使用 176 161 def useSil 177 162 @silFlag = true 178 163 end 179 164 180 # å¦çåä½ã®ã³ã¼ãã®åºå165 # 処理単位のコードの出力 181 166 def generateCode 182 # ä¸è¦ãªå¦çåä½ã®å¤å®167 # 不要な処理単位の判定 183 168 return if @code.length == 0 184 169 185 # å¦çã«ã¦ã³ãå¤æ°ã®çæ170 # 処理カウント変数の生成 186 171 if @countFlag 187 172 print("\nstatic uint_t\t#{@count_var} = 0;\n") 188 173 end 189 174 190 # é¢æ°ãããã®çæ175 # 関数ヘッダの生成 191 176 case @puName 192 177 when /^TASK([0-9]*)$/ … … 272 257 273 258 # 274 # ãµã¼ãã¹ã³ã¼ã«å¼ã³åºãã®èªã¿è¾¼ã¿259 # サービスコール呼び出しの読み込み 275 260 # 276 261 def genServiceCall(pu, svc_call, error_code) … … 293 278 294 279 if !error_code 295 # E_OK ãè¿ãå ´å280 # E_OKが返る場合 296 281 pu.append("\tcheck_ercd(ercd, E_OK);", "") 297 282 elsif error_code == "noreturn" 298 # ãªã¿ã¼ã³ããªãå ´å283 # リターンしない場合 299 284 pu.append("") 300 285 else … … 304 289 305 290 # 306 # ãã¹ãéå§ã³ã¼ãã®çæ291 # テスト開始コードの生成 307 292 # 308 293 def testStartCode(pu) 309 # ãã¹ãéå§ã³ã¼ãã¯ä¸åº¦ã®ã¿åºåãã294 # テスト開始コードは一度のみ出力する 310 295 if $startFlag == 0 311 296 pu.append("\ttest_start(__FILE__);", "") … … 315 300 316 301 # 317 # ã¿ã¼ã²ããä¾åé¨é¢æ°ã®æ¯ãèãã®èªã¿è¾¼ã¿302 # ターゲット依存部関数の振る舞いの読み込み 318 303 # 319 304 def targetFunction(line, checkNum) … … 322 307 line = $2 323 308 if (pu = $puList[functionName]).nil? 324 # æ°ããå¦çåä½ã®çæ309 # 新しい処理単位の生成 325 310 pu = $puList[functionName] = PUCode.new(functionName) 326 311 pu.setCount("1") … … 352 337 353 338 # 354 # ãã¹ãã¹ã¯ãªããã®èªã¿è¾¼ã¿339 # テストスクリプトの読み込み 355 340 # 356 341 def parseLine(line) 357 342 if /^==\s*(([a-zA-Z_]+)[0-9]*)(.*)$/ =~ line 358 # å¦çåä½ã®éå§343 # 処理単位の開始 359 344 $procFlag = 1 360 345 puName = $1 361 346 line2 = $3 362 347 if (pu = $puList[puName]).nil? 363 # æ°ããå¦çåä½ã®çæ348 # 新しい処理単位の生成 364 349 pu = $puList[puName] = PUCode.new(puName) 365 350 end … … 378 363 pu = $currentPu 379 364 if /^([0-9]+\:)\s*(.*)$/ =~ line 380 # ãã§ãã¯ãã¤ã³ãçªå·ã®å¦ç365 # チェックポイント番号の処理 381 366 originalCheckNum = $1 382 367 line = $2 … … 423 408 424 409 # 425 # ã¨ã©ã¼ãã§ãã¯410 # エラーチェック 426 411 # 427 412 if ARGV.length < 1 … … 430 415 431 416 # 432 # åæå417 # 初期化 433 418 # 434 419 inFileName = ARGV.shift 435 420 436 421 # 437 # ã¹ã¯ãªãããã¡ã¤ã«èªã¿è¾¼ã¿å¦ç438 # 439 $lastCheckPoint = 0 # æå¾ã®ãã§ãã¯ãã¤ã³ãçªå·440 $procFlag = 0 # ã¹ã¯ãªããå¦çä¸ãã©ã°441 $startFlag = 0 # ãã¹ãéå§ã³ã¼ãã®åºåãã©ã°442 $currentPu = nil # èªã¿è¾¼ã¿ä¸ã®å¦çåä½443 $puList = {} # å¦çåä½ã®ãªã¹ã422 # スクリプトファイル読み込み処理 423 # 424 $lastCheckPoint = 0 # 最後のチェックポイント番号 425 $procFlag = 0 # スクリプト処理中フラグ 426 $startFlag = 0 # テスト開始コードの出力フラグ 427 $currentPu = nil # 読み込み中の処理単位 428 $puList = {} # 処理単位のリスト 444 429 445 430 begin … … 471 456 472 457 # 473 # ãã¹ãããã°ã©ã åºåå¦ç458 # テストプログラム出力処理 474 459 # 475 460 $puList.keys.sort.each do |puName| -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.