Changed how functions are created
This commit is contained in:
@@ -123,53 +123,59 @@ namespace LXC::Lexer
|
||||
Util::ReturnVal tokens = TokenizeFile(fileContents);
|
||||
Internal::ExpectTokens(tokens,
|
||||
{
|
||||
Token::Identifier, // int
|
||||
Token::Identifier, // add
|
||||
Token::OpenParen, // (
|
||||
Token::Identifier, // int
|
||||
Token::Identifier, // a
|
||||
Token::Comma, // ,
|
||||
Token::Identifier, // int
|
||||
Token::Identifier, // b
|
||||
Token::CloseParen, // )
|
||||
Token::OpenBrace, // {
|
||||
Token::Return, // return
|
||||
Token::Identifier, // a
|
||||
Token::Add, // +
|
||||
Token::Identifier, // b
|
||||
Token::CloseBrace, // }
|
||||
Token::FunctionDef, // func
|
||||
Token::OpenCrocodile, // <
|
||||
Token::Identifier, // int
|
||||
Token::CloseCrocodile, // >
|
||||
Token::Identifier, // add
|
||||
Token::OpenParen, // (
|
||||
Token::Identifier, // int
|
||||
Token::Identifier, // a
|
||||
Token::Comma, // ,
|
||||
Token::Identifier, // int
|
||||
Token::Identifier, // b
|
||||
Token::CloseParen, // )
|
||||
Token::OpenBrace, // {
|
||||
Token::Return, // return
|
||||
Token::Identifier, // a
|
||||
Token::Add, // +
|
||||
Token::Identifier, // b
|
||||
Token::CloseBrace, // }
|
||||
|
||||
Token::Identifier, // int
|
||||
Token::Identifier, // main
|
||||
Token::OpenParen, // (
|
||||
Token::Identifier, // void
|
||||
Token::CloseParen, // )
|
||||
Token::OpenBrace, // {
|
||||
Token::Identifier, // int
|
||||
Token::Identifier, // c
|
||||
Token::Assign, // =
|
||||
Token::Identifier, // add
|
||||
Token::OpenParen, // (
|
||||
Token::NumLiteral, // 3
|
||||
Token::Comma, // ,
|
||||
Token::NumLiteral, // 4
|
||||
Token::CloseParen, // )
|
||||
Token::If, // if
|
||||
Token::OpenParen, // (
|
||||
Token::Identifier, // c
|
||||
Token::Eql, // ==
|
||||
Token::NumLiteral, // 7
|
||||
Token::CloseParen, // )
|
||||
Token::OpenBrace, // {
|
||||
Token::Return, // return
|
||||
Token::NumLiteral, // 0
|
||||
Token::CloseBrace, // }
|
||||
Token::Else, // else
|
||||
Token::OpenBrace, // {
|
||||
Token::Return, // return
|
||||
Token::NumLiteral, // 1
|
||||
Token::CloseBrace, // }
|
||||
Token::CloseBrace // }
|
||||
Token::FunctionDef, // func
|
||||
Token::OpenCrocodile, // <
|
||||
Token::Identifier, // int
|
||||
Token::CloseCrocodile, // >
|
||||
Token::Identifier, // main
|
||||
Token::OpenParen, // (
|
||||
Token::Identifier, // void
|
||||
Token::CloseParen, // )
|
||||
Token::OpenBrace, // {
|
||||
Token::Identifier, // int
|
||||
Token::Identifier, // c
|
||||
Token::Assign, // =
|
||||
Token::Identifier, // add
|
||||
Token::OpenParen, // (
|
||||
Token::NumLiteral, // 3
|
||||
Token::Comma, // ,
|
||||
Token::NumLiteral, // 4
|
||||
Token::CloseParen, // )
|
||||
Token::If, // if
|
||||
Token::OpenParen, // (
|
||||
Token::Identifier, // c
|
||||
Token::Eql, // ==
|
||||
Token::NumLiteral, // 7
|
||||
Token::CloseParen, // )
|
||||
Token::OpenBrace, // {
|
||||
Token::Return, // return
|
||||
Token::NumLiteral, // 0
|
||||
Token::CloseBrace, // }
|
||||
Token::Else, // else
|
||||
Token::OpenBrace, // {
|
||||
Token::Return, // return
|
||||
Token::NumLiteral, // 1
|
||||
Token::CloseBrace, // }
|
||||
Token::CloseBrace // }
|
||||
});
|
||||
}
|
||||
|
||||
@@ -180,73 +186,79 @@ namespace LXC::Lexer
|
||||
Util::ReturnVal tokens = TokenizeFile(fileContents);
|
||||
Internal::ExpectTokens(tokens,
|
||||
{
|
||||
Token::Identifier, // int
|
||||
Token::Identifier, // fib
|
||||
Token::OpenParen, // (
|
||||
Token::Identifier, // int
|
||||
Token::Identifier, // num
|
||||
Token::CloseParen, // )
|
||||
Token::OpenBrace, // {
|
||||
Token::FunctionDef, // func
|
||||
Token::OpenCrocodile, // <
|
||||
Token::Identifier, // int
|
||||
Token::CloseCrocodile, // >
|
||||
Token::Identifier, // fib
|
||||
Token::OpenParen, // (
|
||||
Token::Identifier, // int
|
||||
Token::Identifier, // num
|
||||
Token::CloseParen, // )
|
||||
Token::OpenBrace, // {
|
||||
|
||||
Token::If, // if
|
||||
Token::OpenParen, // (
|
||||
Token::Identifier, // n
|
||||
Token::Eql, // ==
|
||||
Token::NumLiteral, // 0
|
||||
Token::CloseParen, // )
|
||||
Token::OpenBrace, // {
|
||||
Token::Return, // return
|
||||
Token::NumLiteral, // 0
|
||||
Token::CloseBrace, // }
|
||||
Token::If, // if
|
||||
Token::OpenParen, // (
|
||||
Token::Identifier, // n
|
||||
Token::Eql, // ==
|
||||
Token::NumLiteral, // 0
|
||||
Token::CloseParen, // )
|
||||
Token::OpenBrace, // {
|
||||
Token::Return, // return
|
||||
Token::NumLiteral, // 0
|
||||
Token::CloseBrace, // }
|
||||
|
||||
Token::If, // if
|
||||
Token::OpenParen, // (
|
||||
Token::Identifier, // n
|
||||
Token::Eql, // ==
|
||||
Token::NumLiteral, // 1
|
||||
Token::CloseParen, // )
|
||||
Token::OpenBrace, // {
|
||||
Token::Return, // return
|
||||
Token::NumLiteral, // 1
|
||||
Token::CloseBrace, // }
|
||||
Token::If, // if
|
||||
Token::OpenParen, // (
|
||||
Token::Identifier, // n
|
||||
Token::Eql, // ==
|
||||
Token::NumLiteral, // 1
|
||||
Token::CloseParen, // )
|
||||
Token::OpenBrace, // {
|
||||
Token::Return, // return
|
||||
Token::NumLiteral, // 1
|
||||
Token::CloseBrace, // }
|
||||
|
||||
Token::Return, // return
|
||||
Token::Identifier, // fib
|
||||
Token::OpenParen, // (
|
||||
Token::Identifier, // n
|
||||
Token::Sub, // -
|
||||
Token::NumLiteral, // 1
|
||||
Token::CloseParen, // )
|
||||
Token::Return, // return
|
||||
Token::Identifier, // fib
|
||||
Token::OpenParen, // (
|
||||
Token::Identifier, // n
|
||||
Token::Sub, // -
|
||||
Token::NumLiteral, // 1
|
||||
Token::CloseParen, // )
|
||||
|
||||
Token::Add, // +
|
||||
Token::Add, // +
|
||||
|
||||
Token::Identifier, // fib
|
||||
Token::OpenParen, // (
|
||||
Token::Identifier, // n
|
||||
Token::Sub, // -
|
||||
Token::NumLiteral, // 2
|
||||
Token::CloseParen, // )
|
||||
Token::CloseBrace, // }
|
||||
Token::Identifier, // fib
|
||||
Token::OpenParen, // (
|
||||
Token::Identifier, // n
|
||||
Token::Sub, // -
|
||||
Token::NumLiteral, // 2
|
||||
Token::CloseParen, // )
|
||||
Token::CloseBrace, // }
|
||||
|
||||
Token::Identifier, // int
|
||||
Token::Identifier, // main
|
||||
Token::OpenParen, // (
|
||||
Token::Identifier, // void
|
||||
Token::CloseParen, // )
|
||||
Token::FunctionDef, // func
|
||||
Token::OpenCrocodile, // <
|
||||
Token::Identifier, // int
|
||||
Token::CloseCrocodile, // >
|
||||
Token::Identifier, // main
|
||||
Token::OpenParen, // (
|
||||
Token::Identifier, // void
|
||||
Token::CloseParen, // )
|
||||
|
||||
Token::OpenBrace, // {
|
||||
Token::Identifier, // int
|
||||
Token::Identifier, // res
|
||||
Token::Assign, // =
|
||||
Token::Identifier, // fib
|
||||
Token::OpenParen, // (
|
||||
Token::NumLiteral, // 8
|
||||
Token::CloseParen, // )
|
||||
Token::Return, // return
|
||||
Token::Identifier, // res
|
||||
Token::Eql, // ==
|
||||
Token::NumLiteral, // 21
|
||||
Token::CloseBrace // }
|
||||
Token::OpenBrace, // {
|
||||
Token::Identifier, // int
|
||||
Token::Identifier, // res
|
||||
Token::Assign, // =
|
||||
Token::Identifier, // fib
|
||||
Token::OpenParen, // (
|
||||
Token::NumLiteral, // 8
|
||||
Token::CloseParen, // )
|
||||
Token::Return, // return
|
||||
Token::Identifier, // res
|
||||
Token::Eql, // ==
|
||||
Token::NumLiteral, // 21
|
||||
Token::CloseBrace // }
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user