Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Разбор вложенных структур (парсинг CSS) (https://javascript.ru/forum/misc/25226-razbor-vlozhennykh-struktur-parsing-css.html)

Octane 29.01.2012 18:01

Одногруппник диплом такой делал http://code.google.com/p/extcss/ может быть будет полезен код, хоть и на пхп. Эту штуку он использовал, пока работал верстальщиком.

monolithed 29.01.2012 18:27

Цитата:

Сообщение от Octane
Одногруппник диплом такой делал http://code.google.com/p/extcss/ может быть будет полезен код

Ага, то что надо.
Цитата:

Сообщение от Octane
хоть и на пхп

Не особо важно, главное алгоритм. Мне все равно на С++ писать)

trikadin 29.01.2012 21:23

monolithed, ну, в принципе, сами регэкспы работают посимвольно. Поэтому можно считать, что вы просто сэкономили себе время)

monolithed 29.01.2012 21:58

Цитата:

Сообщение от trikadin
ну, в принципе, сами регэкспы работают посимвольно.

Минус регексов в том, что для такой грамматики очень сложно предусмотреть все варианты, нужно сперва почистить код от табуляции и пробелов и молится чтобы не вылез где-нибудь стоп-символ. К тому же эффективным регексов очень низкая из-за повышенной асимптотической сложности.

Цитата:

Сообщение от trikadin
Поэтому можно считать, что вы просто сэкономили себе время)

В С++ нет аналогов решению с регексами, по этому придется все-таки копать по ссылке Octane, там как раз без них.

trikadin 29.01.2012 22:14

Цитата:

Сообщение от monolithed
В С++ нет аналогов решению с регексами, по этому придется все-таки копать по ссылке Octane, там как раз без них.

Да, уже понял, что у вас C++ (хотя наверняка есть либы под него).

monolithed 29.01.2012 22:19

Цитата:

Сообщение от trikadin
хотя наверняка есть либы под него

В новом стандарте С++11 есть регексы, просто сама идеология очень сильно отличается

Aetae 29.01.2012 22:23

По ссылке Octane, всё тоже на регэкспах, только сложнее.)

monolithed 29.01.2012 22:26

Цитата:

Сообщение от Aetae
По ссылке Octane, всё тоже на регэкспах

Не совсем, фактически что мне нужно там выполняет этот кусок:

while($j>$j_begin) {
	if(preg_match('/}/', $text[$j])) {
		$j_temp_end = $j;
		
		while(1) {
			$j--;
			
			if(preg_match('/}/', $text[$j]))
				$z++;
				
			if(preg_match_all('/(.*){/U', $text[$j], $temp_vars, PREG_SET_ORDER)) {
				if(! $z) {
					$names[1] = $temp_vars[0][1];
					$recompile = 1;
					$j_temp_begin = $j;
					break;
				} 
				else {
					$z--;
				}
			}
		}
		break;
	}
 $j--;
}


А preg_match выполняет роль split'a

Правда я пока не понял как там имя селекторов получается :D


Часовой пояс GMT +3, время: 18:33.