Chapter 2Loading grammars

Before it can be used, a parser must be constructed for the grammar. You can load Invisible XML grammars in either the text or XML syntax. You can also load grammars in the CoffeeGrinder compiled format.

Note

The API has been redesigned and greatly simplified in version 2.x. Instead of having a few different functions that take a grammar as an argument, there are now just a couple of functions that return a parser for the grammar.

The parser creation functions return an XPath function that takes a single argument, the string to be parsed. If the grammar cannot be parsed, an error is raised. This error can be captured with try/catch.

2.1cs:load-grammar

This function takes the URI of an Invisible XML grammar and constructs a parser for that grammar.

cs:load-grammar($uri)function($input as xs:string) as item()
$urixs:stringA URI that identifies an Invisible XML grammar
cs:load-grammar($uri, $options)function($input as xs:string) as item()
$urixs:stringA URI that identifies an Invisible XML grammar
$optionsmap(xs:string, xs:string)Grammar options

See Chapter 5, Parser options for a description of the available options.

If the return format is XML, an XML node will be returned. For the JSON return types, an XDM map will be returned.

2.2cs:make-parser

This function constructs a parser from its input.

cs:make-parser($input)function($input as xs:string) as item()
$inputitem()An input grammar
cs:make-parser($input, $options)function($input as xs:string) as item()
$inputitem()An input grammar
$optionsmap(xs:string, xs:string)Grammar options

Exactly what this function does depends on the type of $input.

XML node

The input is assumed to be an XML version of an invisible XML grammar (a “visible XML grammar”). The function will attempt to construct a parser for that grammar.

xs:anyURI

The input is assumed to be a URI that identifies the location of an invisible XML grammar. It will be loaded and parsed just as cs:load-grammar would.

xs:anyAtomicType

The string value of the input is assumed to be an iinvisible XML grammar. The function willa attempt to construct a parser for that grammar.

anything else

Any other input will cause an error.

See Chapter 5, Parser options for a description of the available options.

If the return format is XML, an XML node will be returned. For the JSON return types, an XDM map will be returned.