New line shouldn't be the first token

This commit is contained in:
Rafał Grodziński
2025-07-01 17:06:52 +09:00
parent 729ffd0ea2
commit e4a2b84154
3 changed files with 9 additions and 4 deletions

View File

@@ -24,6 +24,10 @@ vector<shared_ptr<Token>> Lexer::getTokens() {
exit(1); exit(1);
} }
// Don't add new line as the first token
if (tokens.empty() && token->isOfKind({TokenKind::NEW_LINE}))
continue;
// Insert an additional new line just before end // Insert an additional new line just before end
if (token->getKind() == TokenKind::END && tokens.back()->getKind() != TokenKind::NEW_LINE) if (token->getKind() == TokenKind::END && tokens.back()->getKind() != TokenKind::NEW_LINE)
tokens.push_back(make_shared<Token>(TokenKind::NEW_LINE, "\n", token->getLine(), token->getColumn())); tokens.push_back(make_shared<Token>(TokenKind::NEW_LINE, "\n", token->getLine(), token->getColumn()));

View File

@@ -74,14 +74,14 @@ int main(int argc, char **argv) {
cout << endl << endl; cout << endl << endl;
} }
/*ModuleBuilder moduleBuilder(moduleName, inputFilePath, statements); ModuleBuilder moduleBuilder(moduleName, inputFilePath, statements);
shared_ptr<llvm::Module> module = moduleBuilder.getModule(); shared_ptr<llvm::Module> module = moduleBuilder.getModule();
if (isVerbose) { if (isVerbose) {
module->print(llvm::outs(), nullptr); module->print(llvm::outs(), nullptr);
} }
CodeGenerator codeGenerator(module); CodeGenerator codeGenerator(module);
codeGenerator.generateObjectFile(outputKind);*/ codeGenerator.generateObjectFile(outputKind);
return 0; return 0;
} }

View File

@@ -1,6 +1,7 @@
dummy sint32 <- 55 //dummy sint32 <- 55
stuff fun: num1 sint32, num2 sint32 -> sint32 stuff fun: num1 sint32, num2 sint32 -> sint32
rep: rep:
i <- i + 1 i <- i + 1
; ;
ret 42
; ;