diff --git a/Module1/Lexer.cs b/Module1/Lexer.cs index 4b1146367f9e97ec612e3335bcfc6f6d3de3132a..2a840126bf42c5d38505c0444d17ac3f5f4e3e7b 100644 --- a/Module1/Lexer.cs +++ b/Module1/Lexer.cs @@ -68,13 +68,17 @@ namespace Lexer public override bool Parse() { NextCh(); + int sign = 1; if (currentCh == '+' || currentCh == '-') { + if (currentCh == '-') + sign *= -1; NextCh(); } if (char.IsDigit(currentCh)) { + parseResult = currentCh - '0'; NextCh(); } else @@ -84,10 +88,11 @@ namespace Lexer while (char.IsDigit(currentCh)) { + parseResult = parseResult * 10 + (currentCh - '0'); NextCh(); } - + parseResult *= sign; if (currentCharValue != -1) { Error(); @@ -114,8 +119,12 @@ namespace Lexer } public override bool Parse() - { - throw new NotImplementedException(); + { + if (builder.Length == 0) + Error(); + if (!(char.IsLetter(builder[0]) || builder[0] == '_')) + Error(); + //throw new NotImplementedException(); } }