2013-08-31 2 views
-2

Я хочу сгруппировать условную 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

Непонятно, что вы делаете. У вас также есть тег jQuery, когда он, похоже, не имеет ничего общего с jQuery. Зачем использовать 'push()', когда вы можете просто сделать массив прямо? Я даже не уверен, что использование такого массива - хороший ход, не зная, что именно вы пытаетесь выполнить. Я не спускал вниз, но я думаю, что понятно, почему кто-то будет. – m59

+0

lol глубина первого поиска? –

+0

Я хочу сгруппировать их, в которых они имеют логическое значение. потому что они будут динамически использоваться в некоторой точке кода. – extraRice

ответ

1

Если бы я был вами, я бы найти каждую сторону выражения, а затем рекурсивно разбить каждую сторону дальше.

Я бы искал выражение с каждой стороны, а не логический оператор, хотя, beacuse, вы никогда не узнаете, нашли ли вы правильный оператор, если вы уже не разобрали левое и правое выражения, так зачем делать его более сложным чем это должно быть?

Как указано в @fireflieslive, это станет основным обходом дерева.