В этом приложении для описания синтаксиса выражений Турбо Ассемблера, используется модифицированная форма Бекуса-Наура (BNF). Символ ::= описывает синтаксический результат. Далее во всех разделах многоточие (.) означает, что предшествующий элемент может быть повторен любое число раз. В данном приложении описываются также ключевые слова и их старшинство.
Лексическая грамматика
допустимая_строка ::= пропуск допустимая_строка знак_пунктуации допустимая_строка числовая_строка допустимая_строка идентификатор_строки допустимая_строка нуль
пропуск ::= символ_пробела пропуск символ_пробела
символ_пробела ::= все управляющие символы, символы > 128, " "
идентификатор_строки ::= идентификатор_символа идентификатор_строки_2
идентификатор_строки_2 ::= идентификатор_символа_2 идентификатор_строки_2 нуль
идентификатор_символа ::= $,%,_,?,символы алфавита
идентификатор_символа_2 ::= идентификатор_символов плюс цифры
числовая_строка ::= числ_строка стр_строка
числ_строка ::= цифры буквенно_цифровые_символы цифры"."цифры показатель_степени цифры показатель_степени ; Только в режиме MASM в директи- ; вах DD, DQ и DT
цифры ::= цифра цифры цифра
цифра ::= от 0 до 9
алфавитно-цифровые_символы ::= цифра буквенно_цифровые_символы буква буквенно_цифровые_символы нуль
буква ::= буквы алфавита
показатель_степени ::= Е+цифры Е-цифры Ецифры нуль
стр_строка ::= строка в двойных кавычках; кавычка, вводимая двумя кавычками
знак_пунктуации ::= любой символ, отличный от следующих: символ_пробела,идентификатор_символ,""",""" или цифры
Символ точки (.) трактуется различным образом в режиме MASM и в режиме Ideal. Этот символ не требуется указывать в числах с плавающей запятой в режиме MASM. Точка не может входить в состав символического имени в режиме Ideal. В режиме MASM с этого символа иногда начинаются символические имена, кроме того, знак пунктуации используется иногда в качестве селектора поля структуры.
Правила интерпретации точки (.):
В режиме Ideal точка всегда интерпретируется как знак пунктуации.
В режиме MASM точка трактуется как первый символ идентификатора в следующих случаях:
Когда она является первым символом в строке и в ряде некоторых других специальных случаев, например, в составе внешних (EXTRN) и общих (PUBLIC) символических имен, она присоединяется к следующему за ней символическому имени, если следующий за ней символ представляет собой идентификатор_символа_2, как он определен выше.
Если она не является первым символом в строке, или если результирующее имя идентификатора будет представлять собой определенное имя идентификатора, тогда точка присоединяется к началу следующего за ней идентификатора.
1 2 3 4
8 8 8
| |