Copyright | (c) Oren Ben-Kiki 2007 |
---|---|
License | LGPL |
Maintainer | yaml-oren@ben-kiki.org |
Stability | alpha |
Portability | portable |
Safe Haskell | None |
Language | Haskell98 |
Text.Yaml.Reference
Description
Implementation of the YAML syntax as defined in http://www.yaml.org.
Actually this file contains the parsing framework and includes (using CPP)
the actual productions from Reference.bnf
.
The parsing framework is fully streaming (generates output tokens "immediately").
- data Code
- = Bom
- | Text
- | Meta
- | Break
- | LineFeed
- | LineFold
- | Indicator
- | White
- | Indent
- | DirectivesEnd
- | DocumentEnd
- | BeginEscape
- | EndEscape
- | BeginComment
- | EndComment
- | BeginDirective
- | EndDirective
- | BeginTag
- | EndTag
- | BeginHandle
- | EndHandle
- | BeginAnchor
- | EndAnchor
- | BeginProperties
- | EndProperties
- | BeginAlias
- | EndAlias
- | BeginScalar
- | EndScalar
- | BeginSequence
- | EndSequence
- | BeginMapping
- | EndMapping
- | BeginPair
- | EndPair
- | BeginNode
- | EndNode
- | BeginDocument
- | EndDocument
- | BeginStream
- | EndStream
- | Error
- | Unparsed
- | Detected
- data Token
- type Tokenizer = String -> ByteString -> Bool -> [Token]
- yaml :: Tokenizer
- data Context
- data Chomp
- tokenizer :: String -> Maybe Tokenizer
- tokenizerWithN :: String -> Int -> Maybe Tokenizer
- tokenizerWithC :: String -> Context -> Maybe Tokenizer
- tokenizerWithT :: String -> Chomp -> Maybe Tokenizer
- tokenizerWithNC :: String -> Int -> Context -> Maybe Tokenizer
- tokenizerWithNT :: String -> Int -> Chomp -> Maybe Tokenizer
- tokenizerNames :: [String]
- showTokens :: [Token] -> String
Documentation
Token
codes.
Constructors
Bom | BOM, contains " |
Text | Content text characters. |
Meta | Non-content (meta) text characters. |
Break | Separation line break. |
LineFeed | Line break normalized to content line feed. |
LineFold | Line break folded to content space. |
Indicator | Character indicating structure. |
White | Separation white space. |
Indent | Indentation spaces. |
DirectivesEnd | Document start marker. |
DocumentEnd | Document end marker. |
BeginEscape | Begins escape sequence. |
EndEscape | Ends escape sequence. |
BeginComment | Begins comment. |
EndComment | Ends comment. |
BeginDirective | Begins directive. |
EndDirective | Ends directive. |
BeginTag | Begins tag. |
EndTag | Ends tag. |
BeginHandle | Begins tag handle. |
EndHandle | Ends tag handle. |
BeginAnchor | Begins anchor. |
EndAnchor | Ends anchor. |
BeginProperties | Begins node properties. |
EndProperties | Ends node properties. |
BeginAlias | Begins alias. |
EndAlias | Ends alias. |
BeginScalar | Begins scalar content. |
EndScalar | Ends scalar content. |
BeginSequence | Begins sequence content. |
EndSequence | Ends sequence content. |
BeginMapping | Begins mapping content. |
EndMapping | Ends mapping content. |
BeginPair | Begins mapping key:value pair. |
EndPair | Ends mapping key:value pair. |
BeginNode | Begins complete node. |
EndNode | Ends complete node. |
BeginDocument | Begins document. |
EndDocument | Ends document. |
BeginStream | Begins YAML stream. |
EndStream | Ends YAML stream. |
Error | Parsing error at this point. |
Unparsed | Unparsed due to errors (or at end of test). |
Detected | Detected parameter (for testing). |
Parsed token.
type Tokenizer = String -> ByteString -> Bool -> [Token] Source #
Tokenizer
converts a (named) input text into a list of Token
. Errors
are reported as tokens with the Error
Code
, and the unparsed text
following an error may be attached as a final token (if the Bool
is
True
). Note that tokens are available "immediately", allowing for
streaming of large YAML files with memory requirements depending only on the
YAML nesting level.
yaml name input
converts the Unicode input (called name in error
messages) to a list of Token
according to the YAML spec. This is it!
Production context.
Chomp method.
tokenizer :: String -> Maybe Tokenizer Source #
tokenizer name
converts the production with the specified name to a
simple Tokenizer
, or Nothing
if it isn't known.
tokenizerWithN :: String -> Int -> Maybe Tokenizer Source #
tokenizerWithN name n
converts the production (that requires an n
argument) with the specified name to a simple Tokenizer
, or Nothing
if
it isn't known.
tokenizerWithC :: String -> Context -> Maybe Tokenizer Source #
tokenizerWithC name c
converts the production (that requires a c
argument) with the specified name to a simple Tokenizer
, or Nothing
if
it isn't known.
tokenizerWithT :: String -> Chomp -> Maybe Tokenizer Source #
tokenizerWithT name t
converts the production (that requires an t
argument) with the specified name to a simple Tokenizer
, or Nothing
if
it isn't known.
tokenizerWithNC :: String -> Int -> Context -> Maybe Tokenizer Source #
tokenizerWithNC name n c
converts the production (that requires n and
c arguments) with the specified name to a simple Tokenizer
, or
Nothing
if it isn't known.
tokenizerWithNT :: String -> Int -> Chomp -> Maybe Tokenizer Source #
tokenizerWithNT name n t
converts the production (that requires n and
t arguments) with the specified name to a simple Tokenizer
, or
Nothing
if it isn't known.
tokenizerNames :: [String] Source #
tokenizerNames
returns the list of all productions (tokenizers).
showTokens :: [Token] -> String Source #
showTokens tokens
converts a list of tokens to a multi-line YEAST
text.