atwiki-logo
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • このページの操作履歴
    • このウィキのページ操作履歴
  • ページ一覧
    • ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このウィキの更新情報RSS
    • このウィキ新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡(不具合、障害など)
ページ検索 メニュー
prepress-tips
  • 広告なしオファー
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
広告非表示(β版)
ページ一覧
prepress-tips
  • 広告なしオファー
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
prepress-tips
広告非表示 広告非表示(β)版 ページ検索 ページ検索 メニュー メニュー
  • 新規作成
  • 編集する
  • 登録/ログイン
  • 管理メニュー
管理メニュー
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • このページの操作履歴
    • このウィキのページ操作履歴
  • ページ一覧
    • このウィキの全ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ一覧(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このwikiの更新情報RSS
    • このwikiの新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡する(不具合、障害など)
  • atwiki
  • prepress-tips
  • codeLayouterを perlxsで使う

prepress-tips

codeLayouterを perlxsで使う

最終更新:2011年02月27日 15:50

Bot(ページ名リンク)

- view
管理者のみ編集可
最終更新日時: 2011/02/27   
 codeLayouter ver 0.03 を perlxs で使うための準備。
 
  • codeLayout_filename.bat
  • codeLayouter.pl
  • adjust_source.pl
  • xs_add.pl
  • codeLayout_filename.bat
  • codeLayouter.pl
  • adjust_source.pl
  • xs_add.pl
Edit

codeLayout_filename.bat

  • _filename のところを適当にリネームして使用する。
  • filename_index.txt に codeLayouter.pl を適用して
    filename.pl , filename.xs , filename_xs.pl を作り それぞれを補正する。
    filename_xs.pl は filename.xs に追加する。
  • filename.pl の文字コードを utf8 に変換する。
  • filename と同名のフォルダがあれば filename.xs をその中にコピーする。
codeLayout_filename.bat
@echo off 
cd /d "%~dp0" 

rem fn 
    set fn=%~n0
    set fn=%fn:codeLayout_=%
    echo new %fn% 

rem codeLayouter 
    set codeLayouter=perl codeLayouter.pl 
    echo/ && %codeLayouter% %fn%_index.txt || ( pause && exit ) 

rem adjust pl
    set ex=pl 
    ( if exist _.%ex% del _.%ex% ) && ren %fn%.%ex% _.%ex% 
    perl adjust_source.pl p < _.%ex% > %fn%.%ex% 
    if exist _.%ex% del _.%ex% 

rem adjust xs
    set ex=xs 
    ( if exist _.%ex% del _.%ex% ) && ren %fn%.%ex% _.%ex% 
    perl adjust_source.pl c < _.%ex% | perl -p xs_add.pl > %fn%.%ex% 
    if exist _.%ex% del _.%ex% 

rem adjust _xs.pl
    set ex=pl 
    ( if exist _xs.%ex% del _xs.%ex% ) && ren %fn%_xs.%ex% _xs.%ex% 
    perl adjust_source.pl p < _xs.%ex% | perl -pe "" >> %fn%.xs
    if exist _xs.%ex% del _xs.%ex% 

rem .pl language utf8 
    set ex=pl 
    ( if exist _.%ex% del _.%ex% ) && ren %fn%.%ex% _.%ex% 
    perl -n ^
      -e "BEGIN { use Encode qw( encode decode ) ; }" ^
      -e "/^.*/ ; print encode( 'utf8' , decode( 'cp932' , $& . \"\n\" ) ) ;" ^
      _.%ex% > %fn%.%ex% 
    if exist _.%ex% del _.%ex% 

rem copy xs
    echo/ && echo copy %fn%.xs
    if exist "%fn%\" copy %fn%.xs "%fn%\"

echo/ && pause 

codeLayouter.pl

  • codeLayouter.pl は codeLayouter ver 0.03 のものを使う。

adjust_source.pl

  • codeLayouter.pl の結果を補正する。
adjust_source.pl
my $pl = ( 0 < @ARGV && $ARGV[0] =~ /^p$/i ); 
my $c = ( 0 < @ARGV && $ARGV[0] =~ /^c$/i ); 
my $css = ( 0 < @ARGV && $ARGV[0] =~ /^css$/i ); 
my $js = ( 0 < @ARGV && $ARGV[0] =~ /^j$/i ); 
my $tag = ( 0 < @ARGV && $ARGV[0] =~ /^t$/i ); 
my $r = ( 0 < @ARGV && $ARGV[0] =~ /^r$/i ); 
my $dot = ( 0 < @ARGV && $ARGV[0] =~ /^d$/i ); 
my $uws = ( 0 < @ARGV && $ARGV[0] =~ /^u$/i ); 
my $as = ( 0 < @ARGV && $ARGV[0] =~ /^a$/i ); 
BEGIN{ my $post = 0 ; } 
while( <STDIN> ) { 
    $pl && do { 
        s,^(\s*)//,$1#,; 
        s,^/\*,$1=pod,; 
        s,^\*/,$1=cut,; 
        s,^(\s*\{\s*)//,$1#,; 
        s,^(?!\s*(?:my|our)\s)(\s*)(\S+\s*)\([^\)]*\)(\s*\{\s*)//,$1sub $2$3#,; 
        s,^(?!\s*sub\s)(\s*[^\{]*?[^\{\s])\s*;?\s*(\{\s*)//,$1 ; $2#,; 
        s,^(?!\s*sub\s)(\s*[^\{/]*;\s*)//,$1#,; 
    }; 
    $c && do { 
        ; 
    }; 
    $css && do { 
        m,^[^{;]*;?\s*{\s*//, && ( s"^([^{;]*);?(\s*{\s*)//"$1$2/*", s"(?=$)" */" ); 
        m,^\s*//, && ( s"^(\s*)//"$1/*", s"(?=$)" */" ); 
    }; 
    $js && do { 
        s,^(\s*)(\S+\s*\([^\)]*\)\s*\{\s*)//,$1function $2//,; 
        s,^(?!\s*function\s)(\s*[^\{;]*[^\{;\s])\s*;?\s*(\{\s*)//,$1 ; $2//,; 
        s,([\,\*])\;(?=\s*$),$1,; 
    }; 
    $tag && do { 
        m,^\s*//, && ( s/^\s*/$&<!-- /, s/$/ -->/ ), s,(>\s*);$,$1, ; 
        s,<\-([\w\-]+)>,</$1>,g ; 
    }; 
    $r && do { 
        s,^(\s*\S+\s*)(\([^\)]*\)\s*\{\s*)//,$1 <- function $2#,; 
        s,^(\s*\S+)(\s*)(;?\s*)//,$1 <- NULL$2; $3#,; 
        s,^(\s*)//,$1#,; 
    }; 
    $dot && do { 
        m,^[^{;]*;?\s*{\s*//, && ( s"^([^{;]*);?(\s*{\s*)//"$1$2/*", s"(?=$)" */" ); 
        m,^\s*//, && ( s"^(\s*)//"$1/*", s"(?=$)" */" ); 
    }; 
    $uws && do { 
        m,^[^{;]*;?\s*{\s*//, && s"^([^{;]*);?(\s*){\s*//"$1$2//" ; 
        m,^\s*}\s*$, && s"^(\s*)}(\s*)$"$1//$2" ; 
        m,^\s*ifb\s.*\S +endif;?(?=\s|$), && s"^(\s*)ifb(\s.*\S) +endif;?(?=\s|$)"$1if$2" ; 
        m,^\s*if\s.*?;(?=\s*$), && s"^(\s*if\s.*?);(?=\s*$)"$1" ; 
    }; 
    $as && do { 
        m,^[^{;]*;?\s*{\s*//, && s"^([^{;]*);?\s*{(\s*)//"$1--$2" ; 
        m,^\s*//, && s"^(\s*)//"$1--" ; 
        s,/\*,(*,g ; s,\*/,*),g ; s,\s*;(?=\s*$),, ; s,;;,\x0a,g ; 
        m,^\s*}\s*$, && s"^(\s*)}(\s*)$"$1$2" ; 
    }; 
    print; 
} 

xs_add.pl

  • filename.xs 内の関数の perl用入出力宣言を
    自動的に作って filename.xs に追加する。
xs_add.pl
our @types ;
our $types ;
our @flist ;

BEGIN {
    @types = ( 'void' , 'int' , 'double' , 'char\s*\*' , 'SV\s*\*' , 'AV\s*\*' ) ;
    $types = '(?:' . ( join '|' , @types ) . ')' ;
    @flist = () ;
}

/^\s*$types\s+[\w_]+\s*\((?:\s*$types\s+[\w_]+)?(?:\s*,*\s*$types\s+[\w_]+)*\s*\)\s*\{/ || next ;

my $str = $& ;

$str =~ /^\s*($types)\s+([\w_]+)\s*\(/ ; $str = $' ;
my $r = $1 ; my $f = $2 ;

$str =~ s,\s*\)\s*\{$,, ;
my @a = split ',' , $str ;

push @flist , join '' , (
    "\n$r\n" ,
    "$f( " , ( join ' , ' , map { s,^\s*,, ; s,\s*$,, ; /^$types\s+/ ? $' : $_ } @a ) , " )\n" ,
    map { "    $_\n"  } @a ,
) ;

END {
    print @flist , "\n" ;
}

Edit

「codeLayouterを perlxsで使う」をウィキ内検索
LINE
シェア
Tweet
prepress-tips
記事メニュー
メニュー

更新履歴

取得中です。


記事メニュー2
右メニュー
  • トップページ
  • 旧トップページ
  • メニュー
  • 右メニュー
  • バックアップ


最近更新されたページ
  • 3906日前

    codeLayouter の記述メモ3
  • 3906日前

    トップページ
  • 5363日前

    codeLayouterを perlxsで使う
  • 5496日前

    GTK+ で openCV
  • 5497日前

    codeLayouter ver 0.03
  • 5503日前

    codeLayouter の記述メモ2
  • 5564日前

    ubuntu LiveUSB 3
  • 5636日前

    codeLayouter の記述メモ
  • 5678日前

    applescriptの編集
  • 5761日前

    ubuntu LiveUSB 2
もっと見る
最近更新されたページ
  • 3906日前

    codeLayouter の記述メモ3
  • 3906日前

    トップページ
  • 5363日前

    codeLayouterを perlxsで使う
  • 5496日前

    GTK+ で openCV
  • 5497日前

    codeLayouter ver 0.03
  • 5503日前

    codeLayouter の記述メモ2
  • 5564日前

    ubuntu LiveUSB 3
  • 5636日前

    codeLayouter の記述メモ
  • 5678日前

    applescriptの編集
  • 5761日前

    ubuntu LiveUSB 2
もっと見る
ウィキ募集バナー
急上昇Wikiランキング

急上昇中のWikiランキングです。今注目を集めている話題をチェックしてみよう!

  1. 信長の野望Online ~局中法度書~  
  2. 信長の野望オンライン寄合所(本陣)@Wiki
  3. PC版Webサカ@ ウィキ
  4. デジタルモンスター まとめ@ ウィキ
  5. 千鳥の鬼レンチャン サビだけカラオケデータベース
  6. グノーシア台詞集 @ ウィキ
  7. クッキー☆解説Wiki
  8. 一般声優18禁出演作品まとめ @ ウィキ
  9. 異修羅非公式wiki
  10. 遊戯王未OCGwiki
もっと見る
人気Wikiランキング

atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!

  1. アニヲタWiki(仮)
  2. ゲームカタログ@Wiki ~名作からクソゲーまで~
  3. 初音ミク Wiki
  4. MADTOWNGTAまとめwiki
  5. ストグラ まとめ @ウィキ
  6. Grand Theft Auto V(グランドセフトオート5)GTA5 & GTAオンライン 情報・攻略wiki
  7. 検索してはいけない言葉 @ ウィキ
  8. モンスター烈伝オレカバトル2@wiki
  9. 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
  10. 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
もっと見る
新規Wikiランキング

最近作成されたWikiのアクセスランキングです。見るだけでなく加筆してみよう!

  1. MADTOWNGTAまとめwiki
  2. MadTown GTA (Beta) まとめウィキ
  3. 首都圏駅メロwiki
  4. まどドラ攻略wiki
  5. Last Z: Survival Shooter @ ウィキ
  6. シュガードール情報まとめウィキ
  7. ちいぽけ攻略
  8. ステラソラwiki
  9. 駅のスピーカーwiki
  10. 20XX @ ウィキ
もっと見る
全体ページランキング

最近アクセスの多かったページランキングです。話題のページを見に行こう!

  1. 参加者一覧 - MADTOWNGTAまとめwiki
  2. ブラック・マジシャン・ガール - アニヲタWiki(仮)
  3. 児童ポルノ 中国姉弟中学生近親相姦エロ動画 - 全裸でいかおどり@VIPPER支部
  4. 朕狼党 - MADTOWNGTAまとめwiki
  5. 【移転】Miss AV 見れない Missav.wsが見れない?!MissAV新URLはどこ?閉鎖・終了してない?missav.ai元気玉って何? - ホワイトハッカー研究所
  6. 魔獣トゲイラ - バトルロイヤルR+α ファンフィクション(二次創作など)総合wiki
  7. Z世代女子中学生のエロ動画だぉw - 全裸でいかおどり@VIPPER支部
  8. 参加者一覧 - ストグラ まとめ @ウィキ
  9. XVI - MADTOWNGTAまとめwiki
  10. 真崎杏子 - 遊戯王DSNTナイトメアトラバドール攻略Wiki@わかな
もっと見る

  • このWikiのTOPへ
  • 全ページ一覧
  • アットウィキTOP
  • 利用規約
  • プライバシーポリシー

2019 AtWiki, Inc.