Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <string.h>
- #include "Classes.h"
- using namespace std;
- int TranslateInput(char *);
- char * CheckUVars(char*);
- ifstream file("input");
- char buffer[256];
- char tbuffer[256];
- bool Quit = false;
- int TranslateInput(char * Command)
- {
- if(Translate.userVars(buffer) != "")
- {
- GetOperations:
- strcpy(tbuffer, buffer);
- file >> buffer;
- switch(Translate.Operations(buffer))
- {
- case PLUSPLUS:
- {
- int t = atol(Translate.userVars(tbuffer));
- t++;
- Translate.AddValue(tbuffer, t);
- }
- break;
- case MINUSMINUS:
- {
- int t = atol(Translate.userVars(tbuffer));
- t--;
- Translate.AddValue(tbuffer, t);
- }
- break;
- case DIVDIV:
- {
- Translate.AddValue(tbuffer, 1);
- }
- break;
- case MULMUL:
- {
- int t = atol(Translate.userVars(tbuffer));
- t *= t;
- Translate.AddValue(tbuffer, t);
- }
- break;
- case ADD:
- {
- double one = atol(Translate.userVars(tbuffer));
- file >> buffer;
- if(strcmp(buffer, "=") == 0)
- file >> buffer;
- double two;
- two = atol(Translate.userVars(buffer));
- if(two == 0)
- two = atol(buffer);
- one += two;
- Translate.AddValue(tbuffer, one);
- }
- break;
- case SUB:
- {
- double one = atol(Translate.userVars(tbuffer));
- file >> buffer;
- if(strcmp(buffer, "=") == 0)
- file >> buffer;
- double two;
- two = atol(Translate.userVars(buffer));
- if(two == 0)
- two = atol(buffer);
- one -= two;
- Translate.AddValue(tbuffer, one);
- }
- break;
- case MUL:
- {
- double one = atol(Translate.userVars(tbuffer));
- file >> buffer;
- if(strcmp(buffer, "=") == 0)
- file >> buffer;
- double two;
- two = atol(Translate.userVars(buffer));
- if(two == 0)
- two = atol(buffer);
- one *= two;
- Translate.AddValue(tbuffer, one);
- }
- break;
- case DIV:
- {
- double one = atol(Translate.userVars(tbuffer));
- file >> buffer;
- if(strcmp(buffer, "=") == 0)
- file >> buffer;
- double two;
- two = atol(Translate.userVars(buffer));
- if(two == 0)
- two = atol(buffer);
- one /= two;
- Translate.AddValue(tbuffer, one);
- }
- break;
- case EQUALS:
- {
- file >> buffer;
- goto GetOperations;
- }
- default:
- break;
- }
- }
- //var a = 100
- if(strcmp(Command, "var") == 0)
- {
- file>>buffer;
- strcpy(uVars[uCounter], buffer);
- file>>buffer;
- file>>buffer;
- strcpy(uValue[uCounter], buffer);
- uCounter++;
- return 0;
- }
- if(strcmp(Command, "exit") == 0)
- {
- Quit = true;
- }
- //cmp a b
- //goto :z if true
- //goto :x if false
- if(strcmp(Command, "cmp") == 0 || strcmp(Command, "compare") == 0)
- {
- file >> buffer;
- if(Translate.userVars(buffer) != "")
- strcpy(buffer, Translate.userVars(buffer));
- file >> tbuffer;
- if(Translate.userVars(tbuffer) != "")
- strcpy(tbuffer, Translate.userVars(tbuffer));
- bool Tester;
- if(strcmp(buffer, tbuffer) == 0)
- Tester = true;
- else
- Tester = false;
- file >> buffer;
- file >> tbuffer;
- file >> buffer;
- file >> buffer;
- if(strcmp(buffer, "true") == 0)
- {
- if(Tester == true)
- {
- while(strcmp(buffer, tbuffer) != 0)
- file >> buffer;
- return 0;
- }
- }
- file >> buffer;
- file >> tbuffer;
- file >> buffer;
- file >> buffer;
- if(strcmp(buffer, "false") == 0)
- {
- if(Tester == false)
- {
- while(strcmp(buffer, tbuffer) != 0)
- file >> buffer;
- }
- }
- else TranslateInput(buffer);
- }
- if(strcmp(Command, "out") == 0)
- {
- file>>buffer;
- if(Translate.userVars(buffer) != "")
- {
- cout<<Translate.userVars(buffer);
- return 0;
- }
- else if (strcmp(buffer,"break") == 0 || strcmp(buffer,"Break") == 0 )
- {
- cout<<endl;
- }
- else if (strcmp(buffer,"\"") == 0)
- {
- char nBuffer[256];
- file>>buffer;
- strcpy(nBuffer, buffer);
- strcat(nBuffer, " ");
- file>>buffer;
- while(strcmp(buffer,"\"") != 0)
- {
- strcat(nBuffer, buffer);
- strcat(nBuffer, " ");
- file>>buffer;
- if (strcmp(buffer,"\"") == 0)
- break;
- }
- cout<<nBuffer;
- }
- return 0;
- }
- if(strcmp(Command, "in") == 0)
- {
- file>>buffer;
- if(Translate.userVars(buffer) != "")
- {
- cin.getline(tbuffer,256);
- Translate.AddValue(buffer,tbuffer);
- return 0;
- }
- return 0;
- }
- return 1;
- }
Add Comment
Please, Sign In to add comment