Л.Е. Карпов - Системы программирования (1119429), страница 34
Текст из файла (страница 34)
Уровни приоритетов лексем определяются порядком их перечисленияв разделе объявлений, поэтому приоритет унарного минуса из приведенного примераоказывается выше приоритета умножения и деления.В правило можно вставлять явное задание приоритета правила с помощьюконструкции %prec <терминал> (как в предпоследней альтернативе на приведенномвыше примере).
Используемый терминал может быть искусственно введенным. Такойтерминал никогда не возвращается лексическим анализатором и объявляетсяединственно для того, чтобы определить приоритет правила. Именно поэтому унарныйминус, определяемый предпоследней альтернативой в приведенном примере, получаетнаивысший приоритет, по сравнению с другими операторами.В отличие от генератора лексических анализаторов Lex, который способенпостроить распознаватель по любому правильному регулярному выражению, генераторYacc не всегда способен решить поставленную перед ним задачу. Это связано с тем,что заданная контекстно-свободная грамматика может оказаться не соответствующейограничениям LALR(1)-грамматик. В этом случае генератор выдает сообщение обошибке, то есть о наличии неразрешимого конфликта в LALR(1)-грамматике.Пользователю необходимо или преобразовать грамматику, или ввести дополнительныеправила, облегчающие построения анализатора.Современные генераторы синтаксических анализаторов Yacc (а также другиегенераторы, выполняющие аналогичные построения, например, Bison) представляютсобой мощные программные инструменты.
С их помощью построены реальныеанализаторы для различных компиляторов и прикладных систем.122ЛитератураОсновная литература•••••••••••••Материалы к курсу “Системы программирования” и практикуму на ЭВМ(http://sp.cmc.msu.ru/win/courses/prak2/index.html, http://cmcmsu.no-ip.info/2course/).И. А. Волкова, Т. В. Руденко. “Формальные грамматики и языки. Элементы теориитрансляции”, М.: МГУ, 1 9 9 (Шифр9в библиотеке МГУ: 5 ГВ6 6 В-676;http://sp.cmc.msu.ru/courses/prak2/lang_grams.pdf).А. В.
Гордеев, А. Ю. Молчанов. “Системное программное обеспечение”, СПб.:“Питер”, 2002.А. Ю. Молчанов. “Системное программное обеспечение. Учебник для вузов”, СПб.:Питер, 2003.Alfred V. Aho, Jeffrey D. Ullman. “The Theory of Parsing, Translation and Compiling”.Prentice-Hall, Inc., Englewood Cliffs, N. J., 1973 (А. Ахо, Дж. Ульман. “Теориясинтаксического анализа, перевода и компиляции”, в 2-х т., М.: “Мир”, 1978).Andrew W. Appel, Maia Ginsburg. “Modern compiler implementation in C”, CambridgeUniversity Press, 1998.P. J. Brown (ed.).
“Software Portability”, Cambridge University Press, 1977(“Мобильность программного обеспечения”, под ред. П. Брауна, М., Мир, 1980).Joseph M. Fox. “Software and its development”. Prentice-Hall, Inc., Englewood Cliffs,1982 (Дж. Фокс, “Программное обеспечение и его разработка”, М., Мир, 1985).P. Genuys (ed.). “Programming Languages”, Academic Press, 1968 (“Языкипрограммирования”, под ред. Ф. Женюи, М., “Мир”, 1972).David Gries. “Compiler construction for digital computers”, John Wiley and sons, Inc.,1971 (Д. Грис.
“Конструирование компиляторов для цифровых вычислительныхмашин”, М., “Мир”, 1975).P. M. Lewis, D. J. Rosenkranz, R. E. Stearns. “Compiler Design Theory”, AddisonWesley, Readin g , MA, 1 9 7 6(Ф. Льюис, Д. Розенкр анц, Р. Стир нз. “Теоретическиеосновы проектирования компиляторов”, М.: “Мир”, 1979).Robert Morgan. “Building an optimizing compiler”, Butterworth-Heinemann, 1998.Steven S. Muchnick. “Advanced compiler design and implementation”, MorganKaufmann Publishers, Inc., 1997.Дополнительная литература из библиотеки МГУ•••••А.
М. Вендров. “CASE-технологии. Современные методы и средствапроектирования информационных систем”,http://www.citforum.ru/database/case/index.shtml.Л. Е. Карпов. "Архитектура распределенных систем программного обеспечения",М., МАКС Пресс, 2007. Шифр в библиотеке МГУ: 5ВГ66, К-265.Н. Н.
Мансуров, О. Л. Майлингова. “Методы формальной спецификации программ:языки MSC и SDL”, М.: Изд-во “Диалог-МГУ”, 1998 (Шифр в библиотеке МГУ:5ВГ66 М-238).И. О. Одинцов. “Профессиональное программирование. Системный подход”, СПб.:“БХВ-Петербург”, 2002 (Шифр в библиотеке МГУ: 5ВГ66 О-425).Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman. “Compilers. Principles, techniques andtools”. Addison-Wesley Publishing Company, Inc., 1985 (Альфред Ахо, Рави Сети,123•••••Джеффри Ульман.
“Компиляторы. Принципы, технологии, инструменты”, М.: Изд.дом “Вильямс”, 2001. Шифр в библиотеке МГУ: 5ВГ66 А-955).Grady Booch. “Object-Oriented Analysis and Design with Applications”,Benjamin/Cummings, 1990, Addison-Wesley Publishing Company, Inc., 1994 (Г. Буч“Объектно-ориентированный анализ и проектирование с примерами приложений наС++”, 2-е издание, М., СПб.: “Бином” – “Невский диалект”, 1998. Шифр вбиблиотеке МГУ: 5ВГ66 Б-947; http://redlib.narod.ru/cidocs/buch.zip).Anton Eliëns. “Principles of Object-Oriented Software Development”.
Second edition,Addison-Wesley, 2000 (А. Элиенс. “Принципы объектно-ориентированнойразработки программ”, 2-е издание. М.: Издательский дом “Вильямс”, 2002. Шифр вбиблиотеке МГУ: 5ВГ66 Э-460).M. Fowler, K. Scott. “UML Distilled: Applying the Standard Object ModelingLanguage”. Addison-Wesley, 1999 (М. Фаулер, К. Скотт. “UML в кратком изложении.Применение стандартного языка объектного моделирования”, М.: “Мир, 1999.Шифр в библиотеке МГУ: 5ВГ66 Ф-282).Herb Schildt. “Teach Yourself C++”.
Third edition, Osborne/McGraw-Hill, 1998 (Г.Шилдт. “Самоучитель С++”. 3-е изд. СПб: “БХВ-Петербург”, 2002. Шифр вбиблиотеке МГУ: 5ВГ66 Ш-576).Bjarne Stroustrup. “The C++ programming language”. Special edition. Addison-WesleyLongman, 2000 (Б. Страуструп. “Язык программирования С++”. Специальноеиздание, М.: “Бином”, 2005. Шифр в библиотеке МГУ: 5ВГ66 С-835).Вспомогательная литератураСтандарты••••••••••P. Naur (Editor), “Revised Report on the Algorithmic Language ALGOL 60”, Comm.ACM, 1963, v. 6, No.
1. pp. 1-17; Computer Journal, 1963, v. 5, No. 9, pp. 349-367;Num. Math., 1962, v. 4, No. 5, pp. 420-453 (“Алгоритмический язык АЛГОЛ-60.Пересмотренное сообщение”, М.: “Мир”, 1965).European Computer Manufacturers Association and American National StandardsInstitute, PL/1, Basis/1-12.
ECMA/TC10, ANSI.X3J1, July 1974.“Modified Report on the Algorithmic Language ALGOL-60”, Computer Journal, v. 19,No. 4, Nov. 1976, pp. 364 – 379 (“Алгоритмический язык АЛГОЛ 60.Модифицированное сообщение”, под ред. А. П. Ершова, М.: “Мир”, 1982).American National Standard Programming Language FORTRAN, X3, 9-1978.“IEEE Standard for Microprocessor Assembly Language”. IEEE Std 694-1985.“IEEE Standard for Binary Floating-Point Arithmetic”. IEEE Std 754-1985.“IEEE Standard for Radix-Independent Floating-Point Arithmetic”. IEEE Std 854-1987.Standard for the C Programming Language. ISO/IEC 9899, 1990.M.
C. Paulk, B. Curtis, M. B. Chrissis, and C. V. Weber. Capability Maturity Model forSoftware, Version 1.1, SEI Technical Report CMU/SEI-93-TR-024, Software EngineeringInstitute, Pittsburgh, Feb. 1993http://www.sei.cmu.edu/pub/documents/93.reports/pdf/tr24.93.pdfM. C. Paulk, C. V. Weber, S. M. Garcia, M. B. Chrissis, and M. Bush. Key Practices ofthe Capability Maturity Model, Version 1.1, SEI Technical Report CMU/SEI-93-TR-025,Software Engineering Institute, Pittsburgh, Feb. 1993.http://www.sei.cmu.edu/pub/documents/93.reports/pdf/tr25.93.pdf124••••••••••••Alexander Stepanov, Meng Lee.
“The Standard Template Library”. Doc No: X3J16/940030R1.ISO/IEC 12207:1995, Information Technology — Software life cycle processes, 1995.Amendments 2002, 2004.IEEE 1074-1997 IEEE Standard for Developing Software Life Cycle Processes, 1997.Standard for the C++ Programming Language. ISO/IEC 14882, 1998.IEEE/EIA 12207.0-1996 Industry Implementation of International Standard ISO/IEC12207:1995, New York, Mar. 1998.IEEE/EIA 12207.1-1997 Industry Implementation of International Standard ISO/IEC12207:1995 Software Life Cycle Processes – Life Cycle Data, New York, Apr. 1998.IEEE/EIA 12207.2-1997 Industry Implementation of Int'l Standard ISO/IEC 12207:1995Software Life Cycle Processes — Implementation Considerations, New York, Apr. 1998.ГОСТ Р-1999.
ИТ. Процессы жизненного цикла программных средств.Capability Maturity Model Integration (CMMI), Version 1.1. CMMI for SystemsEngineering, Software Engineering, Integrated Product and Process Development, andSupplier Sourcing (CMMI-SE/SW/IPPD/SS, V1.1). Continuous Representation. SEITechnical Report CMU/SEI-2002-TR-011, Software Engineering Institute, Pittsburgh,March 2002.http://www.sei.cmu.edu/pub/documents/02.reports/pdf/02tr011.pdfCapability Maturity Model Integration (CMMI), Version 1.1. CMMI for SystemsEngineering, Software Engineering, Integrated Product and Process Development, andSupplier Sourcing (CMMI-SE/SW/IPPD/SS, V1.1).