Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2018, 15:56   #1
Joesidorov
Пользователь
 
Регистрация: 09.12.2015
Сообщений: 26
По умолчанию Написать программу-анализатор лексики (сканер)

Всем привет!

помогите пожалуйста справиться с кодом.

Задание:
1. Написать лексический анализатор на С++;


1. Получает текст фрагмента программы, ключевое слово и таблицу специальных символов (эти две таблицы также могут быть объединены в одну вспомогательную таблицу, которая должна быть прикреплена, например, в тексте программы сканера в массиве или может быть сохранена в файле и т. Д.);
создать таблицу распознанных литералов и идентификаторов, а также символов для так называемых стандартов (все распознанные лексемы, их тип и индекс в соответствующей таблице типов лексем);
Объявляет об успешном или неудачном результате лексического анализа.

Смотреть прикрепленный файл.

Код:
#include<iostream>
#include<fstream>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
 
using namespace std;
 
int isKeyword(char buffer[]){
    char keywords[32][10] = {"constructor","const","array","var","Begin","inherited","for",
                            "do","new","ad","of","char","Integer","PView","TRect",
                            "Assign","or","to","do","and","not","End"};
    int i, flag = 0;
    
    for(i = 0; i < 32; ++i){
        if(strcmp(keywords[i], buffer) == 0){
            flag = 1;
            break;
        }
    }
    
    return flag;
}
 
int main(){
    char ch, buffer[15], delimiter[] = "[]=:=()^;:..#.";
    ifstream fin("program.txt");
    int i,j=0;
    
    if(!fin.is_open()){
        cout<<"error while opening the file\n";
        exit(0);
    }
    
    while(!fin.eof()){
           ch = fin.get();
           
        for(i = 0; i < 6; ++i){
               if(ch == delimiters[i])
                   cout<<ch<<" is delimiter\n";
           }
           
           if(isalnum(ch)){
               buffer[j++] = ch;
           }
           else if((ch == ' ' || ch == '\n') && (j != 0)){
                   buffer[j] = '\0';
                   j = 0;
                                      
                   if(isKeyword(buffer) == 1)
                       cout<<buffer<<" is keyword\n";
                   else
                       cout<<buffer<<" is indentifier\n";
           }
           
    }
Вложения
Тип файла: doc Lab1_kp.doc (132.0 Кб, 11 просмотров)

Последний раз редактировалось Joesidorov; 12.12.2018 в 16:40.
Joesidorov вне форума Ответить с цитированием
Старый 12.12.2018, 15:58   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Так вопрос в чем? Не компилится? Какие ошибки?
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать программу "сканер локальной сети" Valdemarina Фриланс 2 22.06.2015 09:03
Необходимо написать программу 'Анализатор формул' на C++ kasper85 Помощь студентам 3 28.03.2010 13:28
На каком языке написать программу-сканер ? terev Свободное общение 1 16.02.2009 23:43
Написать сканер с диапозоном IP ruPy Работа с сетью в Delphi 7 14.12.2007 19:10