Написать синтаксический анализатор - Pascal ABC
Формулировка задачи:
нам были даны три таблицы(я их сделал 3мя массивами): 1)операторы(9шт.), 2)знаки препинания(9шт.) и просто цифры (4шт). Требуется, чтобы при вводе строки текста программа распознала, например, оператор из массива и вывела номер массива, в котором лежит этот оператор и, собственно, сам порядковый номер оператора. Алгоритм вроде получилось написать основную часть, но дело в том, что я ввожу, например, одно слово "program", то программа работает идеально, а если написать левые слова, while program 1 2 3 do . ;, то программа завершается, а должна выводиться строка с данными об этих введенных данных, кроме левы слов. Алгоритм:
Решение задачи: «Написать синтаксический анализатор»
textual
Листинг программы
s:=s+' '; while pos(' ',s)>0 do begin slovo:=copy(s,1,pos(' ',s)-1); delete(s,1,pos(' ',s)); //ищешь это слово в массивах //выводишь что нужно end;
Объяснение кода листинга программы
s
- это переменная, которая содержит строку, в которой нужно найти слова.slovo
- это временная переменная, которая используется для хранения найденного слова.pos
- это функция, которая ищет позицию первого вхождения пробела в строкеs
.- Если пробел найден (т.е. значение функции
pos
больше 0), то выполняется следующий блок кода. - В этом блоке:
slovo
устанавливается равным копии подстрокиs
, начиная с первого символа и заканчивая символом, предшествующим пробелу.s
изменяется, удаляются символы от первого до последнего пробела.
- Затем происходит поиск найденного слова в массивах и выводится нужная информация.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д