Доступні вирази — алгоритм розбору, що визначає для кожної точки програми набір виразів, що не мають бути переобчислені. Кажуть, що в цій точці ці вирази доступні. Щоб бути доступним в точці програми, операнди вирази не повинні бути змінені з часу зустрічі цього виразу до цієї точки.

Цей розбір є прикладом задачі аналізу потоку даних вперед. Набір доступних зберігається. Кожне твердження розбирається на питання чи не змінює воно значення операнда одного чи декількох доступних виразів. Отримуємо набір доступних виразів на завершенні кожного базового блоку, відомий як початок (англ. outset) в термінах аналізу потоку даних. Вираз доступний на старті базового блоку, якщо він доступний наприкінці кожного його попередника. Звідки ми можемо отримати набір виразів доступних на початку блока.

Розбір доступних виразів використовується в усуненні глобальних загальних виразів. Якщо вираз доступний в точці, немає потреби заново рахувати його.

Джерела ред.

  • Aho, Sethi & Ullman: Compilers - Principles, Techniques, and Tools Addison-Wesley 1986