qmrparser (version 0.1.5)

option: Optional parser

Description

Applies a parser to the text. If it does not succeed, an empty token is returned.

Optional parser never fails.

Usage

option(ap, action = function(s ) list(type="option",value=s ), error  = function(p,h) list(type="option",pos =p,h=h))

Arguments

ap
Optional parser
action
Function to be executed if recognition succeeds. It takes as input parameters information derived from parsers involved as parameters
error
Function to be executed if recognition does not succeed. I takes two parameters:
  • p with position where parser, streamParser, starts its recognition, obtained with streamParserPosition
  • h with information obtained from parsers involved as parameters, normally related with failure(s) position in component parsers. Its information depends on how parser involved as parameters are combined and on the error definition in these parsers.

Value

Anonymous functions, returning a list.function(stream) --> list(status,node,stream) From these input parameters, an anonymous function is constructed. This function admits just one parameter, stream, with streamParser class, and returns a three-field list:
  • status"ok" or "fail"
  • nodeWith action or error function output, depending on the case
  • streamWith information about the input, after success or failure in recognition

Details

In case of success, action gets the node returned by parser passed as optional. Otherwise, it gets the node corresponding to token empty: list(type="empty" ,value="") Function error is never called. It is defined as parameter for the sake of homogeneity with the rest of functions.

Examples


# ok
stream  <- streamParserFromString("123 Hello world")
( option(numberNatural())(stream) )[c("status","node")]


# ok
stream  <- streamParserFromString("123 Hello world")
( option(string())(stream) )[c("status","node")]