【超高速】C/C++に代わる低級言語を開発したい 4
■ このスレッドは過去ログ倉庫に格納されています
0360デフォルトの名無しさん
2010/04/29(木) 14:19:45CExp.prototype.toString = function() {return "["+this.l+",\""+this.op+"\","+this.r+"]"}
// 戦闘力表
CExp.lpowers={".":200,"->":200,"*":190,"/":190,"%":190,
"+":180,"-":180,"<<":170,">>":170,"<":160,"<=":160,">":160,">=":160,
"==":150,"!=":150,"&":140,"^":130,"|":120,"&&":110,"||":100,",":80}
// 読み込み処理
CExp.read = function(str) {
var arr = str.split(/[\b\s]+/) // 文字列を配列にする
function battle(power) {
var result = arr.shift()
while (CExp.lpowers[arr[0]] > power) {// 演算子の力が強ければ結合
var operator = arr.shift() // 名前取出し
var nextresult = battle(CExp.lpowers[operator]) // 次の戦いを行う
result = new CExp(result, operator, nextresult) // 式作成
}
return result
}
return battle(0)// 力0で戦闘開始
}
alert(CExp.to_c(CExp.read("a == b | c >> 2 > 5 , b , c >> 2")))// 読み込み
</script>
結果<br/><textarea>
((((a==b)|((c>>2)>5)),b),(c>>2))
</textarea>
■ このスレッドは過去ログ倉庫に格納されています