Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <vector>
- #include <algorithm>
- using namespace std;
- enum status
- {
- Start = 0,
- PossibleComment = 1,
- Comment1 = 2,
- Comment2 = 3,
- PossibleEnd = 4,
- Char = 5,
- String = 6,
- Ecran = 7,
- PSD = 8,
- PDD = 9,
- PCD = 10,
- ERROR = 11,
- EOD = 12,
- PCDD = 13,
- PCED = 14,
- PCESD = 15
- };
- int main ()
- {
- vector <char> mas;
- ifstream fin("input.txt");
- ofstream fout("output.txt");
- ofstream fouts("outputs.txt");
- status st = Start;
- bool checkL = 0, check1 = 0, checkF = 0, check2 = 0;
- if (fin)
- {
- char symbol;
- while (fin.get(symbol))
- {
- cout << symbol;
- switch (st)
- {
- case Start:
- if (symbol == '/')
- {
- st = PossibleComment;
- break;
- }
- else if (symbol == '\'')
- {
- st = Char;
- fout << symbol;
- break;
- }
- else if (symbol == '"')
- {
- st = String;
- fout << symbol;
- break;
- }
- else if (symbol == '+' || symbol == '-')
- {
- st = PSD;
- fout << symbol;
- mas.push_back(symbol);
- break;
- }
- else if (symbol >= '0' && symbol <= '9')
- {
- st = PCD;
- fout << symbol;
- mas.push_back(symbol);
- break;
- }
- else if (symbol == '.')
- {
- st = PDD;
- fout << symbol;
- mas.push_back(symbol);
- break;
- }
- else
- {
- st = Start;
- fout << symbol;
- break;
- }
- case PSD:
- if (symbol == '+' || symbol == '-')
- {
- st = PSD;
- fout << symbol;
- mas.clear();
- mas.push_back(symbol);
- break;
- }
- else if (symbol >= '0' || symbol <= '9')
- {
- mas.push_back(symbol);
- fout << symbol;
- st = PCD;
- break;
- }
- else if (symbol == '.')
- {
- mas.push_back(symbol);
- fout << symbol;
- st = PDD;
- break;
- }
- else
- {
- mas.clear();
- fout << symbol;
- st = Start;
- break;
- }
- case PDD:
- if (symbol >= '0' && symbol <= '9')
- {
- mas.push_back(symbol);
- fout << symbol;
- st = PCD;
- break;
- }
- else
- {
- mas.clear();
- fout << symbol;
- st = Start;
- break;
- }
- case PCD:
- if (symbol >= '0' && symbol <= '9')
- {
- mas.push_back(symbol);
- fout << symbol;
- st = PCD;
- break;
- }
- else if (symbol == '.')
- {
- mas.push_back(symbol);
- fout << symbol;
- st = PCDD;
- break;
- }
- else if (symbol == 'e' || symbol == 'E')
- {
- mas.push_back(symbol);
- fout << symbol;
- st = PCED;
- break;
- }
- else if (symbol == 'l' || symbol == 'L' || symbol == 'f' || symbol == 'F')
- {
- mas.push_back(symbol);
- fout << symbol;
- st = EOD;
- break;
- }
- else if (symbol == ' ' || symbol == '\n' || symbol == '\t' || symbol == ';' || symbol == '\0' || symbol == '*' || symbol == '/' || symbol == '=')
- {
- for (int i = 0; i < mas.size(); i++)
- {
- fouts << mas[i];
- }
- fouts << " ERROR" << endl;
- mas.clear();
- st = Start;
- break;
- }
- else if (symbol == '-' || symbol == '+')
- {
- st = ERROR;
- mas.push_back(symbol);
- fout << symbol;
- break;
- }
- else
- {
- mas.push_back(symbol);
- fout << symbol;
- st = ERROR;
- break;
- }
- case PCDD:
- if (symbol >= '0' && symbol <= '9')
- {
- mas.push_back(symbol);
- fout << symbol;
- st = PCDD;
- break;
- }
- else if (symbol == 'e' || symbol == 'E')
- {
- mas.push_back(symbol);
- fout << symbol;
- st = PCED;
- break;
- }
- else if (symbol == 'l' || symbol == 'L' || symbol == 'f' || symbol == 'F')
- {
- mas.push_back(symbol);
- fout << symbol;
- st = EOD;
- break;
- }
- else if (symbol == ' ' || symbol == '\n' || symbol == '\t' || symbol == ';' || symbol == '\0' || symbol == '*' || symbol == '/' || symbol == '=')
- {
- for (int i = 0; i < mas.size(); i++)
- {
- fouts << mas[i];
- }
- fouts << " DOUBLE" << endl;
- mas.clear();
- st = Start;
- break;
- }
- else
- {
- mas.push_back(symbol);
- fout << symbol;
- st = ERROR;
- break;
- }
- case PCED:
- if (symbol >= '0' && symbol <= '9')
- {
- mas.push_back(symbol);
- fout << symbol;
- st = PCED;
- break;
- }
- else if (symbol == '+' || symbol == '-')
- {
- mas.push_back(symbol);
- fout << symbol;
- st = PCESD;
- break;
- }
- else if (symbol == 'l' || symbol == 'L' || symbol == 'f' || symbol == 'F')
- {
- mas.push_back(symbol);
- fout << symbol;
- st = EOD;
- break;
- }
- else if ((symbol == ' ' || symbol == '\n' || symbol == '\t' || symbol == ';' || symbol == '\0' || symbol == '*' || symbol == '/' || symbol == '=' || symbol == '+' || symbol == '-') && (mas[mas.size()-1] == 'l' || mas[mas.size()-1] == 'L'))
- {
- for (int i = 0; i < mas.size(); i++)
- {
- fouts << mas[i];
- }
- fouts << " LONG DOUBLE" << endl;
- st = Start;
- mas.clear();
- break;
- }
- else if ((symbol == ' ' || symbol == '\n' || symbol == '\t' || symbol == ';' || symbol == '\0' || symbol == '*' || symbol == '/' || symbol == '=' || symbol == '+' || symbol == '-') && (mas[mas.size()-1] == 'f' || mas[mas.size()-1] == 'F'))
- {
- for (int i = 0; i < mas.size(); i++)
- {
- fouts << mas[i];
- }
- fouts << " FLOAT" << endl;
- st = Start;
- mas.clear();
- break;
- }
- else if (symbol == ' ' || symbol == '\n' || symbol == '\t' || symbol == ';' || symbol == '\0' || symbol == '*' || symbol == '/' || symbol == '=' || symbol == '+' || symbol == '-')
- {
- for (int i = 0; i < mas.size(); i++)
- {
- fouts << mas[i];
- }
- fouts << " DOUBLE" << endl;
- st = Start;
- mas.clear();
- break;
- }
- else
- {
- fout << symbol;
- st = ERROR;
- mas.push_back(symbol);
- break;
- }
- case PCESD:
- if (symbol >= '0' && symbol <= '9')
- {
- mas.push_back(symbol);
- fout << symbol;
- st = PCESD;
- break;
- }
- else if (symbol == '+' || symbol == '-')
- {
- mas.push_back(symbol);
- fout << symbol;
- st = ERROR;
- break;
- }
- else if (symbol == 'l' || symbol == 'L' || symbol == 'f' || symbol == 'F')
- {
- mas.push_back(symbol);
- fout << symbol;
- st = EOD;
- break;
- }
- else if (symbol == ' ' || symbol == '\n' || symbol == '\t' || symbol == ';' || symbol == '\0' || symbol == '*' || symbol == '/' || symbol == '=' || symbol == '+' || symbol == '-')
- {
- for (int i = 0; i < mas.size(); i++)
- {
- fouts << mas[i];
- }
- fouts << " DOUBLE" << endl;
- st = Start;
- mas.clear();
- break;
- }
- else
- {
- st = ERROR;
- mas.push_back(symbol);
- fout << symbol;
- break;
- }
- case EOD:
- if ((symbol == ' ' || symbol == '\n' || symbol == '\t' || symbol == ';' || symbol == '\0' || symbol == '*' || symbol == '/' || symbol == '=' || symbol == '+' || symbol == '-') && (mas[mas.size()-1] == 'l' || mas[mas.size()-1] == 'L'))
- {
- for (int i = 0; i < mas.size(); i++)
- {
- fouts << mas[i];
- }
- fouts << " LONG DOUBLE" << endl;
- st = Start;
- mas.clear();
- break;
- }
- else if ((symbol == ' ' || symbol == '\n' || symbol == '\t' || symbol == ';' || symbol == '\0' || symbol == '*' || symbol == '/' || symbol == '=' || symbol == '+' || symbol == '-') && (mas[mas.size()-1] == 'f' || mas[mas.size()-1] == 'F'))
- {
- for (int i = 0; i < mas.size(); i++)
- {
- fouts << mas[i];
- }
- fouts << " FLOAT" << endl;
- st = Start;
- mas.clear();
- break;
- }
- else if (symbol == ' ' || symbol == '\n' || symbol == '\t' || symbol == ';' || symbol == '\0' || symbol == '*' || symbol == '/' || symbol == '=' || symbol == '+' || symbol == '-')
- {
- for (int i = 0; i < mas.size(); i++)
- {
- fouts << mas[i];
- }
- fouts << " DOUBLE" << endl;
- st = Start;
- mas.clear();
- break;
- }
- else
- {
- fout << symbol;
- st = ERROR;
- mas.push_back(symbol);
- break;
- }
- case ERROR:
- if (symbol == ' ' || symbol == '\n' || symbol == '\t' || symbol == ';' || symbol == '\0' || symbol == '*' || symbol == '/' || symbol == '=' || symbol == '+' || symbol == '-')
- {
- for (int i = 0; i < mas.size(); i++)
- {
- fouts << mas[i];
- }
- fouts << " ERROR" << endl;
- mas.clear();
- st = Start;
- break;
- }
- else
- {
- st = ERROR;
- mas.push_back(symbol);
- fout << symbol;
- break;
- }
- case PossibleComment:
- if (symbol == '/')
- {
- st = Comment1;
- break;
- }
- else
- {
- if (symbol == '*')
- {
- st = Comment2;
- break;
- }
- else
- {
- fout << symbol;
- break;
- }
- }
- case Comment1:
- if (symbol == '\n')
- {
- st = Start;
- fout<<symbol;
- }
- break;
- case Comment2:
- if (symbol == '*')
- {
- st = PossibleEnd;
- break;
- }
- else
- {
- break;
- }
- case PossibleEnd:
- if (symbol == '/')
- {
- st = Start;
- break;
- }
- else if(symbol == '*')
- {
- break;
- }
- else
- {
- st = Comment2;
- break;
- }
- case Char:
- if (symbol == '\'' || symbol == '\n')
- {
- fout << symbol;
- st = Start;
- break;
- }
- else
- {
- if (symbol == '\\')
- {
- fout << symbol;
- st = Ecran;
- break;
- }
- else
- {
- fout << symbol;
- break;
- }
- }
- case String:
- if (symbol == '"' || symbol == '\n')
- {
- fout << symbol;
- st = Start;
- break;
- }
- else
- {
- if (symbol == '\\')
- {
- fout << symbol;
- st = Ecran;
- break;
- }
- else
- {
- fout << symbol;
- break;
- }
- }
- case Ecran:
- if (symbol == '\'')
- {
- fout << symbol;
- st = Char;
- break;
- }
- else
- {
- if (symbol == '"')
- {
- fout << symbol;
- st = String;
- break;
- }
- else
- {
- fout << symbol;
- st = Start;
- break;
- }
- }
- }
- }
- }
- fin.close(); fout.close(); fouts.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement