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

prepress-tips

codeLayouter の記述メモ

最終更新:2010年05月30日 11:19

Bot(ページ名リンク)

- view
管理者のみ編集可
最終更新日時: 2010/05/30   
 
  • codeLayouter 再検討
  • codeLayouter 利用時のひな形
  • codeLayouter 再検討
  • codeLayouter 利用時のひな形
Edit

codeLayouter 再検討

  • codeLayouter のもともとの発想は ...
    • 構造は日本語プログラムで
    • 処理は通常のプログラム言語で
    • 書いて 組合わせる。
  • 今までの検討は ...
    • 事始め → 構造と処理を別の言語で書いて組合せる
    • Rで → 構造と処理を別の言語で書いて組合せる 4 , 構造と処理を別の言語で書いて組合せる 5
    • R風perl → 構造と処理を別の言語で書いて組合せる 6
    • オブジェクト指向 → 構造と処理を別の言語で書いて組合せる 7

  • 新しく取り入れたい発想は ...
    • 日本語プログラム , 日本語シンボル をもっと広く アノテーション として考えて
      • 構造を アノテーション で記述する。
      • 意味を アノテーション で記述する。
      • アノテーション を アノテーション に変換する。
    • いろいろな定義を 位置・名前・内容 を分離して配置する。
    • index は index の世界で閉じ detail は detail の世界で閉じる。
  • そのほかに ...
    • 余分な ; の挿入を抑える。
    • コード中に / があっても変換する。
    • 精密さを求めると java になるので やりすぎに注意する。

検討中の wgc_pl_index.txt
 /?- 処理の構造
 
 * ~ wgc問題を解く /
     / ~ プログラムの制御
     ? タイトル //
         / msg( タイトル )
     ? 初期状態 //
     ? 解の配列 //
         /? ** 解の配列 に追加 ( string )
         / ~ GoalSeeker
         / 初期状態 からゴールを探し -> 解の配列
         / msg( 解の配列 )
 
 * ~ プログラムの制御 /
     ? msg //
         /? ** ( Message )を表示する
     ? オプション //
         /? ** デバグ表示オプションの書式
     ? デバグ表示するとき //
 
 * ~ GoalSeeker /
     ? 状態推移 //
         /? * 状態推移 を初期化
         /? ** 状態推移 に追加 ( State ) , ** 状態推移 から最後の状態を削除
     ? 一度あった //
         /? * 一度あった を初期化
         /? ** 一度あった ( State )
         /? ** 一度あった に追加 ( State ), ** 一度あった から削除 ( State )
     / ~ 状態の操作
     ? GoalSeek //
         /? ** start , ** ( State )からゴールを探し -> 解の配列
 
 * GoalSeek // GoalSeek( 状態 , start )
     / if( start ) { 状態推移 を初期化 ; 一度あった を初期化 }
     ? 状態の一意表現 //
         / 状態の一意表現 = 状態の一意の文字列表現
     / if( 一度あった ( 状態の一意表現 ) ) { return }
     / if( ! 制約を満たしているか ) { return }
     / if( ゴールか ) { ゴールですること ; return }
     / 新しい状態になったとき すること
     / 一度あった に追加 ( 状態の一意表現 )
     ? どれか //
     / for どれか ( 連れていけるものは ) { GoalSeek( どれか を連れていったあと ) }
     / 一度あった から削除 ( 状態の一意表現 )
     / 前の状態に戻るとき すること
 
 /?-- 状態の操作
 
 * ~ 状態の操作 /
     /? * 状態
     ? 状態の一意の文字列表現 //
     ? ゴールか //
     ? ゴールですること //
     ? 新しい状態になったとき すること //
     ? 前の状態に戻るとき すること //
     / ~ wgc問題の操作
     ? 制約を満たしているか //
     ? 連れていけるものは //
     ? ( One )を連れていったあと //
 
 * ~ wgc問題の操作 /
     /? * One
     /? * fがいる , * wgの数 , * gcの数
     /? * どれか1つ , * 反対側のどれか1つ
     /? * fとOneを除く , * fとOneを加える
 
 /?- 実ファイルの構造
 
 /name wgc by perl / wgc_pl.pl
     / ~ wgc問題を解く
 
 /name 未指定 /
 
 /use / wgc_pl_detail.txt

検討中の wgc_pl_detail.txt
 /?- wgc問題を解く
 
 * タイトル // my $Title
     $Title = '狼・山羊・キャベツの川渡し問題 を解く' ;
 * 初期状態 // my $InitialState
     $InitialState = 'fwgc' ;
 * 解の配列 // my @AnswerArray
     @AnswerArray = () ;
 
 ** 解の配列 に追加 \(( string )\) /
 **~    push @AnswerArray , $1
 
 /?- プログラムの制御
 
 * msg // msg( MessageArray )
     print map { "$_\x0a" } @_ ;
 
 ** ( Message )を表示する /
 **~    msg( $1 )
 
 * オプション // Option()
     @ARGV ? $ARGV[0] : '' ;
 
 ** デバグ表示オプションの書式 /
 **~    m,d,i
 
 * デバグ表示するとき // WhenDebug()
     / オプション =~ デバグ表示オプションの書式
 
 /?- goalseeker
 
 * 状態推移 // @StateTrans
     / 状態推移 を初期化
 * 状態推移 を初期化 /
     @StateTrans = () ;
 
 ** 状態推移 に追加 \(( State )\) /
 **~    push @StateTrans , $1
 ** 状態推移 から最後の状態を削除 /
 **~    pop @StateTrans
 
 * 一度あった // %Twice
     / 一度あった を初期化
 * 一度あった を初期化 /
     $Twice = () ;
 
 ** 一度あった \(( State )\) /
 **~    $twice{ $1 }
 ** 一度あった に追加 \(( State )\) /
 **~    $twice{ $1 } = 1 ;
 ** 一度あった から削除 \(( State )\) /
 **~    delete $twice{ $1 } ;
 
 * start / $_[1]
 
 * 状態の一意表現 // my $StateString
 * どれか // my $one
 
 ** ( State )からゴールを探し -> 解の配列 /
 **~    GoalSeek( $1 , 'Start' )
 
 /?- 状態の操作
 
 * 状態 / $_[0]
 
 * 状態の一意の文字列表現 // StateString( 状態 )
     / join '', sort split '', 状態
 
 * ゴールか // IsGoal( 状態 )
     / 状態 eq ''
 
 * ゴールですること // ThingsToDoAtGoal( 状態 )
     ? _状態推移の文字列 / my $StateTransString
         / _状態推移の文字列 = join ' → ', 状態推移 , 状態の一意の文字列表現
     / if( デバグ表示するとき ) { msg( _状態推移の文字列 ) }
     / 解の配列 に追加 ( _状態推移の文字列 )
 
 * 新しい状態になったとき すること // ThingsToDoAtNewState( 状態 )
     ? _状態の一意表現 / my $StateString
         / _状態の一意表現 = 状態の一意の文字列表現
     / if( デバグ表示するとき ) { msg( _状態の一意表現 ) }
     / 状態推移 に追加 ( _状態の一意表現 )
 
 * 前の状態に戻るとき すること // ThingsToDoAtBack( 状態 )
     / 状態推移 から最後の状態を削除
 
 *制約を満たしているか // FillRestrict( 状態 )
     / if( fがいる ) { wgの数 > 0 && gcの数 > 0 }
     / else { wgの数 < 2 && gcの数 < 2 }
 
 *連れていけるものは // PossibleToTake( 状態 )
     / if( fがいる ) { どれか1つ } else { 反対側のどれか1つ }
 
 *( One )を連れていったあと // TakeOne( 状態 , One )
     / if( デバグ表示するとき ) { msg( "- ". One ) }
     / if( fがいる ) { fとOneを除く } else { fとOneを加える }
 
 /?- wgc問題の操作
 
 * One / $_[1]
 
 * fがいる /
     / do { 状態 =~ m,f, }
 * wgの数 /
     / scalar @{[ 状態 =~ m,[wg],g ]}
 * gcの数 /
     / scalar @{[ 状態 =~ m,[gc],g ]}
 * どれか1つ /
     / ( sort split '', 状態 )
 * 反対側のどれか1つ /
     / ( sort "fwgc" =~ m,[^ 状態 ],g )
 * fとOneを除く /
     / ( join '', 状態 =~ m,[^f One ],g )
 * fとOneを加える /
     / ( 状態 . "f" . ( One ne "f" ? One : "" ) )
 

  • index は “index”らしくなり detail の記述は 既存のコードに近くなった。
    呼び出し方のアノテーション も入りそう。
  • detail は 既存コードから自動作成でき index は detail から自動作成できそう。
    index の修正を detail 側に 自動的にマージ できないか。
  • アノテーション→アノテーション変換 はもっと検討が必要。
Edit

codeLayouter 利用時のひな形

作成中。

処理名_index.txt の記述例
/name 処理名 html / 処理名.html
    /? 冒頭の記述
    ・・・

/name 処理名 js / 処理名.js
    /? 冒頭の記述
    ・・・

/?- 処理

    * 処理の記述 /
        / 処理の詳細の記述
        ・・・

/?- 実ファイルの構造

/name 処理名 html /

    / HTMLの記述
    * HTMLの記述 /
        / HTML header
        / タグの記述
        / HTML footer

    * タグの記述 /
        ・・・

/name 処理名 js /

    / 変数宣言の記述
    / 処理の記述

    * 変数宣言の記述 /
        / 処理の変数宣言
        ・・・

    * 処理の記述 /
        / 処理の記述
        ・・・

/use / 処理名_detail.txt

処理名_detail.txt の記述例
/?- 処理 詳細

    * 変数の記述 / 変数のシンボル
    ・・・

    * 処理の変数宣言 /
        / 変数の宣言と初期化
        ・・・
        ? 関数呼び出しの記述 // 関数のシンボル
        ・・・

    *処理の詳細の記述 /
        ・・・

    * 関数呼び出しの記述 /
        ・・・

  • 終了タグの記述
    • <tag -> や <-tag> に置き換える。
  • 余分な ; の発生を抑える
    • 1行 と 複数行 のコードの記述を使い分ける。
    • コードの記述の終わりに /? を入れる。

adjust_source.pl
my $pl = ( 0 < @ARGV && $ARGV[0] =~ /^[p]$/i );
my $css = ( 0 < @ARGV && $ARGV[0] =~ /^[c]$/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 );
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#,;
    };
    $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" ;
    };
    print;
}

start.js
cmd = WScript.Arguments.Item( 0 );
cmd = '"' + cmd.replace( /,/g, '" "' ) + '"';
WScript.CreateObject( "WScript.Shell" ).exec( cmd );
  //WScript.Echo( cmd );

codeLayout_処理名.bat
@echo off
cd /d "%~dp0"

set codeLayouter=c:\mytools\codeLayouter.exe
set browser=C:\Program Files\Fenrir ^& Co\Grani\bin\Grani.exe

set fn=%~n0
set fn=%fn:codeLayout_=%

echo new %fn%
echo/ && "%codeLayouter%" %fn%_index.txt || ( pause && exit )

set ex=js

echo/ && echo adjust %fn%.%ex%
( if exist _.%ex% del _.%ex% ) && ren %fn%.%ex% _.%ex%
perl adjust_source.pl j < _.%ex% > %fn%.%ex%
if exist _.%ex% del _.%ex%

( if exist _.%ex% del _.%ex% ) && ren %fn%.%ex% _.%ex%
perl -n ^
  -e "BEGIN { use Encode qw( encode decode ) ; }" ^
  -e "print ;" ^
  _.%ex% > %fn%.%ex%
if exist _.%ex% del _.%ex%

set ex=html

echo/ && echo adjust %fn%.%ex%
( if exist _.%ex% del _.%ex% ) && ren %fn%.%ex% _.%ex%
perl adjust_source.pl t < _.%ex% > %fn%.%ex%
if exist _.%ex% del _.%ex%

( if exist _.%ex% del _.%ex% ) && ren %fn%.%ex% _.%ex%
perl -n ^
  -e "BEGIN { use Encode qw( encode decode ) ; }" ^
  -e "print ;" ^
  _.%ex% > %fn%.%ex%
if exist _.%ex% del _.%ex%

echo/ && echo start browsing %fn%.%ex%
rem cscript //nologo //b start.js "%browser%,%~dp0%fn%.%ex%"

echo/ && pause

Edit

「codeLayouter の記述メモ」をウィキ内検索
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.