class EXPRESSION_WITH_COMMENT
Summary
Class invariant
Overview
creation features
exported features
For pretty and short:
expression: EXPRESSION
writable attribute
comment: COMMENT
writable attribute
the associated one.
specialize_in (type: TYPE): EXPRESSION_WITH_COMMENT
effective function
Specialize Current knowing that the corresponding source code was written in type.
specialize_thru (parent_type: TYPE, parent_edge: PARENT_EDGE, new_type: TYPE): EXPRESSION_WITH_COMMENT
effective function
Assuming that Current is already specialized in parent_type, now specialize Current for the new_type knowing that this source code is inherited thru parent_edge.
has_been_specialized: BOOLEAN
effective function
Used both for specialize_in and specialize_thru to indicate that we have all FEATURE_STAMPs ready for use and that FEATURE_NAMEs are no longer used (except for calls on non-current target who are available after specialize_2 -- step).
specialize_2 (type: TYPE): EXPRESSION_WITH_COMMENT
effective function
This specialize_2 step is applyed after specialize_in / specialize_thru.
resolve_in (type: TYPE): TYPE
effective function
This method may be called to solve the Current expression type knowing that the Current expression has_been_specialized for the type given as an argument.
collect (type: TYPE): TYPE
effective function
Collect Current to become actually true live code in type knowing that Current is already specialized in type.
adapt_for (type: TYPE): EXPRESSION_WITH_COMMENT
effective function
This function is called only once at the end of the compilation process (i.e. after collect and simplify).
declaration_type: TYPE
effective function
The static type one can deduce from the declaration written in source text.
is_writable: BOOLEAN
effective function
Is is something that one can find on the left-hand-side of the := operator ?
is_manifest_string: BOOLEAN
effective function
Is it a manifest string (i.e. a basic manifest string or some verbatim manifest string)?
is_void: BOOLEAN
effective function
Is it the built-in Void?
is_result: BOOLEAN
effective function
Is it the pseudo local variable Result ?
is_current: BOOLEAN
effective function
Is it a Current like expression (really written Current or some implicit not-written Current)?
is_implicit_current: BOOLEAN
effective function
Is it an implicit Current (i.e., not explicitely written)?
is_static: BOOLEAN
effective function
True if the expression has always the same static value regardless the context of the code.
mapping_c_target (type: TYPE, target_type: TYPE)
effective procedure
Produce C code in order to pass Current EXPRESSION as the target of some feature call.
mapping_c_arg (type: TYPE)
effective procedure
Produce C code in order to pass Current expression as an argument of the feature called.
safety_check (type: TYPE)
effective procedure
compile_to_c (type: TYPE)
effective procedure
For an INSTRUCTION, produce the corresponding C code.
compile_to_jvm (type: TYPE)
effective procedure
Produce Java byte code in order to push expression value on the jvm stack.
compile_target_to_jvm (type: TYPE)
effective procedure
Same as compile_to_jvm, but add class invariant check when needed.
jvm_branch_if_false (type: TYPE): INTEGER_32
effective function
Gives the program_counter to be resolved later.
jvm_branch_if_true (type: TYPE): INTEGER_32
effective function
Gives the program_counter to be resolved later.
use_current (type: TYPE): BOOLEAN
effective function
Is Current used?
side_effect_free (type: TYPE): BOOLEAN
effective function
True when the evaluation of Current has no side effect at all (i.e. no memory allocated, no modification in the _heap_ memory, no external code with possible side effect).
non_void_no_dispatch_type (type: TYPE): TYPE
effective function
A non Void Result indicates that Current cannot be Void and that Current drives exactely to a single possible dynamic TYPE.
simplify (type: TYPE): EXPRESSION
effective function
May return Current, Void or a simplified version of Current.
start_position: POSITION
effective function
Of the left-most character of Current.
extra_bracket_flag: BOOLEAN
effective function
True when we do have to add an extra pair of brackets if the Current expression is the target of a call.
pretty (indent_level: INTEGER_32)
effective procedure
bracketed_pretty (indent_level: INTEGER_32)
effective procedure
For pretty.
pretty_target (indent_level: INTEGER_32)
effective procedure
For pretty.
short (type: TYPE)
effective procedure
Produce the short command output in the given context type.
short_target (type: TYPE)
effective procedure
Produce the short command output in the given context type.
precedence: INTEGER_32
effective function
Handling of precedence (priority of expressions).
jvm_assign_creation (type: TYPE)
effective procedure
Basic assignment using value on top of stack.
jvm_assign (type: TYPE)
effective procedure
Basic assignment using value on top of stack.
effective procedure
Accept to be visited by the visitor.
is_default_value: BOOLEAN
frozen
effective function
True if Current represents Void, False , 0, or whatever is a default value.
written_declaration_type_mark: TYPE_MARK
effective function
This variant of declaration_type is used only to check the left-hand side of "?:=", "::=" or "?=".
static_simplify: EXPRESSION
effective function
This one is working completely out of context and is called directly by the parser only for some typical expressions.
base_class_written: CLASS_TEXT
frozen
effective function
The base class where this expression is written.
written_in: CLASS_NAME
frozen
effective function
The name of the base class where this expression is written.
is_an_acceptable_replacement (type: TYPE, other: EXPRESSION): BOOLEAN
frozen
effective function
Well, it is just for debug (see ensure).
standard_compile_target_to_jvm (type: TYPE)
frozen
effective procedure
bracketed_short (type: TYPE)
frozen
effective procedure
specialize_2_without_checks (type: TYPE): CODE
effective function
Perform specialize_2 without checking the validity (export violations, ...)