diff options
Diffstat (limited to 'src/Compiler/TokenScanner.java')
-rw-r--r-- | src/Compiler/TokenScanner.java | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/Compiler/TokenScanner.java b/src/Compiler/TokenScanner.java index 27501fa..f2fcab3 100644 --- a/src/Compiler/TokenScanner.java +++ b/src/Compiler/TokenScanner.java @@ -40,6 +40,7 @@ public class TokenScanner { case '*': createTokenNull(TokenType.STAR); break; case '/': createTokenNull(TokenType.SLASH); break; case ';': createTokenNull(TokenType.SEMI_COLON); break; + case ',': createTokenNull(TokenType.COMMA); break; //Some tokens are multiple characters long (==, <=) etc //so need to check next char as well @@ -75,6 +76,17 @@ public class TokenScanner { createTokenNull(TokenType.GREATER); break; } + case '"': + while(lookAhead()!='"' && !checkEOF()){ + currentLoc++; + } + if(checkEOF()){ + Language.displayError("Strings must end with \""); + break; + } + currentLoc++; + createToken(TokenType.STRING, sourceCode.substring(tokenStart, currentLoc+1)); + break; default: //Check for numer @@ -180,8 +192,11 @@ public class TokenScanner { static { keywords = new HashMap<>(); keywords.put("int", TokenType.INT); + keywords.put("len", TokenType.LEN); keywords.put("real", TokenType.REAL); + keywords.put("character", TokenType.STRING); keywords.put("print", TokenType.PRINT); + keywords.put("endprint", TokenType.ENDPRINT); keywords.put("if", TokenType.IF); keywords.put("then", TokenType.THEN); keywords.put("endif", TokenType.ENDIF); |