0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 37
1

Лексический анализатор (вывод в файл)

18.11.2014, 22:13. Показов 300. Ответов 0
Метки нет (Все метки)

Здравствуйте, у меня написан лексический анализатор, но вывод в файл 2 происходит посимвольно (т.е по одному символу в каждой строке),как сделать так,чтобы лексемы выводились целиком? Всем тем, кто поможет огромное спасибо!

#include "stdafx.h"
#include <cstdio>
#include "conio.h"
#include <cctype>
#include <cstdlib>
#include <string>
#include <iostream>
using namespace std;

int main()
{
int i;
FILE *f1,*f2;
f1=fopen("C:/1.txt","r");
f2=fopen("C:/2.txt","w");
int ch[25];

for(i=0;i<25;i++)
{
while ((ch[i]=getc(f1)) !=EOF)
{
if(isalpha(ch[i]))
fprintf(f2,"%c %d \n",ch[i],2);
else
{if(isdigit(ch[i]))
fprintf(f2,"%c %d \n",ch[i],1);
else
{if(ch[i]==':')
fprintf(f2,"%c %d \n",ch[i],5);
else
{if(ch[i]=='-'||'+'||'*'||'/')
fprintf(f2,"%c %d \n",ch[i],9);
else
{if(ch[i]==';')
fprintf(f2,"%c %d \n",ch[i],5);
else
{ if(ch[i]=='-')
fprintf(f2,"%c %d \n",ch[i],5);
else
{ if (ch[i]==',')
fprintf(f2,"%c %d \n",ch[i],5);
else
{ if (ch[i]=='^')
fprintf(f2,"%c %d \n",ch[i],5);
else
{ if (ch[i]=='STEP')
fprintf(f2,"%c %d \n",ch[i],4);
else
{ if (ch[i]=='FOR')
fprintf(f2,"%c %d \n",ch[i],4);
else
{ if (ch[i]=='AND')
fprintf(f2,"%c %d \n",ch[i],4);
else
{ if (ch[i]=='OR')
fprintf(f2,"%c %d \n",ch[i],4);
else
{ if (ch[i]=='GOTO')
fprintf(f2,"%c %d \n",ch[i],4);
else
{ if (ch[i]=='TO')
fprintf(f2,"%c %d \n",ch[i],4);
else
{ if (ch[i]=='NOT')
fprintf(f2,"%c %d \n",ch[i],4);
else
{ if (ch[i]=='=')
fprintf(f2,"%c %d \n",ch[i],9);
else
{ if (ch[i]=='IF')
fprintf(f2,"%c %d \n",ch[i],4);
else
{ if (ch[i]=='THEN')
fprintf(f2,"%c %d \n",ch[i],4);
else
{ if (ch[i]=='LET')
fprintf(f2,"%c %d \n",ch[i],4);
/* else
if (ch[i]=='INPUT')
fprintf(f2,"%c %d \n",ch[i],4);*/
else
{ if (ch[i]=='NEXT')
fprintf(f2,"%c %d \n",ch[i],4);
/* else
if (ch[i]=='PRINT')
fprintf(f2,"%c %d \n",ch[i],4);*/
else
{ if (ch[i]=='<')
fprintf(f2,"%c %d \n",ch[i],9);
else
{ if (ch[i]=='< >')
fprintf(f2,"%c %d \n",ch[i],6);
else
{ if (ch[i]=='(')
fprintf(f2,"%c %d \n",ch[i],6);
else
{ if (ch[i]==')')
fprintf(f2,"%c %d \n",ch[i],6);
else
{ if (ch[i]=='\n')
fprintf(f2,"%c %d \n",ch[i],3);
else printf("недопустимый символ языка - %c \n",ch[i]);
}}}}}}}}}}}}}}}}}}}}}}}}}}
fclose(f1);
fclose(f2);
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2014, 22:13
Ответы с готовыми решениями:

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

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

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

лексический анализатор на С++
Написать лексический анализатор на С++: разделители: , . ; бинарные операции: + - * / унарные...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.11.2014, 22:13
Помогаю со студенческими работами здесь

Лексический анализатор
Здравствуйте. написать программу, которая выполняет лексический анализ входного текста в...

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru