Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 2
1

Обработка текстов: Элементы Лексического анализа

29.11.2015, 17:10. Показов 1372. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста с лабораторной..
1.Надо разработать программу,которая выполняет частичный лексический анализ текстовых файлов типа PAS и выдающую результат обработки в текстовый файл и на экран монитора в форме таблицы имен.
Задание: создать таблицу имен из раздела констант,содержащую следующие поля:имя,значение,тип,число обращений.
у меня получилось типо этого:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
uses crt;
 
const n=50;
var
a,b:text;
ch:char;
slovo,pazdel,tupe,kolvo,per,vxod,tslovo, znachenie:string;
i,j,y,q,w,z:integer;
k:array [1..n,1..4] of string;tirami:array [1..n] of integer;
c,tum1,tum,zapyat:byte;
begin
  clrscr;
  vxod:=paramstr(1);
  assign(a,vxod);
  assign(b,paramstr(2));
  reset(a);
  rewrite(b);
  tum:=0;
  i:=2;
  y:=1;
  tum1:=0;
  zapyat:=0;
  k[1,1]:='Razdel';
  k[1,2]:='Name';
  K[1,3]:='Type';
  k[1,4]:='Count';
  while not Eof(a) do
  begin
    if tum1=0 then
    begin
      read(a,ch);
      if ch='[' then
        zapyat:=1;
      if ch=']' then
       zapyat:=0;
       if (ch=' ') and (tum=1) then
      else
        if(((ch>='a') and (ch<='z'))or((ch>='0')and(ch<='9')and(zapyat=0))or((ch>=',')and(ch<='9')and(zapyat=1)) or ((ch>='A') and (ch<='Z'))or (ch='[') or (ch=']')) then
        begin
        slovo:=slovo+ch;
        end
        else
          begin
            if {(slovo='var') or }(slovo='const'){ or (slovo='type') or (slovo='procedure') or (slovo='function')} then
              begin
                tum:=1;
                k[i,1]:=slovo;
              end;
            if slovo='begin' then
              begin
                tum1:=1;
                tum:=0;
              end;
            if ((ch='=')or(ch=':')or(ch=',') or (ch='(')) and (tum=1)then
              begin
                k[i,2]:=slovo;
                if ch=',' then i:=i+1;
              end;
            if ((ch=';')and(tum=1)) then
              begin
               if (slovo<>'end') then begin
                k[i,3]:=slovo;
                for z:=i downto 2 do
                if k[z,3]='' then k[z,3]:=k[i,3];
                i:=i+1;
                end;
              end;
            slovo:='';
          end;
      end;
    if tum1=1 then
      begin
        read(a,ch);
        j:=ord(ch);
        if (((ch>='a') and (ch<='z')) or ((ch>='A') and (ch<='Z'))) then per:=per+ch
        else
          begin
            per:=upcase(per);
            for q:=1 to i do
              begin
                tupe:=upcase(k[q,2]);
                if per=tupe then tirami[q]:=tirami[q]+1;
                end;
            per:='';
          end;
      end;
  end;
 
 
  writeln(b,k[1,1]:25,k[1,2]:25,k[1,3]:25,k[1,4]:15);
 
  for y:=2 to i do begin
    for j:=1 to 3 do
    write(b,k[y,j]:25);write(b,tirami[y]:15);
    writeln(b);
  end;
 
  close(a);
  close(b);
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.11.2015, 17:10
Ответы с готовыми решениями:

Элемент лексического анализа текстового файла
Имеется файл *.pas с кодом программы. Нужно вывести имена всех переменных и найти количество...

Простейшие приемы лексического анализа
Доброго времени суток! Нужна помощь с разбором программы, которая подсчитывает количество чисел во...

Приемы лексического анализа введенного текста
Доброго времени суток. В программе мне нужно из введенного текста удалить десятичные числа,...

ЛЕКСИЧЕСКОГО АНАЛИЗА ТРАНСЛЯТОРОВ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
Разработать программу лексического сканирования и анализа для заданных языка программирования и...

1
0 / 0 / 2
Регистрация: 10.09.2016
Сообщений: 9
21.12.2016, 19:49 2
Вы случаем, не решили вашу задачку?
Такая же попалась на зачет.
0
21.12.2016, 19:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.12.2016, 19:49
Помогаю со студенческими работами здесь

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

Библиотека для семантического анализа текстов
Всем добра! В данный момент работаю над проектом, где требуется делать сематический и...

Прога для статистического анализа больших текстов
выдает ошибку при открытии файла _Str было 0x1110112. #include &lt;iostream&gt; #include &lt;stdio.h&gt;...

Программа для анализа русских/английских текстов
Уфф, в общем я студент-самоучка, пытаюсь охватить побольше теории, но с практикой дело у меня идёт...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru