+
Point of view
All features
class PACKRAT_SEQUENCE
Summary
Direct parents
Inherit list: PACKRAT_ALTERNATIVE
Insert list: PACKRAT
Class invariant
Overview
Creation features
{PACKRAT}
Features
{ANY}
{PACKRAT_INTERNAL}
{PACKRAT_VISITOR, PACKRAT_INTERNAL}
{}
{}
{ANY}
{ANY}
{PACKRAT_INTERNAL}
{PACKRAT_INTERNAL, PACKRAT_VISITOR}
{}
  • log: LOGGER
    There is one logger per concrete type; for performance reasons it is cached in each instance.
  • log_memory__0_: LOGGER
    The cached logger.
{ANY}
Tune exports to your liking if need be
{}
is_coherent: BOOLEAN
effective function
{ANY}
ensure
  • must_be_coherent: Result
out_in_tagged_out_memory
effective procedure
{ANY}
Append terse printable representation of current object in tagged_out_memory.
require
    • locked: tagged_out_locked
      • locked: tagged_out_locked
        • locked: tagged_out_locked
        • locked: tagged_out_locked
ensure
  • still_locked: tagged_out_locked
  • not_cleared: tagged_out_memory.count >= old tagged_out_memory.count
  • append_only: old tagged_out_memory.twin.is_equal(tagged_out_memory.substring(1, old tagged_out_memory.count))
accept (visitor: PACKRAT_VISITOR)
effective procedure
{ANY}
Accept to be visited by the visitor.
require
  • visitor /= Void
set_default_tree_builders (non_terminal_builder: PROCEDURE[TUPLE 2[FIXED_STRING, TRAVERSABLE[FIXED_STRING]]], terminal_builder: PROCEDURE[TUPLE 2[FIXED_STRING, PARSER_IMAGE]])
effective procedure
set_nt (a_nt: PACKRAT_NON_TERMINAL)
effective procedure
require
  • a_nt /= Void
ensure
  • nt = a_nt
set_how_many (a_how_many: INTEGER_8)
effective procedure
set_tag (a_tag: ABSTRACT_STRING)
effective procedure
ensure
  • a_tag = Void implies tag = Void
  • a_tag /= Void implies tag = a_tag.intern
action: PROCEDURE[TUPLE]
writable attribute
writable attribute
how_many: INTEGER_8
writable attribute
writable attribute
pack_parse (context: PACKRAT_PARSE_CONTEXT): TRISTATE
effective function
{}
require
  • context /= Void
ensure
  • not Result.is_equal(yes) implies context.buffer.current_index = old context.buffer.current_index
do_parse (context: PACKRAT_PARSE_CONTEXT): TRISTATE
effective function
{}
call_non_terminal_builder (non_terminal_builder: PROCEDURE[TUPLE 2[FIXED_STRING, TRAVERSABLE[FIXED_STRING]]])
effective procedure
{}
make (a_primaries: TRAVERSABLE[PACKRAT_PRIMARY], a_how_many: INTEGER_8, a_tag: ABSTRACT_STRING, a_action: PROCEDURE[TUPLE])
effective procedure
{}
require ensure
effective function
{ANY}
require
  • other /= Void
hash_code: INTEGER_32
effective function
{ANY}
The hash-code value of Current.
ensure
  • good_hash_value: Result >= 0
is_equal (other: PACKRAT_SEQUENCE): BOOLEAN
effective function
{ANY}
Is other attached to an object considered equal to current object?
require
      • other /= Void
      • other /= Void
    • other /= Void
ensure
  • commutative: generating_type = other.generating_type implies Result = other.is_equal(Current)
  • Result implies hash_code = other.hash_code
positive_lookahead: PACKRAT_ALTERNATIVE
frozen
effective function
{ANY}
prefix "@": PACKRAT_ALTERNATIVE
effective function
{ANY}
negative_lookahead: PACKRAT_ALTERNATIVE
frozen
effective function
{ANY}
prefix "~": PACKRAT_ALTERNATIVE
effective function
{ANY}
parse (context: PACKRAT_PARSE_CONTEXT): TRISTATE
frozen
effective function
require
  • context /= Void
ensure
  • not Result.is_equal(yes) implies context.buffer.current_index = old context.buffer.current_index
writable attribute
set_paren (a_paren: BOOLEAN)
effective procedure
ensure
need_paren: BOOLEAN
writable attribute
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.
yes: TRISTATE
effective function
{ANY}
effective function
{ANY}
maybe: TRISTATE
effective function
{ANY}
one: INTEGER_8
is 0
constant attribute
{}
zero_or_one: INTEGER_8
is 1
constant attribute
{}
zero_or_more: INTEGER_8
is 2
constant attribute
{}
one_or_more: INTEGER_8
is 3
constant attribute
{}
seq (a_primaries: TRAVERSABLE[PACKRAT_PRIMARY], a_how_many: INTEGER_8, a_tag: ABSTRACT_STRING, a_action: PROCEDURE[TUPLE]): PACKRAT_ALTERNATIVE
effective function
{}
require
ref (a_atom_name: ABSTRACT_STRING): PACKRAT_PRIMARY
effective function
{}
require
  • a_atom_name /= Void