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