Changed how functions are created

This commit is contained in:
Pasha Bibko
2025-07-23 21:58:23 +01:00
parent 004f859cc7
commit 28049ece94
6 changed files with 144 additions and 118 deletions

View File

@@ -29,7 +29,8 @@ namespace LXC::Internal
c == ',' || c == '[' ||
c == ']' || c == '{' ||
c == '}' || c == '(' ||
c == ')';
c == ')' || c == '<' ||
c == '>';
}
static const std::unordered_map<std::string_view, Lexer::Token::TokenType> symbolAndOpMap =
@@ -52,17 +53,21 @@ namespace LXC::Internal
{ "{", Lexer::Token::OpenBrace },
{ ")", Lexer::Token::CloseParen },
{ "(", Lexer::Token::OpenParen }
{ "(", Lexer::Token::OpenParen },
{ ">", Lexer::Token::CloseCrocodile },
{ "<", Lexer::Token::OpenCrocodile }
};
static const std::unordered_map<std::string_view, Lexer::Token::TokenType> keywords =
{
{ "for", Lexer::Token::For },
{ "while", Lexer::Token::While },
{ "if", Lexer::Token::If },
{ "elif", Lexer::Token::ElseIf },
{ "else", Lexer::Token::Else },
{ "return", Lexer::Token::Return }
{ "for", Lexer::Token::For },
{ "while", Lexer::Token::While },
{ "if", Lexer::Token::If },
{ "elif", Lexer::Token::ElseIf },
{ "else", Lexer::Token::Else },
{ "return", Lexer::Token::Return },
{ "func", Lexer::Token::FunctionDef },
};
}

View File

@@ -75,6 +75,8 @@ namespace LXC::Lexer
TOKEN_TYPE_CASE(Token::Else);
TOKEN_TYPE_CASE(Token::Return);
TOKEN_TYPE_CASE(Token::FunctionDef);
TOKEN_TYPE_CASE(Token::StringLiteral);
TOKEN_TYPE_CASE(Token::NumLiteral);
TOKEN_TYPE_CASE(Token::Identifier);
@@ -86,6 +88,8 @@ namespace LXC::Lexer
TOKEN_TYPE_CASE(Token::OpenBrace);
TOKEN_TYPE_CASE(Token::CloseParen);
TOKEN_TYPE_CASE(Token::OpenParen);
TOKEN_TYPE_CASE(Token::CloseCrocodile);
TOKEN_TYPE_CASE(Token::OpenCrocodile);
TOKEN_TYPE_CASE(Token::Comma);
TOKEN_TYPE_CASE(Token::End_of_file);