lexing and parsing unary operators
This commit is contained in:
parent
b2c2a2f497
commit
202c1d2ca2
21 changed files with 290 additions and 130 deletions
|
|
@ -47,6 +47,9 @@ namespace Compiler.Lexer
|
|||
patterns.Add(new Pattern(@"^;", TokenType.SemicolonToken));
|
||||
patterns.Add(new Pattern(@"^[a-zA-Z]\w*", TokenType.IdentifierToken));
|
||||
patterns.Add(new Pattern(@"^[0-9]+", TokenType.IntegerLiteralToken));
|
||||
patterns.Add(new Pattern(@"^-", TokenType.NegationToken));
|
||||
patterns.Add(new Pattern(@"^~", TokenType.BitwiseComplementToken));
|
||||
patterns.Add(new Pattern(@"^!", TokenType.LogicalNegationToken));
|
||||
|
||||
//try each pattern do determine if it is the one matching at the beginning
|
||||
//TODO: There sure is room for optimization here
|
||||
|
|
@ -83,6 +86,10 @@ namespace Compiler.Lexer
|
|||
case TokenType.CloseBraceToken:
|
||||
case TokenType.IntToken:
|
||||
case TokenType.SemicolonToken:
|
||||
case TokenType.NegationToken:
|
||||
case TokenType.BitwiseComplementToken:
|
||||
case TokenType.LogicalNegationToken:
|
||||
case TokenType.InvalidToken:
|
||||
break;
|
||||
default:
|
||||
t.TokenType = TokenType.InvalidToken;
|
||||
|
|
|
|||
|
|
@ -11,6 +11,11 @@ namespace Compiler.Lexer
|
|||
SemicolonToken,
|
||||
IdentifierToken,
|
||||
IntegerLiteralToken,
|
||||
|
||||
//unary operator tokens
|
||||
NegationToken,
|
||||
BitwiseComplementToken,
|
||||
LogicalNegationToken,
|
||||
|
||||
//special Token to represent invalid matches
|
||||
InvalidToken,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue