Коментарі в Cache
Євген Каратаєв
Коментарі
в Cache є. Це спеціальним чином зазначена програмістом
послідовність символів, яка не використовується компілятором. У них можна
писати різні корисні слова, які залишаться і які потім можна буде
прочитати, наприклад лайки. У коментарях можна писати будь-якою мовою.
Це загальновідомі факти. Тепер подивимося які саме коментарі підтримує
Cache і які у них є свої особливості.
Стандартний однорядковий коментар.
Це
однорядковий коментар, частина стандарту MUMPS, починається з символу; (точка
з комою) і продовжується до кінця рядка. Може починатися з будь-якого місця за
винятком рядковий константи, з першого символу рядка, і якщо перед ним
стоїть команда яка може мати аргументи але по тексту вони опущені, то між
командою і коментарем має бути два або більше пробілів. При компіляції
коду в об'єктний код ці коментарі не потрапляють. Через кілька незвичайного можна
відзначити:
Текст
коментарю в об'єктний код не потрапляє.
При
трансляції MAC Cache вставляє в перший рядок INT коду позначку про дату
трансляції.
Якщо
перед коментарем є команда, то в байт-код від коментарю нічого не
потрапляє, якщо немає команди або мітки, то потрапляє внутрішня команда байт-коду
«Порожня операція»
В
практичному застосуванні коментаря не рекомендується писати коментар
що займає весь рядок, так щоб перед ним не було команди або мітки - при
виконання коду витрачається час на виконання порожній операції.
Якщо
коментар починається з першого символу рядка в макрокоде, то в int коді
перед ним буде додана Втяжка. Так поступає, наприклад, Cache3.
Стандартний подвійний коментар
Прописується
також як стандартний, але починається з двох символів крапку з комою (;;).
Веде себе точно так само як стандартний, але рядок з коментарем включаючи
команди які йому передують включається в об'єктний код. Більш того, це
включення виконується найбільш оптимальним для виконання функції $ text чином.
У разі якщо функція запрошувала цей рядок, то рантайм звертається саме до
об'єктному коду, і лише потім шукає рядок у вихідному коді int. Всю рядок коду
можна розмістити в тілі об'єктного коду якщо в кінці рядка ставити два символи
;;. Цей коментар також входить в стандарт MUMPS.
При
вставці рядки коду в об'єктний код буде вироблено нормування імен команд
в якесь внутрішнє подання: імена команд наприклад можуть опинитися в
верхньому регістрі. Тому не варто очікувати, що в об'єктних коді буде точне
відповідність тому що написав програміст.
Макрокомментарій
Макрокомментарій
починається з символів #; і продовжується до кінця рядка. Він може починатися
тільки з початку рядка, перед ним не повинно бути ні команд і ярликів, він займає
весь рядок. Макрокомментарій видаляється препроцесором, і в int код взагалі не
потрапляє. Це дуже гарна заміна стандартному коментарю, якщо його потрібно
розташувати цілком на одному рядку. Цим макрокомментарій зручний. У силу
відсутності в стандарті MUMPS препроцесора цей коментар не входить до
стандарт.
До
особливості макрокомментаріев відноситься те, що транслятор int коду їх не
бачить, оскільки вони видаляються препроцесором. Це призводить до того, що при
отриманні повідомлення про помилку в коді номер рядка в int коді може відрізнятися
від номера рядка в mac коді. Цим макрокомментарій незручний.
Включення коментарів з інклудов
знаходяться
що включаються у файлах (inc) коментарі за замовчуванням у генерований код int
рутини не включаються. Але цього можна досягти використовуючи макродіректіви # show /
# noshow - перша призводить до включення коментарів з inc в int, другий - до
виключення.
Важко
представити в яких випадках це може знадобитися за винятком відстеження
порядку включення inc - при виконанні директив # define препроцесор Cache в
відміну від стандартних препроцесором не перевіряє чи був цей символ визначено
раніше.
Однорядковий
косою подвійний коментар
Починається
з двох символів// і продовжується до кінця рядка. Веде себе і виглядає так само
як такий самий коментар в C + + або JavaScript. Підтримується починаючи з
якоїсь версії Cache4. Поведінка повністю збігається із стандартним
коментарем, але код виглядає посовременнее. У стандарт MUMPS не входить.
Однорядковий
косою потрійний коментар
Починається
з трьох символів///і продовжується до кінця рядка. Веде себе також як
однорядковий подвійною косою за винятком використання в редакторі класів
Cache5. Якщо його використовувати перед методом або іншим яким-небудь елементом
класу, то він вважається введенням дескрипції до цього елементу і використовується і
зберігається згодом у визначенні класу. Якщо потрібно щоб у дескрипції
входило кілька рядків, потрібно кожну з них почати з такого коментарю. У
стандарт MUMPS не входить.
Багаторядковий
коментар
Починається
з символів/* і закінчується символами * /. Виглядає як звичайний сішний
коментар. Текст у середині коментарю повністю ігнорується транслятором.
Дуже зручний якщо потрібно разом закоментувати великий шматок коду але залишити
його в тексті рутини або для того щоб оформити багаторядкові пояснення. У
стандарт MUMPS не входить.
До
його незручностей відноситься те, що він хоча і ігнорується транслятором int коду,
але не ігнорується препроцесором - які є в ньому директиви продовжують
відпрацьовуватися препроцесором. Тому можна отримати визначення символу або
код обрамлений макроусловіямі виду # if/# endif попри те, що ці
директиви можуть перебувати всередині багаторядкового коментаря.
Список літератури
Для
підготовки даної роботи були використані матеріали з сайту http://karataev.nm.ru/