/[eiffelstudio]/vendor/gobosoft.com/gobo/4.0d/library/tools/src/eiffel/parser/et_eiffel_scanner_skeleton.e
ViewVC logotype

Contents of /vendor/gobosoft.com/gobo/4.0d/library/tools/src/eiffel/parser/et_eiffel_scanner_skeleton.e

Parent Directory Parent Directory | Revision Log Revision Log


Revision 98698 - (show annotations)
Mon May 9 13:53:54 2016 UTC (3 years, 5 months ago) by manus
File size: 110434 byte(s)
Update 4.0d version with changes in Gobo from 2016/05/09

1 note
2
3 description:
4
5 "Scanner skeletons for Eiffel parsers"
6
7 library: "Gobo Eiffel Tools Library"
8 copyright: "Copyright (c) 1999-2016, Eric Bezault and others"
9 license: "MIT License"
10 date: "$Date$"
11 revision: "$Revision$"
12
13 deferred class ET_EIFFEL_SCANNER_SKELETON
14
15 inherit
16
17 YY_COMPRESSED_SCANNER_SKELETON
18 rename
19 make as make_compressed_scanner_skeleton,
20 text as skeleton_text,
21 text_substring as skeleton_text_substring
22 redefine
23 reset, fatal_error
24 end
25
26 ET_EIFFEL_TOKENS
27 export {NONE} all end
28
29 UT_CHARACTER_CODES
30 export {NONE} all end
31
32 KL_IMPORTED_INTEGER_ROUTINES
33 KL_IMPORTED_STRING_ROUTINES
34 KL_SHARED_PLATFORM
35 KL_SHARED_EIFFEL_COMPILER
36 KL_SHARED_EXECUTION_ENVIRONMENT
37 KL_SHARED_FILE_SYSTEM
38 ET_SHARED_TOKEN_CONSTANTS
39 KL_SHARED_STRING_EQUALITY_TESTER
40
41 feature {NONE} -- Initialization
42
43 make (a_filename: STRING)
44 -- Create a new Eiffel scanner.
45 require
46 a_filename_not_void: a_filename /= Void
47 a_filename_not_empty: not a_filename.is_empty
48 do
49 make_with_buffer (Empty_buffer)
50 last_text_count := 1
51 last_literal_start := 1
52 filename := a_filename
53 group := tokens.unknown_group
54 verbatim_marker := no_verbatim_marker
55 verbatim_open_white_characters := no_verbatim_marker
56 verbatim_close_white_characters := no_verbatim_marker
57 ensure
58 filename_set: filename = a_filename
59 end
60
61 feature -- Initialization
62
63 reset
64 -- Reset scanner before scanning next input.
65 do
66 last_literal_start := 1
67 last_literal_end := 0
68 verbatim_marker := no_verbatim_marker
69 verbatim_open_white_characters := no_verbatim_marker
70 verbatim_close_white_characters := no_verbatim_marker
71 precursor
72 end
73
74 feature -- Access
75
76 filename: STRING
77 -- Name of file being parsed
78
79 group: ET_PRIMARY_GROUP
80 -- Group to which the class being parsed belongs
81
82 current_universe: ET_UNIVERSE
83 -- Universe to which the class being parsed belongs
84 do
85 Result := group.universe
86 ensure
87 current_universe_not_void: Result /= Void
88 end
89
90 current_system: ET_SYSTEM
91 -- Surrounding Eiffel system
92 do
93 Result := group.current_system
94 ensure
95 current_system_not_void: Result /= Void
96 end
97
98 current_position: ET_POSITION
99 -- Current position
100 -- (Create a new object at each call.)
101 do
102 create {ET_FILE_POSITION} Result.make (filename, line, column)
103 ensure
104 current_position_not_void: Result /= Void
105 end
106
107 ast_factory: ET_AST_FACTORY
108 -- Abstract Syntax Tree factory
109 do
110 Result := current_system.ast_factory
111 ensure
112 ast_factory_not_void: Result /= Void
113 end
114
115 feature -- Status report
116
117 use_attached_keyword: BOOLEAN
118 -- Should 'attached' be considered as
119 -- a keyword (otherwise identifier)?
120 do
121 Result := current_system.use_attached_keyword
122 end
123
124 use_attribute_keyword: BOOLEAN
125 -- Should 'attribute' be considered as
126 -- a keyword (otherwise identifier)?
127 do
128 if group.use_obsolete_syntax then
129 Result := False
130 else
131 Result := current_system.use_attribute_keyword
132 end
133 end
134
135 use_detachable_keyword: BOOLEAN
136 -- Should 'detachable' be considered as
137 -- a keyword (otherwise identifier)?
138 do
139 Result := current_system.use_detachable_keyword
140 end
141
142 use_note_keyword: BOOLEAN
143 -- Should 'note' be considered as
144 -- a keyword (otherwise identifier)?
145 do
146 if group.use_obsolete_syntax then
147 Result := False
148 else
149 Result := current_system.use_note_keyword
150 end
151 end
152
153 use_reference_keyword: BOOLEAN
154 -- Should 'reference' be considered as
155 -- a keyword (otherwise identifier)?
156 do
157 Result := current_system.use_reference_keyword
158 end
159
160 feature -- Error handling
161
162 error_handler: ET_ERROR_HANDLER
163 -- Error handler
164 do
165 Result := current_system.error_handler
166 ensure
167 error_handler_not_void: Result /= Void
168 end
169
170 fatal_error (a_message: STRING)
171 -- A fatal error occurred.
172 -- Print error message.
173 do
174 report_syntax_error (current_position)
175 end
176
177 report_syntax_error (a_position: ET_POSITION)
178 -- Report a syntax error at position `a_position'.
179 require
180 a_position_not_void: a_position /= Void
181 do
182 set_syntax_error
183 error_handler.report_syntax_error (filename, a_position)
184 end
185
186 set_syntax_error
187 -- Set syntax error flag in class being parsed, if already known.
188 do
189 end
190
191 feature -- Cluster dependences
192
193 build_provider_constraint (a_cluster: ET_CLUSTER)
194 -- Build `provider_constraint' of `a_cluster'.
195 require
196 a_cluster_not_void: a_cluster /= Void
197 local
198 l_filename: STRING
199 l_file: KL_TEXT_INPUT_FILE
200 l_string: STRING
201 l_splitter: ST_SPLITTER
202 l_names: DS_LIST [STRING]
203 l_cluster_names: DS_ARRAYED_LIST [STRING]
204 l_provider_constraint: detachable ET_CLUSTER_DEPENDENCE_CONSTRAINT
205 old_group: ET_PRIMARY_GROUP
206 i: INTEGER
207 do
208 old_group := group
209 group := a_cluster
210 if current_system.cluster_dependence_enabled then
211 l_filename := Execution_environment.interpreted_string (file_system.pathname (a_cluster.full_pathname, "providers.txt"))
212 create l_file.make (l_filename)
213 l_file.open_read
214 if l_file.is_open_read then
215 create l_string.make (512)
216 from
217 l_file.read_string (512)
218 until
219 l_file.end_of_file
220 loop
221 l_string.append_string (l_file.last_string)
222 l_file.read_string (512)
223 end
224 l_file.close
225 create l_splitter.make
226 l_splitter.set_separators (" %T%R%N")
227 l_names := l_splitter.split (l_string)
228 create l_cluster_names.make_from_linear (l_names)
229 if current_system.use_cluster_dependence_pathnames then
230 if not current_system.is_dotnet then
231 -- Remove assembly dlls from the list.
232 from
233 i := l_cluster_names.count
234 until
235 i < 1
236 loop
237 if l_cluster_names.item (i).as_lower.ends_with (".dll") then
238 l_cluster_names.remove (i)
239 end
240 i := i - 1
241 end
242 end
243 create l_provider_constraint.make_with_pathnames (a_cluster, l_cluster_names)
244 else
245 create l_provider_constraint.make (a_cluster, l_cluster_names)
246 end
247 elseif attached a_cluster.parent as l_cluster_parent then
248 l_provider_constraint := l_cluster_parent.provider_constraint
249 elseif not attached {ET_SYSTEM} a_cluster.universe then
250 create l_cluster_names.make (50)
251 add_universe_full_name (a_cluster.universe, l_cluster_names)
252 a_cluster.universe.universes_do_all (agent add_universe_full_name (?, l_cluster_names))
253 create l_provider_constraint.make (a_cluster, l_cluster_names)
254 end
255 a_cluster.set_provider_constraint (l_provider_constraint)
256 end
257 group := old_group
258 end
259
260 build_dependant_constraint (a_cluster: ET_CLUSTER)
261 -- Build `dependant_constraint' of `a_cluster'.
262 require
263 a_cluster_not_void: a_cluster /= Void
264 local
265 l_filename: STRING
266 l_file: KL_TEXT_INPUT_FILE
267 l_string: STRING
268 l_splitter: ST_SPLITTER
269 l_names: DS_LIST [STRING]
270 l_cluster_names: DS_ARRAYED_LIST [STRING]
271 l_dependant_constraint: detachable ET_CLUSTER_DEPENDENCE_CONSTRAINT
272 old_group: ET_PRIMARY_GROUP
273 i: INTEGER
274 do
275 old_group := group
276 group := a_cluster
277 if current_system.cluster_dependence_enabled then
278 l_filename := Execution_environment.interpreted_string (file_system.pathname (a_cluster.full_pathname, "dependants.txt"))
279 create l_file.make (l_filename)
280 l_file.open_read
281 if l_file.is_open_read then
282 create l_string.make (512)
283 from
284 l_file.read_string (512)
285 until
286 l_file.end_of_file
287 loop
288 l_string.append_string (l_file.last_string)
289 l_file.read_string (512)
290 end
291 l_file.close
292 create l_splitter.make
293 l_splitter.set_separators (" %T%R%N")
294 l_names := l_splitter.split (l_string)
295 create l_cluster_names.make_from_linear (l_names)
296 if current_system.use_cluster_dependence_pathnames then
297 if not current_system.is_dotnet then
298 -- Remove assembly dlls from the list.
299 from
300 i := l_cluster_names.count
301 until
302 i < 1
303 loop
304 if l_cluster_names.item (i).as_lower.ends_with (".dll") then
305 l_cluster_names.remove (i)
306 end
307 i := i - 1
308 end
309 end
310 create l_dependant_constraint.make_with_pathnames (a_cluster, l_cluster_names)
311 else
312 create l_dependant_constraint.make (a_cluster, l_cluster_names)
313 end
314 elseif attached a_cluster.parent as l_cluster_parent then
315 l_dependant_constraint := l_cluster_parent.dependant_constraint
316 end
317 a_cluster.set_dependant_constraint (l_dependant_constraint)
318 end
319 group := old_group
320 end
321
322 feature -- Tokens
323
324 has_break: BOOLEAN
325 -- Has a break been scanned?
326 do
327 Result := last_break_end > last_text_count
328 ensure
329 definition: Result = (last_break_end > last_text_count)
330 end
331
332 has_comment: BOOLEAN
333 -- Has a comment been scanned?
334 do
335 Result := last_comment_end > last_text_count
336 ensure
337 definition: Result = (last_comment_end > last_text_count)
338 end
339
340 last_literal_count: INTEGER
341 -- Number of characters in `last_literal'
342 do
343 Result := last_literal_end - last_literal_start + 1
344 ensure
345 last_literal_count_positive: Result >= 0
346 definition: Result = last_literal.count
347 end
348
349 last_literal: STRING
350 -- Last literal scanned
351 do
352 Result := text_substring (last_literal_start, last_literal_end)
353 ensure
354 last_literal_not_void: Result /= Void
355 end
356
357 last_identifier: ET_IDENTIFIER
358 -- Last identifier scanned
359 require
360 last_literal_not_empty: last_literal_count > 0
361 local
362 a_string: STRING
363 a_name: STRING
364 a_code: INTEGER
365 do
366 a_string := string_buffer
367 STRING_.wipe_out (a_string)
368 append_text_substring_to_string (last_literal_start, last_literal_end, a_string)
369 strings.search (a_string)
370 if strings.found then
371 a_name := strings.found_key
372 a_code := strings.found_item
373 if a_code >= 0 then
374 create Result.make_with_hash_code (a_name, a_code)
375 else
376 create Result.make (a_name)
377 strings.replace_found_item (Result.hash_code)
378 end
379 else
380 create a_name.make (a_string.count)
381 a_name.append_string (a_string)
382 create Result.make (a_name)
383 strings.force_new (Result.hash_code, a_name)
384 end
385 ensure
386 last_identifier_not_void: Result /= Void
387 end
388
389 last_c3_character_constant: ET_C3_CHARACTER_CONSTANT
390 -- Last character constant scanned of the form '%/code/'
391 require
392 -- valid_literal: ((0*([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))|(0x[0-9a-fA-F]{1,4})).recognizes (last_literal)
393 local
394 l_literal: STRING
395 l_value: CHARACTER_32
396 i, nb: INTEGER
397 c: CHARACTER
398 l_code: NATURAL_32
399 do
400 l_literal := last_literal
401 if l_literal.starts_with ("0x") then
402 nb := l_literal.count
403 from i := 3 until i > nb loop
404 c := l_literal.item (i)
405 l_code := l_code * 16
406 inspect c
407 when '0' then
408 -- Do nothing.
409 when '1' then
410 l_code := l_code + 1
411 when '2' then
412 l_code := l_code + 2
413 when '3' then
414 l_code := l_code + 3
415 when '4' then
416 l_code := l_code + 4
417 when '5' then
418 l_code := l_code + 5
419 when '6' then
420 l_code := l_code + 6
421 when '7' then
422 l_code := l_code + 7
423 when '8' then
424 l_code := l_code + 8
425 when '9' then
426 l_code := l_code + 9
427 when 'a', 'A' then
428 l_code := l_code + 10
429 when 'b', 'B' then
430 l_code := l_code + 11
431 when 'c', 'C' then
432 l_code := l_code + 12
433 when 'd', 'D' then
434 l_code := l_code + 13
435 when 'e', 'E' then
436 l_code := l_code + 14
437 when 'f', 'F' then
438 l_code := l_code + 15
439 end
440 i := i + 1
441 end
442 else
443 nb := l_literal.count
444 from i := 1 until i > nb loop
445 c := l_literal.item (i)
446 l_code := l_code * 10 + c.natural_32_code - Zero_code.to_natural_32
447 i := i + 1
448 end
449 l_value := l_code.to_character_32
450 end
451 l_value := l_code.to_character_32
452 create Result.make (l_literal, l_value)
453 ensure
454 last_c3_character_constant_not_void: Result /= Void
455 end
456
457 last_special_manifest_string: ET_SPECIAL_MANIFEST_STRING
458 -- Last special manifest string scanned
459 require
460 -- valid_literal: (([^"%\n]|%([^\n]|\/([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\/|[ \t\r]*\n[ \t\r\n]*%))*).recognizes (last_literal)
461 local
462 l_literal, l_value: STRING
463 i, nb: INTEGER
464 c: CHARACTER
465 l_code: INTEGER
466 do
467 l_literal := last_literal
468 nb := l_literal.count
469 create l_value.make (nb)
470 from i := 1 until i > nb loop
471 c := l_literal.item (i)
472 if c = '%%' then
473 i := i + 1
474 c := l_literal.item (i)
475 inspect c
476 when 'N' then
477 l_value.append_character ('%N')
478 when 'T' then
479 l_value.append_character ('%T')
480 when 'U' then
481 l_value.append_character ('%U')
482 when 'R' then
483 l_value.append_character ('%R')
484 when 'A' then
485 l_value.append_character ('%A')
486 when 'B' then
487 l_value.append_character ('%B')
488 when 'C' then
489 l_value.append_character ('%C')
490 when 'D' then
491 l_value.append_character ('%D')
492 when 'F' then
493 l_value.append_character ('%F')
494 when 'H' then
495 l_value.append_character ('%H')
496 when 'L' then
497 l_value.append_character ('%L')
498 when 'Q' then
499 l_value.append_character ('%Q')
500 when 'S' then
501 l_value.append_character ('%S')
502 when 'V' then
503 l_value.append_character ('%V')
504 when '%%' then
505 l_value.append_character ('%%')
506 when '%'' then
507 l_value.append_character ('%'')
508 when '%"' then
509 l_value.append_character ('%"')
510 when '(' then
511 l_value.append_character ('%(')
512 when ')' then
513 l_value.append_character ('%)')
514 when '<' then
515 l_value.append_character ('%<')
516 when '>' then
517 l_value.append_character ('%>')
518 when '/' then
519 from
520 i := i + 1
521 c := l_literal.item (i)
522 l_code := 0
523 until
524 c = '/'
525 loop
526 l_code := l_code * 10 + c.code - Zero_code
527 i := i + 1
528 c := l_literal.item (i)
529 end
530 l_value.append_character (INTEGER_.to_character (l_code))
531 when '%N', '%R', ' ', '%T' then
532 from
533 i := i + 1
534 until
535 l_literal.item (i) = '%%'
536 loop
537 i := i + 1
538 end
539 when 'n' then
540 l_value.append_character ('%N')
541 when 't' then
542 l_value.append_character ('%T')
543 when 'u' then
544 l_value.append_character ('%U')
545 when 'r' then
546 l_value.append_character ('%R')
547 when 'a' then
548 l_value.append_character ('%A')
549 when 'b' then
550 l_value.append_character ('%B')
551 when 'c' then
552 l_value.append_character ('%C')
553 when 'd' then
554 l_value.append_character ('%D')
555 when 'f' then
556 l_value.append_character ('%F')
557 when 'h' then
558 l_value.append_character ('%H')
559 when 'l' then
560 l_value.append_character ('%L')
561 when 'q' then
562 l_value.append_character ('%Q')
563 when 's' then
564 l_value.append_character ('%S')
565 when 'v' then
566 l_value.append_character ('%V')
567 else
568 l_value.append_character (c)
569 end
570 i := i + 1
571 else
572 l_value.append_character (c)
573 i := i + 1
574 end
575 end
576 create Result.make (l_literal, l_value)
577 ensure
578 last_special_manifest_string_not_void: Result /= Void
579 end
580
581 last_verbatim_string (a_marker, an_open, a_close: STRING; a_left_aligned: BOOLEAN): ET_VERBATIM_STRING
582 -- Last verbatim string scanned
583 require
584 a_marker_not_void: a_marker /= Void
585 an_open_not_void: an_open /= Void
586 a_close_not_void: a_close /= Void
587 local
588 l_literal: STRING
589 l_value: STRING
590 l_longest_break_prefix: INTEGER
591 l_nb_lines: INTEGER
592 c: CHARACTER
593 i, j, nb: INTEGER
594 l_stop: BOOLEAN
595 do
596 l_literal := last_literal
597 if l_literal.is_empty then
598 l_value := l_literal
599 elseif a_left_aligned then
600 nb := l_literal.count
601 l_longest_break_prefix := -1
602 from i := 1 until i > nb loop
603 c := l_literal.item (i)
604 if c = ' ' or c = '%T' then
605 if l_longest_break_prefix /= -1 then
606 -- Break prefix of second and subsequent lines.
607 if j <= l_longest_break_prefix and then c = l_literal.item (j) then
608 -- Same character as in longest break prefix.
609 j := j + 1
610 else
611 -- Reduce size of longest break prefix.
612 l_longest_break_prefix := j - 1
613 -- Skip the rest of the line.
614 from
615 until
616 i > nb or else l_literal.item (i) = '%N'
617 loop
618 i := i + 1
619 end
620 l_nb_lines := l_nb_lines + 1
621 j := 1
622 end
623 end
624 else
625 if l_longest_break_prefix = -1 then
626 -- Break prefix of first line.
627 l_longest_break_prefix := i - 1
628 else
629 -- Reduce size of longest break prefix.
630 l_longest_break_prefix := j - 1
631 end
632 -- Skip the rest of the line.
633 from
634 until
635 i > nb or else l_literal.item (i) = '%N'
636 loop
637 i := i + 1
638 end
639 l_nb_lines := l_nb_lines + 1
640 j := 1
641 end
642 i := i + 1
643 end
644 if l_longest_break_prefix > 0 then
645 create l_value.make (nb - l_nb_lines * l_longest_break_prefix)
646 from i := 1 until i > nb loop
647 from
648 -- Skip the longest break prefix.
649 i := i + l_longest_break_prefix
650 l_stop := False
651 until
652 l_stop or i > nb
653 loop
654 c := l_literal.item (i)
655 l_value.append_character (c)
656 if c = '%N' then
657 l_stop := True
658 end
659 i := i + 1
660 end
661 end
662 else
663 l_value := l_literal
664 end
665 else
666 l_value := l_literal
667 end
668 create Result.make (l_literal, l_value, a_marker, an_open, a_close, a_left_aligned)
669 ensure
670 last_verbatim_string_not_void: Result /= Void
671 end
672
673 last_break: STRING
674 -- Last break scanned
675 require
676 has_break: has_break
677 do
678 Result := text_substring (last_text_count + 1, last_break_end)
679 ensure
680 last_break_not_void: Result /= Void
681 last_break_not_empty: Result.count > 0
682 end
683
684 last_comment: STRING
685 -- Last comment scanned
686 require
687 has_comment: has_comment
688 do
689 Result := text_substring (last_text_count + 1, last_comment_end)
690 ensure
691 last_comment_not_void: Result /= Void
692 last_comment_not_empty: Result.count > 0
693 end
694
695 text: STRING
696 -- Text of last token read
697 -- (Share strings when already scanned.)
698 local
699 a_string: STRING
700 do
701 a_string := string_buffer
702 STRING_.wipe_out (a_string)
703 append_text_to_string (a_string)
704 strings.search (a_string)
705 if strings.found then
706 Result := strings.found_key
707 else
708 create Result.make (a_string.count)
709 Result.append_string (a_string)
710 strings.force_new (-1, Result)
711 end
712 end
713
714 text_substring (s, e: INTEGER): STRING
715 -- Substring of last token read
716 -- (Share strings when already scanned.)
717 local
718 a_string: STRING
719 do
720 a_string := string_buffer
721 STRING_.wipe_out (a_string)
722 append_text_substring_to_string (s, e, a_string)
723 strings.search (a_string)
724 if strings.found then
725 Result := strings.found_key
726 else
727 create Result.make (a_string.count)
728 Result.append_string (a_string)
729 strings.force_new (-1, Result)
730 end
731 end
732
733 feature {NONE} -- Positions
734
735 last_literal_start: INTEGER
736 -- Start position of the last literal read
737
738 last_literal_end: INTEGER
739 -- End position of the last literal read
740
741 last_text_count: INTEGER
742 -- Number of characters in the last text read
743
744 last_break_end: INTEGER
745 -- End position of the last break read
746
747 last_comment_end: INTEGER
748 -- End position of the last comment read
749
750 feature {NONE} -- String handler
751
752 strings: DS_HASH_TABLE [INTEGER, STRING]
753 -- Strings known by the current scanner, and the associated
754 -- hash codes when they are used as identifier
755 once
756 create Result.make_map (100000)
757 Result.set_key_equality_tester (string_equality_tester)
758 -- Needed for compatibility with 5.6.0610 (to be removed later):
759 Result.force_new (-1, tokens.capitalized_boolean_ref_name)
760 Result.force_new (-1, tokens.capitalized_character_ref_name)
761 Result.force_new (-1, tokens.capitalized_character_8_ref_name)
762 Result.force_new (-1, tokens.capitalized_character_32_ref_name)
763 Result.force_new (-1, tokens.capitalized_double_ref_name)
764 Result.force_new (-1, tokens.capitalized_integer_ref_name)
765 Result.force_new (-1, tokens.capitalized_integer_8_ref_name)
766 Result.force_new (-1, tokens.capitalized_integer_16_ref_name)
767 Result.force_new (-1, tokens.capitalized_integer_32_ref_name)
768 Result.force_new (-1, tokens.capitalized_integer_64_ref_name)
769 Result.force_new (-1, tokens.capitalized_natural_ref_name)
770 Result.force_new (-1, tokens.capitalized_natural_8_ref_name)
771 Result.force_new (-1, tokens.capitalized_natural_16_ref_name)
772 Result.force_new (-1, tokens.capitalized_natural_32_ref_name)
773 Result.force_new (-1, tokens.capitalized_natural_64_ref_name)
774 Result.force_new (-1, tokens.capitalized_pointer_ref_name)
775 Result.force_new (-1, tokens.capitalized_real_ref_name)
776 Result.force_new (-1, tokens.capitalized_real_32_ref_name)
777 Result.force_new (-1, tokens.capitalized_real_64_ref_name)
778 Result.force_new (-1, tokens.capitalized_wide_character_ref_name)
779 -- Insert basic strings in `strings'.
780 Result.force_new (-1, tokens.builtin_marker)
781 Result.force_new (-1, tokens.static_builtin_marker)
782 Result.force_new (-1, tokens.builtin_static_marker)
783 -- Class names.
784 Result.force_new (-1, tokens.capitalized_any_name)
785 Result.force_new (-1, tokens.capitalized_arguments_32_name)
786 Result.force_new (-1, tokens.capitalized_array_name)
787 Result.force_new (-1, tokens.capitalized_boolean_name)
788 Result.force_new (-1, tokens.capitalized_character_name)
789 Result.force_new (-1, tokens.capitalized_character_8_name)
790 Result.force_new (-1, tokens.capitalized_character_32_name)
791 Result.force_new (-1, tokens.capitalized_com_failure_name)
792 Result.force_new (-1, tokens.capitalized_disposable_name)
793 Result.force_new (-1, tokens.capitalized_double_name)
794 Result.force_new (-1, tokens.capitalized_exception_name)
795 Result.force_new (-1, tokens.capitalized_exception_manager_name)
796 Result.force_new (-1, tokens.capitalized_exception_manager_factory_name)
797 Result.force_new (-1, tokens.capitalized_function_name)
798 Result.force_new (-1, tokens.capitalized_identified_routines_name)
799 Result.force_new (-1, tokens.capitalized_integer_name)
800 Result.force_new (-1, tokens.capitalized_integer_8_name)
801 Result.force_new (-1, tokens.capitalized_integer_16_name)
802 Result.force_new (-1, tokens.capitalized_integer_32_name)
803 Result.force_new (-1, tokens.capitalized_integer_64_name)
804 Result.force_new (-1, tokens.capitalized_internal_name)
805 Result.force_new (-1, tokens.capitalized_ise_exception_manager_name)
806 Result.force_new (-1, tokens.capitalized_iterable_name)
807 Result.force_new (-1, tokens.capitalized_iteration_cursor_name)
808 Result.force_new (-1, tokens.capitalized_memory_name)
809 Result.force_new (-1, tokens.capitalized_native_array_name)
810 Result.force_new (-1, tokens.capitalized_natural_name)
811 Result.force_new (-1, tokens.capitalized_natural_8_name)
812 Result.force_new (-1, tokens.capitalized_natural_16_name)
813 Result.force_new (-1, tokens.capitalized_natural_32_name)
814 Result.force_new (-1, tokens.capitalized_natural_64_name)
815 Result.force_new (-1, tokens.capitalized_none_name)
816 Result.force_new (-1, tokens.capitalized_platform_name)
817 Result.force_new (-1, tokens.capitalized_pointer_name)
818 Result.force_new (-1, tokens.capitalized_predicate_name)
819 Result.force_new (-1, tokens.capitalized_procedure_name)
820 Result.force_new (-1, tokens.capitalized_real_name)
821 Result.force_new (-1, tokens.capitalized_real_32_name)
822 Result.force_new (-1, tokens.capitalized_real_64_name)
823 Result.force_new (-1, tokens.capitalized_routine_name)
824 Result.force_new (-1, tokens.capitalized_special_name)
825 Result.force_new (-1, tokens.capitalized_string_name)
826 Result.force_new (-1, tokens.capitalized_string_8_name)
827 Result.force_new (-1, tokens.capitalized_string_32_name)
828 Result.force_new (-1, tokens.capitalized_system_object_name)
829 Result.force_new (-1, tokens.capitalized_system_string_name)
830 Result.force_new (-1, tokens.capitalized_tuple_name)
831 Result.force_new (-1, tokens.capitalized_type_name)
832 Result.force_new (-1, tokens.capitalized_typed_pointer_name)
833 Result.force_new (-1, tokens.capitalized_wide_character_name)
834 Result.force_new (-1, tokens.capitalized_unknown_name)
835 -- Feature names.
836 Result.force_new (-1, tokens.after_name)
837 Result.force_new (-1, tokens.aliased_resized_area_name)
838 Result.force_new (-1, tokens.area_name)
839 Result.force_new (-1, tokens.argument_count_name)
840 Result.force_new (-1, tokens.as_natural_8_name)
841 Result.force_new (-1, tokens.as_natural_16_name)
842 Result.force_new (-1, tokens.as_natural_32_name)
843 Result.force_new (-1, tokens.as_natural_64_name)
844 Result.force_new (-1, tokens.as_integer_8_name)
845 Result.force_new (-1, tokens.as_integer_16_name)
846 Result.force_new (-1, tokens.as_integer_32_name)
847 Result.force_new (-1, tokens.as_integer_64_name)
848 Result.force_new (-1, tokens.base_address_name)
849 Result.force_new (-1, tokens.base_class_name_name)
850 Result.force_new (-1, tokens.bit_and_name)
851 Result.force_new (-1, tokens.bit_not_name)
852 Result.force_new (-1, tokens.bit_or_name)
853 Result.force_new (-1, tokens.bit_shift_left_name)
854 Result.force_new (-1, tokens.bit_shift_right_name)
855 Result.force_new (-1, tokens.bit_xor_name)
856 Result.force_new (-1, tokens.boolean_bytes_name)
857 Result.force_new (-1, tokens.boolean_item_name)
858 Result.force_new (-1, tokens.boolean_field_name)
859 Result.force_new (-1, tokens.c_strlen_name)
860 Result.force_new (-1, tokens.call_name)
861 Result.force_new (-1, tokens.capacity_name)
862 Result.force_new (-1, tokens.catch_name)
863 Result.force_new (-1, tokens.ccom_hresult_name)
864 Result.force_new (-1, tokens.ccom_hresult_code_name)
865 Result.force_new (-1, tokens.ccom_hresult_facility_name)
866 Result.force_new (-1, tokens.ceiling_real_32_name)
867 Result.force_new (-1, tokens.ceiling_real_64_name)
868 Result.force_new (-1, tokens.character_8_item_name)
869 Result.force_new (-1, tokens.character_8_field_name)
870 Result.force_new (-1, tokens.character_32_item_name)
871 Result.force_new (-1, tokens.character_32_field_name)
872 Result.force_new (-1, tokens.character_bytes_name)
873 Result.force_new (-1, tokens.character_size_name)
874 Result.force_new (-1, tokens.closed_operands_name)
875 Result.force_new (-1, tokens.code_name)
876 Result.force_new (-1, tokens.conforms_to_name)
877 Result.force_new (-1, tokens.conjuncted_name)
878 Result.force_new (-1, tokens.conjuncted_semistrict_name)
879 Result.force_new (-1, tokens.copy_name)
880 Result.force_new (-1, tokens.count_name)
881 Result.force_new (-1, tokens.cwin_error_text_name)
882 Result.force_new (-1, tokens.cwin_local_free_name)
883 Result.force_new (-1, tokens.deep_twin_name)
884 Result.force_new (-1, tokens.default_name)
885 Result.force_new (-1, tokens.default_create_name)
886 Result.force_new (-1, tokens.developer_raise_name)
887 Result.force_new (-1, tokens.disjuncted_name)
888 Result.force_new (-1, tokens.disjuncted_exclusive_name)
889 Result.force_new (-1, tokens.disjuncted_semistrict_name)
890 Result.force_new (-1, tokens.dispose_name)
891 Result.force_new (-1, tokens.double_bytes_name)
892 Result.force_new (-1, tokens.eif_id_object_name)
893 Result.force_new (-1, tokens.eif_object_id_name)
894 Result.force_new (-1, tokens.eif_object_id_free_name)
895 Result.force_new (-1, tokens.element_size_name)
896 Result.force_new (-1, tokens.exception_from_code_name)
897 Result.force_new (-1, tokens.exception_manager_name)
898 Result.force_new (-1, tokens.extend_name)
899 Result.force_new (-1, tokens.field_name)
900 Result.force_new (-1, tokens.field_count_name)
901 Result.force_new (-1, tokens.field_name_name)
902 Result.force_new (-1, tokens.field_static_type_name)
903 Result.force_new (-1, tokens.field_type_name)
904 Result.force_new (-1, tokens.find_referers_name)
905 Result.force_new (-1, tokens.floor_real_32_name)
906 Result.force_new (-1, tokens.floor_real_64_name)
907 Result.force_new (-1, tokens.forth_name)
908 Result.force_new (-1, tokens.free_name)
909 Result.force_new (-1, tokens.generating_type_name)
910 Result.force_new (-1, tokens.generator_name)
911 Result.force_new (-1, tokens.generic_parameter_count_name)
912 Result.force_new (-1, tokens.generic_parameter_type_name)
913 Result.force_new (-1, tokens.has_default_name)
914 Result.force_new (-1, tokens.hash_code_name)
915 Result.force_new (-1, tokens.i_th_argument_pointer_name)
916 Result.force_new (-1, tokens.i_th_argument_string_name)
917 Result.force_new (-1, tokens.identity_name)
918 Result.force_new (-1, tokens.ignore_name)
919 Result.force_new (-1, tokens.implication_name)
920 Result.force_new (-1, tokens.init_exception_manager_name)
921 Result.force_new (-1, tokens.integer_8_item_name)
922 Result.force_new (-1, tokens.integer_8_field_name)
923 Result.force_new (-1, tokens.integer_16_item_name)
924 Result.force_new (-1, tokens.integer_16_field_name)
925 Result.force_new (-1, tokens.integer_32_item_name)
926 Result.force_new (-1, tokens.integer_32_field_name)
927 Result.force_new (-1, tokens.integer_64_item_name)
928 Result.force_new (-1, tokens.integer_64_field_name)
929 Result.force_new (-1, tokens.integer_bytes_name)
930 Result.force_new (-1, tokens.integer_quotient_name)
931 Result.force_new (-1, tokens.integer_remainder_name)
932 Result.force_new (-1, tokens.is_caught_name)
933 Result.force_new (-1, tokens.is_deep_equal_name)
934 Result.force_new (-1, tokens.is_default_pointer_name)
935 Result.force_new (-1, tokens.is_dotnet_name)
936 Result.force_new (-1, tokens.is_equal_name)
937 Result.force_new (-1, tokens.is_expanded_name)
938 Result.force_new (-1, tokens.is_ignorable_name)
939 Result.force_new (-1, tokens.is_ignored_name)
940 Result.force_new (-1, tokens.is_less_name)
941 Result.force_new (-1, tokens.is_mac_name)
942 Result.force_new (-1, tokens.is_nan_name)
943 Result.force_new (-1, tokens.is_negative_infinity_name)
944 Result.force_new (-1, tokens.is_positive_infinity_name)
945 Result.force_new (-1, tokens.is_raisable_name)
946 Result.force_new (-1, tokens.is_scoop_capable_name)
947 Result.force_new (-1, tokens.is_target_closed_name)
948 Result.force_new (-1, tokens.is_thread_capable_name)
949 Result.force_new (-1, tokens.is_unix_name)
950 Result.force_new (-1, tokens.is_vms_name)
951 Result.force_new (-1, tokens.is_vxworks_name)
952 Result.force_new (-1, tokens.is_windows_name)
953 Result.force_new (-1, tokens.item_name)
954 Result.force_new (-1, tokens.item_code_name)
955 Result.force_new (-1, tokens.last_exception_name)
956 Result.force_new (-1, tokens.last_result_name)
957 Result.force_new (-1, tokens.lower_name)
958 Result.force_new (-1, tokens.make_name)
959 Result.force_new (-1, tokens.make_empty_name)
960 Result.force_new (-1, tokens.max_type_id_name)
961 Result.force_new (-1, tokens.minus_name)
962 Result.force_new (-1, tokens.name_name)
963 Result.force_new (-1, tokens.nan_name)
964 Result.force_new (-1, tokens.natural_8_item_name)
965 Result.force_new (-1, tokens.natural_8_field_name)
966 Result.force_new (-1, tokens.natural_16_item_name)
967 Result.force_new (-1, tokens.natural_16_field_name)
968 Result.force_new (-1, tokens.natural_32_code_name)
969 Result.force_new (-1, tokens.natural_32_item_name)
970 Result.force_new (-1, tokens.natural_32_field_name)
971 Result.force_new (-1, tokens.natural_64_item_name)
972 Result.force_new (-1, tokens.natural_64_field_name)
973 Result.force_new (-1, tokens.negated_name)
974 Result.force_new (-1, tokens.negative_infinity_name)
975 Result.force_new (-1, tokens.new_cursor_name)
976 Result.force_new (-1, tokens.new_instance_name)
977 Result.force_new (-1, tokens.new_special_any_instance_name)
978 Result.force_new (-1, tokens.object_comparison_name)
979 Result.force_new (-1, tokens.opposite_name)
980 Result.force_new (-1, tokens.out_name)
981 Result.force_new (-1, tokens.plus_name)
982 Result.force_new (-1, tokens.pointer_bytes_name)
983 Result.force_new (-1, tokens.pointer_item_name)
984 Result.force_new (-1, tokens.pointer_field_name)
985 Result.force_new (-1, tokens.positive_infinity_name)
986 Result.force_new (-1, tokens.power_name)
987 Result.force_new (-1, tokens.product_name)
988 Result.force_new (-1, tokens.put_name)
989 Result.force_new (-1, tokens.put_boolean_name)
990 Result.force_new (-1, tokens.put_character_8_name)
991 Result.force_new (-1, tokens.put_character_32_name)
992 Result.force_new (-1, tokens.put_integer_8_name)
993 Result.force_new (-1, tokens.put_integer_16_name)
994 Result.force_new (-1, tokens.put_integer_32_name)
995 Result.force_new (-1, tokens.put_integer_64_name)
996 Result.force_new (-1, tokens.put_natural_8_name)
997 Result.force_new (-1, tokens.put_natural_16_name)
998 Result.force_new (-1, tokens.put_natural_32_name)
999 Result.force_new (-1, tokens.put_natural_64_name)
1000 Result.force_new (-1, tokens.put_pointer_name)
1001 Result.force_new (-1, tokens.put_real_32_name)
1002 Result.force_new (-1, tokens.put_real_64_name)
1003 Result.force_new (-1, tokens.put_reference_name)
1004 Result.force_new (-1, tokens.quotient_name)
1005 Result.force_new (-1, tokens.raise_name)
1006 Result.force_new (-1, tokens.real_32_item_name)
1007 Result.force_new (-1, tokens.real_32_field_name)
1008 Result.force_new (-1, tokens.real_64_item_name)
1009 Result.force_new (-1, tokens.real_64_field_name)
1010 Result.force_new (-1, tokens.real_bytes_name)
1011 Result.force_new (-1, tokens.reference_item_name)
1012 Result.force_new (-1, tokens.runtime_name_name)
1013 Result.force_new (-1, tokens.same_type_name)
1014 Result.force_new (-1, tokens.set_boolean_field_name)
1015 Result.force_new (-1, tokens.set_character_8_field_name)
1016 Result.force_new (-1, tokens.set_character_32_field_name)
1017 Result.force_new (-1, tokens.set_count_name)
1018 Result.force_new (-1, tokens.set_exception_data_name)
1019 Result.force_new (-1, tokens.set_integer_8_field_name)
1020 Result.force_new (-1, tokens.set_integer_16_field_name)
1021 Result.force_new (-1, tokens.set_integer_32_field_name)
1022 Result.force_new (-1, tokens.set_integer_64_field_name)
1023 Result.force_new (-1, tokens.set_is_ignored_name)
1024 Result.force_new (-1, tokens.set_item_name)
1025 Result.force_new (-1, tokens.set_natural_8_field_name)
1026 Result.force_new (-1, tokens.set_natural_16_field_name)
1027 Result.force_new (-1, tokens.set_natural_32_field_name)
1028 Result.force_new (-1, tokens.set_natural_64_field_name)
1029 Result.force_new (-1, tokens.set_object_comparison_name)
1030 Result.force_new (-1, tokens.set_operands_name)
1031 Result.force_new (-1, tokens.set_pointer_field_name)
1032 Result.force_new (-1, tokens.set_real_32_field_name)
1033 Result.force_new (-1, tokens.set_real_64_field_name)
1034 Result.force_new (-1, tokens.set_reference_field_name)
1035 Result.force_new (-1, tokens.standard_copy_name)
1036 Result.force_new (-1, tokens.standard_is_equal_name)
1037 Result.force_new (-1, tokens.standard_twin_name)
1038 Result.force_new (-1, tokens.tagged_out_name)
1039 Result.force_new (-1, tokens.to_character_name)
1040 Result.force_new (-1, tokens.to_character_8_name)
1041 Result.force_new (-1, tokens.to_character_32_name)
1042 Result.force_new (-1, tokens.to_double_name)
1043 Result.force_new (-1, tokens.to_integer_32_name)
1044 Result.force_new (-1, tokens.to_pointer_name)
1045 Result.force_new (-1, tokens.to_real_name)
1046 Result.force_new (-1, tokens.to_real_32_name)
1047 Result.force_new (-1, tokens.to_real_64_name)
1048 Result.force_new (-1, tokens.truncated_to_integer_name)
1049 Result.force_new (-1, tokens.truncated_to_integer_64_name)
1050 Result.force_new (-1, tokens.truncated_to_real_name)
1051 Result.force_new (-1, tokens.twin_name)
1052 Result.force_new (-1, tokens.type_id_name)
1053 Result.force_new (-1, tokens.type_of_code_name)
1054 Result.force_new (-1, tokens.type_of_type_name)
1055 Result.force_new (-1, tokens.upper_name)
1056 Result.force_new (-1, tokens.wide_character_bytes_name)
1057 -- Keywords.
1058 Result.force_new (-1, tokens.capitalized_current_keyword_name)
1059 Result.force_new (-1, tokens.capitalized_false_keyword_name)
1060 Result.force_new (-1, tokens.capitalized_precursor_keyword_name)
1061 Result.force_new (-1, tokens.capitalized_result_keyword_name)
1062 Result.force_new (-1, tokens.capitalized_true_keyword_name)
1063 Result.force_new (-1, tokens.capitalized_void_keyword_name)
1064 Result.force_new (-1, tokens.capitalized_unique_keyword_name)
1065 Result.force_new (-1, tokens.across_keyword_name)
1066 Result.force_new (-1, tokens.agent_keyword_name)
1067 Result.force_new (-1, tokens.alias_keyword_name)
1068 Result.force_new (-1, tokens.all_keyword_name)
1069 Result.force_new (-1, tokens.and_keyword_name)
1070 Result.force_new (-1, tokens.as_keyword_name)
1071 Result.force_new (-1, tokens.assign_keyword_name)
1072 Result.force_new (-1, tokens.attached_keyword_name)
1073 Result.force_new (-1, tokens.attribute_keyword_name)
1074 Result.force_new (-1, tokens.check_keyword_name)
1075 Result.force_new (-1, tokens.class_keyword_name)
1076 Result.force_new (-1, tokens.convert_keyword_name)
1077 Result.force_new (-1, tokens.create_keyword_name)
1078 Result.force_new (-1, tokens.creation_keyword_name)
1079 Result.force_new (-1, tokens.current_keyword_name)
1080 Result.force_new (-1, tokens.debug_keyword_name)
1081 Result.force_new (-1, tokens.deferred_keyword_name)
1082 Result.force_new (-1, tokens.detachable_keyword_name)
1083 Result.force_new (-1, tokens.do_keyword_name)
1084 Result.force_new (-1, tokens.else_keyword_name)
1085 Result.force_new (-1, tokens.elseif_keyword_name)
1086 Result.force_new (-1, tokens.end_keyword_name)
1087 Result.force_new (-1, tokens.ensure_keyword_name)
1088 Result.force_new (-1, tokens.expanded_keyword_name)
1089 Result.force_new (-1, tokens.export_keyword_name)
1090 Result.force_new (-1, tokens.external_keyword_name)
1091 Result.force_new (-1, tokens.false_keyword_name)
1092 Result.force_new (-1, tokens.feature_keyword_name)
1093 Result.force_new (-1, tokens.from_keyword_name)
1094 Result.force_new (-1, tokens.frozen_keyword_name)
1095 Result.force_new (-1, tokens.if_keyword_name)
1096 Result.force_new (-1, tokens.implies_keyword_name)
1097 Result.force_new (-1, tokens.indexing_keyword_name)
1098 Result.force_new (-1, tokens.infix_keyword_name)
1099 Result.force_new (-1, tokens.inherit_keyword_name)
1100 Result.force_new (-1, tokens.inspect_keyword_name)
1101 Result.force_new (-1, tokens.invariant_keyword_name)
1102 Result.force_new (-1, tokens.is_keyword_name)
1103 Result.force_new (-1, tokens.like_keyword_name)
1104 Result.force_new (-1, tokens.local_keyword_name)
1105 Result.force_new (-1, tokens.loop_keyword_name)
1106 Result.force_new (-1, tokens.not_keyword_name)
1107 Result.force_new (-1, tokens.note_keyword_name)
1108 Result.force_new (-1, tokens.obsolete_keyword_name)
1109 Result.force_new (-1, tokens.old_keyword_name)
1110 Result.force_new (-1, tokens.once_keyword_name)
1111 Result.force_new (-1, tokens.or_keyword_name)
1112 Result.force_new (-1, tokens.precursor_keyword_name)
1113 Result.force_new (-1, tokens.prefix_keyword_name)
1114 Result.force_new (-1, tokens.redefine_keyword_name)
1115 Result.force_new (-1, tokens.reference_keyword_name)
1116 Result.force_new (-1, tokens.rename_keyword_name)
1117 Result.force_new (-1, tokens.require_keyword_name)
1118 Result.force_new (-1, tokens.rescue_keyword_name)
1119 Result.force_new (-1, tokens.result_keyword_name)
1120 Result.force_new (-1, tokens.retry_keyword_name)
1121 Result.force_new (-1, tokens.select_keyword_name)
1122 Result.force_new (-1, tokens.separate_keyword_name)
1123 Result.force_new (-1, tokens.some_keyword_name)
1124 Result.force_new (-1, tokens.strip_keyword_name)
1125 Result.force_new (-1, tokens.then_keyword_name)
1126 Result.force_new (-1, tokens.true_keyword_name)
1127 Result.force_new (-1, tokens.undefine_keyword_name)
1128 Result.force_new (-1, tokens.unique_keyword_name)
1129 Result.force_new (-1, tokens.until_keyword_name)
1130 Result.force_new (-1, tokens.variant_keyword_name)
1131 Result.force_new (-1, tokens.void_keyword_name)
1132 Result.force_new (-1, tokens.when_keyword_name)
1133 Result.force_new (-1, tokens.xor_keyword_name)
1134 -- Symbols.
1135 Result.force_new (-1, tokens.arrow_symbol_name)
1136 Result.force_new (-1, tokens.assign_symbol_name)
1137 Result.force_new (-1, tokens.assign_attempt_symbol_name)
1138 Result.force_new (-1, tokens.at_symbol_name)
1139 Result.force_new (-1, tokens.bang_symbol_name)
1140 Result.force_new (-1, tokens.colon_symbol_name)
1141 Result.force_new (-1, tokens.comma_symbol_name)
1142 Result.force_new (-1, tokens.div_symbol_name)
1143 Result.force_new (-1, tokens.divide_symbol_name)
1144 Result.force_new (-1, tokens.dollar_symbol_name)
1145 Result.force_new (-1, tokens.dot_symbol_name)
1146 Result.force_new (-1, tokens.dotdot_symbol_name)
1147 Result.force_new (-1, tokens.equal_symbol_name)
1148 Result.force_new (-1, tokens.ge_symbol_name)
1149 Result.force_new (-1, tokens.gt_symbol_name)
1150 Result.force_new (-1, tokens.le_symbol_name)
1151 Result.force_new (-1, tokens.left_array_symbol_name)
1152 Result.force_new (-1, tokens.left_brace_symbol_name)
1153 Result.force_new (-1, tokens.left_bracket_symbol_name)
1154 Result.force_new (-1, tokens.left_parenthesis_symbol_name)
1155 Result.force_new (-1, tokens.lt_symbol_name)
1156 Result.force_new (-1, tokens.minus_symbol_name)
1157 Result.force_new (-1, tokens.mod_symbol_name)
1158 Result.force_new (-1, tokens.not_equal_symbol_name)
1159 Result.force_new (-1, tokens.plus_symbol_name)
1160 Result.force_new (-1, tokens.power_symbol_name)
1161 Result.force_new (-1, tokens.question_mark_symbol_name)
1162 Result.force_new (-1, tokens.right_array_symbol_name)
1163 Result.force_new (-1, tokens.right_brace_symbol_name)
1164 Result.force_new (-1, tokens.right_bracket_symbol_name)
1165 Result.force_new (-1, tokens.right_parenthesis_symbol_name)
1166 Result.force_new (-1, tokens.semicolon_symbol_name)
1167 Result.force_new (-1, tokens.tilde_symbol_name)
1168 Result.force_new (-1, tokens.times_symbol_name)
1169 ensure
1170 strings_not_void: Result /= Void
1171 no_void_string: not Result.has_void
1172 end
1173
1174 string_buffer: STRING
1175 -- String buffer
1176 once
1177 create Result.make (30)
1178 ensure
1179 string_buffer_not_void: Result /= Void
1180 end
1181
1182 feature {NONE} -- Multi-line manifest strings
1183
1184 ms_line, ms_column: INTEGER
1185 -- Line and column numbers of currently
1186 -- scanned special manifest string
1187
1188 feature {NONE} -- Verbatim strings
1189
1190 verbatim_marker: STRING
1191 -- Marker of verbatim string currently scanned
1192
1193 verbatim_open_white_characters: STRING
1194 -- White characters after "xyz[
1195
1196 verbatim_close_white_characters: STRING
1197 -- White characters before ]xyz"
1198
1199 no_verbatim_marker: STRING = ""
1200 -- No verbatim marker
1201
1202 is_verbatim_string_closer (a_start, an_end: INTEGER): BOOLEAN
1203 -- Is string between indexes `a_start' and `an_end' the
1204 -- end marker of the verbatim string currently scanned?
1205 require
1206 verbatim_string_scanned: verbatim_marker /= no_verbatim_marker
1207 a_start_large_enough: a_start >= 1
1208 an_end_small_enough: an_end <= text_count
1209 -- valid_string: (\n?[ \t\r]*[\]\}][^\n"]*).recognizes (text_substring (a_start, an_end))
1210 local
1211 i, j, nb: INTEGER
1212 l_marker_count: INTEGER
1213 l_text_count: INTEGER
1214 c: CHARACTER
1215 do
1216 l_marker_count := verbatim_marker.count
1217 l_text_count := an_end - a_start + 1
1218 if l_text_count > l_marker_count then
1219 nb := a_start + l_text_count - l_marker_count - 1
1220 c := text_item (nb)
1221 if c = ']' or c = '}' then
1222 Result := True
1223 -- Compare end marker with start marker.
1224 j := nb + 1
1225 from i := 1 until i > l_marker_count loop
1226 if verbatim_marker.item (i) = text_item (j) then
1227 i := i + 1
1228 j := j + 1
1229 else
1230 Result := False
1231 i := l_marker_count + 1 -- Jump out of the loop.
1232 end
1233 end
1234 if Result then
1235 -- Check that all leading characters are white characters.
1236 from j := a_start until j = nb loop
1237 inspect text_item (j)
1238 when ' ', '%T', '%R', '%N' then
1239 j := j + 1
1240 else
1241 Result := False
1242 j := nb -- Jump out of the loop.
1243 end
1244 end
1245 end
1246 end
1247 end
1248 end
1249
1250 feature {NONE} -- Breaks
1251
1252 break_kind: INTEGER
1253 -- Kind of break being parsed when reading the
1254 -- following break or comment
1255
1256 identifier_break: INTEGER = 1
1257 -- Internal code corresponding to a break that
1258 -- follows an identifier
1259
1260 freeop_break: INTEGER = 2
1261 -- Internal code corresponding to a break that
1262 -- follows a freeop
1263
1264 character_break: INTEGER = 3
1265 -- Internal code corresponding to a break that
1266 -- follows a character
1267
1268 integer_break: INTEGER = 4
1269 -- Internal code corresponding to a break that
1270 -- follows an integer
1271
1272 uinteger_break: INTEGER = 5
1273 -- Internal code corresponding to a break that
1274 -- follows an integer with underscores
1275
1276 hinteger_break: INTEGER = 6
1277 -- Internal code corresponding to a break that
1278 -- follows an hexadecimal integer
1279
1280 ointeger_break: INTEGER = 7
1281 -- Internal code corresponding to a break that
1282 -- follows an octal integer
1283
1284 binteger_break: INTEGER = 8
1285 -- Internal code corresponding to a break that
1286 -- follows binary integer
1287
1288 real_break: INTEGER = 9
1289 -- Internal code corresponding to a break that
1290 -- follows a real
1291
1292 ureal_break: INTEGER = 10
1293 -- Internal code corresponding to a break that
1294 -- follows a real with underscores
1295
1296 string_break: INTEGER = 11
1297 -- Internal code corresponding to a break that
1298 -- follows a manifest string
1299
1300 str_freeop_break: INTEGER = 12
1301 -- Internal code corresponding to a break that
1302 -- follows a manifest string containing the
1303 -- name of a freeop
1304
1305 str_special_break: INTEGER = 13
1306 -- Internal code corresponding to a break that
1307 -- follows a manifest string with special characters
1308
1309 str_verbatim_break: INTEGER = 14
1310 -- Internal code corresponding to a break that
1311 -- follows a verbatim manifest string
1312
1313 str_left_aligned_verbatim_break: INTEGER = 15
1314 -- Internal code corresponding to a break that
1315 -- follows a left-aligned verbatim manifest string
1316
1317 feature {NONE} -- Processing
1318
1319 process_identifier (nb: INTEGER)
1320 -- Process identifier with `nb' characters.
1321 -- Detect keywords.
1322 require
1323 nb_large_enough: nb >= 1
1324 nb_small_enough: nb <= text_count
1325 -- valid_string: ([a-zA-Z][a-zA-Z0-9_]*).recognizes (text_substring (1, nb))
1326 do
1327 last_token := E_IDENTIFIER
1328 last_literal_start := 1
1329 last_literal_end := nb
1330 inspect nb
1331 when 2 then
1332 inspect text_item (1)
1333 when 'a', 'A' then
1334 inspect text_item (2)
1335 when 's', 'S' then
1336 last_token := E_AS
1337 last_detachable_et_keyword_value := ast_factory.new_as_keyword (Current)
1338 else
1339 -- Do nothing.
1340 end
1341 when 'd', 'D' then
1342 inspect text_item (2)
1343 when 'o', 'O' then
1344 last_token := E_DO
1345 last_detachable_et_keyword_value := ast_factory.new_do_keyword (Current)
1346 else
1347 -- Do nothing.
1348 end
1349 when 'i', 'I' then
1350 inspect text_item (2)
1351 when 'f', 'F' then
1352 last_token := E_IF
1353 last_detachable_et_keyword_value := ast_factory.new_if_keyword (Current)
1354 when 's', 'S' then
1355 last_token := E_IS
1356 last_detachable_et_keyword_value := ast_factory.new_is_keyword (Current)
1357 else
1358 -- Do nothing.
1359 end
1360 when 'o', 'O' then
1361 inspect text_item (2)
1362 when 'r', 'R' then
1363 last_token := E_OR
1364 last_detachable_et_keyword_operator_value := ast_factory.new_or_keyword (Current)
1365 else
1366 -- Do nothing.
1367 end
1368 else
1369 -- Do nothing.
1370 end
1371 when 3 then
1372 inspect text_item (1)
1373 when 'a', 'A' then
1374 inspect text_item (2)
1375 when 'n', 'N' then
1376 inspect text_item (3)
1377 when 'd', 'D' then
1378 last_token := E_AND
1379 last_detachable_et_keyword_operator_value := ast_factory.new_and_keyword (Current)
1380 else
1381 -- Do nothing.
1382 end
1383 when 'l', 'L' then
1384 inspect text_item (3)
1385 when 'l', 'L' then
1386 last_token := E_ALL
1387 last_detachable_et_keyword_value := ast_factory.new_all_keyword (Current)
1388 else
1389 -- Do nothing.
1390 end
1391 else
1392 -- Do nothing.
1393 end
1394 when 'e', 'E' then
1395 inspect text_item (2)
1396 when 'n', 'N' then
1397 inspect text_item (3)
1398 when 'd', 'D' then
1399 last_token := E_END
1400 last_detachable_et_keyword_value := ast_factory.new_end_keyword (Current)
1401 else
1402 -- Do nothing.
1403 end
1404 else
1405 -- Do nothing.
1406 end
1407 when 'n', 'N' then
1408 inspect text_item (2)
1409 when 'o', 'O' then
1410 inspect text_item (3)
1411 when 't', 'T' then
1412 last_token := E_NOT
1413 last_detachable_et_keyword_operator_value := ast_factory.new_not_keyword (Current)
1414 else
1415 -- Do nothing.
1416 end
1417 else
1418 -- Do nothing.
1419 end
1420 when 'o', 'O' then
1421 inspect text_item (2)
1422 when 'l', 'L' then
1423 inspect text_item (3)
1424 when 'd', 'D' then
1425 last_token := E_OLD
1426 last_detachable_et_keyword_value := ast_factory.new_old_keyword (Current)
1427 else
1428 -- Do nothing.
1429 end
1430 else
1431 -- Do nothing.
1432 end
1433 when 'x', 'X' then
1434 inspect text_item (2)
1435 when 'o', 'O' then
1436 inspect text_item (3)
1437 when 'r', 'R' then
1438 last_token := E_XOR
1439 last_detachable_et_keyword_operator_value := ast_factory.new_xor_keyword (Current)
1440 else
1441 -- Do nothing.
1442 end
1443 else
1444 -- Do nothing.
1445 end
1446 else
1447 -- Do nothing.
1448 end
1449 when 4 then
1450 inspect text_item (1)
1451 when 'e', 'E' then
1452 inspect text_item (2)
1453 when 'l', 'L' then
1454 inspect text_item (3)
1455 when 's', 'S' then
1456 inspect text_item (4)
1457 when 'e', 'E' then
1458 last_token := E_ELSE
1459 last_detachable_et_keyword_value := ast_factory.new_else_keyword (Current)
1460 else
1461 -- Do nothing.
1462 end
1463 else
1464 -- Do nothing.
1465 end
1466 else
1467 -- Do nothing.
1468 end
1469 when 'f', 'F' then
1470 inspect text_item (2)
1471 when 'r', 'R' then
1472 inspect text_item (3)
1473 when 'o', 'O' then
1474 inspect text_item (4)
1475 when 'm', 'M' then
1476 last_token := E_FROM
1477 last_detachable_et_keyword_value := ast_factory.new_from_keyword (Current)
1478 else
1479 -- Do nothing.
1480 end
1481 else
1482 -- Do nothing.
1483 end
1484 else
1485 -- Do nothing.
1486 end
1487 when 'l', 'L' then
1488 inspect text_item (2)
1489 when 'i', 'I' then
1490 inspect text_item (3)
1491 when 'k', 'K' then
1492 inspect text_item (4)
1493 when 'e', 'E' then
1494 last_token := E_LIKE
1495 last_detachable_et_keyword_value := ast_factory.new_like_keyword (Current)
1496 else
1497 -- Do nothing.
1498 end
1499 else
1500 -- Do nothing.
1501 end
1502 when 'o', 'O' then
1503 inspect text_item (3)
1504 when 'o', 'O' then
1505 inspect text_item (4)
1506 when 'p', 'P' then
1507 last_token := E_LOOP
1508 last_detachable_et_keyword_value := ast_factory.new_loop_keyword (Current)
1509 else
1510 -- Do nothing.
1511 end
1512 else
1513 -- Do nothing.
1514 end
1515 else
1516 -- Do nothing.
1517 end
1518 when 'n', 'N' then
1519 inspect text_item (2)
1520 when 'o', 'O' then
1521 inspect text_item (3)
1522 when 't', 'T' then
1523 inspect text_item (4)
1524 when 'e', 'E' then
1525 if use_note_keyword then
1526 last_token := E_NOTE
1527 last_detachable_et_keyword_value := ast_factory.new_note_keyword (Current)
1528 end
1529 else
1530 -- Do nothing.
1531 end
1532 else
1533 -- Do nothing.
1534 end
1535 else
1536 -- Do nothing.
1537 end
1538 when 'o', 'O' then
1539 inspect text_item (2)
1540 when 'n', 'N' then
1541 inspect text_item (3)
1542 when 'c', 'C' then
1543 inspect text_item (4)
1544 when 'e', 'E' then
1545 last_token := E_ONCE
1546 last_detachable_et_keyword_value := ast_factory.new_once_keyword (Current)
1547 else
1548 -- Do nothing.
1549 end
1550 else
1551 -- Do nothing.
1552 end
1553 else
1554 -- Do nothing.
1555 end
1556 when 's', 'S' then
1557 inspect text_item (2)
1558 when 'o', 'O' then
1559 inspect text_item (3)
1560 when 'm', 'M' then
1561 inspect text_item (4)
1562 when 'e', 'E' then
1563 last_token := E_SOME
1564 last_detachable_et_keyword_value := ast_factory.new_some_keyword (Current)
1565 else
1566 -- Do nothing.
1567 end
1568 else
1569 -- Do nothing.
1570 end
1571 else
1572 -- Do nothing.
1573 end
1574 when 't', 'T' then
1575 inspect text_item (2)
1576 when 'h', 'H' then
1577 inspect text_item (3)
1578 when 'e', 'E' then
1579 inspect text_item (4)
1580 when 'n', 'N' then
1581 last_token := E_THEN
1582 last_detachable_et_keyword_value := ast_factory.new_then_keyword (Current)
1583 else
1584 -- Do nothing.
1585 end
1586 else
1587 -- Do nothing.
1588 end
1589 when 'r', 'R' then
1590 inspect text_item (3)
1591 when 'u', 'U' then
1592 inspect text_item (4)
1593 when 'e', 'E' then
1594 last_token := E_TRUE
1595 last_detachable_et_boolean_constant_value := ast_factory.new_true_keyword (Current)
1596 else
1597 -- Do nothing.
1598 end
1599 else
1600 -- Do nothing.
1601 end
1602 else
1603 -- Do nothing.
1604 end
1605 when 'v', 'V' then
1606 inspect text_item (2)
1607 when 'o', 'O' then
1608 inspect text_item (3)
1609 when 'i', 'I' then
1610 inspect text_item (4)
1611 when 'd', 'D' then
1612 last_token := E_VOID
1613 last_detachable_et_void_value := ast_factory.new_void_keyword (Current)
1614 else
1615 -- Do nothing.
1616 end
1617 else
1618 -- Do nothing.
1619 end
1620 else
1621 -- Do nothing.
1622 end
1623 when 'w', 'W' then
1624 inspect text_item (2)
1625 when 'h', 'H' then
1626 inspect text_item (3)
1627 when 'e', 'E' then
1628 inspect text_item (4)
1629 when 'n', 'N' then
1630 last_token := E_WHEN
1631 last_detachable_et_keyword_value := ast_factory.new_when_keyword (Current)
1632 else
1633 -- Do nothing.
1634 end
1635 else
1636 -- Do nothing.
1637 end
1638 else
1639 -- Do nothing.
1640 end
1641 else
1642 -- Do nothing.
1643 end
1644 when 5 then
1645 inspect text_item (1)
1646 when 'a', 'A' then
1647 inspect text_item (2)
1648 when 'g', 'G' then
1649 inspect text_item (3)
1650 when 'e', 'E' then
1651 inspect text_item (4)
1652 when 'n', 'N' then
1653 inspect text_item (5)
1654 when 't', 'T' then
1655 last_token := E_AGENT
1656 last_detachable_et_agent_keyword_value := ast_factory.new_agent_keyword (Current)
1657 else
1658 -- Do nothing.
1659 end
1660 else
1661 -- Do nothing.
1662 end
1663 else
1664 -- Do nothing.
1665 end
1666 when 'l', 'L' then
1667 inspect text_item (3)
1668 when 'i', 'I' then
1669 inspect text_item (4)
1670 when 'a', 'A' then
1671 inspect text_item (5)
1672 when 's', 'S' then
1673 last_token := E_ALIAS
1674 last_detachable_et_keyword_value := ast_factory.new_alias_keyword (Current)
1675 else
1676 -- Do nothing.
1677 end
1678 else
1679 -- Do nothing.
1680 end
1681 else
1682 -- Do nothing.
1683 end
1684 else
1685 -- Do nothing.
1686 end
1687 when 'c', 'C' then
1688 inspect text_item (2)
1689 when 'h', 'H' then
1690 inspect text_item (3)
1691 when 'e', 'E' then
1692 inspect text_item (4)
1693 when 'c', 'C' then
1694 inspect text_item (5)
1695 when 'k', 'K' then
1696 last_token := E_CHECK
1697 last_detachable_et_keyword_value := ast_factory.new_check_keyword (Current)
1698 else
1699 -- Do nothing.
1700 end
1701 else
1702 -- Do nothing.
1703 end
1704 else
1705 -- Do nothing.
1706 end
1707 when 'l', 'L' then
1708 inspect text_item (3)
1709 when 'a', 'A' then
1710 inspect text_item (4)
1711 when 's', 'S' then
1712 inspect text_item (5)
1713 when 's', 'S' then
1714 last_token := E_CLASS
1715 last_detachable_et_keyword_value := ast_factory.new_class_keyword (Current)
1716 else
1717 -- Do nothing.
1718 end
1719 else
1720 -- Do nothing.
1721 end
1722 else
1723 -- Do nothing.
1724 end
1725 else
1726 -- Do nothing.
1727 end
1728 when 'd', 'D' then
1729 inspect text_item (2)
1730 when 'e', 'E' then
1731 inspect text_item (3)
1732 when 'b', 'B' then
1733 inspect text_item (4)
1734 when 'u', 'U' then
1735 inspect text_item (5)
1736 when 'g', 'G' then
1737 last_token := E_DEBUG
1738 last_detachable_et_keyword_value := ast_factory.new_debug_keyword (Current)
1739 else
1740 -- Do nothing.
1741 end
1742 else
1743 -- Do nothing.
1744 end
1745 else
1746 -- Do nothing.
1747 end
1748 else
1749 -- Do nothing.
1750 end
1751 when 'f', 'F' then
1752 inspect text_item (2)
1753 when 'a', 'A' then
1754 inspect text_item (3)
1755 when 'l', 'L' then
1756 inspect text_item (4)
1757 when 's', 'S' then
1758 inspect text_item (5)
1759 when 'e', 'E' then
1760 last_token := E_FALSE
1761 last_detachable_et_boolean_constant_value := ast_factory.new_false_keyword (Current)
1762 else
1763 -- Do nothing.
1764 end
1765 else
1766 -- Do nothing.
1767 end
1768 else
1769 -- Do nothing.
1770 end
1771 else
1772 -- Do nothing.
1773 end
1774 when 'i', 'I' then
1775 inspect text_item (2)
1776 when 'n', 'N' then
1777 inspect text_item (3)
1778 when 'f', 'F' then
1779 inspect text_item (4)
1780 when 'i', 'I' then
1781 inspect text_item (5)
1782 when 'x', 'X' then
1783 last_token := E_INFIX
1784 last_detachable_et_keyword_value := ast_factory.new_infix_keyword (Current)
1785 else
1786 -- Do nothing.
1787 end
1788 else
1789 -- Do nothing.
1790 end
1791 else
1792 -- Do nothing.
1793 end
1794 else
1795 -- Do nothing.
1796 end
1797 when 'l', 'L' then
1798 inspect text_item (2)
1799 when 'o', 'O' then
1800 inspect text_item (3)
1801 when 'c', 'C' then
1802 inspect text_item (4)
1803 when 'a', 'A' then
1804 inspect text_item (5)
1805 when 'l', 'L' then
1806 last_token := E_LOCAL
1807 last_detachable_et_keyword_value := ast_factory.new_local_keyword (Current)
1808 else
1809 -- Do nothing.
1810 end
1811 else
1812 -- Do nothing.
1813 end
1814 else
1815 -- Do nothing.
1816 end
1817 else
1818 -- Do nothing.
1819 end
1820 when 'r', 'R' then
1821 inspect text_item (2)
1822 when 'e', 'E' then
1823 inspect text_item (3)
1824 when 't', 'T' then
1825 inspect text_item (4)
1826 when 'r', 'R' then
1827 inspect text_item (5)
1828 when 'y', 'Y' then
1829 last_token := E_RETRY
1830 last_detachable_et_retry_instruction_value := ast_factory.new_retry_keyword (Current)
1831 else
1832 -- Do nothing.
1833 end
1834 else
1835 -- Do nothing.
1836 end
1837 else
1838 -- Do nothing.
1839 end
1840 else
1841 -- Do nothing.
1842 end
1843 when 's', 'S' then
1844 inspect text_item (2)
1845 when 't', 'T' then
1846 inspect text_item (3)
1847 when 'r', 'R' then
1848 inspect text_item (4)
1849 when 'i', 'I' then
1850 inspect text_item (5)
1851 when 'p', 'P' then
1852 last_token := E_STRIP
1853 last_detachable_et_keyword_value := ast_factory.new_strip_keyword (Current)
1854 else
1855 -- Do nothing.
1856 end
1857 else
1858 -- Do nothing.
1859 end
1860 else
1861 -- Do nothing.
1862 end
1863 else
1864 -- Do nothing.
1865 end
1866 when 't', 'T' then
1867 inspect text_item (2)
1868 when 'u', 'U' then
1869 inspect text_item (3)
1870 when 'p', 'P' then
1871 inspect text_item (4)
1872 when 'l', 'L' then
1873 inspect text_item (5)
1874 when 'e', 'E' then
1875 last_token := E_TUPLE
1876 last_detachable_et_identifier_value := ast_factory.new_identifier (Current)
1877 else
1878 -- Do nothing.
1879 end
1880 else
1881 -- Do nothing.
1882 end
1883 else
1884 -- Do nothing.
1885 end
1886 else
1887 -- Do nothing.
1888 end
1889 when 'u', 'U' then
1890 inspect text_item (2)
1891 when 'n', 'N' then
1892 inspect text_item (3)
1893 when 't', 'T' then
1894 inspect text_item (4)
1895 when 'i', 'I' then
1896 inspect text_item (5)
1897 when 'l', 'L' then
1898 last_token := E_UNTIL
1899 last_detachable_et_keyword_value := ast_factory.new_until_keyword (Current)
1900 else
1901 -- Do nothing.
1902 end
1903 else
1904 -- Do nothing.
1905 end
1906 else
1907 -- Do nothing.
1908 end
1909 else
1910 -- Do nothing.
1911 end
1912 else
1913 -- Do nothing.
1914 end
1915 when 6 then
1916 inspect text_item (1)
1917 when 'a', 'A' then
1918 inspect text_item (2)
1919 when 'c', 'C' then
1920 inspect text_item (3)
1921 when 'r', 'R' then
1922 inspect text_item (4)
1923 when 'o', 'O' then
1924 inspect text_item (5)
1925 when 's', 'S' then
1926 inspect text_item (6)
1927 when 's', 'S' then
1928 last_token := E_ACROSS
1929 last_detachable_et_keyword_value := ast_factory.new_across_keyword (Current)
1930 else
1931 -- Do nothing.
1932 end
1933 else
1934 -- Do nothing.
1935 end
1936 else
1937 -- Do nothing.
1938 end
1939 else
1940 -- Do nothing.
1941 end
1942 when 's', 'S' then
1943 inspect text_item (3)
1944 when 's', 'S' then
1945 inspect text_item (4)
1946 when 'i', 'I' then
1947 inspect text_item (5)
1948 when 'g', 'G' then
1949 inspect text_item (6)
1950 when 'n', 'N' then
1951 last_token := E_ASSIGN
1952 last_detachable_et_keyword_value := ast_factory.new_assign_keyword (Current)
1953 else
1954 -- Do nothing.
1955 end
1956 else
1957 -- Do nothing.
1958 end
1959 else
1960 -- Do nothing.
1961 end
1962 else
1963 -- Do nothing.
1964 end
1965 else
1966 -- Do nothing.
1967 end
1968 when 'c', 'C' then
1969 inspect text_item (2)
1970 when 'r', 'R' then
1971 inspect text_item (3)
1972 when 'e', 'E' then
1973 inspect text_item (4)
1974 when 'a', 'A' then
1975 inspect text_item (5)
1976 when 't', 'T' then
1977 inspect text_item (6)
1978 when 'e', 'E' then
1979 last_token := E_CREATE
1980 last_detachable_et_keyword_value := ast_factory.new_create_keyword (Current)
1981 else
1982 -- Do nothing.
1983 end
1984 else
1985 -- Do nothing.
1986 end
1987 else
1988 -- Do nothing.
1989 end
1990 else
1991 -- Do nothing.
1992 end
1993 else
1994 -- Do nothing.
1995 end
1996 when 'e', 'E' then
1997 inspect text_item (2)
1998 when 'l', 'L' then
1999 inspect text_item (3)
2000 when 's', 'S' then
2001 inspect text_item (4)
2002 when 'e', 'E' then
2003 inspect text_item (5)
2004 when 'i', 'I' then
2005 inspect text_item (6)
2006 when 'f', 'F' then
2007 last_token := E_ELSEIF
2008 last_detachable_et_keyword_value := ast_factory.new_elseif_keyword (Current)
2009 else
2010 -- Do nothing.
2011 end
2012 else
2013 -- Do nothing.
2014 end
2015 else
2016 -- Do nothing.
2017 end
2018 else
2019 -- Do nothing.
2020 end
2021 when 'n', 'N' then
2022 inspect text_item (3)
2023 when 's', 'S' then
2024 inspect text_item (4)
2025 when 'u', 'U' then
2026 inspect text_item (5)
2027 when 'r', 'R' then
2028 inspect text_item (6)
2029 when 'e', 'E' then
2030 last_token := E_ENSURE
2031 last_detachable_et_keyword_value := ast_factory.new_ensure_keyword (Current)
2032 else
2033 -- Do nothing.
2034 end
2035 else
2036 -- Do nothing.
2037 end
2038 else
2039 -- Do nothing.
2040 end
2041 else
2042 -- Do nothing.
2043 end
2044 when 'x', 'X' then
2045 inspect text_item (3)
2046 when 'p', 'P' then
2047 inspect text_item (4)
2048 when 'o', 'O' then
2049 inspect text_item (5)
2050 when 'r', 'R' then
2051 inspect text_item (6)
2052 when 't', 'T' then
2053 last_token := E_EXPORT
2054 last_detachable_et_keyword_value := ast_factory.new_export_keyword (Current)
2055 else
2056 -- Do nothing.
2057 end
2058 else
2059 -- Do nothing.
2060 end
2061 else
2062 -- Do nothing.
2063 end
2064 else
2065 -- Do nothing.
2066 end
2067 else
2068 -- Do nothing.
2069 end
2070 when 'f', 'F' then
2071 inspect text_item (2)
2072 when 'r', 'R' then
2073 inspect text_item (3)
2074 when 'o', 'O' then
2075 inspect text_item (4)
2076 when 'z', 'Z' then
2077 inspect text_item (5)
2078 when 'e', 'E' then
2079 inspect text_item (6)
2080 when 'n', 'N' then
2081 last_token := E_FROZEN
2082 last_detachable_et_keyword_value := ast_factory.new_frozen_keyword (Current)
2083 else
2084 -- Do nothing.
2085 end
2086 else
2087 -- Do nothing.
2088 end
2089 else
2090 -- Do nothing.
2091 end
2092 else
2093 -- Do nothing.
2094 end
2095 else
2096 -- Do nothing.
2097 end
2098 when 'p', 'P' then
2099 inspect text_item (2)
2100 when 'r', 'R' then
2101 inspect text_item (3)
2102 when 'e', 'E' then
2103 inspect text_item (4)
2104 when 'f', 'F' then
2105 inspect text_item (5)
2106 when 'i', 'I' then
2107 inspect text_item (6)
2108 when 'x', 'X' then
2109 last_token := E_PREFIX
2110 last_detachable_et_keyword_value := ast_factory.new_prefix_keyword (Current)
2111 else
2112 -- Do nothing.
2113 end
2114 else
2115 -- Do nothing.
2116 end
2117 else
2118 -- Do nothing.
2119 end
2120 else
2121 -- Do nothing.
2122 end
2123 else
2124 -- Do nothing.
2125 end
2126 when 'r', 'R' then
2127 inspect text_item (2)
2128 when 'e', 'E' then
2129 inspect text_item (3)
2130 when 'n', 'N' then
2131 inspect text_item (4)
2132 when 'a', 'A' then
2133 inspect text_item (5)
2134 when 'm', 'M' then
2135 inspect text_item (6)
2136 when 'e', 'E' then
2137 last_token := E_RENAME
2138 last_detachable_et_keyword_value := ast_factory.new_rename_keyword (Current)
2139 else
2140 -- Do nothing.
2141 end
2142 else
2143 -- Do nothing.
2144 end
2145 else
2146 -- Do nothing.
2147 end
2148 when 's', 'S' then
2149 inspect text_item (4)
2150 when 'c', 'C' then
2151 inspect text_item (5)
2152 when 'u', 'U' then
2153 inspect text_item (6)
2154 when 'e', 'E' then
2155 last_token := E_RESCUE
2156 last_detachable_et_keyword_value := ast_factory.new_rescue_keyword (Current)
2157 else
2158 -- Do nothing.
2159 end
2160 else
2161 -- Do nothing.
2162 end
2163 when 'u', 'U' then
2164 inspect text_item (5)
2165 when 'l', 'L' then
2166 inspect text_item (6)
2167 when 't', 'T' then
2168 last_token := E_RESULT
2169 last_detachable_et_result_value := ast_factory.new_result_keyword (Current)
2170 else
2171 -- Do nothing.
2172 end
2173 else
2174 -- Do nothing.
2175 end
2176 else
2177 -- Do nothing.
2178 end
2179 else
2180 -- Do nothing.
2181 end
2182 else
2183 -- Do nothing.
2184 end
2185 when 's', 'S' then
2186 inspect text_item (2)
2187 when 'e', 'E' then
2188 inspect text_item (3)
2189 when 'l', 'L' then
2190 inspect text_item (4)
2191 when 'e', 'E' then
2192 inspect text_item (5)
2193 when 'c', 'C' then
2194 inspect text_item (6)
2195 when 't', 'T' then
2196 last_token := E_SELECT
2197 last_detachable_et_keyword_value := ast_factory.new_select_keyword (Current)
2198 else
2199 -- Do nothing.
2200 end
2201 else
2202 -- Do nothing.
2203 end
2204 else
2205 -- Do nothing.
2206 end
2207 else
2208 -- Do nothing.
2209 end
2210 else
2211 -- Do nothing.
2212 end
2213 when 'u', 'U' then
2214 inspect text_item (2)
2215 when 'n', 'N' then
2216 inspect text_item (3)
2217 when 'i', 'I' then
2218 inspect text_item (4)
2219 when 'q', 'Q' then
2220 inspect text_item (5)
2221 when 'u', 'U' then
2222 inspect text_item (6)
2223 when 'e', 'E' then
2224 last_token := E_UNIQUE
2225 last_detachable_et_keyword_value := ast_factory.new_unique_keyword (Current)
2226 else
2227 -- Do nothing.
2228 end
2229 else
2230 -- Do nothing.
2231 end
2232 else
2233 -- Do nothing.
2234 end
2235 else
2236 -- Do nothing.
2237 end
2238 else
2239 -- Do nothing.
2240 end
2241 else
2242 -- Do nothing.
2243 end
2244 when 7 then
2245 inspect text_item (1)
2246 when 'c', 'C' then
2247 inspect text_item (2)
2248 when 'u', 'U' then
2249 inspect text_item (3)
2250 when 'r', 'R' then
2251 inspect text_item (4)
2252 when 'r', 'R' then
2253 inspect text_item (5)
2254 when 'e', 'E' then
2255 inspect text_item (6)
2256 when 'n', 'N' then
2257 inspect text_item (7)
2258 when 't', 'T' then
2259 last_token := E_CURRENT
2260 last_detachable_et_current_value := ast_factory.new_current_keyword (Current)
2261 else
2262 -- Do nothing.
2263 end
2264 else
2265 -- Do nothing.
2266 end
2267 else
2268 -- Do nothing.
2269 end
2270 else
2271 -- Do nothing.
2272 end
2273 else
2274 -- Do nothing.
2275 end
2276 when 'o', 'O' then
2277 inspect text_item (3)
2278 when 'n', 'N' then
2279 inspect text_item (4)
2280 when 'v', 'V' then
2281 inspect text_item (5)
2282 when 'e', 'E' then
2283 inspect text_item (6)
2284 when 'r', 'R' then
2285 inspect text_item (7)
2286 when 't', 'T' then
2287 last_token := E_CONVERT
2288 last_detachable_et_keyword_value := ast_factory.new_convert_keyword (Current)
2289 else
2290 -- Do nothing.
2291 end
2292 else
2293 -- Do nothing.
2294 end
2295 else
2296 -- Do nothing.
2297 end
2298 else
2299 -- Do nothing.
2300 end
2301 else
2302 -- Do nothing.
2303 end
2304 else
2305 -- Do nothing.
2306 end
2307 when 'f', 'F' then
2308 inspect text_item (2)
2309 when 'e', 'E' then
2310 inspect text_item (3)
2311 when 'a', 'A' then
2312 inspect text_item (4)
2313 when 't', 'T' then
2314 inspect text_item (5)
2315 when 'u', 'U' then
2316 inspect text_item (6)
2317 when 'r', 'R' then
2318 inspect text_item (7)
2319 when 'e', 'E' then
2320 last_token := E_FEATURE
2321 last_detachable_et_keyword_value := ast_factory.new_feature_keyword (Current)
2322 else
2323 -- Do nothing.
2324 end
2325 else
2326 -- Do nothing.
2327 end
2328 else
2329 -- Do nothing.
2330 end
2331 else
2332 -- Do nothing.
2333 end
2334 else
2335 -- Do nothing.
2336 end
2337 else
2338 -- Do nothing.
2339 end
2340 when 'i', 'I' then
2341 inspect text_item (2)
2342 when 'm', 'M' then
2343 inspect text_item (3)
2344 when 'p', 'P' then
2345 inspect text_item (4)
2346 when 'l', 'L' then
2347 inspect text_item (5)
2348 when 'i', 'I' then
2349 inspect text_item (6)
2350 when 'e', 'E' then
2351 inspect text_item (7)
2352 when 's', 'S' then
2353 last_token := E_IMPLIES
2354 last_detachable_et_keyword_operator_value := ast_factory.new_implies_keyword (Current)
2355 else
2356 -- Do nothing.
2357 end
2358 else
2359 -- Do nothing.
2360 end
2361 else
2362 -- Do nothing.
2363 end
2364 else
2365 -- Do nothing.
2366 end
2367 else
2368 -- Do nothing.
2369 end
2370 when 'n', 'N' then
2371 inspect text_item (3)
2372 when 'h', 'H' then
2373 inspect text_item (4)
2374 when 'e', 'E' then
2375 inspect text_item (5)
2376 when 'r', 'R' then
2377 inspect text_item (6)
2378 when 'i', 'I' then
2379 inspect text_item (7)
2380 when 't', 'T' then
2381 last_token := E_INHERIT
2382 last_detachable_et_keyword_value := ast_factory.new_inherit_keyword (Current)
2383 else
2384 -- Do nothing.
2385 end
2386 else
2387 -- Do nothing.
2388 end
2389 else
2390 -- Do nothing.
2391 end
2392 else
2393 -- Do nothing.
2394 end
2395 when 's', 'S' then
2396 inspect text_item (4)
2397 when 'p', 'P' then
2398 inspect text_item (5)
2399 when 'e', 'E' then
2400 inspect text_item (6)
2401 when 'c', 'C' then
2402 inspect text_item (7)
2403 when 't', 'T' then
2404 last_token := E_INSPECT
2405 last_detachable_et_keyword_value := ast_factory.new_inspect_keyword (Current)
2406 else
2407 -- Do nothing.
2408 end
2409 else
2410 -- Do nothing.
2411 end
2412 else
2413 -- Do nothing.
2414 end
2415 else
2416 -- Do nothing.
2417 end
2418 else
2419 -- Do nothing.
2420 end
2421 else
2422 -- Do nothing.
2423 end
2424 when 'r', 'R' then
2425 inspect text_item (2)
2426 when 'e', 'E' then
2427 inspect text_item (3)
2428 when 'q', 'Q' then
2429 inspect text_item (4)
2430 when 'u', 'U' then
2431 inspect text_item (5)
2432 when 'i', 'I' then
2433 inspect text_item (6)
2434 when 'r', 'R' then
2435 inspect text_item (7)
2436 when 'e', 'E' then
2437 last_token := E_REQUIRE
2438 last_detachable_et_keyword_value := ast_factory.new_require_keyword (Current)
2439 else
2440 -- Do nothing.
2441 end
2442 else
2443 -- Do nothing.
2444 end
2445 else
2446 -- Do nothing.
2447 end
2448 else
2449 -- Do nothing.
2450 end
2451 else
2452 -- Do nothing.
2453 end
2454 else
2455 -- Do nothing.
2456 end
2457 when 'v', 'V' then
2458 inspect text_item (2)
2459 when 'a', 'A' then
2460 inspect text_item (3)
2461 when 'r', 'R' then
2462 inspect text_item (4)
2463 when 'i', 'I' then
2464 inspect text_item (5)
2465 when 'a', 'A' then
2466 inspect text_item (6)
2467 when 'n', 'N' then
2468 inspect text_item (7)
2469 when 't', 'T' then
2470 last_token := E_VARIANT
2471 last_detachable_et_keyword_value := ast_factory.new_variant_keyword (Current)
2472 else
2473 -- Do nothing.
2474 end
2475 else
2476 -- Do nothing.
2477 end
2478 else
2479 -- Do nothing.
2480 end
2481 else
2482 -- Do nothing.
2483 end
2484 else
2485 -- Do nothing.
2486 end
2487 else
2488 -- Do nothing.
2489 end
2490 else
2491 -- Do nothing.
2492 end
2493 when 8 then
2494 inspect text_item (1)
2495 when 'a', 'A' then
2496 inspect text_item (2)
2497 when 't', 'T' then
2498 inspect text_item (3)
2499 when 't', 'T' then
2500 inspect text_item (4)
2501 when 'a', 'A' then
2502 inspect text_item (5)
2503 when 'c', 'C' then
2504 inspect text_item (6)
2505 when 'h', 'H' then
2506 inspect text_item (7)
2507 when 'e', 'E' then
2508 inspect text_item (8)
2509 when 'd', 'D' then
2510 if use_attached_keyword then
2511 last_token := E_ATTACHED
2512 last_detachable_et_keyword_value := ast_factory.new_attached_keyword (Current)
2513 end
2514 else
2515 -- Do nothing.
2516 end
2517 else
2518 -- Do nothing.
2519 end
2520 else
2521 -- Do nothing.
2522 end
2523 else
2524 -- Do nothing.
2525 end
2526 else
2527 -- Do nothing.
2528 end
2529 else
2530 -- Do nothing.
2531 end
2532 else
2533 -- Do nothing.
2534 end
2535 when 'c', 'C' then
2536 inspect text_item (2)
2537 when 'r', 'R' then
2538 inspect text_item (3)
2539 when 'e', 'E' then
2540 inspect text_item (4)
2541 when 'a', 'A' then
2542 inspect text_item (5)
2543 when 't', 'T' then
2544 inspect text_item (6)
2545 when 'i', 'I' then
2546 inspect text_item (7)
2547 when 'o', 'O' then
2548 inspect text_item (8)
2549 when 'n', 'N' then
2550 last_token := E_CREATION
2551 last_detachable_et_keyword_value := ast_factory.new_creation_keyword (Current)
2552 else
2553 -- Do nothing.
2554 end
2555 else
2556 -- Do nothing.
2557 end
2558 else
2559 -- Do nothing.
2560 end
2561 else
2562 -- Do nothing.
2563 end
2564 else
2565 -- Do nothing.
2566 end
2567 else
2568 -- Do nothing.
2569 end
2570 else
2571 -- Do nothing.
2572 end
2573 when 'd', 'D' then
2574 inspect text_item (2)
2575 when 'e', 'E' then
2576 inspect text_item (3)
2577 when 'f', 'F' then
2578 inspect text_item (4)
2579 when 'e', 'E' then
2580 inspect text_item (5)
2581 when 'r', 'R' then
2582 inspect text_item (6)
2583 when 'r', 'R' then
2584 inspect text_item (7)
2585 when 'e', 'E' then
2586 inspect text_item (8)
2587 when 'd', 'D' then
2588 last_token := E_DEFERRED
2589 last_detachable_et_keyword_value := ast_factory.new_deferred_keyword (Current)
2590 else
2591 -- Do nothing.
2592 end
2593 else
2594 -- Do nothing.
2595 end
2596 else
2597 -- Do nothing.
2598 end
2599 else
2600 -- Do nothing.
2601 end
2602 else
2603 -- Do nothing.
2604 end
2605 else
2606 -- Do nothing.
2607 end
2608 else
2609 -- Do nothing.
2610 end
2611 when 'e', 'E' then
2612 inspect text_item (2)
2613 when 'x', 'X' then
2614 inspect text_item (3)
2615 when 'p', 'P' then
2616 inspect text_item (4)
2617 when 'a', 'A' then
2618 inspect text_item (5)
2619 when 'n', 'N' then
2620 inspect text_item (6)
2621 when 'd', 'D' then
2622 inspect text_item (7)
2623 when 'e', 'E' then
2624 inspect text_item (8)
2625 when 'd', 'D' then
2626 last_token := E_EXPANDED
2627 last_detachable_et_keyword_value := ast_factory.new_expanded_keyword (Current)
2628 else
2629 -- Do nothing.
2630 end
2631 else
2632 -- Do nothing.
2633 end
2634 else
2635 -- Do nothing.
2636 end
2637 else
2638 -- Do nothing.
2639 end
2640 else
2641 -- Do nothing.
2642 end
2643 when 't', 'T' then
2644 inspect text_item (4)
2645 when 'e', 'E' then
2646 inspect text_item (5)
2647 when 'r', 'R' then
2648 inspect text_item (6)
2649 when 'n', 'N' then
2650 inspect text_item (7)
2651 when 'a', 'A' then
2652 inspect text_item (8)
2653 when 'l', 'L' then
2654 last_token := E_EXTERNAL
2655 last_detachable_et_keyword_value := ast_factory.new_external_keyword (Current)
2656 else
2657 -- Do nothing.
2658 end
2659 else
2660 -- Do nothing.
2661 end
2662 else
2663 -- Do nothing.
2664 end
2665 else
2666 -- Do nothing.
2667 end
2668 else
2669 -- Do nothing.
2670 end
2671 else
2672 -- Do nothing.
2673 end
2674 else
2675 -- Do nothing.
2676 end
2677 when 'i', 'I' then
2678 inspect text_item (2)
2679 when 'n', 'N' then
2680 inspect text_item (3)
2681 when 'd', 'D' then
2682 inspect text_item (4)
2683 when 'e', 'E' then
2684 inspect text_item (5)
2685 when 'x', 'X' then
2686 inspect text_item (6)
2687 when 'i', 'I' then
2688 inspect text_item (7)
2689 when 'n', 'N' then
2690 inspect text_item (8)
2691 when 'g', 'G' then
2692 last_token := E_INDEXING
2693 last_detachable_et_keyword_value := ast_factory.new_indexing_keyword (Current)
2694 else
2695 -- Do nothing.
2696 end
2697 else
2698 -- Do nothing.
2699 end
2700 else
2701 -- Do nothing.
2702 end
2703 else
2704 -- Do nothing.
2705 end
2706 else
2707 -- Do nothing.
2708 end
2709 else
2710 -- Do nothing.
2711 end
2712 else
2713 -- Do nothing.
2714 end
2715 when 'o', 'O' then
2716 inspect text_item (2)
2717 when 'b', 'B' then
2718 inspect text_item (3)
2719 when 's', 'S' then
2720 inspect text_item (4)
2721 when 'o', 'O' then
2722 inspect text_item (5)
2723 when 'l', 'L' then
2724 inspect text_item (6)
2725 when 'e', 'E' then
2726 inspect text_item (7)
2727 when 't', 'T' then
2728 inspect text_item (8)
2729 when 'e', 'E' then
2730 last_token := E_OBSOLETE
2731 last_detachable_et_keyword_value := ast_factory.new_obsolete_keyword (Current)
2732 else
2733 -- Do nothing.
2734 end
2735 else
2736 -- Do nothing.
2737 end
2738 else
2739 -- Do nothing.
2740 end
2741 else
2742 -- Do nothing.
2743 end
2744 else
2745 -- Do nothing.
2746 end
2747 else
2748 -- Do nothing.
2749 end
2750 else
2751 -- Do nothing.
2752 end
2753 when 'r', 'R' then
2754 inspect text_item (2)
2755 when 'e', 'E' then
2756 inspect text_item (3)
2757 when 'd', 'D' then
2758 inspect text_item (4)
2759 when 'e', 'E' then
2760 inspect text_item (5)
2761 when 'f', 'F' then
2762 inspect text_item (6)
2763 when 'i', 'I' then
2764 inspect text_item (7)
2765 when 'n', 'N' then
2766 inspect text_item (8)
2767 when 'e', 'E' then
2768 last_token := E_REDEFINE
2769 last_detachable_et_keyword_value := ast_factory.new_redefine_keyword (Current)
2770 else
2771 -- Do nothing.
2772 end
2773 else
2774 -- Do nothing.
2775 end
2776 else
2777 -- Do nothing.
2778 end
2779 else
2780 -- Do nothing.
2781 end
2782 else
2783 -- Do nothing.
2784 end
2785 else
2786 -- Do nothing.
2787 end
2788 else
2789 -- Do nothing.
2790 end
2791 when 's', 'S' then
2792 inspect text_item (2)
2793 when 'e', 'E' then
2794 inspect text_item (3)
2795 when 'p', 'P' then
2796 inspect text_item (4)
2797 when 'a', 'A' then
2798 inspect text_item (5)
2799 when 'r', 'R' then
2800 inspect text_item (6)
2801 when 'a', 'A' then
2802 inspect text_item (7)
2803 when 't', 'T' then
2804 inspect text_item (8)
2805 when 'e', 'E' then
2806 last_token := E_SEPARATE
2807 last_detachable_et_keyword_value := ast_factory.new_separate_keyword (Current)
2808 else
2809 -- Do nothing.
2810 end
2811 else
2812 -- Do nothing.
2813 end
2814 else
2815 -- Do nothing.
2816 end
2817 else
2818 -- Do nothing.
2819 end
2820 else
2821 -- Do nothing.
2822 end
2823 else
2824 -- Do nothing.
2825 end
2826 else
2827 -- Do nothing.
2828 end
2829 when 'u', 'U' then
2830 inspect text_item (2)
2831 when 'n', 'N' then
2832 inspect text_item (3)
2833 when 'd', 'D' then
2834 inspect text_item (4)
2835 when 'e', 'E' then
2836 inspect text_item (5)
2837 when 'f', 'F' then
2838 inspect text_item (6)
2839 when 'i', 'I' then
2840 inspect text_item (7)
2841 when 'n', 'N' then
2842 inspect text_item (8)
2843 when 'e', 'E' then
2844 last_token := E_UNDEFINE
2845 last_detachable_et_keyword_value := ast_factory.new_undefine_keyword (Current)
2846 else
2847 -- Do nothing.
2848 end
2849 else
2850 -- Do nothing.
2851 end
2852 else
2853 -- Do nothing.
2854 end
2855 else
2856 -- Do nothing.
2857 end
2858 else
2859 -- Do nothing.
2860 end
2861 else
2862 -- Do nothing.
2863 end
2864 else
2865 -- Do nothing.
2866 end
2867 else
2868 -- Do nothing.
2869 end
2870 when 9 then
2871 inspect text_item (1)
2872 when 'a', 'A' then
2873 inspect text_item (2)
2874 when 't', 'T' then
2875 inspect text_item (3)
2876 when 't', 'T' then
2877 inspect text_item (4)
2878 when 'r', 'R' then
2879 inspect text_item (5)
2880 when 'i', 'I' then
2881 inspect text_item (6)
2882 when 'b', 'B' then
2883 inspect text_item (7)
2884 when 'u', 'U' then
2885 inspect text_item (8)
2886 when 't', 'T' then
2887 inspect text_item (9)
2888 when 'e', 'E' then
2889 if use_attribute_keyword then
2890 last_token := E_ATTRIBUTE
2891 last_detachable_et_keyword_value := ast_factory.new_attribute_keyword (Current)
2892 end
2893 else
2894 -- Do nothing.
2895 end
2896 else
2897 -- Do nothing.
2898 end
2899 else
2900 -- Do nothing.
2901 end
2902 else
2903 -- Do nothing.
2904 end
2905 else
2906 -- Do nothing.
2907 end
2908 else
2909 -- Do nothing.
2910 end
2911 else
2912 -- Do nothing.
2913 end
2914 else
2915 -- Do nothing.
2916 end
2917 when 'i', 'I' then
2918 inspect text_item (2)
2919 when 'n', 'N' then
2920 inspect text_item (3)
2921 when 'v', 'V' then
2922 inspect text_item (4)
2923 when 'a', 'A' then
2924 inspect text_item (5)
2925 when 'r', 'R' then
2926 inspect text_item (6)
2927 when 'i', 'I' then
2928 inspect text_item (7)
2929 when 'a', 'A' then
2930 inspect text_item (8)
2931 when 'n', 'N' then
2932 inspect text_item (9)
2933 when 't', 'T' then
2934 last_token := E_INVARIANT
2935 last_detachable_et_keyword_value := ast_factory.new_invariant_keyword (Current)
2936 else
2937 -- Do nothing.
2938 end
2939 else
2940 -- Do nothing.
2941 end
2942 else
2943 -- Do nothing.
2944 end
2945 else
2946 -- Do nothing.
2947 end
2948 else
2949 -- Do nothing.
2950 end
2951 else
2952 -- Do nothing.
2953 end
2954 else
2955 -- Do nothing.
2956 end
2957 else
2958 -- Do nothing.
2959 end
2960 when 'p', 'P' then
2961 inspect text_item (2)
2962 when 'r', 'R' then
2963 inspect text_item (3)
2964 when 'e', 'E' then
2965 inspect text_item (4)
2966 when 'c', 'C' then
2967 inspect text_item (5)
2968 when 'u', 'U' then
2969 inspect text_item (6)
2970 when 'r', 'R' then
2971 inspect text_item (7)
2972 when 's', 'S' then
2973 inspect text_item (8)
2974 when 'o', 'O' then
2975 inspect text_item (9)
2976 when 'r', 'R' then
2977 last_token := E_PRECURSOR
2978 last_detachable_et_precursor_keyword_value := ast_factory.new_precursor_keyword (Current)
2979 else
2980 -- Do nothing.
2981 end
2982 else
2983 -- Do nothing.
2984 end
2985 else
2986 -- Do nothing.
2987 end
2988 else
2989 -- Do nothing.
2990 end
2991 else
2992 -- Do nothing.
2993 end
2994 else
2995 -- Do nothing.
2996 end
2997 else
2998 -- Do nothing.
2999 end
3000 else
3001 -- Do nothing.
3002 end
3003 when 'r', 'R' then
3004 inspect text_item (2)
3005 when 'e', 'E' then
3006 inspect text_item (3)
3007 when 'f', 'F' then
3008 inspect text_item (4)
3009 when 'e', 'E' then
3010 inspect text_item (5)
3011 when 'r', 'R' then
3012 inspect text_item (6)
3013 when 'e', 'E' then
3014 inspect text_item (7)
3015 when 'n', 'N' then
3016 inspect text_item (8)
3017 when 'c', 'C' then
3018 inspect text_item (9)
3019 when 'e', 'E' then
3020 if use_reference_keyword then
3021 last_token := E_REFERENCE
3022 last_detachable_et_keyword_value := ast_factory.new_reference_keyword (Current)
3023 end
3024 else
3025 -- Do nothing.
3026 end
3027 else
3028 -- Do nothing.
3029 end
3030 else
3031 -- Do nothing.
3032 end
3033 else
3034 -- Do nothing.
3035 end
3036 else
3037 -- Do nothing.
3038 end
3039 else
3040 -- Do nothing.
3041 end
3042 else
3043 -- Do nothing.
3044 end
3045 else
3046 -- Do nothing.
3047 end
3048 else
3049 -- Do nothing.
3050 end
3051 when 10 then
3052 inspect text_item (1)
3053 when 'd', 'D' then
3054 inspect text_item (2)
3055 when 'e', 'E' then
3056 inspect text_item (3)
3057 when 't', 'T' then
3058 inspect text_item (4)
3059 when 'a', 'A' then
3060 inspect text_item (5)
3061 when 'c', 'C' then
3062 inspect text_item (6)
3063 when 'h', 'H' then
3064 inspect text_item (7)
3065 when 'a', 'A' then
3066 inspect text_item (8)
3067 when 'b', 'B' then
3068 inspect text_item (9)
3069 when 'l', 'L' then
3070 inspect text_item (10)
3071 when 'e', 'E' then
3072 if use_detachable_keyword then
3073 last_token := E_DETACHABLE
3074 last_detachable_et_keyword_value := ast_factory.new_detachable_keyword (Current)
3075 end
3076 else
3077 -- Do nothing.
3078 end
3079 else
3080 -- Do nothing.
3081 end
3082 else
3083 -- Do nothing.
3084 end
3085 else
3086 -- Do nothing.
3087 end
3088 else
3089 -- Do nothing.
3090 end
3091 else
3092 -- Do nothing.
3093 end
3094 else
3095 -- Do nothing.
3096 end
3097 else
3098 -- Do nothing.
3099 end
3100 else
3101 -- Do nothing.
3102 end
3103 else
3104 -- Do nothing.
3105 end
3106 else
3107 -- Do nothing.
3108 end
3109 if last_token = E_IDENTIFIER then
3110 last_detachable_et_identifier_value := ast_factory.new_identifier (Current)
3111 end
3112 end
3113
3114 process_one_char_symbol (c: CHARACTER)
3115 -- Process Eiffel symbol with made up of only
3116 -- one character `c'.
3117 require
3118 one_char: text_count >= 1
3119 -- valid_string: ([-+*/^=><.;,:!?(){}[\]$]).recognizes (text_substring (1, 1))
3120 valid_c: text_item (1) = c
3121 do
3122 last_literal_start := 1
3123 last_literal_end := 1
3124 inspect c
3125 when '-' then
3126 last_token := Minus_code
3127 last_detachable_et_symbol_operator_value := ast_factory.new_minus_symbol (Current)
3128 when '+' then
3129 last_token := Plus_code
3130 last_detachable_et_symbol_operator_value := ast_factory.new_plus_symbol (Current)
3131 when '*' then
3132 last_token := Star_code
3133 last_detachable_et_symbol_operator_value := ast_factory.new_times_symbol (Current)
3134 when '/' then
3135 last_token := Slash_code
3136 last_detachable_et_symbol_operator_value := ast_factory.new_divide_symbol (Current)
3137 when '^' then
3138 last_token := Caret_code
3139 last_detachable_et_symbol_operator_value := ast_factory.new_power_symbol (Current)
3140 when '=' then
3141 last_token := Equal_code
3142 last_detachable_et_symbol_value := ast_factory.new_equal_symbol (Current)
3143 when '>' then
3144 last_token := Greater_than_code
3145 last_detachable_et_symbol_operator_value := ast_factory.new_gt_symbol (Current)
3146 when '<' then
3147 last_token := Less_than_code
3148 last_detachable_et_symbol_operator_value := ast_factory.new_lt_symbol (Current)
3149 when '.' then
3150 last_token := Dot_code
3151 last_detachable_et_symbol_value := ast_factory.new_dot_symbol (Current)
3152 when ';' then
3153 last_token := Semicolon_code
3154 last_detachable_et_semicolon_symbol_value := ast_factory.new_semicolon_symbol (Current)
3155 when ',' then
3156 last_token := Comma_code
3157 last_detachable_et_symbol_value := ast_factory.new_comma_symbol (Current)
3158 when ':' then
3159 last_token := Colon_code
3160 last_detachable_et_symbol_value := ast_factory.new_colon_symbol (Current)
3161 when '!' then
3162 last_token := Exclamation_code
3163 last_detachable_et_symbol_value := ast_factory.new_bang_symbol (Current)
3164 when '?' then
3165 last_token := Question_mark_code
3166 last_detachable_et_question_mark_symbol_value := ast_factory.new_question_mark_symbol (Current)
3167 when '(' then
3168 last_token := Left_parenthesis_code
3169 last_detachable_et_symbol_value := ast_factory.new_left_parenthesis_symbol (Current)
3170 when ')' then
3171 last_token := Right_parenthesis_code
3172 last_detachable_et_symbol_value := ast_factory.new_right_parenthesis_symbol (Current)
3173 when '{' then
3174 last_token := Left_brace_code
3175 last_detachable_et_symbol_value := ast_factory.new_left_brace_symbol (Current)
3176 when '}' then
3177 last_token := Right_brace_code
3178 last_detachable_et_symbol_value := ast_factory.new_right_brace_symbol (Current)
3179 when '[' then
3180 last_token := Left_bracket_code
3181 last_detachable_et_bracket_symbol_value := ast_factory.new_left_bracket_symbol (Current)
3182 when ']' then
3183 last_token := Right_bracket_code
3184 last_detachable_et_symbol_value := ast_factory.new_right_bracket_symbol (Current)
3185 when '$' then
3186 last_token := Dollar_code
3187 last_detachable_et_symbol_value := ast_factory.new_dollar_symbol (Current)
3188 when '~' then
3189 last_token := Tilde_code
3190 last_detachable_et_symbol_value := ast_factory.new_tilde_symbol (Current)
3191 else
3192 last_token := E_UNKNOWN
3193 last_detachable_et_position_value := current_position
3194 end
3195 end
3196
3197 process_two_char_symbol (c1, c2: CHARACTER)
3198 -- Process Eiffel symbol with made up of exactly
3199 -- two characters `c1' and `c2'.
3200 require
3201 two_chars: text_count >= 2
3202 -- valid_string: ("//"|"\\\\"|"/="|"/~"|">="|"<="|"!!"|"->"|".."|"<<"|">>"|":="|"?=").recognizes (text_substring (1, 2))
3203 valid_c1: text_item (1) = c1
3204 valid_c2: text_item (2) = c2
3205 do
3206 last_literal_start := 1
3207 last_literal_end := 2
3208 inspect c1
3209 when '/' then
3210 inspect c2
3211 when '/' then
3212 last_token := E_DIV
3213 last_detachable_et_symbol_operator_value := ast_factory.new_div_symbol (Current)
3214 when '=' then
3215 last_token := E_NE
3216 last_detachable_et_symbol_value := ast_factory.new_not_equal_symbol (Current)
3217 when '~' then
3218 last_token := E_NOT_TILDE
3219 last_detachable_et_symbol_value := ast_factory.new_not_tilde_symbol (Current)
3220 else
3221 last_token := E_UNKNOWN
3222 last_detachable_et_position_value := current_position
3223 end
3224 when '\' then
3225 check valid_symbol: c2 = '\' end
3226 last_token := E_MOD
3227 last_detachable_et_symbol_operator_value := ast_factory.new_mod_symbol (Current)
3228 when '>' then
3229 inspect c2
3230 when '=' then
3231 last_token := E_GE
3232 last_detachable_et_symbol_operator_value := ast_factory.new_ge_symbol (Current)
3233 when '>' then
3234 last_token := E_RARRAY
3235 last_detachable_et_symbol_value := ast_factory.new_right_array_symbol (Current)
3236 else
3237 last_token := E_UNKNOWN
3238 last_detachable_et_position_value := current_position
3239 end
3240 when '<' then
3241 inspect c2
3242 when '=' then
3243 last_token := E_LE
3244 last_detachable_et_symbol_operator_value := ast_factory.new_le_symbol (Current)
3245 when '<' then
3246 last_token := E_LARRAY
3247 last_detachable_et_symbol_value := ast_factory.new_left_array_symbol (Current)
3248 else
3249 last_token := E_UNKNOWN
3250 last_detachable_et_position_value := current_position
3251 end
3252 when '-' then
3253 check valid_symbol: c2 = '>' end
3254 last_token := E_ARROW
3255 last_detachable_et_symbol_value := ast_factory.new_arrow_symbol (Current)
3256 when '.' then
3257 check valid_symbol: c2 = '.' end
3258 last_token := E_DOTDOT
3259 last_detachable_et_symbol_value := ast_factory.new_dotdot_symbol (Current)
3260 when ':' then
3261 check valid_symbol: c2 = '=' end
3262 last_token := E_ASSIGN_SYMBOL
3263 last_detachable_et_symbol_value := ast_factory.new_assign_symbol (Current)
3264 when '?' then
3265 check valid_symbol: c2 = '=' end
3266 last_token := E_REVERSE
3267 last_detachable_et_symbol_value := ast_factory.new_assign_attempt_symbol (Current)
3268 else
3269 last_token := E_UNKNOWN
3270 last_detachable_et_position_value := current_position
3271 end
3272 end
3273
3274 process_c1_character_constant (c: CHARACTER)
3275 -- Process character constant of the form 'A'.
3276 require
3277 c1_char: text_count >= 3
3278 -- valid_string: (\'[^%\n]\').recognizes (text_substring (1, 3))
3279 valid_c: text_item (2) = c
3280 do
3281 if c = '%'' then
3282 -- Syntax error: character quote should be declared
3283 -- as '%'' and not as ''' in character constant.
3284 column := column + 1
3285 set_syntax_error
3286 error_handler.report_SCTQ_error (filename, current_position)
3287 column := column - 1
3288 end
3289 last_literal_start := 2
3290 last_literal_end := 2
3291 last_token := E_CHARACTER
3292 last_detachable_et_character_constant_value := ast_factory.new_c1_character_constant (c, Current)
3293 end
3294
3295 process_c2_character_constant (c: CHARACTER)
3296 -- Process character constant of the form '%A'.
3297 require
3298 c2_char: text_count >= 4
3299 -- valid_string: (\'%.\').recognizes (text_substring (1, 4))
3300 valid_c: text_item (3) = c
3301 local
3302 a_value: CHARACTER
3303 do
3304 inspect c
3305 when 'A' then
3306 a_value := '%A'
3307 when 'B' then
3308 a_value := '%B'
3309 when 'C' then
3310 a_value := '%C'
3311 when 'D' then
3312 a_value := '%D'
3313 when 'F' then
3314 a_value := '%F'
3315 when 'H' then
3316 a_value := '%H'
3317 when 'L' then
3318 a_value := '%L'
3319 when 'N' then
3320 a_value := '%N'
3321 when 'Q' then
3322 a_value := '%Q'
3323 when 'R' then
3324 a_value := '%R'
3325 when 'S' then
3326 a_value := '%S'
3327 when 'T' then
3328 a_value := '%T'
3329 when 'U' then
3330 a_value := '%U'
3331 when 'V' then
3332 a_value := '%V'
3333 when '%%' then
3334 a_value := '%%'
3335 when '%'' then
3336 a_value := '%''
3337 when '%"' then
3338 a_value := '%"'
3339 when '(' then
3340 a_value := '%('
3341 when ')' then
3342 a_value := '%)'
3343 when '<' then
3344 a_value := '%<'
3345 when '>' then
3346 a_value := '%>'
3347 when 'a' then
3348 -- Syntax error: special character specification
3349 -- %l where l is a letter code should be in
3350 -- upper-case in character constant.
3351 column := column + 2
3352 set_syntax_error
3353 error_handler.report_SCCU_error (filename, current_position)
3354 column := column - 2
3355 a_value := '%A'
3356 when 'b' then
3357 -- Syntax error: special character specification
3358 -- %l where l is a letter code should be in
3359 -- upper-case in character constant.
3360 column := column + 2
3361 set_syntax_error
3362 error_handler.report_SCCU_error (filename, current_position)
3363 column := column - 2
3364 a_value := '%B'
3365 when 'c' then
3366 -- Syntax error: special character specification
3367 -- %l where l is a letter code should be in
3368 -- upper-case in character constant.
3369 column := column + 2
3370 set_syntax_error
3371 error_handler.report_SCCU_error (filename, current_position)
3372 column := column - 2
3373 a_value := '%C'
3374 when 'd' then
3375 -- Syntax error: special character specification
3376 -- %l where l is a letter code should be in
3377 -- upper-case in character constant.
3378 column := column + 2
3379 set_syntax_error
3380 error_handler.report_SCCU_error (filename, current_position)
3381 column := column - 2
3382 a_value := '%D'
3383 when 'f' then
3384 -- Syntax error: special character specification
3385 -- %l where l is a letter code should be in
3386 -- upper-case in character constant.
3387 column := column + 2
3388 set_syntax_error
3389 error_handler.report_SCCU_error (filename, current_position)
3390 column := column - 2
3391 a_value := '%F'
3392 when 'h' then
3393 -- Syntax error: special character specification
3394 -- %l where l is a letter code should be in
3395 -- upper-case in character constant.
3396 column := column + 2
3397 set_syntax_error
3398 error_handler.report_SCCU_error (filename, current_position)
3399 column := column - 2
3400 a_value := '%H'
3401 when 'l' then
3402 -- Syntax error: special character specification
3403 -- %l where l is a letter code should be in
3404 -- upper-case in character constant.
3405 column := column + 2
3406 set_syntax_error
3407 error_handler.report_SCCU_error (filename, current_position)
3408 column := column - 2
3409 a_value := '%L'
3410 when 'n' then
3411 -- Syntax error: special character specification
3412 -- %l where l is a letter code should be in
3413 -- upper-case in character constant.
3414 column := column + 2
3415 set_syntax_error
3416 error_handler.report_SCCU_error (filename, current_position)
3417 column := column - 2
3418 a_value := '%N'
3419 when 'q' then
3420 -- Syntax error: special character specification
3421 -- %l where l is a letter code should be in
3422 -- upper-case in character constant.
3423 column := column + 2
3424 set_syntax_error
3425 error_handler.report_SCCU_error (filename, current_position)
3426 column := column - 2
3427 a_value := '%Q'
3428 when 'r' then
3429 -- Syntax error: special character specification
3430 -- %l where l is a letter code should be in
3431 -- upper-case in character constant.
3432 column := column + 2
3433 set_syntax_error
3434 error_handler.report_SCCU_error (filename, current_position)
3435 column := column - 2
3436 a_value := '%R'
3437 when 's' then
3438 -- Syntax error: special character specification
3439 -- %l where l is a letter code should be in
3440 -- upper-case in character constant.
3441 column := column + 2
3442 set_syntax_error
3443 error_handler.report_SCCU_error (filename, current_position)
3444 column := column - 2
3445 a_value := '%S'
3446 when 't' then
3447 -- Syntax error: special character specification
3448 -- %l where l is a letter code should be in
3449 -- upper-case in character constant.
3450 column := column + 2
3451 set_syntax_error
3452 error_handler.report_SCCU_error (filename, current_position)
3453 column := column - 2
3454 a_value := '%T'
3455 when 'u' then
3456 -- Syntax error: special character specification
3457 -- %l where l is a letter code should be in
3458 -- upper-case in character constant.
3459 column := column + 2
3460 set_syntax_error
3461 error_handler.report_SCCU_error (filename, current_position)
3462 column := column - 2
3463 a_value := '%U'
3464 when 'v' then
3465 -- Syntax error: special character specification
3466 -- %l where l is a letter code should be in
3467 -- upper-case in character constant.
3468 column := column + 2
3469 set_syntax_error
3470 error_handler.report_SCCU_error (filename, current_position)
3471 column := column - 2
3472 a_value := '%V'
3473 else
3474 -- Syntax error: invalid special character
3475 -- %l in character constant.
3476 column := column + 2
3477 set_syntax_error
3478 error_handler.report_SCSC_error (filename, current_position)
3479 column := column - 2
3480 a_value := c
3481 end
3482 last_literal_start := 3
3483 last_literal_end := 3
3484 last_token := E_CHARACTER
3485 last_detachable_et_character_constant_value := ast_factory.new_c2_character_constant (a_value, Current)
3486 end
3487
3488 process_regular_manifest_string (nb: INTEGER)
3489 -- Process regular manifest string of the form "..."
3490 -- with length `nb' (including the two quotes).
3491 require
3492 nb_large_enough: nb >= 2
3493 nb_small_enough: nb <= text_count
3494 -- valid_string: (\"[^%\n"]*\").recognizes (text_substring (1, nb))
3495 do
3496 last_token := E_STRING
3497 inspect nb
3498 when 3 then
3499 inspect text_item (2)
3500 when '+' then
3501 last_token := E_STRPLUS
3502 when '-' then
3503 last_token := E_STRMINUS
3504 when '*' then
3505 last_token := E_STRSTAR
3506 when '/' then
3507 last_token := E_STRSLASH
3508 when '^' then
3509 last_token := E_STRPOWER
3510 when '<' then
3511 last_token := E_STRLT
3512 when '>' then
3513 last_token := E_STRGT
3514 else
3515 -- Do nothing.
3516 end
3517 when 4 then
3518 inspect text_item (2)
3519 when '[' then
3520 inspect text_item (3)
3521 when ']' then
3522 last_token := E_STRBRACKET
3523 else
3524 -- Do nothing.
3525 end
3526 when '(' then
3527 inspect text_item (3)
3528 when ')' then
3529 last_token := E_STRPARENTHESIS
3530 else
3531 -- Do nothing.
3532 end
3533 when '.' then
3534 inspect text_item (3)
3535 when '.' then
3536 last_token := E_STRDOTDOT
3537 else
3538 -- Do nothing.
3539 end
3540 when '/' then
3541 inspect text_item (3)
3542 when '/' then
3543 last_token := E_STRDIV
3544 else
3545 -- Do nothing.
3546 end
3547 when '\' then
3548 inspect text_item (3)
3549 when '\' then
3550 last_token := E_STRMOD
3551 else
3552 -- Do nothing.
3553 end
3554 when '<' then
3555 inspect text_item (3)
3556 when '=' then
3557 last_token := E_STRLE
3558 else
3559 -- Do nothing.
3560 end
3561 when '>' then
3562 inspect text_item (3)
3563 when '=' then
3564 last_token := E_STRGE
3565 else
3566 -- Do nothing.
3567 end
3568 when 'o', 'O' then
3569 inspect text_item (3)
3570 when 'r', 'R' then
3571 last_token := E_STROR
3572 else
3573 -- Do nothing.
3574 end
3575 else
3576 -- Do nothing.
3577 end
3578 when 5 then
3579 inspect text_item (2)
3580 when 'a', 'A' then
3581 inspect text_item (3)
3582 when 'n', 'N' then
3583 inspect text_item (4)
3584 when 'd', 'D' then
3585 last_token := E_STRAND
3586 else
3587 -- Do nothing.
3588 end
3589 else
3590 -- Do nothing.
3591 end
3592 when 'n', 'N' then
3593 inspect text_item (3)
3594 when 'o', 'O' then
3595 inspect text_item (4)
3596 when 't', 'T' then
3597 last_token := E_STRNOT
3598 else
3599 -- Do nothing.
3600 end
3601 else
3602 -- Do nothing.
3603 end
3604 when 'x', 'X' then
3605 inspect text_item (3)
3606 when 'o', 'O' then
3607 inspect text_item (4)
3608 when 'r', 'R' then
3609 last_token := E_STRXOR
3610 else
3611 -- Do nothing.
3612 end
3613 else
3614 -- Do nothing.
3615 end
3616 else
3617 -- Do nothing.
3618 end
3619 when 9 then
3620 inspect text_item (2)
3621 when 'o', 'O' then
3622 inspect text_item (3)
3623 when 'r', 'R' then
3624 inspect text_item (4)
3625 when ' ' then
3626 inspect text_item (5)
3627 when 'e', 'E' then
3628 inspect text_item (6)
3629 when 'l', 'L' then
3630 inspect text_item (7)
3631 when 's', 'S' then
3632 inspect text_item (8)
3633 when 'e', 'E' then
3634 last_token := E_STRORELSE
3635 else
3636 -- Do nothing.
3637 end
3638 else
3639 -- Do nothing.
3640 end
3641 else
3642 -- Do nothing.
3643 end
3644 else
3645 -- Do nothing.
3646 end
3647 else
3648 -- Do nothing.
3649 end
3650 else
3651 -- Do nothing.
3652 end
3653 when 'i', 'I' then
3654 inspect text_item (3)
3655 when 'm', 'M' then
3656 inspect text_item (4)
3657 when 'p', 'P' then
3658 inspect text_item (5)
3659 when 'l', 'L' then
3660 inspect text_item (6)
3661 when 'i', 'I' then
3662 inspect text_item (7)
3663 when 'e', 'E' then
3664 inspect text_item (8)
3665 when 's', 'S' then
3666 last_token := E_STRIMPLIES
3667 else
3668 -- Do nothing.
3669 end
3670 else
3671 -- Do nothing.
3672 end
3673 else
3674 -- Do nothing.
3675 end
3676 else
3677 -- Do nothing.
3678 end
3679 else
3680 -- Do nothing.
3681 end
3682 else
3683 -- Do nothing.
3684 end
3685 else
3686 -- Do nothing.
3687 end
3688 when 10 then
3689 inspect text_item (2)
3690 when 'a', 'A' then
3691 inspect text_item (3)
3692 when 'n', 'N' then
3693 inspect text_item (4)
3694 when 'd', 'D' then
3695 inspect text_item (5)
3696 when ' ' then
3697 inspect text_item (6)
3698 when 't', 'T' then
3699 inspect text_item (7)
3700 when 'h', 'H' then
3701 inspect text_item (8)
3702 when 'e', 'E' then
3703 inspect text_item (9)
3704 when 'n', 'N' then
3705 last_token := E_STRANDTHEN
3706 else
3707 -- Do nothing.
3708 end
3709 else
3710 -- Do nothing.
3711 end
3712 else
3713 -- Do nothing.
3714 end
3715 else
3716 -- Do nothing.
3717 end
3718 else
3719 -- Do nothing.
3720 end
3721 else
3722 -- Do nothing.
3723 end
3724 else
3725 -- Do nothing.
3726 end
3727 else
3728 -- Do nothing.
3729 end
3730 else
3731 -- Do nothing.
3732 end
3733 last_literal_start := 2
3734 last_literal_end := nb - 1
3735 last_detachable_et_manifest_string_value := ast_factory.new_regular_manifest_string (Current)
3736 end
3737
3738 process_break
3739 -- Process break.
3740 do
3741 inspect break_kind
3742 when identifier_break then
3743 process_identifier (last_text_count)
3744 when freeop_break then
3745 last_token := E_FREEOP
3746 last_detachable_et_free_operator_value := ast_factory.new_free_operator (Current)
3747 when character_break then
3748 last_token := E_CHARACTER
3749 last_detachable_et_character_constant_value := ast_factory.new_c3_character_constant (Current)
3750 when integer_break then
3751 last_token := E_INTEGER
3752 last_detachable_et_integer_constant_value := ast_factory.new_regular_integer_constant (Current)
3753 when uinteger_break then
3754 last_token := E_INTEGER
3755 last_detachable_et_integer_constant_value := ast_factory.new_underscored_integer_constant (Current)
3756 when hinteger_break then
3757 last_token := E_INTEGER
3758 last_detachable_et_integer_constant_value := ast_factory.new_hexadecimal_integer_constant (Current)
3759 when ointeger_break then
3760 last_token := E_INTEGER
3761 last_detachable_et_integer_constant_value := ast_factory.new_octal_integer_constant (Current)
3762 when binteger_break then
3763 last_token := E_INTEGER
3764 last_detachable_et_integer_constant_value := ast_factory.new_binary_integer_constant (Current)
3765 when real_break then
3766 last_token := E_REAL
3767 last_detachable_et_real_constant_value := ast_factory.new_regular_real_constant (Current)
3768 when ureal_break then
3769 last_token := E_REAL
3770 last_detachable_et_real_constant_value := ast_factory.new_underscored_real_constant (Current)
3771 when string_break then
3772 process_regular_manifest_string (last_text_count)
3773 when str_freeop_break then
3774 last_token := E_STRFREEOP
3775 last_detachable_et_manifest_string_value := ast_factory.new_regular_manifest_string (Current)
3776 when str_special_break then
3777 last_token := E_STRING
3778 last_detachable_et_manifest_string_value := ast_factory.new_special_manifest_string (Current)
3779 when str_verbatim_break then
3780 last_token := E_STRING
3781 last_detachable_et_manifest_string_value := ast_factory.new_verbatim_string (verbatim_marker,
3782 verbatim_open_white_characters, verbatim_close_white_characters, False, Current)
3783 verbatim_marker := no_verbatim_marker
3784 verbatim_open_white_characters := no_verbatim_marker
3785 verbatim_close_white_characters := no_verbatim_marker
3786 when str_left_aligned_verbatim_break then
3787 last_token := E_STRING
3788 last_detachable_et_manifest_string_value := ast_factory.new_verbatim_string (verbatim_marker,
3789 verbatim_open_white_characters, verbatim_close_white_characters, True, Current)
3790 verbatim_marker := no_verbatim_marker
3791 verbatim_open_white_characters := no_verbatim_marker
3792 verbatim_close_white_characters := no_verbatim_marker
3793 else
3794 last_token := E_UNKNOWN
3795 last_detachable_et_position_value := current_position
3796 end
3797 end
3798
3799 feature {NONE} -- Implementation
3800
3801 add_universe_full_name (a_universe: ET_UNIVERSE; a_names: DS_ARRAYED_LIST [STRING])
3802 -- Add full name of `a_universe' to `a_names'.
3803 require
3804 a_universe_not_void: a_universe /= Void
3805 a_names_not_void: a_names /= Void
3806 no_void_name: not a_names.has_void
3807 do
3808 a_names.force_last (a_universe.full_name ('/'))
3809 ensure
3810 no_void_name: not a_names.has_void
3811 end
3812
3813 tmp_file: KL_TEXT_INPUT_FILE
3814 -- Temporary file object
3815 do
3816 Result := shared_file
3817 if not Result.is_closed then
3818 create Result.make (dummy_name)
3819 end
3820 ensure
3821 file_not_void: Result /= Void
3822 file_closed: Result.is_closed
3823 end
3824
3825 shared_file: KL_TEXT_INPUT_FILE
3826 -- Shared file object
3827 once
3828 create Result.make (dummy_name)
3829 ensure
3830 file_not_void: Result /= Void
3831 end
3832
3833 dummy_name: STRING = "dummy"
3834 -- Dummy name
3835
3836 invariant
3837
3838 group_not_void: group /= Void
3839 filename_not_void: filename /= Void
3840 last_text_count_positive: last_text_count >= 0
3841 last_literal_start_large_enough: last_literal_start >= 1
3842 last_literal_start_small_enough: last_literal_start <= last_literal_end + 1
3843 last_literal_end_small_enough: last_literal_end <= text_count
3844
3845 end

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

  ViewVC Help
Powered by ViewVC 1.1.23