Avro C#
Loading...
Searching...
No Matches
Classes | Public Member Functions | Protected Attributes | List of all members
Avro.IO.Parsing.Parser Class Reference

Parser is the class that maintains the stack for parsing. This class is used by encoders, which are not required to skip. More...

Inheritance diagram for Avro.IO.Parsing.Parser:
Avro.IO.Parsing.SkipParser

Classes

interface  IActionHandler
 The parser knows how to handle the terminal and non-terminal symbols. But it needs help from outside to handle implicit and explicit actions. The clients implement this interface to provide this help. More...
 

Public Member Functions

 Parser (Symbol root, IActionHandler symbolHandler)
 Initializes a new instance of the Parser class.
 
Symbol Advance (Symbol input)
 Recursively replaces the symbol at the top of the stack with its production, until the top is a terminal. Then checks if the top symbol matches the terminal symbol supplied input.
 
void ProcessImplicitActions ()
 Performs any implicit actions at the top the stack, expanding any production (other than the root) that may be encountered. This method will fail if there are any repeaters on the stack.
 
void ProcessTrailingImplicitActions ()
 Performs any "trailing" implicit actions at the top the stack.
 
void PushProduction (Symbol sym)
 Pushes the production for the given symbol sym. If sym is a repeater and input is either Symbol.ArrayEnd or Symbol.MapEnd pushes nothing.
 
virtual Symbol PopSymbol ()
 Pops and returns the top symbol from the stack.
 
virtual Symbol TopSymbol ()
 Returns the top symbol from the stack.
 
virtual void PushSymbol (Symbol sym)
 Pushes sym on to the stack.
 
virtual int Depth ()
 Returns the depth of the stack.
 
virtual void Reset ()
 Resets the stack.
 

Protected Attributes

Symbol[] Stack
 Stack of symbols.
 
int Pos
 Position of the stack.
 

Detailed Description

Parser is the class that maintains the stack for parsing. This class is used by encoders, which are not required to skip.

Member Function Documentation

◆ Advance()

Symbol Avro.IO.Parsing.Parser.Advance ( Symbol  input)
inline

Recursively replaces the symbol at the top of the stack with its production, until the top is a terminal. Then checks if the top symbol matches the terminal symbol supplied input.

Parameters
inputThe symbol to match against the terminal at the top of the stack.
Returns
The terminal symbol at the top of the stack unless an implicit action resulted in another symbol, in which case that symbol is returned.

◆ PushProduction()

void Avro.IO.Parsing.Parser.PushProduction ( Symbol  sym)
inline

Pushes the production for the given symbol sym. If sym is a repeater and input is either Symbol.ArrayEnd or Symbol.MapEnd pushes nothing.

Parameters
sym

The documentation for this class was generated from the following file: