diff --git a/grammar/ReadMe.md b/grammar/ReadMe.md
index 4ab4ced1bc1..6180cc56fd1 100644
--- a/grammar/ReadMe.md
+++ b/grammar/ReadMe.md
@@ -1 +1,3 @@
-This module contains a semi-formal description of Kotlin grammar along with some code that translates it into a confluence wiki format.
\ No newline at end of file
+This module contains a semi-formal description of Kotlin grammar.
+It is processed by a [tool](https://github.com/JetBrains/kotlin-grammar-generator) to generate the Kotlin
+grammar specification on the [Kotlin Web site](http://kotlinlang.org/docs/reference/grammar.html).
diff --git a/grammar/buildGrammarLexer.xml b/grammar/buildGrammarLexer.xml
deleted file mode 100644
index 58411477329..00000000000
--- a/grammar/buildGrammarLexer.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/grammar/src/org/jetbrains/kotlin/grammar/Annotation.java b/grammar/src/org/jetbrains/kotlin/grammar/Annotation.java
deleted file mode 100644
index bc78625b4e4..00000000000
--- a/grammar/src/org/jetbrains/kotlin/grammar/Annotation.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2010-2015 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.jetbrains.kotlin.grammar;
-
-public class Annotation extends Token {
- public Annotation(CharSequence text, String fileName, int line) {
- super(text, fileName, line);
- }
-
- @Override
- public String toString() {
- return "{{" + super.toString().replaceAll("\\[", "").replaceAll("\\]", "") + "}}";
- }
-}
diff --git a/grammar/src/org/jetbrains/kotlin/grammar/Comment.java b/grammar/src/org/jetbrains/kotlin/grammar/Comment.java
deleted file mode 100644
index 806c4908848..00000000000
--- a/grammar/src/org/jetbrains/kotlin/grammar/Comment.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2010-2015 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.jetbrains.kotlin.grammar;
-
-public class Comment extends Token {
- public Comment(CharSequence text, String fileName, int line) {
- super(text, fileName, line);
- }
-
- @Override
- public String toString() {
- return "";//getText().toString().replaceAll("\\{", "\\\\{").replaceAll("\\[", "\\\\[").replaceAll("\\(", "\\\\(");
- }
-}
diff --git a/grammar/src/org/jetbrains/kotlin/grammar/ConfluenceHyperlinksGenerator.java b/grammar/src/org/jetbrains/kotlin/grammar/ConfluenceHyperlinksGenerator.java
deleted file mode 100644
index a121a9b8d92..00000000000
--- a/grammar/src/org/jetbrains/kotlin/grammar/ConfluenceHyperlinksGenerator.java
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * Copyright 2010-2015 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.jetbrains.kotlin.grammar;
-
-import com.google.common.base.Supplier;
-import com.google.common.collect.*;
-import com.intellij.openapi.util.io.FileUtil;
-
-import java.awt.*;
-import java.awt.datatransfer.Clipboard;
-import java.awt.datatransfer.ClipboardOwner;
-import java.awt.datatransfer.StringSelection;
-import java.awt.datatransfer.Transferable;
-import java.io.File;
-import java.io.IOException;
-import java.io.Reader;
-import java.util.*;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-public class ConfluenceHyperlinksGenerator {
-
- private static final String GRAMMAR_EXTENSION = "grm";
- private static final List FILE_NAMES_IN_ORDER = Arrays.asList(
- "notation",
- "toplevel",
- "class",
- "class_members",
- "enum",
- "types",
- "control",
- "expressions",
- "when",
- "modifiers",
- "attributes",
- "lexical"
- );
-
- public static void main(String[] args) throws IOException {
- File grammarDir = new File("grammar/src");
-
- Set used = new HashSet();
- List tokens = getJoinedTokensFromAllFiles(grammarDir, used);
- assertAllFilesAreUsed(grammarDir, used);
-
- StringBuilder result = generate(tokens);
-
- copyToClipboard(result);
- }
-
- private static List getJoinedTokensFromAllFiles(File grammarDir, Set used) throws IOException {
- List allTokens = Lists.newArrayList();
- for (String fileName : FILE_NAMES_IN_ORDER) {
- File file = new File(grammarDir, fileName + "." + GRAMMAR_EXTENSION);
- used.add(file);
- String text = FileUtil.loadFile(file, true);
- StringBuilder textWithMarkedDeclarations = markDeclarations(text);
- List tokens = tokenize(createLexer(file.getPath(), textWithMarkedDeclarations));
- allTokens.addAll(tokens);
- }
- return allTokens;
- }
-
- private static _GrammarLexer createLexer(String fileName, StringBuilder output) {
- _GrammarLexer grammarLexer = new _GrammarLexer((Reader) null);
- grammarLexer.reset(output, 0, output.length(), 0);
- grammarLexer.setFileName(fileName);
- return grammarLexer;
- }
-
- private static void assertAllFilesAreUsed(File grammarDir, Set used) {
- for (File file : grammarDir.listFiles()) {
- if (file.getName().endsWith(GRAMMAR_EXTENSION)) {
- if (!used.contains(file)) {
- throw new IllegalStateException("Unused grammar file : " + file.getAbsolutePath());
- }
- }
- }
- }
-
- private static StringBuilder markDeclarations(CharSequence allRules) {
- StringBuilder output = new StringBuilder();
-
- Pattern symbolReference = Pattern.compile("^\\w+$", Pattern.MULTILINE);
- Matcher matcher = symbolReference.matcher(allRules);
- int copiedUntil = 0;
- while (matcher.find()) {
- int start = matcher.start();
- output.append(allRules.subSequence(copiedUntil, start));
-
- String group = matcher.group();
- output.append("&").append(group);
- copiedUntil = matcher.end();
- }
- output.append(allRules.subSequence(copiedUntil, allRules.length()));
- return output;
- }
-
- private static StringBuilder generate(List tokens) throws IOException {
- StringBuilder result = new StringBuilder("h1. Contents\n").append("{toc:style=disc|indent=20px}");
-
- Set declaredSymbols = new HashSet();
- Set usedSymbols = new HashSet();
- Multimap
- usages = Multimaps.newSetMultimap(Maps.>newHashMap(), new Supplier>() {
- @Override
- public Set get() {
- return Sets.newHashSet();
- }
- });
-
- Declaration lastDeclaration = null;
- for (Token advance: tokens) {
- if (advance instanceof Declaration) {
- Declaration declaration = (Declaration) advance;
- lastDeclaration = declaration;
- declaredSymbols.add(declaration.getName());
- }
- else if (advance instanceof Identifier) {
- Identifier identifier = (Identifier) advance;
- assert lastDeclaration != null;
- usages.put(identifier.getName(), lastDeclaration.getName());
- usedSymbols.add(identifier.getName());
- }
- }
-
- for (Token token : tokens) {
- if (token instanceof Declaration) {
- Declaration declaration = (Declaration) token;
- result.append("{anchor:").append(declaration.getName()).append("}");
- if (!usedSymbols.contains(declaration.getName())) {
- // result.append("(!) *Unused!* ");
- System.out.println("Unused: " + tokenWithPosition(token));
- }
- Collection myUsages = usages.get(declaration.getName());
- if (!myUsages.isEmpty()) {
- result.append("\\[{color:grey}Used by ");
- for (Iterator iterator = myUsages.iterator(); iterator.hasNext(); ) {
- String usage = iterator.next();
- result.append("[#").append(usage).append("]");
- if (iterator.hasNext()) {
- result.append(", ");
- }
- }
- result.append("{color}\\]\n");
- }
- result.append(token);
- continue;
- }
- else if (token instanceof Identifier) {
- Identifier identifier = (Identifier) token;
- if (!declaredSymbols.contains(identifier.getName())) {
- result.append("(!) *Undeclared!* ");
- System.out.println("Undeclared: " + tokenWithPosition(token));
- }
- }
- result.append(token);
- }
- return result;
- }
-
- private static String tokenWithPosition(Token token) {
- return token + " at " + token.getFileName() + ":" + token.getLine();
- }
-
- private static List tokenize(_GrammarLexer grammarLexer) throws IOException {
- List tokens = new ArrayList();
- while (true) {
- Token advance = grammarLexer.advance();
- if (advance == null) {
- break;
- }
- tokens.add(advance);
- }
- return tokens;
- }
-
- private static void copyToClipboard(StringBuilder result) {
- Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
- clipboard.setContents(new StringSelection(result.toString()), new ClipboardOwner() {
- @Override
- public void lostOwnership(Clipboard clipboard, Transferable contents) {
-
- }
- });
- }
-}
diff --git a/grammar/src/org/jetbrains/kotlin/grammar/Declaration.java b/grammar/src/org/jetbrains/kotlin/grammar/Declaration.java
deleted file mode 100644
index f7589a767a9..00000000000
--- a/grammar/src/org/jetbrains/kotlin/grammar/Declaration.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright 2010-2015 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.jetbrains.kotlin.grammar;
-
-public class Declaration extends Token {
- private final String name;
-
- public Declaration(CharSequence text, String fileName, int line) {
- super(text, fileName, line);
- name = text.toString().substring(1);
- }
-
- @Override
- public String toString() {
- return "*" + name + "*";
- }
-
- public String getName() {
- return name;
- }
-}
diff --git a/grammar/src/org/jetbrains/kotlin/grammar/DocComment.java b/grammar/src/org/jetbrains/kotlin/grammar/DocComment.java
deleted file mode 100644
index 5b0409c1e78..00000000000
--- a/grammar/src/org/jetbrains/kotlin/grammar/DocComment.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright 2010-2015 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.jetbrains.kotlin.grammar;
-
-public class DocComment extends Token {
- public DocComment(CharSequence text, String fileName, int line) {
- super(text, fileName, line);
- }
-
- @Override
- public String toString() {
- String s = super.toString();
- return s.substring(3, s.length() - 2);
- }
-}
diff --git a/grammar/src/org/jetbrains/kotlin/grammar/Grammar.flex b/grammar/src/org/jetbrains/kotlin/grammar/Grammar.flex
deleted file mode 100644
index 6168a9fbd14..00000000000
--- a/grammar/src/org/jetbrains/kotlin/grammar/Grammar.flex
+++ /dev/null
@@ -1,120 +0,0 @@
-/* It's an automatically generated code. Do not modify it. */
-package org.jetbrains.kotlin.grammar;
-
-//import com.intellij.lexer.*;
-//import com.intellij.psi.*;
-//import com.intellij.psi.tree.IElementType;
-
-//import org.jetbrains.kotlin.lexer.JetTokens;
-
-%%
-
-%unicode
-%class _GrammarLexer
-%{
- private String fileName;
- public void setFileName(String fileName) {
- this.fileName = fileName;
- }
-
- private int line = 1;
- public int getCurrentLine() {
- return line;
- }
-
- private void computeLine() {
- CharSequence s = yytext();
- for (int i = 0; i < s.length(); i++) {
- if (s.charAt(i) == '\n') line++;
- }
- }
-%}
-%function advance
-%type Token
-%eof{ return;
-%eof}
-
-DIGIT=[0-9]
-HEX_DIGIT=[0-9A-Fa-f]
-WHITE_SPACE_CHAR=[\ \n\t\f]
-
-// TODO: prohibit '$' in identifiers?
-PLAIN_IDENTIFIER=[:jletter:] [:jletterdigit:]*
-// TODO: this one MUST allow everything accepted by the runtime
-// TODO: Replace backticks by one backslash in the begining
-ESCAPED_IDENTIFIER = `{PLAIN_IDENTIFIER}`
-IDENTIFIER = {PLAIN_IDENTIFIER}|{ESCAPED_IDENTIFIER}
-DECLARATION_IDENTIFIER = "&" {PLAIN_IDENTIFIER}
-FIELD_IDENTIFIER = \${IDENTIFIER}
-LABEL_IDENTIFIER = \@{IDENTIFIER}
-
-BLOCK_COMMENT=("/*"[^"*"]{COMMENT_TAIL})|"/*"
-// TODO: Wiki markup for doc comments?
-DOC_COMMENT="/*""*"+("/"|([^"/""*"]{COMMENT_TAIL}))?
-COMMENT_TAIL=([^"*"]*("*"+[^"*""/"])?)*("*"+"/")?
-EOL_COMMENT="/""/"[^\n]*
-
-INTEGER_LITERAL={DECIMAL_INTEGER_LITERAL}|{HEX_INTEGER_LITERAL}|{BIN_INTEGER_LITERAL}
-DECIMAL_INTEGER_LITERAL=(0|([1-9]({DIGIT})*))
-HEX_INTEGER_LITERAL=0[Xx]({HEX_DIGIT})*
-BIN_INTEGER_LITERAL=0[Bb]({DIGIT})*
-LONG_LITERAL=({INTEGER_LITERAL})[Ll]
-
-//FLOAT_LITERAL=(({FLOATING_POINT_LITERAL1})[Ff])|(({FLOATING_POINT_LITERAL2})[Ff])|(({FLOATING_POINT_LITERAL3})[Ff])|(({FLOATING_POINT_LITERAL4})[Ff])
-//DOUBLE_LITERAL=(({FLOATING_POINT_LITERAL1})[Dd]?)|(({FLOATING_POINT_LITERAL2})[Dd]?)|(({FLOATING_POINT_LITERAL3})[Dd]?)|(({FLOATING_POINT_LITERAL4})[Dd])
-DOUBLE_LITERAL={FLOATING_POINT_LITERAL1}|{FLOATING_POINT_LITERAL2}|{FLOATING_POINT_LITERAL3}|{FLOATING_POINT_LITERAL4}
-FLOATING_POINT_LITERAL1=({DIGIT})+"."({DIGIT})+({EXPONENT_PART})?
-FLOATING_POINT_LITERAL2="."({DIGIT})+({EXPONENT_PART})?
-FLOATING_POINT_LITERAL3=({DIGIT})+({EXPONENT_PART})
-FLOATING_POINT_LITERAL4=({DIGIT})+
-EXPONENT_PART=[Ee]["+""-"]?({DIGIT})*
-HEX_FLOAT_LITERAL={HEX_SIGNIFICAND}{BINARY_EXPONENT}[Ff]
-//HEX_DOUBLE_LITERAL={HEX_SIGNIFICAND}{BINARY_EXPONENT}[Dd]?
-HEX_DOUBLE_LITERAL={HEX_SIGNIFICAND}{BINARY_EXPONENT}?
-BINARY_EXPONENT=[Pp][+-]?{DIGIT}+
-HEX_SIGNIFICAND={HEX_INTEGER_LITERAL}|0[Xx]{HEX_DIGIT}*\.{HEX_DIGIT}+
-//HEX_SIGNIFICAND={HEX_INTEGER_LITERAL}|{HEX_INTEGER_LITERAL}\.|0[Xx]{HEX_DIGIT}*\.{HEX_DIGIT}+
-
-CHARACTER_LITERAL="'"([^\\\'\n]|{ESCAPE_SEQUENCE})*("'"|\\)?
-// TODO: introduce symbols (e.g. 'foo) as another way to write string literals
-STRING_LITERAL=\"([^\\\"\n]|{ESCAPE_SEQUENCE})*(\"|\\)?
-ANGLE_STRING_LITERAL=\<([^\\\>\n])*(\>|\\)?
-ESCAPE_SEQUENCE=\\[^\n]
-
-// ANY_ESCAPE_SEQUENCE = \\[^]
-THREE_QUO = (\"\"\")
-ONE_TWO_QUO = (\"[^\"]) | (\"\"[^\"])
-QUO_STRING_CHAR = [^\"] | {ONE_TWO_QUO}
-RAW_STRING_LITERAL = {THREE_QUO} {QUO_STRING_CHAR}* {THREE_QUO}?
-
-%%
-
- {BLOCK_COMMENT} { computeLine(); return new Comment(yytext(), fileName, line); }
- {DOC_COMMENT} { computeLine(); return new DocComment(yytext(), fileName, line); }
-
- ({WHITE_SPACE_CHAR})+ { computeLine(); return new WhiteSpace(yytext(), fileName, line); }
-
- {EOL_COMMENT} { computeLine(); return new Comment(yytext(), fileName, line); }
-
- {STRING_LITERAL} { return new StringToken(yytext(), fileName, line); }
- {ANGLE_STRING_LITERAL} { return new StringToken(yytext(), fileName, line); }
- {IDENTIFIER} { return new Identifier(yytext(), fileName, line); }
- "[" {IDENTIFIER} "]" { return new Annotation(yytext(), fileName, line); }
- {DECLARATION_IDENTIFIER} { return new Declaration(yytext(), fileName, line); }
-
- ":" { return new SymbolToken(yytext(), fileName, line); }
- "{" { return new SymbolToken("\\" + yytext(), fileName, line); }
- "}" { return new SymbolToken("\\" + yytext(), fileName, line); }
- "[" { return new SymbolToken("\\" + yytext(), fileName, line); }
- "]" { return new SymbolToken("\\" + yytext(), fileName, line); }
- "(" { return new SymbolToken("\\" + yytext(), fileName, line); }
- ")" { return new SymbolToken("\\" + yytext(), fileName, line); }
- "*" { return new SymbolToken(yytext(), fileName, line); }
- "+" { return new SymbolToken(yytext(), fileName, line); }
- "?" { return new SymbolToken(yytext(), fileName, line); }
- "|" { return new SymbolToken(yytext(), fileName, line); }
- "-" { return new SymbolToken(yytext(), fileName, line); }
- "." { return new SymbolToken(yytext(), fileName, line); }
-
- . { return new Other(yytext(), fileName, line); }
-
diff --git a/grammar/src/org/jetbrains/kotlin/grammar/Identifier.java b/grammar/src/org/jetbrains/kotlin/grammar/Identifier.java
deleted file mode 100644
index 102f0c7e449..00000000000
--- a/grammar/src/org/jetbrains/kotlin/grammar/Identifier.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright 2010-2015 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.jetbrains.kotlin.grammar;
-
-public class Identifier extends Token {
- private final String name;
-
- public Identifier(CharSequence text, String fileName, int line) {
- super(text, fileName, line);
- name = text.toString();
- }
-
- @Override
- public String toString() {
- return "[#" + getText() + "]";
- }
-
- public String getName() {
- return name;
- }
-}
diff --git a/grammar/src/org/jetbrains/kotlin/grammar/Other.java b/grammar/src/org/jetbrains/kotlin/grammar/Other.java
deleted file mode 100644
index 9b0ba37a8d3..00000000000
--- a/grammar/src/org/jetbrains/kotlin/grammar/Other.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright 2010-2015 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.jetbrains.kotlin.grammar;
-
-public class Other extends Token {
- public Other(CharSequence text, String fileName, int line) {
- super(text, fileName, line);
- }
-}
diff --git a/grammar/src/org/jetbrains/kotlin/grammar/StringToken.java b/grammar/src/org/jetbrains/kotlin/grammar/StringToken.java
deleted file mode 100644
index ba1d170d8fd..00000000000
--- a/grammar/src/org/jetbrains/kotlin/grammar/StringToken.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2010-2015 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.jetbrains.kotlin.grammar;
-
-public class StringToken extends Token {
- public StringToken(CharSequence text, String fileName, int line) {
- super(text, fileName, line);
- }
-
- @Override
- public String toString() {
- return "{color:green}*{{" +
- getText().toString()
- .replaceAll("\\{", "\\\\{")
- .replaceAll("\\[", "\\\\[")
- .replaceAll("!", "\\\\!")
- .replaceAll("\\*", "\\\\*")
- + "}}*{color}";
- }
-}
diff --git a/grammar/src/org/jetbrains/kotlin/grammar/SymbolToken.java b/grammar/src/org/jetbrains/kotlin/grammar/SymbolToken.java
deleted file mode 100644
index 32227f2b855..00000000000
--- a/grammar/src/org/jetbrains/kotlin/grammar/SymbolToken.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2010-2015 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.jetbrains.kotlin.grammar;
-
-public class SymbolToken extends Token {
- public SymbolToken(CharSequence text, String fileName, int line) {
- super(text, fileName, line);
- }
-
- @Override
- public String toString() {
- return "{color:blue}*" + getText().toString().replaceAll("\\*", "\\\\*") + "*{color}";
- }
-}
diff --git a/grammar/src/org/jetbrains/kotlin/grammar/Token.java b/grammar/src/org/jetbrains/kotlin/grammar/Token.java
deleted file mode 100644
index 0fb6a69fc56..00000000000
--- a/grammar/src/org/jetbrains/kotlin/grammar/Token.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2010-2015 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.jetbrains.kotlin.grammar;
-
-public class Token {
- private final String fileName;
- private final CharSequence text;
- private final int line;
-
- public Token(CharSequence text, String fileName, int line) {
- this.text = text;
- this.fileName = fileName;
- this.line = line;
- }
-
- public CharSequence getText() {
- return text;
- }
-
- public String getFileName() {
- return fileName;
- }
-
- public int getLine() {
- return line;
- }
-
- @Override
- public String toString() {
- return getText().toString();
- }
-}
diff --git a/grammar/src/org/jetbrains/kotlin/grammar/WhiteSpace.java b/grammar/src/org/jetbrains/kotlin/grammar/WhiteSpace.java
deleted file mode 100644
index 80a40167fa2..00000000000
--- a/grammar/src/org/jetbrains/kotlin/grammar/WhiteSpace.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2010-2015 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.jetbrains.kotlin.grammar;
-
-public class WhiteSpace extends Token {
- public WhiteSpace(CharSequence text, String fileName, int line) {
- super(text, fileName, line);
- }
-
- @Override
- public String toString() {
- return super.toString().replaceAll(" ", " ");
- }
-}
diff --git a/grammar/src/org/jetbrains/kotlin/grammar/_GrammarLexer.java b/grammar/src/org/jetbrains/kotlin/grammar/_GrammarLexer.java
deleted file mode 100644
index 4c35a512402..00000000000
--- a/grammar/src/org/jetbrains/kotlin/grammar/_GrammarLexer.java
+++ /dev/null
@@ -1,636 +0,0 @@
-/* The following code was generated by JFlex 1.4.3 on 1/3/15 1:59 PM */
-
-/* It's an automatically generated code. Do not modify it. */
-package org.jetbrains.kotlin.grammar;
-
-//import com.intellij.lexer.*;
-//import com.intellij.psi.*;
-//import com.intellij.psi.tree.IElementType;
-
-//import org.jetbrains.kotlin.lexer.JetTokens;
-
-
-/**
- * This class is a scanner generated by
- * JFlex 1.4.3
- * on 1/3/15 1:59 PM from the specification file
- * /Users/udalov/kotlin/grammar/src/org/jetbrains/kotlin/grammar/Grammar.flex
- */
-class _GrammarLexer {
- /** initial size of the lookahead buffer */
- private static final int ZZ_BUFFERSIZE = 16384;
-
- /** lexical states */
- public static final int YYINITIAL = 0;
-
- /**
- * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
- * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l
- * at the beginning of a line
- * l is of the form l = 2*k, k a non negative integer
- */
- private static final int ZZ_LEXSTATE[] = {
- 0, 0
- };
-
- /**
- * Translates characters to character classes
- */
- private static final String ZZ_CMAP_PACKED =
- "\11\1\1\3\1\10\1\0\1\3\1\0\16\1\4\0\1\3\1\0"+
- "\1\13\1\0\1\2\1\0\1\5\1\0\1\20\1\20\1\7\1\11"+
- "\1\0\1\11\1\11\1\6\1\1\11\1\1\11\1\0\1\14\1\0"+
- "\1\15\1\11\1\0\1\2\1\2\2\2\1\2\1\2\5\2\1\2"+
- "\3\2\1\2\7\2\1\2\2\2\1\16\1\12\1\17\1\0\1\2"+
- "\1\4\1\2\1\2\2\2\1\2\1\2\5\2\1\2\3\2\1\2"+
- "\7\2\1\2\2\2\1\20\1\11\1\20\1\0\41\1\2\0\4\2"+
- "\4\0\1\2\2\0\1\1\7\0\1\2\4\0\1\2\5\0\27\2"+
- "\1\0\37\2\1\0\u013f\2\31\0\162\2\4\0\14\2\16\0\5\2"+
- "\11\0\1\2\21\0\130\1\5\0\23\1\12\0\1\2\13\0\1\2"+
- "\1\0\3\2\1\0\1\2\1\0\24\2\1\0\54\2\1\0\46\2"+
- "\1\0\5\2\4\0\202\2\1\0\4\1\3\0\105\2\1\0\46\2"+
- "\2\0\2\2\6\0\20\2\41\0\46\2\2\0\1\2\7\0\47\2"+
- "\11\0\21\1\1\0\27\1\1\0\3\1\1\0\1\1\1\0\2\1"+
- "\1\0\1\1\13\0\33\2\5\0\3\2\15\0\4\1\14\0\6\1"+
- "\13\0\32\2\5\0\13\2\16\1\7\0\12\1\4\0\2\2\1\1"+
- "\143\2\1\0\1\2\10\1\1\0\6\1\2\2\2\1\1\0\4\1"+
- "\2\2\12\1\3\2\2\0\1\2\17\0\1\1\1\2\1\1\36\2"+
- "\33\1\2\0\3\2\60\0\46\2\13\1\1\2\u014f\0\3\1\66\2"+
- "\2\0\1\1\1\2\20\1\2\0\1\2\4\1\3\0\12\2\2\1"+
- "\2\0\12\1\21\0\3\1\1\0\10\2\2\0\2\2\2\0\26\2"+
- "\1\0\7\2\1\0\1\2\3\0\4\2\2\0\1\1\1\2\7\1"+
- "\2\0\2\1\2\0\3\1\11\0\1\1\4\0\2\2\1\0\3\2"+
- "\2\1\2\0\12\1\4\2\15\0\3\1\1\0\6\2\4\0\2\2"+
- "\2\0\26\2\1\0\7\2\1\0\2\2\1\0\2\2\1\0\2\2"+
- "\2\0\1\1\1\0\5\1\4\0\2\1\2\0\3\1\13\0\4\2"+
- "\1\0\1\2\7\0\14\1\3\2\14\0\3\1\1\0\11\2\1\0"+
- "\3\2\1\0\26\2\1\0\7\2\1\0\2\2\1\0\5\2\2\0"+
- "\1\1\1\2\10\1\1\0\3\1\1\0\3\1\2\0\1\2\17\0"+
- "\2\2\2\1\2\0\12\1\1\0\1\2\17\0\3\1\1\0\10\2"+
- "\2\0\2\2\2\0\26\2\1\0\7\2\1\0\2\2\1\0\5\2"+
- "\2\0\1\1\1\2\6\1\3\0\2\1\2\0\3\1\10\0\2\1"+
- "\4\0\2\2\1\0\3\2\4\0\12\1\1\0\1\2\20\0\1\1"+
- "\1\2\1\0\6\2\3\0\3\2\1\0\4\2\3\0\2\2\1\0"+
- "\1\2\1\0\2\2\3\0\2\2\3\0\3\2\3\0\10\2\1\0"+
- "\3\2\4\0\5\1\3\0\3\1\1\0\4\1\11\0\1\1\17\0"+
- "\11\1\11\0\1\2\7\0\3\1\1\0\10\2\1\0\3\2\1\0"+
- "\27\2\1\0\12\2\1\0\5\2\4\0\7\1\1\0\3\1\1\0"+
- "\4\1\7\0\2\1\11\0\2\2\4\0\12\1\22\0\2\1\1\0"+
- "\10\2\1\0\3\2\1\0\27\2\1\0\12\2\1\0\5\2\2\0"+
- "\1\1\1\2\7\1\1\0\3\1\1\0\4\1\7\0\2\1\7\0"+
- "\1\2\1\0\2\2\4\0\12\1\22\0\2\1\1\0\10\2\1\0"+
- "\3\2\1\0\27\2\1\0\20\2\4\0\6\1\2\0\3\1\1\0"+
- "\4\1\11\0\1\1\10\0\2\2\4\0\12\1\22\0\2\1\1\0"+
- "\22\2\3\0\30\2\1\0\11\2\1\0\1\2\2\0\7\2\3\0"+
- "\1\1\4\0\6\1\1\0\1\1\1\0\10\1\22\0\2\1\15\0"+
- "\60\2\1\1\2\2\7\1\4\0\10\2\10\1\1\0\12\1\47\0"+
- "\2\2\1\0\1\2\2\0\2\2\1\0\1\2\2\0\1\2\6\0"+
- "\4\2\1\0\7\2\1\0\3\2\1\0\1\2\1\0\1\2\2\0"+
- "\2\2\1\0\4\2\1\1\2\2\6\1\1\0\2\1\1\2\2\0"+
- "\5\2\1\0\1\2\1\0\6\1\2\0\12\1\2\0\2\2\42\0"+
- "\1\2\27\0\2\1\6\0\12\1\13\0\1\1\1\0\1\1\1\0"+
- "\1\1\4\0\2\1\10\2\1\0\42\2\6\0\24\1\1\0\2\1"+
- "\4\2\4\0\10\1\1\0\44\1\11\0\1\1\71\0\42\2\1\0"+
- "\5\2\1\0\2\2\1\0\7\1\3\0\4\1\6\0\12\1\6\0"+
- "\6\2\4\1\106\0\46\2\12\0\51\2\7\0\132\2\5\0\104\2"+
- "\5\0\122\2\6\0\7\2\1\0\77\2\1\0\1\2\1\0\4\2"+
- "\2\0\7\2\1\0\1\2\1\0\4\2\2\0\47\2\1\0\1\2"+
- "\1\0\4\2\2\0\37\2\1\0\1\2\1\0\4\2\2\0\7\2"+
- "\1\0\1\2\1\0\4\2\2\0\7\2\1\0\7\2\1\0\27\2"+
- "\1\0\37\2\1\0\1\2\1\0\4\2\2\0\7\2\1\0\47\2"+
- "\1\0\23\2\16\0\11\1\56\0\125\2\14\0\u026c\2\2\0\10\2"+
- "\12\0\32\2\5\0\113\2\3\0\3\2\17\0\15\2\1\0\4\2"+
- "\3\1\13\0\22\2\3\1\13\0\22\2\2\1\14\0\15\2\1\0"+
- "\3\2\1\0\2\1\14\0\64\2\40\1\3\0\1\2\3\0\2\2"+
- "\1\1\2\0\12\1\41\0\3\1\2\0\12\1\6\0\130\2\10\0"+
- "\51\2\1\1\126\0\35\2\3\0\14\1\4\0\14\1\12\0\12\1"+
- "\36\2\2\0\5\2\u038b\0\154\2\224\0\234\2\4\0\132\2\6\0"+
- "\26\2\2\0\6\2\2\0\46\2\2\0\6\2\2\0\10\2\1\0"+
- "\1\2\1\0\1\2\1\0\1\2\1\0\37\2\2\0\65\2\1\0"+
- "\7\2\1\0\1\2\3\0\3\2\1\0\7\2\3\0\4\2\2\0"+
- "\6\2\4\0\15\2\5\0\3\2\1\0\7\2\17\0\4\1\32\0"+
- "\5\1\20\0\2\2\23\0\1\2\13\0\4\1\6\0\6\1\1\0"+
- "\1\2\15\0\1\2\40\0\22\2\36\0\15\1\4\0\1\1\3\0"+
- "\6\1\27\0\1\2\4\0\1\2\2\0\12\2\1\0\1\2\3\0"+
- "\5\2\6\0\1\2\1\0\1\2\1\0\1\2\1\0\4\2\1\0"+
- "\3\2\1\0\7\2\3\0\3\2\5\0\5\2\26\0\44\2\u0e81\0"+
- "\3\2\31\0\11\2\6\1\1\0\5\2\2\0\5\2\4\0\126\2"+
- "\2\0\2\1\2\0\3\2\1\0\137\2\5\0\50\2\4\0\136\2"+
- "\21\0\30\2\70\0\20\2\u0200\0\u19b6\2\112\0\u51a6\2\132\0\u048d\2"+
- "\u0773\0\u2ba4\2\u215c\0\u012e\2\2\0\73\2\225\0\7\2\14\0\5\2"+
- "\5\0\1\2\1\1\12\2\1\0\15\2\1\0\5\2\1\0\1\2"+
- "\1\0\2\2\1\0\2\2\1\0\154\2\41\0\u016b\2\22\0\100\2"+
- "\2\0\66\2\50\0\15\2\3\0\20\1\20\0\4\1\17\0\2\2"+
- "\30\0\3\2\31\0\1\2\6\0\5\2\1\0\207\2\2\0\1\1"+
- "\4\0\1\2\13\0\12\1\7\0\32\2\4\0\1\2\1\0\32\2"+
- "\12\0\132\2\3\0\6\2\2\0\6\2\2\0\6\2\2\0\3\2"+
- "\3\0\2\2\3\0\2\2\22\0\3\1\4\0";
-
- /**
- * Translates characters to character classes
- */
- private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
-
- /**
- * Translates DFA states to action switch labels.
- */
- private static final int [] ZZ_ACTION = zzUnpackAction();
-
- private static final String ZZ_ACTION_PACKED_0 =
- "\1\0\1\1\1\2\1\3\3\1\1\4\2\5\2\6"+
- "\1\0\1\7\2\10\2\5\2\0\1\2\1\10\1\11"+
- "\1\12\2\0\2\11\1\0\1\10\1\0";
-
- private static int [] zzUnpackAction() {
- int [] result = new int[31];
- int offset = 0;
- offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
- return result;
- }
-
- private static int zzUnpackAction(String packed, int offset, int [] result) {
- int i = 0; /* index in packed string */
- int j = offset; /* index in unpacked array */
- int l = packed.length();
- while (i < l) {
- int count = packed.charAt(i++);
- int value = packed.charAt(i++);
- do result[j++] = value; while (--count > 0);
- }
- return j;
- }
-
-
- /**
- * Translates a state to a row index in the transition table
- */
- private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
-
- private static final String ZZ_ROWMAP_PACKED_0 =
- "\0\0\0\21\0\42\0\63\0\104\0\125\0\146\0\21"+
- "\0\167\0\210\0\231\0\21\0\252\0\273\0\314\0\335"+
- "\0\356\0\21\0\377\0\u0110\0\21\0\u0121\0\u0132\0\21"+
- "\0\u0143\0\u0154\0\u0165\0\21\0\u0176\0\21\0\u0187";
-
- private static int [] zzUnpackRowMap() {
- int [] result = new int[31];
- int offset = 0;
- offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
- return result;
- }
-
- private static int zzUnpackRowMap(String packed, int offset, int [] result) {
- int i = 0; /* index in packed string */
- int j = offset; /* index in unpacked array */
- int l = packed.length();
- while (i < l) {
- int high = packed.charAt(i++) << 16;
- result[j++] = high | packed.charAt(i++);
- }
- return j;
- }
-
- /**
- * The transition table of the DFA
- */
- private static final int [] ZZ_TRANS = zzUnpackTrans();
-
- private static final String ZZ_TRANS_PACKED_0 =
- "\2\2\1\3\1\4\1\5\1\6\1\7\1\10\1\4"+
- "\1\10\1\2\1\11\1\12\1\2\1\13\2\14\22\0"+
- "\2\3\21\0\1\4\4\0\1\4\12\0\1\15\20\0"+
- "\1\16\24\0\1\17\1\20\11\0\10\11\1\0\1\11"+
- "\1\21\1\22\5\11\10\12\1\0\1\12\1\22\2\12"+
- "\1\22\3\12\2\0\1\23\1\0\1\24\15\0\2\15"+
- "\1\0\1\25\15\0\2\16\16\0\10\17\1\0\10\17"+
- "\7\26\1\27\11\26\10\11\1\0\10\11\1\0\2\23"+
- "\14\0\1\30\3\0\1\31\16\0\7\26\1\32\11\26"+
- "\6\33\1\34\1\27\11\33\1\0\2\31\1\0\1\35"+
- "\14\0\6\26\1\36\1\32\11\26\7\33\1\37\11\33"+
- "\17\0\1\30\1\0\6\33\1\34\1\37\11\33";
-
- private static int [] zzUnpackTrans() {
- int [] result = new int[408];
- int offset = 0;
- offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
- return result;
- }
-
- private static int zzUnpackTrans(String packed, int offset, int [] result) {
- int i = 0; /* index in packed string */
- int j = offset; /* index in unpacked array */
- int l = packed.length();
- while (i < l) {
- int count = packed.charAt(i++);
- int value = packed.charAt(i++);
- value--;
- do result[j++] = value; while (--count > 0);
- }
- return j;
- }
-
-
- /* error codes */
- private static final int ZZ_UNKNOWN_ERROR = 0;
- private static final int ZZ_NO_MATCH = 1;
- private static final int ZZ_PUSHBACK_2BIG = 2;
- private static final char[] EMPTY_BUFFER = new char[0];
- private static final int YYEOF = -1;
- private static java.io.Reader zzReader = null; // Fake
-
- /* error messages for the codes above */
- private static final String ZZ_ERROR_MSG[] = {
- "Unkown internal scanner error",
- "Error: could not match input",
- "Error: pushback value was too large"
- };
-
- /**
- * ZZ_ATTRIBUTE[aState] contains the attributes of state aState
- */
- private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
-
- private static final String ZZ_ATTRIBUTE_PACKED_0 =
- "\1\0\1\11\5\1\1\11\3\1\1\11\1\0\4\1"+
- "\1\11\2\0\1\11\2\1\1\11\2\0\1\1\1\11"+
- "\1\0\1\11\1\0";
-
- private static int [] zzUnpackAttribute() {
- int [] result = new int[31];
- int offset = 0;
- offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
- return result;
- }
-
- private static int zzUnpackAttribute(String packed, int offset, int [] result) {
- int i = 0; /* index in packed string */
- int j = offset; /* index in unpacked array */
- int l = packed.length();
- while (i < l) {
- int count = packed.charAt(i++);
- int value = packed.charAt(i++);
- do result[j++] = value; while (--count > 0);
- }
- return j;
- }
-
- /** the current state of the DFA */
- private int zzState;
-
- /** the current lexical state */
- private int zzLexicalState = YYINITIAL;
-
- /** this buffer contains the current text to be matched and is
- the source of the yytext() string */
- private CharSequence zzBuffer = "";
-
- /** this buffer may contains the current text array to be matched when it is cheap to acquire it */
- private char[] zzBufferArray;
-
- /** the textposition at the last accepting state */
- private int zzMarkedPos;
-
- /** the textposition at the last state to be included in yytext */
- private int zzPushbackPos;
-
- /** the current text position in the buffer */
- private int zzCurrentPos;
-
- /** startRead marks the beginning of the yytext() string in the buffer */
- private int zzStartRead;
-
- /** endRead marks the last character in the buffer, that has been read
- from input */
- private int zzEndRead;
-
- /**
- * zzAtBOL == true <=> the scanner is currently at the beginning of a line
- */
- private boolean zzAtBOL = true;
-
- /** zzAtEOF == true <=> the scanner is at the EOF */
- private boolean zzAtEOF;
-
- /** denotes if the user-EOF-code has already been executed */
- private boolean zzEOFDone;
-
- /* user code: */
- private String fileName;
- public void setFileName(String fileName) {
- this.fileName = fileName;
- }
-
- private int line = 1;
- public int getCurrentLine() {
- return line;
- }
-
- private void computeLine() {
- CharSequence s = yytext();
- for (int i = 0; i < s.length(); i++) {
- if (s.charAt(i) == '\n') line++;
- }
- }
-
-
- _GrammarLexer(java.io.Reader in) {
- this.zzReader = in;
- }
-
- /**
- * Creates a new scanner.
- * There is also java.io.Reader version of this constructor.
- *
- * @param in the java.io.Inputstream to read input from.
- */
- _GrammarLexer(java.io.InputStream in) {
- this(new java.io.InputStreamReader(in));
- }
-
- /**
- * Unpacks the compressed character translation table.
- *
- * @param packed the packed character translation table
- * @return the unpacked character translation table
- */
- private static char [] zzUnpackCMap(String packed) {
- char [] map = new char[0x10000];
- int i = 0; /* index in packed string */
- int j = 0; /* index in unpacked array */
- while (i < 1754) {
- int count = packed.charAt(i++);
- char value = packed.charAt(i++);
- do map[j++] = value; while (--count > 0);
- }
- return map;
- }
-
- public final int getTokenStart(){
- return zzStartRead;
- }
-
- public final int getTokenEnd(){
- return getTokenStart() + yylength();
- }
-
- public void reset(CharSequence buffer, int start, int end,int initialState){
- zzBuffer = buffer;
- zzBufferArray = com.intellij.util.text.CharArrayUtil.fromSequenceWithoutCopying(buffer);
- zzCurrentPos = zzMarkedPos = zzStartRead = start;
- zzPushbackPos = 0;
- zzAtEOF = false;
- zzAtBOL = true;
- zzEndRead = end;
- yybegin(initialState);
- }
-
- /**
- * Refills the input buffer.
- *
- * @return false, iff there was new input.
- *
- * @exception java.io.IOException if any I/O-Error occurs
- */
- private boolean zzRefill() throws java.io.IOException {
- return true;
- }
-
-
- /**
- * Returns the current lexical state.
- */
- public final int yystate() {
- return zzLexicalState;
- }
-
-
- /**
- * Enters a new lexical state
- *
- * @param newState the new lexical state
- */
- public final void yybegin(int newState) {
- zzLexicalState = newState;
- }
-
-
- /**
- * Returns the text matched by the current regular expression.
- */
- public final CharSequence yytext() {
- return zzBuffer.subSequence(zzStartRead, zzMarkedPos);
- }
-
-
- /**
- * Returns the character at position pos from the
- * matched text.
- *
- * It is equivalent to yytext().charAt(pos), but faster
- *
- * @param pos the position of the character to fetch.
- * A value from 0 to yylength()-1.
- *
- * @return the character at position pos
- */
- public final char yycharat(int pos) {
- return zzBufferArray != null ? zzBufferArray[zzStartRead+pos]:zzBuffer.charAt(zzStartRead+pos);
- }
-
-
- /**
- * Returns the length of the matched text region.
- */
- public final int yylength() {
- return zzMarkedPos-zzStartRead;
- }
-
-
- /**
- * Reports an error that occured while scanning.
- *
- * In a wellformed scanner (no or only correct usage of
- * yypushback(int) and a match-all fallback rule) this method
- * will only be called with things that "Can't Possibly Happen".
- * If this method is called, something is seriously wrong
- * (e.g. a JFlex bug producing a faulty scanner etc.).
- *
- * Usual syntax/scanner level error handling should be done
- * in error fallback rules.
- *
- * @param errorCode the code of the errormessage to display
- */
- private void zzScanError(int errorCode) {
- String message;
- try {
- message = ZZ_ERROR_MSG[errorCode];
- }
- catch (ArrayIndexOutOfBoundsException e) {
- message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
- }
-
- throw new Error(message);
- }
-
-
- /**
- * Pushes the specified amount of characters back into the input stream.
- *
- * They will be read again by then next call of the scanning method
- *
- * @param number the number of characters to be read again.
- * This number must not be greater than yylength()!
- */
- public void yypushback(int number) {
- if ( number > yylength() )
- zzScanError(ZZ_PUSHBACK_2BIG);
-
- zzMarkedPos -= number;
- }
-
-
- /**
- * Contains user EOF-code, which will be executed exactly once,
- * when the end of file is reached
- */
- private void zzDoEOF() {
- if (!zzEOFDone) {
- zzEOFDone = true;
-
- }
- }
-
-
- /**
- * Resumes scanning until the next regular expression is matched,
- * the end of input is encountered or an I/O-Error occurs.
- *
- * @return the next token
- * @exception java.io.IOException if any I/O-Error occurs
- */
- public Token advance() throws java.io.IOException {
- int zzInput;
- int zzAction;
-
- // cached fields:
- int zzCurrentPosL;
- int zzMarkedPosL;
- int zzEndReadL = zzEndRead;
- CharSequence zzBufferL = zzBuffer;
- char[] zzBufferArrayL = zzBufferArray;
- char [] zzCMapL = ZZ_CMAP;
-
- int [] zzTransL = ZZ_TRANS;
- int [] zzRowMapL = ZZ_ROWMAP;
- int [] zzAttrL = ZZ_ATTRIBUTE;
-
- while (true) {
- zzMarkedPosL = zzMarkedPos;
-
- zzAction = -1;
-
- zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
-
- zzState = ZZ_LEXSTATE[zzLexicalState];
-
-
- zzForAction: {
- while (true) {
-
- if (zzCurrentPosL < zzEndReadL)
- zzInput = (zzBufferArrayL != null ? zzBufferArrayL[zzCurrentPosL++] : zzBufferL.charAt(zzCurrentPosL++));
- else if (zzAtEOF) {
- zzInput = YYEOF;
- break zzForAction;
- }
- else {
- // store back cached positions
- zzCurrentPos = zzCurrentPosL;
- zzMarkedPos = zzMarkedPosL;
- boolean eof = zzRefill();
- // get translated positions and possibly new buffer
- zzCurrentPosL = zzCurrentPos;
- zzMarkedPosL = zzMarkedPos;
- zzBufferL = zzBuffer;
- zzEndReadL = zzEndRead;
- if (eof) {
- zzInput = YYEOF;
- break zzForAction;
- }
- else {
- zzInput = (zzBufferArrayL != null ? zzBufferArrayL[zzCurrentPosL++] : zzBufferL.charAt(zzCurrentPosL++));
- }
- }
- int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
- if (zzNext == -1) break zzForAction;
- zzState = zzNext;
-
- int zzAttributes = zzAttrL[zzState];
- if ( (zzAttributes & 1) == 1 ) {
- zzAction = zzState;
- zzMarkedPosL = zzCurrentPosL;
- if ( (zzAttributes & 8) == 8 ) break zzForAction;
- }
-
- }
- }
-
- // store back cached position
- zzMarkedPos = zzMarkedPosL;
-
- switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
- case 7:
- { return new Declaration(yytext(), fileName, line);
- }
- case 11: break;
- case 4:
- { return new SymbolToken(yytext(), fileName, line);
- }
- case 12: break;
- case 6:
- { return new SymbolToken("\\" + yytext(), fileName, line);
- }
- case 13: break;
- case 3:
- { computeLine(); return new WhiteSpace(yytext(), fileName, line);
- }
- case 14: break;
- case 9:
- { computeLine(); return new DocComment(yytext(), fileName, line);
- }
- case 15: break;
- case 1:
- { return new Other(yytext(), fileName, line);
- }
- case 16: break;
- case 10:
- { return new Annotation(yytext(), fileName, line);
- }
- case 17: break;
- case 8:
- { computeLine(); return new Comment(yytext(), fileName, line);
- }
- case 18: break;
- case 2:
- { return new Identifier(yytext(), fileName, line);
- }
- case 19: break;
- case 5:
- { return new StringToken(yytext(), fileName, line);
- }
- case 20: break;
- default:
- if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
- zzAtEOF = true;
- zzDoEOF();
- return null;
- }
- else {
- zzScanError(ZZ_NO_MATCH);
- }
- }
- }
- }
-
-
-}