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

@@ -22,7 +22,11 @@ vector<shared_ptr<Token>> Lexer::getTokens() {
if (!token->isValid()) { if (!token->isValid()) {
cerr << "Unexpected character '" << token->getLexme() << "' at " << token->getLine() << ":" << token->getColumn() << endl; cerr << "Unexpected character '" << token->getLexme() << "' at " << token->getLine() << ":" << token->getColumn() << endl;
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)

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
; ;