From c55a3434dec7751b8252ff7d9ee45e28e72d0360 Mon Sep 17 00:00:00 2001 From: Garritt McCune Date: Tue, 15 Feb 2022 16:32:35 +0000 Subject: [PATCH] Implemented identifier detection but keywords in the programming language aren't detected yet. --- scanner.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/scanner.c b/scanner.c index 4e88100..5b2c0e4 100644 --- a/scanner.c +++ b/scanner.c @@ -21,6 +21,8 @@ char Peek(void); char PeekNext(void); void ParseString(TokenList *); void ParseNumber(TokenList *); +void ParseIdentifier(TokenList *); +int IsAlpha(char c); TokenList* ScanTokens(const char* source) { if (!source) return NULL; @@ -181,6 +183,9 @@ void ScanToken(TokenList* tokens) { if (isdigit(*c)) { ParseNumber(tokens); break; + } else if (IsAlpha(*c)) { + ParseIdentifier(tokens); + break; } fprintf(stderr, "Unexcpedted character %c\n", *c); @@ -245,4 +250,16 @@ char PeekNext() { if (current + 1 >= length) return '\0'; return source_code[current + 1]; +} + +void ParseIdentifier(TokenList * list) { + while(IsAlpha(Peek())) Advance(); + + AddTokenToList(Identifier, &source_code[start], current - start, list); +} + +int IsAlpha(char c) { + return (c >= 'a' && c <= 'z') || + (c >= 'A' && c <= 'Z') || + (c == '_'); } \ No newline at end of file