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