http://lesscss.org/
это хуйню смотрели?
Это симпатичней. Привычней наблюдать "скобочную" иерархию, а не отступами. Наверное, сложно перестраивать мозги с PHP на SASS … здесь считаем скобки, а здесь пробелы.
Форум → Программирование → PHP для идиотов → Sass для PHP
Страницы: ← Предыдущая страница • Следующая страница →
1 октября 2009 г. 15:38, спустя 23 секунды
http://lesscss.org/
это хуйню смотрели?
1 октября 2009 г. 16:21, спустя 42 минуты 45 секунд
лишь бы было зачем, а привыкнуть как известно дело n времени
http://lesscss.org/
это хуйню смотрели?
Это симпатичней. Привычней наблюдать "скобочную" иерархию, а не отступами. Наверное, сложно перестраивать мозги с PHP на SASS … здесь считаем скобки, а здесь пробелы.
1 октября 2009 г. 19:14, спустя 2 часа 52 минуты 46 секунд
1 октября 2009 г. 19:32, спустя 17 минут 49 секунд
1 октября 2009 г. 21:04, спустя 1 час 20 минут 36 секунд
1 октября 2009 г. 21:06, спустя 1 минуту 27 секунд
зассал?)
"- цвет. это или предопределённое название или #nnn или #nnnnnn или rgb(r,g,b)"
От этого сразу расхотелось придумывать БНФ :-)
1 октября 2009 г. 21:21, спустя 15 минут 18 секунд
<expr_2> ::= <expr_1> { <oper_2> <expr_1> }
<oper_2> ::= "+" | "-"
<expr_1> ::= <operand> { <oper_1> <operand> }
<oper_1> ::= "*" | "/"
// [<ed_izm>] – для приведения типа, но, кажется, тут плохой рекурсией пахнет
<operand>::= [<ed_izm>] "(" <expr> ")" | <.var> | <color> | <size> | <string> | ( "+" | "-" ) <operand>
<color> ::= "#" <digit> <digit> <digit> [ <digit> <digit> <digit>]
| "rgb(" <number>, <number>, <number> ")"
<.var> ::= "!" <letter> { <letter> | <digit> }
// Закр. кавычка == откр. Кривой вариант записи, но лучше в голову не лезет
<string> ::= ("'" | """) { <char> } ("'" | """)
<char> ::= <digit> | <letter> | "'" | """
<size> :: <number> [<ed_izm>]
<ed_izm> ::= "in" | "pt" | "em" | "wm" | "mm" | "cm" | "px"
<number> ::= <digit> { <digit> }
<letter> ::= "a..z" | "_" | "-"
<digit> ::= "0..9"
2 октября 2009 г. 15:21, спустя 8 часов 59 минут 18 секунд
<?php
header('Content-type: text/plain');
$ss = array(
'!alfa / !centavra',
'!alfa + 23*(!beta - 111)',
'"12+3" + "2"',
);
foreach ($ss as $s)
{
$split = preg_split('#\s*(\'.*?\'|".*?"|\+|-|\*|/|\(|\))\s*#', $s, -1, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
echo "\nString \"".$s."\" is:\n";
foreach ($split as $p)
echo $p."\n";
}
?>
2 октября 2009 г. 16:28, спустя 25 минут 10 секунд
2 октября 2009 г. 18:50, спустя 2 часа 22 минуты 28 секунд
2 октября 2009 г. 23:18, спустя 4 часа 27 минут 50 секунд
<?php
class Expression
{
private static $_vars;
private static $_operations = array(
NULL, '(', '+', '-', '*', '/', ')');
private static $_rules = array(
array(6, 1, 1, 1, 1, 1, 5),
array(5, 1, 1, 1, 1, 1, 3),
array(4, 1, 2, 2, 1, 1, 4),
array(4, 1, 2, 2, 1, 1, 4),
array(4, 1, 4, 4, 2, 2, 4),
array(4, 1, 4, 4, 2, 2, 4));
private static $_E;
private static $_T;
private static function _token($topT, $token)
{
// Operand
if (($curOp = array_search($token, self::$_operations)) === FALSE)
{
array_push(self::$_E, $token);
}
// Operation
else
{
while (TRUE)
{
switch ($f = self::$_rules[$topT][$curOp]) {
case 1:
array_push(self::$_T, $curOp);
break;
case 2:
case 4:
$b = array_pop(self::$_E);
$op = array_pop(self::$_T);
$a = array_pop(self::$_E);
$token = self::_func($a, $op, $b);
array_push(self::$_E, $token);
if ($f == 4)
{
$topT = end(self::$_T);
continue 2;
}
array_push(self::$_T, $curOp);
break;
case 3:
array_pop(self::$_T);
break;
case 5:
die('ERROR: unclosed brackets');
case 6:
if (count(self::$_E) != 1)
die('ERROR: missing operator');
else
return self::$_E[0];
}
break;
}
}
return end(self::$_T);
}
private static function _func($a, $op, $b)
{
if ($a{0} == '!') $a = self::$_vars[$a];
if ($b{0} == '!') $b = self::$_vars[$b];
$as = ($a{0} == '"' || $a{0} == '\'');
$bs = ($b{0} == '"' || $b{0} == '\'');
if (($as || $bs) && $op == 2)
return '"' . ($as ? trim($a, $a{0}) : $a) . ($bs ? trim($b, $b{0}) : $b) . '"';
else if (!$as && !$bs)
switch ($op) {
case 2: return $a + $b;
case 3: return $a - $b;
case 4: return $a * $b;
case 5: return $a / $b;
}
die('ERROR: wrong opeation '.$op);
}
public static function error($errno, $errstr, $errfile, $errline)
{
printf("\nLine: %d %s\n", $errline, $errstr);
print_r(self::$_vars);
print_r(self::$_E);
print_r(self::$_T);
die(1);
}
public static function calc($s, $variables=array())
{
self::$_vars = $variables;
self::$_E = array();
self::$_T = array(0); // put bottom of stack marker
$split = preg_split('#\s*(\'.*?\'|".*?"|\+|-|\*|/|\(|\))\s*#', $s, -1, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
$split[] = NULL; // put end of tokens marker
return array_reduce($split, array('self', '_token'), 0);
}
}
set_error_handler(array('Expression', 'error'), E_ALL);
header('Content-type: text/plain');
$vars = array('!alfa' => 6, '!beta' => 2, '!gama' => 5);
echo Expression::calc('2*!alfa + !beta + !gama', $vars)."\n"; // 19
echo Expression::calc('2*(!alfa + !beta) + !gama', $vars)."\n"; // 21
echo Expression::calc('12 + "3"', $vars)."\n"; // "123"
?>
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!