top of page

定型文制御フォーマットを考える その2

執筆者の写真: snackvirtualsnackvirtual

更新日:2024年3月3日

いろいろ試した結果、mermaidというフォーマットでやってみることにした


文法制約を実際の処理に即して考えた



左側にIndex[Feeの反応文]、右側にそのあとのJump先Indexを書く

s000([Start]) --> s001
s001[あ、いらっしゃいませ!] --> s002

s000,s001はインデックスであり、文字列ならOK



入力が必要な場合は、下記の">key in]"を追加する

s001[あ、いらっしゃいませ!] --> s002
s002[初めてのご来店ですか?] --> s004>Key in] 

Key inという文章自体は何でもいいことにする

処理は">(任意)]"が存在すれば、入力が必要としてkey in待ちとし、ないときは0.5秒後に次の文にjumpする



分岐は分岐先を並列に並べる

s002[初めてのご来店ですか?] --> s004>Key in] 
s004 --> |Yes_No_Other::Yes|x000[初めまして…ですね。それでは…] --> s005
s004 --> |Yes_No_Other::No|x001[失礼しました。それでは…] --> s006
s004 --> |Yes_No_Other::Other|x002[えっと、もう一度お願いします] --> s002

入力が必要ということは、その入力でなんらかの処理が必要と考えられる

上記は分岐処理の様子を書いている

Key in後にYes/No/Otherの3種類に分岐するので、3つの文を書く

”| |” で ”|(処理)::(戻り値と比較する文字)|” を示している

その後ろのx000などはダミー(これがないとGUIで正しく表示されないため)なので、重複がなければOK


例えば

s004 --> |Yes_No_Other::Yes|x000[初めまして…ですね。それでは…] --> s005

は、s004つまりキー入力の結果をYes_No_Otherという処理をした結果の戻り値が"Yes"ならば、「初めまして…ですね」という文を出力して、s005というインデックスに移行する



戻る場合のIndexは左側のIndexを注目する

s002[初めてのご来店ですか?] --> s004>Key in] 

s004 --> |Yes_No_Other::Other|x002[えっと、もう一度お願いします] --> s002

「もう一度お願い」するのは再度Key inをお願いするので、s002に戻ることになる



処理が連続する場合には、最後に((pass))を付けてUIを見やすくする

s022 --> |Yes_No_Other::Yes  |x009[ありがとうございます。重複がないか確認しますね] --> s023((pass))
s023 --> |Check_ID::ID_exist|x012[IDが重複していました。申し訳ありませんが、他のIDでもう一度お願いします] --> s020

このように完成した



閲覧数:0回0件のコメント

最新記事

すべて表示

Comments


bottom of page