AALanguage
The best language for those who have nothing to do
Loading...
Searching...
No Matches
Analyzer.h
Go to the documentation of this file.
1#pragma once
2
3#include <regex>
4#include <iostream>
5#include "LexicalAnalyzer.h"
6#include <exception>
7#include <stack>
8#include <unordered_set>
9#include <string>
10#include <cstdlib>
11#include <ctime>
12#include <random>
13#include <chrono>
14#include "Large.h"
15#include "Poliz.h"
16#include "Semantic.h"
17
19class Analyzer {
20public:
22 Analyzer();
29 void execute(std::string path, std::string lib_path);
30private:
35 std::vector<std::string> service_types = { "bool", "char", "byte", "double", "udouble", "float", "ufloat", "int", "uint", "long",
36 "ulong", "short", "ushort", "string", "large" };
37
41 void program(LexicalAnalyzer& lex);
61 void var_definitions(LexicalAnalyzer& lex, bool need_semicolon = true, bool is_program = false);
67 void type(LexicalAnalyzer& lex);
72 void function_or_var_definitions(LexicalAnalyzer& lex, bool is_program = false);
76 void function(LexicalAnalyzer& lex, bool is_struct = false);
80 void expression(LexicalAnalyzer& lex, bool is_vars = false, bool is_print = false);
88 void statement(LexicalAnalyzer& lex, bool prev_table = false);
89 void semicolon(LexicalAnalyzer& lex, bool is_important = false);
91
151 void field(LexicalAnalyzer& lex, bool only_array = false);
152
156 void if_statement(LexicalAnalyzer& lex);
179
188};