changeset 12759:cabef8844203

Delete accidentially commited files.
author Roland Schatz <roland.schatz@oracle.com>
date Tue, 12 Nov 2013 12:07:49 +0100
parents ca33948fb804
children aeb651f3c5d9
files graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/Parser.java.old graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/Scanner.java.old
diffstat 2 files changed, 0 insertions(+), 1156 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/Parser.java.old	Tue Nov 12 11:01:42 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,506 +0,0 @@
-/*
- * Copyright (c) 2012, 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
- // The content of this file is automatically generated. DO NOT EDIT.
-
-
-package com.oracle.truffle.sl.parser;
-
-import java.util.*;
-
-import com.oracle.truffle.sl.*;
-import com.oracle.truffle.sl.nodes.*;
-
-// Checkstyle: stop
-// @formatter:off
-public class Parser {
-	public static final int _EOF = 0;
-	public static final int _identifier = 1;
-	public static final int _stringLiteral = 2;
-	public static final int _numericLiteral = 3;
-	public static final int maxT = 29;
-
-    static final boolean T = true;
-    static final boolean x = false;
-    static final int minErrDist = 2;
-
-    public Token t; // last recognized token
-    public Token la; // lookahead token
-    int errDist = minErrDist;
-
-    public final Scanner scanner;
-    public final Errors errors;
-    private final SLNodeFactory factory;
-    
-    public Parser(Scanner scanner, SLNodeFactory factory) {
-        this.scanner = scanner;
-        this.factory = factory;
-        errors = new Errors();
-    }
-
-    void SynErr(int n) {
-        if (errDist >= minErrDist)
-            errors.SynErr(la.line, la.col, n);
-        errDist = 0;
-    }
-
-    public void SemErr(String msg) {
-        if (errDist >= minErrDist)
-            errors.SemErr(t.line, t.col, msg);
-        errDist = 0;
-    }
-
-    void Get() {
-        for (;;) {
-            t = la;
-            la = scanner.Scan();
-            if (la.kind <= maxT) {
-                ++errDist;
-                break;
-            }
-
-            la = t;
-        }
-    }
-
-    void Expect(int n) {
-        if (la.kind == n)
-            Get();
-        else {
-            SynErr(n);
-        }
-    }
-
-    boolean StartOf(int s) {
-        return set[s][la.kind];
-    }
-
-    void ExpectWeak(int n, int follow) {
-        if (la.kind == n)
-            Get();
-        else {
-            SynErr(n);
-            while (!StartOf(follow))
-                Get();
-        }
-    }
-
-    boolean WeakSeparator(int n, int syFol, int repFol) {
-        int kind = la.kind;
-        if (kind == n) {
-            Get();
-            return true;
-        } else if (StartOf(repFol))
-            return false;
-        else {
-            SynErr(n);
-            while (!(set[syFol][kind] || set[repFol][kind] || set[0][kind])) {
-                Get();
-                kind = la.kind;
-            }
-            return StartOf(syFol);
-        }
-    }
-
-	void SimpleLanguage() {
-		Function();
-		while (la.kind == 4) {
-			Function();
-		}
-	}
-
-	void Function() {
-		Expect(4);
-		factory.startFunction(); 
-		Expect(1);
-		String name = t.val; 
-		List<String> parameterNames = new ArrayList<>(); 
-		if (la.kind == 5) {
-			Get();
-			if (la.kind == 1) {
-				Get();
-				parameterNames.add(t.val); 
-			}
-			while (la.kind == 6) {
-				Get();
-				Expect(1);
-				parameterNames.add(t.val); 
-			}
-			Expect(7);
-		}
-		StatementNode body = Block();
-		factory.createFunction(body, name, parameterNames.toArray(new String[parameterNames.size()])); 
-	}
-
-	StatementNode  Block() {
-		StatementNode  result;
-		List<StatementNode> statements = new ArrayList<>(); 
-		Expect(8);
-		while (StartOf(1)) {
-			StatementNode statement = Statement();
-			statements.add(statement); 
-		}
-		Expect(9);
-		result = factory.createBlock(statements); 
-		return result;
-	}
-
-	StatementNode  Statement() {
-		StatementNode  result;
-		result = null; 
-		if (la.kind == 13) {
-			result = WhileStatement();
-		} else if (la.kind == 11) {
-			result = IfStatement();
-		} else if (la.kind == 14) {
-			result = ReturnStatement();
-		} else if (StartOf(2)) {
-			result = Expression();
-			Expect(10);
-		} else SynErr(30);
-		return result;
-	}
-
-	StatementNode  WhileStatement() {
-		StatementNode  result;
-		Expect(13);
-		Expect(5);
-		ConditionNode condition = Expression();
-		Expect(7);
-		StatementNode body = Block();
-		result = factory.createWhile(condition, body); 
-		return result;
-	}
-
-	StatementNode  IfStatement() {
-		StatementNode  result;
-		Expect(11);
-		Expect(5);
-		ConditionNode condition = Expression();
-		Expect(7);
-		StatementNode thenNode = null; StatementNode elseNode = null; 
-		thenNode = Block();
-		if (la.kind == 12) {
-			Get();
-			elseNode = Block();
-		}
-		result = factory.createIf(condition, thenNode, elseNode); 
-		return result;
-	}
-
-	StatementNode  ReturnStatement() {
-		StatementNode  result;
-		Expect(14);
-		TypedNode value = Expression();
-		Expect(10);
-		result = factory.createReturn(value); 
-		return result;
-	}
-
-	TypedNode  Expression() {
-		TypedNode  result;
-		result = ValueExpression();
-		if (StartOf(3)) {
-			switch (la.kind) {
-			case 15: {
-				Get();
-				break;
-			}
-			case 16: {
-				Get();
-				break;
-			}
-			case 17: {
-				Get();
-				break;
-			}
-			case 18: {
-				Get();
-				break;
-			}
-			case 19: {
-				Get();
-				break;
-			}
-			case 20: {
-				Get();
-				break;
-			}
-			}
-			String op = t.val; 
-			TypedNode right = ValueExpression();
-			result = factory.createBinary(op, result, right); 
-		}
-		return result;
-	}
-
-	TypedNode  ValueExpression() {
-		TypedNode  result;
-		result = Term();
-		while (la.kind == 21 || la.kind == 22) {
-			if (la.kind == 21) {
-				Get();
-			} else {
-				Get();
-			}
-			String op = t.val; 
-			TypedNode right = Term();
-			result = factory.createBinary(op, result, right); 
-		}
-		return result;
-	}
-
-	TypedNode  Term() {
-		TypedNode  result;
-		result = Factor();
-		while (la.kind == 23 || la.kind == 24) {
-			if (la.kind == 23) {
-				Get();
-			} else {
-				Get();
-			}
-			String op = t.val; 
-			TypedNode right = Factor();
-			result = factory.createBinary(op, result, right); 
-		}
-		return result;
-	}
-
-	TypedNode  Factor() {
-		TypedNode  result;
-		result = null; 
-		if (la.kind == 1) {
-			result = VariableRefOrCall();
-		} else if (la.kind == 2) {
-			result = StringLiteral();
-		} else if (la.kind == 3) {
-			result = NumericLiteral();
-		} else if (la.kind == 25) {
-			result = Ternary();
-		} else if (la.kind == 5) {
-			Get();
-			result = Expression();
-			Expect(7);
-		} else SynErr(31);
-		return result;
-	}
-
-	TypedNode  VariableRefOrCall() {
-		TypedNode  result;
-		result = VariableRef();
-		if (la.kind == 5 || la.kind == 28) {
-			if (la.kind == 5) {
-				TypedNode[] parameters = Parameters();
-				result = factory.createCall(result, parameters); 
-			} else {
-				Get();
-				TypedNode assignment = Expression();
-				result = factory.createAssignment(result, assignment); 
-			}
-		}
-		return result;
-	}
-
-	TypedNode  StringLiteral() {
-		TypedNode  result;
-		Expect(2);
-		result = factory.createStringLiteral(t.val.substring(1, t.val.length() - 1)); 
-		return result;
-	}
-
-	TypedNode  NumericLiteral() {
-		TypedNode  result;
-		Expect(3);
-		result = factory.createNumericLiteral(t.val); 
-		return result;
-	}
-
-	TypedNode  Ternary() {
-		TypedNode  result;
-		TypedNode condition, thenPart, elsePart; 
-		Expect(25);
-		condition = Expression();
-		Expect(26);
-		thenPart = Expression();
-		Expect(27);
-		elsePart = Expression();
-		result = factory.createTernary(condition, thenPart, elsePart); 
-		return result;
-	}
-
-	TypedNode  VariableRef() {
-		TypedNode  result;
-		Expect(1);
-		result = factory.createLocal(t.val); 
-		return result;
-	}
-
-	TypedNode[]  Parameters() {
-		TypedNode[]  result;
-		Expect(5);
-		List<TypedNode> parameters = new ArrayList<>(); 
-		if (StartOf(2)) {
-			TypedNode e1 = Expression();
-			parameters.add(e1); 
-			while (la.kind == 6) {
-				Get();
-				TypedNode e2 = Expression();
-				parameters.add(e2); 
-			}
-		}
-		result = parameters.toArray(new TypedNode[parameters.size()]); 
-		Expect(7);
-		return result;
-	}
-
-
-
-    public void Parse() {
-        la = new Token();
-        la.val = "";
-        Get();
-		SimpleLanguage();
-		Expect(0);
-
-    }
-
-    private static final boolean[][] set = {
-		{T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x},
-		{x,T,T,T, x,T,x,x, x,x,x,T, x,T,T,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x},
-		{x,T,T,T, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x},
-		{x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, T,T,T,T, T,x,x,x, x,x,x,x, x,x,x}
-
-    };
-
-    public String ParseErrors() {
-        java.io.PrintStream oldStream = System.out;
-
-        java.io.OutputStream out = new java.io.ByteArrayOutputStream();
-        java.io.PrintStream newStream = new java.io.PrintStream(out);
-
-        errors.errorStream = newStream;
-
-        Parse();
-
-        String errorStream = out.toString();
-        errors.errorStream = oldStream;
-
-        return errorStream;
-
-    }
-} // end Parser
-
-class Errors {
-
-    public int count = 0; // number of errors detected
-    public java.io.PrintStream errorStream = System.out; // error messages go to this stream
-    public String errMsgFormat = "-- line {0} col {1}: {2}"; // 0=line, 1=column, 2=text
-
-    protected void printMsg(int line, int column, String msg) {
-        StringBuffer b = new StringBuffer(errMsgFormat);
-        int pos = b.indexOf("{0}");
-        if (pos >= 0) {
-            b.delete(pos, pos + 3);
-            b.insert(pos, line);
-        }
-        pos = b.indexOf("{1}");
-        if (pos >= 0) {
-            b.delete(pos, pos + 3);
-            b.insert(pos, column);
-        }
-        pos = b.indexOf("{2}");
-        if (pos >= 0)
-            b.replace(pos, pos + 3, msg);
-        errorStream.println(b.toString());
-    }
-
-    public void SynErr(int line, int col, int n) {
-        String s;
-        switch (n) {
-			case 0: s = "EOF expected"; break;
-			case 1: s = "identifier expected"; break;
-			case 2: s = "stringLiteral expected"; break;
-			case 3: s = "numericLiteral expected"; break;
-			case 4: s = "\"function\" expected"; break;
-			case 5: s = "\"(\" expected"; break;
-			case 6: s = "\",\" expected"; break;
-			case 7: s = "\")\" expected"; break;
-			case 8: s = "\"{\" expected"; break;
-			case 9: s = "\"}\" expected"; break;
-			case 10: s = "\";\" expected"; break;
-			case 11: s = "\"if\" expected"; break;
-			case 12: s = "\"else\" expected"; break;
-			case 13: s = "\"while\" expected"; break;
-			case 14: s = "\"return\" expected"; break;
-			case 15: s = "\"<\" expected"; break;
-			case 16: s = "\">\" expected"; break;
-			case 17: s = "\"<=\" expected"; break;
-			case 18: s = "\">=\" expected"; break;
-			case 19: s = "\"==\" expected"; break;
-			case 20: s = "\"!=\" expected"; break;
-			case 21: s = "\"+\" expected"; break;
-			case 22: s = "\"-\" expected"; break;
-			case 23: s = "\"*\" expected"; break;
-			case 24: s = "\"/\" expected"; break;
-			case 25: s = "\"#\" expected"; break;
-			case 26: s = "\"?\" expected"; break;
-			case 27: s = "\":\" expected"; break;
-			case 28: s = "\"=\" expected"; break;
-			case 29: s = "??? expected"; break;
-			case 30: s = "invalid Statement"; break;
-			case 31: s = "invalid Factor"; break;
-            default:
-                s = "error " + n;
-                break;
-        }
-        printMsg(line, col, s);
-        count++;
-    }
-
-    public void SemErr(int line, int col, String s) {
-        printMsg(line, col, s);
-        count++;
-    }
-
-    public void SemErr(String s) {
-        errorStream.println(s);
-        count++;
-    }
-
-    public void Warning(int line, int col, String s) {
-        printMsg(line, col, s);
-    }
-
-    public void Warning(String s) {
-        errorStream.println(s);
-    }
-} // Errors
-
-class FatalError extends RuntimeException {
-
-    public static final long serialVersionUID = 1L;
-
-    public FatalError(String s) {
-        super(s);
-    }
-}
--- a/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/Scanner.java.old	Tue Nov 12 11:01:42 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,650 +0,0 @@
-/*
- * Copyright (c) 2012, 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
- // The content of this file is automatically generated. DO NOT EDIT.
-
-
-package com.oracle.truffle.sl.parser;
-
-import java.io.InputStream;
-import java.io.IOException;
-import java.io.RandomAccessFile;
-import java.util.Map;
-import java.util.HashMap;
-
-// Checkstyle: stop
-// @formatter:off
-public class Token {
-
-    public int kind; // token kind
-    public int pos; // token position in bytes in the source text (starting at 0)
-    public int charPos; // token position in characters in the source text (starting at 0)
-    public int col; // token column (starting at 1)
-    public int line; // token line (starting at 1)
-    public String val; // token value
-    public Token next; // ML 2005-03-11 Peek tokens are kept in linked list
-}
-
-// -----------------------------------------------------------------------------------
-// Buffer
-// -----------------------------------------------------------------------------------
-class Buffer {
-
-    // This Buffer supports the following cases:
-    // 1) seekable stream (file)
-    // a) whole stream in buffer
-    // b) part of stream in buffer
-    // 2) non seekable stream (network, console)
-
-    public static final int EOF = Character.MAX_VALUE + 1;
-    private static final int MIN_BUFFER_LENGTH = 1024; // 1KB
-    private static final int MAX_BUFFER_LENGTH = MIN_BUFFER_LENGTH * 64; // 64KB
-    private byte[] buf; // input buffer
-    private int bufStart; // position of first byte in buffer relative to input stream
-    private int bufLen; // length of buffer
-    private int fileLen; // length of input stream (may change if stream is no file)
-    private int bufPos; // current position in buffer
-    private RandomAccessFile file; // input stream (seekable)
-    private InputStream stream; // growing input stream (e.g.: console, network)
-
-    public Buffer(InputStream s) {
-        stream = s;
-        fileLen = bufLen = bufStart = bufPos = 0;
-        buf = new byte[MIN_BUFFER_LENGTH];
-    }
-
-    public Buffer(String fileName) {
-        try {
-            file = new RandomAccessFile(fileName, "r");
-            fileLen = (int) file.length();
-            bufLen = Math.min(fileLen, MAX_BUFFER_LENGTH);
-            buf = new byte[bufLen];
-            bufStart = Integer.MAX_VALUE; // nothing in buffer so far
-            if (fileLen > 0)
-                setPos(0); // setup buffer to position 0 (start)
-            else
-                bufPos = 0; // index 0 is already after the file, thus setPos(0) is invalid
-            if (bufLen == fileLen)
-                Close();
-        } catch (IOException e) {
-            throw new FatalError("Could not open file " + fileName);
-        }
-    }
-
-    // don't use b after this call anymore
-    // called in UTF8Buffer constructor
-    protected Buffer(Buffer b) {
-        buf = b.buf;
-        bufStart = b.bufStart;
-        bufLen = b.bufLen;
-        fileLen = b.fileLen;
-        bufPos = b.bufPos;
-        file = b.file;
-        stream = b.stream;
-        // keep finalize from closing the file
-        b.file = null;
-    }
-
-    @Override
-    protected void finalize() throws Throwable {
-        super.finalize();
-        Close();
-    }
-
-    protected void Close() {
-        if (file != null) {
-            try {
-                file.close();
-                file = null;
-            } catch (IOException e) {
-                throw new FatalError(e.getMessage());
-            }
-        }
-    }
-
-    public int Read() {
-        if (bufPos < bufLen) {
-            return buf[bufPos++] & 0xff; // mask out sign bits
-        } else if (getPos() < fileLen) {
-            setPos(getPos()); // shift buffer start to pos
-            return buf[bufPos++] & 0xff; // mask out sign bits
-        } else if (stream != null && ReadNextStreamChunk() > 0) {
-            return buf[bufPos++] & 0xff; // mask out sign bits
-        } else {
-            return EOF;
-        }
-    }
-
-    public int Peek() {
-        int curPos = getPos();
-        int ch = Read();
-        setPos(curPos);
-        return ch;
-    }
-
-    // beg .. begin, zero-based, inclusive, in byte
-    // end .. end, zero-based, exclusive, in byte
-    public String GetString(int beg, int end) {
-        int len = 0;
-        char[] buffer = new char[end - beg];
-        int oldPos = getPos();
-        setPos(beg);
-        while (getPos() < end)
-            buffer[len++] = (char) Read();
-        setPos(oldPos);
-        return new String(buffer, 0, len);
-    }
-
-    public int getPos() {
-        return bufPos + bufStart;
-    }
-
-    public void setPos(int value) {
-        if (value >= fileLen && stream != null) {
-            // Wanted position is after buffer and the stream
-            // is not seek-able e.g. network or console,
-            // thus we have to read the stream manually till
-            // the wanted position is in sight.
-            while (value >= fileLen && ReadNextStreamChunk() > 0) {
-                // nothing to do...
-            }
-        }
-
-        if (value < 0 || value > fileLen) {
-            throw new FatalError("buffer out of bounds access, position: " + value);
-        }
-
-        if (value >= bufStart && value < bufStart + bufLen) { // already in buffer
-            bufPos = value - bufStart;
-        } else if (file != null) { // must be swapped in
-            try {
-                file.seek(value);
-                bufLen = file.read(buf);
-                bufStart = value;
-                bufPos = 0;
-            } catch (IOException e) {
-                throw new FatalError(e.getMessage());
-            }
-        } else {
-            // set the position to the end of the file, Pos will return fileLen.
-            bufPos = fileLen - bufStart;
-        }
-    }
-
-    // Read the next chunk of bytes from the stream, increases the buffer
-    // if needed and updates the fields fileLen and bufLen.
-    // Returns the number of bytes read.
-    private int ReadNextStreamChunk() {
-        int free = buf.length - bufLen;
-        if (free == 0) {
-            // in the case of a growing input stream
-            // we can neither seek in the stream, nor can we
-            // foresee the maximum length, thus we must adapt
-            // the buffer size on demand.
-            byte[] newBuf = new byte[bufLen * 2];
-            System.arraycopy(buf, 0, newBuf, 0, bufLen);
-            buf = newBuf;
-            free = bufLen;
-        }
-
-        int read;
-        try {
-            read = stream.read(buf, bufLen, free);
-        } catch (IOException ioex) {
-            throw new FatalError(ioex.getMessage());
-        }
-
-        if (read > 0) {
-            fileLen = bufLen = (bufLen + read);
-            return read;
-        }
-        // end of stream reached
-        return 0;
-    }
-}
-
-// -----------------------------------------------------------------------------------
-// UTF8Buffer
-// -----------------------------------------------------------------------------------
-class UTF8Buffer extends Buffer {
-
-    UTF8Buffer(Buffer b) {
-        super(b);
-    }
-
-    @Override
-    public int Read() {
-        int ch;
-        do {
-            ch = super.Read();
-            // until we find a utf8 start (0xxxxxxx or 11xxxxxx)
-        } while ((ch >= 128) && ((ch & 0xC0) != 0xC0) && (ch != EOF));
-        if (ch < 128 || ch == EOF) {
-            // nothing to do, first 127 chars are the same in ascii and utf8
-            // 0xxxxxxx or end of file character
-        } else if ((ch & 0xF0) == 0xF0) {
-            // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
-            int c1 = ch & 0x07;
-            ch = super.Read();
-            int c2 = ch & 0x3F;
-            ch = super.Read();
-            int c3 = ch & 0x3F;
-            ch = super.Read();
-            int c4 = ch & 0x3F;
-            ch = (((((c1 << 6) | c2) << 6) | c3) << 6) | c4;
-        } else if ((ch & 0xE0) == 0xE0) {
-            // 1110xxxx 10xxxxxx 10xxxxxx
-            int c1 = ch & 0x0F;
-            ch = super.Read();
-            int c2 = ch & 0x3F;
-            ch = super.Read();
-            int c3 = ch & 0x3F;
-            ch = (((c1 << 6) | c2) << 6) | c3;
-        } else if ((ch & 0xC0) == 0xC0) {
-            // 110xxxxx 10xxxxxx
-            int c1 = ch & 0x1F;
-            ch = super.Read();
-            int c2 = ch & 0x3F;
-            ch = (c1 << 6) | c2;
-        }
-        return ch;
-    }
-}
-
-// -----------------------------------------------------------------------------------
-// StartStates -- maps characters to start states of tokens
-// -----------------------------------------------------------------------------------
-class StartStates {
-
-    private static class Elem {
-
-        public int key, val;
-        public Elem next;
-
-        public Elem(int key, int val) {
-            this.key = key;
-            this.val = val;
-        }
-    }
-
-    private Elem[] tab = new Elem[128];
-
-    public void set(int key, int val) {
-        Elem e = new Elem(key, val);
-        int k = key % 128;
-        e.next = tab[k];
-        tab[k] = e;
-    }
-
-    public int state(int key) {
-        Elem e = tab[key % 128];
-        while (e != null && e.key != key)
-            e = e.next;
-        return e == null ? 0 : e.val;
-    }
-}
-
-// -----------------------------------------------------------------------------------
-// Scanner
-// -----------------------------------------------------------------------------------
-@SuppressWarnings({"rawtypes", "unchecked"})
-public class Scanner {
-
-    static final char EOL = '\n';
-    static final int eofSym = 0;
-	static final int maxT = 29;
-	static final int noSym = 29;
-
-
-    public Buffer buffer; // scanner buffer
-
-    Token t; // current token
-    int ch; // current input character
-    int pos; // byte position of current character
-    int charPos; // position by unicode characters starting with 0
-    int col; // column number of current character
-    int line; // line number of current character
-    int oldEols; // EOLs that appeared in a comment;
-    static final StartStates start; // maps initial token character to start state
-    static final Map literals; // maps literal strings to literal kinds
-
-    Token tokens; // list of tokens already peeked (first token is a dummy)
-    Token pt; // current peek token
-
-    char[] tval = new char[16]; // token text used in NextToken(), dynamically enlarged
-    int tlen; // length of current token
-
-    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(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));
-
-    }
-
-    public Scanner(String fileName) {
-        buffer = new Buffer(fileName);
-        Init();
-    }
-
-    public Scanner(InputStream s) {
-        buffer = new Buffer(s);
-        Init();
-    }
-
-    void Init() {
-        pos = -1;
-        line = 1;
-        col = 0;
-        charPos = -1;
-        oldEols = 0;
-        NextCh();
-        if (ch == 0xEF) { // check optional byte order mark for UTF-8
-            NextCh();
-            int ch1 = ch;
-            NextCh();
-            int ch2 = ch;
-            if (ch1 != 0xBB || ch2 != 0xBF) {
-                throw new FatalError("Illegal byte order mark at start of file");
-            }
-            buffer = new UTF8Buffer(buffer);
-            col = 0;
-            charPos = -1;
-            NextCh();
-        }
-        pt = tokens = new Token(); // first token is a dummy
-    }
-
-    void NextCh() {
-        if (oldEols > 0) {
-            ch = EOL;
-            oldEols--;
-        } else {
-            pos = buffer.getPos();
-            // buffer reads unicode chars, if UTF8 has been detected
-            ch = buffer.Read();
-            col++;
-            charPos++;
-            // replace isolated '\r' by '\n' in order to make
-            // eol handling uniform across Windows, Unix and Mac
-            if (ch == '\r' && buffer.Peek() != '\n')
-                ch = EOL;
-            if (ch == EOL) {
-                line++;
-                col = 0;
-            }
-        }
-
-    }
-
-    void AddCh() {
-        if (tlen >= tval.length) {
-            char[] newBuf = new char[2 * tval.length];
-            System.arraycopy(tval, 0, newBuf, 0, tval.length);
-            tval = newBuf;
-        }
-        if (ch != Buffer.EOF) {
-			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;
-	}
-
-
-    void CheckLiteral() {
-        String val = t.val;
-
-        Object kind = literals.get(val);
-        if (kind != null) {
-            t.kind = ((Integer) kind).intValue();
-        }
-    }
-
-    Token NextToken() {
-        while (ch == ' ' || 
-			ch >= 9 && ch <= 10 || ch == 13
-        ) NextCh();
-		if (ch == '/' && Comment0() ||ch == '/' && Comment1()) return NextToken();
-        int recKind = noSym;
-        int recEnd = pos;
-        t = new Token();
-        t.pos = pos;
-        t.col = col;
-        t.line = line;
-        t.charPos = charPos;
-        int state = start.state(ch);
-        tlen = 0;
-        AddCh();
-
-        loop: for (;;) {
-            switch (state) {
-                case -1: {
-                    t.kind = eofSym;
-                    break loop;
-                } // NextCh already done
-                case 0: {
-                    if (recKind != noSym) {
-                        tlen = recEnd - t.pos;
-                        SetScannerBehindT();
-                    }
-                    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 = 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;}
-
-            }
-        }
-        t.val = new String(tval, 0, tlen);
-        return t;
-    }
-
-    private void SetScannerBehindT() {
-        buffer.setPos(t.pos);
-        NextCh();
-        line = t.line;
-        col = t.col;
-        charPos = t.charPos;
-        for (int i = 0; i < tlen; i++)
-            NextCh();
-    }
-
-    // get the next token (possibly a token already seen during peeking)
-    public Token Scan() {
-        if (tokens.next == null) {
-            return NextToken();
-        } else {
-            pt = tokens = tokens.next;
-            return tokens;
-        }
-    }
-
-    // get the next token, ignore pragmas
-    public Token Peek() {
-        do {
-            if (pt.next == null) {
-                pt.next = NextToken();
-            }
-            pt = pt.next;
-        } while (pt.kind > maxT); // skip pragmas
-
-        return pt;
-    }
-
-    // make sure that peeking starts at current scan position
-    public void ResetPeek() {
-        pt = tokens;
-    }
-
-    // The following methods are used for the CLNG Editor and will be called with java.Reflection.
-    // If the editor won't be used these 3 functions are obsolete,
-    // otherwise changes within the signature of the methods will result in Syntax Highlighting not working properly
-// anymore.
-
-    // get the offset of the next Token
-    public int getPeekTokenOffset() {
-        return pt.pos;
-    }
-
-    // get the String value of the Token
-    public String getPeekTokenVal() {
-        return pt.val;
-    }
-
-    // get the Kind value of the Token
-    public int getPeekTokenKind() {
-        return pt.kind;
-    }
-
-} // end Scanner