# Psych::Parser - ri - phpman

= [**Psych::Parser](https://www.chedong.com/phpMan.php/perldoc/Psych%3A%3AParser/markdown) < Object**

(from gem psych-5.4.0)
------------------------------------------------------------------------

YAML event parser class.  This class parses a YAML document and calls
events on the handler that is passed to the constructor.  The events can
be used for things such as constructing a YAML AST or deserializing YAML
documents.  It can even be fed back to [Psych::Emitter](https://www.chedong.com/phpMan.php/perldoc/Psych%3A%3AEmitter/markdown) to emit the same
document that was parsed.

## See [Psych::Handler](https://www.chedong.com/phpMan.php/perldoc/Psych%3A%3AHandler/markdown) for documentation on the events that [Psych::Parser](https://www.chedong.com/phpMan.php/perldoc/Psych%3A%3AParser/markdown)
emits.

Here is an example that prints out ever scalar found in a YAML document:

  # Handler for detecting scalar values
  class ScalarHandler < [Psych::Handler](https://www.chedong.com/phpMan.php/perldoc/Psych%3A%3AHandler/markdown)
    def scalar value, anchor, tag, plain, quoted, style
      puts value
    end
  end

  parser = [Psych::Parser](https://www.chedong.com/phpMan.php/perldoc/Psych%3A%3AParser/markdown).new(ScalarHandler.new)
  parser.parse(yaml_document)

## Here is an example that feeds the parser back in to [Psych::Emitter](https://www.chedong.com/phpMan.php/perldoc/Psych%3A%3AEmitter/markdown).  The
YAML document is read from STDIN and written back out to STDERR:

  parser = [Psych::Parser](https://www.chedong.com/phpMan.php/perldoc/Psych%3A%3AParser/markdown).new([Psych::Emitter](https://www.chedong.com/phpMan.php/perldoc/Psych%3A%3AEmitter/markdown).new($stderr))
  parser.parse($stdin)

## Psych uses [Psych::Parser](https://www.chedong.com/phpMan.php/perldoc/Psych%3A%3AParser/markdown) in combination with [Psych::TreeBuilder](https://www.chedong.com/phpMan.php/perldoc/Psych%3A%3ATreeBuilder/markdown) to
construct an AST of the parsed YAML document.
------------------------------------------------------------------------
= **Constants:**

ANY:
### Let the parser choose the encoding


UTF16BE:
  UTF-16-BE Encoding with BOM


UTF16LE:
  UTF-16-LE Encoding with BOM


UTF8:
  UTF-8 Encoding



= **Class methods:**

  new

= **Instance methods:**

  _native_parse
  external_encoding
  handler
  mark
  parse

= **Attributes:**

  attr_accessor handler
  attr_writer external_encoding

