Спец часть (часть 2) (3 поток) (2015) (by Кибитова) (1161602), страница 27
Текст из файла (страница 27)
БолееБолее подробноподробнонаиболеевнутреннеепредставлениепредставлениепрограммпрограммв вкомпиляторахкомпиляторахрассматриваетсярассматриваетсяввразделеразделе3.3.33.3.3иивнутреннеевпособии“Формальныеграмматикииязыки.Элементытеориитрансляции”.в пособии “Формальные грамматики и языки. Элементы теории трансляции”.Фазыоптимизацииоптимизациипрограмм.программ.ОптимизацияОптимизация––важнейшаяважнейшаязадачазадачакомпилятора.компилятора.Фазыразделители). Ключевые слова распознаются явным выделением непосредственно изтекста, либо сначала выделяется идентификатор, а затем делается проверка напринадлежность его множеству ключевых слов.Если выделенная лексема является ограничителем, то этот ограничитель (точнее,некоторый его признак) выдается как результат лексического анализа. Если выделеннаялексема является ключевым словом, то выдается признак соответствующего ключевогослова.
Если выделенная лексема является идентификатором - выдается признакидентификатора,а сам идентификаторсохраняетсяотдельно.Наконец, если выделеннаяЭлементы теории формальныхязыков и грамматик/ Основныепонятия и определениялексема принадлежит какому-либо из других классов лексем (например, лексема Автомат с магазинной (внешней) памятью (МП-автомат). В отличие от ЛОА, головканеможетизменятьвходноесловоинеможетсдвигатьсявлево;имеетсядопредставляет собой число, строку и т.д.), то выдается признак соответствующего класса, аполнительнаябесконечнаяпамять(магазин,стек),соответствующегоработающаяпо дисциплинепредставляетсобойчисло,строкуиит.д.),признаккласса,представляетсобойчисло,строкут.д.),тотовыдаетсявыдаетсяилипризнаксоответствующегокласса,а азначениелексемысохраняетсяотдельно.LIFO.
Определяет контекстно-свободные языки.значениесохраняетсяотдельно.значениелексемылексемысохраняетсяотдельно.Конечныйавтомат(КА).Отличаетсяот МП-автоматаотсутствиеммагазина.Лексический анализатор может бытькак самостоятельнойфазойтрансляции,так иОпре- деляетрегулярныеязыки.Лексическийанализаторможетбыть как самостоятельной фазой трансляции, так иЛексический анализаторможеткак самостоятельнойтрансляции,так3.1,и а)подпрограммой,работающейпобытьпринципу"дай лексему".
Вфазойпервомслучае (рис.подпрограммой,работающейпопринципу"дайлексему".Впервомслучае(рис.3.1,Основнойспособреализациимеханизмапорождения—использованиепорождающихподпрограммой,работающейпринципулексему".В первом(рис.3.1,а)а)выходоманализатораявляетсяпофайллексем,"дайво втором- (рис.3.1., б)случаелексемавыдаетсяграмматик,которыеиногданазываютграмматикамиХомского.Наизучениипорождающихвыходоманализатораявляетсяфайлво- -(рис.выходоманализатораявляетсяфайллексем,лексем,вовторомвтором(рис.3.1.,3.1.,б)б)лексемалексемавыдаетсяприкаждомобращениик анализатору(при этом,какправило,признакклассавыдаетсялексемыграмматик мы и остановимся подробно, и именно этот способ описания языков чаще всегоприкаждомобращенииканализатору(приэтом,какправило,признакклассалексемыприкаждомобращениик анализатору(при этом, какправило,классалексемывозвращаетсякак результатфункции "лексическийанализатор",признака значениелексемыбудемиспользоватьв дальнейшем.возвращаетсякакрезультатфункции"лексическийанализатор",азначениелексемывозвращаетсякакглобальнуюрезультатфункции"лексическийанализатор",а значениелексемыпередаетсячерезпеременную).С точкизренияобработкизначенийлексем,Отметим,чтоне каждыйформальныйязыкможнозадатьс помощьюконечногоопипередаетсячерезглобальнуюпеременную).Сточкизренияобработкизначенийлексем,передаетсячерез глобальнуюпеременную).С точкизренияобработкизначенийлексем,сания.
Действительно,описаниеможнорассматриватькакцепочкуприв некоторомрасшианализаторможетлибосамопростовыдаватьзначениекаждойлексемы,этом построениеренномалфавите.Следовательно,множествоописанийязыковсчётно,притаккак построениемножествоанализаторможетлибопростозначениелексемы,этоманализаторможетлибопростовыдаватьвыдаватьзначениекаждойлексемы,приэтомпостроениетаблицобъектов(идентификаторов,строк,чиселикаждойт.д.)переноситсянаболеепоздниевсехцепочеквзаданномалфавитесчётно.КаждыйформальныйязыквалфавитеV являетсятаблицобъектов(идентификаторов,строк,чиселит.д.)переноситсянаболеепоздниетаблицобъектов(идентификаторов,строк,чисели т.д.)объектов.переноситсяна болеепоздние*фазы,либоон можетсамостоятельнотаблицыВ этомв качествеподмножествомсчётногомножества Vстроить.
Из теориимножеств известно,чтослучаемножествовсехфазы,либоонможетсамостоятельностроитьтаблицыобъектов.Вэтомслучаевфазы,либоонможетсамостоятельностроитьтаблицыобъектов.Вэтомслучаевкачествекачествезначениялексемывыдаетсяуказательна входв соответствующуютаблицу.подмножествсчётногомножестваявляетсянесчётным.Таким образом,мощность множествазначениялексемывыдаетсявходтаблицу.формальныхязыковбольшеуказательмощностинамножестваконечных описанийи, следовательно, незначениялексемывыдаетсяуказательнавходввсоответствующуюсоответствующуютаблицу. каждыйязык представим в виде конечногоописания. конечным автоматом.
Однако,Работалексическогоанализаторазадается некоторымРаботаанализаторазадаетсянекоторымконечнымавтоматом.Однако,Работалексическоголексическогоанализаторазадаетсянекоторымконечнымавтоматом.Однако,непосредственноеописаниеконечногоавтоматанеудобнос практическойточкизрения.Определение:декартовымпроизведениемABмножествAиBназываетсямноженепосредственноеописаниеконечногоавтоматанеудобноспрактическойточкизрения.непосредственноеописаниеконечногоавтоматанеудобноспрактическойточкиПоэтому для задания лексического анализатора, как правило, используется либо зрения.ство { (a, b)задания| a A, bлексическогоB }.Поэтомуанализатора,какПоэтомудлядлязадания лексическогоанализатора,какправило,правило,используетсяиспользуетсялиболиборегулярноевыражение,либо праволинейнаяграмматика. регулярноевыражение,либограмматика.регулярноевыражение,либоправолинейнаяправолинейнаяграмматика.Определение:порождающаяграмматикаG — это четверка T, N, P, S , гдеВсе три формализма(конечныхавтоматов,регулярныхвыраженийиправолинейныхT — алфавиттерминальныхсимволов( терминалов);Всетриформализма(конечныхавтоматов,регулярныхвыраженийиправолинейныхВсе три формализма(конечныхвыразительнуюавтоматов, регулярныхвыраженийиправолинейныхграмматик)имеютодинаковуюмощность.В частности,по регулярномуNимеют— алфавитнетерминальныхсимволовмощность.(нетерминалов),T N по ;регулярномуграмматик)одинаковуювыразительнуюВчастности,грамматик)имеютодинаковуювыразительнуюмощность.Вчастности,по регулярномувыражению или праволинейнойграмматике можно сконструироватьконечныйавтомат,*P—конечноеподмножествомножества(TN)(TN);элемент( , автомат,)автомат,множевыражениюилиправолинейнойграмматикеможносконструироватьконечныйвыражениюилиправолинейнойграмматикеможносконструироватьконечныйраспознающийтотже язык.
правилом вывода и записывается в виде → ; называется лестваPназываетсяраспознающийтотраспознающийтотжежеязык.язык.вой частьюправила,— правой частью; левая часть любого правила из P обязанаСинтаксическийанализсодержать хотя бы один нетерминал;СинтаксическийСинтаксическийанализанализS — начальный символ (цель) грамматики, S N.Синтаксическийанализ — процесс сопоставления линейной последовательности лексемСинтаксическийанализ—сопоставлениялинейнойпоследовательностилексемСинтаксическийанализ—процесспроцесссопоставлениялинейнойпоследовательностилексемДля записиправилвыводаодинаковымилевыми(слов,токенов)естественногоилисформальногоязыкасчастямиего формальнойграмматикой.(слов,естественногоилиформальногоязыкас сегоформальнойграмматикой.(слов,токенов)токенов)естественногоили→формальногоязыкаформальнойРезультатомобычноявляется дереводерево).
грамматикой.→ 2(синтаксическое...→ его1разбораnРезультатомРезультатомобычнообычноявляетсяявляетсядереводереворазбораразбора(синтаксическое(синтаксическоедерево).дерево).будем пользоваться сокращенной записьюВ ходе синтаксического анализа исходный текст преобразуется в структуру данных,ВВходеанализаисходныйпреобразуетсяввструктуру→ текст| 2 |...|ходесинтаксическогосинтаксическогоанализаисходныйпреобразуетсяструктуруданных,данных,1текстn. структуруобычно— в дерево, котороеотражаетсинтаксическуювходнойобычно—вдерево,котороеотражаетсинтаксическуюструктурувходнойобычно Каждое— в дерево,котороесинтаксическуюструктурувходной2, ..., n)отражаетбудем называтьальтернативойправилавывода из цепочки .последовательностиподходитдля дальнейшейобработки.i (i и1,хорошопоследовательностипоследовательностииихорошохорошоподходитподходитдлядлядальнейшейдальнейшейобработки.обработки.
Примерграмматики: Как правило,результатом синтаксического анализа является синтаксическое строениеКакправило,результатомсинтаксическогоанализасинтаксическоеКакправило,результатомсинтаксическогоанализаявляетсясинтаксическоестроениеГрамматиканазываетсяправолинейной,если являетсяонасодержиттолько строениеправилапредложения,представленноедеревазависимостей,Gexample{0, 1}, {A, S}, либоP, S ,в виде гдеP состоитиз правил:либо в виде деревапредложения,представленноелибоввидедеревазависимостей,либоввидевидаА→а,А→аВ.предложения, либопредставленноелибо в видедеревазависимостей,либов видедеревадеревасоставляющих,в виде некоторогосочетанияпервогои второгоспособовсоставляющих,либоввиденекоторогосочетанияпервогоивторогоспособовсоставляющих, либо в виде некоторого сочетания первого и второго способовпредставления.представления.представления.МТ.
Однако до сих—порпродукцииоткрыт вопрос,существует лидля любого ЛОА начинаяэквивалентныйему детерминироНисходящийпарсерграмматикираскрываются,со стартовогованный ЛОА.Нисходящийпарсер—продукцииграмматикираскрываются,начинаясостартовогоНисходящийпарсер— продукциираскрываются,начиная со стартовогосимвола,до получениятребуемой грамматикипоследовательноститокенов.символа,дополучениятребуемойпоследовательноститокенов.символа, до получения требуемой последовательности токенов.5Метод рекурсивного спускаМетодМетодрекурсивногорекурсивногоспускаспускатаблицобъектов(идентификаторов,строк,строк,чиселчисели т.д.)ипереноситсяна болеепоздниетаблицобъектов(идентификаторов,т.д.) переноситсянаболеепоздниелексическиеединицыили элементытекстапрограммы,обладающиесмысломв рамкахнепосредственноеописаниеконечногоавтоматанеудобноспрактическойточкизрения.фазы,либоонможетсамостоятельностроитьтаблицыобъектов.Вэтомслучаев качествефазы,данноголибоонможетсамостоятельностроитьтаблицыобъектов.Вэтомслучаевкачествефазы, либоон можетсамостоятельнотаблицы объектов.В этомявляютсяслучае в качествеязыка).В обычныхязыках строитьпрограммированиялексемамичислаПоэтомудлявыдаетсязадания лексическогоанализатора,как правило,используетсялибозначениялексемыуказательна входв соответствующуютаблицу.значениялексемыуказательна входсоответствующуютаблицу.(десятичныецелые,выдаетсявещественные),идентификаторы,служебныеслова, разделители.значениялексемывыдаетсяуказательна ввходв соответствующуютаблицу.регулярное выражение, либо праволинейная грамматика.Задачей лексического анализатора является замена разнообразных элементов текстаРаботалексическогоанализаторазадаетсянекоторымконечнымавтоматом.Однако,Работалексическогоанализаторазадаетсянекоторымконечнымавтоматом.Однако,Работалексическогоанализаторазадаетсянекоторымконечнымавтоматом.Однако,стандартновыглядящимилексемами,которыевдальнейшембудетлегчеобрабатыватьВсе три формализма(конечныхавтоматов,регулярныхвыраженийиправолинейныхнепосредственноеописаниеконечногоавтоматанеудобноспрактическойточкизрения.непосредственноеописаниеконечногоавтоматанеудобноспрактическойточкизрения.описание конечногоавтоматаанализнеудобнос практическойисключениемточки зрения.внепосредственноедругих частях компилятора.Лексическийсопровождаетсяграмматик)имеютодинаковуювыразительнуюмощность.В частности,по регулярномуПоэтомудлязаданиялексическогоанализатора,какиспользуетсялибоПоэтомудля заданиялексическогоанализатора,как правило,используетсялибонезначащихтекстовпрограмм,например,комментариев.Длятехязыков, вПоэтомудляфрагментовзаданиялексическогоанализатора,как правило,правило,используетсялибовыражениюилиправолинейнойграмматикеможносконструироватьконечныйавтомат,регулярноевыражение,либоправолинейнаяграмматика.регулярноевыражение,либоправолинейнаяграмматика.которыхдополнительнорегулярноеимеютсявыражение,макросредства,либо праволинейнаяграмматика.