+
Point of view
All features
deferred class PARSE_NON_TERMINAL [C_ -> PARSE_CONTEXT]
Summary
A non-terminal meant to be put in a PARSE_TABLE.
Direct parents
Inherit list: PARSE_ATOM
Insert list: LOGGING
Known children
Inherit list: DESCENDING_NON_TERMINAL, PACKRAT_NON_TERMINAL
Overview
writable attribute
{ANY}
table: PARSE_TABLE[C_]
writable attribute
{ANY}
is_coherent: BOOLEAN
deferred function
{ANY}
require ensure
  • must_be_coherent: Result
pretty_print_on (stream: OUTPUT_STREAM)
deferred procedure
{ANY}
require
  • stream.is_connected
set (a_name: ABSTRACT_STRING, a_table: PARSE_TABLE[C_])
effective procedure
require
  • name = Void
  • table = Void
  • not a_name.is_empty
  • a_table /= Void
ensure
set_table (a_table: PARSE_TABLE[C_])
effective procedure
require
  • a_table /= Void
ensure
set_default_tree_builders (non_terminal_builder: PROCEDURE[TUPLE 2[FIXED_STRING, TRAVERSABLE[FIXED_STRING]]], terminal_builder: PROCEDURE[TUPLE 2[FIXED_STRING, PARSER_IMAGE]])
deferred procedure
require
parse (context: C_): TRISTATE
deferred function
The Result is yes if the parsing succeeded, no if there was a syntax error, or maybe if the parse could complete with some more text.
require
  • context /= Void
ensure
  • context.actions.count >= old context.actions.count
  • not Result.is_equal(yes) implies context.buffer.current_index = old context.buffer.current_index and then context.actions.count = old context.actions.count
add_error_position (error: STRING, buffer: MINI_PARSER_BUFFER)
effective procedure
{}
print_error_position (o: OUTPUT_STREAM, buffer: MINI_PARSER_BUFFER)
effective procedure
{}
yes: TRISTATE
effective function
{ANY}
effective function
{ANY}
maybe: TRISTATE
effective function
{ANY}
log: LOGGER
effective function
{}
There is one logger per concrete type; for performance reasons it is cached in each instance.
ensure
  • Result /= Void
log_memory__0_: LOGGER
writable attribute
{}
The cached logger.
The ugly name is intentional. Don't use directly.