Trololololo

This commit is contained in:
Markus Hauschild
2013-06-01 14:32:48 +02:00
parent 9731b93a83
commit b159da0f03
2 changed files with 7 additions and 6 deletions

View File

@@ -30,14 +30,12 @@
#include "AST/ValueList.h"
#include "AST/VariableDefinition.h"
#include "llvm/Module.h"
}
%name scullyParser
%token_type {Token*}
%extra_argument{llvm::Module* mod}
%extra_argument{CodeGenVisitor* cv}
// whitespace and comments
%type T_WHITESPACE {int}
@@ -57,8 +55,8 @@
}
%type program {int}
program ::= fundef(F). { PrintVisitor* pv = new PrintVisitor; F->accept(pv); delete pv; }
program ::= expr(E). { PrintVisitor* pv = new PrintVisitor; E->accept(pv); delete pv; }
program ::= fundef(F). { PrintVisitor* pv = new PrintVisitor; F->accept(pv); F->accept(cv); delete pv; }
program ::= expr(E). { PrintVisitor* pv = new PrintVisitor; E->accept(pv); E->accept(cv); delete pv; }
%type fundef {FunctionDefinition*}
fundef(A) ::= type(T) T_IDENTIFIER(ID) T_LPAREN params(P) T_RPAREN T_BEGIN statements(S) T_END.

View File

@@ -6,6 +6,8 @@
#include "Token.h"
#include "AST/CodeGenVisitor.h"
#include "llvm/DerivedTypes.h"
#include "llvm/ExecutionEngine/ExecutionEngine.h"
#include "llvm/ExecutionEngine/JIT.h"
@@ -103,6 +105,7 @@ int main() {
fpm->doInitialization();
CodeGenVisitor* cv = new CodeGenVisitor();
void* parser = scullyParserAlloc(malloc);
@@ -124,7 +127,7 @@ int main() {
std::string s(results.start, results.end);
if (results.id != T_WHITESPACE) {
std::cout << "Id: " << results.id << ", Token: " << s << std::endl;
scullyParser(parser, results.id, new Token(s), module);
scullyParser(parser, results.id, new Token(s), cv);
}
} while (results.id != 0);