1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
indexing
description:
"Scanner skeletons for Lace parsers"
author: "Eric Bezault <ericb@gobosoft.com>"
copyright: "Copyright (c) 1999, Eric Bezault and others"
license: "Eiffel Forum Freeware License v1 (see forum.txt)"
date: "$Date: 2000/02/02 10:57:18 $"
revision: "$Revision: 1.1 $"
deferred class ET_LACE_SCANNER_SKELETON
inherit
YY_COMPRESSED_SCANNER_SKELETON
rename
make as make_compressed_scanner_skeleton,
reset as reset_compressed_scanner_skeleton
end
ET_LACE_TOKENS
export {NONE} all end
UT_CHARACTER_CODES
export {NONE} all end
KL_IMPORTED_INTEGER_ROUTINES
KL_IMPORTED_STRING_ROUTINES
KL_SHARED_PLATFORM
feature {NONE} -- Initialization
make (a_filename: STRING; an_error_handler: like error_handler) is
-- Create a new Lace scanner.
require
a_filename_not_void: a_filename /= Void
an_error_handler_not_void: an_error_handler /= Void
do
make_with_buffer (Empty_buffer)
filename := a_filename
error_handler := an_error_handler
eif_buffer := STRING_.make (Init_buffer_size)
eif_lineno := 1
ensure
filename_set: filename = a_filename
error_handler_set: error_handler = an_error_handler
end
feature -- Initialization
reset is
-- Reset scanner before scanning next input.
do
reset_compressed_scanner_skeleton
eif_lineno := 1
eif_buffer.wipe_out
end
feature -- Access
code_: INTEGER
str_: STRING
filename: STRING
-- Name of file being parsed
last_value: ANY
-- Semantic value to be passed to the parser
eif_buffer: STRING
-- Buffer for lexial tokens
eif_lineno: INTEGER
-- Current line number
current_position: ET_POSITION is
-- Current position
-- (Create a new object at each call.)
do
!ET_FILE_POSITION! Result.make (filename, eif_lineno, 1)
ensure
current_position_not_void: Result /= Void
end
error_handler: ET_ERROR_HANDLER
-- Error handler
feature -- AST factory
new_identifier (a_text: STRING): ET_IDENTIFIER is
-- New identifier
require
a_text_not_void: a_text /= Void
do
!! Result.make (a_text, current_position)
ensure
identifier_not_void: Result /= Void
end
feature {NONE} -- Constants
Init_buffer_size: INTEGER is 256
-- Initial size for `eif_buffer'
invariant
filename_not_void: filename /= Void
eif_buffer_not_void: eif_buffer /= Void
error_handler_not_void: error_handler /= Void
end -- class ET_LACE_SCANNER_SKELETON
|