diff options
author | AidenRushbrooke <72034940+AidenRushbrooke@users.noreply.github.com> | 2021-11-07 22:35:33 +0000 |
---|---|---|
committer | AidenRushbrooke <72034940+AidenRushbrooke@users.noreply.github.com> | 2021-11-07 22:35:33 +0000 |
commit | 975fb6f000918085d1f5ba4ac6eb95c60411dae9 (patch) | |
tree | 8dab2d0447e9e2dca9dc1b06d42d5331d55c4547 /src/Compiler/TokenScanner.java | |
parent | f8b888716211b78900db62ede497fa4ac2100c00 (diff) | |
download | esotericFORTRAN-975fb6f000918085d1f5ba4ac6eb95c60411dae9.tar.gz esotericFORTRAN-975fb6f000918085d1f5ba4ac6eb95c60411dae9.zip |
Added support for strings and improved print statement syntax
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); |