Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 42, средняя оценка - 4.95
Petya
0 / 0 / 0
Регистрация: 10.09.2010
Сообщений: 3
#1

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

10.09.2010, 19:52. Просмотров 6226. Ответов 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++):

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

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

Лексический анализатор - C++
Написал программу, я надеюсь, лексического анализатора для конкретного куска программы. В программе я из текстового файла считывал текст...

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
illuminati
20 / 20 / 4
Регистрация: 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 - C++
Здравствуйте! Подскажите, пожалуйста, в чем проблема. По заданию мне надо запрогать небольшой лексический анализатор при помощи...

Разработайте лексический анализатор для языка программирования C-- - C++
Лексемы, допустимые в языке: letter ::= a | b | ... | z | A | B | ... | Z digit ::= 0 | 1 | ... | 9 char ::= \' | &quot; | \n | \t |...

Составить автоматную грамматику и на её основе реализовать лексический анализатор языка - C++
Если есть люди,которые реально шарят в с++,может,смогут помочь,в общем,задачка такова: Составить автоматную грамматику и на её основе...

Лексический анализатор. Вывести типы констант, идентификаторов и специальных знаков - C++
Существует код лексического анализатора, но ответ выдает в не совсем корректной форме Вот код: #include &quot;stdafx.h&quot; #include &lt;cstdlib&gt;...


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

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

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