-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathinterpretercore.cpp
More file actions
85 lines (69 loc) · 2.13 KB
/
interpretercore.cpp
File metadata and controls
85 lines (69 loc) · 2.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include "interpretercore.h"
#include <string>
#include <QDebug>
#include <QFile>
#include <QTextStream>
#undef emit
#undef SIGNAL
#include "antlr4-runtime.h"
#define emit
#include "generated/TLexer.h"
#include "generated/TParser.h"
#include "generated/TParserBaseListener.h"
using namespace antlrcpptest;
using namespace antlr4;
InterpreterCore::InterpreterCore()
{
}
int InterpreterCore::base()
{
QFile file("/home/fatemeh/Documents/movement.txt");
if(!file.open(QIODevice::ReadOnly)){
qDebug("error");
}
QTextStream in(&file);
QString s = in.readAll();
return parsText(s);
// ANTLRInputStream input( s.toStdString());
// TLexer lexer(&input);
// CommonTokenStream tokens(&lexer);
// tokens.fill();
// /*for (auto token : tokens.getTokens()) {
// //std::cout << token->toString() << std::endl;
// std::string text = token->getText();
// std::cout << text << std::endl;
// }*/
// TParser parser(&tokens);
// tree::ParseTree* tree = parser.module();
// //std::cout << tree->toStringTree(&parser) << std::endl << std::endl;
// TParserBaseListener* listener = new TParserBaseListener;
// tree::ParseTreeWalker* walker = new tree::ParseTreeWalker();
// walker->walk(listener, tree);
// return 0;
}
int InterpreterCore::parsText(QString s)
{
// QFile file("/home/fatemeh/Documents/movement.txt");
// if(!file.open(QIODevice::ReadOnly)){
// qDebug("error");
// }
// QTextStream in(&file);
// QString s = in.readAll();
ANTLRInputStream input( s.toStdString());
TLexer lexer(&input);
CommonTokenStream tokens(&lexer);
tokens.fill();
/*for (auto token : tokens.getTokens()) {
//std::cout << token->toString() << std::endl;
std::string text = token->getText();
std::cout << text << std::endl;
}*/
TParser parser(&tokens);
tree::ParseTree* tree = parser.module();
//std::cout << tree->toStringTree(&parser) << std::endl << std::endl;
TParserBaseListener* listener = new TParserBaseListener;
tree::ParseTreeWalker* walker = new tree::ParseTreeWalker();
walker->walk(listener, tree);
return 0;
}
;