VYCP (Conversion Procedure rule) and
VYCQ (Conversion Query rule).VHPR-2 (Parent rule).VGFG-3G (Formal Generic rule).VKCC-4 and VKCC-6G
(Creation Clause rule).VKIN-6G (Creation Instruction rule).VKEX-5G (Creation Expression rule).MKIN (Creation Instruction semantics).VYCP and VYCQ.--init to create ECF and Eiffel root
class files if missing.--compile to compile the Eiffel system.
This is the default unless --init or --run is specified.--run to run Eiffel system.
Do not compile unless the executable is not found..ecf is
assumed.@ operator symbol.VEVI (“Variable Initialization rule”).Shift+Alt+RightArrow to expand the selection to the
enclosing Eiffel construct (and Shift+Alt+LeftArrow to
shrink the selection). This operation can be repeated
several times.textDocument/documentHighlight request.textDocument/selectionRange request.old expressions. The following
code snippets attached exp as e and then old e.f and
across exp as i all i.f end were accepted even though
e and i are out of scope when evaluating the old
expressions on entry of the enclosing feature.VEVI.Call Hierarchy menu/panel with callers and callees in
case of features, and with clients and suppliers in case of classes.Type Hierarchy menu/panel with ancestor and descendant
classes.textDocument/prepareCallHierarchy,
callHierarchy/incomingCalls and callHierarchy/outgoingCalls
requests.textDocument/prepareTypeHierarchy,
typeHierarchy/supertypes and typeHierarchy/subtypes requests.<copy file="..." to_file="..."/> now creates missing
directories in the destination path.inline C routines.old expressions which are the
expanded targets of qualified calls.ROUTINE.set_rout_disp_final.dispose
from the GC.ANY.standard_is_equal atomic when the
target and the argument are the same object so that we don’t get
reflexive_equality: standard_is_equal (Current) invariant violations
in multi-threaded mode.SPECIAL.standard_is_equal:
capacity should not be taken into account.FUNCTION.item and PROCEDURE.call).eif_adopt/eif_access/eif_wean when the
Eiffel objects are not visible from the Boehm GC’s roots (e.g. when
using the EiffelVision GTK binding).external "C" routines are
eif_protected behind the scene (interoperability with ISE Eiffel).exception_trace in ECF files is
now False in finalize mode, and True otherwise (for a better
interoperability with ISE Eiffel).--library to specify the names of libraries
whose classes will be processed. Accept wildcards such as --library= str*
or library=@(structure|string). This option can be used several times
to specify several library names.html_ise_stylesheet to match the
stylesheet used in documentation generated by recent versions
of EiffelStudio (25.02).html_ise_stylesheet to display all
subclusters, even when the root cluster is declared as recursive.--no-force to indicate that existing
files should not be overwritten. Nothing shoud be done, silently
without asking.unused_class to get the list of unused classes,
and/or delete them.Go To Type Definition navigation (in the contextual menu).Ctrl+Space or as you type), with snippet
for the arguments of feature calls and the generic parameters of
a class type.Go To Feature Implementations navigation (Ctrl+F12
or in the contextual menu).Ctrl+T) to go to classes
and their features by name.KI_FILE.copy_file and KI_FILE_SYSTEM.copy_file now create missing
directories in the destination path.KL_ARGUMENTS.to_array.textDocument/declaration requests.textDocument/typeDefinition requests.textDocument/implementation requests.textDocument/completion and
completionItem/resolve requests.workspace/symbol and
workspaceSymbol/resolve requests.workspace/didChangeConfiguration notifications.sepatate exp as x do if x /= Void then x.f end end).sepatate exp1 as x do across exp2 as x loop x.f end end).DWTC
(“Definition: Target-converted form of a binary expression”).TYPE (e.g. TYPE [TYPE [TYPE [... TYPE [FOO] ...]]]) by
considering that the type of a TYPE object is TYPE [NONE]
and not TYPE [TYPE [...]].IDENTIFIED_CONTROLLER.Go To Definition navigation (in the contextual menu).textDocument/hover requests.workspace/didChangeWatchedFiles notifications.textDocument/definition requests.textDocument/documentSymbol requests.workspace/configuration requests.textDocument/publishDiagnostics requests.preparse_readonly_mode is True.executable_name to get the name of the executable
to be compiled using a given ECF file.ecf_pretty_print format generate a new ECF file when
provided with an Eiffel file instead of an ECF file as input.timeout to task <exec>.--thread to override the maximum
number of threads to be used by thread-capable tasks.<gecc>.STORABLE (independent store format only).
Does not support classes MISMATCH_CORRECTOR, CLASS_NAME_TRANSLATIONS,
nor the note tag "storable_version" yet..gobo.gec to accept an Eiffel file as argument instead of an
ECF file. An internal ECF template will be used in that case.--catcall with warning
to get the previous behavior (warning at compile time and caught
at runtime). All applications in the Gobo Eiffel package are compiled
using the option --catcall with error to guarantee at
compile time that they don’t contain any CAT-calls.PLATFORM.is_64_bits.C [macro <ev_gtk.h>] | "eif_argv.h" and
C Macro use <ev_gtk.h> used in ISE EiffelVision2.gecc instead.check_for_void_target
to get this behavior.inlining and inlining_size.generating_type
in class TYPE so that it returns an object of type
TYPE [NONE] instead of TYPE [detachable TYPE [G]]. This is
to avoid an infinite loop when computing the set of dynamic
types at compile time.--thread
to be -3 instead of 0 (“number of available CPUs -3” instead
of “number of available CPUs”).--thread
to be -3 instead of 0 (“number of available CPUs -3” instead
of “number of available CPUs”).VSCI, VSRP and VSRT.VSCN (“Class Name rule”).S7SC (“Semicolon Optionality rule”).M7CI (“Case Insensitivity principle”).--progress to show the names.--thread
to be -3 instead of 0 (“number of available CPUs -3” instead
of “number of available CPUs”).--thread
to be -3 instead of 0 (“number of available CPUs -3” instead
of “number of available CPUs”).gelint to accept an Eiffel file as argument instead of an
ECF file. An internal ECF template will be used in that case.--thread
to be -3 instead of 0 (“number of available CPUs -3” instead
of “number of available CPUs”).executable for the tasks <gec> and <ise> to be
able specify the filename (optionally with a pathname) of the Eiffel
compiler executable. The default is the executable which can be found
in the PATH.exit_code_variable to the task <getest>.<cat>, which is similar to <echo> except that it writes
the content of a file instead of a message.<getest>.line_generation, with
preprocessor statements #line now included in the generated C code.$GOBO/tool/gec/test/tool run gecop with the gec
executable just built (the executable under test).MUGC in the ECMA Eiffel standard where the actual arguments are first
evaluated and converted (first traversal in step 4) and then cloned
(second traversal in step 5). So the two traversals in steps 4 and
5 need to be merged into a single traversal.external "C : int | <file.h>" with no argument types in the signature.=, /=, ~ and /~) as well as in Kernel built-in
features (e.g. ANY.standard_copy or ANY.standard_is_equal).gecop multi-threaded. Each thread will run its own set of
validation tests independently of the others.--tool-executable to specify the
executable filename (optionally with a pathname) of the Eiffel tool
to be tested. The default is either gec, gelint, ec which can
be found in the PATH.MBAS, MBRE-1 and MVOL.
Added some comments about issues in the ECMA Eiffel standard
(Reattachment Semantics).MUGC.M1EE and M1IE exercising the semantics
of equality and inequality expressions.descendants to get the list of descendants classes
of a class or of a set of classes.$GOBO/tool/gelint/test/tool run gecop with the
gelint executable just built (the executable under test).3 in case of an Eiffel compilation error when
compiling the test harness.TS_MULTITHREADED_TEST_SUITE.ET_TUPLE_TYPE in case of labeled
tuples: should use ; instead of , as separator for actual generic
parameters (e.g. "TUPLE [a: A; b: B]" and not "TUPLE [a: A, b: B]").x.f where the type of x is
a formal generic parameter and f is a tuple label declared in several
constraints G -> {TUPLE [f: INTEGER], TUPLE [f: INTEGER]} because the
two constraints have the same base type and the labels are at the same
position.B [C] to B [D] when B is expanded and
C and D are not the same type. This is to avoid polymorphism when
the type of an entity is expanded, as implicitly implied in the rest of
the Eiffel language definition.is_obsolete_iteration.warning when converting ECF files
to newer versions of ECF.@i to access the iteration cursor of
an iteration whose iteration item is i, e.g. ∀ i: list ¦ i
= @i.index (1 is at the first position, 2 at the second position, etc.).-s is specified.STRING -> STRING_32 and
CHARACTER -> CHARACTER_32 when specified that way in the ECF
file. The default is still set to STRING -> STRING_8 and
CHARACTER -> CHARACTER_8 in the FreeELKS ECF file.generator_8_of_type and
generating_type_8_of_type in class ISE_RUNTIME.implicit_converts to show the list of implicit
conversions in the Eiffel classes, and explicit_converts to
make them explicit in the class text.EiffelVision2.STRING -> STRING_8 and STRING -> STRING_32.STRING -> STRING_8 and STRING -> STRING_32.<mapping old_name="..." new_name="..."/>) so that its behavior
matches what is implemented in ISE Eiffel. Note that gec and
gelint do not support class mappings at the cluster level, only
at the target level.attached NONE conforms to all other types,
even expanded types.alias "+" alias "+").∧, ∨, ¬, ⇒, ⊻, ∧…, ∨…).IDENTIFIED_ROUTINES:
eif_current_object_id and eif_is_object_id_of_current.∀, ∃, ⟳, ⟲ and ¦ (used
in symbolic forms of across loops) in free operators made up
of two or more symbols.inspect x when 1, 2 then "foo" when 3..5 then "bar" else "gobo" end).external "C++" routines..resx
specified in ECF with <external_resource> when compiling in
non .NET.∃ was printed instead of ~.none|current|error for warning option
obsolete_feature in ECF classes as introduced in ECF 1.21.0.
Note that gec does not take this option into account.VFAV rules to match those of ISE Eiffel. Added a rule
for multiple aliases with the same name.ET_AGENT_ERROR_HANDLER and ET_ECF_AGENT_ERROR_HANDLER
to be able to customize error reporting with agents (i.e. displaying
validity error messages on a GUI window instead of on the console).<external_linker>. The attribute
name is value and not location.<redirection>.
It was printing the file it was redirected to.gelex to generate smaller manifest arrays.{IMMUTABLE_STRING_8} "..."
and {IMMUTABLE_STRING_32} "...". More generally, IMMUTABLE_STRING_8
and IMMUTABLE_STRING_32 are considered as as sized variants of STRING
(like STRING_8 and STRING_32).infix "..." and prefix "..." syntax notations.
We should use alias "..." instead, as described in the ECMA standard.f alias "[]" alias "@" (i: INTEGER): T).∀ x: list ¦ x > 0
as syntactic sugar for across list is x all x > 0 end.∃ x: list ¦ x > 0
as syntactic sugar for across list is x some x > 0 end.⟳ x: list ¦ x.do_something ⟲ as syntactic sugar for
across list is x loop x.do_something end.none|warning|error for option warning
in ECF classes as introduced in ECF 1.21.0. Note that gec does not take
this option into account..l input file can contain Unicode characters. Unicode is supported
natively by default, with no increase in size and execution time when the
regular expressions only contain 8-bit characters. Alternatively, with the
option utf8 Unicode characters are internally converted to their UTF-8
byte sequence in the generated scanner. This can be useful when the file
to scan is already encoded with UTF-8, although the generated scanner will
be larger and not necessarily faster.}, which was wrongly interpreted as the end of the
Eiffel code for this semantic action..y input file
can contain Unicode characters. Characters in %token declarations can
also be Unicode characters or their escaped versions (e.g %token '\u03B2'
where 03B2 is the hexadecimal code for Greek character beta).--new_typing.}, which was wrongly interpreted as the end of the
Eiffel code for this semantic action.put_string and put_substring in class
KI_CHARACTER_OUTPUT_STREAM and its descendants so that the argument is
of type READABLE_STRING_8 instead of STRING_8. This is to follow the
same change in class IO_MEDIUM.\p{L}).
Unicode is supported natively, there is no internal conversion to UTF-8.
Unicode characters can be entered verbatim in the string (STRING_32) or
with their escaped form (e.g. \u03B2 or \x{03B2} where 03B2 is the
hexadecimal code for Greek character beta). Surrogate and invalid Unicode
characters produce a regular expression syntax error.LX_DFA_REGULAR_EXPRESSION and LX_DFA_WILDCARD when the
string to be matched contains a null character.YY_NEW_PARSER_SKELETON.\p{L}).
POSIX character set names (e.g [:alpha:]) recognize only ASCII characters
(code less than 128). Unicode is supported natively, there is no internal
conversion to UTF-8. Unicode characters can be entered verbatim in the
string (STRING_32) or with their escaped form (e.g. \u{03B2} or
\x{03B2} where 03B2 is the hexadecimal code for Greek character beta).
Surrogate and invalid Unicode characters produce a regular expression
syntax error.across ... is ....total_order_on_reals so that the assertions inherited from
COMPARABLE do not get violated with NaNs in classes REAL_32 and REAL_64.ieee_* built-in routines in classes REAL_32 and REAL_64.none|feature|all for setting dead_code_removal
in ECF classes as introduced in ECF 1.20.0. Note that gec does not take this
setting into account.total_order_on_reals from false to true in
ECF classes as per ECF 1.20.0.f [i][j]) in order to be compatible with ISE Eiffel’s parser.<gexace>, because the tool gexace is not supported anymore.ISE_RUNTIME.new_special_of_reference_instance_of
in generated C code.signature was not considered as optional."C++ struct ..." in external routines.msc as back-end C compiler when compiling
ISE EiffelTime. See here for
details.attached NONE is different from type detachable NONE in void-safe mode.--ise=major[.minor[.revision[.build]]] to specify the version
of ISE Eiffel whose semantics should be used during compilation.gec is ECF.VAPE-1 and VAPE-2.gec and
gelint when they are the same.VGFG and VGGC.VFAV.VGMC.gedoc is ECF.gelint is ECF.assert_* routines to be able to compare
some separate objects in SCOOP mode.gexace can still be found in
$GOBO/library/tools/src/xace, but the classes have been marked
as obsolete.AP_OPTION_WITH_PARAMETER, made the difference between
set_default_parameter which provides a default parameter value
be used when the current option is not specified on the command-line
(when the option is not mandatory), and set_parameter_optional
which makes it possible to specify the current option on the
command-line with no parameter (the parameter is optional, even
when the option is mandatory).eol in KI_TEXT_INPUT_STREAM
and KI_TEXT_OUTPUT_STREAM so that it can be implemented using the
bridge pattern in descendant classes.VHPR-2 (conforming inheritance from
a frozen class) is reported correctly.'''.
Apparently it is allowed by the ECMA standard.VAVE so that the loop variant expressions can
not only be of type INTEGER but also of one of its sized variants.like {A}.f or like a.b) appearing in the signature of a
redeclared feature is itself a qualified anchored type. In some valid
cases, a validity error VDRD-2 was emitted, indicating that the signature
of the redeclared feature did not conform to the one in the parent.T in attached {T} x) were marked as alive (types with possible
direct instances) as if they were creation types. This caused internal
errors during the C code generation for the types whose base class was
deferred.<concurrency> and
<void_safety> were not taking into account the support capability
value when the use value was not specified.library_root.separate T was considered attached even with the
option is_attached_by_default="false" in the ECF file.like Current be attached in
void-safe mode even with the option is_attached_by_default="false"
in the ECF file.reference before
class types anymore (e.g. reference INTEGER), only before the
declaration of a formal generic parameter (e.g. class C [reference G]).VDRS-4 error is reported when two features are
inherited under the same name (after possible renaming) from the same
parent and one is deferred and not the other.VAPE-1 when the address expression $g
appears in the precondition of f and g is not exported to all
classes to which f is exported.VEEN-2 validity error was erroneously reported
when the entity Result appears in the body of a function inline
agent which itself appears in the precondition of a feature.VAPE-2 when a creation call with the
creation procedure make appears in the precondition of f and
make is not exported for creation to all classes to which f
is exported.VAPE when an implicit conversion appears
in the precondition of f and the associated convert feature is not
exported (or exported for creation in case of a convert procedure)
to all classes to which f is exported.C [G -> H, H -> G] where G was erroneously considered as
not conforming to H. This issue did not exist in non-void-safety
mode.G was not assumed to
conform to detachable ANY when there was a cycle in the generic
constraints (e.g. [G -> H, H -> G]).VDRS-4
errors as of version 19.01.Precursor instruction in a function
or a Precursor expression in a procedure. An internal error was
reported.year.month.day.number_of_commits_on_that_day.target for the task <ise> and renamed the option
ace as ecf.target, thread, new_instance_types, silent, verbose,
no_benchmark, nested_benchmark, metrics for the task <gec> and
renamed the option ace as ecf.--new_instance_types as --new-instance-types
to comply with the argument library validity constraints.--no-benchmark, --nested-benchmark and –metrics.--cc to accept the following values:
no|script|make|gecc.gec multi-threaded, with the command-line option --thread.--target to select the name of the target
in the ECF file.--setting, --capability and --variable
to override the corresponding values in the ECF file.gec in a multi-threaded
environment.--thread to be
the number of CPUs available on the machine.--target to select the name of the target
in the ECF file.ecf_pretty_printer to pretty-print or convert ECF files,
and available_targets to get the list of targets in an ECF file and
to figure out whether a given target exists or not.--setting, --capability and --variable
to override the corresponding values in the ECF file.--define, superseded by --variable.--thread to be
the number of CPUs available on the machine.--target to select the name of the target
in the ECF file.--setting, --capability and --variable
to override the corresponding values in the ECF file.--define, superseded by --variable.Xace and gexace.item = v
are not violated when dealing with NaNs.item = v
are not violated when dealing with NaNs.{T}.f).class in the postcondition
instead of option: instance_free in the note clause.ET_CLASS.formal_parameter_type when executed in
multi-threaded mode.library_root.check instruction with no then
clause.UT_CSV_HANDLER.read_file can handle newlines embedded
in a cell surrounded by double-quotes.xpath and xslt have not been converted yet.STRING_32 manifest strings).volatile qualifier in the generated C code
when there is a rescue clause. It was declaring a variable
pointing to a volatile object instead of a volatile variable
pointing to an object.volatile in the generated C code.gedoc multi-threaded. It runs almost 3 times faster on
a 4-CPU machine.gelint multi-threaded. It runs almost 3 times faster on
a 4-CPU machine.detachable_less_than in class
KL_PART_COMPARATOR when comparing a non-void with a void.DS_HASH_TABLE.value can now be used in a multi-threaded
environment when no items are added or removed. Contrary
to item, there is no internal caching in value.ET_SYSTEM to ET_SYSTEM_PROCESSOR
to allow several system processor objects to work together
when analyzing the classes of an Eiffel system in a
multi-threaded environment.if b then exp1 else exp2 end)UT_CSV_HANDLER.read_row when a cell contains
an empty string between double-quotes: “”{FOO}.string_constant). A new
string object was created at each call, instead of returning
the same string object.--qat. Qualified anchored types
(types of the form like a.b or like {A}.b) are always
accepted.html_ise_stylesheet which mimics the HTML documentation
generated by the filter html-stylesheet of ISE EiffelStudio.gedoc.--qat. Qualified anchored types
(types of the form like a.b or like {A}.b) are always
accepted.gelint.append_pathname_to_string to class KI_FILE_SYSTEM.KL_BUFFERED_OUTPUT_FILE
and descendants).KL_PART_COMPARATOR
and KL_COMPARATOR in order to compile in void-safe mode with
ISE 17.05.across construct followed by an
object-test with the same local name. The object-test local name
was considered as an across local name.ET_CLASS.reset_after_interface_checked. The original arguments
were not reset correctly.ET_CLASS.reset_after_features_flattened or
ET_CLASS.reset_after_ancestors_built. The unfolded form was
erroneously discarded.if and unless to accept the values
“true” and “false”. This can be useful when automatically generating
geant build files. See bug#2657770.GOBO_BUILD_PREFIX and ISE compiler
will now compile to that directory. This allows you to compile to
a fast SSD or memdisk.
Not yet supported for the Gobo compiler.<ise>.<inherit> clause are now relative to
the directory containing the current eant file (and not relative
to the working directory where geant is currently running).fail_on_error to task <delete> (true
by default).array_size and inspect_actions to task <gelex>.array_size to task <geyacc>.$GOBO/tool/geant.$GOBO/library/common/config. geant will
automatically redirect inherited files which were located in
$GOBO/misc to the new location.--gelint to force the whole content of classes to be
checked (even features not reachable from the root creation procedure).FUNCTION.item or ROUTINE.call and whose closed argument was a manifest
tuple. See bug#2997112.IDENTIFIED_ROUTINES. Object addresses
were casted to INTEGER_32, which causes loss of information when
compiled on a 64-bit computer. See bug#2999209.gec --gelint .... Validity errors were
reported twice.$GOBO/tool/gec.reset_with_string and reset_with_file in YY_SCANNER.inspect instructions
instead of binary search with if instructions.$GOBO/tool/gelex.VTCT error
when the type of a local variable was a generic class type whose base class
did not exist.VIPR-3 error for inline agent of the once and external forms.
This is not in ECMA 367-2, but a restriction in ISE.$GOBO/tool/gelint.$GOBO/tool/gepp.build_suite in smaller routines in the generated test
harness so that the back-end C compiler (in particular MSVC under Windows)
can compile the generated C code for this routine in a reasonable amount
of time.$GOBO/tool/getest.syntax to support the corresponding option in ECF.$GOBO/tool/gexace.$GOBO/tool/gexslt.%token and %type clauses, in addition
to what was accepted so far, it is now possible to use like Current,
labeled tuples (e.g. TUPLE [i, j: INTEGER; s: STRING]) and type marks
such as expanded, reference, separate, attached, detachable,
! and ?. See bug#2618271.%token <EIFFEL_TYPE> ..., the generated parser
expects to find token values in the variable last_<eiffel_type>_value,
where all non-alphanumeric characters in the type name EIFFEL_TYPE
are replaced by underscores. It is now possible to customize the
name of this variable to last_<alias_name>_value by declaring
%token <EIFFEL_TYPE as alias_name> .... See bug#2621302.%type and %token
declarations in .y files.geyacc from .y files because
of a breaking change to make the internal stacks void-safe compliant.
Otherwise this will result in a compilation error.--old_typing.last_value attributes may be attached).--rescue-on-abort to generate a rescue clause in action
routines to catch abort exceptions. Useful when compiling in void-safe mode.--array-size and changed the default maximum size for
manifest arrays to be 200.$GOBO/tool/geyacc.$GOBO/library/argument.same_*_pathnames to class KI_FILE_SYSTEM.test in class KL_EQUALITY_TESTER and equal_objects in
class KL_ANY_ROUTINES now use the new ECMA construct ~ instead
of the combination same_type and then is_equal.is_true to class KL_AGENT_ROUTINES.read_to_string of file classes where the
hash code was not reset properly.KL_FILE.copy_file: now uses 8192 blocks, instead of 512.UC_STRING.replace_substring_all.$GOBO/library/kernel.LX_DFA_REGULAR_EXPRESSION where compile ("foo\$") was
setting has_dollar to True even though the dollar sign was escaped.pattern and is_case_insensitive in class LX_PATTERN_MATCHER.$GOBO/library/lexical.$GOBO/library/math.$GOBO/library/parse.$GOBO/library/pattern.pattern and is_case_insensitive.$GOBO/library/regexp.+ and
space where not taken into account. See bug#2768748.$GOBO/library/string.compress from DS_SPARSE_CONTAINER.
See bug#2831433.put and put_last in classes DS_SET and
DS_SPARSE_TABLE (i.e. the ancestors of DS_HASH_SET and DS_HASH_TABLE)
to be not is_full or else has (k) instead of just not is_full.do_until and do_if_until to DS_CONTAINER and its
descendants.has_void to DS_CELL and DS_PAIR.force_last_new and put_last_new of DS_HASH_TABLE.DS_HASH_TABLE when the calls to key_equality_tester in
search_position trigger the invariant which internally calls search_position.
But this routine was not written to be re-entrant.DS_TABLE so that the key can
be passed first and then the item to the agents.across Eiffel construct.$GOBO/library/structure.$GOBO/library/test.TS_ASSERTION_ROUTINES
to check whether an exception has been raised or not when
executing a given agent.DT_STOPWATCH in cluster stopwatch.$GOBO/library/time.note as a replacement of indexing.
See bug#2499770.FUNCTION [ANY, TUPLE, BOOLEAN]
instead of PREDICATE [ANY, TUPLE]. See bug#2667604.attached FOO or detachable BAR) and for object-tests
(e.g. attached {T} exp as x with {T} and x optional). See
bug#2682694.check instructions with a then branch.once keys in once routines.and then operators. It was already
implemented that way in preconditions.across instructions/expressions.alias "()".$(ECF_CONFIG_PATH) in ECF files.$GOBO/library/tools.$GOBO/library/utility.<tag/> instead of <tag><tag/>.$GOBO/library/xml,
$GOBO/library/xpath and $GOBO/library/xslt<se>.gcc as back-end C compiler.
See bug#1961462.~ and /~). Equality expressions
(= and /=) now use the semantics of object equality when the operands
are dynamically of expanded types.like a.b or like {A}.b).generator to the generated classes.
See feature request bug#1961466.getest.se and option --se.override_cluster can be specified
in Xace files.make_from_string_general and make_from_substring_general
in class UC_STRING.there_exists_with_key and for_all_with_key to class
DS_TABLE.library/other.
They had not been maintained for years, and it became a pain to use
them after the move from Ace files to ECF files in EiffelStudio.if and unless so that an
empty right/left side of the equals sign is treated as an empty string
which makes comparisons easier. Also leading/trailing white space for
the equals sign is not removed anymore to leave control to the script
developer. Note that this might cause a problem to scripts which made
use of the old behavior. These scripts need to be adapted.geant has a new attribute called exit_code_variable. It can be
used to capture (or ignore) the execution result of a <geant> call
and works exactly as in the exec task.<local name="varname"/>.<group> element.<replace> task.twin
and deep_twin work correctly.TUPLE [ANY] to an Agent
which expects a TUPLE [STRING] provided that the dynamic type of the
item of this tuple conforms to type STRING.SPECIAL.deep_twin when traversing objects of type SPECIAL.Result
as it was when the recursive call occurred, as specified in ECMA Eiffel.garbage_collector is now taken into account by gec
when set to boehm. This Xace option can be overridden by the
command-line option --gc when specified.gec compiles an application with the Boehm GC, it now generates
code that will let the GC trigger the feature dispose when objects
are reclaimed.GC_malloc_atomic when
possible.The implememtation of the rescue mechanism in C uses setjmp and
longjmp. The use of these two C functions requires that any local
variable modified between the call to setjmp and the call to longjmp
to be declared as volatile, otherwise its value may be lost after
calling longjmp if the C optimizer decided to implement it with
register. For more details, see:
http://msdn2.microsoft.com/en-us/library/xe7acxfb(VS.80).aspx
The generated C code has been adapted accordingly.
VTCT error, gelint/gec were reporting another
subsequent error, as shown in bug#1875262.VAPE error is reported when a feature is exported
to a class that has a syntax error or for which the ancestors could
not be computed.gelint in your own applications. For example what was known as
ET_UNIVERSE is now called ET_SYSTEM and ET_UNIVERSE is now an
ancestor of this class (and of the new class ET_LIBRARY).! and ? (part of void-safety mechanism) in the
parser. But do not check validity rules yet.~. ECMA Eiffel
uses the operator for object equality, and this new construct is
now implemented in ISE 6.2.assert_doubles_equal_with_tolerance and
assert_doubles_equal_with_strict_tolerance to TS_ASSERTION_ROUTINES.getest now expects test case classes to declare make_default inherited
from TS_TEST_CASE as creation procedure. That way there is no need to
generate intermediary classes (e.g. classes of the form XTEST_...
inheriting from TEST_...) anymore, and hence it is easier to call test
cases outside of the test framework.--ve and replaced it by --ge.--system=ise now generates ECF directly instead of going
through Ace which is then converted to ECF by EiffelStudio. This
allow Xace to support options that have been introduced in ECF. In
order to generate Ace files for ISE, use the new command-line option
--format=ace.--system=ge now generates an Xace file instead of an
Ace file. This makes it possible for example for gec to determine
whether the Boehm GC should be used through the Xace option
garbage_collector. Otherwise, with Ace files, this information has
to be passed to gec through the command-line option --gc=boehm.
In order to generate Ace files for gec, use the new command-line
option --format=ace.supplier_precondition,
automatic_backup, check_generic_creation_constraint, ecf_library,
enforce_unique_class_names, external_runtime, force_32bits,
full_class_checking, msil_classes_per_module, msil_culture,
msil_key_file_name, msil_use_optimized_precompile, namespace,
old_verbatim_strings. See $GOBO/doc/gexace/options.txt for more
details.inlining, inlining_size,
use_cluster_name_as_namespace, use_full_cluster_name_as_namespace.
See $GOBO/doc/gexace/options.txt for more details.suspend).
The last action before the call to suspend was executed twice.do_all, do_if, for_all, there_exists)
in class KL_DIRECTORY.prune_all_trailing to KL_STRING_ROUTINES.KL_EXCEPTIONS to make it clearer what is available
for all Eiffel compilers and what is not.KL_MEMORY and friends to provide a compiler independent way
to access garbage collection facilities.split in RX_PCRE_REGULAR_EXPRESSION
was not behaving correctly when the regexp could match empty strings.format-date(), format-time() and format-date-time().do_all, do_if, there_exists and for_all
up to class DS_CONTAINER.do_all_with_key and do_if_with_key to class
DS_TABLE.has_void to class DS_SEARCHABLE.fn:collection() for file URIs (incompatibly,
but as the previous implementation was not documented, it
almost certainly is not used). Wrote documentation.trace option.--gc command-line option.external "C++" routines.deep_twin.KL_EQUALITY_TESTER. It does not
use is_equal directly, but a protected version of it which is preceded
by a call to same_type.format ("$11.9f", 941.65899999999817)
would return 942.589999910 instead of 941.659000000. Regression tests
have been added, and this fix also pointed out a bug in one of the
test cases.do_all, do_all_with_index, do_if,
do_if_with_index, there_exists) to relevant classes.DS_MULTIARRAYED_SPARSE_SET and
DS_MULTIARRAYED_SPARSE_TABLE when capacity is zero.INTEGER_64 among other things. The
Gobo project tried not to use these constructs so far, but this is
becoming too constraining.${somevar} references.
This was especially the case for the attributes if and unless.<geant> now by default spawns a new geant process if
attribute file has been specified. It also has a new attribute
called fork to control whether a new process should be spawned
or not.force to task <xslt>. Use this attribute to
generate output that already exists and is newer than the input.<input> to get input values.<replace> to replace tokens or patterns in a file.gec) that is able to
compile everything in the Gobo package. However gec is not a
full-fledged Eiffel compiler yet. See the documentation for more
details.--default_test to specify whether the
feature default_test should be included in the generated test
cases.gexslt instead.KL_WINDOWS_FILE_SYSTEM now accepts both \ and / as directory
separator. This is the default. It can still accept only \
as directory separator if you use the make_backslash_only
creation procedure.KI_FILE_SYSTEM.absolute_parent_pathname when
the argument is both a root directory (i.e. has no parent) and an
absolute pathname. In that case return the argument itself instead
of absolute_root_directory as before.KL_(UNIX|WINDOWS)_FILE_SYSTEM.absolute_parent_pathname.
When the result was a root directory it was erroneously returning
absolute_root_directory. So if you were in C:\gobo and asked for
the absolute_parent_pathname of D:\foo you were getting C:\
instead of the expected D:\.KL_WINDOWS_FILE_SYSTEM.canonical_pathname which for the
input \\gobo\foo\.. was returning the invalid pathname \\gobo\
instead of \\gobo\foo. Likewise for c:\.., we were getting
c:\.. instead of c:\.sharename to KI_PATHNAME, so that UNC pathnames can be
split into \\hostname\sharename.New features have been added to a new ancestor of ISE’s STRING
class in order to support the classes STRING_32 and STRING_8
which have been introduced at ECMA. As a consequence, the
following features had to be renamed in class UC_STRING:
index_of_code -> index_of_item_code
The new names are not great, but they match the feature item_code.
make to MA_DECIMAL_TEXT_PARSER and
MA_DECIMAL_BCD_PARSER.MA_DECIMAL_CONSTANTS as MA_DECIMAL_CONTEXT_CONSTANTS and
MA_DECIMAL_MATH as MA_DECIMAL_CONSTANTS.MA_SHARED_DECIMAL_CONSTANTS.Maximum_integer_as_decimal and Minimum_integer_as_decimal
from MA_DECIMAL_CONTEXT_CONSTANTS to MA_DECIMAL_CONSTANTS and
renamed them as maximum_integer and minimum_integer.default_context from MA_DECIMAL_CONTEXT to MA_SHARED_DECIMAL_CONTEXT.MA_SHARED_DECIMAL_CONTEXT.set_shared_decimal_context
emphasizing the fact that it is best practice to call this routine
once and for all at the beginning of the application to avoid unexpected
behaviors.suspend (and its associated feature is_suspended)
to YY_PARSER and its descendant YY_PARSER_SKELETON to be able to
suspend the current parsing. The next call to parse will resume
parsing in the state where the parser was when it was suspended.
Note that a call to abort or accept will force parse to parse
from scratch.syntax_error in YY_PARSER_SKELETON
so that it returns false when nothing has been parsed yet.make_with_separators
in ST_SPLITTER.<echo> supports writing message to a file.<geant> and <precursor>
have been modified so that they are able to pass these arguments.obsolete mechanism.<exit>, <ise>, <se>, <ve> support capturing the return code
of the called process.<available> supports checking for availablity of directories.xsltproc and pass string parameters to it, you have to
surround those parameters with single quotes now.<ve> supports VE 5.0 with the attribute xace to specify
Xace files. Attribute esd is still supported when using VE 4.1.verbose which is set (to true) when
geant is run in verbose mode.verbose, abort, generation, compilation
and execution to task <getest>.hact.ve now generates Xace files for VE 5.0.
In order to generate ESD for VE 4.1 use ve41 instead.--pragma=[no]line in order for
the code generated for the semantic actions to contain or
not indication about the line number where it originally
appeared in the input description file.%option line with the -z option when two rules
were sharing the same semantic actions (with | separator).[ character
is now considered to be the open character of a character class
and reports an error if there is no matching ] character. It used
to be considered as a non-special character when there was no
matching ] character.YY_PARSER_SKELETON is
not a synonym of YY_OLD_PARSER_SKELETON anymore and can now be
used as a replacement of YY_NEW_PARSER_SKELETON. Also the default
command-line option is now --new_typing.--pragma=[no]line in order for
the code generated for the semantic actions to contain or
not indication about the line number where it originally
appeared in the input description file.--doc=(html|xml) to generate
documentation about the grammar in HTML or XML format.--verbose and -v to run
getest in verbose mode.getest prints the number of test cases
that have been generated.XM_DOCUMENT.process_to_events makes the tree an event source.XM_XMLNS_GENERATOR filter injects xmlns declarations
in event stream. It can be combined with a print filter.XM_FORMATTER is now a wrapper for the above and so
produces XML compliant output.XM_INDENT_PRETTY_PRINT_FILTER and XM_WHITESPACE_NORMALIZER
added to allow pretty indented output.XM_NAMESPACE_RESOLVER has new option to forward
xmlns attribute events (forward_xmlns).XM_DTD_CALLBACKS: on_doctype called first; on_dtd_end,
on_dtd_comment, on_dtd_processing_instruction added.XM_XMLID_VALIDATOR validates xml:id attributes.latin-1 mode.PUBLIC identifier in DOCTYPE.XM_PARSER.positions contains full info to locate errors
in external entities.UC_STRINGs as input.KL_PATHNAME.set_canonical.KL_INTEGER_ROUTINES.power, div and mod to KL_INTEGER_ROUTINES.log2 to KL_DOUBLE_ROUTINES.truncated_to_integer to KL_DOUBLE_ROUTINES because
this routine is not supported anymore in SE 2.2b1.KL_CLONABLE. This class should be used whenever
the corresponding objects need to be cloned. This is the
consequence of clone not being supported anymore in SE 2.2b1.
If you need to clone strings or arrays, use cloned_string
by inheriting from KL_IMPORTED_STRING_ROUTINES and cloned_array
by inheriting from KL_IMPORTED_ARRAY_ROUTINES. To a clone a
SPECIAL object, just call twin on it (does not work with
ISE 5.4, but works with ISE 5.5).KL_PLATFORM.Double_bits is not supported with SE 2.1 and 2.2b1
anymore. This is a consequence of DOUBLE being deprecated in
SmartEiffel and hence not supporting the required features.UC_STRING.infix "@" does not work as expected with SE 2.1. It
works well with the SE 2.2b and SE 1.0 though. This is the
consequence of the fact that STRING.infix "@" as been marked
as frozen in SE 2.2b1.MA_DECIMAL, which provides Decimal floating-point arithmetic,
with unrounded and integer arithmetic as a subset
(IEEE 754R + IEEE 854 + ANSI X3.274 + ECMA 334).DS_CELL items for
basic types, rather than accepting the _REF types).ST_SPLITTER: parse a string to and from lists of tokens.UT_URI path is parsed into components: path_items.UT_HOST_PORT: new class for TCP hostname and port number.<gepp> occurring when a nested <fileset>
element defined in the new format was specified.XM_EIFFEL_PARSER.disable_namespaces allows multiple
colons in names (strict XML compliance).like argument (will be removed from the
Eiffel language because it was a disguised way of providing
overloading in Eiffel) in features substring, to_lower,
to_upper, as_lower and as_upper in KL_STRING_ROUTINES.<fileset> uses a new format. The old format is
still working but an obsolete-message will be shown when applied.-t (--targets) to list targets
and their descriptions.<available>.<directoryset> to task <delete>.class and feature to task <getest>.<hact> now takes advantage of Halstenbach incremental
compiler.old_typing and new_typing to task <geyacc>.%token clauses. geyacc also generates the corresponding
attributes last_<type>_value instead of last_value
to be used to set the semantic values of tokens.
Transition path: If you still want to use the old typing
mechanism (now made obsolete), use geyacc with the
command-line option --old_typing or with geant’s attribute
old_typing in task <geyacc>. It is also recommended that you replace
class YY_PARSER_SKELETON by YY_OLD_PARSER_SKELETON in your
code. Alternatively you can now switch to the new typing
mechanism using geyacc’s --new_typing command-line option
or attribute new_typing in task <geyacc> in geant. In
that case you will have to use the non-generic class
YY_NEW_PARSER_SKELETON instead of YY_PARSER_SKELETON and
replace the calls to last_value by the corresponding
last_<type>_value in your code. In the next release
YY_PARSER_SKELETON will stop to be a synonym of
YY_OLD_PARSER_SKELETON and will be used as a replacement
of YY_NEW_PARSER_SKELETON. In the release after, the old
typing mechanism will not be supported anymore, classes
YY_OLD_PARSER_SKELETON and YY_NEW_PARSER_SKELETON will be
removed, and you will have to use YY_PARSER_SKELETON along
with the last_<type>_value attributes in your code.--class and --feature to pass
the regexps for tested class names and feature names as
argument instead of through the class and feature
fields of the config file (needed by Guy Fokou).assert_equal or
assert_not_equal fail (suggested by Berend de Boer).convert as convert_to_equivalence in class
LX_SYMBOL_CLASS because convert is a keyword in ETL3.iso-8859-1 encoding.root_node returns the real
root (XM_DOCUMENT). XM_NODE.level consequently offset by 1.XM_COMPOSITE now a read-only list. Modification routines
are in XM_ELEMENT and XM_DOCUMENT (typing is used to allow
only the correct node types to be added).XM_COMPOSITE descendants’ modification routines remove
a node from its previous parent if any. They also have
make_last creation routines that add the node to the
composite. make_last is faster than make, force_last.XM_NODE.parent_element added, root_node now XM_DOCUMENT.XM_NAMESPACE stricter contracts and uri invariant,
is_default replaced by not has_prefix, removed rather
than obsoleted due to SmartEiffel’s ANY using the name.XM_DOCUMENT.set_root_element now exported to ANY.XM_NAMESPACE_RESOLVER now issues empty strings (the default
namespace) rather than the parent element’s namespace for
on_attribute events in the case of unprefixed attributes.
(XML Names says unprefixed attributes have no namespace.)XM_ELEMENT.*attribute_by_name only look for unprefixed
attributes, for the same reason as above._by_qualified_name routines to tree nodes.XM_FORMATTER.last_string replaced by .last_output_stream.XM_NODE_TYPER.attribute obsoleted and renamed to xml_attribute
to avoid future keyword collision.YY_BUFFER.content is now of type KI_CHARACTER_BUFFER
instead of KL_CHARACTER_BUFFER (Berend de Boer).<ise> now takes advantage of ISE Eiffel incremental
compiler.close up to KI_INPUT_STREAM and
KI_OUTPUT_STREAM and added feature is_closable
(suggested by Franck Arnaud).hash_code in UC_STRING returns the same value
when same_string returns true.LX_NFA: Renamed infix "|{n,}|" as infix "|{*}|" and infix "|{n}|"
as infix "|{}|" because the former free operator is not valid in ETL3
anymore (and SE 1.0b6 already supports the new syntax). All the free
operators of this class have been made obsolete.DT_DATE: Renamed infix "&d" as infix "&@" because the former
free operator is not valid in ETL3 anymore (and SE 1.0b6 already
supports the new syntax).DT_TIME: Renamed infix "&t" as infix "&|" because the former
free operator is not valid in ETL3 anymore (and SE 1.0b6 already
supports the new syntax).namespace in named nodes is now an object, which
contains URI and prefix. It may be shared.*_by_name routines check the namespace is the same.is_first and is_last in XM_COMPOSITE for
checking position within parent.elements to XM_COMPOSITE.wipe_out to YY_BUFFER and YY_FILE_BUFFER,
which is useful in order to avoid invariant violation when
reusing the same input buffer for subsequent scanning.
(suggested by Emmanuel Stapf)%option directives of the input file
(reported by Sven Ehrke).-k and --tokens-file: name
of the file where the tokens class will be written
(reported by Sven Ehrke).$N type conversion routines, nor
conversion routines for the generic parameters of these
types. This caused Eiffel compilation errors when the
generic parameter was a formal generic parameter
(reported by Zoran Simic).%type section was INTEGER, the default rule was trying to
set $$ to Void instead of 0 (reported by Emmanuel Stapf).-g for testcase generation
only, -c for testcase compilation only, and -e for
testcase execution only (suggested by Glenn Maughan).--compile to pass the
Eiffel compilation command-line as argument instead of
through the compile field of the config file.-D and --define to define
variables which will be passed to the command running
the test cases.testgen directory is now created by getest if
it does not exist yet.--lines and -l in order to
generate empty lines whenever lines are ignored from
the input file. That way line numbers are preserved.
(suggested by Alexander Kogtenkov)include_path in the Ace file anymore in
order to use KL_STRING_BUFFER_ROUTINES with ISE Eiffel.
Use new routines introduced in class POINTER in ISE
Eiffel 4.5 instead.$GOBO/library/kernel/io with directory,
file and file-system functionalities.$GOBO/library/kernel/misc with miscellaneous
kernel classes.$GOBO/library/kernel/unicode with Unicode
support classes (based on the work from Majkel Kretschmar).force_last of DS_SPARSE_SET and
DS_SPARSE_TABLE when resizing the container.DS_LINEAR_CURSOR and
DS_BILINEAR_CURSOR which prevented descendants to
implement partial traversals or different traversal
strategies (reported by Berend de Boer and Einar
Karttunen).HASH_TABLE related to the new implementation
in ancestor class DS_SPARSE_TABLE (reported by Emmanuel
Bouyer).LINKED_LIST.cursor_back (reported by Paul Ford).date
and time in DATE_TIME and DATE_TIME_DURATION (reported
by Emmanuel Bouyer).set_storage to DT_DATE and DT_TIME.add_minutes of DT_DATE_TIME
(reported by Glenn Maughan).set_from_epoch_days of DT_DATE
when the resulting date in 1 January 1600 (reported by
Emmanuel Bouyer).include_path in the Ace file anymore in
order to use DT_SYSTEM_CLOCK with ISE Eiffel.DT_UTC_SYSTEM_CLOCK.DT_DATE_TIME.make_from_epoch.$GOBO/library/utility/command cluster to
$GOBO/library/pattern/command and change class
name prefix from UT to DP.exit_code to class DP_SHELL_COMMAND.geant
and gexace instead of Makefile files (which were not portable
across platforms).geyacc now generates the routine token_name along
with the token codes to make the debugging messages
more human-readable (suggested by Andreas Leitner).read_token in classes YY_COMPRESSED_SCANNER_SKELETON,
YY_INTERACTIVE_SCANNER_SKELETON and YY_FULL_SCANNER_SKELETON.
One need to compile the system with debug ("GELEX")
enabled. The routine print_last_token can be redefined
in descendant classes to print more debugging information.
In particular, the routine token_name generated by geyacc
can be used to make the debugging output more human-readable.
(suggested by Andreas Leitner)make_default to
most containers. In resizable containers make_default
is equivalent to make (default_capacity) where
default_capacity is a constant (10) defined in class
DS_RESIZABLE (suggested by Franck Arnaud).DS_SORTER and descendant classes now use DS_COMPARATOR
as comparison criterion (suggested by members of the
SmallEiffel mailing list).DS_TOPOLOGICAL_SORTER to sort partially
ordered items.DS_SET and descendant classes such as DS_HASH_SET
and DS_MULTIARRAYED_HASH_SET.DS_HASH_TABLE: added creation routine make_map in
order to compare keys with = instead of equal.DS_HASH_TABLE: added features remove_found_item,
found_key and force_last.DS_MULTIARRAYED_HASH_TABLE with the same
interface as DS_HASH_TABLE but implemented with a
sequence of fixed size arrays instead of a single array.
This might be useful for hash tables containing a very
large number of items.DS_LINKED_LIST.delete (reported by Emmanuel
Bouyer).QUEUE.{force, put, extend}: removed erroneous
postcondition item_pushed (reported by Emmanuel Bouyer).$GOBO/library/structure/base to
$GOBO/library/structure/other/EiffelBase.$GOBO/library/structure/cursor.loadpath.se files which caused
problems on AmigaDOS (suggested by Thomas Aglassinger).Makefile files in various directories."<=" or "..")
in place of identifiers (e.g. LE or DOTDOT) in grammar
rules (suggested by Berend de Boer).%type declarations.default_action to YY_SCANNER
when default rule is matched (suggested by David Massart).pre_action and post_action, called when
%option pre-action and %option post-action are specified
(suggested by Alexander Kogtenkov).pre_eof_action and post_eof_action, called when
%option pre-eof-action and %option post-eof-action are
specified.%option line to generate code for line and column
counting (suggested by Alexander Kogtenkov).%option position to generate code for character
counting since the beginning of the input source.DS_TRAVERSABLE: removed postcondition from routine
valid_cursor and made internal_cursor deferred
(suggested by Andreas Leitner).DS_SEARCHABLE: added features same_items and
same_equality_tester.DS_ARRAYED_LIST, DS_ARRAYED_STACK: got rid of garbage
(i.e. old items at indexes count+1..capacity) in
removal features.DS_TABLE, DS_SPARSE_TABLE, DS_HASH_TABLE: added
feature put_new.DS_SPARSE_TABLE, DS_HASH_TABLE: added feature
replace_found_item.DS_SPARSE_TABLE, DS_HASH_TABLE: new optimized
implementation (requested by Jacques Bouchard).DS_SPARSE_TABLE: added feature key; optimization
of feature force (avoid unnecessary resizing).HASH_TABLE: optimization of features put and
force (avoid unnecessary resizing).DS_SORTER: Added features reverse_sort and
reverse_sorted.KL_DIRECTORY to allow Eiffel compiler
portable directory access.append_decimal_integer from
class UT_INTEGER_FORMATTER when dealing with negative
values.test directory as a starting point for
a test suite.put_right,
have been renamed with the _cursor suffix, as in
put_right_cursor. The original feature names have
been reused by the internal traversal interface, e.g.
put_right inserts an item to the right of the
internal cursor position.a_cursor.is_valid anymore.DS_LINEAR_CURSOR does not inherit from DS_INDEXED_CURSOR
anymore.DS_QUEUE and DS_LINKED_QUEUE.geyacc.geyacc, $$ entities are now initialized to their
default Eiffel values at the beginning of semantic
actions and the default for missing actions is {}
(it used to be {$$ := $1} as in yacc and Bison).geyacc when $N in a semantic
action does not match with a symbol in the rule.geyacc verbose mode (option -v).clear_all from YY_PARSER_SKELETON clears
internal stacks by default (call to clear_stacks).$GOBO/library/kernel:
STRING_BUFFER and FIXED_ARRAY (array with lower
bound equal to zero). These two types are used
instead of STRING and ARRAY in gelex and geyacc
skeleton classes for optimization purposes.
STRING_BUFFER maps either to SPECIAL [CHARACTER]
or STRING, and FIXED_ARRAY [G] maps either to
SPECIAL [G] or ARRAY [G] depending on the Eiffel
compiler used. Only ISE Eiffel port has been
optimized so far. SmallEiffel port can be optimized
as well using FAST_ARRAY [G] or NATIVE_ARRAY [G].Empty_buffer, append_text_to_string
and append_text_substring_to_string to YY_SCANNER.set_start_condition
in class YY_SCANNER.unread_character
results in too much text being pushed back (it was
raising a run-time error in previous releases).-x to gelex and geyacc
to allow the generation of semantic actions in
separate routines.-z to gelex to force the
generated code to use an inspect instruction to
find out which action to execute. The default is to
use binary-search implemented with if instructions.$GOBO/example/parse/eiffel/eiffel_parser.y.geyacc has been totally rewritten in Eiffel.output_file by procedure
output in class YY_SCANNER to avoid unnecessary
console creation in Windows mode with Visual Eiffel.gelex in “equivalence class” mode when
dealing with regular expressions of the form x{4}.gelex when a rule cannot be
matched and when the default rule can be matched
despite the %option nodefault or -s option.KL_SHARED_*_ROUTINES as
KL_IMPORTED_*_ROUTINES. (The old class names are
still temporarily valid using the classes in cluster
$GOBO/library/kernel/obsolete.)gepp now supports #include "filename" instructions.DS_HASH_TABLE is now
constrained to HASHABLE (HASHABLE was not part of
SmallEiffel in previous releases).error has been added to the Gobo Eiffel
Utility Library to support a flexible error
reporting mechanism.gelex, with warnings for dangerous trailing
contexts of form such as x*/xz*.gelex.Copyright (c) 1997-2025, Eric Bezault and others
mailto:ericb@gobosoft.com
https://www.gobosoft.com