Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/41: Рейтинг темы: голосов - 41, средняя оценка - 5.00
Petya
0 / 0 / 0
Регистрация: 10.09.2010
Сообщений: 3
#1

лексический анализатор на С++

10.09.2010, 19:52. Просмотров 7537. Ответов 2
Метки нет (Все метки)

Написать лексический анализатор на С++:
разделители: , . ;
бинарные операции: + - * /
унарные операции: - знак числа
идентификаторы: a|b|...|z
служебные слова: 'VAR', 'BEGIN', ‘END’,
константы: 0|1...|9
C++
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
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
void main()
{
    FILE *f1,*f2;
    f1=fopen("D:/1.txt","r");
    f2=fopen("D:/2.txt","w");
    while (feof(f1)==0)
    {
        int ch=getc(f1);
        if(isalpha(ch))
            fprintf(f2,"%c %d \n",ch,2);
        else
            if(isdigit(ch))
                fprintf(f2,"%c %d \n",ch,3);
            else
                if(ch==':=')
                    fprintf(f2,"%c %d \n",ch,10);
                else
                    if(ch=='var')
                        fprintf(f2,"%c %d \n",ch,1);
                    else
                        if(ch=='-'||ch=='+'||ch=='*'||'/')
                            fprintf(f2,"%c %d \n",ch,9);
                        else
                            if(ch==';')
                                fprintf(f2,"%c %d \n",ch,6);
                            else
                                if(ch=='-')
                                    fprintf(f2,"%c %d \n",ch,8);
                                else
                                    if (ch==',')
                                        fprintf(f2,"%c %d \n",ch,5);
                                    else
                                        if (ch=='.')
                                            fprintf(f2,"%c %d \n",ch,4);
                                else
                                    printf("недопустимый символ языка - %c \n",ch);
    }
    fclose(f1);
    fclose(f2);
}
что здесь не так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2010, 19:52
Ответы с готовыми решениями:

Лексический анализатор
Написал программу, я надеюсь, лексического анализатора для конкретного куска...

Лексический анализатор
Получил задание. Ранее с++ не изучал. Если найдутся добрые люди, которые могут...

Лексический анализатор
Доброго времени суток. Сразу скажу, что я не прошу написать какую-либо...

Лексический, синтаксический анализатор c++
Помогите пожалуйста, мне очень сложно понять как это делать( Разработать...

Лексический анализатор текста
Разработать лексический анализатор, который реализует конечный автомат для...

2
illuminati
20 / 20 / 5
Регистрация: 14.06.2010
Сообщений: 108
10.09.2010, 20:00 #2
переменная ch у тебя int, а должна быть char
это из моих скудных познаний на Си
0
Impuls1989
6 / 6 / 0
Регистрация: 08.09.2010
Сообщений: 35
10.09.2010, 20:04 #3
Если Вы будете продолжать в том же духе, у Вас распухнут глаза и взорвется мозг... Почитайте про обратную польскую запись. А на if-ах Вы далеко не уедите.

Добавлено через 1 минуту
Цитата Сообщение от illuminati Посмотреть сообщение
переменная ch у тебя int, а должна быть char
это из моих скудных познаний на Си
char по сути и есть int. С этим все нормально. Там есть сравнение:
C
1
2
if(ch==':=')
  fprintf(f2,"%c %d \n",ch,10);
Тут тоже ошибка
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2010, 20:04

Лексический анализатор - граф перехода КА
Здравствуйте Уважаемые Форумчане. Описание: входной язык содержит логические...

Лексический анализатор языка лисп
нужно написать лексический анализатор языка лисп

Лексический анализатор с использованием оператора switch
Здравствуйте! Подскажите, пожалуйста, в чем проблема. По заданию мне надо...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru