29379

Основные функции и построение семантического анализатора программ

Доклад

Информатика, кибернетика и программирование

При работе семантических программ широко используется набор данных с организацией в виде стека. Операнды переписываются в выходную строку а операторы заносятся в стек. В зависимости от приоритета операторов при записи в стек оператор может вытолкнуть из стека другой оператор который последовательно записывается в выходную строку. Работа со стеком организуется так:1.

Английский

2013-08-21

43 KB

1 чел.

19)Основные функции и построение семантического анализатора программ.

Семантический анализ является центральной фазой трансляции, связывающей 2 ее логические части: анализ исходной программы и синтез объектной программы. На этапе семантического анализа обрабатываются программные конструкции, распознанные синтаксическим анализаторомОсновные функции семантического анализатора:
1. Заполнение таблиц имен. Таблица формируется на этапе лексического анализа, где в нее помещаются все уникальные имена, распознанные сканером. Во время семантического анализа для каждого имени заносятся все данные, полученные из текста программы (тип идентификатора, тип значений и т.д.).
2. Выделение неявно заданной информации. В представлении программ некоторые данные об элементах программы не указаны явно.
3. Обнаружение ошибок. Синтаксический анализ определяет корректность отдельных конструкций и программы в целом с точки зрения формальных правил используемого языка, но и здесь могут быть ошибки (не согласованы типы правой и левой частей оператора присваивания, несколько одинаковых меток и т.д.).
4. Выполнение некоторых операций программы: присваивание начальных значений; действия с константами; обработка директив компилятора.
5. Формирование внутренней формы программы. Часто используются такие формы, как семантическое дерево, польская запись, список тетрад.
Формирование внутренней формы исходной программы семантический анализатор (СА) осуществляет не для всей программы в целом, а по частям, последовательно для каждой распознанной синтаксической конструкции. Поэтому СА обычно состоит из ряда процедур, каждая из которых предназначена для обработки конструкций конкретного типа, и называемых семантическими программами. Взаимодействие семантических программ производится путем обмена данными через информационную таблицу (таблицу имен). Например, семантическая программа, обрабатывающая описания переменных и массивов, вносит их типы в таблицу имен, далее эта информация используется при работе семантических программ, анализирующих выражения и операторы присваивания.
При работе семантических программ широко используется набор данных с организацией в виде стека. Рассмотрим алгоритм преобразования выражения в польскую запись и список тетрад: алгоритм Дейкстра.

Входная строка считывается поэлементно слева направо. Операнды переписываются в выходную строку, а операторы заносятся в стек. В зависимости от приоритета операторов, при записи в стек оператор может вытолкнуть из стека другой оператор, который последовательно записывается в выходную строку. 
Работа со стеком организуется так:
1. Если анализируемый оператор имеет больший приоритет, чем оператор в вершине стека, то он записывается в стек, не выталкивая другого оператора. В противном случае из стека последовательно выбираются и записываются в выходную строку все операторы, имеющие больший или равный приоритет, а только затем анализируемый оператор записывается в стек.
2. Левая скобка любого типа всегда записывается в стек, не выталкивая ни одного оператора; правая скобка в стек не заносится, но выталкивает из стека все операторы до ближайшей левой скобки того же типа(пара левой и правой скобок “уничтожают” друг друга и в выходную строку не записываются).
3. После чтения входной строки в стеке могут остаться операторы, которые последовательно должны быть переписаны в выходную строку.
Выражение, представленное в польской записи, можно вычислить за 1 просмотр слева направо. В алгоритме вычисления выражений в польской записи стек используется для хранения операндов.
 Алгоритм включает следующие шаги:
1. Если считываемый символ является операндом, то его значение записывается в стек.
2. Если считываемый символ является бинарным оператором, то из стека извлекаются 2 верхних элемента, над ними выполняется соответствующая операция, и результат записывается в стек.
3. Если считываемый символ является унарным оператором, то из стека извлекается 1 верхний элемент, над ним выполняется соответствующая операция, и результат записывается в стек. 
4. Шаги 1─3 повторяются, пока не будут считаны все символы входной строки. Результат вычислений остается в стеке.
Это алгоритм применяется для формирования тетрадной формы программы. В нем в стек записываются не значения операндов, а их символьные обозначения.


 

А также другие работы, которые могут Вас заинтересовать

14991. Ұлы даланың астаналары 52.5 KB
  Ұлы даланың астаналары Дидарыңда Мәңгіліктің мұңы ұйыған Ұлы Дала... Керуендеп көшкен тұтас дәуірлер ол үшін қасқағымдық мезет қана. Қатпарлы тау аңырған оқшау төбелермен толқындап шексіздікке маңған ұлан жазық алапат кеңістік мұхитының шежіреестелігі де біртүрлі...
14992. Мұражай тәрбие өзегі 67.5 KB
  Мұражай тәрбие өзегі Ақселеу Сланұлы Сейдімбеков бұрыны Жезқазған қазіргі Қарағанды облысы Жаңаарқа ауданына қарасты Дружба совхозына 1942 жылы дүниеге келген. 1962 жылдан 1968 жылға дейін Киров атындағы Қазақ мемлекеттік университетінде оқып журналистика факульте...
14993. Шу өңірінің тарихын білеміз бе 58 KB
  Шу өңірінің тарихын білеміз бе Біздің білетініміз Шу тарихын зерттеп жүрген екі ғалым бар. Бірі тарих ғылымдарының докторы профессор Қожа Ахмет Ясауи атындағы Халықаралық қазақтүрік университетінің құрметті профессоры Әбу Насыр ӘлФараби атындағы Қазақ ұл...
14994. Web-бет дизайны, HTML 504 KB
  Webбет дизайны HTML Кіріспе Қазақстан Республикасының білім беру жүйесін ақпараттандыру еліміздің даму стратегиясының негізгі бағыттарының бірі себебі ХХІ ғасыр – білім беру жүйесін ақпараттандыру ғасыры. Информатика пәнінің орта білім беру жүйесіндегі ролі ...
14995. Интернет жүйесі 622.5 KB
  Интернет жүйесі Интернет туралы ұғым. Жиырмасыншы ғасырдың аяғында пайда болған Интернет қазір жер шарының әр түкпірін байланыстырып сан алуан адамдарды елдер мен құрылқтарды біріктіріп отыр. Интернет 1960 жылдары АҚШта дүниеге келдi.Оны соғыс бола қалған жағ...
14996. Информатиканы ойын–пән ортасында оқытуда қолданылатын ойын түрлері 214 KB
  Информатиканы ойын–пән ортасында оқытуда қолданылатын ойын түрлері АНДАТПА Ғылыми жобада өздігінен танымдылықты ойынпән ортасында дамыту оқушылардың қиялын зеінің қабылдауын логикалық ойлауын жетілдіруі туралы айтылған. Төменгі сыныптарда информатикан
14997. Информация және информатика 79 KB
  Информация және информатика 1.1. Информация Біз бәріміз бала кезімізден бастап информация алмасу процесіне қатысамыз. Кітап газет және журнал оқығанда радио тыңдап теледидар көргенде мұғаліммен атааналармен достарымызбен әңгімелескенде әртүрлі информаци...
14998. Ахмет Байтұрсынұлының шығармалары 55.5 KB
  Ахмет Байтұрсынұлының шығармалары Қалайда халықты ояту оның санасына жүрегіне сезіміне әсер ету жолдарын іздеген ақын айналып келгенде ұлы Абай тапқан соқпақ орыс әдебиеті үлгілерін пайдалану аударма жасау дәстүріне мойынсынады. Бұрынғы ескіертегі химия үлгіл...
14999. Абай жолы романындағы тарихи шындық эволюциясы 57.5 KB
  УДК 63.3 АБАЙ ЖОЛЫ РОМАНЫНДАҒЫ ТАРИХИ ШЫНДЫҚ ЭВОЛЮЦИЯСЫ Н.Қ.Сманова Б.Д.Тажикова Керімбай атындағы №12 орта мектептреусрстық орталығы Тараз қ. Абай эпопеясы творчестваның Тылсым сырына өмір мен өлеңнің өза...