Green-sell.info

Новые технологии
5 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Лексема это в программировании

Лексема (Lexema)

Содержание

«Лексема» — платформа для разработки, развертывания десктоп- и веб-приложений. Платформа позволяет создавать бизнес-приложения и обслуживать их. Это достигается путем сочетания разработок и тиражных решений при построении каждой конфигурации заказчика. «Лексема» включает в себя ряд методологических и программных решений, использование которых сокращает сроки разработки и стоимость услуг по внедрению. Вместе с тем, платформа позволяет разрабатывать заказные информационные системы, сохраняющие накопленный предприятием опыт.

Система «Лексема» внесена в Единый реестр российских программ и рекомендована к использованию как отечественный аналог иностранных программных продуктов.

2019: Особенности Lexema

На май 2019 года среди особенностей платформы Lexema:

  • Скорость разработки нового функционала, сравнимая со скоростью внедрения готовых программных продуктов
  • Гибкость платформы позволяет менять конфигурацию модулей в зависимости от поставленных бизнесом задач
  • Масштабируемость системы позволяет обеспечить одновременную работу нескольких тысяч пользователей
  • Встроенные компоненты позволяют разрабатывать отчеты с использованием сводных таблиц и OLAP-технологий, отличающихся удобством получения данных в нужных пользователю фильтрах и аналитиках
  • Библиотека бизнес-компонент, встроенная в платформу, обеспечивает низкую стоимость поддержки разработанных решений
  • Платформа включает в себя библиотеку функций, обеспечивающих доступ к данным системы с мобильных приложений

На платформе Лексема реализованы продукты и отраслевые конфигурации:

  • Lexema-ERP.Автотранспорт
  • Lexema-ERP.Медицина
  • Lexema-ERP.Общепит
  • Lexema-ERP.Управление автозаправками
  • Lexema-ERP.Управление нефтебазами
  • Lexema-ECM
  • Lexema-SR

2018: Возможности Lexema

По данным на май 2018 года, в «Лексеме» реализован следующий функционал:

  • Управление финансами;
  • Бухгалтерский и налоговый учет;
  • Управление персоналом;
  • Управление снабжением и закупками;
  • Управление продажами;
  • Управление производством;
  • Розничные и оптовые продажи;
  • Управление автотранспортом;
  • ТОРО;
  • Электронный документооборот;
  • Ряд отраслевых решений:
    • Решение для нефтебаз
    • Сервис для самообслуживания клиентов
    • Управление АЗС
    • Lexplate — облачный сервис для управления ресторанным бизнесом

    Система «Лексема» внесена в Единый реестр российских программ и рекомендована к использованию как отечественный аналог иностранных программных продуктов.

    На 25 ноября 2015 года поддерживаются версии – «Лексема 5.5» и «Лексема 7.0» и «Lexema.ru«.

    • Главными преимуществами «Лексемы 5.5» является возможность быстрой разработки бизнес-приложений, не требующих высокой квалификации программистов-кодировщиков.
    • На «Лексеме 5.5» наработана большая база решений, которая позволяет ускорить сроки внедрения на новом проекте.
    • «Лексема 5.5» обладает высокой масштабируемостью, позволяя одновременно работать в программе большому количеству пользователей.
    • Существует опыт эксплуатации системы c 5 000 пользователей.

    Среда разработки в «Лексеме 7.0» построена по объектному принципу. Это позволяет наследовать от типового решения на каждом проекте собственную конфигурацию. Из набора готовых модулей собирается конфигурация для конкретного предприятия, которая может быть доработана с учетом его индивидуальных особенностей. При этом не теряется возможность принимать последние обновления типовых решений.

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

    В архитектуру системы «Лексемы 7.0» заложена концепция слоев – слой базы данных, слой бизнес-логики, слой интерфейсов. Независимость слоев позволяет один раз разработанное программное решение использовать при разработке разных интерфейсов — winForm и web.

    Таким образом, имея готовое разработанное решение на одном виде интерфейса, например, winForms, получить решение в формате web можно лишь перерисовав интерфейс не переписывая бизнес-логику. К тому же этот подход существенно сокращает затраты на сопровождение многоинтерфейсной системы, благодаря тому, что править код приходиться только один раз.

    Lexema.ru — это платформа для разработки и развертывания облачных приложений. Она обеспечивает:

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

    2004: Переименование в Lexema

    Информационная система «ЭкоСофт» была переименована в информационную систему Лексема (Lexema).

    В чем разница между токеном и лексемой?

    при построении компилятора Aho Ullman и Sethi задается, что входная строка символов исходной программы разделена на последовательность символов, которые имеют логическое значение, и известны как токены, а лексемы-это последовательности, которые составляют токен, так в чем же основное различие?

    10 ответов:

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

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

    шаблон-это описание формы, которую могут иметь лексемы токена брать. В случае ключевое слово как маркер, шаблон просто последовательность символов, образующих ключевое слово. Для идентификаторов и некоторых другие маркеры, шаблон представляет собой более сложную структуру, которая соответствует много струн.

    рисунок 3.2: примеры токенов pg.112

    чтобы лучше понять это отношение к лексеру и парсеру, мы начнем с парсера и вернемся к входу.

    чтобы упростить проектирование парсера, парсер не делает работа с входными данными напрямую, но принимает в список токенов, генерируемых лексером. Глядя на столбец токенов на рис. 3.2, мы видим такие токены, как if , else , comparison , id , number и literal ; это имена токенов. Обычно с лексером/синтаксическим анализатором токен-это структура, которая содержит не только имя токена, но и символы / символы, составляющие токен, а также начальную и конечную позицию строки символов, составляющих токен, с начальной и конечной позицией используется для сообщения об ошибках, выделения и т. д.

    теперь лексер принимает ввод символов/символов и с помощью правил лексера преобразует входные символы / символы в токены. Теперь у людей, которые работают с lexer / parser, есть свои собственные слова для вещей, которые они часто используют. То, что вы думаете о последовательности символов/символов, которые составляют токен, — это то, что люди, которые используют лексеры/Парсеры, называют лексемой. Поэтому, когда вы видите лексему, просто подумайте о последовательности символов/символов представление токена. В примере сравнения последовательность символов / символов может быть разной, например или > или else или 3.14 и т. д.

    другой способ думать о связи между ними заключается в том, что токен-это программная структура, используемая синтаксическим анализатором, которая имеет свойство под названием лексема, которая содержит символ/символы из входных данных. Теперь, если вы посмотрите на большинство определений токена в коде, вы можете не увидеть лексему как одно из свойств знак. Это связано с тем, что токен, скорее всего, будет содержать начальную и конечную позицию символов/символов, представляющих токен и лексему, последовательность символов/символов может быть получена из начальной и конечной позиции по мере необходимости, поскольку вход статичен.

    когда исходная программа подается в лексический анализатор, она начинается с разбиения символов на последовательности лексем. Затем лексемы используются при построении токенов, в которых лексемы отображаются в токены. Переменная с именем myVar будет отображаться в маркер с указанием id,» num»>, где» num » должно указывать на расположение переменной в таблице символов.

    • лексемы являются слова, полученные из потока ввода символов.
    • токены-это лексемы, сопоставленные с именем токена и значением атрибута.

    Пример включает в себя:
    x = a + b * 2
    Что дает лексемы:
    С соответствующими маркерами: < id, 0>, , id, 1>, , id, 2>, , id, 3>>

    A) токены-это символические имена для сущностей, составляющих текст программы; например, если для ключевого слова if и id для любого идентификатора. Это выход лексический анализатор. 5

    (b) шаблон-это правило, которое определяет, когда последовательность символов из входных данных представляет собой токен; например, последовательность i, f для токена if и любая последовательность буквенно-цифровые символы, начинающиеся с буквы для идентификатора токена.

    (c) лексема-это последовательность символов из входных данных, которые соответствуют шаблону (и, следовательно, составляют экземпляр токена); например, если соответствует шаблону для if, и foo123bar соответствует шаблону для удостоверения личности.

    маркер: вид для (ключевые слова,идентификатор, знак препинания ,многозначные операторы)-это просто маркер.

    Pattern: правило формирования токена из входных символов.

    лексема: ее последовательность символов в исходной программе соответствует шаблону для токена. В принципе, это элемент токена.

    лексема — последовательность символов, соответствующих шаблону, образующему токен

    PATTERN — набор правил, определяющих токен

    TOKEN — осмысленная коллекция символов над набором символов языка программирования ex: ID, Константа, ключевые слова, операторы, пунктуация, Литеральная строка

    знак: токен-это последовательность символов, которую можно рассматривать как единый логический объект. Типичные маркеры,
    1) идентификаторы
    2) ключевые слова
    3) операторов
    4) специальных символов
    5)константы

    шаблон: набор строк на входе, для которых создается тот же токен, что и на выходе. Этот набор строк описывается правилом, называемым шаблоном, связанным с токеном.
    лексемы: лексемой является последовательность символов в исходной программе, которая соответствует шаблону для маркера.

    давайте посмотрим, как работает лексический анализатор (также называемый сканером )

    давайте возьмем пример выражения:

    не фактический объем .

    СКАНЕР ПРОСТО ИЩЕТ ЛЕКСЕМУ В ИСХОДНОМ ТЕКСТЕ ПРОГРАММЫ ДО ТЕХ ПОР, ПОКА ВВОД НЕ БУДЕТ ИСЧЕРПАН

    лексема-это подстрока ввода, которая формирует допустимую строку терминалов, присутствующую в грамматике . Каждая лексема следует за pattern что объяснил в конце (часть, которую читатель может пропустить наконец)

    (важное правило состоит в том, чтобы искать самый длинный возможный префикс, формирующий допустимую строку терминалов, пока не встретится следующий пробел . объяснено ниже )

    лексемы :

    маркеры : токены возвращаются по одному ( сканером по запросу парсера) каждый раз, когда сканер находит (допустимую) лексему. Сканер создает, если он еще не присутствует, запись таблицы символов (имея атрибуты: в основном токен-категория и несколько других) , когда он находит лексему, чтобы сгенерировать ее токен

    ‘ # ‘ обозначает запись таблицы символов . Я указал на номер лексемы в приведенном выше списке для удобства понимания, но технически это должен быть фактический индекс записи в таблице символов.

    следующие маркеры возвращаются сканером синтаксическому анализатору в указанном порядке для приведенного выше примера.

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

    и первый элементом пары является токен-класс / категория

    классы токенов перечислены ниже:

    и еще одна вещь , сканер обнаруживает пробелы , игнорирует их и не образует никакого маркера для пробела вообще. Не все разделители являются пробелами, пробел-это одна из форм разделителя, используемого сканерами для своей цели . Вкладки , новые строки , пробелы, экранированные символы во входных данных все вместе называются разделителями пробелов. Несколько других разделителей — это’;»,»: ‘и т. д., которые широко известны как лексемы, образующие маркер.

    общее количество возвращенных токенов составляет 8 здесь, однако только 6 записей таблицы символов сделано для лексем . Лексемы также 8 в общей сложности ( см. Определение лексемы )

    — вы можете пропустить эту часть

    A ***pattern*** is a rule ( say, a regular expression ) that is used to check if a string-of-terminals is valid or not .

    If a substring of input composed only of grammar terminals is following the rule specified by any of the listed patterns , it is validated as a lexeme and selected pattern will identify the category of lexeme, else a lexical error is reported due to either (i) not following any of the rules or (ii) input consists of a bad terminal-character not present in grammar itself.

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

    маркер — токен-это пара, состоящая из имени токена и необязательного значения токена. Имя токена-это категория лексической единицы.Общие имена токенов

    • идентификаторы: имена программист выбирает
    • ключевые слова: имена уже на языке программирования
    • разделители (также известные как знаки препинания): знаки препинания и парные разделители
    • операторы: символы, которые работают с аргументами и дают результаты
    • литералы: числовые, логические, текстовые, справочные литералы

    рассмотрим это выражение в языке программирования C:

    обозначено и представлено следующей таблицей:

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

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

    Основные понятия языка

    Предисловие

    Этот курс лекций построен на основе учебника автора «C/C++. Программирование на языке высокого уровня » [18], который выпускается издательством ПИТЕР с 2001 года по настоящее время. Учебнику был присвоен гриф Министерства образования Российской Федерации, он входит в списки рекомендуемой литературы во многих вузах России и ближнего зарубежья. Материалы учебника, вошедшие в этот курс, подверглись частичному обновлению и переработке. В 2010 году учебник был удостоен премии Правительства Санкт-Петербурга «За выдающиеся достижения в сфере высшего и профессионального образования» в составе учебно-методического комплекса по языкам программирования.

    В этот комплекс входят также практикум по C/C++ [19] и учебники по языкам C# и Паскаль [20, построенные по единому принципу. Соответствующие учебные курсы можно найти на этом сайте. В комплекс входит более 250 индивидуальных вариантов заданий на лабораторные работы в расчете на учебную группу из 20 человек (все варианты можно найти в учебнике [18]) и более 1000 тестовых вопросов. Преподавателям будут полезны презентации лекций. На сайте интернет-школы программирования http://ips.ifmo.ru можно проверить правильность выполнения некоторых лабораторных работ с помощью системы автоматического тестирования программ.

    Целью этого курса является краткое и четкое изложение основных особенностей языка С++ в соответствии со стандартом ISO / IEC 14882 (2003). Для написания программ во время обучения вы можете использовать, например, компилятор gcc или среду Microsoft Visual C++ 2005 Express Edition . Эти программные продукты распространяются бесплатно и достаточно хорошо поддерживают стандарт.

    Доброжелательную и конструктивную критику, а также предложения по улучшению курса направляйте автору по адресу pta- ipm @yandex.ru.

    Состав языка

    Презентацию к лекции Вы можете скачать здесь.

    В тексте на любом естественном языке можно выделить четыре основных элемента: символы, слова, словосочетания и предложения. Подобные элементы содержит и язык программирования , только слова называют лексемами (элементарными конструкциями), словосочетания — выражениями, а предложения — операторами.

    Алфавит языка

    Все тексты на языке пишутся с помощью его алфавита. Алфавит C++ включает:

    • прописные и строчные латинские буквы и символ подчеркивания (_), который употребляется наряду с буквами;
    • арабские цифры от 0 до 9;
    • специальные символы, например +, *, < и &;
    • пробельные символы — пробел, символы табуляции, символы перевода строки и формата.

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

    Из символов базового набора составляются лексемы языка и директивы препроцессора. Символы из набора реализации используются для написания комментариев. Компилятор комментарии игнорирует.

    Лексемы

    Существуют следующие виды лексем:

    • имена (идентификаторы);
    • ключевые слова;
    • знаки операций;
    • разделители;
    • литералы (константы).

    Границы лексем определяются другими лексемами , такими, как разделители или знаки операций.

    Лексемы языка программирования аналогичны словам естественного языка. Например, лексемами являются константа 128 (но не ее часть 12), имя Vasia , ключевое слово goto и знак операции сложения +. Из лексем составляются выражения и операторы.

    • Выражение задает правило вычисления некоторого значения. Например, выражение a + b задает правило вычисления суммы величин a и b .
    • Оператор задает законченное описание некоторого действия.

    Операторы делят на исполняемые и неисполняемые, простые и составные. Исполняемые операторы задают действия над данными. Неисполняемые операторы служат для описания данных, поэтому их часто называют операторами описания или просто описаниями. Например, int a ; — это оператор описания целочисленной переменной a .

    Составной оператор или блок — это группа операторов, заключенная в фигурные скобки . Блоки могут быть вложенными.

    Каждый элемент языка определяется синтаксисом и семантикой. Синтаксические определения устанавливают правила построения элементов языка , а семантика определяет их смысл и правила использования.

    Объединенная единым алгоритмом совокупность описаний и операторов образует программу.

    Путь от текста программы к исполняемому коду

    Чтобы выполнить программу, требуется перевести ее на язык, понятный процессору — в машинные коды. Этот процесс состоит из нескольких этапов.

    Сначала исходный текст программы обрабатывается препроцессором . Он разыскивает в тексте программы «свои» директивы (инструкции, команды), которые начинаются с символа # («решетка»), и выполняет их. Директивы препроцессора позволяют вставить в программу тексты из других файлов, исключить из процесса компиляции фрагменты кода или выполнить замену одних фрагментов другими.

    Обработанный препроцессором текст программы (в стандарте С++ он называется «единица компиляции «) передается компилятору, который выполняет лексический и синтаксический анализ . На фазе лексического анализа лексический анализатор ( сканер ) последовательно просматривает поступающий на его вход поток символов, составляющих исходный текст программы, и выделяет допустимые лексемы . Их границы определяются по разделителям, пробельным символам и другим лексемам.

    На фазе синтаксического анализа синтаксический анализатор (парсер) на основе грамматики языка распознает построенные из лексем выражения и операторы. При этом выявляются синтаксические ошибки . Выполняется также семантический анализ, целью которого также является обнаружение разного рода смысловых ошибок (например, таких, как повторное описание переменной ) .

    Если ошибок в программе не обнаружено, выполняется фаза генерации кода.Конкретный вид кода зависит от того, приложение какого типа мы создаем: Windows или . NET . Если это обычное приложение Windows , то строится объектный модуль — заготовка исполняемой программы в машинных кодах. Для приложения . NET формируется код на системно-независимом языке CIL .

    Дальнейшая судьба этого кода также зависит от типа создаваемого приложения. Для обычного приложения Windows компоновщик (синонимы — линкер, редактор связей ) формирует исполняемый модуль программы, подключая к объектному модулю другие объектные модули, в том числе содержащие элементы стандартных библиотек , которые используются в любой программе (например, для выполнения вывода на экран). Если программа состоит из нескольких исходных файлов, они компилируются по отдельности и объединяются на этапе компоновки . Исполняемый модуль имеет расширение . exe и запускается на выполнение обычным образом.

    Приложение . NET собирается в сборку компоновщиком сборки и запускается на выполнение под управлением виртуальной машины CLR . При создании . NET -приложений также имеется возможность компилировать отдельно несколько модулей программы, собирая их потом в одну сборку .

    Описание синтаксических конструкций

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

    Фигурные скобки используются для группировки элементов, из которых требуется выбрать только один.

    Рассмотрим лексемы языка С++ .

    Имена (идентификаторы)

    Идентификатор — это имя программного объекта. В идентификаторе могут использоваться латинские буквы, цифры и знак подчеркивания. Прописные и строчные буквы различаются. Первым символом идентификатора может быть буква или знак подчеркивания.

    Длина идентификатора по стандарту не ограничена. Идентификатор создается на этапе объявления переменной , функции, типа и т.п., после этого его можно использовать в последующих операторах программы. При выборе идентификатора необходимо иметь в виду следующее:

    • идентификатор не должен совпадать с ключевыми словами и именами используемых стандартных объектов языка;
    • не рекомендуется начинать идентификаторы с символа подчеркивания;
    • на идентификаторы, используемые для определения внешних переменных , налагаются ограничения компоновщика.

    Не жалейте времени на придумывание подходящих имен. Имя должно отражать смысл хранимой величины, отвечать принятой нотации , быть легко распознаваемым и, желательно, не содержать символов, которые можно перепутать друг с другом, например, 1, l и I (единица, строчная L и прописная i ).

    Лексемы

    Алфавит языка

    Лекция1 Состав языка

    Вводятся базовые для всего дальнейшего изложения понятия: из каких простейших «кирпичиков» состоят все тексты на языке программирования, что понимают под типом данных, какие встроенные типы данных есть в языке C++.

    В тексте на любом естественном языке можно выделить четыре основных элемента: символы, слова, словосочетания и предложения. Подобные элементы содержит и язык программирования, только слова называют лексемами (элементарными конструкциями), словосочетания — выражениями, а предложения — операторами.

    Все тексты на языке пишутся с помощью его алфавита. Алфавит C++ включает:

    • прописные и строчные латинские буквы и символ подчеркивания (_), который употребляется наряду с буквами;
    • арабские цифры от 0 до 9;
    • специальные символы, например +, *, < и &;
    • пробельные символы — пробел, символы табуляции, символы перевода строки и формата.

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

    Из символов базового набора составляются лексемы языка и директивы препроцессора. Символы из набора реализации используются для написания комментариев. Компилятор комментарии игнорирует.

    Существуют следующие виды лексем:

    • имена (идентификаторы);
    • ключевые слова;
    • знаки операций;
    • разделители;
    • литералы (константы).

    Границы лексем определяются другими лексемами, такими, как разделители или знаки операций.

    Лексемы языка программирования аналогичны словам естественного языка. Например, лексемами являются константа 128 (но не ее часть 12), имя Vasia, ключевое слово goto и знак операции сложения +. Из лексем составляются выражения и операторы.

    • Выражение задает правило вычисления некоторого значения. Например, выражение a + b задает правило вычисления суммы величин a и b.
    • Оператор задает законченное описание некоторого действия.

    Операторы делят на исполняемые и неисполняемые, простые и составные. Исполняемые операторы задают действия над данными. Неисполняемые операторы служат для описания данных, поэтому их часто называют операторами описания или просто описаниями. Например, int a ; — это оператор описания целочисленной переменной a.

    Составной оператор или блок — это группа операторов, заключенная в фигурные скобки. Блоки могут быть вложенными.

    Каждый элемент языка определяется синтаксисом и семантикой. Синтаксические определения устанавливают правила построения элементов языка, а семантика определяет их смысл и правила использования.

    Объединенная единым алгоритмом совокупность описаний и операторов образует программу.

    Основные понятия языка

    Предисловие

    Этот курс лекций построен на основе учебника автора «C/C++. Программирование на языке высокого уровня » [18], который выпускается издательством ПИТЕР с 2001 года по настоящее время. Учебнику был присвоен гриф Министерства образования Российской Федерации, он входит в списки рекомендуемой литературы во многих вузах России и ближнего зарубежья. Материалы учебника, вошедшие в этот курс, подверглись частичному обновлению и переработке. В 2010 году учебник был удостоен премии Правительства Санкт-Петербурга «За выдающиеся достижения в сфере высшего и профессионального образования» в составе учебно-методического комплекса по языкам программирования.

    В этот комплекс входят также практикум по C/C++ [19] и учебники по языкам C# и Паскаль [20, построенные по единому принципу. Соответствующие учебные курсы можно найти на этом сайте. В комплекс входит более 250 индивидуальных вариантов заданий на лабораторные работы в расчете на учебную группу из 20 человек (все варианты можно найти в учебнике [18]) и более 1000 тестовых вопросов. Преподавателям будут полезны презентации лекций. На сайте интернет-школы программирования http://ips.ifmo.ru можно проверить правильность выполнения некоторых лабораторных работ с помощью системы автоматического тестирования программ.

    Целью этого курса является краткое и четкое изложение основных особенностей языка С++ в соответствии со стандартом ISO / IEC 14882 (2003). Для написания программ во время обучения вы можете использовать, например, компилятор gcc или среду Microsoft Visual C++ 2005 Express Edition . Эти программные продукты распространяются бесплатно и достаточно хорошо поддерживают стандарт.

    Доброжелательную и конструктивную критику, а также предложения по улучшению курса направляйте автору по адресу pta- ipm @yandex.ru.

    Состав языка

    Презентацию к лекции Вы можете скачать здесь.

    В тексте на любом естественном языке можно выделить четыре основных элемента: символы, слова, словосочетания и предложения. Подобные элементы содержит и язык программирования , только слова называют лексемами (элементарными конструкциями), словосочетания — выражениями, а предложения — операторами.

    Алфавит языка

    Все тексты на языке пишутся с помощью его алфавита. Алфавит C++ включает:

    • прописные и строчные латинские буквы и символ подчеркивания (_), который употребляется наряду с буквами;
    • арабские цифры от 0 до 9;
    • специальные символы, например +, *, < и &;
    • пробельные символы — пробел, символы табуляции, символы перевода строки и формата.

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

    Из символов базового набора составляются лексемы языка и директивы препроцессора. Символы из набора реализации используются для написания комментариев. Компилятор комментарии игнорирует.

    Лексемы

    Существуют следующие виды лексем:

    • имена (идентификаторы);
    • ключевые слова;
    • знаки операций;
    • разделители;
    • литералы (константы).

    Границы лексем определяются другими лексемами , такими, как разделители или знаки операций.

    Лексемы языка программирования аналогичны словам естественного языка. Например, лексемами являются константа 128 (но не ее часть 12), имя Vasia , ключевое слово goto и знак операции сложения +. Из лексем составляются выражения и операторы.

    • Выражение задает правило вычисления некоторого значения. Например, выражение a + b задает правило вычисления суммы величин a и b .
    • Оператор задает законченное описание некоторого действия.

    Операторы делят на исполняемые и неисполняемые, простые и составные. Исполняемые операторы задают действия над данными. Неисполняемые операторы служат для описания данных, поэтому их часто называют операторами описания или просто описаниями. Например, int a ; — это оператор описания целочисленной переменной a .

    Составной оператор или блок — это группа операторов, заключенная в фигурные скобки . Блоки могут быть вложенными.

    Каждый элемент языка определяется синтаксисом и семантикой. Синтаксические определения устанавливают правила построения элементов языка , а семантика определяет их смысл и правила использования.

    Объединенная единым алгоритмом совокупность описаний и операторов образует программу.

    Путь от текста программы к исполняемому коду

    Чтобы выполнить программу, требуется перевести ее на язык, понятный процессору — в машинные коды. Этот процесс состоит из нескольких этапов.

    Сначала исходный текст программы обрабатывается препроцессором . Он разыскивает в тексте программы «свои» директивы (инструкции, команды), которые начинаются с символа # («решетка»), и выполняет их. Директивы препроцессора позволяют вставить в программу тексты из других файлов, исключить из процесса компиляции фрагменты кода или выполнить замену одних фрагментов другими.

    Обработанный препроцессором текст программы (в стандарте С++ он называется «единица компиляции «) передается компилятору, который выполняет лексический и синтаксический анализ . На фазе лексического анализа лексический анализатор ( сканер ) последовательно просматривает поступающий на его вход поток символов, составляющих исходный текст программы, и выделяет допустимые лексемы . Их границы определяются по разделителям, пробельным символам и другим лексемам.

    На фазе синтаксического анализа синтаксический анализатор (парсер) на основе грамматики языка распознает построенные из лексем выражения и операторы. При этом выявляются синтаксические ошибки . Выполняется также семантический анализ, целью которого также является обнаружение разного рода смысловых ошибок (например, таких, как повторное описание переменной ) .

    Если ошибок в программе не обнаружено, выполняется фаза генерации кода.Конкретный вид кода зависит от того, приложение какого типа мы создаем: Windows или . NET . Если это обычное приложение Windows , то строится объектный модуль — заготовка исполняемой программы в машинных кодах. Для приложения . NET формируется код на системно-независимом языке CIL .

    Дальнейшая судьба этого кода также зависит от типа создаваемого приложения. Для обычного приложения Windows компоновщик (синонимы — линкер, редактор связей ) формирует исполняемый модуль программы, подключая к объектному модулю другие объектные модули, в том числе содержащие элементы стандартных библиотек , которые используются в любой программе (например, для выполнения вывода на экран). Если программа состоит из нескольких исходных файлов, они компилируются по отдельности и объединяются на этапе компоновки . Исполняемый модуль имеет расширение . exe и запускается на выполнение обычным образом.

    Приложение . NET собирается в сборку компоновщиком сборки и запускается на выполнение под управлением виртуальной машины CLR . При создании . NET -приложений также имеется возможность компилировать отдельно несколько модулей программы, собирая их потом в одну сборку .

    Описание синтаксических конструкций

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

    Фигурные скобки используются для группировки элементов, из которых требуется выбрать только один.

    Рассмотрим лексемы языка С++ .

    Имена (идентификаторы)

    Идентификатор — это имя программного объекта. В идентификаторе могут использоваться латинские буквы, цифры и знак подчеркивания. Прописные и строчные буквы различаются. Первым символом идентификатора может быть буква или знак подчеркивания.

    Длина идентификатора по стандарту не ограничена. Идентификатор создается на этапе объявления переменной , функции, типа и т.п., после этого его можно использовать в последующих операторах программы. При выборе идентификатора необходимо иметь в виду следующее:

    • идентификатор не должен совпадать с ключевыми словами и именами используемых стандартных объектов языка;
    • не рекомендуется начинать идентификаторы с символа подчеркивания;
    • на идентификаторы, используемые для определения внешних переменных , налагаются ограничения компоновщика.

    Не жалейте времени на придумывание подходящих имен. Имя должно отражать смысл хранимой величины, отвечать принятой нотации , быть легко распознаваемым и, желательно, не содержать символов, которые можно перепутать друг с другом, например, 1, l и I (единица, строчная L и прописная i ).

    Читать еще:  Интерфейс среды программирования
Ссылка на основную публикацию
Adblock
detector