indexing
description: "General mechanisms for building lexical analyzers"
legal: "See notice at end of class."
status: "See notice at end of class."
date: "$Date: 2006-01-22 18:25:44 -0800 (Sun, 22 Jan 2006) $"
revision: "$Revision: 56675 $"
class interface
LEX_BUILDER
create
make
ensure
last_character_set: last_character_code = last_ascii
make_extended (char_code: INTEGER_32)
`char_code'
require
valid_char_code: char_code > 0
ensure
last_character_set: last_character_code = char_code
feature
initialize
analyzer
ensure
initialized
make
ensure
last_character_set: last_character_code = last_ascii
array_make (min_index, max_index: INTEGER_32)
`min_index'`max_index'
`min_index'`max_index'
ARRAY
require ARRAY
valid_bounds: min_index <= max_index + 1
ensure ARRAY
lower_set: lower = min_index
upper_set: upper = max_index
items_set: all_default
pdfa_make (n, i: INTEGER_32)
`n'`i'
PDFA
make_extended (char_code: INTEGER_32)
`char_code'
require
valid_char_code: char_code > 0
ensure
last_character_set: last_character_code = char_code
make_from_array (a: ARRAY [LINKED_LIST [INTEGER_32]])
`a'
`ARRAY'
ARRAY
require ARRAY
array_exists: a /= Void
make_from_cil (na: NATIVE_ARRAY [like pdfa_item])
`na'
ARRAY
require ARRAY
is_dotnet: {PLATFORM}.is_dotnet
na_not_void: na /= Void
feature
ack: INTEGER_32 is 6
ASCII
ampersand: INTEGER_32 is 38
ASCII
analyzer: LEXICAL
area: SPECIAL [LINKED_LIST [INTEGER_32]]
TO_SPECIAL
back_space: INTEGER_32 is 8
ASCII
backslash: INTEGER_32 is 92
ASCII
bar: INTEGER_32 is 124
ASCII
bel: INTEGER_32 is 7
ASCII
blank: INTEGER_32 is 32
ASCII
break: INTEGER_32 is -7
ASCII
bs: INTEGER_32 is 8
ASCII
buf_overflow: INTEGER_32 is -9
ASCII
can: INTEGER_32 is 24
ASCII
carriage_return: INTEGER_32 is 13
ASCII
case_diff: INTEGER_32 is 32
Lower_aUpper_a
ASCII
case_sensitive: BOOLEAN
categories_table: ARRAY [INTEGER_32]
character_set_size: INTEGER_32 is 128
ASCII
circumflex: INTEGER_32 is 94
ASCII
closing_brace: INTEGER_32 is 125
ASCII
colon: INTEGER_32 is 58
ASCII
comma: INTEGER_32 is 44
ASCII
commercial_at: INTEGER_32 is 64
ASCII
cr: INTEGER_32 is 13
ASCII
ctrl_a: INTEGER_32 is 1
ASCII
ctrl_b: INTEGER_32 is 2
ASCII
ctrl_backslash: INTEGER_32 is 28
ASCII
ctrl_c: INTEGER_32 is 3
ASCII
ctrl_circumflex: INTEGER_32 is 30
ASCII
ctrl_d: INTEGER_32 is 4
ASCII
ctrl_e: INTEGER_32 is 5
ASCII
ctrl_f: INTEGER_32 is 6
ASCII
ctrl_g: INTEGER_32 is 7
ASCII
ctrl_h: INTEGER_32 is 8
ASCII
ctrl_i: INTEGER_32 is 9
ASCII
ctrl_j: INTEGER_32 is 10
ASCII
ctrl_k: INTEGER_32 is 11
ASCII
ctrl_l: INTEGER_32 is 12
ASCII
ctrl_lbracket: INTEGER_32 is 27
ASCII
ctrl_m: INTEGER_32 is 13
ASCII
ctrl_n: INTEGER_32 is 14
ASCII
ctrl_o: INTEGER_32 is 15
ASCII
ctrl_p: INTEGER_32 is 16
ASCII
ctrl_q: INTEGER_32 is 17
ASCII
ctrl_questmark: INTEGER_32 is 127
ASCII
ctrl_r: INTEGER_32 is 18
ASCII
ctrl_rbracket: INTEGER_32 is 29
ASCII
ctrl_s: INTEGER_32 is 19
ASCII
ctrl_t: INTEGER_32 is 20
ASCII
ctrl_u: INTEGER_32 is 21
ASCII
ctrl_underlined: INTEGER_32 is 31
ASCII
ctrl_v: INTEGER_32 is 22
ASCII
ctrl_w: INTEGER_32 is 23
ASCII
ctrl_x: INTEGER_32 is 24
ASCII
ctrl_y: INTEGER_32 is 25
ASCII
ctrl_z: INTEGER_32 is 26
ASCII
dc1: INTEGER_32 is 17
ASCII
dc2: INTEGER_32 is 18
ASCII
dc3: INTEGER_32 is 19
ASCII
dc4: INTEGER_32 is 20
ASCII
del: INTEGER_32 is 127
ASCII
dfa: FIXED_DFA
NDFA
dle: INTEGER_32 is 16
ASCII
dollar: INTEGER_32 is 36
ASCII
dot: INTEGER_32 is 46
ASCII
doublequote: INTEGER_32 is 34
ASCII
down_arrow: INTEGER_32 is -3
ASCII
eight: INTEGER_32 is 56
ASCII
em: INTEGER_32 is 25
ASCII
enq: INTEGER_32 is 5
ASCII
entry (i: INTEGER_32): LINKED_LIST [INTEGER_32]
`i'
ARRAY
require ARRAY
valid_key: valid_index (i)
eot: INTEGER_32 is 4
ASCII
equal_sign: INTEGER_32 is 61
ASCII
error_list: ERROR_LIST
esc: INTEGER_32 is 27
ASCII
etb: INTEGER_32 is 23
ASCII
etx: INTEGER_32 is 3
ASCII
exclamation: INTEGER_32 is 33
ASCII
final_array: ARRAY [INTEGER_32]
`final'
PDFA
first_printable: INTEGER_32 is 32
ASCII
five: INTEGER_32 is 53
ASCII
four: INTEGER_32 is 52
ASCII
fs: INTEGER_32 is 28
ASCII
generating_type: STRING_8
ANY
ensure ANY
generating_type_not_void: Result /= Void
generating_type_not_empty: not Result.is_empty
generator: STRING_8
ANY
ensure ANY
generator_not_void: Result /= Void
generator_not_empty: not Result.is_empty
grave_accent: INTEGER_32 is 96
ASCII
greaterthan: INTEGER_32 is 62
ASCII
greatest_input: INTEGER_32
AUTOMATON
gs: INTEGER_32 is 29
ASCII
has (v: LINKED_LIST [INTEGER_32]): BOOLEAN
`v'
object_comparison
ARRAY
ensure CONTAINER
not_found_in_empty: Result implies not is_empty
has_letters: BOOLEAN
PDFA
home_arrow: INTEGER_32 is -6
ASCII
ht: INTEGER_32 is 9
ASCII
input_array: ARRAY [FIXED_INTEGER_SET]
PDFA
item alias "[]" (i: INTEGER_32): LINKED_LIST [INTEGER_32] assign put
`i'
ARRAYinfix "@"
ARRAY
require TABLE
valid_key: valid_index (i)
require TO_SPECIAL
valid_index: valid_index (i)
keyword_h_table: HASH_TABLE [INTEGER_32, STRING_8]
keywords_case_sensitive: BOOLEAN
keywords_list: LINKED_LIST [STRING_8]
PDFA
last_ascii: INTEGER_32 is 127
ASCII
last_character_code: INTEGER_32
last_created_tool: INTEGER_32
last_printable: INTEGER_32 is 126
ASCII
lbracket: INTEGER_32 is 91
ASCII
lcurly: INTEGER_32 is 40
ASCII
left_arrow: INTEGER_32 is -4
ASCII
lessthan: INTEGER_32 is 60
ASCII
letter_layout: INTEGER_32 is 70
ASCII
lexical_frozen: BOOLEAN
line_feed: INTEGER_32 is 10
ASCII
lower_a: INTEGER_32 is 97
ASCII
lower_b: INTEGER_32 is 98
ASCII
lower_c: INTEGER_32 is 99
ASCII
lower_d: INTEGER_32 is 100
ASCII
lower_e: INTEGER_32 is 101
ASCII
lower_f: INTEGER_32 is 102
ASCII
lower_g: INTEGER_32 is 103
ASCII
lower_h: INTEGER_32 is 104
ASCII
lower_i: INTEGER_32 is 105
ASCII
lower_j: INTEGER_32 is 106
ASCII
lower_k: INTEGER_32 is 107
ASCII
lower_l: INTEGER_32 is 108
ASCII
lower_m: INTEGER_32 is 109
ASCII
lower_n: INTEGER_32 is 110
ASCII
lower_o: INTEGER_32 is 111
ASCII
lower_p: INTEGER_32 is 112
ASCII
lower_q: INTEGER_32 is 113
ASCII
lower_r: INTEGER_32 is 114
ASCII
lower_s: INTEGER_32 is 115
ASCII
lower_t: INTEGER_32 is 116
ASCII
lower_u: INTEGER_32 is 117
ASCII
lower_v: INTEGER_32 is 118
ASCII
lower_w: INTEGER_32 is 119
ASCII
lower_x: INTEGER_32 is 120
ASCII
lower_y: INTEGER_32 is 121
ASCII
lower_z: INTEGER_32 is 122
ASCII
minus: INTEGER_32 is 45
ASCII
nak: INTEGER_32 is 21
ASCII
nine: INTEGER_32 is 57
ASCII
nl: INTEGER_32 is 10
ASCII
np: INTEGER_32 is 12
ASCII
nul: INTEGER_32 is 0
ASCII
number_sign: INTEGER_32 is 35
ASCII
one: INTEGER_32 is 49
ASCII
opening_brace: INTEGER_32 is 123
ASCII
overflow: INTEGER_32 is -8
ASCII
percent: INTEGER_32 is 37
ASCII
plus: INTEGER_32 is 43
ASCII
questmark: INTEGER_32 is 63
ASCII
rbracket: INTEGER_32 is 93
ASCII
rcurly: INTEGER_32 is 41
ASCII
right_arrow: INTEGER_32 is -5
ASCII
rs: INTEGER_32 is 30
ASCII
selected_tools: LINKED_LIST [INTEGER_32]
semicolon: INTEGER_32 is 59
ASCII
seven: INTEGER_32 is 55
ASCII
si: INTEGER_32 is 15
ASCII
singlequote: INTEGER_32 is 39
ASCII
six: INTEGER_32 is 54
ASCII
slash: INTEGER_32 is 47
ASCII
so: INTEGER_32 is 14
ASCII
soh: INTEGER_32 is 1
ASCII
sp: INTEGER_32 is 32
ASCII
star: INTEGER_32 is 42
ASCII
start_number: INTEGER_32
AUTOMATON
stx: INTEGER_32 is 2
ASCII
sub: INTEGER_32 is 26
ASCII
syn: INTEGER_32 is 22
ASCII
tabulation: INTEGER_32 is 9
ASCII
three: INTEGER_32 is 51
ASCII
tilde: INTEGER_32 is 126
ASCII
token_type_list: LINKED_LIST [INTEGER_32]
tool_list: LINKED_LIST [PDFA]
tool_names: LINKED_LIST [STRING_8]
two: INTEGER_32 is 50
ASCII
underlined: INTEGER_32 is 95
ASCII
up_arrow: INTEGER_32 is -2
ASCII
upper_a: INTEGER_32 is 65
ASCII
upper_b: INTEGER_32 is 66
ASCII
upper_c: INTEGER_32 is 67
ASCII
upper_d: INTEGER_32 is 68
ASCII
upper_e: INTEGER_32 is 69
ASCII
upper_f: INTEGER_32 is 70
ASCII
upper_g: INTEGER_32 is 71
ASCII
upper_h: INTEGER_32 is 72
ASCII
upper_i: INTEGER_32 is 73
ASCII
upper_j: INTEGER_32 is 74
ASCII
upper_k: INTEGER_32 is 75
ASCII
upper_l: INTEGER_32 is 76
ASCII
upper_m: INTEGER_32 is 77
ASCII
upper_n: INTEGER_32 is 78
ASCII
upper_o: INTEGER_32 is 79
ASCII
upper_p: INTEGER_32 is 80
ASCII
upper_q: INTEGER_32 is 81
ASCII
upper_r: INTEGER_32 is 82
ASCII
upper_s: INTEGER_32 is 83
ASCII
upper_t: INTEGER_32 is 84
ASCII
upper_u: INTEGER_32 is 85
ASCII
upper_v: INTEGER_32 is 86
ASCII
upper_w: INTEGER_32 is 87
ASCII
upper_x: INTEGER_32 is 88
ASCII
upper_y: INTEGER_32 is 89
ASCII
upper_z: INTEGER_32 is 90
ASCII
us: INTEGER_32 is 31
ASCII
vt: INTEGER_32 is 11
ASCII
zero: INTEGER_32 is 48
ASCII
infix "@" (i: INTEGER_32): LINKED_LIST [INTEGER_32] assign put
`i'
ARRAY`item'
ARRAY
require TABLE
valid_key: valid_index (i)
require TO_SPECIAL
valid_index: valid_index (i)
feature
additional_space: INTEGER_32
RESIZABLE
ensure RESIZABLE
at_least_one: Result >= 1
capacity: INTEGER_32
ARRAYcount
ARRAY
require BOUNDED
True
ensure then ARRAY
consistent_with_bounds: Result = upper - lower + 1
count: INTEGER_32
ARRAYcapacity
ARRAY
require FINITE
True
ensure then ARRAY
consistent_with_bounds: Result = upper - lower + 1
growth_percentage: INTEGER_32 is 50
RESIZABLE
index_set: INTEGER_INTERVAL
ARRAY
require INDEXABLE
True
ensure INDEXABLE
not_void: Result /= Void
ensure then ARRAY
same_count: Result.count = count
same_bounds: ((Result.lower = lower) and (Result.upper = upper))
lower: INTEGER_32
ARRAY
minimal_increase: INTEGER_32 is 5
RESIZABLE
nb_states: INTEGER_32
AUTOMATON
occurrences (v: LINKED_LIST [INTEGER_32]): INTEGER_32
`v'
ARRAY
ensure BAG
non_negative_occurrences: Result >= 0
upper: INTEGER_32
ARRAY
feature
frozen deep_equal (some: ?ANY; other: like arg #1): BOOLEAN
`some'`other'
ANY
ensure ANY
shallow_implies_deep: standard_equal (some, other) implies Result
both_or_none_void: (some = Void) implies (Result = (other = Void))
same_type: (Result and (some /=