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
右メニュー
  • トップページ
  • 旧トップページ
  • メニュー
  • 右メニュー
  • バックアップ


人気記事ランキング
  1. ImageJプラグインの作成 その2
  2. usb knoppix
  3. ソフト/wz_jsgraphics.js
  4. ImageJプラグインの作成
  5. 作成中
  6. 構造と処理を別の言語で書いて組合せる
  7. テスト
  8. サーバ/knoppix/nmap
  9. pdfファイルの調査
もっと見る
最近更新されたページ
  • 3840日前

    codeLayouter の記述メモ3
  • 3840日前

    トップページ
  • 5298日前

    codeLayouterを perlxsで使う
  • 5431日前

    GTK+ で openCV
  • 5432日前

    codeLayouter ver 0.03
  • 5438日前

    codeLayouter の記述メモ2
  • 5499日前

    ubuntu LiveUSB 3
  • 5571日前

    codeLayouter の記述メモ
  • 5613日前

    applescriptの編集
  • 5695日前

    ubuntu LiveUSB 2
もっと見る
人気記事ランキング
  1. ImageJプラグインの作成 その2
  2. usb knoppix
  3. ソフト/wz_jsgraphics.js
  4. ImageJプラグインの作成
  5. 作成中
  6. 構造と処理を別の言語で書いて組合せる
  7. テスト
  8. サーバ/knoppix/nmap
  9. pdfファイルの調査
もっと見る
最近更新されたページ
  • 3840日前

    codeLayouter の記述メモ3
  • 3840日前

    トップページ
  • 5298日前

    codeLayouterを perlxsで使う
  • 5431日前

    GTK+ で openCV
  • 5432日前

    codeLayouter ver 0.03
  • 5438日前

    codeLayouter の記述メモ2
  • 5499日前

    ubuntu LiveUSB 3
  • 5571日前

    codeLayouter の記述メモ
  • 5613日前

    applescriptの編集
  • 5695日前

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

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

  1. ゆるキャラ百科事典「ゆるペディア」
  2. 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
  3. beatmania IIDX SP攻略 @ wiki
  4. 東方同人CDの歌詞@Wiki
  5. グランツーリスモWiki
  6. モンスター烈伝オレカバトル@wiki
  7. イナズマイレブン 染岡さんと愉快な仲間たち wiki
  8. SQ用語辞典
  9. 魔法科高校の劣等生Wiki
  10. p5x 攻略wiki @ ウィキ
もっと見る
人気Wikiランキング

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

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

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

  1. MadTown GTA (Beta) まとめウィキ
  2. まどドラ攻略wiki
  3. シュガードール情報まとめウィキ
  4. R.E.P.O. 日本語解説Wiki
  5. Dark War Survival攻略
  6. SurrounDead 攻略 (非公式wiki)
  7. シミュグラ2Wiki(Simulation Of Grand2)GTARP
  8. カツドンチャンネル @ Wiki
  9. Wplace Wiki
  10. AviUtl2のWiki
もっと見る
全体ページランキング

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

  1. 参加者一覧 - ストグラ まとめ @ウィキ
  2. 我孫子 清十郎 - ストグラ まとめ @ウィキ
  3. 魔獣トゲイラ - バトルロイヤルR+α ファンフィクション(二次創作など)総合wiki
  4. ウイングガンダムゼロ【EW】 - 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
  5. 稼ぎ - 地球防衛軍6 @ ウィキ
  6. ミッション攻略 - 地球防衛軍6 @ ウィキ
  7. ウイングガンダムゼロ【EW】/ログ1 - 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
  8. 不幸な少女03 - 検索してはいけない言葉 @ ウィキ
  9. サーヴァント/一覧/クラス別 - Fate/Grand Order @wiki 【FGO】
  10. MOZU - ストグラ まとめ @ウィキ
もっと見る

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

2019 AtWiki, Inc.