★ソース最適化

「★ソース最適化」の編集履歴(バックアップ)一覧に戻る

★ソース最適化 - (2010/01/21 (木) 18:27:57) のソース

*情報
作者名:fuji、五十六
引用元:[[なでしこプログラム掲示板「ソース高速HTML化」>http://www.himanavi.net/cgi/nade-bbs/cbbs.cgi?mode=al2&namber=444&rev=&no=0]]
勝手に改変

*概要
ソースを最適化します。

具体的にはこんな変化があります。(↑が変化前 ↓が変化後)
 「てすてす」
 
 (『てすてす』)

 「あいうえお{変数A}かきくけこ」。
 
 (『あいうえお』&(変数A)&『かきくけこ』)。

これの作成にあたってfujiさんの[[★ソース高速HTML化]]を参考にさせて頂きました。
というかほとんど流用です。ごめんなさい。

*解説

※最適化の効果を確認してみるプログラム
引用+改変:[[なでしこプログラム掲示板「メモリ不足??」ツリーより 焼きそばさんの検証プログラム>http://www.himanavi.net/cgi/nade-bbs2/cbbs.cgi?mode=one&number=7258&type=7250&space=120&no=0]]
 ほげほげ=「hoge
 ほげ
 ホゲ」。
 
 A=システム時間。
 100000回
  親回数=回数
  TEMP=「{母艦パス}てすてす{ほげほげ[0]}」。
  もし、回数%1000=0ならば母艦のタイトルは回数。
 A=システム時間-A。
 「最適化前 {A}」を表示。
 
 A=システム時間。
 100000回
  親回数=回数
  TEMP=母艦パス&「てすてす」&ほげほげ[0]。
  もし、回数%1000=0ならば母艦のタイトルは回数。
 A=システム時間-A。
 「最適化後 」&Aを表示。

***引数
ソース:ソース本文(≠.nakoへの絶対パス)

***返り値
最適化されたソース

*サンプルプログラム
 A=(「.nako」のファイル選択)を開く。
 A=Aをソース最適化。
 Aを言う。

*//本体
 ●ソース最適化(ソースを|ソースの)
   '定数
   文字列色は"#000080"
   
   #    CR=CHR(13)
   
   //「"”『``{{・/*##//'’※
   囲み文字=`「
 "
 ”
 `&"『
 `
 `"&`
 {
 {
 /*
 ・
 #
 #
 //
 '
 ’
 ※`
   
   
   閉じ文字=`」"”`&"』``"&`}}`#*/ 
   
   囲み文字数=要素数(囲み文字)。
 
     
     最初部分=「」
     
     (ソース!=『』)の間
      最小文字数=文字数(ソース)
      番号=-1
      囲み文字を反復
        ソースで対象が何文字目。
        もし、(それ<最小文字数)かつ(それ>0)なら
          最小文字数=それ。
          番号=回数-1
          次囲み文字=対象。
         
      #関数を探す
      「●{~}■{~}*」を反復
        ソースを"^\t* * *{対象}"で正規表現マッチ。
        それ=それ\0。
        もし、(それ<>「」)かつ(何文字目(ソース,それ)<最小文字数)なら
          番号=囲み文字数+回数-1
          次囲み文字=対象。
      #次の囲み文字を言う。
      もし、番号=-1なら、抜ける。#囲み文字が見つからなかった場合。
     
      ソースの次囲み文字までを切り取る。
      最初部分=最初部分&それ。
      
      #囲み文字に応じて切り取り
      もし、番号<=9ならば
        もし、番号<=8ならば、
          もし、番号=8ならば
            次閉じ文字="*/"
          違えば
            次閉じ文字=MID(閉じ文字,番号+1,1)
        違えば、
          もし、(何文字目(ソース," "))<(何文字目(ソース,改行))ならば
            次閉じ文字=" "
          違えば
            次閉じ文字=改行。
      違えば、次閉じ文字=改行
      
      もし、次閉じ文字=改行なら、
         ソースの改行までを切り取る。
         切り取り部分=「{次囲み文字}{それ}」
         ソース=改行&ソース
      違えば、
         ソースの次閉じ文字までを切り取る。
         切り取り部分=「{次囲み文字}{それ}{次閉じ文字}」。
      
      もし、番号<6なら
        //ここから文字列
        文字列判定=切り取り部分の1から1文字抜き出す。
        もし、(文字列判定=『「』)ならば
          切り取り部分=切り取り部分の『{』を`』&(`に置換。
          切り取り部分=切り取り部分の『}』を`)&『`に置換。
          切り取り部分=切り取り部分の『{』を`』&(`に置換。
          切り取り部分=切り取り部分の『}』を`)&『`に置換。
          切り取り部分の1から1文字削除。切り取り部分=`(『`&切り取り部分。
          切り取り部分から1文字右端削除。切り取り部分=切り取り部分&`』)`。
          切り取り部分=切り取り部分の`&『』&`を空に置換。
          切り取り部分=切り取り部分の`『』&`を空に置換。
          切り取り部分=切り取り部分の`&『』`を空に置換。
          もし、(切り取り部分の1から2文字抜き出す=「((」)かつ(切り取り部分から2文字右部分=「))」)ならば
            切り取り部分の1から1文字削除。切り取り部分から1文字右端削除。
          
        もし、(文字列判定=『"』)ならば
          切り取り部分=切り取り部分の『{』を『`&(』に置換。
          切り取り部分=切り取り部分の『}』を『)&`』に置換。
          切り取り部分=切り取り部分の『{』を『`&(』に置換。
          切り取り部分=切り取り部分の『}』を『)&`』に置換。
          切り取り部分の1から1文字削除。切り取り部分=『(`』&切り取り部分。
          切り取り部分から1文字右端削除。切り取り部分=切り取り部分&『`)』。
          切り取り部分=切り取り部分の『&``&』を空に置換。
          切り取り部分=切り取り部分の『``&』を空に置換。
          切り取り部分=切り取り部分の『``&』を空に置換。
          もし、(切り取り部分の1から2文字抜き出す=「((」)かつ(切り取り部分から2文字右部分=「))」)ならば
            切り取り部分の1から1文字削除。切り取り部分から1文字右端削除。
      
      
      最初部分=最初部分&切り取り部分。
      
   完成文=最初部分&ソース。
   完成文を戻す。

----
- WinAPI利用してるとソースがむちゃくちゃになるかも・・・いずれ直します  -- 管理人  (2009-01-06 22:27:21)
- http://www.example.com エラー  -- http://www.example.com  (2010-01-21 18:27:57)
#comment()

----
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。