summaryrefslogtreecommitdiffstats
path: root/src/Compiler/TokenScanner.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/Compiler/TokenScanner.java')
-rw-r--r--src/Compiler/TokenScanner.java15
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);