Написать синтаксический анализатор - 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;

Объяснение кода листинга программы

  1. s - это переменная, которая содержит строку, в которой нужно найти слова.
  2. slovo - это временная переменная, которая используется для хранения найденного слова.
  3. pos - это функция, которая ищет позицию первого вхождения пробела в строке s.
  4. Если пробел найден (т.е. значение функции pos больше 0), то выполняется следующий блок кода.
  5. В этом блоке:
    • slovo устанавливается равным копии подстроки s, начиная с первого символа и заканчивая символом, предшествующим пробелу.
    • s изменяется, удаляются символы от первого до последнего пробела.
  6. Затем происходит поиск найденного слова в массивах и выводится нужная информация.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.786 из 5
Похожие ответы