Pretty naive import implementation. Still not complete.
parent
1088069b4e
commit
7ff93163f4
|
@ -0,0 +1,42 @@
|
||||||
|
/*
|
||||||
|
* ImportStatement.cpp
|
||||||
|
*
|
||||||
|
* Created on: Jan 7, 2013
|
||||||
|
* Author: att
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "ImportStatement.h"
|
||||||
|
|
||||||
|
ImportStatement::ImportStatement(std::string name_of_module, ContextManager * context_manager) :
|
||||||
|
name_of_module(name_of_module), context_manager(context_manager){
|
||||||
|
//Hrum hrum magic
|
||||||
|
|
||||||
|
std::ifstream module_file(name_of_module);
|
||||||
|
std::string module_source_text = "";
|
||||||
|
std::string line;
|
||||||
|
Lexer lexer;
|
||||||
|
vector<Token> tokens;
|
||||||
|
Parser parser(context_manager);
|
||||||
|
if (module_file.is_open())
|
||||||
|
{
|
||||||
|
while ( module_file.good() )
|
||||||
|
{
|
||||||
|
getline (module_file, line);
|
||||||
|
module_source_text += line;
|
||||||
|
tokens = lexer.parse_line(line);
|
||||||
|
parser.add_tokens(tokens);
|
||||||
|
}
|
||||||
|
module_file.close();
|
||||||
|
}
|
||||||
|
import_body = parser.interpret();
|
||||||
|
children.push_back(import_body);
|
||||||
|
}
|
||||||
|
|
||||||
|
ImportStatement::~ImportStatement() {
|
||||||
|
// TODO Auto-generated destructor stub
|
||||||
|
}
|
||||||
|
|
||||||
|
SenchaObject ImportStatement::execute()
|
||||||
|
{
|
||||||
|
return import_body->execute();
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
/*
|
||||||
|
* ImportStatement.h
|
||||||
|
*
|
||||||
|
* Created on: Jan 7, 2013
|
||||||
|
* Author: att
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef IMPORTSTATEMENT_H_
|
||||||
|
#define IMPORTSTATEMENT_H_
|
||||||
|
|
||||||
|
#include <fstream>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
#include "ASTStatement.h"
|
||||||
|
#include "../Parser.h"
|
||||||
|
#include "../Lexer.h"
|
||||||
|
#include "../ContextManager.h"
|
||||||
|
|
||||||
|
class ImportStatement: public ASTStatement {
|
||||||
|
public:
|
||||||
|
std::string name_of_module;
|
||||||
|
ContextManager * context_manager;
|
||||||
|
|
||||||
|
ImportStatement(std::string name_of_module, ContextManager * context_manager);
|
||||||
|
ProgramNode * import_body;
|
||||||
|
SenchaObject execute();
|
||||||
|
virtual ~ImportStatement();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* IMPORTSTATEMENT_H_ */
|
Loading…
Reference in New Issue