GNU
|
Liberty Eiffel
|
Automated Tests
|
Wiki
|
Savannah project
|
Debian packages
|
Documentation
>
libraries
>
PACKRAT_SEQUENCE
+
Point of view
All features
ANY
PACKRAT_INTERNAL
PACKRAT_VISITOR
All features
class PACKRAT_SEQUENCE
Summary
top
Direct parents
Inherit list:
PACKRAT_ALTERNATIVE
Insert list:
PACKRAT
Class invariant
top
primaries
/= Void
how_many
.in_range(
one
,
one_or_more
)
Overview
top
Creation features
{
PACKRAT
}
make
(a_primaries:
TRAVERSABLE
[
PACKRAT_PRIMARY
], a_how_many:
INTEGER_8
, a_tag:
ABSTRACT_STRING
, a_action:
PROCEDURE
[
TUPLE
])
Features
{
ANY
}
is_coherent
:
BOOLEAN
out_in_tagged_out_memory
Append terse printable representation of current object in
tagged_out_memory
.
accept
(visitor:
PACKRAT_VISITOR
)
Accept to be visited by the
visitor
.
{
PACKRAT_INTERNAL
}
set_default_tree_builders
(non_terminal_builder:
PROCEDURE
[
TUPLE 2
[
FIXED_STRING
,
TRAVERSABLE
[
FIXED_STRING
]]], terminal_builder:
PROCEDURE
[
TUPLE 2
[
FIXED_STRING
,
PARSER_IMAGE
]])
set_nt
(a_nt:
PACKRAT_NON_TERMINAL
)
set_how_many
(a_how_many:
INTEGER_8
)
set_tag
(a_tag:
ABSTRACT_STRING
)
{
PACKRAT_VISITOR
,
PACKRAT_INTERNAL
}
primaries
:
TRAVERSABLE
[
PACKRAT_PRIMARY
]
action
:
PROCEDURE
[
TUPLE
]
id
:
INTEGER_32
how_many
:
INTEGER_8
tag
:
FIXED_STRING
{}
pack_parse
(context:
PACKRAT_PARSE_CONTEXT
):
TRISTATE
do_parse
(context:
PACKRAT_PARSE_CONTEXT
):
TRISTATE
call_non_terminal_builder
(non_terminal_builder:
PROCEDURE
[
TUPLE 2
[
FIXED_STRING
,
TRAVERSABLE
[
FIXED_STRING
]]])
{}
make
(a_primaries:
TRAVERSABLE
[
PACKRAT_PRIMARY
], a_how_many:
INTEGER_8
, a_tag:
ABSTRACT_STRING
, a_action:
PROCEDURE
[
TUPLE
])
{
ANY
}
infix "/"
(other:
PACKRAT_ALTERNATIVE
):
PACKRAT_PATTERN
{
ANY
}
hash_code
:
INTEGER_32
The hash-code value of
Current
.
is_equal
(other: PACKRAT_SEQUENCE):
BOOLEAN
Is
other
attached to an object considered equal to current object?
positive_lookahead
:
PACKRAT_ALTERNATIVE
prefix "@"
:
PACKRAT_ALTERNATIVE
negative_lookahead
:
PACKRAT_ALTERNATIVE
prefix "~"
:
PACKRAT_ALTERNATIVE
{
PACKRAT_INTERNAL
}
parse
(context:
PACKRAT_PARSE_CONTEXT
):
TRISTATE
nt
:
PACKRAT_NON_TERMINAL
set_paren
(a_paren:
BOOLEAN
)
{
PACKRAT_INTERNAL
,
PACKRAT_VISITOR
}
need_paren
:
BOOLEAN
{}
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
}
yes
:
TRISTATE
no
:
TRISTATE
maybe
:
TRISTATE
Tune exports to your liking if need be
{}
one
:
INTEGER_8
zero_or_one
:
INTEGER_8
zero_or_more
:
INTEGER_8
one_or_more
:
INTEGER_8
seq
(a_primaries:
TRAVERSABLE
[
PACKRAT_PRIMARY
], a_how_many:
INTEGER_8
, a_tag:
ABSTRACT_STRING
, a_action:
PROCEDURE
[
TUPLE
]):
PACKRAT_ALTERNATIVE
ref
(a_atom_name:
ABSTRACT_STRING
):
PACKRAT_PRIMARY
is_coherent
:
BOOLEAN
effective function
{
ANY
}
top
ensure
must_be_coherent:
Result
out_in_tagged_out_memory
effective procedure
{
ANY
}
top
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
}
top
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
{
PACKRAT_INTERNAL
}
top
set_nt
(a_nt:
PACKRAT_NON_TERMINAL
)
effective procedure
{
PACKRAT_INTERNAL
}
top
require
a_nt /= Void
ensure
nt = a_nt
set_how_many
(a_how_many:
INTEGER_8
)
effective procedure
{
PACKRAT_INTERNAL
}
top
set_tag
(a_tag:
ABSTRACT_STRING
)
effective procedure
{
PACKRAT_INTERNAL
}
top
ensure
a_tag = Void implies
tag
= Void
a_tag /= Void implies
tag
= a_tag.intern
primaries
:
TRAVERSABLE
[
PACKRAT_PRIMARY
]
writable attribute
{
PACKRAT_VISITOR
,
PACKRAT_INTERNAL
}
top
action
:
PROCEDURE
[
TUPLE
]
writable attribute
{
PACKRAT_VISITOR
,
PACKRAT_INTERNAL
}
top
id
:
INTEGER_32
writable attribute
{
PACKRAT_VISITOR
,
PACKRAT_INTERNAL
}
top
how_many
:
INTEGER_8
writable attribute
{
PACKRAT_VISITOR
,
PACKRAT_INTERNAL
}
top
tag
:
FIXED_STRING
writable attribute
{
PACKRAT_VISITOR
,
PACKRAT_INTERNAL
}
top
pack_parse
(context:
PACKRAT_PARSE_CONTEXT
):
TRISTATE
effective function
{}
top
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
{}
top
call_non_terminal_builder
(non_terminal_builder:
PROCEDURE
[
TUPLE 2
[
FIXED_STRING
,
TRAVERSABLE
[
FIXED_STRING
]]])
effective procedure
{}
top
make
(a_primaries:
TRAVERSABLE
[
PACKRAT_PRIMARY
], a_how_many:
INTEGER_8
, a_tag:
ABSTRACT_STRING
, a_action:
PROCEDURE
[
TUPLE
])
effective procedure
{}
top
require
a_primaries /= Void
a_how_many.in_range(
one
,
one_or_more
)
ensure
primaries
= a_primaries
how_many
= a_how_many
a_tag = Void implies
tag
= Void
a_tag /= Void implies
tag
= a_tag.intern
action
= a_action
infix "/"
(other:
PACKRAT_ALTERNATIVE
):
PACKRAT_PATTERN
effective function
{
ANY
}
top
require
other /= Void
hash_code
:
INTEGER_32
effective function
{
ANY
}
top
The hash-code value of
Current
.
ensure
good_hash_value:
Result >= 0
is_equal
(other: PACKRAT_SEQUENCE):
BOOLEAN
effective function
{
ANY
}
top
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
}
top
prefix "@"
:
PACKRAT_ALTERNATIVE
effective function
{
ANY
}
top
negative_lookahead
:
PACKRAT_ALTERNATIVE
frozen
effective function
{
ANY
}
top
prefix "~"
:
PACKRAT_ALTERNATIVE
effective function
{
ANY
}
top
parse
(context:
PACKRAT_PARSE_CONTEXT
):
TRISTATE
frozen
effective function
{
PACKRAT_INTERNAL
}
top
require
context /= Void
ensure
not Result.is_equal(
yes
) implies context.buffer.current_index = old context.buffer.current_index
nt
:
PACKRAT_NON_TERMINAL
writable attribute
{
PACKRAT_INTERNAL
}
top
set_paren
(a_paren:
BOOLEAN
)
effective procedure
{
PACKRAT_INTERNAL
}
top
ensure
need_paren
= a_paren
need_paren
:
BOOLEAN
writable attribute
{
PACKRAT_INTERNAL
,
PACKRAT_VISITOR
}
top
log
:
LOGGER
effective function
{}
top
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
{}
top
The cached logger.
The ugly name is intentional. Don't use directly.
yes
:
TRISTATE
effective function
{
ANY
}
top
no
:
TRISTATE
effective function
{
ANY
}
top
maybe
:
TRISTATE
effective function
{
ANY
}
top
one
:
INTEGER_8
is 0
constant attribute
{}
top
zero_or_one
:
INTEGER_8
is 1
constant attribute
{}
top
zero_or_more
:
INTEGER_8
is 2
constant attribute
{}
top
one_or_more
:
INTEGER_8
is 3
constant attribute
{}
top
seq
(a_primaries:
TRAVERSABLE
[
PACKRAT_PRIMARY
], a_how_many:
INTEGER_8
, a_tag:
ABSTRACT_STRING
, a_action:
PROCEDURE
[
TUPLE
]):
PACKRAT_ALTERNATIVE
effective function
{}
top
require
a_primaries /= Void
a_how_many.in_range(
one
,
one_or_more
)
ref
(a_atom_name:
ABSTRACT_STRING
):
PACKRAT_PRIMARY
effective function
{}
top
require
a_atom_name /= Void