Форум программистов, компьютерный форум CyberForum.ru

Грамматика программы - C++

Восстановить пароль Регистрация
 
ququ_smile
1 / 1 / 0
Регистрация: 28.01.2013
Сообщений: 153
28.07.2013, 05:39     Грамматика программы #1
Может ли мне кто-то наглядно объяснить что такое первичное выражение, чем оно отличается от обычного выражения. Что такое терм и чем он отличается от лексемы?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2013, 05:39     Грамматика программы
Посмотрите здесь:

C++ Подскажите. Не компилирует текст программы, запрашивает в коде мол не достающую скобку. Ниже приведен текст программы.
C++ Дан текст программы на С++...Записать в выходной файл текст программы без комментариев
Открытие файла другой программы из программы.Косяк. C++
обясните структуру программы , что выполнняет каждая строчка программы, зараннее благодарен! C++
Ребята, . пожалуйста! Вот текстовые программы. Вообще в строках не соображаю, прошу о .! программы на С++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vodilawofer
29 / 27 / 2
Регистрация: 27.09.2012
Сообщений: 123
28.07.2013, 09:06     Грамматика программы #2
Могу порекомендовать книгу где это рассматривается.
Ахо,Лам,Сети,Ульман - Компиляторы. Принципы, технологии, инструменты.2ed.2008
gazlan
2867 / 1815 / 272
Регистрация: 27.08.2010
Сообщений: 4,919
Записей в блоге: 1
28.07.2013, 09:43     Грамматика программы #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
В четвертом веке до Р.Х., Демокрит Абдерский развил учение об атомах: атом - неделимая частица вещества, тела - комбинации атомов.

Грамматики языков программирования полностью следуют этой концепции: лексема - неделимая частица языка, текст - комбинация лексем.

Если бы программы записывались иероглифами, можно было бы иметь подходящий графический символ для каждой лексемы языка. Но, поскольку используется алфавитное письмо, допустимый набор символов крайне ограничен и для обозначения различных сущностей используются многосимвольные комбинации.

Терм - это синтаксическая единица, последовательность символов входного алфавита, набор букв, черточки иероглифа.

Лексема - это семантическая единица, осмысленное слово данного языка, иероглиф. Лексема может состоять из одного или нескольких термов, так же как иероглиф может иметь одну или несколько черточек.

Аналогично лексеме, первичное выражение - это простейшее (неделимое) выражение. Рассматривайте его как "иероглиф", составленный из лексем.

В языке C, первичные выражения - это идентификаторы, константы, строки и выражения в скобках.
В C++ первичным выражением является также идентификатор из области видимости: 'Typedef-имя::идентификатор'.
ququ_smile
1 / 1 / 0
Регистрация: 28.01.2013
Сообщений: 153
29.07.2013, 05:25  [ТС]     Грамматика программы #4
Т.е. к примеру, число 1 - это терм, а число 11 - лексема, но тогда и число 1 может быть лексемой, но число 11 не может быть термом?
gazlan
2867 / 1815 / 272
Регистрация: 27.08.2010
Сообщений: 4,919
Записей в блоге: 1
29.07.2013, 06:15     Грамматика программы #5
Терм - это набор символов алфавита. Лексема - это терм (или комбинация термов) имеющая смысл в данном языке и неделимая на меньшие части (без утраты смысла).

Если в вашем языке '11' имеет специальный смысл, невыводимый из '1' и '1' - это лексема. Иначе - терм.

Иными словами, терм - это бездушная синтаксическая конструкция, лексема - это то, что наделено семантикой, смыслом, "душой" языка :-)

"Неделимость" в естественном языке хорошо иллюстрируют идиомы. Например, такие сочетания, как "скатертью дорога" или "лепить горбатого" (феня) не могут быть разбиты на составляющие или составлены из других, даже синонимичных, слов без утраты смысла.
korvin_
 Аватар для korvin_
1327 / 1098 / 160
Регистрация: 28.04.2012
Сообщений: 3,926
29.07.2013, 16:35     Грамматика программы #6
Цитата Сообщение от gazlan Посмотреть сообщение
лексема - это то, что наделено семантикой, смыслом, "душой" языка
Скорее это часть лица. "Душой" языка тогда уж будет его вычислительная модель (парадигма).
Yandex
Объявления
29.07.2013, 16:35     Грамматика программы
Ответ Создать тему
Опции темы

Текущее время: 20:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru