dolibarr  17.0.4
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
lessc_parser Class Reference
Collaboration diagram for lessc_parser:
Collaboration graph
[legend]

Public Member Functions

 parse ($buffer)
 Parse a string. More...
 

Protected Member Functions

 parseChunk ()
 Parse a single chunk off the head of the buffer and append it to the current parse environment. More...
 
 expression (&$out)
 Attempt to consume an expression. More...
 
 expHelper ($lhs, $minP)
 recursively parse infix equation with $lhs at precedence $minP
 
 assign ($name=null)
 Consume an assignment operator Can optionally take a name that will be set to the current property name.
 

Protected Attributes

 $inParens = false
 if we are in parens we can be more liberal with whitespace around operators because it must evaluate to a single value and thus is less ambiguous. More...
 

Detailed Description

Definition at line 2579 of file lessc.class.php.

Member Function Documentation

◆ expression()

lessc_parser::expression ( $out)
protected

Attempt to consume an expression.

http://en.wikipedia.org/wiki/Operator-precedence_parser#Pseudo-code

Definition at line 2935 of file lessc.class.php.

◆ parse()

lessc_parser::parse (   $buffer)

Parse a string.

Parameters
string$bufferString to parse
Exceptions
exception
Returns
NULL|stdclass

Definition at line 2661 of file lessc.class.php.

References parseChunk().

◆ parseChunk()

lessc_parser::parseChunk ( )
protected

Parse a single chunk off the head of the buffer and append it to the current parse environment.

Returns false when the buffer is empty, or when there is an error.

This function is called repeatedly until the entire document is parsed.

This parser is most similar to a recursive descent parser. Single functions represent discrete grammatical rules for the language, and they are able to capture the text that represents those rules.

Consider the function lessc::keyword(). (all parse functions are structured the same)

The function takes a single reference argument. When calling the function it will attempt to match a keyword on the head of the buffer. If it is successful, it will place the keyword in the referenced argument, advance the position in the buffer, and return true. If it fails then it won't advance the buffer and it will return false.

All of these parse functions are powered by lessc::match(), which behaves the same way, but takes a literal regular expression. Sometimes it is more convenient to use match instead of creating a new function.

Because of the format of the functions, to parse an entire string of grammatical rules, you can chain them together using &&.

But, if some of the rules in the chain succeed before one fails, then the buffer position will be left at an invalid state. In order to avoid this, lessc::seek() is used to remember and set buffer positions.

Before parsing a chain, use $s = $this->seek() to remember the current position into $s. Then if a chain fails, use $this->seek($s) to go back where we started.

Definition at line 2730 of file lessc.class.php.

Referenced by parse().

Member Data Documentation

◆ $inParens

lessc_parser::$inParens = false
protected

if we are in parens we can be more liberal with whitespace around operators because it must evaluate to a single value and thus is less ambiguous.

Consider: property1: 10 -5; // is two numbers, 10 and -5 property2: (10 -5); // should evaluate to 5

Definition at line 2623 of file lessc.class.php.


The documentation for this class was generated from the following file: