Trololololo
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user