@@ 3388-3403 (lines=16) @@ | ||
3385 | ||
3386 | // a bunch of guards that are and'd together |
|
3387 | // TODO rename to guardGroup |
|
3388 | protected function guardGroup(&$guardGroup) { |
|
3389 | $s = $this->seek(); |
|
3390 | $guardGroup = array(); |
|
3391 | while ($this->guard($guard)) { |
|
3392 | $guardGroup[] = $guard; |
|
3393 | if (!$this->literal("and")) break; |
|
3394 | } |
|
3395 | ||
3396 | if (count($guardGroup) == 0) { |
|
3397 | $guardGroup = null; |
|
3398 | $this->seek($s); |
|
3399 | return false; |
|
3400 | } |
|
3401 | ||
3402 | return true; |
|
3403 | } |
|
3404 | ||
3405 | protected function guard(&$guard) { |
|
3406 | $s = $this->seek(); |
@@ 3652-3668 (lines=17) @@ | ||
3649 | } |
|
3650 | ||
3651 | // comma separated list of selectors |
|
3652 | protected function selectors(&$out) { |
|
3653 | $s = $this->seek(); |
|
3654 | $selectors = array(); |
|
3655 | while ($this->selector($sel)) { |
|
3656 | $selectors[] = $sel; |
|
3657 | if (!$this->literal(",")) break; |
|
3658 | while ($this->literal(",")); // ignore extra |
|
3659 | } |
|
3660 | ||
3661 | if (count($selectors) == 0) { |
|
3662 | $this->seek($s); |
|
3663 | return false; |
|
3664 | } |
|
3665 | ||
3666 | $out = $selectors; |
|
3667 | return true; |
|
3668 | } |
|
3669 | ||
3670 | // whitespace separated list of selectorSingle |
|
3671 | protected function selector(&$out) { |