我想在if括号内对条件stmt进行分组。说我有一个来自我的contenteditable div的文本
if ( x==1 && (x>2 || (!x>2 || x<=0)) )
我希望他们成为相应的组并存储在像这样的数组中
condFragment.push('x==1 && (x>2 || (!x>2 || x<=0))');
condFragment.push('x==1');
condFragment.push('(x>2 || (!x>2 || x<=0))');
condFragment.push('x>2');
condFragment.push('(!x>2 || x<=0)');
condFragment.push('!x>2');
condFragment.push('x>2');
condFragment.push('x<=0');
通过检测条件运算符然后将它们并排拆分来启动它是否正确?修改分割功能?请帮忙。
我正在按照这种方式对它们进行分组,因为我将在稍后获取数组并对它进行评估以显示它是真还是假。我使用push因为这可能成为动态数组。
由此:
<div id="board">
<div>int main(){</div>
<div></div>
<div>if(x==1 && !x>2)</div>
<div>statement;</div>
<div>while(!x>5){</div>
<div>statement;}</div>
<div>}</div>
</div>
使用condFragment
内容
<div id="board">
<div>int main(){</div>
<div></div>
<div>
if(<span class="frag"><span class="frag">x==1</span> &&
<span class="frag">!<span class="frag">x>2</span></span></span>)
</div>
<div>statement;</div>
<div>while(!x>5){</div>
<div>statement;}</div>
<div>}</div>
</div>
答案 0 :(得分:1)
如果我是你,我会找到表达的每一面,然后递归地进一步分解每一面。
我会在每一侧寻找表达式而不是布尔运算符,但是你永远不会知道你是否找到了正确的运算符,除非你已经解析了左右表达式,所以为什么要比它更复杂呢?它必须是?
正如@fireflieslive所指出的,这将最终成为一个基本的树遍历。