- •2006 Оглавление:
- •1. Постановка задачи
- •Исходные данные:
- •2. Описание входного языка:
- •2.1. Описание синтаксиса входного языка
- •2.2. Описание семантики входного языка
- •Объявления и области действия
- •Оператор вывода
- •Оператор ввода
- •Зарезервированные функции
- •3. Описание этапа лексического анализа
- •3.1. Определение типов лексем
- •3.2. Определение синтаксиса лексем
- •3.3. Структуры данных
- •50 Таблица констант
- •3.5. Результаты работы лексического анализатора
- •4. Описание этапа синтаксического анализа:
- •4.1. Построение кс-грамматики входного языка
- •4.1.1. Определение программы
- •4.1.6. Подграмматика арифметических операций
- •4.2. Описание промежуточного языка (триады)
Зарезервированные функции
Примечание: нумерация символов в строках начинается с нуля, т.е. первый символ строки имеет номер ‘0’, второй - ‘1’ и т.д.
1) Конкатенация двух строк
concat(str1,str2)
Конкатенация двух строк, результат – строка.
Длина str1 =l1
Длина str2 =l2
Вычисляются значения параметров, они должны быть типа string, иначе пользователю выдается сообщение об ошибке.
str3 =str1 +str2, ее длинаl3 =l1 +l2
Результирующая строка получается конкатенацией двух строк, которые переданы в качестве параметров (создается новая переменная типа String, в нее записывается значение первой строки и приписывается вторая строка); длина результирующей строки равна сумме длин строкstr1 иstr2. Тип возвращаемого значения функции – строка.
Пример: concat(“123”, “abc”) возвращает строку “132abc”.
2) Замена подстроки в строке
replace(sourceStr,strOld,strNew)
Первый параметр функции – входная строка, второй параметр – строка, которую надо заменить, третий параметр – строка, на которую надо заменить.
Вычисляются значения параметров, они должны быть типа string, иначе пользователю выдается сообщение об ошибке.
В строке sourceStrпроисходит поиск всех вхождений подстрокиstrOld, после чего происходит замена каждого вхождения этой подстроки строкой strNew. Причем изменяется значение исходной строки, т.е. новая переменная не создается. Тип возвращаемого значения функции – строка.
Пример: replace(“123qw45qwe”, “qw”, “m”) возвращает строку “123m45me”.
3) Поиск подстроки в строке
find(sourceStr,strToFind)
Первый параметр функции – входная строка, второй параметр – строка, которую нужно найти.
Вычисляются значения параметров, они должны быть типа string, иначе пользователю выдается сообщение об ошибке.
В строке sourceStrищется первое вхождение подстрокиstrToFind, если такое вхождение есть, то функция возвращает номер символа, с которого начинается это вхождение. Если строка не найдена, то возвращается -1. Тип возвращаемого значения функции – целое числоint.
Пример: find(“teststr”, “st”) возвращает 2.
4) Вычисление длины строки
length(sourceStr)
Параметр функции – входная строка, длину которой надо определить.
Вычисляется значение параметра, он должен быть типа string, иначе пользователю выдается сообщение об ошибке.
Происходит подсчет количества символов в строке sourceStr. Это число возвращается в качестве результата. Длина пустой строки равна нулю. Тип возвращаемого значения функции – целое числоint.
Пример: length(“teststr”) возвращает 7.
5) Доступ к подстроке в заданной строке
substring(sourceStr,start,end)
Первый параметр функции – входная строка; второй параметр – номер символа во входной строке, начало подстроки; третий параметр – номер символа во входной строке, конец подстроки.
Вычисляется значение первого параметра, он должен быть типа string, иначе пользователю выдается сообщение об ошибке.
Вычисляются значения второго и третьего параметров, они должны быть типа int, иначе пользователю выдается сообщение об ошибке.
Пусть длина входной строки sourceStrравнаlength, тогда должно выполняться условие
0<=start<end<length
если оно не выполняется, то пользователю выдается сообщение об ошибке.
Функция возвращает подстроку, которая начинается с символа с номером startво входной строке и заканчивается символом с номеромend, при этом создается новый объект типаstring.
Тип возвращаемого значения функции – строка.
Пример: subsring(“teststr”, 1, 4) возвращает “est”.