Комментарий используется для документирования и должен интерпретироваться синтаксическим анализатором языка EXPRESS как пустое пространство. Существуют две формы комментария - встроенный комментарий и заключительный комментарий. Обе формы комментария могут быть ассоциированы с идентифицированной конструкцией посредством метки комментария.
7.1.6.1 Встроенный комментарий
Пара символов (* обозначает начало встроенного комментария, а пара символов *) обозначает его окончание. Встроенный комментарий может располагаться между любыми двумя лексемами.
Любой символ из набора символов языка EXPRESS может присутствовать между началом и концом встроенного комментария, включая символ новой строки, поэтому встроенные комментарии могут содержать несколько физических строк.
Cинтаксис: | |||||||||||||||||||||||
145 embedded_remark = | ' (* ' [ remark_tag ] { (not_paren_star { not_paren_star } ) | | ||||||||||||||||||||||
lparen_then_not_lparen_star | (' * ' { ' * ' } ) | | |||||||||||||||||||||||
not_rparen_star_then_rparen | embedded_remark } ' *)'. | |||||||||||||||||||||||
147 remark_tag = | ' " ' remark_ref { ' . ' remark_ref } ' " ' . | ||||||||||||||||||||||
148 remark_ref = | attribute_ref | constant_ref | entity_ref | enumeration_ref | | ||||||||||||||||||||||
function_ref | parameter_ref | procedure_ref | rule_label_ref | | |||||||||||||||||||||||
rule_ref | schema_ref | subtype_constraint_ref | type_label_ref | | |||||||||||||||||||||||
type_ref | variable_ref . | |||||||||||||||||||||||
131 not_par en_star = | letter | digit | not_paren_star_special . | ||||||||||||||||||||||
128 letter = | ' a ' | ' b ' | ' c ' | ' d ' | ' e ' | ' f ' | ' g ' | ' h ' | ' i ' | ' j ' | ' k ' | ||||||||||||
' l ' | ' m ' | ' n ' | ' o ' | ' p ' | ' q ' | ' r ' | ' s ' | ' t ' | ' u ' | ' v ' | |||||||||||||
' w ' | ' x ' | ' y ' | ' z ' . | ||||||||||||||||||||
124 digit = | ' 0 ' | ' 1 ' | ' 2 ' | ' 3 ' | ' 4 ' | ' 5 ' | ' 6 ' | ' 7 ' | ' 8 ' | ' 9 ' . | |||||||||||||
133 not_paren_star_special = not_paren_star_quote_special | ' ' ' ' . | |||||||||||||||||||||||
132 not_paren_star_ quote_ special = | ' ! ' | ' " ' | ' # ' | ' $ ' | ' % ' | ' & ' | ' + ' | ' , ' | |||||||||||||||
' - ' | ' . ' | ' / ' | ' : ' | ' ; ' | ' < ' | ' = ' | ' > ' | ||||||||||||||||
' ? ' | ' @ ' | ' [ ' | ' \ ' | ' ] ' | ' ^ ' | ' _ ' | ' ' ' | ||||||||||||||||
' { ' | ' | ' | ' } ' | ' ~ ' . | ||||||||||||||||||||
129 lparen_then_not_lparen_star = ' ( ' { ' ( ' } not_lparen_star { not_lparen_star }. | |||||||||||||||||||||||
130 not_lparen_star = not_paren_star | ' ) ' . | |||||||||||||||||||||||
138 not_rparen_star_then_rparen = not_rparen_star { not_rparen_star } ' ) ' { ' ) ' }. | |||||||||||||||||||||||
135 not_rparen_star = not_paren_star | ' ( ' . | |||||||||||||||||||||||
Встроенные комментарии могут быть вложенными.
Примечание - При формировании вложенных комментариев необходимо обратить внимание на наличие согласованных пар символов, обозначающих начало и конец комментария.
Пример - Следующая строка демонстрирует пример встроенного комментария:
(* Символы ' (* ' начинают комментарий, а символы ' *) ' его заканчивают *)
7.1.6.2 Заключительный комментарий
Заключительный комментарий записывается в конце физической строки. Два последовательных дефиса "--" начинают заключительный комментарий, а первый встреченный символ "новая строка" заканчивает его.
Синтаксис: | |
149 tail_remark = | '--' [ remark_tag ] { \а | \s | \х9 | \хА | \xD } \n . |
147 remark_tag = | ' " ' remark_ref { ' . ' remark_ref } ' " ' . |
148 remark_ref = | attribute_ref | constant_ref | entity_ref | enumeration_ref | |
function_ref | parameter_ref | procedure_ref | rule_label_ref | | |
rule_ref | schema_ref | subtype_constraint_ref | type_label_ref | | |
type_ ref | variable_ ref . | |
Пример - -- это комментарий, заканчивающийся символом "новая строка".
7.1.6.3 Метка комментария
Комментарий может быть соотнесен с именованным элементом, то есть с элементом, обозначенным идентификатором, посредством размещения метки комментария в качестве первой последовательности символов. Метка комментария должна следовать непосредственно за парой символов, идентифицирующих комментарий. Сама метка комментария состоит из ссылки на идентификатор, определенный последовательностью символов, заключенной в кавычки.
Синтаксис: | |
147 remark_tag = | ' " ' remark_ref { ' . ' remark_ref } ' " ' . |
148 remark_ ref = | attribute ref | constant_ ref | entity_ ref | enumeration_ ref | |
function_ref | parameter_ref | procedure_ref | rule_label_ref | | |
rule_ref | schema_ref | subtype_constraint_ref | type_label_ref | | |
type_ref | variable_ref . | |
Правила и ограничения:
a) Элемент remark_ref должен соответствовать правилам видимости, определенным в 10.2.
b) В составной ссылке комментария правила видимости, определенные в 10.2, должны использоваться следующим образом: ссылка слева от символа '.' должна идентифицировать область видимости, в которой определена ссылка, расположенная справа от символа '.'.
Примечание - Составная ссылка комментария представляет собой ссылку комментария, в которой используется нотация с символом '.' (см. синтаксическое правило 147).
c) Если ссылка комментария не найдена в соответствии с указанными выше правилами видимости, то комментарий не должен ассоциироваться с каким-либо элементом.
d) Помеченный комментарий, содержащий другие помеченные комментарии (посредством вложенности), должен ассоциироваться целиком (включая вложенные комментарии) с указанным элементом.