12/01/09 21:30:39.83
盛り上がってるね。数式のパース書いてみたけど。個人的にはちゃんと
チェックできる奴が分かっていて使うeval()は必要悪、みたいに思う。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML//EN">
<html><head><title>???</title>
<script type="text/javascript">
var s = '1+2';
function exp() {
var v = term();
while(s.match(/^[+-]/)) {
if(s.match(/^[+]/)) { s = s.substring(1); w = exp(); v += w; }
else { s = s.substring(1); w = exp(); v -= w; } }
if(s.match(/./) && !s.match(/^[)]/)) throw 'syntax'; else return v;
}
function term() {
var v = fact();
while(s.match(/^[*/]/)) {
if(s.match(/^[*]/)) { s = s.substring(1); w = term(); v *= w; }
else { s = s.substring(1); w = term(); v /= w; } }
if(s.match(/./) && !s.match(/^[-+)]/)) throw 'syntax'; else return v;
}
つづく(2レスなのでご容赦を)