yaml  0.1.5
Data Structures | Typedefs | Enumerations | Functions
Parser Definitions

Data Structures

struct  yaml_simple_key_s
 This structure holds information about a potential simple key. More...
struct  yaml_alias_data_s
 This structure holds aliases data. More...
struct  yaml_parser_s
 The parser structure. More...

Typedefs

typedef int yaml_read_handler_t (void *data, unsigned char *buffer, size_t size, size_t *size_read)
 The prototype of a read handler.
typedef struct yaml_simple_key_s yaml_simple_key_t
 This structure holds information about a potential simple key.
typedef enum yaml_parser_state_e yaml_parser_state_t
 The states of the parser.
typedef struct yaml_alias_data_s yaml_alias_data_t
 This structure holds aliases data.
typedef struct yaml_parser_s yaml_parser_t
 The parser structure.

Enumerations

enum  yaml_parser_state_e {
  YAML_PARSE_STREAM_START_STATE,
  YAML_PARSE_IMPLICIT_DOCUMENT_START_STATE,
  YAML_PARSE_DOCUMENT_START_STATE,
  YAML_PARSE_DOCUMENT_CONTENT_STATE,
  YAML_PARSE_DOCUMENT_END_STATE,
  YAML_PARSE_BLOCK_NODE_STATE,
  YAML_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE,
  YAML_PARSE_FLOW_NODE_STATE,
  YAML_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE,
  YAML_PARSE_BLOCK_SEQUENCE_ENTRY_STATE,
  YAML_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE,
  YAML_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE,
  YAML_PARSE_BLOCK_MAPPING_KEY_STATE,
  YAML_PARSE_BLOCK_MAPPING_VALUE_STATE,
  YAML_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE,
  YAML_PARSE_FLOW_SEQUENCE_ENTRY_STATE,
  YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE,
  YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE,
  YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE,
  YAML_PARSE_FLOW_MAPPING_FIRST_KEY_STATE,
  YAML_PARSE_FLOW_MAPPING_KEY_STATE,
  YAML_PARSE_FLOW_MAPPING_VALUE_STATE,
  YAML_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE,
  YAML_PARSE_END_STATE
}
 The states of the parser. More...

Functions

int yaml_parser_initialize (yaml_parser_t *parser)
 Initialize a parser.
void yaml_parser_delete (yaml_parser_t *parser)
 Destroy a parser.
void yaml_parser_set_input_string (yaml_parser_t *parser, const unsigned char *input, size_t size)
 Set a string input.
void yaml_parser_set_input_file (yaml_parser_t *parser, FILE *file)
 Set a file input.
void yaml_parser_set_input (yaml_parser_t *parser, yaml_read_handler_t *handler, void *data)
 Set a generic input handler.
void yaml_parser_set_encoding (yaml_parser_t *parser, yaml_encoding_t encoding)
 Set the source encoding.
int yaml_parser_scan (yaml_parser_t *parser, yaml_token_t *token)
 Scan the input stream and produce the next token.
int yaml_parser_parse (yaml_parser_t *parser, yaml_event_t *event)
 Parse the input stream and produce the next parsing event.
int yaml_parser_load (yaml_parser_t *parser, yaml_document_t *document)
 Parse the input stream and produce the next YAML document.

Typedef Documentation

typedef int yaml_read_handler_t(void *data, unsigned char *buffer, size_t size, size_t *size_read)

The prototype of a read handler.

The read handler is called when the parser needs to read more bytes from the source. The handler should write not more than size bytes to the buffer. The number of written bytes should be set to the length variable.

Parameters:
[in,out]dataA pointer to an application data specified by yaml_parser_set_input().
[out]bufferThe buffer to write the data from the source.
[in]sizeThe size of the buffer.
[out]size_readThe actual number of bytes read from the source.
Returns:
On success, the handler should return 1. If the handler failed, the returned value should be 0. On EOF, the handler should set the size_read to 0 and return 1.
typedef struct yaml_parser_s yaml_parser_t

The parser structure.

All members are internal. Manage the structure using the yaml_parser_ family of functions.


Enumeration Type Documentation

The states of the parser.

Enumerator:
YAML_PARSE_STREAM_START_STATE 

Expect STREAM-START.

YAML_PARSE_IMPLICIT_DOCUMENT_START_STATE 

Expect the beginning of an implicit document.

YAML_PARSE_DOCUMENT_START_STATE 

Expect DOCUMENT-START.

YAML_PARSE_DOCUMENT_CONTENT_STATE 

Expect the content of a document.

YAML_PARSE_DOCUMENT_END_STATE 

Expect DOCUMENT-END.

YAML_PARSE_BLOCK_NODE_STATE 

Expect a block node.

YAML_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE 

Expect a block node or indentless sequence.

YAML_PARSE_FLOW_NODE_STATE 

Expect a flow node.

YAML_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE 

Expect the first entry of a block sequence.

YAML_PARSE_BLOCK_SEQUENCE_ENTRY_STATE 

Expect an entry of a block sequence.

YAML_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE 

Expect an entry of an indentless sequence.

YAML_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE 

Expect the first key of a block mapping.

YAML_PARSE_BLOCK_MAPPING_KEY_STATE 

Expect a block mapping key.

YAML_PARSE_BLOCK_MAPPING_VALUE_STATE 

Expect a block mapping value.

YAML_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE 

Expect the first entry of a flow sequence.

YAML_PARSE_FLOW_SEQUENCE_ENTRY_STATE 

Expect an entry of a flow sequence.

YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE 

Expect a key of an ordered mapping.

YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE 

Expect a value of an ordered mapping.

YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE 

Expect the and of an ordered mapping entry.

YAML_PARSE_FLOW_MAPPING_FIRST_KEY_STATE 

Expect the first key of a flow mapping.

YAML_PARSE_FLOW_MAPPING_KEY_STATE 

Expect a key of a flow mapping.

YAML_PARSE_FLOW_MAPPING_VALUE_STATE 

Expect a value of a flow mapping.

YAML_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE 

Expect an empty value of a flow mapping.

YAML_PARSE_END_STATE 

Expect nothing.


Function Documentation

Initialize a parser.

This function creates a new parser object. An application is responsible for destroying the object using the yaml_parser_delete() function.

Parameters:
[out]parserAn empty parser object.
Returns:
1 if the function succeeded, 0 on error.
void yaml_parser_delete ( yaml_parser_t parser)

Destroy a parser.

Parameters:
[in,out]parserA parser object.
void yaml_parser_set_input_string ( yaml_parser_t parser,
const unsigned char *  input,
size_t  size 
)

Set a string input.

Note that the input pointer must be valid while the parser object exists. The application is responsible for destroing input after destroying the parser.

Parameters:
[in,out]parserA parser object.
[in]inputA source data.
[in]sizeThe length of the source data in bytes.
void yaml_parser_set_input_file ( yaml_parser_t parser,
FILE *  file 
)

Set a file input.

file should be a file object open for reading. The application is responsible for closing the file.

Parameters:
[in,out]parserA parser object.
[in]fileAn open file.
void yaml_parser_set_input ( yaml_parser_t parser,
yaml_read_handler_t handler,
void *  data 
)

Set a generic input handler.

Parameters:
[in,out]parserA parser object.
[in]handlerA read handler.
[in]dataAny application data for passing to the read handler.
void yaml_parser_set_encoding ( yaml_parser_t parser,
yaml_encoding_t  encoding 
)

Set the source encoding.

Parameters:
[in,out]parserA parser object.
[in]encodingThe source encoding.
int yaml_parser_scan ( yaml_parser_t parser,
yaml_token_t token 
)

Scan the input stream and produce the next token.

Call the function subsequently to produce a sequence of tokens corresponding to the input stream. The initial token has the type YAML_STREAM_START_TOKEN while the ending token has the type YAML_STREAM_END_TOKEN.

An application is responsible for freeing any buffers associated with the produced token object using the yaml_token_delete function.

An application must not alternate the calls of yaml_parser_scan() with the calls of yaml_parser_parse() or yaml_parser_load(). Doing this will break the parser.

Parameters:
[in,out]parserA parser object.
[out]tokenAn empty token object.
Returns:
1 if the function succeeded, 0 on error.
int yaml_parser_parse ( yaml_parser_t parser,
yaml_event_t event 
)

Parse the input stream and produce the next parsing event.

Call the function subsequently to produce a sequence of events corresponding to the input stream. The initial event has the type YAML_STREAM_START_EVENT while the ending event has the type YAML_STREAM_END_EVENT.

An application is responsible for freeing any buffers associated with the produced event object using the yaml_event_delete() function.

An application must not alternate the calls of yaml_parser_parse() with the calls of yaml_parser_scan() or yaml_parser_load(). Doing this will break the parser.

Parameters:
[in,out]parserA parser object.
[out]eventAn empty event object.
Returns:
1 if the function succeeded, 0 on error.
int yaml_parser_load ( yaml_parser_t parser,
yaml_document_t document 
)

Parse the input stream and produce the next YAML document.

Call this function subsequently to produce a sequence of documents constituting the input stream.

If the produced document has no root node, it means that the document end has been reached.

An application is responsible for freeing any data associated with the produced document object using the yaml_document_delete() function.

An application must not alternate the calls of yaml_parser_load() with the calls of yaml_parser_scan() or yaml_parser_parse(). Doing this will break the parser.

Parameters:
[in,out]parserA parser object.
[out]documentAn empty document object.
Returns:
1 if the function succeeded, 0 on error.