Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include<iostream>
- #include<string>
- #include<map>
- #include<cctype>
- #include<sstream>
- int main()
- {
- setlocale(0, "Russian");
- using namespace std;
- enum Token_value
- {
- NAME, NUMBER, END,
- PLUS = '+', MINUS = '-', MUL = '*', DIV = '/',
- PRINT = ';', ASSIGN = '=', LP = '(', RP = ')'
- };
- Token_value curr_tok = PRINT;
- double number_value;
- string string_value;
- {
- Token_value get_token();
- {
- char ch;
- do {
- if (!cin.get(ch)) return curr_tok = END;
- } while (ch != '\n' && isspace(ch));
- switch (ch) {
- case ';':
- case '\n':
- return curr_tok = PRINT;
- case '*':
- case '/':
- case '+':
- case '-':
- case '(':
- case ')':
- case '=':
- return curr_tok = Token_value(ch);
- case '0': case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8': case '9':
- case '.':
- cin.putback(ch);
- cin >> number_value;
- return curr_tok = NUMBER;
- default:
- if (isalnum(ch))
- {
- string_value = ch;
- while (cin.get(ch) && isalnum(ch));
- string_value.push_back(ch);
- cin.putback(ch);
- return curr_tok = NAME;
- }
- cout << ("Использована недопустимая лексема \n");
- return curr_tok = PRINT;
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment