Грамматика выражений в режиме MASM
Синтаксис выражений начинается как MASM_выражение.
MASM_выражение ::= выражение_1
м_выражение_1 ::= SHORT м_выражение_1 .TYPE м_выражение_1 SMALL м_выражение_1 (преобразование в 16-битовое смещение [только для процессора 386]) LARGE м_выражение_1 (преобразование в 32-битовое смещение [только для процессора 386]) м_выражение_2
м_выражение_2 ::= м_выражение_3 OR м_выражение_3. м_выражение_3 ХOR м_выражение_3. м_выражение_3
м_выражение_3 ::= м_выражение_4 AND м_выражение_4. м_выражение_4
м_выражение_4 ::= NOT м_выражение_4 м_выражение_5
м_выражение_5 ::= м_выражение_6 "EQ" м_выражение_6. м_выражение_6 "NE" м_выражение_6. м_выражение_6 "LT" м_выражение_6. м_выражение_6 "LE" м_выражение_6. м_выражение_6 "GT" м_выражение_6. м_выражение_6 "GE" м_выражение_6. м_выражение_6
м_выражение_6 ::= м_выражение_7 "+" м_выражение_7. м_выражение_7 "-" м_выражение_7. м_выражение_7
м_выражение_7 ::= м_выражение_8 "*" м_выражение_8. м_выражение_8 "/" м_выражение_8. м_выражение_8 "MOD" м_выражение_8. м_выражение_8 "SHR" м_выражение_8. м_выражение_8 "SHL" м_выражение_8. м_выражение_8
м_выражение_8 ::= + выражение_8 - выражение_8 выражение_12
м_выражение_10 ::= OFFSET указатель SEG указатель SIZE идентификатор LENGTH идентификатор WIDTH идентификатор MASK идентификатор THIS цел_тип идентификатор ( указатель ) [ указатель ]
м_выражение_10 ::= м_выражение_11 PTR м_выражение_10 м_выражение_11 OFFSET м_выражение_10 SEG м_выражение_10 LOW м_выражение_10 HIGH м_выражение_10 TYPE м_выражение_10 THIS м_выражение_10
м_выражение_11 ::= м_выражение_8 : м_выражение_8.
м_выражение_12 ::= м_выражение_13 [м_выражение_13.(подразумеваемое сложение, только если есть "[" или "(") м_выражение_13 (м_выражение_13.(подразумеваемое сложение, только если есть "[" или "(") м_выражение_13"."м_выражение_10
м_выражение_13 ::= LENGTH идентификатор SIZE идентификатор WIDTH идентификатор MASK идентификатор ( м_выражение_1 ) [ м_выражение_1 ] м_выражение_10
Грамматика выражений в режиме Ideal
Синтаксис начинается, как id_выражение.
id_выражение ::=
указатель
i_тип ::= UNKNOWN BYTE WORD DWORD FWORD QWORD PWORD TBYTE SHORT NEAR FAR PROC DATAPTR CODEPTR имя_структуры имя_таблицы имя_перечисления имя_записи TYPE указатель
указатель ::= SMALL указатель ; если 386 LARGE указатель ; если 386 i_тип PTR указатель i_тип LOW указатель i_тип HIGH указатель i_тип указатель указатель_2
указатель_2 ::= указатель_3.идентификатор (Операция выбора элемента структуры) указатель_3
указатель_3 ::= выражение:указатель_3 выражение
выражение ::= SYMTYPE выражение (Операция определения типа символическо- го имени) выражение_2
выражение_2 ::= выражение_3 OR выражение_3. выражение_3 ХOR выражение_3. выражение_3
выражение_3 ::= выражение_4 AND выражение_4. выражение_4
выражение_4 ::= NOT выражение_4 выражение_5
выражение_5 ::= выражение_6 ЕQ выражение_6. выражение_6 NE выражение_6. выражение_6 LT выражение_6. выражение_6 LE выражение_6. выражение_6 GT выражение_6. выражение_6 GE выражение_6. выражение_6
выражение_6 ::= выражение_7 + выражение_7. выражение_7 - выражение_7. выражение_7
выражение_7 ::= выражение_8 * выражение_8. выражение_8 / выражение_8. выражение_8 MOD выражение_8. выражение_8 SHR выражение_8. выражение_8 SHL выражение_8. выражение_8
выражение_8 +выражение_8 -выражение_8 выражение_9
выражение_9 HIGH выражение_9 LOW выражение_9 выражение_10
выражение_10 OFFSET указатель SEG указатель SIZE идентификатор LENGTH идентификатор WIDTH идентификатор MASK идентификатор THIS идентификатор идентификатор константа ( указатель ) [ указатель ] (Всегда означает "содержимое")
1 2 3 4
8 8 8
|