Next: Combined Constant Pool, Previous: Encoding of BML in Class File Format, Up: Encoding of BML in Class File Format
The types expression_info
, formula_info
and
assignable_info
in attribute structures denote binary
representation of BML expressions, formulas and assignable clauses
respectively. They are represented as the prefix traversal sequence of
the abstract syntax tree of a given expression, formula or assignable
clause, with binary representation of operands.
The type
formula_info
is a subtype of expression_info
, in the sense
that all formulas are expressions, but not vice versa. To be a valid
formula, the root of the abstract syntax tree must be one of the following
constants:
TRUE = 0x00; FALSE = 0x01; AND = 0x02; OR = 0x03; IMPLIES = 0x04; NOT = 0x05; FORALL = 0x06; EXISTS = 0x07; EQ = 0x10; GRT = 0x11; LESS = 0x12; LESSEQ = 0x13; GRTEQ = 0x14; NOTEQ = 0x17; EQUIV = 0x08; NOTEQUIV = 0x09; FORALL_WITH_NAME = 0x0A; EXISTS_WITH_NAME = 0x0B; SINGLE_OCCURENCE = 0xBF; COND_EXPR = 0x64; // ?:
To be a valid expression, apart from the above constants, the root of the syntax tree can contain one of the following:
PLUS = 0x20; MINUS = 0x21; MULT = 0x22; DIV = 0x23; REM = 0x24; NEG = 0x25; BITWISEAND = 0x30; BITWISEOR = 0x31; BITWISEXOR = 0x32; SHL = 0x33; USHR = 0x34; SHR = 0x35; INT_LITERAL = 0x40; RESULT = 0x52; ARRAYLENGTH = 0x56; ARRAY_ACCESS = 0x61; FIELD_ACCESS = 0x63; // . THIS = 0x70; NULL = 0x72; FIELD_REF = 0x80; LOCAL_VARIABLE = 0x90; JAVA_TYPE = 0xC0; BOUND_VAR = 0xE0; EXPRESSION_ROOT = 0xBE; OLD = 0x99; TYPE_SMALL = 0x9A; NONNULLELEMENTS = 0x9B;
A root of a syntax tree representing an assignable clause (type
assignable_info
) must contain one of the following constants:
MODIFIES_EVERYTHING = 0xD0; MODIFIES_NOTHING = 0xD1; MODIFIES_IDENT = 0xD2; MODIFIES_DOT = 0xD3; MODIFIES_ARRAY = 0xD4; MODIFIES_INTERVAL = 0xD5; MODIFIES_SINGLE_INDEX = 0xD6; MODIFIES_STAR = 0xD7; MODIFIES_LIST = 0xDF;
[ JC 29/06/08 should be reviewed after code review of BMLlib]