diff graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/Scanner.java @ 12752:71991b7a0f14

SL: Enhanced SimpleLanguage with support for if statements, function calls, function caching + inlining and builtins.
author Christian Humer <christian.humer@gmail.com>
date Mon, 11 Nov 2013 21:34:44 +0100
parents d7f8dd4fe876
children 7311354f5bf8
line wrap: on
line diff
--- a/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/Scanner.java	Thu Nov 07 20:55:13 2013 +0100
+++ b/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/Scanner.java	Mon Nov 11 21:34:44 2013 +0100
@@ -21,7 +21,8 @@
  * questions.
  */
 
-// The content of this file is automatically generated. DO NOT EDIT.
+ // The content of this file is automatically generated. DO NOT EDIT.
+
 
 package com.oracle.truffle.sl.parser;
 
@@ -311,8 +312,8 @@
 
     static final char EOL = '\n';
     static final int eofSym = 0;
-	static final int maxT = 28;
-	static final int noSym = 28;
+	static final int maxT = 29;
+	static final int noSym = 29;
 
 
     public Buffer buffer; // scanner buffer
@@ -336,33 +337,34 @@
     static {
         start = new StartStates();
         literals = new HashMap();
-		for (int i = 65; i <= 90; ++i) start.set(i, 1);
-		for (int i = 97; i <= 122; ++i) start.set(i, 1);
-		for (int i = 49; i <= 57; ++i) start.set(i, 4);
-		start.set(34, 2); 
-		start.set(48, 5); 
-		start.set(123, 6); 
-		start.set(125, 7); 
-		start.set(40, 8); 
-		start.set(41, 9); 
-		start.set(61, 23); 
-		start.set(59, 10); 
-		start.set(60, 24); 
-		start.set(62, 25); 
-		start.set(33, 14); 
-		start.set(43, 16); 
-		start.set(45, 17); 
-		start.set(42, 18); 
-		start.set(47, 19); 
-		start.set(35, 20); 
-		start.set(63, 21); 
-		start.set(58, 22); 
-		start.set(Buffer.EOF, -1);
-		literals.put("function", new Integer(4));
-		literals.put("while", new Integer(7));
-		literals.put("print", new Integer(12));
-		literals.put("return", new Integer(13));
-		literals.put("time", new Integer(27));
+		for (int i = 65; i <= 90; ++i) start.set(i, 1);
+		for (int i = 97; i <= 122; ++i) start.set(i, 1);
+		for (int i = 49; i <= 57; ++i) start.set(i, 4);
+		start.set(34, 2); 
+		start.set(48, 5); 
+		start.set(40, 6); 
+		start.set(44, 7); 
+		start.set(41, 8); 
+		start.set(123, 9); 
+		start.set(125, 10); 
+		start.set(59, 11); 
+		start.set(60, 24); 
+		start.set(62, 25); 
+		start.set(61, 26); 
+		start.set(33, 15); 
+		start.set(43, 17); 
+		start.set(45, 18); 
+		start.set(42, 19); 
+		start.set(47, 20); 
+		start.set(35, 21); 
+		start.set(63, 22); 
+		start.set(58, 23); 
+		start.set(Buffer.EOF, -1);
+		literals.put("function", new Integer(4));
+		literals.put("if", new Integer(11));
+		literals.put("else", new Integer(12));
+		literals.put("while", new Integer(13));
+		literals.put("return", new Integer(14));
 
     }
 
@@ -428,53 +430,53 @@
             tval = newBuf;
         }
         if (ch != Buffer.EOF) {
-			tval[tlen++] = (char)ch; 
+			tval[tlen++] = (char)ch; 
 
             NextCh();
         }
     }
 
-
-	boolean Comment0() {
-		int level = 1, pos0 = pos, line0 = line, col0 = col, charPos0 = charPos;
-		NextCh();
-		if (ch == '/') {
-			NextCh();
-			for(;;) {
-				if (ch == 10) {
-					level--;
-					if (level == 0) { oldEols = line - line0; NextCh(); return true; }
-					NextCh();
-				} else if (ch == Buffer.EOF) return false;
-				else NextCh();
-			}
-		} else {
-			buffer.setPos(pos0); NextCh(); line = line0; col = col0; charPos = charPos0;
-		}
-		return false;
-	}
-
-	boolean Comment1() {
-		int level = 1, pos0 = pos, line0 = line, col0 = col, charPos0 = charPos;
-		NextCh();
-		if (ch == '*') {
-			NextCh();
-			for(;;) {
-				if (ch == '*') {
-					NextCh();
-					if (ch == '/') {
-						level--;
-						if (level == 0) { oldEols = line - line0; NextCh(); return true; }
-						NextCh();
-					}
-				} else if (ch == Buffer.EOF) return false;
-				else NextCh();
-			}
-		} else {
-			buffer.setPos(pos0); NextCh(); line = line0; col = col0; charPos = charPos0;
-		}
-		return false;
-	}
+
+	boolean Comment0() {
+		int level = 1, pos0 = pos, line0 = line, col0 = col, charPos0 = charPos;
+		NextCh();
+		if (ch == '/') {
+			NextCh();
+			for(;;) {
+				if (ch == 10) {
+					level--;
+					if (level == 0) { oldEols = line - line0; NextCh(); return true; }
+					NextCh();
+				} else if (ch == Buffer.EOF) return false;
+				else NextCh();
+			}
+		} else {
+			buffer.setPos(pos0); NextCh(); line = line0; col = col0; charPos = charPos0;
+		}
+		return false;
+	}
+
+	boolean Comment1() {
+		int level = 1, pos0 = pos, line0 = line, col0 = col, charPos0 = charPos;
+		NextCh();
+		if (ch == '*') {
+			NextCh();
+			for(;;) {
+				if (ch == '*') {
+					NextCh();
+					if (ch == '/') {
+						level--;
+						if (level == 0) { oldEols = line - line0; NextCh(); return true; }
+						NextCh();
+					}
+				} else if (ch == Buffer.EOF) return false;
+				else NextCh();
+			}
+		} else {
+			buffer.setPos(pos0); NextCh(); line = line0; col = col0; charPos = charPos0;
+		}
+		return false;
+	}
 
 
     void CheckLiteral() {
@@ -516,69 +518,71 @@
                     t.kind = recKind;
                     break loop;
                 } // NextCh already done
-				case 1:
-					recEnd = pos; recKind = 1;
-					if (ch >= '0' && ch <= '9' || ch >= 'A' && ch <= 'Z' || ch >= 'a' && ch <= 'z') {AddCh(); state = 1; break;}
-					else {t.kind = 1; t.val = new String(tval, 0, tlen); CheckLiteral(); return t;}
-				case 2:
-					if (ch <= 9 || ch >= 11 && ch <= 12 || ch >= 14 && ch <= '!' || ch >= '#' && ch <= '[' || ch >= ']' && ch <= 65535) {AddCh(); state = 2; break;}
-					else if (ch == '"') {AddCh(); state = 3; break;}
-					else {state = 0; break;}
-				case 3:
-					{t.kind = 2; break loop;}
-				case 4:
-					recEnd = pos; recKind = 3;
-					if (ch >= '0' && ch <= '9') {AddCh(); state = 4; break;}
-					else {t.kind = 3; break loop;}
-				case 5:
-					{t.kind = 3; break loop;}
-				case 6:
-					{t.kind = 5; break loop;}
-				case 7:
-					{t.kind = 6; break loop;}
-				case 8:
-					{t.kind = 8; break loop;}
-				case 9:
-					{t.kind = 9; break loop;}
-				case 10:
-					{t.kind = 11; break loop;}
-				case 11:
-					{t.kind = 16; break loop;}
-				case 12:
-					{t.kind = 17; break loop;}
-				case 13:
-					{t.kind = 18; break loop;}
-				case 14:
-					if (ch == '=') {AddCh(); state = 15; break;}
-					else {state = 0; break;}
-				case 15:
-					{t.kind = 19; break loop;}
-				case 16:
-					{t.kind = 20; break loop;}
-				case 17:
-					{t.kind = 21; break loop;}
-				case 18:
-					{t.kind = 22; break loop;}
-				case 19:
-					{t.kind = 23; break loop;}
-				case 20:
-					{t.kind = 24; break loop;}
-				case 21:
-					{t.kind = 25; break loop;}
-				case 22:
-					{t.kind = 26; break loop;}
-				case 23:
-					recEnd = pos; recKind = 10;
-					if (ch == '=') {AddCh(); state = 13; break;}
-					else {t.kind = 10; break loop;}
-				case 24:
-					recEnd = pos; recKind = 14;
-					if (ch == '=') {AddCh(); state = 11; break;}
-					else {t.kind = 14; break loop;}
-				case 25:
-					recEnd = pos; recKind = 15;
-					if (ch == '=') {AddCh(); state = 12; break;}
-					else {t.kind = 15; break loop;}
+				case 1:
+					recEnd = pos; recKind = 1;
+					if (ch >= '0' && ch <= '9' || ch >= 'A' && ch <= 'Z' || ch >= 'a' && ch <= 'z') {AddCh(); state = 1; break;}
+					else {t.kind = 1; t.val = new String(tval, 0, tlen); CheckLiteral(); return t;}
+				case 2:
+					if (ch <= 9 || ch >= 11 && ch <= 12 || ch >= 14 && ch <= '!' || ch >= '#' && ch <= '[' || ch >= ']' && ch <= 65535) {AddCh(); state = 2; break;}
+					else if (ch == '"') {AddCh(); state = 3; break;}
+					else {state = 0; break;}
+				case 3:
+					{t.kind = 2; break loop;}
+				case 4:
+					recEnd = pos; recKind = 3;
+					if (ch >= '0' && ch <= '9') {AddCh(); state = 4; break;}
+					else {t.kind = 3; break loop;}
+				case 5:
+					{t.kind = 3; break loop;}
+				case 6:
+					{t.kind = 5; break loop;}
+				case 7:
+					{t.kind = 6; break loop;}
+				case 8:
+					{t.kind = 7; break loop;}
+				case 9:
+					{t.kind = 8; break loop;}
+				case 10:
+					{t.kind = 9; break loop;}
+				case 11:
+					{t.kind = 10; break loop;}
+				case 12:
+					{t.kind = 17; break loop;}
+				case 13:
+					{t.kind = 18; break loop;}
+				case 14:
+					{t.kind = 19; break loop;}
+				case 15:
+					if (ch == '=') {AddCh(); state = 16; break;}
+					else {state = 0; break;}
+				case 16:
+					{t.kind = 20; break loop;}
+				case 17:
+					{t.kind = 21; break loop;}
+				case 18:
+					{t.kind = 22; break loop;}
+				case 19:
+					{t.kind = 23; break loop;}
+				case 20:
+					{t.kind = 24; break loop;}
+				case 21:
+					{t.kind = 25; break loop;}
+				case 22:
+					{t.kind = 26; break loop;}
+				case 23:
+					{t.kind = 27; break loop;}
+				case 24:
+					recEnd = pos; recKind = 15;
+					if (ch == '=') {AddCh(); state = 12; break;}
+					else {t.kind = 15; break loop;}
+				case 25:
+					recEnd = pos; recKind = 16;
+					if (ch == '=') {AddCh(); state = 13; break;}
+					else {t.kind = 16; break loop;}
+				case 26:
+					recEnd = pos; recKind = 28;
+					if (ch == '=') {AddCh(); state = 14; break;}
+					else {t.kind = 28; break loop;}
 
             }
         }