From 73af09be58a9d509bac56962574c786602b3aba1 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Sun, 1 Oct 2017 17:59:44 +0000 Subject: [PATCH] Sync with changes for parle-0.7.0 git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@343168 c90b9560-bf6c-de11-be94-00142212c4b1 --- reference/parle/book.xml | 1 + reference/parle/parle.lexer.xml | 2 +- reference/parle/parle.rlexer.xml | 35 ++- reference/parle/parle.rparser.xml | 216 +++++++++++++++++++ reference/parle/parle/rlexer/advance.xml | 56 +++++ reference/parle/parle/rlexer/build.xml | 55 +++++ reference/parle/parle/rlexer/consume.xml | 64 ++++++ reference/parle/parle/rlexer/dump.xml | 55 +++++ reference/parle/parle/rlexer/gettoken.xml | 55 +++++ reference/parle/parle/rlexer/insertmacro.xml | 73 +++++++ reference/parle/parle/rlexer/push.xml | 34 +-- reference/parle/parle/rlexer/pushstate.xml | 2 +- reference/parle/parle/rlexer/restart.xml | 64 ++++++ reference/parle/parle/rparser/advance.xml | 55 +++++ reference/parle/parle/rparser/build.xml | 55 +++++ reference/parle/parle/rparser/consume.xml | 73 +++++++ reference/parle/parle/rparser/dump.xml | 55 +++++ reference/parle/parle/rparser/errorinfo.xml | 55 +++++ reference/parle/parle/rparser/left.xml | 64 ++++++ reference/parle/parle/rparser/nonassoc.xml | 64 ++++++ reference/parle/parle/rparser/precedence.xml | 64 ++++++ reference/parle/parle/rparser/push.xml | 73 +++++++ reference/parle/parle/rparser/right.xml | 64 ++++++ reference/parle/parle/rparser/sigil.xml | 64 ++++++ reference/parle/parle/rparser/token.xml | 64 ++++++ reference/parle/parle/rparser/tokenid.xml | 64 ++++++ reference/parle/parle/rparser/trace.xml | 55 +++++ reference/parle/parle/rparser/validate.xml | 73 +++++++ 28 files changed, 1610 insertions(+), 44 deletions(-) create mode 100644 reference/parle/parle.rparser.xml create mode 100644 reference/parle/parle/rlexer/advance.xml create mode 100644 reference/parle/parle/rlexer/build.xml create mode 100644 reference/parle/parle/rlexer/consume.xml create mode 100644 reference/parle/parle/rlexer/dump.xml create mode 100644 reference/parle/parle/rlexer/gettoken.xml create mode 100644 reference/parle/parle/rlexer/insertmacro.xml create mode 100644 reference/parle/parle/rlexer/restart.xml create mode 100644 reference/parle/parle/rparser/advance.xml create mode 100644 reference/parle/parle/rparser/build.xml create mode 100644 reference/parle/parle/rparser/consume.xml create mode 100644 reference/parle/parle/rparser/dump.xml create mode 100644 reference/parle/parle/rparser/errorinfo.xml create mode 100644 reference/parle/parle/rparser/left.xml create mode 100644 reference/parle/parle/rparser/nonassoc.xml create mode 100644 reference/parle/parle/rparser/precedence.xml create mode 100644 reference/parle/parle/rparser/push.xml create mode 100644 reference/parle/parle/rparser/right.xml create mode 100644 reference/parle/parle/rparser/sigil.xml create mode 100644 reference/parle/parle/rparser/token.xml create mode 100644 reference/parle/parle/rparser/tokenid.xml create mode 100644 reference/parle/parle/rparser/trace.xml create mode 100644 reference/parle/parle/rparser/validate.xml diff --git a/reference/parle/book.xml b/reference/parle/book.xml index 935d0b2c7c..08b7be911d 100644 --- a/reference/parle/book.xml +++ b/reference/parle/book.xml @@ -24,6 +24,7 @@ &reference.parle.parle.lexer; &reference.parle.parle.rlexer; &reference.parle.parle.parser; + &reference.parle.parle.rparser; &reference.parle.parle.stack; &reference.parle.parle.token; &reference.parle.parle.errorinfo; diff --git a/reference/parle/parle.lexer.xml b/reference/parle/parle.lexer.xml index 65e87c71b3..c379d0cdee 100644 --- a/reference/parle/parle.lexer.xml +++ b/reference/parle/parle.lexer.xml @@ -12,7 +12,7 @@
&reftitle.intro; - Base lexer class. Lexemes can be defined on the fly. If the particular lexer instance is meant to be used with Parle\Parser, the token IDs need to be taken from there. Otherwise, arbitrary token IDs can be supplied. + Single state lexer class. Lexemes can be defined on the fly. If the particular lexer instance is meant to be used with Parle\Parser, the token IDs need to be taken from there. Otherwise, arbitrary token IDs can be supplied. This lexer can give a certain performance advantage over Parle\RLexer, if no multiple states are required. Note, that Parle\RParser is not compatible with this lexer.
diff --git a/reference/parle/parle.rlexer.xml b/reference/parle/parle.rlexer.xml index bdd1f1a872..0755d4f923 100644 --- a/reference/parle/parle.rlexer.xml +++ b/reference/parle/parle.rlexer.xml @@ -12,7 +12,7 @@
&reftitle.intro; - Recursive lexer class. Any sub states can be added on the fly to match recursive patterns. Though, sometimes it might be simpler to use an instance of Parle\Lexer and define some parser grammar. + Multistate lexer class. Lexemes can be defined on the fly. If the particular lexer instance is meant to be used with Parle\RParser, the token IDs need to be taken from there. Otherwise, arbitrary token IDs can be supplied. Note, that Parle\Parser is not compatible with this lexer.
@@ -29,11 +29,6 @@ Parle\RLexer - - - extends - Parle\Lexer - Constants @@ -87,13 +82,21 @@ state 0 + + public + integer + marker + 0 + + + public + integer + cursor + 0 + &Methods; - - &InheritedMethods; - - @@ -165,6 +168,18 @@ Current lexer state, readonly. + + marker + + Position of the latest token match, readonly. + + + + cursor + + Current input offset, readonly. + + diff --git a/reference/parle/parle.rparser.xml b/reference/parle/parle.rparser.xml new file mode 100644 index 0000000000..187c9df7f4 --- /dev/null +++ b/reference/parle/parle.rparser.xml @@ -0,0 +1,216 @@ + + + + + + The Parle\RParser class + Parle\RParser + + + + +
+ &reftitle.intro; + + Parser class. Rules can be defined on the fly. Once finalized, a Parle\RLexer instance is required to deliver the token stream. + +
+ + +
+ &reftitle.classsynopsis; + + + + Parle\RParser + + + + + Parle\RParser + + + + Constants + + const + integer + Parle\RParser::ACTION_ERROR + 0 + + + const + integer + Parle\RParser::ACTION_SHIFT + 1 + + + const + integer + Parle\RParser::ACTION_REDUCE + 2 + + + const + integer + Parle\RParser::ACTION_GOTO + 3 + + + const + integer + Parle\RParser::ACTION_ACCEPT + 4 + + + const + integer + Parle\RParser::ERROR_SYNTAX + 0 + + + const + integer + Parle\RParser::ERROR_NON_ASSOCIATIVE + 1 + + + const + integer + Parle\RParser::ERROR_UNKOWN_TOKEN + 2 + + + &Properties; + + public + integer + action + 0 + + + public + integer + reduceId + 0 + + + &Methods; + + + + +
+ + +
+ &reftitle.constants; + + + + Parle\RParser::ACTION_ERROR + + + + + + + Parle\RParser::ACTION_SHIFT + + + + + + + Parle\RParser::ACTION_REDUCE + + + + + + + Parle\RParser::ACTION_GOTO + + + + + + + Parle\RParser::ACTION_ACCEPT + + + + + + + Parle\RParser::ERROR_SYNTAX + + + + + + + Parle\RParser::ERROR_NON_ASSOCIATIVE + + + + + + + Parle\RParser::ERROR_UNKOWN_TOKEN + + + + + + +
+ + + +
+ &reftitle.properties; + + + action + + Current parser action that matches one of the action class constants, readonly. + + + + reduceId + + Grammar rule id just processed in the reduce action. The value corresponds either to a token or to a production id. Readonly. + + + +
+ + +
+ + + &reference.parle.parle.entities.rparser; + +
+ + diff --git a/reference/parle/parle/rlexer/advance.xml b/reference/parle/parle/rlexer/advance.xml new file mode 100644 index 0000000000..107e506d1d --- /dev/null +++ b/reference/parle/parle/rlexer/advance.xml @@ -0,0 +1,56 @@ + + + + + + Parle\RLexer::advance + Process next lexer rule + + + + &reftitle.description; + + public voidParle\RLexer::advance + + + + Processes the next rule and prepares the resulting token data. + + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + &return.void; + + + + + + + diff --git a/reference/parle/parle/rlexer/build.xml b/reference/parle/parle/rlexer/build.xml new file mode 100644 index 0000000000..b692483a67 --- /dev/null +++ b/reference/parle/parle/rlexer/build.xml @@ -0,0 +1,55 @@ + + + + + + Parle\RLexer::build + Finalize the lexer rule set + + + + &reftitle.description; + + public voidParle\RLexer::build + + + + Rules, previously added with Parle\RLexer::push are finalized. This method call has to be done after all the necessary rules was pushed. The rule set becomes read only. The lexing can begin. + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + &return.void; + + + + + + + diff --git a/reference/parle/parle/rlexer/consume.xml b/reference/parle/parle/rlexer/consume.xml new file mode 100644 index 0000000000..7870d9dfb8 --- /dev/null +++ b/reference/parle/parle/rlexer/consume.xml @@ -0,0 +1,64 @@ + + + + + + Parle\RLexer::consume + Pass the data for processing + + + + &reftitle.description; + + public voidParle\RLexer::consume + stringdata + + + Consume the data for lexing. + + + + + &reftitle.parameters; + + + data + + + Data to be lexed. + + + + + + + + &reftitle.returnvalues; + + &return.void; + + + + + + + diff --git a/reference/parle/parle/rlexer/dump.xml b/reference/parle/parle/rlexer/dump.xml new file mode 100644 index 0000000000..b436d32368 --- /dev/null +++ b/reference/parle/parle/rlexer/dump.xml @@ -0,0 +1,55 @@ + + + + + + Parle\RLexer::dump + Dump the state machine + + + + &reftitle.description; + + public voidParle\RLexer::dump + + + + Dump the current state machine to stdout. + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + &return.void; + + + + + + + diff --git a/reference/parle/parle/rlexer/gettoken.xml b/reference/parle/parle/rlexer/gettoken.xml new file mode 100644 index 0000000000..134539ae40 --- /dev/null +++ b/reference/parle/parle/rlexer/gettoken.xml @@ -0,0 +1,55 @@ + + + + + + Parle\RLexer::getToken + Retrieve the current token + + + + &reftitle.description; + + public Parle\TokenParle\RLexer::getToken + + + + Retrive the current token. + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + Returns an instance of Parle\Token. + + + + + + + diff --git a/reference/parle/parle/rlexer/insertmacro.xml b/reference/parle/parle/rlexer/insertmacro.xml new file mode 100644 index 0000000000..70af944b27 --- /dev/null +++ b/reference/parle/parle/rlexer/insertmacro.xml @@ -0,0 +1,73 @@ + + + + + + Parle\RLexer::insertMacro + Insert regex macro + + + + &reftitle.description; + + public voidParle\RLexer::insertMacro + stringname + stringregex + + + Insert a regex macro, that can be later used as a shortcut and included in other regular expressions. + + + + + &reftitle.parameters; + + + name + + + Name of the macros. + + + + + regex + + + Regular expression. + + + + + + + + &reftitle.returnvalues; + + &return.void; + + + + + + + diff --git a/reference/parle/parle/rlexer/push.xml b/reference/parle/parle/rlexer/push.xml index 2e56ada8d1..a667c227bd 100644 --- a/reference/parle/parle/rlexer/push.xml +++ b/reference/parle/parle/rlexer/push.xml @@ -10,25 +10,11 @@ &reftitle.description; - public voidParle\Lexer::push + public voidParle\RLexer::push stringregex integerid - - public voidParle\Lexer::push - stringstate - stringregex - integerid - stringnewState - - - - public voidParle\Lexer::push - stringstate - stringregex - stringnewState - Push a pattern for lexeme recognition. @@ -53,22 +39,6 @@ - - state - - - State name. - - - - - newState - - - New state name, after the rule was applied. - - - + + + + Parle\RLexer::restart + Restart lexer + + + + &reftitle.description; + + public voidParle\RLexer::restart + integerpos + + + Restart lexing optionally supplying the desired offset. + + + + + &reftitle.parameters; + + + pos + + + Restart position. + + + + + + + + &reftitle.returnvalues; + + &return.void; + + + + + + + diff --git a/reference/parle/parle/rparser/advance.xml b/reference/parle/parle/rparser/advance.xml new file mode 100644 index 0000000000..0c1665cee2 --- /dev/null +++ b/reference/parle/parle/rparser/advance.xml @@ -0,0 +1,55 @@ + + + + + + Parle\RParser::advance + Process next parser rule + + + + &reftitle.description; + + public voidParle\RParser::advance + + + + Prosess next parser rule. + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + &return.void; + + + + + + + diff --git a/reference/parle/parle/rparser/build.xml b/reference/parle/parle/rparser/build.xml new file mode 100644 index 0000000000..06e237111c --- /dev/null +++ b/reference/parle/parle/rparser/build.xml @@ -0,0 +1,55 @@ + + + + + + Parle\RParser::build + Finalize the grammar rules + + + + &reftitle.description; + + public voidParle\RParser::build + + + + Any tokens and grammar rules previously added are finalized. The rule set becomes readonly and the parser is ready to start. + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + &return.void; + + + + + + + diff --git a/reference/parle/parle/rparser/consume.xml b/reference/parle/parle/rparser/consume.xml new file mode 100644 index 0000000000..5e5480b410 --- /dev/null +++ b/reference/parle/parle/rparser/consume.xml @@ -0,0 +1,73 @@ + + + + + + Parle\RParser::consume + Consume the data for processing + + + + &reftitle.description; + + public voidParle\RParser::consume + stringdata + mixedrlexer + + + Consume the data for parsing. + + + + + &reftitle.parameters; + + + data + + + Data to be parsed. + + + + + lexer + + + A lexer object containing the lexing rules prepared for the particular grammar. + + + + + + + + &reftitle.returnvalues; + + &return.void; + + + + + + + diff --git a/reference/parle/parle/rparser/dump.xml b/reference/parle/parle/rparser/dump.xml new file mode 100644 index 0000000000..0b5c7c66e8 --- /dev/null +++ b/reference/parle/parle/rparser/dump.xml @@ -0,0 +1,55 @@ + + + + + + Parle\RParser::dump + Dump the grammar + + + + &reftitle.description; + + public voidParle\RParser::dump + + + + Dump the current grammar to stdout. + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + &return.void; + + + + + + + diff --git a/reference/parle/parle/rparser/errorinfo.xml b/reference/parle/parle/rparser/errorinfo.xml new file mode 100644 index 0000000000..d9d14a84af --- /dev/null +++ b/reference/parle/parle/rparser/errorinfo.xml @@ -0,0 +1,55 @@ + + + + + + Parle\RParser::errorInfo + Retrieve the error information + + + + &reftitle.description; + + public Parle\ErrorInfoParle\RParser::errorInfo + + + + Retrieve the error information in case Parle\RParser::action returned the error action. + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + Returns an instance of Parle\ErrorInfo. + + + + + + + diff --git a/reference/parle/parle/rparser/left.xml b/reference/parle/parle/rparser/left.xml new file mode 100644 index 0000000000..cf359c413b --- /dev/null +++ b/reference/parle/parle/rparser/left.xml @@ -0,0 +1,64 @@ + + + + + + Parle\RParser::left + Declare a token with left-associativity + + + + &reftitle.description; + + public voidParle\RParser::left + stringtok + + + Declare a terminal with left associativity. + + + + + &reftitle.parameters; + + + tok + + + Token name. + + + + + + + + &reftitle.returnvalues; + + &return.void; + + + + + + + diff --git a/reference/parle/parle/rparser/nonassoc.xml b/reference/parle/parle/rparser/nonassoc.xml new file mode 100644 index 0000000000..4392ec90c7 --- /dev/null +++ b/reference/parle/parle/rparser/nonassoc.xml @@ -0,0 +1,64 @@ + + + + + + Parle\RParser::nonassoc + Declare a token with no associativity + + + + &reftitle.description; + + public voidParle\RParser::nonassoc + stringtok + + + Declare a terminal, that cannot appear more than once in the row. + + + + + &reftitle.parameters; + + + tok + + + Token name. + + + + + + + + &reftitle.returnvalues; + + &return.void; + + + + + + + diff --git a/reference/parle/parle/rparser/precedence.xml b/reference/parle/parle/rparser/precedence.xml new file mode 100644 index 0000000000..588d6f66fa --- /dev/null +++ b/reference/parle/parle/rparser/precedence.xml @@ -0,0 +1,64 @@ + + + + + + Parle\RParser::precedence + Declare a precedence rule + + + + &reftitle.description; + + public voidParle\RParser::precedence + stringtok + + + Declares a precedence rule for a fictious terminal symbol. This rule can be later used in the specific grammar rules. + + + + + &reftitle.parameters; + + + tok + + + Token name. + + + + + + + + &reftitle.returnvalues; + + &return.void; + + + + + + + diff --git a/reference/parle/parle/rparser/push.xml b/reference/parle/parle/rparser/push.xml new file mode 100644 index 0000000000..40a8631694 --- /dev/null +++ b/reference/parle/parle/rparser/push.xml @@ -0,0 +1,73 @@ + + + + + + Parle\RParser::push + Add a grammar rule + + + + &reftitle.description; + + public intParle\RParser::push + stringname + stringrule + + + Push a grammar rule. The production id returned can be used later in the parsing process to identify the rule matched. + + + + + &reftitle.parameters; + + + name + + + Rule name. + + + + + rule + + + The rule to be added. The syntax is Bison compatible. + + + + + + + + &reftitle.returnvalues; + + Returns &integer; representing the rule index. + + + + + + + diff --git a/reference/parle/parle/rparser/right.xml b/reference/parle/parle/rparser/right.xml new file mode 100644 index 0000000000..827f694866 --- /dev/null +++ b/reference/parle/parle/rparser/right.xml @@ -0,0 +1,64 @@ + + + + + + Parle\RParser::right + Declare a token with right-associativity + + + + &reftitle.description; + + public voidParle\RParser::right + stringtok + + + Declare a terminal with right associativity. + + + + + &reftitle.parameters; + + + tok + + + Token name. + + + + + + + + &reftitle.returnvalues; + + &return.void; + + + + + + + diff --git a/reference/parle/parle/rparser/sigil.xml b/reference/parle/parle/rparser/sigil.xml new file mode 100644 index 0000000000..e349f4a43b --- /dev/null +++ b/reference/parle/parle/rparser/sigil.xml @@ -0,0 +1,64 @@ + + + + + + Parle\RParser::sigil + Retrieve a matching part of a rule + + + + &reftitle.description; + + public stringParle\RParser::sigil + integeridx + + + Retrieve a part of the match by a rule. This method is equivalent to the pseudo variable functionality in Bison. + + + + + &reftitle.parameters; + + + idx + + + Match index, zero based. + + + + + + + + &reftitle.returnvalues; + + Returns a &string; with the matched part. + + + + + + + diff --git a/reference/parle/parle/rparser/token.xml b/reference/parle/parle/rparser/token.xml new file mode 100644 index 0000000000..dabb59c9de --- /dev/null +++ b/reference/parle/parle/rparser/token.xml @@ -0,0 +1,64 @@ + + + + + + Parle\RParser::token + Declare a token + + + + &reftitle.description; + + public voidParle\RParser::token + stringtok + + + Declare a terminal to be used in the grammar. + + + + + &reftitle.parameters; + + + tok + + + Token name. + + + + + + + + &reftitle.returnvalues; + + &return.void; + + + + + + + diff --git a/reference/parle/parle/rparser/tokenid.xml b/reference/parle/parle/rparser/tokenid.xml new file mode 100644 index 0000000000..958ffce078 --- /dev/null +++ b/reference/parle/parle/rparser/tokenid.xml @@ -0,0 +1,64 @@ + + + + + + Parle\RParser::tokenId + Get token id + + + + &reftitle.description; + + public intParle\RParser::tokenId + stringtok + + + Retrieve the id of the named token. + + + + + &reftitle.parameters; + + + tok + + + Name of the token as used in Parle\RParser::token. + + + + + + + + &reftitle.returnvalues; + + Returns &integer; representing the token id. + + + + + + + diff --git a/reference/parle/parle/rparser/trace.xml b/reference/parle/parle/rparser/trace.xml new file mode 100644 index 0000000000..a625516aa7 --- /dev/null +++ b/reference/parle/parle/rparser/trace.xml @@ -0,0 +1,55 @@ + + + + + + Parle\RParser::trace + Trace the parser operation + + + + &reftitle.description; + + public stringParle\RParser::trace + + + + Retrieve the current parser operation description. This can be especially useful to study the parser and to optimize the grammar. + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + Returns a &string; with the trace information. + + + + + + + diff --git a/reference/parle/parle/rparser/validate.xml b/reference/parle/parle/rparser/validate.xml new file mode 100644 index 0000000000..0f8a179040 --- /dev/null +++ b/reference/parle/parle/rparser/validate.xml @@ -0,0 +1,73 @@ + + + + + + Parle\RParser::validate + Validate input + + + + &reftitle.description; + + public boolParle\RParser::validate + stringdata + mixedlexer + + + Validate an input string. The string is parsed internally, thus this method is useful for the quick input validation. + + + + + &reftitle.parameters; + + + data + + + String to be validated. + + + + + lexer + + + A lexer object containing the lexing rules prepared for the particular grammar. + + + + + + + + &reftitle.returnvalues; + + Returns &boolean; whitnessing whether the input chimes or not with the defined rules. + + + + + + +