| Function summary | |
| parse(input, prefix) | コマンド1個分の input を解析します。 prefix は派生技の実装のための引数で、普段は "" を指定します |
| parse_command(name, args) | コマンド名と引数リストを受け取り、適切な処理を実行します |
| parse_attack(name, args) | Skills に登録されているコマンドの処理を行います |
| parse_range(args, ind, max) | コマンド技の段指定を解析して、配列 ind に結果を挿入します。 成功時は0を、失敗時は問題のある段指定(int)を返します |
update = function(){
var text = document.prompt.recipe.value;
var inputs = text.replace(/\s+/g, "").match(/[^;]+/g);
var i;
init_status();
for(i = 0; i < inputs.length; i++){
if(inputs[i].length > 0){
parse(inputs[i], "");
}
}
document.prompt.result.value = HP_SETTING[0] - HP;
save_history(15);
} コマンド名 ( 引数の羅列 ) または コマンド名だけ
[\w\[\]@]+ または [\w\[\]@]+ \( [\d\-,]+ \)
( [\w\[\]@]+ ) ( \( [\d\-,]+ \) )?
数字の列 または 数字-数字
\d+ または \d+ \- \d+
X1(a1)>X2(a2) → X1(a1); X1X2(a2)
parse_command = function(name, args){
if(name in Skills){
parse_attack(name, args);
}
else if(name in STATE_COR){
State = name;
}
else if(name in SP && (args == null || args[0].match(/^\d+$/))){
SP[name](args != null ? parseInt(args[0]) : null);
}
else{
window.alert("コマンドを解析できません...);
}
} parse_attack = function(name, args){
var ind = new Array();
var i;
if(args == null){
for(i = 1; i <= Skills.HC[name]; ind[i-1] = i++);
} else {
var r = parse_range(args, ind, Skills.HC[name]);
if(r > 0){
window.alert(name + "に" + r + "段目は存在しません... ");
return;
}
}
for(i = 0; i < ind.length; Skills[name](ind[i++]));
}