summaryrefslogtreecommitdiffstats
path: root/theme-compiler/src/com
diff options
context:
space:
mode:
authorJonatan Kronqvist <jonatan@vaadin.com>2014-03-28 12:55:33 +0200
committerVaadin Code Review <review@vaadin.com>2014-03-31 13:37:27 +0000
commit353a1a1c3073975ddc6d0f25d8d2b21b9df94343 (patch)
tree73c62e2c993c3c035fe2ba242c5f9583ebe2f54d /theme-compiler/src/com
parent74bfd5e20759f0c26b40b41754129cbd71e0eff3 (diff)
downloadvaadin-framework-353a1a1c3073975ddc6d0f25d8d2b21b9df94343.tar.gz
vaadin-framework-353a1a1c3073975ddc6d0f25d8d2b21b9df94343.zip
Remove theme-compiler and replace with external vaadin-sass-compiler
* Moves CompileTheme from the theme-compiler to buildhelpers * Refactors CompileTheme to get the Vaadin version on the command line instead of using the Version class found in vaadin-shared * Refactors build scripts to pass the version number on the command line when running CompileTheme * Removes the theme-compiler module/project/whatchamacallit * Replaces the theme-compiler dependency with vaadin-sass-compiler 0.9.0 from maven Change-Id: I4f98d15b60e18a826bf264eb55d12b3e736e8e54
Diffstat (limited to 'theme-compiler/src/com')
-rw-r--r--theme-compiler/src/com/vaadin/buildhelpers/CompileTheme.java151
-rw-r--r--theme-compiler/src/com/vaadin/sass/CustomConsoleHandler.java52
-rw-r--r--theme-compiler/src/com/vaadin/sass/SassCompiler.java72
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/ScssStylesheet.java487
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/expression/ArithmeticExpressionEvaluator.java140
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/expression/BinaryExpression.java46
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/expression/BinaryOperator.java70
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/expression/Parentheses.java21
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/expression/exception/ArithmeticException.java42
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/expression/exception/IncompatibleUnitsException.java29
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/handler/SCSSDocumentHandler.java104
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/handler/SCSSDocumentHandlerImpl.java398
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/handler/SCSSErrorHandler.java56
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/CharStream.java130
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/Generic_CharStream.java370
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/JumpException.java39
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/LexicalUnitImpl.java888
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/LocatorImpl.java154
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/MediaListImpl.java100
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/ParseException.java203
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/Parser.java7887
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/Parser.jj3139
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/ParserConstants.java392
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/ParserTokenManager.java5000
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/SCSSLexicalUnit.java40
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/SCSSParseException.java34
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/SelectorListImpl.java77
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/Selectors.java69
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/ThrowedParseException.java41
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/Token.java146
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/TokenMgrError.java162
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/function/AbsFunctionGenerator.java41
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/function/CeilFunctionGenerator.java41
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/function/DarkenFunctionGenerator.java40
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/function/DefaultFunctionGenerator.java48
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/function/FloorFunctionGenerator.java42
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/function/LightenFunctionGenerator.java40
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/function/RoundFunctionGenerator.java41
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/function/SCSSFunctionGenerator.java57
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/resolver/AbstractResolver.java200
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/resolver/ClassloaderResolver.java52
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/resolver/FilesystemResolver.java77
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/resolver/ScssStylesheetResolver.java39
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/selector/CompositeSelector.java43
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/selector/SelectorUtil.java340
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/BlockNode.java128
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/CommentNode.java48
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/ContentNode.java33
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/ExtendNode.java68
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/FontFaceNode.java47
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/ForNode.java49
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/FunctionNode.java63
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/IVariableNode.java24
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/ImportNode.java85
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/KeyframeSelectorNode.java51
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/KeyframesNode.java72
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/ListAppendNode.java34
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/ListContainsNode.java43
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/ListModifyNode.java131
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/ListRemoveNode.java35
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/MediaNode.java82
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/MicrosoftRuleNode.java57
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/MixinDefNode.java122
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/MixinNode.java134
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/NestPropertiesNode.java84
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/Node.java184
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/RuleNode.java175
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/SimpleNode.java64
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/VariableNode.java131
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/WhileNode.java40
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/controldirective/EachDefNode.java104
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/controldirective/ElseNode.java32
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/controldirective/IfElseDefNode.java60
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/controldirective/IfElseNode.java22
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/tree/controldirective/IfNode.java62
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/util/Clonable.java22
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/util/ColorUtil.java309
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/util/DeepCopy.java89
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/util/FastByteArrayInputStream.java82
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/util/FastByteArrayOutputStream.java103
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/util/StringUtil.java237
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/visitor/BlockNodeHandler.java112
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/visitor/EachNodeHandler.java72
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/visitor/ExtendNodeHandler.java130
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/visitor/IfElseNodeHandler.java117
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/visitor/ImportNodeHandler.java132
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/visitor/MixinNodeHandler.java145
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/visitor/NestedNodeHandler.java52
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/visitor/VariableNodeHandler.java36
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/visitor/Visitor.java24
90 files changed, 0 insertions, 25566 deletions
diff --git a/theme-compiler/src/com/vaadin/buildhelpers/CompileTheme.java b/theme-compiler/src/com/vaadin/buildhelpers/CompileTheme.java
deleted file mode 100644
index 11e3b91800..0000000000
--- a/theme-compiler/src/com/vaadin/buildhelpers/CompileTheme.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.buildhelpers;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileWriter;
-import java.io.IOException;
-
-import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.CommandLineParser;
-import org.apache.commons.cli.HelpFormatter;
-import org.apache.commons.cli.Options;
-import org.apache.commons.cli.ParseException;
-import org.apache.commons.cli.PosixParser;
-
-import com.vaadin.sass.internal.ScssStylesheet;
-import com.vaadin.shared.Version;
-
-/**
- * Helper to combine css divided into separate per component dirs into one to
- * optimize http requests.
- */
-public class CompileTheme {
-
- /**
- * @param args
- * @throws IOException
- * @throws ParseException
- */
- public static void main(String[] args) throws IOException, ParseException {
- Options options = new Options();
- options.addOption("t", "theme", true, "the theme to compile");
- options.addOption("f", "theme-folder", true,
- "the folder containing the theme");
- CommandLineParser parser = new PosixParser();
- CommandLine params = parser.parse(options, args);
- if (!params.hasOption("theme") || !params.hasOption("theme-folder")) {
- // automatically generate the help statement
- HelpFormatter formatter = new HelpFormatter();
- formatter.printHelp(CompileTheme.class.getName(), options);
- return;
- }
- String themeName = params.getOptionValue("theme");
- String themeFolder = params.getOptionValue("theme-folder");
-
- // Regular theme
- try {
- processSassTheme(themeFolder, themeName, "styles",
- Version.getFullVersion());
- System.out.println("Compiling theme " + themeName
- + " styles successful");
- } catch (Exception e) {
- System.err.println("Compiling theme " + themeName
- + " styles failed");
- e.printStackTrace();
- }
- // Legacy theme w/o .themename{} wrapping
- try {
- processSassTheme(themeFolder, themeName, "legacy-styles",
- Version.getFullVersion());
- System.out.println("Compiling theme " + themeName
- + " legacy-styles successful");
- } catch (Exception e) {
- System.err.println("Compiling theme " + themeName
- + " legacy-styles failed");
- e.printStackTrace();
- }
- }
-
- private static void processSassTheme(String themeFolder, String themeName,
- String variant, String version) throws Exception {
-
- StringBuffer cssHeader = new StringBuffer();
-
- String stylesCssDir = themeFolder + File.separator + themeName
- + File.separator;
-
- String stylesCssName = stylesCssDir + variant + ".css";
-
- // Process as SASS file
- String sassFile = stylesCssDir + variant + ".scss";
-
- ScssStylesheet scss = ScssStylesheet.get(sassFile);
- if (scss == null) {
- throw new IllegalArgumentException("SASS file: " + sassFile
- + " not found");
- }
- scss.compile();
- BufferedWriter out = new BufferedWriter(new FileWriter(stylesCssName));
- out.write(cssHeader.toString());
- out.write(scss.printState().replace("@version@", version));
- out.close();
-
- System.out.println("Compiled CSS to " + stylesCssName + " ("
- + scss.printState().length() + " bytes)");
-
- createSprites(themeFolder, themeName);
- File oldCss = new File(stylesCssName);
- File newCss = new File(stylesCssDir + variant + "-sprite.css");
-
- if (newCss.exists()) {
- // Theme contained sprites. Renamed "styles-sprite.css" ->
- // "styles.css"
- oldCss.delete();
-
- boolean ok = newCss.renameTo(oldCss);
- if (!ok) {
- throw new RuntimeException("Rename " + newCss + " -> " + oldCss
- + " failed");
- }
- }
-
- }
-
- private static void createSprites(String themeFolder, String themeName)
- throws FileNotFoundException, IOException {
- try {
- // Try loading the class separately from using it to avoid
- // hiding other classpath issues
- Class<?> smartSpritesClass = org.carrot2.labs.smartsprites.SmartSprites.class;
- } catch (NoClassDefFoundError e) {
- System.err
- .println("Could not find smartsprites. No sprites were generated. The theme should still work.");
- return;
- }
-
- String[] parameters = new String[] { "--sprite-png-depth", "AUTO",
- "--css-file-suffix", "-sprite", "--css-file-encoding", "UTF-8",
- "--root-dir-path", themeFolder + File.separator + themeName,
- "--log-level", "WARN" };
-
- org.carrot2.labs.smartsprites.SmartSprites.main(parameters);
- System.out.println("Generated sprites");
-
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/CustomConsoleHandler.java b/theme-compiler/src/com/vaadin/sass/CustomConsoleHandler.java
deleted file mode 100644
index 44c9e345db..0000000000
--- a/theme-compiler/src/com/vaadin/sass/CustomConsoleHandler.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass;
-
-import java.io.PrintStream;
-import java.util.logging.ConsoleHandler;
-import java.util.logging.Level;
-import java.util.logging.LogRecord;
-
-/**
- *
- * @since
- * @author Vaadin Ltd
- */
-public class CustomConsoleHandler extends ConsoleHandler {
-
- private ConsoleHandler stdoutHandler;
-
- public CustomConsoleHandler() {
- PrintStream err = System.err;
- /*
- * ConsoleHandler uses System.err to output all messages. Replace
- * System.err temporary to construct ConsoleHandler and set it back
- * after construction.
- */
- System.setErr(System.out);
- stdoutHandler = new ConsoleHandler();
- System.setErr(err);
- }
-
- @Override
- public void publish(LogRecord record) {
- if (!Level.SEVERE.equals(record.getLevel())) {
- stdoutHandler.publish(record);
- } else {
- super.publish(record);
- }
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/SassCompiler.java b/theme-compiler/src/com/vaadin/sass/SassCompiler.java
deleted file mode 100644
index b554ce2b01..0000000000
--- a/theme-compiler/src/com/vaadin/sass/SassCompiler.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-
-import com.vaadin.sass.internal.ScssStylesheet;
-
-public class SassCompiler {
-
- public static void main(String[] args) throws Exception {
- String input = null;
- String output = null;
- if (args.length < 1 || args.length > 2) {
- System.out
- .println("usage: SassCompile <scss file to compile> <css file to write>");
- return;
- }
-
- File in = new File(args[0]);
- if (!in.canRead()) {
- System.err.println(in.getCanonicalPath() + " could not be read!");
- return;
- }
- input = in.getCanonicalPath();
-
- if (args.length == 2) {
- output = args[1];
- }
-
- // You can set the resolver; if none is set, VaadinResolver will be used
- // ScssStylesheet.setStylesheetResolvers(new VaadinResolver());
-
- ScssStylesheet scss = ScssStylesheet.get(input);
- if (scss == null) {
- System.err.println("The scss file " + input
- + " could not be found.");
- return;
- }
-
- scss.compile();
- if (output == null) {
- System.out.println(scss.printState());
- } else {
- writeFile(output, scss.printState());
- }
- }
-
- public static void writeFile(String filename, String output)
- throws IOException {
- File file = new File(filename);
- FileWriter writer = new FileWriter(file);
- writer.write(output);
- writer.close();
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/ScssStylesheet.java b/theme-compiler/src/com/vaadin/sass/internal/ScssStylesheet.java
deleted file mode 100644
index 42325fde29..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/ScssStylesheet.java
+++ /dev/null
@@ -1,487 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.logging.LogManager;
-import java.util.logging.Logger;
-
-import org.w3c.css.sac.CSSException;
-import org.w3c.css.sac.InputSource;
-
-import com.vaadin.buildhelpers.CompileTheme;
-import com.vaadin.sass.internal.handler.SCSSDocumentHandler;
-import com.vaadin.sass.internal.handler.SCSSDocumentHandlerImpl;
-import com.vaadin.sass.internal.handler.SCSSErrorHandler;
-import com.vaadin.sass.internal.parser.ParseException;
-import com.vaadin.sass.internal.parser.Parser;
-import com.vaadin.sass.internal.parser.SCSSParseException;
-import com.vaadin.sass.internal.resolver.ClassloaderResolver;
-import com.vaadin.sass.internal.resolver.FilesystemResolver;
-import com.vaadin.sass.internal.resolver.ScssStylesheetResolver;
-import com.vaadin.sass.internal.tree.BlockNode;
-import com.vaadin.sass.internal.tree.MixinDefNode;
-import com.vaadin.sass.internal.tree.Node;
-import com.vaadin.sass.internal.tree.VariableNode;
-import com.vaadin.sass.internal.tree.controldirective.IfElseDefNode;
-import com.vaadin.sass.internal.visitor.ExtendNodeHandler;
-import com.vaadin.sass.internal.visitor.ImportNodeHandler;
-
-public class ScssStylesheet extends Node {
-
- private static final long serialVersionUID = 3849790204404961608L;
-
- private static ScssStylesheet mainStyleSheet = null;
-
- private static final HashMap<String, VariableNode> variables = new HashMap<String, VariableNode>();
-
- private static final Map<String, MixinDefNode> mixinDefs = new HashMap<String, MixinDefNode>();
-
- private static final HashSet<IfElseDefNode> ifElseDefNodes = new HashSet<IfElseDefNode>();
-
- private static HashMap<Node, Node> lastNodeAdded = new HashMap<Node, Node>();
-
- private File file;
-
- private String charset;
-
- private List<ScssStylesheetResolver> resolvers = new ArrayList<ScssStylesheetResolver>();
-
- /**
- * Read in a file SCSS and parse it into a ScssStylesheet
- *
- * @param file
- * @throws IOException
- */
- public ScssStylesheet() {
- super();
- }
-
- /**
- * Main entry point for the SASS compiler. Takes in a file and builds up a
- * ScssStylesheet tree out of it. Calling compile() on it will transform
- * SASS into CSS. Calling printState() will print out the SCSS/CSS.
- *
- * @param identifier
- * The file path. If null then null is returned.
- * @return
- * @throws CSSException
- * @throws IOException
- */
- public static ScssStylesheet get(String identifier) throws CSSException,
- IOException {
- return get(identifier, null);
- }
-
- /**
- * Main entry point for the SASS compiler. Takes in a file and an optional
- * parent style sheet, then builds up a ScssStylesheet tree out of it.
- * Calling compile() on it will transform SASS into CSS. Calling
- * printState() will print out the SCSS/CSS.
- *
- * @param identifier
- * The file path. If null then null is returned.
- * @param parentStylesheet
- * Style sheet from which to inherit resolvers and encoding. May
- * be null.
- * @return
- * @throws CSSException
- * @throws IOException
- */
- public static ScssStylesheet get(String identifier,
- ScssStylesheet parentStylesheet) throws CSSException, IOException {
- return get(identifier, parentStylesheet, new SCSSDocumentHandlerImpl(),
- new SCSSErrorHandler());
- }
-
- /**
- * Main entry point for the SASS compiler. Takes in a file, an optional
- * parent stylesheet, and document and error handlers. Then builds up a
- * ScssStylesheet tree out of it. Calling compile() on it will transform
- * SASS into CSS. Calling printState() will print out the SCSS/CSS.
- *
- * @param identifier
- * The file path. If null then null is returned.
- * @param parentStylesheet
- * Style sheet from which to inherit resolvers and encoding. May
- * be null.
- * @param documentHandler
- * Instance of document handler. May not be null.
- * @param errorHandler
- * Instance of error handler. May not be null.
- * @return
- * @throws CSSException
- * @throws IOException
- */
- public static ScssStylesheet get(String identifier,
- ScssStylesheet parentStylesheet,
- SCSSDocumentHandler documentHandler, SCSSErrorHandler errorHandler)
- throws CSSException, IOException {
- /*
- * The encoding to be used is passed through "encoding" parameter. the
- * imported children scss node will have the same encoding as their
- * parent, ultimately the root scss file. The root scss node has this
- * "encoding" parameter to be null. Its encoding is determined by the
- *
- * @charset declaration, the default one is ASCII.
- */
-
- if (identifier == null) {
- return null;
- }
-
- // FIXME Is this actually intended? /John 1.3.2013
- File file = new File(identifier);
- file = file.getCanonicalFile();
-
- ScssStylesheet stylesheet = documentHandler.getStyleSheet();
- if (parentStylesheet == null) {
- // Use default resolvers
- stylesheet.addResolver(new FilesystemResolver());
- stylesheet.addResolver(new ClassloaderResolver());
- } else {
- // Use parent resolvers
- stylesheet.setResolvers(parentStylesheet.getResolvers());
- }
- InputSource source = stylesheet.resolveStylesheet(identifier,
- parentStylesheet);
- if (source == null) {
- return null;
- }
- if (parentStylesheet != null) {
- source.setEncoding(parentStylesheet.getCharset());
- }
-
- Parser parser = new Parser();
- parser.setErrorHandler(errorHandler);
- parser.setDocumentHandler(documentHandler);
-
- try {
- parser.parseStyleSheet(source);
- } catch (ParseException e) {
- // catch ParseException, re-throw a SCSSParseException which has
- // file name info.
- throw new SCSSParseException(e, identifier);
- }
-
- stylesheet.setCharset(parser.getInputSource().getEncoding());
- return stylesheet;
- }
-
- public InputSource resolveStylesheet(String identifier,
- ScssStylesheet parentStylesheet) {
- for (ScssStylesheetResolver resolver : getResolvers()) {
- InputSource source = resolver.resolve(parentStylesheet, identifier);
- if (source != null) {
- File f = new File(source.getURI());
- setFile(f);
- return source;
- }
- }
-
- return null;
- }
-
- /**
- * Retrieves a list of resolvers to use when resolving imports
- *
- * @since 7.2
- * @return the resolvers used to resolving imports
- */
- public List<ScssStylesheetResolver> getResolvers() {
- return Collections.unmodifiableList(resolvers);
- }
-
- /**
- * Sets the list of resolvers to use when resolving imports
- *
- * @since 7.2
- * @param resolvers
- * the resolvers to set
- */
- public void setResolvers(List<ScssStylesheetResolver> resolvers) {
- this.resolvers = new ArrayList<ScssStylesheetResolver>(resolvers);
- }
-
- /**
- * Adds the given resolver to the resolver list
- *
- * @since 7.2
- * @param resolver
- * The resolver to add
- */
- public void addResolver(ScssStylesheetResolver resolver) {
- resolvers.add(resolver);
- }
-
- /**
- * Applies all the visitors and compiles SCSS into Css.
- *
- * @throws Exception
- */
- public void compile() throws Exception {
- mainStyleSheet = this;
- mixinDefs.clear();
- variables.clear();
- ifElseDefNodes.clear();
- lastNodeAdded.clear();
- ExtendNodeHandler.clear();
- importOtherFiles(this);
- populateDefinitions(this);
- traverse(this);
- removeEmptyBlocks(this);
- }
-
- private void importOtherFiles(ScssStylesheet node) {
- ImportNodeHandler.traverse(node);
- }
-
- private void populateDefinitions(Node node) {
- if (node instanceof MixinDefNode) {
- mixinDefs.put(((MixinDefNode) node).getName(), (MixinDefNode) node);
- node.getParentNode().removeChild(node);
- } else if (node instanceof IfElseDefNode) {
- ifElseDefNodes.add((IfElseDefNode) node);
- }
-
- for (final Node child : new ArrayList<Node>(node.getChildren())) {
- populateDefinitions(child);
- }
-
- }
-
- /**
- * Prints out the current state of the node tree. Will return SCSS before
- * compile and CSS after.
- *
- * For now this is an own method with it's own implementation that most node
- * types will implement themselves.
- */
- @Override
- public String printState() {
- return buildString(PRINT_STRATEGY);
- }
-
- @Override
- public String toString() {
- return "Stylesheet node [" + buildString(TO_STRING_STRATEGY) + "]";
- }
-
- public void addChild(int index, VariableNode node) {
- if (node != null) {
- children.add(index, node);
- }
- }
-
- public static ScssStylesheet get() {
- return mainStyleSheet;
- }
-
- @Override
- public void traverse() {
- // Not used for ScssStylesheet
- }
-
- /**
- * Traverses a node and its children recursively, calling all the
- * appropriate handlers via {@link Node#traverse()}.
- *
- * The node itself may be removed during the traversal and replaced with
- * other nodes at the same position or later on the child list of its
- * parent.
- *
- * @param node
- * node to traverse
- * @return true if the node was removed (and possibly replaced by others),
- * false if not
- */
- public boolean traverse(Node node) {
- Node originalParent = node.getParentNode();
-
- node.traverse();
-
- Map<String, VariableNode> variableScope = openVariableScope();
-
- // the size of the child list may change on each iteration: current node
- // may get deleted and possibly other nodes have been inserted where it
- // was or after that position
- for (int i = 0; i < node.getChildren().size(); i++) {
- Node current = node.getChildren().get(i);
- if (traverse(current)) {
- // current has been removed
- --i;
- }
- }
-
- closeVariableScope(variableScope);
-
- // clean up insert point so that processing of the next block will
- // insert after that block
- lastNodeAdded.remove(originalParent);
-
- // has the node been removed from its parent?
- if (originalParent != null) {
- boolean removed = !originalParent.getChildren().contains(node);
- return removed;
- } else {
- return false;
- }
- }
-
- /**
- * Start a new scope for variables. Any variables set or modified after
- * opening a new scope are only valid until the scope is closed, at which
- * time they are replaced with their old values.
- *
- * @return old scope to give to a paired {@link #closeVariableScope(Map)}
- * call at the end of the scope (unmodifiable map).
- */
- public static Map<String, VariableNode> openVariableScope() {
- @SuppressWarnings("unchecked")
- HashMap<String, VariableNode> variableScope = (HashMap<String, VariableNode>) variables
- .clone();
- return Collections.unmodifiableMap(variableScope);
- }
-
- /**
- * End a scope for variables, replacing all active variables with those from
- * the original scope (obtained from {@link #openVariableScope()}).
- *
- * @param originalScope
- * original scope
- */
- public static void closeVariableScope(
- Map<String, VariableNode> originalScope) {
- variables.clear();
- variables.putAll(originalScope);
- }
-
- public void removeEmptyBlocks(Node node) {
- // depth first for avoiding re-checking parents of removed nodes
- for (Node child : new ArrayList<Node>(node.getChildren())) {
- removeEmptyBlocks(child);
- }
- Node parent = node.getParentNode();
- if (node instanceof BlockNode && node.getChildren().isEmpty()
- && parent != null) {
- // remove empty block
- parent.removeChild(node);
- }
- }
-
- public static void addVariable(VariableNode node) {
- variables.put(node.getName(), node);
- }
-
- public static VariableNode getVariable(String string) {
- return variables.get(string);
- }
-
- public static ArrayList<VariableNode> getVariables() {
- return new ArrayList<VariableNode>(variables.values());
- }
-
- public static MixinDefNode getMixinDefinition(String name) {
- return mixinDefs.get(name);
- }
-
- public void setFile(File file) {
- this.file = file;
- }
-
- /**
- * Returns the directory containing this style sheet
- *
- * @since 7.2
- * @return The directory containing this style sheet
- */
- public String getDirectory() {
- return file.getParent();
- }
-
- /**
- * Returns the full file name for this style sheet
- *
- * @since 7.2
- * @return The full file name for this style sheet
- */
- public String getFileName() {
- return file.getPath();
- }
-
- public static HashMap<Node, Node> getLastNodeAdded() {
- return lastNodeAdded;
- }
-
- public static final void warning(String msg) {
- Logger.getLogger(ScssStylesheet.class.getName()).warning(msg);
- }
-
- public String getCharset() {
- return charset;
- }
-
- public void setCharset(String charset) {
- this.charset = charset;
- }
-
- private String buildString(BuildStringStrategy strategy) {
- StringBuilder string = new StringBuilder("");
- String delimeter = "\n\n";
- // add charset declaration, if it is not default "ASCII".
- if (!"ASCII".equals(getCharset())) {
- string.append("@charset \"").append(getCharset()).append("\";")
- .append(delimeter);
- }
- if (children.size() > 0) {
- string.append(strategy.build(children.get(0)));
- }
- if (children.size() > 1) {
- for (int i = 1; i < children.size(); i++) {
- String childString = strategy.build(children.get(i));
- if (childString != null) {
- string.append(delimeter).append(childString);
- }
- }
- }
- String output = string.toString();
- return output;
- }
-
- static {
- String logFile = System.getProperty("java.util.logging.config.file");
- if (logFile == null) {
- try {
- LogManager.getLogManager().readConfiguration(
- CompileTheme.class
- .getResourceAsStream("/logging.properties"));
- } catch (SecurityException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/expression/ArithmeticExpressionEvaluator.java b/theme-compiler/src/com/vaadin/sass/internal/expression/ArithmeticExpressionEvaluator.java
deleted file mode 100644
index 552b464941..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/expression/ArithmeticExpressionEvaluator.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.expression;
-
-import static com.vaadin.sass.internal.parser.SCSSLexicalUnit.SCSS_VARIABLE;
-
-import java.util.Stack;
-
-import com.vaadin.sass.internal.expression.exception.ArithmeticException;
-import com.vaadin.sass.internal.parser.LexicalUnitImpl;
-import com.vaadin.sass.internal.parser.SCSSLexicalUnit;
-
-public class ArithmeticExpressionEvaluator {
- private static ArithmeticExpressionEvaluator instance;
-
- public static ArithmeticExpressionEvaluator get() {
- if (instance == null) {
- instance = new ArithmeticExpressionEvaluator();
- }
- return instance;
- }
-
- private void createNewOperand(BinaryOperator operator,
- Stack<Object> operands) {
- Object rightOperand = operands.pop();
- operands.push(new BinaryExpression(operands.pop(), operator,
- rightOperand));
- }
-
- public boolean containsArithmeticalOperator(LexicalUnitImpl term) {
- LexicalUnitImpl current = term;
- while (current != null) {
- for (BinaryOperator operator : BinaryOperator.values()) {
- /*
- * '/' is treated as an arithmetical operator when one of its
- * operands is Variable, or there is another binary operator.
- * Otherwise, '/' is treated as a CSS operator.
- */
- if (current.getLexicalUnitType() == operator.type) {
- if (current.getLexicalUnitType() != BinaryOperator.DIV.type) {
- return true;
- } else {
- if (current.getPreviousLexicalUnit()
- .getLexicalUnitType() == SCSS_VARIABLE
- || current.getNextLexicalUnit()
- .getLexicalUnitType() == SCSS_VARIABLE) {
- return true;
- }
- }
- }
- }
- current = current.getNextLexicalUnit();
- }
- return false;
- }
-
- private Object createExpression(LexicalUnitImpl term) {
- LexicalUnitImpl current = term;
- boolean afterOperand = false;
- Stack<Object> operands = new Stack<Object>();
- Stack<Object> operators = new Stack<Object>();
- inputTermLoop: while (current != null) {
- if (afterOperand) {
- if (current.getLexicalUnitType() == SCSSLexicalUnit.SCSS_OPERATOR_RIGHT_PAREN) {
- Object operator = null;
- while (!operators.isEmpty()
- && ((operator = operators.pop()) != Parentheses.LEFT)) {
- createNewOperand((BinaryOperator) operator, operands);
- }
- current = current.getNextLexicalUnit();
- continue;
- }
- afterOperand = false;
- for (BinaryOperator operator : BinaryOperator.values()) {
- if (current.getLexicalUnitType() == operator.type) {
- while (!operators.isEmpty()
- && (operators.peek() != Parentheses.LEFT)
- && (((BinaryOperator) operators.peek()).precedence >= operator.precedence)) {
- createNewOperand((BinaryOperator) operators.pop(),
- operands);
- }
- operators.push(operator);
-
- current = current.getNextLexicalUnit();
- continue inputTermLoop;
- }
- }
- throw new ArithmeticException("Illegal arithmetic expression",
- term);
- }
- if (current.getLexicalUnitType() == SCSSLexicalUnit.SCSS_OPERATOR_LEFT_PAREN) {
- operators.push(Parentheses.LEFT);
- current = current.getNextLexicalUnit();
- continue;
- }
- afterOperand = true;
-
- operands.push(current);
- current = current.getNextLexicalUnit();
- }
-
- while (!operators.isEmpty()) {
- Object operator = operators.pop();
- if (operator == Parentheses.LEFT) {
- throw new ArithmeticException("Unexpected \"(\" found", term);
- }
- createNewOperand((BinaryOperator) operator, operands);
- }
- Object expression = operands.pop();
- if (!operands.isEmpty()) {
- LexicalUnitImpl operand = (LexicalUnitImpl) operands.peek();
- throw new ArithmeticException("Unexpected operand "
- + operand.toString() + " found", term);
- }
- return expression;
- }
-
- public LexicalUnitImpl evaluate(LexicalUnitImpl term) {
- Object result = ArithmeticExpressionEvaluator.get().createExpression(
- term);
- if (result instanceof BinaryExpression) {
- return ((BinaryExpression) result).eval();
- }
- return term;
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/expression/BinaryExpression.java b/theme-compiler/src/com/vaadin/sass/internal/expression/BinaryExpression.java
deleted file mode 100644
index bfcdf6f506..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/expression/BinaryExpression.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.expression;
-
-import com.vaadin.sass.internal.parser.LexicalUnitImpl;
-
-public class BinaryExpression {
- public Object leftOperand = null;
- public BinaryOperator operator = null;
- public Object rightOperand = null;
-
- public BinaryExpression(Object leftOperand, BinaryOperator operator,
- Object rightOperand) {
- this.leftOperand = leftOperand;
- this.operator = operator;
- this.rightOperand = rightOperand;
- }
-
- public LexicalUnitImpl eval() {
- LexicalUnitImpl leftValue = (leftOperand instanceof BinaryExpression) ? ((BinaryExpression) leftOperand)
- .eval() : (LexicalUnitImpl) leftOperand;
- LexicalUnitImpl rightValue = (rightOperand instanceof BinaryExpression) ? ((BinaryExpression) rightOperand)
- .eval() : (LexicalUnitImpl) rightOperand;
- return operator.eval(leftValue, rightValue);
- }
-
- @Override
- public String toString() {
- return "(" + leftOperand + " " + operator.type + " " + rightOperand
- + ")";
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/expression/BinaryOperator.java b/theme-compiler/src/com/vaadin/sass/internal/expression/BinaryOperator.java
deleted file mode 100644
index 15d3da797f..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/expression/BinaryOperator.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.expression;
-
-import org.w3c.css.sac.LexicalUnit;
-
-import com.vaadin.sass.internal.parser.LexicalUnitImpl;
-
-public enum BinaryOperator {
- ADD(LexicalUnit.SAC_OPERATOR_PLUS, 1) {
- @Override
- public LexicalUnitImpl eval(LexicalUnitImpl leftValue,
- LexicalUnitImpl rightValue) {
- return leftValue.add(rightValue);
- }
- },
- MINUS(LexicalUnit.SAC_OPERATOR_MINUS, 1) {
- @Override
- public LexicalUnitImpl eval(LexicalUnitImpl leftValue,
- LexicalUnitImpl rightValue) {
- return leftValue.minus(rightValue);
- }
- },
- MUL(LexicalUnit.SAC_OPERATOR_MULTIPLY, 2) {
- @Override
- public LexicalUnitImpl eval(LexicalUnitImpl leftValue,
- LexicalUnitImpl rightValue) {
- return leftValue.multiply(rightValue);
- }
- },
- DIV(LexicalUnit.SAC_OPERATOR_SLASH, 2) {
- @Override
- public LexicalUnitImpl eval(LexicalUnitImpl leftValue,
- LexicalUnitImpl rightValue) {
- return leftValue.divide(rightValue);
- }
- },
- MOD(LexicalUnit.SAC_OPERATOR_MOD, 2) {
- @Override
- public LexicalUnitImpl eval(LexicalUnitImpl leftValue,
- LexicalUnitImpl rightValue) {
- return leftValue.modulo(rightValue);
- }
- };
-
- public final short type;
- public final int precedence;
-
- BinaryOperator(short type, int precedence) {
- this.type = type;
- this.precedence = precedence;
- }
-
- public abstract LexicalUnitImpl eval(LexicalUnitImpl leftValue,
- LexicalUnitImpl rightValue);
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/expression/Parentheses.java b/theme-compiler/src/com/vaadin/sass/internal/expression/Parentheses.java
deleted file mode 100644
index 5df8607aaf..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/expression/Parentheses.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.expression;
-
-public enum Parentheses {
- LEFT, RIGHT
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/expression/exception/ArithmeticException.java b/theme-compiler/src/com/vaadin/sass/internal/expression/exception/ArithmeticException.java
deleted file mode 100644
index f9ab90fc32..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/expression/exception/ArithmeticException.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.expression.exception;
-
-import com.vaadin.sass.internal.parser.LexicalUnitImpl;
-
-public class ArithmeticException extends RuntimeException {
- public ArithmeticException(String errorMsg) {
- super(errorMsg);
- }
-
- public ArithmeticException(String error, LexicalUnitImpl term) {
- super(buildMessage(error, term));
- }
-
- private static String buildMessage(String message, LexicalUnitImpl term) {
- StringBuilder builder = new StringBuilder(message);
-
- builder.append(": \"");
- builder.append(term.toString());
- builder.append("\" [");
- builder.append(term.getLineNumber());
- builder.append(",");
- builder.append(term.getColumnNumber());
- builder.append("]");
-
- return builder.toString();
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/expression/exception/IncompatibleUnitsException.java b/theme-compiler/src/com/vaadin/sass/internal/expression/exception/IncompatibleUnitsException.java
deleted file mode 100644
index bbeb0140f2..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/expression/exception/IncompatibleUnitsException.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.expression.exception;
-
-public class IncompatibleUnitsException extends ArithmeticException {
- public IncompatibleUnitsException(String errorExpr) {
- super(getErrorMsg(errorExpr));
- }
-
- private static String getErrorMsg(String errorExpr) {
- StringBuilder builder = new StringBuilder();
- builder.append("Incompatible units found in: ");
- builder.append("'").append(errorExpr).append("'");
- return builder.toString();
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/handler/SCSSDocumentHandler.java b/theme-compiler/src/com/vaadin/sass/internal/handler/SCSSDocumentHandler.java
deleted file mode 100644
index 3bf6c056c4..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/handler/SCSSDocumentHandler.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.handler;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import org.w3c.css.sac.CSSException;
-import org.w3c.css.sac.DocumentHandler;
-import org.w3c.css.sac.SACMediaList;
-
-import com.vaadin.sass.internal.ScssStylesheet;
-import com.vaadin.sass.internal.parser.LexicalUnitImpl;
-import com.vaadin.sass.internal.tree.ForNode;
-import com.vaadin.sass.internal.tree.VariableNode;
-import com.vaadin.sass.internal.tree.WhileNode;
-import com.vaadin.sass.internal.tree.controldirective.EachDefNode;
-
-public interface SCSSDocumentHandler extends DocumentHandler {
- ScssStylesheet getStyleSheet();
-
- void variable(String name, LexicalUnitImpl value, boolean guarded);
-
- void startMixinDirective(String name, Collection<VariableNode> args);
-
- void endMixinDirective(String name, Collection<VariableNode> args);
-
- void debugDirective();
-
- ForNode forDirective(String var, String from, String to, boolean exclusive,
- String body);
-
- WhileNode whileDirective(String condition, String body);
-
- void startNestedProperties(String name);
-
- void endNestedProperties(String name);
-
- void importStyle(String uri, SACMediaList media, boolean isURL);
-
- void property(String name, LexicalUnitImpl value, boolean important,
- String comment);
-
- EachDefNode startEachDirective(String variable, ArrayList<String> list);
-
- void endEachDirective();
-
- void startIfElseDirective();
-
- void endIfElseDirective();
-
- void ifDirective(String evaluator);
-
- void elseDirective();
-
- void startSelector(ArrayList<String> selectors) throws CSSException;
-
- void endSelector() throws CSSException;
-
- void extendDirective(ArrayList<String> list);
-
- void microsoftDirective(String name, String value);
-
- EachDefNode startEachDirective(String var, String listVariable);
-
- void removeDirective(String variable, String list, String remove,
- String separator);
-
- void appendDirective(String variable, String list, String remove,
- String separator);
-
- void containsDirective(String variable, String list, String contains,
- String separator);
-
- void startKeyFrames(String keyframeName, String animationname);
-
- void endKeyFrames();
-
- void startKeyframeSelector(String selector);
-
- void endKeyframeSelector();
-
- void contentDirective();
-
- void startInclude(String name, List<LexicalUnitImpl> args);
-
- void endInclude();
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/handler/SCSSDocumentHandlerImpl.java b/theme-compiler/src/com/vaadin/sass/internal/handler/SCSSDocumentHandlerImpl.java
deleted file mode 100644
index 8c09e44f7c..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/handler/SCSSDocumentHandlerImpl.java
+++ /dev/null
@@ -1,398 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.handler;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Stack;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.w3c.css.sac.CSSException;
-import org.w3c.css.sac.InputSource;
-import org.w3c.css.sac.LexicalUnit;
-import org.w3c.css.sac.SACMediaList;
-import org.w3c.css.sac.SelectorList;
-
-import com.vaadin.sass.internal.ScssStylesheet;
-import com.vaadin.sass.internal.parser.LexicalUnitImpl;
-import com.vaadin.sass.internal.tree.BlockNode;
-import com.vaadin.sass.internal.tree.CommentNode;
-import com.vaadin.sass.internal.tree.ContentNode;
-import com.vaadin.sass.internal.tree.ExtendNode;
-import com.vaadin.sass.internal.tree.FontFaceNode;
-import com.vaadin.sass.internal.tree.ForNode;
-import com.vaadin.sass.internal.tree.ImportNode;
-import com.vaadin.sass.internal.tree.KeyframeSelectorNode;
-import com.vaadin.sass.internal.tree.KeyframesNode;
-import com.vaadin.sass.internal.tree.ListAppendNode;
-import com.vaadin.sass.internal.tree.ListContainsNode;
-import com.vaadin.sass.internal.tree.ListRemoveNode;
-import com.vaadin.sass.internal.tree.MediaNode;
-import com.vaadin.sass.internal.tree.MicrosoftRuleNode;
-import com.vaadin.sass.internal.tree.MixinDefNode;
-import com.vaadin.sass.internal.tree.MixinNode;
-import com.vaadin.sass.internal.tree.NestPropertiesNode;
-import com.vaadin.sass.internal.tree.Node;
-import com.vaadin.sass.internal.tree.RuleNode;
-import com.vaadin.sass.internal.tree.SimpleNode;
-import com.vaadin.sass.internal.tree.VariableNode;
-import com.vaadin.sass.internal.tree.WhileNode;
-import com.vaadin.sass.internal.tree.controldirective.EachDefNode;
-import com.vaadin.sass.internal.tree.controldirective.ElseNode;
-import com.vaadin.sass.internal.tree.controldirective.IfElseDefNode;
-import com.vaadin.sass.internal.tree.controldirective.IfNode;
-
-public class SCSSDocumentHandlerImpl implements SCSSDocumentHandler {
-
- private final ScssStylesheet styleSheet;
- Stack<Node> nodeStack = new Stack<Node>();
-
- public SCSSDocumentHandlerImpl() {
- this(new ScssStylesheet());
- }
-
- public SCSSDocumentHandlerImpl(ScssStylesheet styleSheet) {
- this.styleSheet = styleSheet;
- nodeStack.push(styleSheet);
- }
-
- @Override
- public ScssStylesheet getStyleSheet() {
- return styleSheet;
- }
-
- @Override
- public void startDocument(InputSource source) throws CSSException {
- nodeStack.push(styleSheet);
- }
-
- @Override
- public void endDocument(InputSource source) throws CSSException {
- }
-
- @Override
- public void variable(String name, LexicalUnitImpl value, boolean guarded) {
- VariableNode node = new VariableNode(name, value, guarded);
- nodeStack.peek().appendChild(node);
- }
-
- @Override
- public void debugDirective() {
- }
-
- @Override
- public ForNode forDirective(String var, String from, String to,
- boolean exclusive, String body) {
- ForNode node = new ForNode(var, from, to, exclusive, body);
- log(node);
- return node;
- }
-
- @Override
- public EachDefNode startEachDirective(String var, ArrayList<String> list) {
- EachDefNode node = new EachDefNode(var, list);
- nodeStack.peek().appendChild(node);
- nodeStack.push(node);
- return node;
- }
-
- @Override
- public EachDefNode startEachDirective(String var, String listVariable) {
- EachDefNode node = new EachDefNode(var, listVariable);
- nodeStack.peek().appendChild(node);
- nodeStack.push(node);
- return node;
- }
-
- @Override
- public void endEachDirective() {
- nodeStack.pop();
- }
-
- @Override
- public WhileNode whileDirective(String condition, String body) {
- WhileNode node = new WhileNode(condition, body);
- log(node);
- return node;
- }
-
- @Override
- public void comment(String text) throws CSSException {
- CommentNode node = new CommentNode(text);
- nodeStack.peek().appendChild(node);
- }
-
- @Override
- public void ignorableAtRule(String atRule) throws CSSException {
- log("ignorableAtRule(String atRule): " + atRule);
- }
-
- @Override
- public void namespaceDeclaration(String prefix, String uri)
- throws CSSException {
- log("namespaceDeclaration(String prefix, String uri): " + prefix + ", "
- + uri);
- }
-
- @Override
- public void importStyle(String uri, SACMediaList media,
- String defaultNamespaceURI) throws CSSException {
- }
-
- @Override
- public void startMedia(SACMediaList media) throws CSSException {
- MediaNode node = new MediaNode(media);
- nodeStack.peek().appendChild(node);
- nodeStack.push(node);
- }
-
- @Override
- public void endMedia(SACMediaList media) throws CSSException {
- nodeStack.pop();
- }
-
- @Override
- public void startPage(String name, String pseudo_page) throws CSSException {
- log("startPage(String name, String pseudo_page): " + name + ", "
- + pseudo_page);
- }
-
- @Override
- public void endPage(String name, String pseudo_page) throws CSSException {
- log("endPage(String name, String pseudo_page): " + name + ", "
- + pseudo_page);
- }
-
- @Override
- public void startFontFace() throws CSSException {
- FontFaceNode node = new FontFaceNode();
- nodeStack.peek().appendChild(node);
- nodeStack.push(node);
- }
-
- @Override
- public void endFontFace() throws CSSException {
- nodeStack.pop();
- }
-
- @Override
- public void startSelector(ArrayList<String> selectors) throws CSSException {
- BlockNode node = new BlockNode(selectors);
- nodeStack.peek().appendChild(node);
- nodeStack.push(node);
- }
-
- @Override
- public void endSelector() throws CSSException {
- nodeStack.pop();
- }
-
- @Override
- public void property(String name, LexicalUnit value, boolean important)
- throws CSSException {
- property(name, (LexicalUnitImpl) value, important, null);
- }
-
- @Override
- public void property(String name, LexicalUnitImpl value, boolean important,
- String comment) {
- RuleNode node = new RuleNode(name, value, important, comment);
- nodeStack.peek().appendChild(node);
- }
-
- @Override
- public void extendDirective(ArrayList<String> list) {
- ExtendNode node = new ExtendNode(list);
- nodeStack.peek().appendChild(node);
- }
-
- @Override
- public void startNestedProperties(String name) {
- NestPropertiesNode node = new NestPropertiesNode(name);
- nodeStack.peek().appendChild(node);
- nodeStack.push(node);
- }
-
- @Override
- public void endNestedProperties(String name) {
- nodeStack.pop();
- }
-
- @Override
- public void startMixinDirective(String name, Collection<VariableNode> args) {
- MixinDefNode node = new MixinDefNode(name.trim(), args);
- nodeStack.peek().appendChild(node);
- nodeStack.push(node);
- }
-
- @Override
- public void endMixinDirective(String name, Collection<VariableNode> args) {
- nodeStack.pop();
- }
-
- @Override
- public void importStyle(String uri, SACMediaList media, boolean isURL) {
- ImportNode node = new ImportNode(uri, media, isURL);
- nodeStack.peek().appendChild(node);
- }
-
- @Override
- public void startIfElseDirective() {
- final IfElseDefNode node = new IfElseDefNode();
- nodeStack.peek().appendChild(node);
- nodeStack.push(node);
- }
-
- @Override
- public void ifDirective(String evaluator) {
- if (nodeStack.peek() instanceof IfNode) {
- nodeStack.pop();
- }
- IfNode node = new IfNode(evaluator);
- nodeStack.peek().appendChild(node);
- nodeStack.push(node);
- }
-
- @Override
- public void elseDirective() {
- if (nodeStack.peek() instanceof IfNode) {
- nodeStack.pop();
- }
- ElseNode node = new ElseNode();
- nodeStack.peek().appendChild(node);
- nodeStack.push(node);
- }
-
- @Override
- public void endIfElseDirective() {
- if ((nodeStack.peek() instanceof ElseNode)
- || (nodeStack.peek() instanceof IfNode)) {
- nodeStack.pop();
- }
- nodeStack.pop();
- }
-
- @Override
- public void microsoftDirective(String name, String value) {
- MicrosoftRuleNode node = new MicrosoftRuleNode(name, value);
- nodeStack.peek().appendChild(node);
- }
-
- // rule that is passed to the output as-is (except variable value
- // substitution) - no children
- public void unrecognizedRule(String text) {
- SimpleNode node = new SimpleNode(text);
- nodeStack.peek().appendChild(node);
- }
-
- @Override
- public void endSelector(SelectorList arg0) throws CSSException {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void startSelector(SelectorList arg0) throws CSSException {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void removeDirective(String variable, String list, String remove,
- String separator) {
- ListRemoveNode node = new ListRemoveNode(variable, list, remove,
- separator);
- nodeStack.peek().appendChild(node);
- }
-
- @Override
- public void appendDirective(String variable, String list, String append,
- String separator) {
- ListAppendNode node = new ListAppendNode(variable, list, append,
- separator);
- nodeStack.peek().appendChild(node);
- }
-
- @Override
- public void containsDirective(String variable, String list,
- String contains, String separator) {
- ListContainsNode node = new ListContainsNode(variable, list, contains,
- separator);
- nodeStack.peek().appendChild(node);
- }
-
- @Override
- public void startKeyFrames(String keyframeName, String animationName) {
- KeyframesNode node = new KeyframesNode(keyframeName, animationName);
- nodeStack.peek().appendChild(node);
- nodeStack.push(node);
-
- }
-
- @Override
- public void endKeyFrames() {
- nodeStack.pop();
-
- }
-
- @Override
- public void startKeyframeSelector(String selector) {
- KeyframeSelectorNode node = new KeyframeSelectorNode(selector);
- nodeStack.peek().appendChild(node);
- nodeStack.push(node);
-
- }
-
- @Override
- public void endKeyframeSelector() {
- nodeStack.pop();
- }
-
- @Override
- public void contentDirective() {
- ContentNode node = new ContentNode();
- nodeStack.peek().appendChild(node);
- }
-
- @Override
- public void startInclude(String name, List<LexicalUnitImpl> args) {
- MixinNode node = new MixinNode(name, args);
- nodeStack.peek().appendChild(node);
- nodeStack.push(node);
-
- }
-
- @Override
- public void endInclude() {
- nodeStack.pop();
- }
-
- private void log(Object object) {
- if (object != null) {
- log(object.toString());
- } else {
- log(null);
- }
- }
-
- private void log(String msg) {
- Logger.getLogger(SCSSDocumentHandlerImpl.class.getName()).log(
- Level.INFO, msg);
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/handler/SCSSErrorHandler.java b/theme-compiler/src/com/vaadin/sass/internal/handler/SCSSErrorHandler.java
deleted file mode 100644
index a7c65073ee..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/handler/SCSSErrorHandler.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.handler;
-
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.w3c.css.sac.CSSException;
-import org.w3c.css.sac.CSSParseException;
-import org.w3c.css.sac.ErrorHandler;
-
-public class SCSSErrorHandler implements ErrorHandler {
-
- public SCSSErrorHandler() {
- }
-
- @Override
- public void error(CSSParseException arg0) throws CSSException {
- log("Error when parsing file \n" + arg0.getURI() + " on line "
- + arg0.getLineNumber() + ", column " + arg0.getColumnNumber());
- log(arg0.getMessage() + "\n");
- }
-
- @Override
- public void fatalError(CSSParseException arg0) throws CSSException {
- log("FATAL Error when parsing file \n" + arg0.getURI() + " on line "
- + arg0.getLineNumber() + ", column " + arg0.getColumnNumber());
- log(arg0.getMessage() + "\n");
- }
-
- @Override
- public void warning(CSSParseException arg0) throws CSSException {
- log("Warning when parsing file \n" + arg0.getURI() + " on line "
- + arg0.getLineNumber() + ", column " + arg0.getColumnNumber());
- log(arg0.getMessage() + "\n");
- }
-
- private void log(String msg) {
- Logger.getLogger(SCSSDocumentHandlerImpl.class.getName()).log(
- Level.SEVERE, msg);
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/CharStream.java b/theme-compiler/src/com/vaadin/sass/internal/parser/CharStream.java
deleted file mode 100644
index e43320453c..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/parser/CharStream.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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.
- */
-/* Generated By:JavaCC: Do not edit this line. CharStream.java Version 5.0 */
-/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
-package com.vaadin.sass.internal.parser;
-
-/**
- * This interface describes a character stream that maintains line and
- * column number positions of the characters. It also has the capability
- * to backup the stream to some extent. An implementation of this
- * interface is used in the TokenManager implementation generated by
- * JavaCCParser.
- *
- * All the methods except backup can be implemented in any fashion. backup
- * needs to be implemented correctly for the correct operation of the lexer.
- * Rest of the methods are all used to get information like line number,
- * column number and the String that constitutes a token and are not used
- * by the lexer. Hence their implementation won't affect the generated lexer's
- * operation.
- */
-
-public
-interface CharStream {
-
- /**
- * Returns the next character from the selected input. The method
- * of selecting the input is the responsibility of the class
- * implementing this interface. Can throw any java.io.IOException.
- */
- char readChar() throws java.io.IOException;
-
- @Deprecated
- /**
- * Returns the column position of the character last read.
- * @deprecated
- * @see #getEndColumn
- */
- int getColumn();
-
- @Deprecated
- /**
- * Returns the line number of the character last read.
- * @deprecated
- * @see #getEndLine
- */
- int getLine();
-
- /**
- * Returns the column number of the last character for current token (being
- * matched after the last call to BeginTOken).
- */
- int getEndColumn();
-
- /**
- * Returns the line number of the last character for current token (being
- * matched after the last call to BeginTOken).
- */
- int getEndLine();
-
- /**
- * Returns the column number of the first character for current token (being
- * matched after the last call to BeginTOken).
- */
- int getBeginColumn();
-
- /**
- * Returns the line number of the first character for current token (being
- * matched after the last call to BeginTOken).
- */
- int getBeginLine();
-
- /**
- * Backs up the input stream by amount steps. Lexer calls this method if it
- * had already read some characters, but could not use them to match a
- * (longer) token. So, they will be used again as the prefix of the next
- * token and it is the implemetation's responsibility to do this right.
- */
- void backup(int amount);
-
- /**
- * Returns the next character that marks the beginning of the next token.
- * All characters must remain in the buffer between two successive calls
- * to this method to implement backup correctly.
- */
- char BeginToken() throws java.io.IOException;
-
- /**
- * Returns a string made up of characters from the marked token beginning
- * to the current buffer position. Implementations have the choice of returning
- * anything that they want to. For example, for efficiency, one might decide
- * to just return null, which is a valid implementation.
- */
- String GetImage();
-
- /**
- * Returns an array of characters that make up the suffix of length 'len' for
- * the currently matched token. This is used to build up the matched string
- * for use in actions in the case of MORE. A simple and inefficient
- * implementation of this is as follows :
- *
- * {
- * String t = GetImage();
- * return t.substring(t.length() - len, t.length()).toCharArray();
- * }
- */
- char[] GetSuffix(int len);
-
- /**
- * The lexer calls this function to indicate that it is done with the stream
- * and hence implementations can free any resources held by this class.
- * Again, the body of this function can be just empty and it will not
- * affect the lexer's operation.
- */
- void Done();
-
-}
-/* JavaCC - OriginalChecksum=18aae0a549695f0fec96a11297b442bb (do not edit this line) */
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/Generic_CharStream.java b/theme-compiler/src/com/vaadin/sass/internal/parser/Generic_CharStream.java
deleted file mode 100644
index 7bc2973311..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/parser/Generic_CharStream.java
+++ /dev/null
@@ -1,370 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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.
- */
-/* Generated By:JavaCC: Do not edit this line. Generic_CharStream.java Version 0.7pre6 */
-package com.vaadin.sass.internal.parser;
-
-/**
- * An implementation of interface CharStream, where the stream is assumed to
- * contain only ASCII characters (without unicode processing).
- */
-
-public final class Generic_CharStream implements CharStream
-{
- public static final boolean staticFlag = false;
- int bufsize;
- int available;
- int tokenBegin;
- public int bufpos = -1;
- private int bufline[];
- private int bufcolumn[];
-
- private int column = 0;
- private int line = 1;
-
- private boolean prevCharIsCR = false;
- private boolean prevCharIsLF = false;
-
- private java.io.Reader reader;
-
- private char[] buffer;
- private int maxNextCharInd = 0;
- private int inBuf = 0;
-
- private final void ExpandBuff(boolean wrapAround)
- {
- char[] newbuffer = new char[bufsize + 2048];
- int newbufline[] = new int[bufsize + 2048];
- int newbufcolumn[] = new int[bufsize + 2048];
-
- try
- {
- if (wrapAround)
- {
- System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
- System.arraycopy(buffer, 0, newbuffer,
- bufsize - tokenBegin, bufpos);
- buffer = newbuffer;
-
- System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
- System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);
- bufline = newbufline;
-
- System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
- System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);
- bufcolumn = newbufcolumn;
-
- maxNextCharInd = (bufpos += (bufsize - tokenBegin));
- }
- else
- {
- System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
- buffer = newbuffer;
-
- System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
- bufline = newbufline;
-
- System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
- bufcolumn = newbufcolumn;
-
- maxNextCharInd = (bufpos -= tokenBegin);
- }
- }
- catch (Throwable t)
- {
- throw new Error(t.getMessage());
- }
-
-
- bufsize += 2048;
- available = bufsize;
- tokenBegin = 0;
- }
-
- private final void FillBuff() throws java.io.IOException
- {
- if (maxNextCharInd == available)
- {
- if (available == bufsize)
- {
- if (tokenBegin > 2048)
- {
- bufpos = maxNextCharInd = 0;
- available = tokenBegin;
- }
- else if (tokenBegin < 0)
- bufpos = maxNextCharInd = 0;
- else
- ExpandBuff(false);
- }
- else if (available > tokenBegin)
- available = bufsize;
- else if ((tokenBegin - available) < 2048)
- ExpandBuff(true);
- else
- available = tokenBegin;
- }
-
- int i;
- try {
- if ((i = reader.read(buffer, maxNextCharInd,
- available - maxNextCharInd)) == -1)
- {
- reader.close();
- throw new java.io.IOException();
- }
- else
- maxNextCharInd += i;
- return;
- }
- catch(java.io.IOException e) {
- --bufpos;
- backup(0);
- if (tokenBegin == -1)
- tokenBegin = bufpos;
- throw e;
- }
- }
-
- public final char BeginToken() throws java.io.IOException
- {
- tokenBegin = -1;
- char c = readChar();
- tokenBegin = bufpos;
-
- return c;
- }
-
- private final void UpdateLineColumn(char c)
- {
- column++;
-
- if (prevCharIsLF)
- {
- prevCharIsLF = false;
- line += (column = 1);
- }
- else if (prevCharIsCR)
- {
- prevCharIsCR = false;
- if (c == '\n')
- {
- prevCharIsLF = true;
- }
- else
- line += (column = 1);
- }
-
- switch (c)
- {
- case '\r' :
- prevCharIsCR = true;
- break;
- case '\n' :
- prevCharIsLF = true;
- break;
- case '\t' :
- column--;
- column += (8 - (column & 07));
- break;
- default :
- break;
- }
-
- bufline[bufpos] = line;
- bufcolumn[bufpos] = column;
- }
-
- public final char readChar() throws java.io.IOException
- {
- if (inBuf > 0)
- {
- --inBuf;
- return (char)((char)0xff & buffer[(bufpos == bufsize - 1) ? (bufpos = 0) : ++bufpos]);
- }
-
- if (++bufpos >= maxNextCharInd)
- FillBuff();
-
- char c = (char)((char)0xff & buffer[bufpos]);
-
- UpdateLineColumn(c);
- return (c);
- }
-
- /**
- * @deprecated
- * @see #getEndColumn
- */
-
- public final int getColumn() {
- return bufcolumn[bufpos];
- }
-
- /**
- * @deprecated
- * @see #getEndLine
- */
-
- public final int getLine() {
- return bufline[bufpos];
- }
-
- public final int getEndColumn() {
- return bufcolumn[bufpos];
- }
-
- public final int getEndLine() {
- return bufline[bufpos];
- }
-
- public final int getBeginColumn() {
- return bufcolumn[tokenBegin];
- }
-
- public final int getBeginLine() {
- return bufline[tokenBegin];
- }
-
- public final void backup(int amount) {
-
- inBuf += amount;
- if ((bufpos -= amount) < 0)
- bufpos += bufsize;
- }
-
- public Generic_CharStream(java.io.Reader dstream, int startline,
- int startcolumn, int buffersize)
- {
- reader = dstream;
- line = startline;
- column = startcolumn - 1;
-
- available = bufsize = buffersize;
- buffer = new char[buffersize];
- bufline = new int[buffersize];
- bufcolumn = new int[buffersize];
- }
-
- public Generic_CharStream(java.io.Reader dstream, int startline,
- int startcolumn)
- {
- this(dstream, startline, startcolumn, 4096);
- }
- public void ReInit(java.io.Reader dstream, int startline,
- int startcolumn, int buffersize)
- {
- reader = dstream;
- line = startline;
- column = startcolumn - 1;
-
- if (buffer == null || buffersize != buffer.length)
- {
- available = bufsize = buffersize;
- buffer = new char[buffersize];
- bufline = new int[buffersize];
- bufcolumn = new int[buffersize];
- }
- prevCharIsLF = prevCharIsCR = false;
- tokenBegin = inBuf = maxNextCharInd = 0;
- bufpos = -1;
- }
-
- public void ReInit(java.io.Reader dstream, int startline,
- int startcolumn)
- {
- ReInit(dstream, startline, startcolumn, 4096);
- }
-
- public final String GetImage()
- {
- if (bufpos >= tokenBegin)
- return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
- else
- return new String(buffer, tokenBegin, bufsize - tokenBegin) +
- new String(buffer, 0, bufpos + 1);
- }
-
- public final char[] GetSuffix(int len)
- {
- char[] ret = new char[len];
-
- if ((bufpos + 1) >= len)
- System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
- else
- {
- System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
- len - bufpos - 1);
- System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
- }
- return ret;
- }
-
- public void Done()
- {
- buffer = null;
- bufline = null;
- bufcolumn = null;
- }
-
- /**
- * Method to adjust line and column numbers for the start of a token.<BR>
- */
- public void adjustBeginLineColumn(int newLine, int newCol)
- {
- int start = tokenBegin;
- int len;
-
- if (bufpos >= tokenBegin)
- {
- len = bufpos - tokenBegin + inBuf + 1;
- }
- else
- {
- len = bufsize - tokenBegin + bufpos + 1 + inBuf;
- }
-
- int i = 0, j = 0, k = 0;
- int nextColDiff = 0, columnDiff = 0;
-
- while (i < len &&
- bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
- {
- bufline[j] = newLine;
- nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
- bufcolumn[j] = newCol + columnDiff;
- columnDiff = nextColDiff;
- i++;
- }
-
- if (i < len)
- {
- bufline[j] = newLine++;
- bufcolumn[j] = newCol + columnDiff;
-
- while (i++ < len)
- {
- if (bufline[j = start % bufsize] != bufline[++start % bufsize])
- bufline[j] = newLine++;
- else
- bufline[j] = newLine;
- }
- }
-
- line = bufline[j];
- column = bufcolumn[j];
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/JumpException.java b/theme-compiler/src/com/vaadin/sass/internal/parser/JumpException.java
deleted file mode 100644
index 0060169bf4..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/parser/JumpException.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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.
- */
-/*
- * (c) COPYRIGHT 1999 World Wide Web Consortium
- * (Massachusetts Institute of Technology, Institut National de Recherche
- * en Informatique et en Automatique, Keio University).
- * All Rights Reserved. http://www.w3.org/Consortium/Legal/
- *
- * $Id: JumpException.java,v 1.1 1999/06/09 15:21:33 plehegar Exp $
- */
-package com.vaadin.sass.internal.parser;
-
-/**
- * @version $Revision: 1.1 $
- * @author Philippe Le Hegaret
- */
-public class JumpException extends RuntimeException {
- private static final long serialVersionUID = -2010286909393046205L;
-
- /**
- * Creates a new JumpException
- */
- public JumpException() {
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/LexicalUnitImpl.java b/theme-compiler/src/com/vaadin/sass/internal/parser/LexicalUnitImpl.java
deleted file mode 100644
index 97314c6e8c..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/parser/LexicalUnitImpl.java
+++ /dev/null
@@ -1,888 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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.
- */
-/*
- * Copyright (c) 1999 World Wide Web Consortium
- * (Massachusetts Institute of Technology, Institut National de Recherche
- * en Informatique et en Automatique, Keio University).
- * All Rights Reserved. http://www.w3.org/Consortium/Legal/
- *
- * $Id: LexicalUnitImpl.java,v 1.3 2000/02/15 02:08:19 plehegar Exp $
- */
-package com.vaadin.sass.internal.parser;
-
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import org.w3c.css.sac.LexicalUnit;
-
-import com.vaadin.sass.internal.expression.exception.IncompatibleUnitsException;
-import com.vaadin.sass.internal.parser.function.AbsFunctionGenerator;
-import com.vaadin.sass.internal.parser.function.CeilFunctionGenerator;
-import com.vaadin.sass.internal.parser.function.DarkenFunctionGenerator;
-import com.vaadin.sass.internal.parser.function.DefaultFunctionGenerator;
-import com.vaadin.sass.internal.parser.function.FloorFunctionGenerator;
-import com.vaadin.sass.internal.parser.function.LightenFunctionGenerator;
-import com.vaadin.sass.internal.parser.function.RoundFunctionGenerator;
-import com.vaadin.sass.internal.parser.function.SCSSFunctionGenerator;
-import com.vaadin.sass.internal.tree.Node;
-import com.vaadin.sass.internal.tree.Node.BuildStringStrategy;
-import com.vaadin.sass.internal.util.DeepCopy;
-
-/**
- * @version $Revision: 1.3 $
- * @author Philippe Le Hegaret
- *
- * @modified Sebastian Nyholm @ Vaadin Ltd
- */
-public class LexicalUnitImpl implements LexicalUnit, SCSSLexicalUnit,
- Serializable {
- private static final long serialVersionUID = -6649833716809789399L;
-
- private static int PRECISION = 100000;
- private static int PERC_PRECISION_FACTOR = 100 * PRECISION;
-
- LexicalUnitImpl prev;
- LexicalUnitImpl next;
-
- short type;
- int line;
- int column;
-
- int i;
- float f;
- short dimension;
- String sdimension;
- String s;
- String fname;
- LexicalUnitImpl params;
-
- LexicalUnitImpl(short type, int line, int column, LexicalUnitImpl p) {
- if (p != null) {
- prev = p;
- p.next = this;
- }
- this.line = line;
- this.column = column - 1;
- this.type = type;
- }
-
- LexicalUnitImpl(int line, int column, LexicalUnitImpl previous, int i) {
- this(SAC_INTEGER, line, column, previous);
- this.i = i;
- f = i;
- }
-
- LexicalUnitImpl(int line, int column, LexicalUnitImpl previous,
- short dimension, String sdimension, float f) {
- this(dimension, line, column, previous);
- this.f = f;
- i = (int) f;
- this.dimension = dimension;
- this.sdimension = sdimension;
- }
-
- LexicalUnitImpl(int line, int column, LexicalUnitImpl previous, short type,
- String s) {
- this(type, line, column, previous);
- this.s = s;
- }
-
- LexicalUnitImpl(short type, int line, int column, LexicalUnitImpl previous,
- String fname, LexicalUnitImpl params) {
- this(type, line, column, previous);
- this.fname = fname;
- this.params = params;
- }
-
- public int getLineNumber() {
- return line;
- }
-
- public int getColumnNumber() {
- return column;
- }
-
- @Override
- public short getLexicalUnitType() {
- return type;
- }
-
- public void setLexicalUnitType(short type) {
- this.type = type;
- }
-
- public void getLexicalUnitType(short type) {
- this.type = type;
- }
-
- @Override
- public LexicalUnitImpl getNextLexicalUnit() {
- return next;
- }
-
- public void setNextLexicalUnit(LexicalUnitImpl n) {
- next = n;
- }
-
- @Override
- public LexicalUnitImpl getPreviousLexicalUnit() {
- return prev;
- }
-
- public void setPrevLexicalUnit(LexicalUnitImpl n) {
- prev = n;
- }
-
- @Override
- public int getIntegerValue() {
- return i;
- }
-
- void setIntegerValue(int i) {
- this.i = i;
- f = i;
- }
-
- @Override
- public float getFloatValue() {
- return f;
- }
-
- /**
- * Returns the float value as a string unless the value is an integer. In
- * that case returns the integer value as a string.
- *
- * @return a string representing the value, either with or without decimals
- */
- public String getFloatOrInteger() {
- float f = getFloatValue();
- int i = (int) f;
- if ((i) == f) {
- return i + "";
- } else {
- return f + "";
- }
- }
-
- public void setFloatValue(float f) {
- this.f = f;
- i = (int) f;
- }
-
- @Override
- public String getDimensionUnitText() {
- switch (type) {
- case SAC_PERCENTAGE:
- return "%";
- case SAC_EM:
- return "em";
- case SCSSLexicalUnit.SAC_LEM:
- return "lem";
- case SCSSLexicalUnit.SAC_REM:
- return "rem";
- case SAC_EX:
- return "ex";
- case SAC_PIXEL:
- return "px";
- case SAC_CENTIMETER:
- return "cm";
- case SAC_MILLIMETER:
- return "mm";
- case SAC_INCH:
- return "in";
- case SAC_POINT:
- return "pt";
- case SAC_PICA:
- return "pc";
- case SAC_DEGREE:
- return "deg";
- case SAC_RADIAN:
- return "rad";
- case SAC_GRADIAN:
- return "grad";
- case SAC_MILLISECOND:
- return "ms";
- case SAC_SECOND:
- return "s";
- case SAC_HERTZ:
- return "Hz";
- case SAC_KILOHERTZ:
- return "kHz";
- case SAC_DIMENSION:
- return sdimension;
- default:
- throw new IllegalStateException("invalid dimension " + type);
- }
- }
-
- @Override
- public String getStringValue() {
- return s;
- }
-
- public void setStringValue(String str) {
- s = str;
- }
-
- @Override
- public String getFunctionName() {
- return fname;
- }
-
- @Override
- public LexicalUnitImpl getParameters() {
- return params;
- }
-
- @Override
- public LexicalUnitImpl getSubValues() {
- return params;
- }
-
- /**
- * Prints out the current state of the node tree. Will return SCSS before
- * compile and CSS after.
- *
- * Result value could be null.
- *
- * @since 7.2
- * @return State as a string
- */
- public String printState() {
- return buildString(Node.PRINT_STRATEGY);
- }
-
- @Override
- public String toString() {
- String result = simpleAsString();
- if (result == null) {
- return "Lexical unit node [" + buildString(Node.TO_STRING_STRATEGY)
- + "]";
- } else {
- return result;
- }
- }
-
- // A helper method for sass interpolation
- public String unquotedString() {
- String result = printState();
- if (result.length() >= 2
- && ((result.charAt(0) == '"' && result
- .charAt(result.length() - 1) == '"') || (result
- .charAt(0) == '\'' && result
- .charAt(result.length() - 1) == '\''))) {
- result = result.substring(1, result.length() - 1);
- }
- return result;
- }
-
- @Override
- public LexicalUnitImpl divide(LexicalUnitImpl denominator) {
- if (denominator.getLexicalUnitType() != SAC_INTEGER
- && denominator.getLexicalUnitType() != SAC_REAL
- && getLexicalUnitType() != denominator.getLexicalUnitType()) {
- throw new IncompatibleUnitsException(printState());
- }
- setFloatValue(getFloatValue() / denominator.getFloatValue());
- if (getLexicalUnitType() == denominator.getLexicalUnitType()) {
- setLexicalUnitType(SAC_REAL);
- }
- setNextLexicalUnit(denominator.getNextLexicalUnit());
- return this;
- }
-
- @Override
- public LexicalUnitImpl add(LexicalUnitImpl another) {
- checkAndSetUnit(another);
- setFloatValue(getFloatValue() + another.getFloatValue());
- return this;
- }
-
- @Override
- public LexicalUnitImpl minus(LexicalUnitImpl another) {
- checkAndSetUnit(another);
- setFloatValue(getFloatValue() - another.getFloatValue());
- return this;
- }
-
- @Override
- public LexicalUnitImpl multiply(LexicalUnitImpl another) {
- checkAndSetUnit(another);
- setFloatValue(getFloatValue() * another.getIntegerValue());
- return this;
- }
-
- protected void checkAndSetUnit(LexicalUnitImpl another) {
- if (getLexicalUnitType() != SAC_INTEGER
- && getLexicalUnitType() != SAC_REAL
- && another.getLexicalUnitType() != SAC_INTEGER
- && another.getLexicalUnitType() != SAC_REAL
- && getLexicalUnitType() != another.getLexicalUnitType()) {
- throw new IncompatibleUnitsException(printState());
- }
- if (another.getLexicalUnitType() != SAC_INTEGER
- && another.getLexicalUnitType() != SAC_REAL) {
- setLexicalUnitType(another.getLexicalUnitType());
- }
- setNextLexicalUnit(another.getNextLexicalUnit());
- }
-
- @Override
- public LexicalUnitImpl modulo(LexicalUnitImpl another) {
- if (getLexicalUnitType() != another.getLexicalUnitType()) {
- throw new IncompatibleUnitsException(printState());
- }
- setIntegerValue(getIntegerValue() % another.getIntegerValue());
- setNextLexicalUnit(another.getNextLexicalUnit());
- return this;
- }
-
- public void replaceValue(LexicalUnitImpl another) {
- // shouldn't modify 'another' directly, should only modify its copy.
- LexicalUnitImpl deepCopyAnother = (LexicalUnitImpl) DeepCopy
- .copy(another);
- type = deepCopyAnother.getLexicalUnitType();
- i = deepCopyAnother.getIntegerValue();
- f = deepCopyAnother.getFloatValue();
- s = deepCopyAnother.getStringValue();
- fname = deepCopyAnother.getFunctionName();
- prev = deepCopyAnother.getPreviousLexicalUnit();
- dimension = deepCopyAnother.getDimension();
- sdimension = deepCopyAnother.getSdimension();
- params = deepCopyAnother.getParameters();
-
- LexicalUnitImpl finalNextInAnother = deepCopyAnother;
- while (finalNextInAnother.getNextLexicalUnit() != null) {
- finalNextInAnother = finalNextInAnother.getNextLexicalUnit();
- }
-
- finalNextInAnother.setNextLexicalUnit(next);
- next = deepCopyAnother.next;
- }
-
- public void setParameters(LexicalUnitImpl params) {
- this.params = params;
- }
-
- public short getDimension() {
- return dimension;
- }
-
- public String getSdimension() {
- return sdimension;
- }
-
- // here some useful function for creation
- public static LexicalUnitImpl createVariable(int line, int column,
- LexicalUnitImpl previous, String name) {
- return new LexicalUnitImpl(line, column, previous, SCSS_VARIABLE, name);
- }
-
- public static LexicalUnitImpl createNull(int line, int column,
- LexicalUnitImpl previous) {
- return new LexicalUnitImpl(line, column, previous, SCSS_NULL, "null");
- }
-
- public static LexicalUnitImpl createNumber(int line, int column,
- LexicalUnitImpl previous, float v) {
- int i = (int) v;
- if (v == i) {
- return new LexicalUnitImpl(line, column, previous, i);
- } else {
- return new LexicalUnitImpl(line, column, previous, SAC_REAL, "", v);
- }
- }
-
- public static LexicalUnitImpl createInteger(int line, int column,
- LexicalUnitImpl previous, int i) {
- return new LexicalUnitImpl(line, column, previous, i);
- }
-
- public static LexicalUnitImpl createPercentage(int line, int column,
- LexicalUnitImpl previous, float v) {
- return new LexicalUnitImpl(line, column, previous, SAC_PERCENTAGE,
- null, v);
- }
-
- static LexicalUnitImpl createEMS(int line, int column,
- LexicalUnitImpl previous, float v) {
- return new LexicalUnitImpl(line, column, previous, SAC_EM, null, v);
- }
-
- static LexicalUnitImpl createLEM(int line, int column,
- LexicalUnitImpl previous, float v) {
- return new LexicalUnitImpl(line, column, previous,
- SCSSLexicalUnit.SAC_LEM, null, v);
- }
-
- static LexicalUnitImpl createREM(int line, int column,
- LexicalUnitImpl previous, float v) {
- return new LexicalUnitImpl(line, column, previous,
- SCSSLexicalUnit.SAC_REM, null, v);
- }
-
- static LexicalUnitImpl createEXS(int line, int column,
- LexicalUnitImpl previous, float v) {
- return new LexicalUnitImpl(line, column, previous, SAC_EX, null, v);
- }
-
- public static LexicalUnitImpl createPX(int line, int column,
- LexicalUnitImpl previous, float v) {
- return new LexicalUnitImpl(line, column, previous, SAC_PIXEL, null, v);
- }
-
- public static LexicalUnitImpl createCM(int line, int column,
- LexicalUnitImpl previous, float v) {
- return new LexicalUnitImpl(line, column, previous, SAC_CENTIMETER,
- null, v);
- }
-
- static LexicalUnitImpl createMM(int line, int column,
- LexicalUnitImpl previous, float v) {
- return new LexicalUnitImpl(line, column, previous, SAC_MILLIMETER,
- null, v);
- }
-
- static LexicalUnitImpl createIN(int line, int column,
- LexicalUnitImpl previous, float v) {
- return new LexicalUnitImpl(line, column, previous, SAC_INCH, null, v);
- }
-
- static LexicalUnitImpl createPT(int line, int column,
- LexicalUnitImpl previous, float v) {
- return new LexicalUnitImpl(line, column, previous, SAC_POINT, null, v);
- }
-
- static LexicalUnitImpl createPC(int line, int column,
- LexicalUnitImpl previous, float v) {
- return new LexicalUnitImpl(line, column, previous, SAC_PICA, null, v);
- }
-
- static LexicalUnitImpl createDEG(int line, int column,
- LexicalUnitImpl previous, float v) {
- return new LexicalUnitImpl(line, column, previous, SAC_DEGREE, null, v);
- }
-
- static LexicalUnitImpl createRAD(int line, int column,
- LexicalUnitImpl previous, float v) {
- return new LexicalUnitImpl(line, column, previous, SAC_RADIAN, null, v);
- }
-
- static LexicalUnitImpl createGRAD(int line, int column,
- LexicalUnitImpl previous, float v) {
- return new LexicalUnitImpl(line, column, previous, SAC_GRADIAN, null, v);
- }
-
- static LexicalUnitImpl createMS(int line, int column,
- LexicalUnitImpl previous, float v) {
- if (v < 0) {
- throw new ParseException("Time values may not be negative");
- }
- return new LexicalUnitImpl(line, column, previous, SAC_MILLISECOND,
- null, v);
- }
-
- static LexicalUnitImpl createS(int line, int column,
- LexicalUnitImpl previous, float v) {
- if (v < 0) {
- throw new ParseException("Time values may not be negative");
- }
- return new LexicalUnitImpl(line, column, previous, SAC_SECOND, null, v);
- }
-
- static LexicalUnitImpl createHZ(int line, int column,
- LexicalUnitImpl previous, float v) {
- if (v < 0) {
- throw new ParseException("Frequency values may not be negative");
- }
- return new LexicalUnitImpl(line, column, previous, SAC_HERTZ, null, v);
- }
-
- static LexicalUnitImpl createKHZ(int line, int column,
- LexicalUnitImpl previous, float v) {
- if (v < 0) {
- throw new ParseException("Frequency values may not be negative");
- }
- return new LexicalUnitImpl(line, column, previous, SAC_KILOHERTZ, null,
- v);
- }
-
- static LexicalUnitImpl createDimen(int line, int column,
- LexicalUnitImpl previous, float v, String s) {
- return new LexicalUnitImpl(line, column, previous, SAC_DIMENSION, s, v);
- }
-
- static LexicalUnitImpl createInherit(int line, int column,
- LexicalUnitImpl previous) {
- return new LexicalUnitImpl(line, column, previous, SAC_INHERIT,
- "inherit");
- }
-
- public static LexicalUnitImpl createIdent(int line, int column,
- LexicalUnitImpl previous, String s) {
- return new LexicalUnitImpl(line, column, previous, SAC_IDENT, s);
- }
-
- public static LexicalUnitImpl createString(String s) {
- return new LexicalUnitImpl(0, 0, null, SAC_STRING_VALUE, s);
- }
-
- static LexicalUnitImpl createString(int line, int column,
- LexicalUnitImpl previous, String s) {
- return new LexicalUnitImpl(line, column, previous, SAC_STRING_VALUE, s);
- }
-
- static LexicalUnitImpl createURL(int line, int column,
- LexicalUnitImpl previous, String s) {
- return new LexicalUnitImpl(line, column, previous, SAC_URI, s);
- }
-
- static LexicalUnitImpl createAttr(int line, int column,
- LexicalUnitImpl previous, String s) {
- return new LexicalUnitImpl(line, column, previous, SAC_ATTR, s);
- }
-
- static LexicalUnitImpl createCounter(int line, int column,
- LexicalUnitImpl previous, LexicalUnit params) {
- return new LexicalUnitImpl(SAC_COUNTER_FUNCTION, line, column,
- previous, "counter", (LexicalUnitImpl) params);
- }
-
- public static LexicalUnitImpl createCounters(int line, int column,
- LexicalUnitImpl previous, LexicalUnit params) {
- return new LexicalUnitImpl(SAC_COUNTERS_FUNCTION, line, column,
- previous, "counters", (LexicalUnitImpl) params);
- }
-
- public static LexicalUnitImpl createRGBColor(int line, int column,
- LexicalUnitImpl previous, LexicalUnit params) {
- return new LexicalUnitImpl(SAC_RGBCOLOR, line, column, previous, "rgb",
- (LexicalUnitImpl) params);
- }
-
- public static LexicalUnitImpl createRect(int line, int column,
- LexicalUnitImpl previous, LexicalUnit params) {
- return new LexicalUnitImpl(SAC_RECT_FUNCTION, line, column, previous,
- "rect", (LexicalUnitImpl) params);
- }
-
- public static LexicalUnitImpl createFunction(int line, int column,
- LexicalUnitImpl previous, String fname, LexicalUnit params) {
- return new LexicalUnitImpl(SAC_FUNCTION, line, column, previous, fname,
- (LexicalUnitImpl) params);
- }
-
- public static LexicalUnitImpl createUnicodeRange(int line, int column,
- LexicalUnit previous, LexicalUnit params) {
- // @@ return new LexicalUnitImpl(line, column, previous, null,
- // SAC_UNICODERANGE, params);
- return null;
- }
-
- public static LexicalUnitImpl createComma(int line, int column,
- LexicalUnitImpl previous) {
- return new LexicalUnitImpl(SAC_OPERATOR_COMMA, line, column, previous);
- }
-
- public static LexicalUnitImpl createSlash(int line, int column,
- LexicalUnitImpl previous) {
- return new LexicalUnitImpl(SAC_OPERATOR_SLASH, line, column, previous);
- }
-
- public static LexicalUnitImpl createAdd(int line, int column,
- LexicalUnitImpl previous) {
- return new LexicalUnitImpl(SAC_OPERATOR_PLUS, line, column, previous);
- }
-
- public static LexicalUnitImpl createMinus(int line, int column,
- LexicalUnitImpl previous) {
- return new LexicalUnitImpl(SAC_OPERATOR_MINUS, line, column, previous);
- }
-
- public static LexicalUnitImpl createMultiply(int line, int column,
- LexicalUnitImpl previous) {
- return new LexicalUnitImpl(SAC_OPERATOR_MULTIPLY, line, column,
- previous);
- }
-
- public static LexicalUnitImpl createModulo(int line, int column,
- LexicalUnitImpl previous) {
- return new LexicalUnitImpl(SAC_OPERATOR_MOD, line, column, previous);
- }
-
- public static LexicalUnitImpl createLeftParenthesis(int line, int column,
- LexicalUnitImpl previous) {
- return new LexicalUnitImpl(SCSS_OPERATOR_LEFT_PAREN, line, column,
- previous);
- }
-
- public static LexicalUnitImpl createRightParenthesis(int line, int column,
- LexicalUnitImpl previous) {
- return new LexicalUnitImpl(SCSS_OPERATOR_LEFT_PAREN, line, column,
- previous);
- }
-
- /**
- * Tries to return the value for this {@link LexicalUnitImpl} without
- * considering any related units.
- *
- * @return
- */
- public Object getValue() {
- if (s != null) {
- return s;
- } else if (i != -1) {
- return i;
- } else if (f != -1) {
- return f;
- } else {
- return null;
- }
- }
-
- public String getValueAsString() {
- Object value = getValue();
- if (value == null) {
- return null;
- } else {
- return value.toString();
- }
- }
-
- public void setFunctionName(String functionName) {
- fname = functionName;
- }
-
- public static LexicalUnitImpl createIdent(String s) {
- return new LexicalUnitImpl(0, 0, null, SAC_IDENT, s);
- }
-
- public static void replaceValues(LexicalUnitImpl unit,
- LexicalUnitImpl replaceWith) {
- unit.setLexicalUnitType(replaceWith.getLexicalUnitType());
- unit.setStringValue(replaceWith.getStringValue());
- unit.setFloatValue(replaceWith.getFloatValue());
- unit.setIntegerValue(replaceWith.getIntegerValue());
- unit.setFunctionName(replaceWith.getFunctionName());
-
- if (replaceWith.getParameters() != null) {
- unit.setParameters(replaceWith.getParameters());
- }
-
- }
-
- private static SCSSFunctionGenerator getGenerator(String funcName) {
- SCSSFunctionGenerator serializer = SERIALIZERS.get(funcName);
- if (serializer == null) {
- return DEFAULT_SERIALIZER;
- } else {
- return serializer;
- }
- }
-
- private static List<SCSSFunctionGenerator> initSerializers() {
- List<SCSSFunctionGenerator> list = new LinkedList<SCSSFunctionGenerator>();
- list.add(new AbsFunctionGenerator());
- list.add(new CeilFunctionGenerator());
- list.add(new DarkenFunctionGenerator());
- list.add(new FloorFunctionGenerator());
- list.add(new LightenFunctionGenerator());
- list.add(new RoundFunctionGenerator());
- list.add(new PercentageFunctionGenerator());
- return list;
- }
-
- private static class PercentageFunctionGenerator implements
- SCSSFunctionGenerator {
-
- @Override
- public String getFunctionName() {
- return "percentage";
- }
-
- @Override
- public String printState(LexicalUnitImpl function,
- BuildStringStrategy strategy) {
- StringBuilder builder = new StringBuilder();
- LexicalUnitImpl firstParam = function.getParameters();
- float value = firstParam.getFloatValue();
- value *= PERC_PRECISION_FACTOR;
- int intValue = Math.round(value);
- value = ((float) intValue) / PRECISION;
-
- int resultIntValue = (int) value;
-
- firstParam.type = SAC_PERCENTAGE;
-
- if (intValue == resultIntValue * PRECISION) {
- builder.append(resultIntValue);
- firstParam.setIntegerValue(resultIntValue);
- } else {
- builder.append(value);
- firstParam.setFloatValue(value);
- }
-
- firstParam.setStringValue(builder.append('%').toString());
-
- return strategy.build(firstParam);
- }
-
- }
-
- private static final Map<String, SCSSFunctionGenerator> SERIALIZERS = new HashMap<String, SCSSFunctionGenerator>();
-
- private static final SCSSFunctionGenerator DEFAULT_SERIALIZER = new DefaultFunctionGenerator();
-
- private String simpleAsString() {
- short type = getLexicalUnitType();
- String text = null;
- switch (type) {
- case SCSS_VARIABLE:
- text = "$" + s;
- break;
- case SCSS_NULL:
- text = "";
- break;
- case LexicalUnit.SAC_OPERATOR_COMMA:
- text = ",";
- break;
- case LexicalUnit.SAC_OPERATOR_PLUS:
- text = "+";
- break;
- case LexicalUnit.SAC_OPERATOR_MINUS:
- text = "-";
- break;
- case LexicalUnit.SAC_OPERATOR_MULTIPLY:
- text = "*";
- break;
- case LexicalUnit.SAC_OPERATOR_SLASH:
- text = "/";
- break;
- case LexicalUnit.SAC_OPERATOR_MOD:
- text = "%";
- break;
- case LexicalUnit.SAC_OPERATOR_EXP:
- text = "^";
- break;
- case LexicalUnit.SAC_OPERATOR_LT:
- text = "<";
- break;
- case LexicalUnit.SAC_OPERATOR_GT:
- text = ">";
- break;
- case LexicalUnit.SAC_OPERATOR_LE:
- text = "<=";
- break;
- case LexicalUnit.SAC_OPERATOR_GE:
- text = "=>";
- break;
- case LexicalUnit.SAC_OPERATOR_TILDE:
- text = "~";
- break;
- case LexicalUnit.SAC_INHERIT:
- text = "inherit";
- break;
- case LexicalUnit.SAC_INTEGER:
- text = Integer.toString(getIntegerValue(), 10);
- break;
- case LexicalUnit.SAC_REAL:
- text = getFloatOrInteger();
- break;
- case LexicalUnit.SAC_EM:
- case SCSSLexicalUnit.SAC_LEM:
- case SCSSLexicalUnit.SAC_REM:
- case LexicalUnit.SAC_EX:
- case LexicalUnit.SAC_PIXEL:
- case LexicalUnit.SAC_INCH:
- case LexicalUnit.SAC_CENTIMETER:
- case LexicalUnit.SAC_MILLIMETER:
- case LexicalUnit.SAC_POINT:
- case LexicalUnit.SAC_PICA:
- case LexicalUnit.SAC_PERCENTAGE:
- case LexicalUnit.SAC_DEGREE:
- case LexicalUnit.SAC_GRADIAN:
- case LexicalUnit.SAC_RADIAN:
- case LexicalUnit.SAC_MILLISECOND:
- case LexicalUnit.SAC_SECOND:
- case LexicalUnit.SAC_HERTZ:
- case LexicalUnit.SAC_KILOHERTZ:
- case LexicalUnit.SAC_DIMENSION:
- text = getFloatOrInteger() + getDimensionUnitText();
- break;
- }
- return text;
- }
-
- private String buildString(BuildStringStrategy strategy) {
- short type = getLexicalUnitType();
- String text = simpleAsString();
- if (text == null) {
- switch (type) {
- case LexicalUnit.SAC_URI:
- text = "url(" + getStringValue() + ")";
- break;
- case LexicalUnit.SAC_RGBCOLOR:
- case LexicalUnit.SAC_COUNTER_FUNCTION:
- case LexicalUnit.SAC_COUNTERS_FUNCTION:
- case LexicalUnit.SAC_RECT_FUNCTION:
- case LexicalUnit.SAC_FUNCTION:
- text = buildFunctionString(strategy);
- break;
- case LexicalUnit.SAC_IDENT:
- text = getStringValue();
- break;
- case LexicalUnit.SAC_STRING_VALUE:
- // @@SEEME. not exact
- text = "\"" + getStringValue() + "\"";
- break;
- case LexicalUnit.SAC_ATTR:
- text = "attr(" + getStringValue() + ")";
- break;
- case LexicalUnit.SAC_UNICODERANGE:
- text = "@@TODO";
- break;
- case LexicalUnit.SAC_SUB_EXPRESSION:
- text = strategy.build(getSubValues());
- break;
- default:
- text = "@unknown";
- break;
- }
- }
- if (getNextLexicalUnit() != null) {
- if (getNextLexicalUnit().getLexicalUnitType() == SAC_OPERATOR_COMMA) {
- return text + strategy.build(getNextLexicalUnit());
- }
- return text + ' ' + strategy.build(getNextLexicalUnit());
- } else {
- return text;
- }
- }
-
- private String buildFunctionString(BuildStringStrategy strategy) {
- SCSSFunctionGenerator generator = getGenerator(getFunctionName());
- return generator.printState(this, strategy);
- }
-
- static {
- for (SCSSFunctionGenerator serializer : initSerializers()) {
- SERIALIZERS.put(serializer.getFunctionName(), serializer);
- }
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/LocatorImpl.java b/theme-compiler/src/com/vaadin/sass/internal/parser/LocatorImpl.java
deleted file mode 100644
index 35589e0a94..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/parser/LocatorImpl.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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.
- */
-/*
- * Copyright (c) 1999 World Wide Web Consortium
- * (Massachusetts Institute of Technology, Institut National de Recherche
- * en Informatique et en Automatique, Keio University).
- * All Rights Reserved. http://www.w3.org/Consortium/Legal/
- *
- * $Id: LocatorImpl.java,v 1.2 2000/02/14 16:59:06 plehegar Exp $
- */
-package com.vaadin.sass.internal.parser;
-
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.w3c.css.sac.Locator;
-
-import com.vaadin.sass.internal.handler.SCSSDocumentHandlerImpl;
-
-/**
- * @version $Revision: 1.2 $
- * @author Philippe Le Hegaret
- */
-public class LocatorImpl implements Locator {
-
- // W3C DEBUG mode
- private static boolean W3CDebug;
- static {
- try {
- W3CDebug = (Boolean.getBoolean("debug")
- || Boolean
- .getBoolean("org.w3c.flute.parser.LocatorImpl.debug")
- || Boolean.getBoolean("org.w3c.flute.parser.debug")
- || Boolean.getBoolean("org.w3c.flute.debug")
- || Boolean.getBoolean("org.w3c.debug") || Boolean
- .getBoolean("org.debug"));
- } catch (Exception e) {
- // nothing
- }
- }
-
- String uri;
- int line;
- int column;
-
- @Override
- public String getURI() {
- return uri;
- }
-
- @Override
- public int getLineNumber() {
- return line;
- }
-
- @Override
- public int getColumnNumber() {
- return column;
- }
-
- /**
- * Creates a new LocatorImpl
- */
- public LocatorImpl(Parser p) {
- if (W3CDebug) {
- log("LocatorImpl::newLocator(" + p + ");");
- }
- uri = p.source.getURI();
- line = p.token.beginLine;
- column = p.token.beginColumn;
- }
-
- /**
- * Reinitializes a LocatorImpl
- */
- public LocatorImpl(Parser p, Token tok) {
- if (W3CDebug) {
- log("LocatorImpl::newLocator(" + p + ", " + tok + ");");
- }
- uri = p.source.getURI();
- line = tok.beginLine;
- column = tok.beginColumn;
- }
-
- /**
- * Reinitializes a LocatorImpl
- */
- public LocatorImpl(Parser p, int line, int column) {
- if (W3CDebug) {
- log("LocatorImpl::newLocator(" + p + ", " + line + ", " + column
- + ");");
- }
- uri = p.source.getURI();
- this.line = line;
- this.column = column;
- }
-
- /**
- * Reinitializes a LocatorImpl
- */
- public LocatorImpl reInit(Parser p) {
- if (W3CDebug) {
- log("LocatorImpl::reInit(" + p + ");");
- }
- uri = p.source.getURI();
- line = p.token.beginLine;
- column = p.token.beginColumn;
- return this;
- }
-
- /**
- * Reinitializes a LocatorImpl
- */
- public LocatorImpl reInit(Parser p, Token tok) {
- if (W3CDebug) {
- log("LocatorImpl::reInit(" + p + ", " + tok + ");");
- }
- uri = p.source.getURI();
- line = tok.beginLine;
- column = tok.beginColumn;
- return this;
- }
-
- /**
- * Reinitializes a LocatorImpl
- */
- public LocatorImpl reInit(Parser p, int line, int column) {
- if (W3CDebug) {
- log("LocatorImpl::reInit(" + p + ", " + line + ", " + column + ");");
- }
- uri = p.source.getURI();
- this.line = line;
- this.column = column;
- return this;
- }
-
- private void log(String msg) {
- Logger.getLogger(SCSSDocumentHandlerImpl.class.getName()).log(
- Level.SEVERE, msg);
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/MediaListImpl.java b/theme-compiler/src/com/vaadin/sass/internal/parser/MediaListImpl.java
deleted file mode 100644
index 1cc4cf351d..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/parser/MediaListImpl.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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.
- */
-/*
- * (c) COPYRIGHT 1999 World Wide Web Consortium
- * (Massachusetts Institute of Technology, Institut National de Recherche
- * en Informatique et en Automatique, Keio University).
- * All Rights Reserved. http://www.w3.org/Consortium/Legal/
- *
- * $Id: MediaListImpl.java,v 1.4 2000/04/26 13:40:19 plehegar Exp $
- */
-package com.vaadin.sass.internal.parser;
-
-import java.io.Serializable;
-
-import org.w3c.css.sac.SACMediaList;
-
-/**
- * @version $Revision: 1.4 $
- * @author Philippe Le Hegaret
- */
-public class MediaListImpl implements SACMediaList, Serializable {
-
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- String[] array = new String[10];
- int current;
-
- @Override
- public int getLength() {
- return current;
- }
-
- @Override
- public String item(int index) {
- if ((index < 0) || (index >= current)) {
- return null;
- }
- return array[index];
- }
-
- void addItem(String medium) {
- if (medium.equals("all")) {
- array[0] = "all";
- current = 1;
- return;
- }
- for (int i = 0; i < current; i++) {
- if (medium.equals(array[i])) {
- return;
- }
- }
- if (current == array.length) {
- String[] old = array;
- array = new String[current + current];
- System.arraycopy(old, 0, array, 0, current);
- }
- array[current++] = medium;
- }
-
- /**
- * Returns a string representation of this object.
- */
- @Override
- public String toString() {
- switch (current) {
- case 0:
- return "";
- case 1:
- return array[0];
- default:
- boolean not_done = true;
- int i = 0;
- StringBuffer buf = new StringBuffer(50);
- do {
- buf.append(array[i++]);
- if (i == current) {
- not_done = false;
- } else {
- buf.append(", ");
- }
- } while (not_done);
- return buf.toString();
- }
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/ParseException.java b/theme-compiler/src/com/vaadin/sass/internal/parser/ParseException.java
deleted file mode 100644
index 392d71e767..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/parser/ParseException.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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.
- */
-/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 0.7pre6 */
-package com.vaadin.sass.internal.parser;
-
-import org.w3c.css.sac.CSSException;
-
-/**
- * This exception is thrown when parse errors are encountered. You can
- * explicitly create objects of this exception type by calling the method
- * generateParseException in the generated parser.
- *
- * You can modify this class to customize your error reporting mechanisms so
- * long as you retain the public fields.
- */
-public class ParseException extends CSSException {
- private static final long serialVersionUID = -8556588037264585977L;
-
- /**
- * This constructor is used by the method "generateParseException" in the
- * generated parser. Calling this constructor generates a new object of this
- * type with the fields "currentToken", "expectedTokenSequences", and
- * "tokenImage" set. The boolean flag "specialConstructor" is also set to
- * true to indicate that this constructor was used to create this object.
- * This constructor calls its super class with the empty string to force the
- * "toString" method of parent class "Throwable" to print the error message
- * in the form: ParseException: <result of getMessage>
- */
- public ParseException(Token currentTokenVal,
- int[][] expectedTokenSequencesVal, String[] tokenImageVal) {
- super("");
- specialConstructor = true;
- currentToken = currentTokenVal;
- expectedTokenSequences = expectedTokenSequencesVal;
- tokenImage = tokenImageVal;
- }
-
- /**
- * The following constructors are for use by you for whatever purpose you
- * can think of. Constructing the exception in this manner makes the
- * exception behave in the normal way - i.e., as documented in the class
- * "Throwable". The fields "errorToken", "expectedTokenSequences", and
- * "tokenImage" do not contain relevant information. The JavaCC generated
- * code does not use these constructors.
- */
-
- public ParseException() {
- super();
- specialConstructor = false;
- }
-
- public ParseException(String message) {
- super(message);
- specialConstructor = false;
- }
-
- /**
- * This variable determines which constructor was used to create this object
- * and thereby affects the semantics of the "getMessage" method (see below).
- */
- protected boolean specialConstructor;
-
- /**
- * This is the last token that has been consumed successfully. If this
- * object has been created due to a parse error, the token followng this
- * token will (therefore) be the first error token.
- */
- public Token currentToken;
-
- /**
- * Each entry in this array is an array of integers. Each array of integers
- * represents a sequence of tokens (by their ordinal values) that is
- * expected at this point of the parse.
- */
- public int[][] expectedTokenSequences;
-
- /**
- * This is a reference to the "tokenImage" array of the generated parser
- * within which the parse error occurred. This array is defined in the
- * generated ...Constants interface.
- */
- public String[] tokenImage;
-
- /**
- * This method has the standard behavior when this object has been created
- * using the standard constructors. Otherwise, it uses "currentToken" and
- * "expectedTokenSequences" to generate a parse error message and returns
- * it. If this object has been created due to a parse error, and you do not
- * catch it (it gets thrown from the parser), then this method is called
- * during the printing of the final stack trace, and hence the correct error
- * message gets displayed.
- */
- @Override
- public String getMessage() {
- if (!specialConstructor) {
- return super.getMessage();
- }
- String expected = "";
- int maxSize = 0;
- for (int i = 0; i < expectedTokenSequences.length; i++) {
- if (maxSize < expectedTokenSequences[i].length) {
- maxSize = expectedTokenSequences[i].length;
- }
- for (int j = 0; j < expectedTokenSequences[i].length; j++) {
- expected += tokenImage[expectedTokenSequences[i][j]] + " ";
- }
- if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {
- expected += "...";
- }
- expected += eol + " ";
- }
- String retval = "Encountered \"";
- Token tok = currentToken.next;
- for (int i = 0; i < maxSize; i++) {
- if (i != 0) {
- retval += " ";
- }
- if (tok.kind == 0) {
- retval += tokenImage[0];
- break;
- }
- retval += add_escapes(tok.image);
- tok = tok.next;
- }
- retval += "\" at line " + currentToken.next.beginLine + ", column "
- + currentToken.next.beginColumn + "." + eol;
- if (expectedTokenSequences.length == 1) {
- retval += "Was expecting:" + eol + " ";
- } else {
- retval += "Was expecting one of:" + eol + " ";
- }
- retval += expected;
- return retval;
- }
-
- /**
- * The end of line string for this machine.
- */
- protected String eol = System.getProperty("line.separator", "\n");
-
- /**
- * Used to convert raw characters to their escaped version when these raw
- * version cannot be used as part of an ASCII string literal.
- */
- protected String add_escapes(String str) {
- StringBuffer retval = new StringBuffer();
- char ch;
- for (int i = 0; i < str.length(); i++) {
- switch (str.charAt(i)) {
- case 0:
- continue;
- case '\b':
- retval.append("\\b");
- continue;
- case '\t':
- retval.append("\\t");
- continue;
- case '\n':
- retval.append("\\n");
- continue;
- case '\f':
- retval.append("\\f");
- continue;
- case '\r':
- retval.append("\\r");
- continue;
- case '\"':
- retval.append("\\\"");
- continue;
- case '\'':
- retval.append("\\\'");
- continue;
- case '\\':
- retval.append("\\\\");
- continue;
- default:
- if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
- String s = "0000" + Integer.toString(ch, 16);
- retval.append("\\u"
- + s.substring(s.length() - 4, s.length()));
- } else {
- retval.append(ch);
- }
- continue;
- }
- }
- return retval.toString();
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/Parser.java b/theme-compiler/src/com/vaadin/sass/internal/parser/Parser.java
deleted file mode 100644
index d1460ea2fc..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/parser/Parser.java
+++ /dev/null
@@ -1,7887 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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.
- */
-/* Generated By:JavaCC: Do not edit this line. Parser.java */
-package com.vaadin.sass.internal.parser;
-
-import java.io.*;
-import java.net.*;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Locale;
-import java.util.Map;
-import java.util.UUID;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.w3c.css.sac.ConditionFactory;
-import org.w3c.css.sac.Condition;
-import org.w3c.css.sac.SelectorFactory;
-import org.w3c.css.sac.SelectorList;
-import org.w3c.css.sac.Selector;
-import org.w3c.css.sac.SimpleSelector;
-import org.w3c.css.sac.DocumentHandler;
-import org.w3c.css.sac.InputSource;
-import org.w3c.css.sac.ErrorHandler;
-import org.w3c.css.sac.CSSException;
-import org.w3c.css.sac.CSSParseException;
-import org.w3c.css.sac.Locator;
-import org.w3c.css.sac.LexicalUnit;
-
-import org.w3c.flute.parser.selectors.SelectorFactoryImpl;
-import org.w3c.flute.parser.selectors.ConditionFactoryImpl;
-
-import org.w3c.flute.util.Encoding;
-
-import com.vaadin.sass.internal.handler.*;
-
-import com.vaadin.sass.internal.tree.*;
-
-/**
- * A CSS2 parser
- *
- * @author Philippe Le H�garet
- * @version $Revision: 1.15 $
- */
-public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
-
- // replaces all \t, \n, etc with this StringBuffer.
- static final StringBuilder SPACE = new StringBuilder(" ");
-
- // the document handler for the parser
- protected SCSSDocumentHandlerImpl documentHandler;
- // the error handler for the parser
- protected ErrorHandler errorHandler;
- // the input source for the parser
- protected InputSource source;
-
- protected ConditionFactory conditionFactory;
- protected SelectorFactory selectorFactory;
-
- // temporary place holder for pseudo-element ...
- private String pseudoElt;
-
- /**
- * Creates a new Parser
- */
- public Parser() {
- this((CharStream) null);
- }
-
- /**
- * @@TODO
- * @exception CSSException Not yet implemented
- */
- public void setLocale(Locale locale) throws CSSException {
- throw new CSSException(CSSException.SAC_NOT_SUPPORTED_ERR);
- }
-
- public InputSource getInputSource(){
- return source;
- }
-
- /**
- * Set the document handler for this parser
- */
- public void setDocumentHandler(DocumentHandler handler) {
- this.documentHandler = (SCSSDocumentHandlerImpl) handler;
- }
-
- public void setSelectorFactory(SelectorFactory selectorFactory) {
- this.selectorFactory = selectorFactory;
- }
-
- public void setConditionFactory(ConditionFactory conditionFactory) {
- this.conditionFactory = conditionFactory;
- }
-
- /**
- * Set the error handler for this parser
- */
- public void setErrorHandler(ErrorHandler error) {
- this.errorHandler = error;
- }
-
- /**
- * Main parse methods
- *
- * @param source the source of the style sheet.
- * @exception IOException the source can't be parsed.
- * @exception CSSException the source is not CSS valid.
- */
- public void parseStyleSheet(InputSource source)
- throws CSSException, IOException {
- this.source = source;
- ReInit(getCharStreamWithLurk(source));
- if (selectorFactory == null) {
- selectorFactory = new SelectorFactoryImpl();
- }
- if (conditionFactory == null) {
- conditionFactory = new ConditionFactoryImpl();
- }
-
- parserUnit();
- }
-
- /**
- * Convenient method for URIs.
- *
- * @param systemId the fully resolved URI of the style sheet.
- * @exception IOException the source can't be parsed.
- * @exception CSSException the source is not CSS valid.
- */
- public void parseStyleSheet(String systemId)
- throws CSSException, IOException {
- parseStyleSheet(new InputSource(systemId));
- }
-
- /**
- * This method parses only one rule (style rule or at-rule, except @charset).
- *
- * @param source the source of the rule.
- * @exception IOException the source can't be parsed.
- * @exception CSSException the source is not CSS valid.
- */
- // TODO required by original parser but not used by Vaadin?
- public void parseRule(InputSource source)
- throws CSSException, IOException {
- this.source = source;
- ReInit(getCharStreamWithLurk(source));
-
- if (selectorFactory == null) {
- selectorFactory = new SelectorFactoryImpl();
- }
- if (conditionFactory == null) {
- conditionFactory = new ConditionFactoryImpl();
- }
- _parseRule();
- }
-
- /**
- * This method parses a style declaration (including the surrounding curly
- * braces).
- *
- * @param source the source of the style declaration.
- * @exception IOException the source can't be parsed.
- * @exception CSSException the source is not CSS valid.
- */
- public void parseStyleDeclaration(InputSource source)
- throws CSSException, IOException {
- this.source = source;
- ReInit(getCharStreamWithLurk(source));
-
- if (selectorFactory == null) {
- selectorFactory = new SelectorFactoryImpl();
- }
- if (conditionFactory == null) {
- conditionFactory = new ConditionFactoryImpl();
- }
- _parseDeclarationBlock();
- }
-
- /**
- * This methods returns "http://www.w3.org/TR/REC-CSS2".
- * @return the string "http://www.w3.org/TR/REC-CSS2".
- */
- public String getParserVersion() {
- return "http://www.w3.org/TR/REC-CSS2";
- }
-
- /**
- * Parse methods used by DOM Level 2 implementation.
- */
- public void parseImportRule(InputSource source)
- throws CSSException, IOException {
- this.source = source;
- ReInit(getCharStreamWithLurk(source));
-
- if (selectorFactory == null) {
- selectorFactory = new SelectorFactoryImpl();
- }
- if (conditionFactory == null) {
- conditionFactory = new ConditionFactoryImpl();
- }
- _parseImportRule();
- }
-
- public void parseMediaRule(InputSource source)
- throws CSSException, IOException {
- this.source = source;
- ReInit(getCharStreamWithLurk(source));
-
- if (selectorFactory == null) {
- selectorFactory = new SelectorFactoryImpl();
- }
- if (conditionFactory == null) {
- conditionFactory = new ConditionFactoryImpl();
- }
- _parseMediaRule();
- }
-
- public SelectorList parseSelectors(InputSource source)
- throws CSSException, IOException {
- this.source = source;
- ReInit(getCharStreamWithLurk(source));
-
- return null;
- }
-
- public LexicalUnit parsePropertyValue(InputSource source)
- throws CSSException, IOException {
- this.source = source;
- ReInit(getCharStreamWithLurk(source));
-
- return expr();
- }
-
- public boolean parsePriority(InputSource source)
- throws CSSException, IOException {
- this.source = source;
- ReInit(getCharStreamWithLurk(source));
-
- return prio();
- }
-
- /**
- * Convert the source into a Reader. Used only by DOM Level 2 parser methods.
- */
- private Reader getReader(InputSource source) throws IOException {
- if (source.getCharacterStream() != null) {
- return source.getCharacterStream();
- } else if (source.getByteStream() != null) {
- // My DOM level 2 implementation doesn't use this case.
- if (source.getEncoding() == null) {
- // unknown encoding, use ASCII as default.
- return new InputStreamReader(source.getByteStream(), "ASCII");
- } else {
- return new InputStreamReader(source.getByteStream(),
- source.getEncoding());
- }
- } else {
- // systemId
- // @@TODO
- throw new CSSException("not yet implemented");
- }
- }
-
- /**
- * Convert the source into a CharStream with encoding informations.
- * The encoding can be found in the InputSource or in the CSS document.
- * Since this method marks the reader and make a reset after looking for
- * the charset declaration, you'll find the charset declaration into the
- * stream.
- */
- private CharStream getCharStreamWithLurk(InputSource source)
- throws CSSException, IOException {
- if (source.getCharacterStream() != null) {
- // all encoding are supposed to be resolved by the user
- // return the reader
- return new Generic_CharStream(source.getCharacterStream(), 1, 1);
- } else if (source.getByteStream() == null) {
- // @@CONTINUE ME. see also getReader() with systemId
- try {
- source.setByteStream(new URL(source.getURI()).openStream());
- } catch (Exception e) {
- try {
- source.setByteStream(new FileInputStream(source.getURI()));
- } catch (IOException ex) {
- throw new CSSException("invalid url ?");
- }
- }
- }
- //use UTF-8 as the default encoding.
- String encoding = source.getEncoding();
- InputStream input = source.getByteStream();
- if (!input.markSupported()) {
- // If mark is not supported, wrap it in a stream which supports mark
- input = new BufferedInputStream(input);
- source.setByteStream(input);
- }
- // Mark either the original stream or the wrapped stream
- input.mark(100);
- if(encoding == null){
- encoding = "ASCII";
-
- char c = ' ';
-
- c = (char) input.read();
-
- if (c == '@') {
- // hum, is it a charset ?
- int size = 100;
- byte[] buf = new byte[size];
- input.read(buf, 0, 7);
- String keyword = new String(buf, 0, 7);
- if (keyword.equals("charset")) {
- // Yes, this is the charset declaration !
-
- // here I don't use the right declaration : white space are ' '.
- while ((c = (char) input.read()) == ' ') {
- // find the first quote
- }
- char endChar = c;
- int i = 0;
-
- if ((endChar != '"') && (endChar != '\u005c'')) {
- // hum this is not a quote.
- throw new CSSException("invalid charset declaration");
- }
-
- while ((c = (char) input.read()) != endChar) {
- buf[i++] = (byte) c;
- if (i == size) {
- byte[] old = buf;
- buf = new byte[size + 100];
- System.arraycopy(old, 0, buf, 0, size);
- size += 100;
- }
- }
- while ((c = (char) input.read()) == ' ') {
- // find the next relevant character
- }
- if (c != ';') {
- // no semi colon at the end ?
- throw new CSSException("invalid charset declaration: "
- + "missing semi colon");
- }
- encoding = new String(buf, 0, i);
- if (source.getEncoding() != null) {
- // compare the two encoding informations.
- // For example, I don't accept to have ASCII and after UTF-8.
- // Is it really good ? That is the question.
- if (!encoding.equals(source.getEncoding())) {
- throw new CSSException("invalid encoding information.");
- }
- }
- } // else no charset declaration available
- }
- }
- // ok set the real encoding of this source.
- source.setEncoding(encoding);
- // set the real reader of this source.
- source.setCharacterStream(new InputStreamReader(source.getByteStream(),
- Encoding.getJavaEncoding(encoding)));
- // reset the stream (leave the charset declaration in the stream).
- input.reset();
-
- return new Generic_CharStream(source.getCharacterStream(), 1, 1);
- }
-
- private LocatorImpl currentLocator;
- private Locator getLocator() {
- if (currentLocator == null) {
- currentLocator = new LocatorImpl(this);
- return currentLocator;
- }
- return currentLocator.reInit(this);
- }
- private LocatorImpl getLocator(Token save) {
- if (currentLocator == null) {
- currentLocator = new LocatorImpl(this, save);
- return currentLocator;
- }
- return currentLocator.reInit(this, save);
- }
-
- private void reportError(Locator l, Exception e) {
- if (errorHandler != null) {
- if (e instanceof ParseException) {
- // construct a clean error message.
- ParseException pe = (ParseException) e;
- if (pe.specialConstructor) {
- StringBuffer errorM = new StringBuffer();
- if (pe.currentToken != null) {
- errorM.append("encountered \u005c"")
- .append(pe.currentToken.next);
- }
- errorM.append('"');
- if (pe.expectedTokenSequences.length != 0) {
- errorM.append(". Was expecting one of: ");
- for (int i = 0; i < pe.expectedTokenSequences.length; i++) {
- for (int j = 0; j < pe.expectedTokenSequences[i].length; j++) {
- int kind = pe.expectedTokenSequences[i][j];
- if (kind != S) {
- errorM.append(pe.tokenImage[kind]);
- errorM.append(' ');
- }
- }
- }
- }
- errorHandler.error(new CSSParseException(errorM.toString(),
- l, e));
- } else {
- errorHandler.error(new CSSParseException(e.getMessage(),
- l, e));
- }
- } else if (e == null) {
- errorHandler.error(new CSSParseException("error", l, null));
- } else {
- errorHandler.error(new CSSParseException(e.getMessage(), l, e));
- }
- }
- }
-
- private void reportWarningSkipText(Locator l, String text) {
- if (errorHandler != null && text != null) {
- errorHandler.warning(new CSSParseException("Skipping: " + text, l));
- }
- }
-
-/*
- * The grammar of CSS2
- */
-
-/**
- * The main entry for the parser.
- *
- * @exception ParseException exception during the parse
- */
- final public void parserUnit() throws ParseException {
- try {
- documentHandler.startDocument(source);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case CHARSET_SYM:
- charset();
- break;
- default:
- jj_la1[0] = jj_gen;
- ;
- }
- label_1:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- case CDO:
- case CDC:
- case ATKEYWORD:
- ;
- break;
- default:
- jj_la1[1] = jj_gen;
- break label_1;
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- jj_consume_token(S);
- comments();
- break;
- case CDO:
- case CDC:
- case ATKEYWORD:
- ignoreStatement();
- break;
- default:
- jj_la1[2] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- }
- label_2:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IMPORT_SYM:
- ;
- break;
- default:
- jj_la1[3] = jj_gen;
- break label_2;
- }
- importDeclaration();
- label_3:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case CDO:
- case CDC:
- case ATKEYWORD:
- ;
- break;
- default:
- jj_la1[4] = jj_gen;
- break label_3;
- }
- ignoreStatement();
- label_4:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[5] = jj_gen;
- break label_4;
- }
- jj_consume_token(S);
- }
- }
- }
- afterImportDeclaration();
- jj_consume_token(0);
- } finally {
- documentHandler.endDocument(source);
- }
- }
-
- final public void charset() throws ParseException {
- Token n;
- try {
- jj_consume_token(CHARSET_SYM);
- label_5:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[6] = jj_gen;
- break label_5;
- }
- jj_consume_token(S);
- }
- n = jj_consume_token(STRING);
- label_6:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[7] = jj_gen;
- break label_6;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case SEMICOLON:
- jj_consume_token(SEMICOLON);
- break;
- default:
- jj_la1[8] = jj_gen;
- acceptMissingSemicolon(EOF);
- }
- } catch (ParseException e) {
- reportError(getLocator(e.currentToken.next), e);
- skipStatement();
- // reportWarningSkipText(getLocator(), skipStatement());
-
- } catch (Exception e) {
- reportError(getLocator(), e);
- skipStatement();
- // reportWarningSkipText(getLocator(), skipStatement());
-
- }
- }
-
- final public void afterImportDeclaration() throws ParseException {
- String ret;
- Locator l;
- label_7:
- while (true) {
- ;
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case DEBUG_SYM:
- case WARN_SYM:
- debuggingDirective();
- break;
- case MIXIN_SYM:
- mixinDirective();
- break;
- case EACH_SYM:
- case IF_SYM:
- controlDirective();
- break;
- case INCLUDE_SYM:
- includeDirective();
- break;
- case PLUS:
- case PRECEDES:
- case SIBLING:
- case LBRACKET:
- case ANY:
- case PARENT:
- case DOT:
- case COLON:
- case INTERPOLATION:
- case IDENT:
- case HASH:
- styleRule();
- break;
- case MEDIA_SYM:
- media();
- break;
- case PAGE_SYM:
- page();
- break;
- case FONT_FACE_SYM:
- fontFace();
- break;
- case KEY_FRAME_SYM:
- keyframes();
- break;
- default:
- jj_la1[9] = jj_gen;
- if (jj_2_1(2147483647)) {
- variable();
- } else {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case VARIABLE:
- listModifyDirective();
- break;
- default:
- jj_la1[10] = jj_gen;
- l = getLocator();
- ret = skipStatement();
- if ((ret == null) || (ret.length() == 0)) {
- {if (true) return;}
- }
- if (ret.charAt(0) == '@') {
- documentHandler.unrecognizedRule(ret);
- } else {
- reportWarningSkipText(l, ret);
- }
- }
- }
- }
- label_8:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case CDO:
- case CDC:
- case ATKEYWORD:
- ;
- break;
- default:
- jj_la1[11] = jj_gen;
- break label_8;
- }
- ignoreStatement();
- label_9:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[12] = jj_gen;
- break label_9;
- }
- jj_consume_token(S);
- }
- }
- }
- }
-
- final public void ignoreStatement() throws ParseException {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case CDO:
- jj_consume_token(CDO);
- break;
- case CDC:
- jj_consume_token(CDC);
- break;
- case ATKEYWORD:
- atRuleDeclaration();
- break;
- default:
- jj_la1[13] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- }
-
-/**
- * The import statement
- *
- * @exception ParseException exception during the parse
- */
- final public void importDeclaration() throws ParseException {
- Token n;
- String uri;
- MediaListImpl ml = new MediaListImpl();
- boolean isURL = false;
- try {
- jj_consume_token(IMPORT_SYM);
- label_10:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[14] = jj_gen;
- break label_10;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case STRING:
- n = jj_consume_token(STRING);
- uri = convertStringIndex(n.image, 1,
- n.image.length() -1);
- break;
- case URL:
- n = jj_consume_token(URL);
- isURL=true;
- uri = n.image.substring(4, n.image.length()-1).trim();
- if ((uri.charAt(0) == '"')
- || (uri.charAt(0) == '\u005c'')) {
- uri = uri.substring(1, uri.length()-1);
- }
- break;
- default:
- jj_la1[15] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- label_11:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[16] = jj_gen;
- break label_11;
- }
- jj_consume_token(S);
- }
- mediaStatement(ml);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case SEMICOLON:
- jj_consume_token(SEMICOLON);
- break;
- default:
- jj_la1[17] = jj_gen;
- acceptMissingSemicolon(RBRACE, EOF);
- }
- label_12:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[18] = jj_gen;
- break label_12;
- }
- jj_consume_token(S);
- }
- if (ml.getLength() == 0) {
- // see section 6.3 of the CSS2 recommandation.
- ml.addItem("all");
- }
- documentHandler.importStyle(uri, ml, isURL);
- } catch (ParseException e) {
- reportError(getLocator(), e);
- skipStatement();
- // reportWarningSkipText(getLocator(), skipStatement());
-
- }
- }
-
-/**
- * @exception ParseException exception during the parse
- */
- final public void keyframes() throws ParseException {
- Token n;
- boolean start = false;
- String keyframeName = null;
- String animationname = "";
- try {
- n = jj_consume_token(KEY_FRAME_SYM);
- label_13:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[19] = jj_gen;
- break label_13;
- }
- jj_consume_token(S);
- }
- keyframeName = n.image;
- label_14:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IDENT:
- n = jj_consume_token(IDENT);
- animationname += n.image;
- break;
- case INTERPOLATION:
- n = jj_consume_token(INTERPOLATION);
- animationname += n.image;
- break;
- default:
- jj_la1[20] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case INTERPOLATION:
- case IDENT:
- ;
- break;
- default:
- jj_la1[21] = jj_gen;
- break label_14;
- }
- }
- label_15:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[22] = jj_gen;
- break label_15;
- }
- jj_consume_token(S);
- }
- start = true; documentHandler.startKeyFrames(keyframeName, animationname);
- jj_consume_token(LBRACE);
- label_16:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[23] = jj_gen;
- break label_16;
- }
- jj_consume_token(S);
- }
- label_17:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case TO:
- case FROM:
- case CONTENT_SYM:
- case PERCENTAGE:
- ;
- break;
- default:
- jj_la1[24] = jj_gen;
- break label_17;
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case TO:
- case FROM:
- case PERCENTAGE:
- keyframeSelector();
- break;
- case CONTENT_SYM:
- contentDirective();
- break;
- default:
- jj_la1[25] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- }
- jj_consume_token(RBRACE);
- label_18:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[26] = jj_gen;
- break label_18;
- }
- jj_consume_token(S);
- }
- } catch (ParseException e) {
- reportError(getLocator(), e);
- skipStatement();
- } finally {
- if (start) {
- documentHandler.endKeyFrames();
- }
- }
- }
-
- final public void keyframeSelector() throws ParseException {
- Token n;
- String selector = "";
- boolean start = false;
- try {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case FROM:
- n = jj_consume_token(FROM);
- break;
- case TO:
- n = jj_consume_token(TO);
- break;
- case PERCENTAGE:
- n = jj_consume_token(PERCENTAGE);
- break;
- default:
- jj_la1[27] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- selector += n.image;
- label_19:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[28] = jj_gen;
- break label_19;
- }
- jj_consume_token(S);
- }
- label_20:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case COMMA:
- ;
- break;
- default:
- jj_la1[29] = jj_gen;
- break label_20;
- }
- jj_consume_token(COMMA);
- label_21:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[30] = jj_gen;
- break label_21;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case FROM:
- n = jj_consume_token(FROM);
- break;
- case TO:
- n = jj_consume_token(TO);
- break;
- case PERCENTAGE:
- n = jj_consume_token(PERCENTAGE);
- break;
- default:
- jj_la1[31] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- selector += (", " + n.image);
- label_22:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[32] = jj_gen;
- break label_22;
- }
- jj_consume_token(S);
- }
- }
- jj_consume_token(LBRACE);
- label_23:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[33] = jj_gen;
- break label_23;
- }
- jj_consume_token(S);
- }
- start = true;
- documentHandler.startKeyframeSelector(selector);
- label_24:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- case PRECEDES:
- case SIBLING:
- case LBRACKET:
- case ANY:
- case PARENT:
- case DOT:
- case COLON:
- case INTERPOLATION:
- case INCLUDE_SYM:
- case DEBUG_SYM:
- case WARN_SYM:
- case EACH_SYM:
- case IF_SYM:
- case EXTEND_SYM:
- case CONTENT_SYM:
- case MICROSOFT_RULE:
- case IDENT:
- case VARIABLE:
- case HASH:
- case MEDIA_SYM:
- case KEY_FRAME_SYM:
- case ATKEYWORD:
- ;
- break;
- default:
- jj_la1[34] = jj_gen;
- break label_24;
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- case PRECEDES:
- case SIBLING:
- case LBRACKET:
- case ANY:
- case PARENT:
- case DOT:
- case COLON:
- case INTERPOLATION:
- case INCLUDE_SYM:
- case DEBUG_SYM:
- case WARN_SYM:
- case EACH_SYM:
- case IF_SYM:
- case EXTEND_SYM:
- case CONTENT_SYM:
- case IDENT:
- case VARIABLE:
- case HASH:
- case MEDIA_SYM:
- case KEY_FRAME_SYM:
- case ATKEYWORD:
- ifContentStatement();
- break;
- case MICROSOFT_RULE:
- microsoftExtension();
- break;
- default:
- jj_la1[35] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- }
- jj_consume_token(RBRACE);
- label_25:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[36] = jj_gen;
- break label_25;
- }
- jj_consume_token(S);
- }
- } catch (ThrowedParseException e) {
- if (errorHandler != null) {
- LocatorImpl li = new LocatorImpl(this,
- e.e.currentToken.next.beginLine,
- e.e.currentToken.next.beginColumn-1);
- reportError(li, e.e);
- }
- } catch (ParseException e) {
- reportError(getLocator(), e);
- skipStatement();
- // reportWarningSkipText(getLocator(), skipStatement());
-
- } catch (TokenMgrError e) {
- reportWarningSkipText(getLocator(), skipStatement());
- } finally {
- if (start) {
- documentHandler.endKeyframeSelector();
- }
- }
- }
-
-/**
- * @exception ParseException exception during the parse
- */
-/* see http://www.w3.org/TR/css3-mediaqueries/ */
- final public void media() throws ParseException {
- boolean start = false;
- String ret;
- MediaListImpl ml = new MediaListImpl();
- try {
- jj_consume_token(MEDIA_SYM);
- label_26:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[37] = jj_gen;
- break label_26;
- }
- jj_consume_token(S);
- }
- mediaStatement(ml);
- start = true; documentHandler.startMedia(ml);
- jj_consume_token(LBRACE);
- label_27:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[38] = jj_gen;
- break label_27;
- }
- jj_consume_token(S);
- }
- label_28:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case CDO:
- case LBRACE:
- case DASHMATCH:
- case INCLUDES:
- case PLUS:
- case MINUS:
- case COMMA:
- case SEMICOLON:
- case PRECEDES:
- case SIBLING:
- case LBRACKET:
- case ANY:
- case PARENT:
- case DOT:
- case COLON:
- case INTERPOLATION:
- case NONASCII:
- case DEBUG_SYM:
- case WARN_SYM:
- case CONTENT_SYM:
- case STRING:
- case IDENT:
- case NUMBER:
- case URL:
- case PERCENTAGE:
- case HASH:
- case IMPORT_SYM:
- case MEDIA_SYM:
- case CHARSET_SYM:
- case PAGE_SYM:
- case FONT_FACE_SYM:
- case ATKEYWORD:
- case IMPORTANT_SYM:
- case UNICODERANGE:
- case FUNCTION:
- case UNKNOWN:
- ;
- break;
- default:
- jj_la1[39] = jj_gen;
- break label_28;
- }
- mediaDirective();
- }
- jj_consume_token(RBRACE);
- label_29:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[40] = jj_gen;
- break label_29;
- }
- jj_consume_token(S);
- }
- } catch (ParseException e) {
- reportError(getLocator(), e);
- skipStatement();
- // reportWarningSkipText(getLocator(), skipStatement());
-
- } finally {
- if (start) {
- documentHandler.endMedia(ml);
- }
- }
- }
-
- final public void mediaDirective() throws ParseException {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case DEBUG_SYM:
- case WARN_SYM:
- debuggingDirective();
- break;
- case PLUS:
- case PRECEDES:
- case SIBLING:
- case LBRACKET:
- case ANY:
- case PARENT:
- case DOT:
- case COLON:
- case INTERPOLATION:
- case IDENT:
- case HASH:
- styleRule();
- break;
- case CDO:
- case LBRACE:
- case DASHMATCH:
- case INCLUDES:
- case MINUS:
- case COMMA:
- case SEMICOLON:
- case NONASCII:
- case STRING:
- case NUMBER:
- case URL:
- case PERCENTAGE:
- case IMPORT_SYM:
- case MEDIA_SYM:
- case CHARSET_SYM:
- case PAGE_SYM:
- case FONT_FACE_SYM:
- case ATKEYWORD:
- case IMPORTANT_SYM:
- case UNICODERANGE:
- case FUNCTION:
- case UNKNOWN:
- skipUnknownRule();
- break;
- case CONTENT_SYM:
- contentDirective();
- break;
- default:
- jj_la1[41] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- }
-
- final public void mediaStatement(MediaListImpl ml) throws ParseException {
- Token t;
- t = getToken(1);
- // loop over comma separated parts, add each to ml
- while ((t.kind != LBRACE) && (t.kind != EOF) && (t.kind != SEMICOLON)) {
- StringBuffer s = new StringBuffer();
- s.append(getToken(0).image);
- while ((t.kind != COMMA) && (t.kind != LBRACE) && (t.kind != EOF) && (t.kind != SEMICOLON)) {
- s.append(t.image);
- getNextToken();
- t = getToken(1);
- }
- if (t.kind == COMMA) {
- // skip the comma and the token before it that is still the active token
- getNextToken();
- getNextToken();
- t = getToken(1);
- }
- String str = s.toString().trim();
- if (str.length() > 0) {
- ml.addItem(str);
- }
- }
- }
-
-/**
- * @exception ParseException exception during the parse
- */
- final public String medium() throws ParseException {
- Token n;
- n = jj_consume_token(IDENT);
- {if (true) return convertIdent(n.image);}
- throw new Error("Missing return statement in function");
- }
-
-/**
- * @exception ParseException exception during the parse
- */
- final public void page() throws ParseException {
- boolean start = false;
- Token n = null;
- String page = null;
- String pseudo = null;
- try {
- jj_consume_token(PAGE_SYM);
- label_30:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[42] = jj_gen;
- break label_30;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IDENT:
- n = jj_consume_token(IDENT);
- label_31:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[43] = jj_gen;
- break label_31;
- }
- jj_consume_token(S);
- }
- break;
- default:
- jj_la1[44] = jj_gen;
- ;
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case COLON:
- pseudo = pseudo_page();
- break;
- default:
- jj_la1[45] = jj_gen;
- ;
- }
- if (n != null) {
- page = convertIdent(n.image);
- }
- jj_consume_token(LBRACE);
- label_32:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[46] = jj_gen;
- break label_32;
- }
- jj_consume_token(S);
- }
- start = true;
- documentHandler.startPage(page, pseudo);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case INTERPOLATION:
- case IDENT:
- declaration();
- break;
- default:
- jj_la1[47] = jj_gen;
- ;
- }
- label_33:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case SEMICOLON:
- ;
- break;
- default:
- jj_la1[48] = jj_gen;
- break label_33;
- }
- jj_consume_token(SEMICOLON);
- label_34:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[49] = jj_gen;
- break label_34;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case INTERPOLATION:
- case IDENT:
- declaration();
- break;
- default:
- jj_la1[50] = jj_gen;
- ;
- }
- }
- jj_consume_token(RBRACE);
- label_35:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[51] = jj_gen;
- break label_35;
- }
- jj_consume_token(S);
- }
- } catch (ParseException e) {
- if (errorHandler != null) {
- LocatorImpl li = new LocatorImpl(this,
- e.currentToken.next.beginLine,
- e.currentToken.next.beginColumn-1);
- reportError(li, e);
- skipStatement();
- // reportWarningSkipText(li, skipStatement());
- } else {
- skipStatement();
- }
- } finally {
- if (start) {
- documentHandler.endPage(page, pseudo);
- }
- }
- }
-
- final public String pseudo_page() throws ParseException {
- Token n;
- jj_consume_token(COLON);
- n = jj_consume_token(IDENT);
- label_36:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[52] = jj_gen;
- break label_36;
- }
- jj_consume_token(S);
- }
- {if (true) return convertIdent(n.image);}
- throw new Error("Missing return statement in function");
- }
-
- final public void fontFace() throws ParseException {
- boolean start = false;
- try {
- jj_consume_token(FONT_FACE_SYM);
- label_37:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[53] = jj_gen;
- break label_37;
- }
- jj_consume_token(S);
- }
- jj_consume_token(LBRACE);
- label_38:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[54] = jj_gen;
- break label_38;
- }
- jj_consume_token(S);
- }
- start = true; documentHandler.startFontFace();
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case INTERPOLATION:
- case IDENT:
- declaration();
- break;
- default:
- jj_la1[55] = jj_gen;
- ;
- }
- label_39:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case SEMICOLON:
- ;
- break;
- default:
- jj_la1[56] = jj_gen;
- break label_39;
- }
- jj_consume_token(SEMICOLON);
- label_40:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[57] = jj_gen;
- break label_40;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case INTERPOLATION:
- case IDENT:
- declaration();
- break;
- default:
- jj_la1[58] = jj_gen;
- ;
- }
- }
- jj_consume_token(RBRACE);
- label_41:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[59] = jj_gen;
- break label_41;
- }
- jj_consume_token(S);
- }
- } catch (ParseException e) {
- reportError(getLocator(), e);
- skipStatement();
- // reportWarningSkipText(getLocator(), skipStatement());
-
- } finally {
- if (start) {
- documentHandler.endFontFace();
- }
- }
- }
-
-/**
- * @exception ParseException exception during the parse
- */
- final public void atRuleDeclaration() throws ParseException {
- Token n;
- String ret;
- n = jj_consume_token(ATKEYWORD);
- ret=skipStatement();
- if ((ret != null) && (ret.charAt(0) == '@')) {
- documentHandler.unrecognizedRule(ret);
- } else {
- reportWarningSkipText(getLocator(), ret);
- }
- }
-
- final public void skipUnknownRule() throws ParseException {
- Token n;
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case ATKEYWORD:
- n = jj_consume_token(ATKEYWORD);
- break;
- case CDO:
- n = jj_consume_token(CDO);
- break;
- case CHARSET_SYM:
- n = jj_consume_token(CHARSET_SYM);
- break;
- case COMMA:
- n = jj_consume_token(COMMA);
- break;
- case DASHMATCH:
- n = jj_consume_token(DASHMATCH);
- break;
- case FONT_FACE_SYM:
- n = jj_consume_token(FONT_FACE_SYM);
- break;
- case FUNCTION:
- n = jj_consume_token(FUNCTION);
- break;
- case IMPORTANT_SYM:
- n = jj_consume_token(IMPORTANT_SYM);
- break;
- case IMPORT_SYM:
- n = jj_consume_token(IMPORT_SYM);
- break;
- case INCLUDES:
- n = jj_consume_token(INCLUDES);
- break;
- case LBRACE:
- n = jj_consume_token(LBRACE);
- break;
- case MEDIA_SYM:
- n = jj_consume_token(MEDIA_SYM);
- break;
- case NONASCII:
- n = jj_consume_token(NONASCII);
- break;
- case NUMBER:
- n = jj_consume_token(NUMBER);
- break;
- case PAGE_SYM:
- n = jj_consume_token(PAGE_SYM);
- break;
- case PERCENTAGE:
- n = jj_consume_token(PERCENTAGE);
- break;
- case STRING:
- n = jj_consume_token(STRING);
- break;
- case UNICODERANGE:
- n = jj_consume_token(UNICODERANGE);
- break;
- case URL:
- n = jj_consume_token(URL);
- break;
- case SEMICOLON:
- n = jj_consume_token(SEMICOLON);
- break;
- case MINUS:
- n = jj_consume_token(MINUS);
- break;
- case UNKNOWN:
- n = jj_consume_token(UNKNOWN);
- break;
- default:
- jj_la1[60] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- String ret;
- Locator loc = getLocator();
- ret=skipStatement();
- if ((ret != null) && (n.image.charAt(0) == '@')) {
- documentHandler.unrecognizedRule(ret);
- } else {
- reportWarningSkipText(loc, ret);
- }
- }
-
-/**
- * @exception ParseException exception during the parse
- */
- final public char combinator() throws ParseException {
-char connector = ' ';
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- case PRECEDES:
- case SIBLING:
- connector = combinatorChar();
- break;
- case S:
- jj_consume_token(S);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- case PRECEDES:
- case SIBLING:
- connector = combinatorChar();
- break;
- default:
- jj_la1[61] = jj_gen;
- ;
- }
- break;
- default:
- jj_la1[62] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- {if (true) return connector;}
- throw new Error("Missing return statement in function");
- }
-
-/**to refactor combinator and reuse in selector().*/
- final public char combinatorChar() throws ParseException {
- Token t;
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- t = jj_consume_token(PLUS);
- break;
- case PRECEDES:
- t = jj_consume_token(PRECEDES);
- break;
- case SIBLING:
- t = jj_consume_token(SIBLING);
- break;
- default:
- jj_la1[63] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- label_42:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[64] = jj_gen;
- break label_42;
- }
- jj_consume_token(S);
- }
- {if (true) return t.image.charAt(0);}
- throw new Error("Missing return statement in function");
- }
-
- final public void microsoftExtension() throws ParseException {
- Token n;
- String name = "";
- String value = "";
- // This is not really taking the syntax of filter rules into account
- n = jj_consume_token(MICROSOFT_RULE);
- label_43:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[65] = jj_gen;
- break label_43;
- }
- jj_consume_token(S);
- }
- name = n.image;
- jj_consume_token(COLON);
- label_44:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IDENT:
- n = jj_consume_token(IDENT);
- value += n.image;
- break;
- case NUMBER:
- n = jj_consume_token(NUMBER);
- value += n.image;
- break;
- case STRING:
- n = jj_consume_token(STRING);
- value += n.image;
- break;
- case COMMA:
- n = jj_consume_token(COMMA);
- value += n.image;
- break;
- case INTERPOLATION:
- n = jj_consume_token(INTERPOLATION);
- value += n.image;
- break;
- case COLON:
- n = jj_consume_token(COLON);
- value += n.image;
- break;
- case FUNCTION:
- n = jj_consume_token(FUNCTION);
- value += n.image;
- break;
- case RPARAN:
- n = jj_consume_token(RPARAN);
- value += n.image;
- break;
- case EQ:
- n = jj_consume_token(EQ);
- value += n.image;
- break;
- case DOT:
- n = jj_consume_token(DOT);
- value += n.image;
- break;
- case S:
- n = jj_consume_token(S);
- if(value.lastIndexOf(' ') != value.length()-1)
- { value += n.image; }
- break;
- default:
- jj_la1[66] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- case EQ:
- case COMMA:
- case DOT:
- case RPARAN:
- case COLON:
- case INTERPOLATION:
- case STRING:
- case IDENT:
- case NUMBER:
- case FUNCTION:
- ;
- break;
- default:
- jj_la1[67] = jj_gen;
- break label_44;
- }
- }
- jj_consume_token(SEMICOLON);
- label_45:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[68] = jj_gen;
- break label_45;
- }
- jj_consume_token(S);
- }
- documentHandler.microsoftDirective(name, value);
- }
-
-/**
- * @exception ParseException exception during the parse
- */
- final public String property() throws ParseException {
- Token t;String s = "";
- label_46:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IDENT:
- t = jj_consume_token(IDENT);
- s += t.image;
- break;
- case INTERPOLATION:
- t = jj_consume_token(INTERPOLATION);
- s += t.image;
- break;
- default:
- jj_la1[69] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case INTERPOLATION:
- case IDENT:
- ;
- break;
- default:
- jj_la1[70] = jj_gen;
- break label_46;
- }
- }
- label_47:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[71] = jj_gen;
- break label_47;
- }
- jj_consume_token(S);
- }
- {if (true) return s;}
- throw new Error("Missing return statement in function");
- }
-
- final public String variableName() throws ParseException {
- Token n;
- n = jj_consume_token(VARIABLE);
- label_48:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[72] = jj_gen;
- break label_48;
- }
- jj_consume_token(S);
- }
- {if (true) return convertIdent(n.image.substring(1));}
- throw new Error("Missing return statement in function");
- }
-
- final public String functionName() throws ParseException {
- Token n;
- n = jj_consume_token(FUNCTION);
- label_49:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[73] = jj_gen;
- break label_49;
- }
- jj_consume_token(S);
- }
- {if (true) return convertIdent(n.image.substring(0, n.image.length()-1));}
- throw new Error("Missing return statement in function");
- }
-
-/**
- * @exception ParseException exception during the parse
- */
- final public void styleRule() throws ParseException {
- boolean start = false;
- ArrayList<String> l = null;
- Token save;
- Locator loc;
- try {
- l = selectorList();
- save = token;
- jj_consume_token(LBRACE);
- label_50:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[74] = jj_gen;
- break label_50;
- }
- jj_consume_token(S);
- }
- start = true;
- documentHandler.startSelector(l);
- label_51:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- case PRECEDES:
- case SIBLING:
- case LBRACKET:
- case ANY:
- case PARENT:
- case DOT:
- case COLON:
- case INTERPOLATION:
- case INCLUDE_SYM:
- case DEBUG_SYM:
- case WARN_SYM:
- case EACH_SYM:
- case IF_SYM:
- case EXTEND_SYM:
- case CONTENT_SYM:
- case MICROSOFT_RULE:
- case IDENT:
- case VARIABLE:
- case HASH:
- case IMPORT_SYM:
- case MEDIA_SYM:
- case KEY_FRAME_SYM:
- case ATKEYWORD:
- ;
- break;
- default:
- jj_la1[75] = jj_gen;
- break label_51;
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- case PRECEDES:
- case SIBLING:
- case LBRACKET:
- case ANY:
- case PARENT:
- case DOT:
- case COLON:
- case INTERPOLATION:
- case INCLUDE_SYM:
- case DEBUG_SYM:
- case WARN_SYM:
- case EACH_SYM:
- case IF_SYM:
- case EXTEND_SYM:
- case CONTENT_SYM:
- case IDENT:
- case VARIABLE:
- case HASH:
- case MEDIA_SYM:
- case KEY_FRAME_SYM:
- case ATKEYWORD:
- ifContentStatement();
- break;
- case MICROSOFT_RULE:
- microsoftExtension();
- break;
- case IMPORT_SYM:
- importDeclaration();
- break;
- default:
- jj_la1[76] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- }
- jj_consume_token(RBRACE);
- label_52:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[77] = jj_gen;
- break label_52;
- }
- jj_consume_token(S);
- }
- } catch (ThrowedParseException e) {
- if (errorHandler != null) {
- LocatorImpl li = new LocatorImpl(this,
- e.e.currentToken.next.beginLine,
- e.e.currentToken.next.beginColumn-1);
- reportError(li, e.e);
- }
- } catch (ParseException e) {
- reportError(getLocator(), e);
- skipStatement();
- // reportWarningSkipText(getLocator(), skipStatement());
-
- } catch (TokenMgrError e) {
- reportWarningSkipText(getLocator(), skipStatement());
- } finally {
- if (start) {
- documentHandler.endSelector();
- }
- }
- }
-
- final public ArrayList<String> selectorList() throws ParseException {
- ArrayList<String> selectors = new ArrayList<String>();
- String selector;
- selector = selector();
- label_53:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case COMMA:
- ;
- break;
- default:
- jj_la1[78] = jj_gen;
- break label_53;
- }
- jj_consume_token(COMMA);
- label_54:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[79] = jj_gen;
- break label_54;
- }
- jj_consume_token(S);
- }
- selectors.add(selector);
- selector = selector();
- }
- selectors.add(selector);
- {if (true) return selectors;}
- throw new Error("Missing return statement in function");
- }
-
-/**
- * @exception ParseException exception during the parse
- */
- final public String selector() throws ParseException {
- String selector = null;
- char comb;
- try {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case LBRACKET:
- case ANY:
- case PARENT:
- case DOT:
- case COLON:
- case INTERPOLATION:
- case IDENT:
- case HASH:
- selector = simple_selector(null, ' ');
- break;
- case PLUS:
- case PRECEDES:
- case SIBLING:
- comb = combinatorChar();
- selector = simple_selector(selector, comb);
- break;
- default:
- jj_la1[80] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- label_55:
- while (true) {
- if (jj_2_2(2)) {
- ;
- } else {
- break label_55;
- }
- comb = combinator();
- selector = simple_selector(selector, comb);
- }
- label_56:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[81] = jj_gen;
- break label_56;
- }
- jj_consume_token(S);
- }
- {if (true) return selector;}
- } catch (ParseException e) {
- /*
- Token t = getToken(1);
- StringBuffer s = new StringBuffer();
- s.append(getToken(0).image);
- while ((t.kind != COMMA) && (t.kind != SEMICOLON)
- && (t.kind != LBRACE) && (t.kind != EOF)) {
- s.append(t.image);
- getNextToken();
- t = getToken(1);
- }
- reportWarningSkipText(getLocator(), s.toString());
- */
- Token t = getToken(1);
- while ((t.kind != COMMA) && (t.kind != SEMICOLON)
- && (t.kind != LBRACE) && (t.kind != EOF)) {
- getNextToken();
- t = getToken(1);
- }
-
- {if (true) throw new ThrowedParseException(e);}
- }
- throw new Error("Missing return statement in function");
- }
-
-/**
- * @exception ParseException exception during the parse
- */
- final public String simple_selector(String selector, char comb) throws ParseException {
- String simple_current = null;
- String cond = null;
-
- pseudoElt = null;
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case ANY:
- case PARENT:
- case INTERPOLATION:
- case IDENT:
- simple_current = element_name();
- label_57:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case LBRACKET:
- case DOT:
- case COLON:
- case HASH:
- ;
- break;
- default:
- jj_la1[82] = jj_gen;
- break label_57;
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case HASH:
- cond = hash(cond);
- break;
- case DOT:
- cond = _class(cond);
- break;
- case LBRACKET:
- cond = attrib(cond);
- break;
- case COLON:
- cond = pseudo(cond);
- break;
- default:
- jj_la1[83] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- }
- break;
- case LBRACKET:
- case DOT:
- case COLON:
- case HASH:
- label_58:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case HASH:
- cond = hash(cond);
- break;
- case DOT:
- cond = _class(cond);
- break;
- case LBRACKET:
- cond = attrib(cond);
- break;
- case COLON:
- cond = pseudo(cond);
- break;
- default:
- jj_la1[84] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case LBRACKET:
- case DOT:
- case COLON:
- case HASH:
- ;
- break;
- default:
- jj_la1[85] = jj_gen;
- break label_58;
- }
- }
- break;
- default:
- jj_la1[86] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- if (simple_current == null) {
- simple_current = "";
- }
- if (cond != null) {
- simple_current = simple_current + cond;
- }
- StringBuilder builder = new StringBuilder();
- switch (comb) {
- case ' ':
- if(selector!=null){
- builder.append(selector).append(" ");
- }
- break;
- case '+':
- case '>':
- case '~':
- if(selector!=null){
- builder.append(selector).append(" ");
- }
- builder.append(comb).append(" ");
- break;
- default:
- {if (true) throw new ParseException("invalid state. send a bug report");}
- }
- builder.append(simple_current);
- selector = builder.toString();
-
- if (pseudoElt != null) {
- selector = selector + pseudoElt;
- }
- {if (true) return selector;}
- throw new Error("Missing return statement in function");
- }
-
-/**
- * @exception ParseException exception during the parse
- */
- final public String _class(String pred) throws ParseException {
- Token t;
-String s = ".";
- jj_consume_token(DOT);
- label_59:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IDENT:
- t = jj_consume_token(IDENT);
- s += t.image;
- break;
- case INTERPOLATION:
- t = jj_consume_token(INTERPOLATION);
- s += t.image;
- break;
- default:
- jj_la1[87] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case INTERPOLATION:
- case IDENT:
- ;
- break;
- default:
- jj_la1[88] = jj_gen;
- break label_59;
- }
- }
- if (pred == null) {
- {if (true) return s;}
- } else {
- {if (true) return pred + s;}
- }
- throw new Error("Missing return statement in function");
- }
-
-/**
- * @exception ParseException exception during the parse
- */
- final public String element_name() throws ParseException {
- Token t; String s = "";
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case INTERPOLATION:
- case IDENT:
- label_60:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IDENT:
- t = jj_consume_token(IDENT);
- s += t.image;
- break;
- case INTERPOLATION:
- t = jj_consume_token(INTERPOLATION);
- s += t.image;
- break;
- default:
- jj_la1[89] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case INTERPOLATION:
- case IDENT:
- ;
- break;
- default:
- jj_la1[90] = jj_gen;
- break label_60;
- }
- }
- {if (true) return s;}
- break;
- case ANY:
- jj_consume_token(ANY);
- {if (true) return "*";}
- break;
- case PARENT:
- jj_consume_token(PARENT);
- {if (true) return "&";}
- break;
- default:
- jj_la1[91] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- throw new Error("Missing return statement in function");
- }
-
-/**
- * @exception ParseException exception during the parse
- */
- final public String attrib(String pred) throws ParseException {
- int cases = 0;
- Token att = null;
- Token val = null;
- String attValue = null;
- jj_consume_token(LBRACKET);
- label_61:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[92] = jj_gen;
- break label_61;
- }
- jj_consume_token(S);
- }
- att = jj_consume_token(IDENT);
- label_62:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[93] = jj_gen;
- break label_62;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case DASHMATCH:
- case CARETMATCH:
- case DOLLARMATCH:
- case STARMATCH:
- case INCLUDES:
- case EQ:
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case EQ:
- jj_consume_token(EQ);
- cases = 1;
- break;
- case INCLUDES:
- jj_consume_token(INCLUDES);
- cases = 2;
- break;
- case DASHMATCH:
- jj_consume_token(DASHMATCH);
- cases = 3;
- break;
- case CARETMATCH:
- jj_consume_token(CARETMATCH);
- cases = 4;
- break;
- case DOLLARMATCH:
- jj_consume_token(DOLLARMATCH);
- cases = 5;
- break;
- case STARMATCH:
- jj_consume_token(STARMATCH);
- cases = 6;
- break;
- default:
- jj_la1[94] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- label_63:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[95] = jj_gen;
- break label_63;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IDENT:
- val = jj_consume_token(IDENT);
- attValue = val.image;
- break;
- case STRING:
- val = jj_consume_token(STRING);
- attValue = val.image;
- break;
- default:
- jj_la1[96] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- label_64:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[97] = jj_gen;
- break label_64;
- }
- jj_consume_token(S);
- }
- break;
- default:
- jj_la1[98] = jj_gen;
- ;
- }
- jj_consume_token(RBRACKET);
- String name = convertIdent(att.image);
- String c;
- switch (cases) {
- case 0:
- c = name;
- break;
- case 1:
- c = name + "=" + attValue;
- break;
- case 2:
- c = name + "~=" + attValue;
- break;
- case 3:
- c = name + "|=" +attValue;
- break;
- case 4:
- c = name + "^=" +attValue;
- break;
- case 5:
- c = name + "$=" +attValue;
- break;
- case 6:
- c = name + "*=" +attValue;
- break;
- default:
- // never reached.
- c = null;
- }
- c = "[" + c + "]";
- if (pred == null) {
- {if (true) return c;}
- } else {
- {if (true) return pred + c;}
- }
- throw new Error("Missing return statement in function");
- }
-
-/**
- * @exception ParseException exception during the parse
- */
- final public String pseudo(String pred) throws ParseException {
- Token n;
-Token param;
-String d;
-boolean isPseudoElement = false;
- jj_consume_token(COLON);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case COLON:
- jj_consume_token(COLON);
- isPseudoElement=true;
- break;
- default:
- jj_la1[99] = jj_gen;
- ;
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IDENT:
- n = jj_consume_token(IDENT);
- String s = ":" + convertIdent(n.image);
- if (isPseudoElement) {
- if (pseudoElt != null) {
- {if (true) throw new CSSParseException("duplicate pseudo element definition "
- + s, getLocator());}
- } else {
- pseudoElt = ":"+s;
- {if (true) return pred;}
- }
- } else {
- String c = s;
- if (pred == null) {
- {if (true) return c;}
- } else {
- {if (true) return pred + c;}
- }
- }
- break;
- case FUNCTION:
- n = jj_consume_token(FUNCTION);
- label_65:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[100] = jj_gen;
- break label_65;
- }
- jj_consume_token(S);
- }
- d = skipStatementUntilMatchingRightParan();
- jj_consume_token(RPARAN);
- // accept anything between function and a right parenthesis
- String f = convertIdent(n.image);
- String colons = isPseudoElement ? "::" : ":";
- String pseudofn = colons + f + d + ")";
- if (pred == null) {
- {if (true) return pseudofn;}
- } else {
- {if (true) return pred + pseudofn;}
- }
- break;
- default:
- jj_la1[101] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- throw new Error("Missing return statement in function");
- }
-
-/**
- * @exception ParseException exception during the parse
- */
- final public String hash(String pred) throws ParseException {
- Token n;
- n = jj_consume_token(HASH);
- String d = n.image;
- if (pred == null) {
- {if (true) return d;}
- } else {
- {if (true) return pred + d;}
- }
- throw new Error("Missing return statement in function");
- }
-
- final public void variable() throws ParseException {
- String name;
- LexicalUnitImpl exp = null;
- boolean guarded = false;
- String raw;
- try {
- name = variableName();
- jj_consume_token(COLON);
- label_66:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[102] = jj_gen;
- break label_66;
- }
- jj_consume_token(S);
- }
- exp = expr();
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case GUARDED_SYM:
- guarded = guarded();
- break;
- default:
- jj_la1[103] = jj_gen;
- ;
- }
- semicolonTerminator();
- exp = replaceNullValues(exp);
- documentHandler.variable(name, exp, guarded);
- } catch (JumpException e) {
- skipAfterExpression();
- } catch (NumberFormatException e) {
- if (errorHandler != null) {
- errorHandler.error(new CSSParseException("Invalid number "
- + e.getMessage(),
- getLocator(),
- e));
- }
- reportWarningSkipText(getLocator(), skipAfterExpression());
- } catch (ParseException e) {
- if (errorHandler != null) {
- if (e.currentToken != null) {
- LocatorImpl li = new LocatorImpl(this,
- e.currentToken.next.beginLine,
- e.currentToken.next.beginColumn-1);
- reportError(li, e);
- } else {
- reportError(getLocator(), e);
- }
- skipAfterExpression();
- } else {
- skipAfterExpression();
- }
- }
- }
-
- LexicalUnitImpl replaceNullValues(LexicalUnitImpl unit) throws ParseException {
- if(unit == null){
- return null;
- }
- if (unit.getNextLexicalUnit() != null) {
- unit.setNextLexicalUnit(replaceNullValues(unit.getNextLexicalUnit()));
- }
- if (unit.getLexicalUnitType() == SCSSLexicalUnit.SAC_IDENT
- && "null".equals(unit.getStringValue())) {
- LexicalUnitImpl next = unit.getNextLexicalUnit();
- unit = LexicalUnitImpl.createNull(unit.getLineNumber(), unit.getColumnNumber(),
- unit.getPreviousLexicalUnit());
- unit.setNextLexicalUnit(next);
- }
- return unit;
- }
-
- final public void controlDirective() throws ParseException {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IF_SYM:
- ifDirective();
- break;
- case EACH_SYM:
- eachDirective();
- break;
- default:
- jj_la1[104] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- }
-
- final public void ifContentStatement() throws ParseException {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case CONTENT_SYM:
- contentDirective();
- break;
- case INCLUDE_SYM:
- includeDirective();
- break;
- case MEDIA_SYM:
- media();
- break;
- case EXTEND_SYM:
- extendDirective();
- break;
- case PLUS:
- case PRECEDES:
- case SIBLING:
- case LBRACKET:
- case ANY:
- case PARENT:
- case DOT:
- case COLON:
- case INTERPOLATION:
- case DEBUG_SYM:
- case WARN_SYM:
- case IDENT:
- case HASH:
- styleRuleOrDeclarationOrNestedProperties();
- break;
- case KEY_FRAME_SYM:
- keyframes();
- break;
- default:
- jj_la1[105] = jj_gen;
- if (jj_2_3(2147483647)) {
- variable();
- } else {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case VARIABLE:
- listModifyDirective();
- break;
- case EACH_SYM:
- case IF_SYM:
- controlDirective();
- break;
- case ATKEYWORD:
- atRuleDeclaration();
- break;
- default:
- jj_la1[106] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- }
- }
- }
-
- final public void ifDirective() throws ParseException {
- Token n = null;
- String s = null;
- String evaluator = "";
- jj_consume_token(IF_SYM);
- label_67:
- while (true) {
- s = booleanExpressionToken();
- evaluator += s;
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- case EQ:
- case PLUS:
- case MINUS:
- case PRECEDES:
- case SUCCEEDS:
- case DIV:
- case ANY:
- case LPARAN:
- case RPARAN:
- case COMPARE:
- case OR:
- case AND:
- case NOT_EQ:
- case IDENT:
- case NUMBER:
- case VARIABLE:
- case CONTAINS:
- ;
- break;
- default:
- jj_la1[107] = jj_gen;
- break label_67;
- }
- }
- jj_consume_token(LBRACE);
- label_68:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[108] = jj_gen;
- break label_68;
- }
- jj_consume_token(S);
- }
- documentHandler.startIfElseDirective();
- documentHandler.ifDirective(evaluator);
- label_69:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- case PRECEDES:
- case SIBLING:
- case LBRACKET:
- case ANY:
- case PARENT:
- case DOT:
- case COLON:
- case INTERPOLATION:
- case INCLUDE_SYM:
- case DEBUG_SYM:
- case WARN_SYM:
- case EACH_SYM:
- case IF_SYM:
- case EXTEND_SYM:
- case CONTENT_SYM:
- case IDENT:
- case VARIABLE:
- case HASH:
- case MEDIA_SYM:
- case FONT_FACE_SYM:
- case KEY_FRAME_SYM:
- case ATKEYWORD:
- ;
- break;
- default:
- jj_la1[109] = jj_gen;
- break label_69;
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- case PRECEDES:
- case SIBLING:
- case LBRACKET:
- case ANY:
- case PARENT:
- case DOT:
- case COLON:
- case INTERPOLATION:
- case INCLUDE_SYM:
- case DEBUG_SYM:
- case WARN_SYM:
- case EACH_SYM:
- case IF_SYM:
- case EXTEND_SYM:
- case CONTENT_SYM:
- case IDENT:
- case VARIABLE:
- case HASH:
- case MEDIA_SYM:
- case KEY_FRAME_SYM:
- case ATKEYWORD:
- ifContentStatement();
- break;
- case FONT_FACE_SYM:
- fontFace();
- break;
- default:
- jj_la1[110] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- }
- jj_consume_token(RBRACE);
- label_70:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[111] = jj_gen;
- break label_70;
- }
- jj_consume_token(S);
- }
- label_71:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case ELSE_SYM:
- ;
- break;
- default:
- jj_la1[112] = jj_gen;
- break label_71;
- }
- elseDirective();
- }
- documentHandler.endIfElseDirective();
- }
-
- final public void elseDirective() throws ParseException {
- String evaluator = "";
- Token n = null;
- String s = null;
- jj_consume_token(ELSE_SYM);
- label_72:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[113] = jj_gen;
- break label_72;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IF:
- jj_consume_token(IF);
- label_73:
- while (true) {
- s = booleanExpressionToken();
- evaluator += s;
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- case EQ:
- case PLUS:
- case MINUS:
- case PRECEDES:
- case SUCCEEDS:
- case DIV:
- case ANY:
- case LPARAN:
- case RPARAN:
- case COMPARE:
- case OR:
- case AND:
- case NOT_EQ:
- case IDENT:
- case NUMBER:
- case VARIABLE:
- case CONTAINS:
- ;
- break;
- default:
- jj_la1[114] = jj_gen;
- break label_73;
- }
- }
- break;
- default:
- jj_la1[115] = jj_gen;
- ;
- }
- jj_consume_token(LBRACE);
- label_74:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[116] = jj_gen;
- break label_74;
- }
- jj_consume_token(S);
- }
- if(!evaluator.trim().equals("")){ documentHandler.ifDirective(evaluator); }
- else{ documentHandler.elseDirective(); }
- label_75:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- case PRECEDES:
- case SIBLING:
- case LBRACKET:
- case ANY:
- case PARENT:
- case DOT:
- case COLON:
- case INTERPOLATION:
- case INCLUDE_SYM:
- case DEBUG_SYM:
- case WARN_SYM:
- case EACH_SYM:
- case IF_SYM:
- case EXTEND_SYM:
- case CONTENT_SYM:
- case IDENT:
- case VARIABLE:
- case HASH:
- case MEDIA_SYM:
- case FONT_FACE_SYM:
- case KEY_FRAME_SYM:
- case ATKEYWORD:
- ;
- break;
- default:
- jj_la1[117] = jj_gen;
- break label_75;
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- case PRECEDES:
- case SIBLING:
- case LBRACKET:
- case ANY:
- case PARENT:
- case DOT:
- case COLON:
- case INTERPOLATION:
- case INCLUDE_SYM:
- case DEBUG_SYM:
- case WARN_SYM:
- case EACH_SYM:
- case IF_SYM:
- case EXTEND_SYM:
- case CONTENT_SYM:
- case IDENT:
- case VARIABLE:
- case HASH:
- case MEDIA_SYM:
- case KEY_FRAME_SYM:
- case ATKEYWORD:
- ifContentStatement();
- break;
- case FONT_FACE_SYM:
- fontFace();
- break;
- default:
- jj_la1[118] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- }
- jj_consume_token(RBRACE);
- label_76:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[119] = jj_gen;
- break label_76;
- }
- jj_consume_token(S);
- }
- }
-
- final public String booleanExpressionToken() throws ParseException {
- Token n = null;
- String s = null;
- if (jj_2_4(2147483647)) {
- s = containsDirective();
- } else {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case VARIABLE:
- n = jj_consume_token(VARIABLE);
- break;
- case IDENT:
- n = jj_consume_token(IDENT);
- break;
- case NUMBER:
- n = jj_consume_token(NUMBER);
- break;
- case LPARAN:
- n = jj_consume_token(LPARAN);
- break;
- case RPARAN:
- n = jj_consume_token(RPARAN);
- break;
- case PLUS:
- n = jj_consume_token(PLUS);
- break;
- case MINUS:
- n = jj_consume_token(MINUS);
- break;
- case DIV:
- n = jj_consume_token(DIV);
- break;
- case ANY:
- n = jj_consume_token(ANY);
- break;
- case COMPARE:
- n = jj_consume_token(COMPARE);
- break;
- case EQ:
- n = jj_consume_token(EQ);
- break;
- case PRECEDES:
- n = jj_consume_token(PRECEDES);
- break;
- case SUCCEEDS:
- n = jj_consume_token(SUCCEEDS);
- break;
- case OR:
- n = jj_consume_token(OR);
- break;
- case AND:
- n = jj_consume_token(AND);
- break;
- case S:
- n = jj_consume_token(S);
- break;
- case NOT_EQ:
- n = jj_consume_token(NOT_EQ);
- break;
- default:
- jj_la1[120] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- }
- if(n!=null){{if (true) return n.image;}}
- else{{if (true) return s;}}
- throw new Error("Missing return statement in function");
- }
-
- final public void eachDirective() throws ParseException {
- Token var;
- ArrayList<String> list = null;
- String listVariable = null;
- jj_consume_token(EACH_SYM);
- label_77:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[121] = jj_gen;
- break label_77;
- }
- jj_consume_token(S);
- }
- var = jj_consume_token(VARIABLE);
- label_78:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[122] = jj_gen;
- break label_78;
- }
- jj_consume_token(S);
- }
- jj_consume_token(EACH_IN);
- label_79:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[123] = jj_gen;
- break label_79;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IDENT:
- list = stringList();
- documentHandler.startEachDirective(var.image, list);
- break;
- case VARIABLE:
- listVariable = variableName();
- documentHandler.startEachDirective(var.image, listVariable);
- break;
- default:
- jj_la1[124] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- jj_consume_token(LBRACE);
- label_80:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[125] = jj_gen;
- break label_80;
- }
- jj_consume_token(S);
- }
- label_81:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- case PRECEDES:
- case SIBLING:
- case LBRACKET:
- case ANY:
- case PARENT:
- case DOT:
- case COLON:
- case INTERPOLATION:
- case INCLUDE_SYM:
- case DEBUG_SYM:
- case WARN_SYM:
- case EACH_SYM:
- case IF_SYM:
- case EXTEND_SYM:
- case CONTENT_SYM:
- case IDENT:
- case VARIABLE:
- case HASH:
- case MEDIA_SYM:
- case KEY_FRAME_SYM:
- case ATKEYWORD:
- ;
- break;
- default:
- jj_la1[126] = jj_gen;
- break label_81;
- }
- ifContentStatement();
- }
- jj_consume_token(RBRACE);
- label_82:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[127] = jj_gen;
- break label_82;
- }
- jj_consume_token(S);
- }
- documentHandler.endEachDirective();
- }
-
- final public ArrayList<String > stringList() throws ParseException {
- ArrayList<String > strings = new ArrayList<String >();
- Token input;
- input = jj_consume_token(IDENT);
- label_83:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[128] = jj_gen;
- break label_83;
- }
- jj_consume_token(S);
- }
- strings.add(input.image);
- label_84:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case COMMA:
- ;
- break;
- default:
- jj_la1[129] = jj_gen;
- break label_84;
- }
- jj_consume_token(COMMA);
- label_85:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[130] = jj_gen;
- break label_85;
- }
- jj_consume_token(S);
- }
- input = jj_consume_token(IDENT);
- strings.add(input.image);
- label_86:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[131] = jj_gen;
- break label_86;
- }
- jj_consume_token(S);
- }
- }
- {if (true) return strings;}
- throw new Error("Missing return statement in function");
- }
-
- final public void mixinDirective() throws ParseException {
- String name;
- ArrayList<VariableNode> args = null;
- String body;
- jj_consume_token(MIXIN_SYM);
- label_87:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[132] = jj_gen;
- break label_87;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case INTERPOLATION:
- case IDENT:
- name = property();
- break;
- case FUNCTION:
- name = functionName();
- args = arglist();
- jj_consume_token(RPARAN);
- label_88:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[133] = jj_gen;
- break label_88;
- }
- jj_consume_token(S);
- }
- break;
- default:
- jj_la1[134] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- jj_consume_token(LBRACE);
- label_89:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[135] = jj_gen;
- break label_89;
- }
- jj_consume_token(S);
- }
- documentHandler.startMixinDirective(name, args);
- label_90:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- case PRECEDES:
- case SIBLING:
- case LBRACKET:
- case ANY:
- case PARENT:
- case DOT:
- case COLON:
- case INTERPOLATION:
- case INCLUDE_SYM:
- case DEBUG_SYM:
- case WARN_SYM:
- case EACH_SYM:
- case IF_SYM:
- case EXTEND_SYM:
- case CONTENT_SYM:
- case IDENT:
- case VARIABLE:
- case HASH:
- case MEDIA_SYM:
- case PAGE_SYM:
- case FONT_FACE_SYM:
- case KEY_FRAME_SYM:
- case ATKEYWORD:
- ;
- break;
- default:
- jj_la1[136] = jj_gen;
- break label_90;
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- case PRECEDES:
- case SIBLING:
- case LBRACKET:
- case ANY:
- case PARENT:
- case DOT:
- case COLON:
- case INTERPOLATION:
- case INCLUDE_SYM:
- case DEBUG_SYM:
- case WARN_SYM:
- case EACH_SYM:
- case IF_SYM:
- case EXTEND_SYM:
- case CONTENT_SYM:
- case IDENT:
- case VARIABLE:
- case HASH:
- case MEDIA_SYM:
- case KEY_FRAME_SYM:
- case ATKEYWORD:
- ifContentStatement();
- break;
- case FONT_FACE_SYM:
- fontFace();
- break;
- case PAGE_SYM:
- page();
- break;
- default:
- jj_la1[137] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- }
- jj_consume_token(RBRACE);
- label_91:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[138] = jj_gen;
- break label_91;
- }
- jj_consume_token(S);
- }
- documentHandler.endMixinDirective(name, args);
- }
-
- final public ArrayList<VariableNode> arglist() throws ParseException {
- ArrayList<VariableNode> args = new ArrayList<VariableNode>();
- VariableNode arg;
- boolean hasNonOptionalArgument = false;
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case VARIABLE:
- arg = mixinArg();
- label_92:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case COMMA:
- ;
- break;
- default:
- jj_la1[139] = jj_gen;
- break label_92;
- }
- jj_consume_token(COMMA);
- label_93:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[140] = jj_gen;
- break label_93;
- }
- jj_consume_token(S);
- }
- hasNonOptionalArgument = checkMixinForNonOptionalArguments(arg, hasNonOptionalArgument); args.add(arg);
- arg = mixinArg();
- }
- hasNonOptionalArgument = checkMixinForNonOptionalArguments(arg, hasNonOptionalArgument); args.add(arg);
- break;
- default:
- jj_la1[141] = jj_gen;
- ;
- }
- {if (true) return args;}
- throw new Error("Missing return statement in function");
- }
-
- boolean checkMixinForNonOptionalArguments(VariableNode arg, boolean hasNonOptionalArguments) throws ParseException {
- boolean currentArgHasArguments = arg.getExpr() != null && arg.getExpr().getLexicalUnitType() == LexicalUnitImpl.SCSS_VARIABLE && arg.getExpr().getNextLexicalUnit() != null;
-
- if(currentArgHasArguments)
- {
- if(hasNonOptionalArguments)
- {
- throw new ParseException("Sass Error: Required argument $"+ arg.getName() +" must come before any optional arguments.");
- }
- return hasNonOptionalArguments;
- }else
- {
- return true;
- }
- }
-
- final public VariableNode mixinArg() throws ParseException {
- String name;
- Token variable = null;
- LexicalUnitImpl first = null;
- LexicalUnitImpl prev = null;
- LexicalUnitImpl next = null;
- name = variableName();
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case COLON:
- case VARIABLE:
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case COLON:
- jj_consume_token(COLON);
- label_94:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[142] = jj_gen;
- break label_94;
- }
- jj_consume_token(S);
- }
- first = nonVariableTerm(null);
- prev = first;
- label_95:
- while (true) {
- if (jj_2_5(3)) {
- ;
- } else {
- break label_95;
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case COMMA:
- jj_consume_token(COMMA);
- label_96:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[143] = jj_gen;
- break label_96;
- }
- jj_consume_token(S);
- }
- break;
- default:
- jj_la1[144] = jj_gen;
- ;
- }
- prev = nonVariableTerm(prev);
- }
- break;
- case VARIABLE:
- variable = jj_consume_token(VARIABLE);
- first = LexicalUnitImpl.createVariable(token.beginLine, token.beginColumn,
- prev, variable.image);
- break;
- default:
- jj_la1[145] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- break;
- default:
- jj_la1[146] = jj_gen;
- ;
- }
- VariableNode arg = new VariableNode(name, first, false);
- {if (true) return arg;}
- throw new Error("Missing return statement in function");
- }
-
- final public ArrayList<LexicalUnitImpl> argValuelist() throws ParseException {
- ArrayList<LexicalUnitImpl> args = new ArrayList<LexicalUnitImpl>();
- LexicalUnitImpl first = null;
- LexicalUnitImpl next = null;
- LexicalUnitImpl prev = null;
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- case MINUS:
- case DOT:
- case TO:
- case THROUGH:
- case FROM:
- case STRING:
- case IDENT:
- case NUMBER:
- case URL:
- case VARIABLE:
- case PERCENTAGE:
- case PT:
- case MM:
- case CM:
- case PC:
- case IN:
- case PX:
- case EMS:
- case LEM:
- case REM:
- case EXS:
- case DEG:
- case RAD:
- case GRAD:
- case MS:
- case SECOND:
- case HZ:
- case KHZ:
- case DIMEN:
- case HASH:
- case UNICODERANGE:
- case FUNCTION:
- first = term(null);
- args.add(first); prev = first;
- label_97:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- case MINUS:
- case DOT:
- case COLON:
- case TO:
- case THROUGH:
- case FROM:
- case STRING:
- case IDENT:
- case NUMBER:
- case URL:
- case VARIABLE:
- case PERCENTAGE:
- case PT:
- case MM:
- case CM:
- case PC:
- case IN:
- case PX:
- case EMS:
- case LEM:
- case REM:
- case EXS:
- case DEG:
- case RAD:
- case GRAD:
- case MS:
- case SECOND:
- case HZ:
- case KHZ:
- case DIMEN:
- case HASH:
- case UNICODERANGE:
- case FUNCTION:
- ;
- break;
- default:
- jj_la1[147] = jj_gen;
- break label_97;
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case COLON:
- jj_consume_token(COLON);
- label_98:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[148] = jj_gen;
- break label_98;
- }
- jj_consume_token(S);
- }
- break;
- default:
- jj_la1[149] = jj_gen;
- ;
- }
- next = term(prev);
- prev.setNextLexicalUnit(next); prev = next;
- }
- label_99:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case COMMA:
- ;
- break;
- default:
- jj_la1[150] = jj_gen;
- break label_99;
- }
- jj_consume_token(COMMA);
- label_100:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[151] = jj_gen;
- break label_100;
- }
- jj_consume_token(S);
- }
- first = term(null);
- args.add(first); prev = first;
- label_101:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- case MINUS:
- case DOT:
- case COLON:
- case TO:
- case THROUGH:
- case FROM:
- case STRING:
- case IDENT:
- case NUMBER:
- case URL:
- case VARIABLE:
- case PERCENTAGE:
- case PT:
- case MM:
- case CM:
- case PC:
- case IN:
- case PX:
- case EMS:
- case LEM:
- case REM:
- case EXS:
- case DEG:
- case RAD:
- case GRAD:
- case MS:
- case SECOND:
- case HZ:
- case KHZ:
- case DIMEN:
- case HASH:
- case UNICODERANGE:
- case FUNCTION:
- ;
- break;
- default:
- jj_la1[152] = jj_gen;
- break label_101;
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case COLON:
- jj_consume_token(COLON);
- label_102:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[153] = jj_gen;
- break label_102;
- }
- jj_consume_token(S);
- }
- break;
- default:
- jj_la1[154] = jj_gen;
- ;
- }
- next = term(prev);
- prev.setNextLexicalUnit(next); prev = next;
- }
- }
- break;
- default:
- jj_la1[155] = jj_gen;
- ;
- }
- {if (true) return args;}
- throw new Error("Missing return statement in function");
- }
-
- final public void includeDirective() throws ParseException {
- String name;
- ArrayList<LexicalUnitImpl> args=null;
- jj_consume_token(INCLUDE_SYM);
- label_103:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[156] = jj_gen;
- break label_103;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case INTERPOLATION:
- case IDENT:
- name = property();
- break;
- case VARIABLE:
- name = variableName();
- name = "$"+name;
- break;
- case FUNCTION:
- name = functionName();
- args = argValuelist();
- jj_consume_token(RPARAN);
- label_104:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[157] = jj_gen;
- break label_104;
- }
- jj_consume_token(S);
- }
- break;
- default:
- jj_la1[158] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- documentHandler.startInclude(name, args);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case LBRACE:
- includeDirectiveBlockContents();
- break;
- default:
- jj_la1[159] = jj_gen;
- semicolonTerminator();
- }
- documentHandler.endInclude();
- }
-
- final public void semicolonTerminator() throws ParseException {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case SEMICOLON:
- label_105:
- while (true) {
- jj_consume_token(SEMICOLON);
- label_106:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[160] = jj_gen;
- break label_106;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case SEMICOLON:
- ;
- break;
- default:
- jj_la1[161] = jj_gen;
- break label_105;
- }
- }
- break;
- default:
- jj_la1[162] = jj_gen;
- acceptMissingSemicolon(RBRACE, EOF);
- }
- }
-
- void acceptMissingSemicolon(Integer... acceptedTerminators) throws ParseException, ParseException {
- Token next = getToken(1);
- ArrayList<Integer> terminators = new ArrayList<Integer>(Arrays.asList(acceptedTerminators));
- if (!terminators.contains(next.kind)){
- String message = "encountered \u005c"" + next.image + "\u005c". Was expecting one of \u005c";\u005c"";
- for(int term : acceptedTerminators){
- message += ", " + tokenImage[term];
- }
- ParseException e = new ParseException(message);
- throw e;
- }
- }
-
- final public void includeDirectiveBlockContents() throws ParseException {
- jj_consume_token(LBRACE);
- label_107:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[163] = jj_gen;
- break label_107;
- }
- jj_consume_token(S);
- }
- label_108:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- case PRECEDES:
- case SIBLING:
- case LBRACKET:
- case ANY:
- case PARENT:
- case DOT:
- case COLON:
- case INTERPOLATION:
- case TO:
- case FROM:
- case DEBUG_SYM:
- case WARN_SYM:
- case IDENT:
- case PERCENTAGE:
- case HASH:
- ;
- break;
- default:
- jj_la1[164] = jj_gen;
- break label_108;
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- case PRECEDES:
- case SIBLING:
- case LBRACKET:
- case ANY:
- case PARENT:
- case DOT:
- case COLON:
- case INTERPOLATION:
- case DEBUG_SYM:
- case WARN_SYM:
- case IDENT:
- case HASH:
- styleRuleOrDeclarationOrNestedProperties();
- break;
- case TO:
- case FROM:
- case PERCENTAGE:
- keyframeSelector();
- break;
- default:
- jj_la1[165] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- }
- jj_consume_token(RBRACE);
- label_109:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[166] = jj_gen;
- break label_109;
- }
- jj_consume_token(S);
- }
- }
-
- final public String interpolation() throws ParseException {
- Token n;
- n = jj_consume_token(INTERPOLATION);
- {if (true) return n.image;}
- throw new Error("Missing return statement in function");
- }
-
- final public void listModifyDirective() throws ParseException {
- String list = null;
- String remove = null;
- String separator = null;
- String variable = null;
- Token n = null;
- Token type = null;
- //refactor, remove those 3 LOOKAHEAD(5).
- n = jj_consume_token(VARIABLE);
- variable = n.image;
- label_110:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[167] = jj_gen;
- break label_110;
- }
- jj_consume_token(S);
- }
- jj_consume_token(COLON);
- label_111:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[168] = jj_gen;
- break label_111;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case APPEND:
- type = jj_consume_token(APPEND);
- break;
- case REMOVE:
- type = jj_consume_token(REMOVE);
- break;
- case CONTAINS:
- type = jj_consume_token(CONTAINS);
- break;
- default:
- jj_la1[169] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- label_112:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[170] = jj_gen;
- break label_112;
- }
- jj_consume_token(S);
- }
- list = listModifyDirectiveArgs(0);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case RPARAN:
- jj_consume_token(RPARAN);
- break;
- default:
- jj_la1[171] = jj_gen;
- ;
- }
- jj_consume_token(COMMA);
- label_113:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[172] = jj_gen;
- break label_113;
- }
- jj_consume_token(S);
- }
- remove = listModifyDirectiveArgs(1);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case COMMA:
- jj_consume_token(COMMA);
- label_114:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[173] = jj_gen;
- break label_114;
- }
- jj_consume_token(S);
- }
- n = jj_consume_token(IDENT);
- separator = n.image;
- label_115:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[174] = jj_gen;
- break label_115;
- }
- jj_consume_token(S);
- }
- break;
- default:
- jj_la1[175] = jj_gen;
- ;
- }
- jj_consume_token(RPARAN);
- switch (type.kind) {
- case APPEND:
- documentHandler.appendDirective(variable,list,remove,separator);
- break;
- case REMOVE:
- documentHandler.removeDirective(variable,list,remove,separator);
- break;
- case CONTAINS:
- if(variable == null){
- variable = "$var_"+UUID.randomUUID();
- }
- documentHandler.containsDirective(variable,list,remove,separator);
- break;
- default:
- break;
- }
- label_116:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[176] = jj_gen;
- break label_116;
- }
- jj_consume_token(S);
- }
- jj_consume_token(SEMICOLON);
- label_117:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[177] = jj_gen;
- break label_117;
- }
- jj_consume_token(S);
- }
- }
-
-/**
- * @exception ParseException exception during the parse
- */
- final public void appendDirective() throws ParseException {
- String list = null;
- String remove = null;
- String separator = null;
- String variable = null;
- Token n = null;
- n = jj_consume_token(VARIABLE);
- variable = n.image;
- label_118:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[178] = jj_gen;
- break label_118;
- }
- jj_consume_token(S);
- }
- jj_consume_token(COLON);
- label_119:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[179] = jj_gen;
- break label_119;
- }
- jj_consume_token(S);
- }
- jj_consume_token(APPEND);
- label_120:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[180] = jj_gen;
- break label_120;
- }
- jj_consume_token(S);
- }
- list = listModifyDirectiveArgs(0);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case RPARAN:
- jj_consume_token(RPARAN);
- break;
- default:
- jj_la1[181] = jj_gen;
- ;
- }
- jj_consume_token(COMMA);
- label_121:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[182] = jj_gen;
- break label_121;
- }
- jj_consume_token(S);
- }
- remove = listModifyDirectiveArgs(1);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case COMMA:
- jj_consume_token(COMMA);
- label_122:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[183] = jj_gen;
- break label_122;
- }
- jj_consume_token(S);
- }
- n = jj_consume_token(IDENT);
- separator = n.image;
- label_123:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[184] = jj_gen;
- break label_123;
- }
- jj_consume_token(S);
- }
- break;
- default:
- jj_la1[185] = jj_gen;
- ;
- }
- jj_consume_token(RPARAN);
- documentHandler.appendDirective(variable,list,remove,separator);
- }
-
-/**
- * @exception ParseException exception during the parse
- */
- final public void removeDirective() throws ParseException {
- String list = null;
- String remove = null;
- String separator = null;
- String variable = null;
- Token n = null;
- n = jj_consume_token(VARIABLE);
- variable = n.image;
- label_124:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[186] = jj_gen;
- break label_124;
- }
- jj_consume_token(S);
- }
- jj_consume_token(COLON);
- label_125:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[187] = jj_gen;
- break label_125;
- }
- jj_consume_token(S);
- }
- jj_consume_token(REMOVE);
- label_126:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[188] = jj_gen;
- break label_126;
- }
- jj_consume_token(S);
- }
- list = listModifyDirectiveArgs(0);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case RPARAN:
- jj_consume_token(RPARAN);
- break;
- default:
- jj_la1[189] = jj_gen;
- ;
- }
- jj_consume_token(COMMA);
- label_127:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[190] = jj_gen;
- break label_127;
- }
- jj_consume_token(S);
- }
- remove = listModifyDirectiveArgs(1);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case COMMA:
- jj_consume_token(COMMA);
- label_128:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[191] = jj_gen;
- break label_128;
- }
- jj_consume_token(S);
- }
- n = jj_consume_token(IDENT);
- separator = n.image;
- label_129:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[192] = jj_gen;
- break label_129;
- }
- jj_consume_token(S);
- }
- break;
- default:
- jj_la1[193] = jj_gen;
- ;
- }
- jj_consume_token(RPARAN);
- documentHandler.removeDirective(variable,list,remove,separator);
- }
-
-/**
- * @exception ParseException exception during the parse
- */
- final public String containsDirective() throws ParseException {
- String list = null;
- String remove = null;
- String separator = null;
- String variable = null;
- Token n = null;
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case VARIABLE:
- n = jj_consume_token(VARIABLE);
- variable = n.image;
- label_130:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[194] = jj_gen;
- break label_130;
- }
- jj_consume_token(S);
- }
- jj_consume_token(COLON);
- label_131:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[195] = jj_gen;
- break label_131;
- }
- jj_consume_token(S);
- }
- break;
- default:
- jj_la1[196] = jj_gen;
- ;
- }
- jj_consume_token(CONTAINS);
- label_132:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[197] = jj_gen;
- break label_132;
- }
- jj_consume_token(S);
- }
- list = listModifyDirectiveArgs(0);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case RPARAN:
- jj_consume_token(RPARAN);
- break;
- default:
- jj_la1[198] = jj_gen;
- ;
- }
- jj_consume_token(COMMA);
- label_133:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[199] = jj_gen;
- break label_133;
- }
- jj_consume_token(S);
- }
- remove = listModifyDirectiveArgs(1);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case COMMA:
- jj_consume_token(COMMA);
- label_134:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[200] = jj_gen;
- break label_134;
- }
- jj_consume_token(S);
- }
- n = jj_consume_token(IDENT);
- separator = n.image;
- label_135:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[201] = jj_gen;
- break label_135;
- }
- jj_consume_token(S);
- }
- break;
- default:
- jj_la1[202] = jj_gen;
- ;
- }
- jj_consume_token(RPARAN);
- /*
- *if it is not in the form like "$contains : contains($items, .v-button);"
- *for example in @if, like "@if (contains(a b c, b))", then create a temp
- *variable for contains(a b c, b);
- */
- if(variable == null){
- variable = "$var_"+UUID.randomUUID();
- }
- documentHandler.containsDirective(variable,list,remove,separator);
- {if (true) return variable;}
- throw new Error("Missing return statement in function");
- }
-
- String listModifyDirectiveArgs(int nest) throws ParseException {
- String list = "";
- int nesting = nest;
- Token t = null;
-
- while(true)
- {
- t = getToken(1);
- String s = t.image;
- if(t.kind == VARIABLE||t.kind == IDENT)
- {
- list += s;
- }else if(s.toLowerCase().equals("auto")||s.toLowerCase().equals("space")||s.toLowerCase().equals("comma"))
- {
- int i = 2;
- Token temp = getToken(i);
- boolean isLast = true;
- while(temp.kind != SEMICOLON)
- {
- if(temp.kind != RPARAN || temp.kind != S)
- {
- isLast = false;
- }
- i++;
- temp = getToken(i);
- }
-
- if(isLast)
- {
- return list;
- }
- }
- else if(t.kind == STRING)
- {
- list += s.substring(1,s.length()).substring(0,s.length()-2);
-
- }else if(t.kind == LPARAN)
- {
- nesting++;
- if(nesting > nest+1)
- {
- throw new CSSParseException("Only one ( ) pair per parameter allowed", getLocator());
- }
- }else if(t.kind == RPARAN)
- {
- nesting--;
- if(nesting == 0)
- {
- return list;
- }
- } else if(t.kind == COMMA)
- {
- if(nesting == nest)
- {
- return list;
- }else
- {
- list += ",";
- }
-
- }else if(t.kind == S)
- {
- list += " ";
- } else if(t.kind == LBRACE)
- {
- throw new CSSParseException("Invalid token,'{' found", getLocator());
- }
-
- getNextToken();
- }
- }
-
- final public Node returnDirective() throws ParseException {
- String raw;
- raw = skipStatement();
- {if (true) return null;}
- throw new Error("Missing return statement in function");
- }
-
- final public void debuggingDirective() throws ParseException {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case DEBUG_SYM:
- debugDirective();
- break;
- case WARN_SYM:
- warnDirective();
- break;
- default:
- jj_la1[203] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- }
-
- final public void debugDirective() throws ParseException {
- jj_consume_token(DEBUG_SYM);
- String content = skipStatementUntil(new int[] {SEMICOLON,RBRACE,EOF});
- // TODO should evaluate the content expression, call documentHandler.debugDirective() etc.
- Logger.getLogger(Parser.class.getName()).log(Level.INFO, content);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case SEMICOLON:
- jj_consume_token(SEMICOLON);
- label_136:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[204] = jj_gen;
- break label_136;
- }
- jj_consume_token(S);
- }
- break;
- default:
- jj_la1[205] = jj_gen;
- acceptMissingSemicolon(RBRACE, EOF);
- }
- }
-
- final public void warnDirective() throws ParseException {
- jj_consume_token(WARN_SYM);
- String content = skipStatementUntil(new int[] {SEMICOLON,RBRACE,EOF});
- // TODO should evaluate the content expression, call documentHandler.warnDirective() etc.
- Logger.getLogger(Parser.class.getName()).log(Level.SEVERE, content);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case SEMICOLON:
- jj_consume_token(SEMICOLON);
- label_137:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[206] = jj_gen;
- break label_137;
- }
- jj_consume_token(S);
- }
- break;
- default:
- jj_la1[207] = jj_gen;
- acceptMissingSemicolon(RBRACE, EOF);
- }
- }
-
- final public Node forDirective() throws ParseException {
- String var;
- String from;
- String to;
- boolean exclusive;
- String body;
- Token tok;
- var = variableName();
- int[] toThrough = {TO, THROUGH};
- from = skipStatementUntil(toThrough);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case TO:
- tok = jj_consume_token(TO);
- exclusive = true;
- break;
- case THROUGH:
- tok = jj_consume_token(THROUGH);
- exclusive = false;
- break;
- default:
- jj_la1[208] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- to = skipStatementUntilLeftBrace();
- label_138:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[209] = jj_gen;
- break label_138;
- }
- jj_consume_token(S);
- }
- body = skipStatement();
- {if (true) return documentHandler.forDirective(var, from, to, exclusive, body);}
- throw new Error("Missing return statement in function");
- }
-
- final public Node whileDirective() throws ParseException {
- String condition;
- String body;
- condition = skipStatementUntilLeftBrace();
- body = skipStatement();
- {if (true) return documentHandler.whileDirective(condition, body);}
- throw new Error("Missing return statement in function");
- }
-
- final public void extendDirective() throws ParseException {
- ArrayList<String> list;
- jj_consume_token(EXTEND_SYM);
- label_139:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[210] = jj_gen;
- break label_139;
- }
- jj_consume_token(S);
- }
- list = selectorList();
- documentHandler.extendDirective(list);
- semicolonTerminator();
- }
-
- final public void contentDirective() throws ParseException {
- jj_consume_token(CONTENT_SYM);
- label_140:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[211] = jj_gen;
- break label_140;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case SEMICOLON:
- jj_consume_token(SEMICOLON);
- label_141:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[212] = jj_gen;
- break label_141;
- }
- jj_consume_token(S);
- }
- break;
- default:
- jj_la1[213] = jj_gen;
- acceptMissingSemicolon(RBRACE, EOF);
- }
- documentHandler.contentDirective();
- }
-
- Node importDirective() throws ParseException {
- return null;
- }
-
- Node charsetDirective() throws ParseException {
- return null;
- }
-
- Node mozDocumentDirective() throws ParseException {
- return null;
- }
-
- Node supportsDirective() throws ParseException {
- return null;
- }
-
- final public void nestedProperties() throws ParseException {
- String name;
-LexicalUnit exp;
- name = property();
- jj_consume_token(COLON);
- label_142:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[214] = jj_gen;
- break label_142;
- }
- jj_consume_token(S);
- }
- jj_consume_token(LBRACE);
- label_143:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[215] = jj_gen;
- break label_143;
- }
- jj_consume_token(S);
- }
- documentHandler.startNestedProperties(name);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case INTERPOLATION:
- case IDENT:
- declaration();
- break;
- default:
- jj_la1[216] = jj_gen;
- ;
- }
- label_144:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case SEMICOLON:
- ;
- break;
- default:
- jj_la1[217] = jj_gen;
- break label_144;
- }
- jj_consume_token(SEMICOLON);
- label_145:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[218] = jj_gen;
- break label_145;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case INTERPOLATION:
- case IDENT:
- declaration();
- break;
- default:
- jj_la1[219] = jj_gen;
- ;
- }
- }
- jj_consume_token(RBRACE);
- documentHandler.endNestedProperties(name);
- label_146:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[220] = jj_gen;
- break label_146;
- }
- jj_consume_token(S);
- }
- }
-
-/**
- * @exception ParseException exception during the parse
- */
- final public void styleRuleOrDeclarationOrNestedProperties() throws ParseException {
- try {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case DEBUG_SYM:
- case WARN_SYM:
- debuggingDirective();
- break;
- default:
- jj_la1[221] = jj_gen;
- if (jj_2_6(2147483647)) {
- styleRule();
- } else if (jj_2_7(3)) {
- declarationOrNestedProperties();
- } else {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- case PRECEDES:
- case SIBLING:
- case LBRACKET:
- case ANY:
- case PARENT:
- case DOT:
- case COLON:
- case INTERPOLATION:
- case IDENT:
- case HASH:
- styleRule();
- break;
- default:
- jj_la1[222] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- }
- }
- } catch (JumpException e) {
- skipAfterExpression();
- // reportWarningSkipText(getLocator(), skipAfterExpression());
-
- } catch (ParseException e) {
- if (errorHandler != null) {
- if (e.currentToken != null) {
- LocatorImpl li = new LocatorImpl(this,
- e.currentToken.next.beginLine,
- e.currentToken.next.beginColumn-1);
- reportError(li, e);
- } else {
- reportError(getLocator(), e);
- }
- skipAfterExpression();
- /*
- LocatorImpl loc = (LocatorImpl) getLocator();
- loc.column--;
- reportWarningSkipText(loc, skipAfterExpression());
- */
- } else {
- skipAfterExpression();
- }
- }
- }
-
-/**
- * @exception ParseException exception during the parse
- */
- final public void declarationOrNestedProperties() throws ParseException {
- boolean important = false;
- String name;
- LexicalUnitImpl exp;
- Token save;
- String comment = null;
- try {
- name = property();
- save = token;
- jj_consume_token(COLON);
- label_147:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[223] = jj_gen;
- break label_147;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- case MINUS:
- case DOT:
- case TO:
- case THROUGH:
- case FROM:
- case STRING:
- case IDENT:
- case NUMBER:
- case URL:
- case VARIABLE:
- case PERCENTAGE:
- case PT:
- case MM:
- case CM:
- case PC:
- case IN:
- case PX:
- case EMS:
- case LEM:
- case REM:
- case EXS:
- case DEG:
- case RAD:
- case GRAD:
- case MS:
- case SECOND:
- case HZ:
- case KHZ:
- case DIMEN:
- case HASH:
- case UNICODERANGE:
- case FUNCTION:
- exp = expr();
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IMPORTANT_SYM:
- important = prio();
- break;
- default:
- jj_la1[224] = jj_gen;
- ;
- }
- Token next = getToken(1);
- if(next.kind == SEMICOLON || next.kind == RBRACE){
- while(next.kind == SEMICOLON){
- skipStatement();
- next = getToken(1);
- }
- //only add special token kept for sprites '/**'
- if(token.specialToken!=null && token.specialToken!=null && token.specialToken.image.startsWith("/**")){
- documentHandler.property(name, exp, important, token.specialToken.image);
- }else{
- documentHandler.property(name, exp, important, null);
- }
- }
- break;
- case LBRACE:
- jj_consume_token(LBRACE);
- label_148:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[225] = jj_gen;
- break label_148;
- }
- jj_consume_token(S);
- }
- documentHandler.startNestedProperties(name);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case INTERPOLATION:
- case IDENT:
- declaration();
- break;
- default:
- jj_la1[226] = jj_gen;
- ;
- }
- label_149:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case SEMICOLON:
- ;
- break;
- default:
- jj_la1[227] = jj_gen;
- break label_149;
- }
- jj_consume_token(SEMICOLON);
- label_150:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[228] = jj_gen;
- break label_150;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case INTERPOLATION:
- case IDENT:
- declaration();
- break;
- default:
- jj_la1[229] = jj_gen;
- ;
- }
- }
- jj_consume_token(RBRACE);
- label_151:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[230] = jj_gen;
- break label_151;
- }
- jj_consume_token(S);
- }
- documentHandler.endNestedProperties(name);
- break;
- default:
- jj_la1[231] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- } catch (JumpException e) {
- skipAfterExpression();
- // reportWarningSkipText(getLocator(), skipAfterExpression());
-
- } catch (NumberFormatException e) {
- if (errorHandler != null) {
- errorHandler.error(new CSSParseException("Invalid number "
- + e.getMessage(),
- getLocator(),
- e));
- }
- reportWarningSkipText(getLocator(), skipAfterExpression());
- } catch (ParseException e) {
- if (errorHandler != null) {
- if (e.currentToken != null) {
- LocatorImpl li = new LocatorImpl(this,
- e.currentToken.next.beginLine,
- e.currentToken.next.beginColumn-1);
- reportError(li, e);
- } else {
- reportError(getLocator(), e);
- }
- skipAfterExpression();
- /*
- LocatorImpl loc = (LocatorImpl) getLocator();
- loc.column--;
- reportWarningSkipText(loc, skipAfterExpression());
- */
- } else {
- skipAfterExpression();
- }
- }
- }
-
-/**
- * @exception ParseException exception during the parse
- */
- final public void declaration() throws ParseException {
- boolean important = false;
- String name;
- LexicalUnit exp;
- Token save;
- try {
- name = property();
- save = token;
- jj_consume_token(COLON);
- label_152:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[232] = jj_gen;
- break label_152;
- }
- jj_consume_token(S);
- }
- exp = expr();
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IMPORTANT_SYM:
- important = prio();
- break;
- default:
- jj_la1[233] = jj_gen;
- ;
- }
- documentHandler.property(name, exp, important);
- } catch (JumpException e) {
- skipAfterExpression();
- // reportWarningSkipText(getLocator(), skipAfterExpression());
-
- } catch (NumberFormatException e) {
- if (errorHandler != null) {
- errorHandler.error(new CSSParseException("Invalid number "
- + e.getMessage(),
- getLocator(),
- e));
- }
- reportWarningSkipText(getLocator(), skipAfterExpression());
- } catch (ParseException e) {
- if (errorHandler != null) {
- if (e.currentToken != null) {
- LocatorImpl li = new LocatorImpl(this,
- e.currentToken.next.beginLine,
- e.currentToken.next.beginColumn-1);
- reportError(li, e);
- } else {
- reportError(getLocator(), e);
- }
- skipAfterExpression();
- /*
- LocatorImpl loc = (LocatorImpl) getLocator();
- loc.column--;
- reportWarningSkipText(loc, skipAfterExpression());
- */
- } else {
- skipAfterExpression();
- }
- }
- }
-
-/**
- * @exception ParseException exception during the parse
- */
- final public boolean prio() throws ParseException {
- jj_consume_token(IMPORTANT_SYM);
- label_153:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[234] = jj_gen;
- break label_153;
- }
- jj_consume_token(S);
- }
- {if (true) return true;}
- throw new Error("Missing return statement in function");
- }
-
- final public boolean guarded() throws ParseException {
- jj_consume_token(GUARDED_SYM);
- label_154:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[235] = jj_gen;
- break label_154;
- }
- jj_consume_token(S);
- }
- {if (true) return true;}
- throw new Error("Missing return statement in function");
- }
-
-/**
- * @exception ParseException exception during the parse
- */
- final public LexicalUnitImpl operator(LexicalUnitImpl prev) throws ParseException {
- Token n;
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case COMMA:
- /* (comments copied from basic_arithmetics.scss)
- *supports:
- * 1. standard arithmetic operations (+, -, *, /, %)
- * 2. / is treated as css operator, unless one of its operands is variable or there is another binary arithmetic operator
- *limits:
- * 1. cannot mix arithmetic and css operations, e.g. "margin: 1px + 3px 2px" will fail
- * 2. space between add and minus operator and their following operand is mandatory. e.g. "1 + 2" is valid, "1+2" is not
- * 3. parenthesis is not supported now.
- */
- n = jj_consume_token(COMMA);
- label_155:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[236] = jj_gen;
- break label_155;
- }
- jj_consume_token(S);
- }
- {if (true) return LexicalUnitImpl.createComma(n.beginLine,
- n.beginColumn,
- prev);}
- break;
- case DIV:
- n = jj_consume_token(DIV);
- label_156:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[237] = jj_gen;
- break label_156;
- }
- jj_consume_token(S);
- }
- {if (true) return LexicalUnitImpl.createSlash(n.beginLine,
- n.beginColumn,
- prev);}
- break;
- case ANY:
- n = jj_consume_token(ANY);
- label_157:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[238] = jj_gen;
- break label_157;
- }
- jj_consume_token(S);
- }
- {if (true) return LexicalUnitImpl.createMultiply(n.beginLine,
- n.beginColumn,
- prev);}
- break;
- case MOD:
- n = jj_consume_token(MOD);
- label_158:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[239] = jj_gen;
- break label_158;
- }
- jj_consume_token(S);
- }
- {if (true) return LexicalUnitImpl.createModulo(n.beginLine,
- n.beginColumn,
- prev);}
- break;
- case PLUS:
- n = jj_consume_token(PLUS);
- label_159:
- while (true) {
- jj_consume_token(S);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[240] = jj_gen;
- break label_159;
- }
- }
- {if (true) return LexicalUnitImpl.createAdd(n.beginLine,
- n.beginColumn,
- prev);}
- break;
- case MINUS:
- n = jj_consume_token(MINUS);
- label_160:
- while (true) {
- jj_consume_token(S);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[241] = jj_gen;
- break label_160;
- }
- }
- {if (true) return LexicalUnitImpl.createMinus(n.beginLine,
- n.beginColumn,
- prev);}
- break;
- default:
- jj_la1[242] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- throw new Error("Missing return statement in function");
- }
-
-/**
- * @exception ParseException exception during the parse
- */
- final public LexicalUnitImpl expr() throws ParseException {
- LexicalUnitImpl first, res;
- char op;
- first = term(null);
- res = first;
- label_161:
- while (true) {
- if (jj_2_8(2)) {
- ;
- } else {
- break label_161;
- }
- if (jj_2_9(2)) {
- res = operator(res);
- } else {
- ;
- }
- res = term(res);
- }
- {if (true) return first;}
- throw new Error("Missing return statement in function");
- }
-
-/**
- * @exception ParseException exception during the parse
- */
- final public char unaryOperator() throws ParseException {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case MINUS:
- jj_consume_token(MINUS);
- {if (true) return '-';}
- break;
- case PLUS:
- jj_consume_token(PLUS);
- {if (true) return '+';}
- break;
- default:
- jj_la1[243] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- throw new Error("Missing return statement in function");
- }
-
-/**
- * @exception ParseException exception during the parse
- */
- final public LexicalUnitImpl term(LexicalUnitImpl prev) throws ParseException {
- LexicalUnitImpl result = null;
- Token n = null;
- char op = ' ';
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- case MINUS:
- case DOT:
- case TO:
- case THROUGH:
- case FROM:
- case STRING:
- case IDENT:
- case NUMBER:
- case URL:
- case PERCENTAGE:
- case PT:
- case MM:
- case CM:
- case PC:
- case IN:
- case PX:
- case EMS:
- case LEM:
- case REM:
- case EXS:
- case DEG:
- case RAD:
- case GRAD:
- case MS:
- case SECOND:
- case HZ:
- case KHZ:
- case DIMEN:
- case HASH:
- case UNICODERANGE:
- case FUNCTION:
- result = nonVariableTerm(prev);
- break;
- case VARIABLE:
- result = variableTerm(prev);
- break;
- default:
- jj_la1[244] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- {if (true) return result;}
- throw new Error("Missing return statement in function");
- }
-
- final public LexicalUnitImpl variableTerm(LexicalUnitImpl prev) throws ParseException {
- LexicalUnitImpl result = null;
- String varName = "";
- varName = variableName();
- result = LexicalUnitImpl.createVariable(token.beginLine, token.beginColumn,
- prev, varName); {if (true) return result;}
- throw new Error("Missing return statement in function");
- }
-
- final public LexicalUnitImpl nonVariableTerm(LexicalUnitImpl prev) throws ParseException {
-LexicalUnitImpl result = null;
- Token n = null;
- char op = ' ';
- String varName;
- String s = "";
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- case MINUS:
- case NUMBER:
- case PERCENTAGE:
- case PT:
- case MM:
- case CM:
- case PC:
- case IN:
- case PX:
- case EMS:
- case LEM:
- case REM:
- case EXS:
- case DEG:
- case RAD:
- case GRAD:
- case MS:
- case SECOND:
- case HZ:
- case KHZ:
- case DIMEN:
- case FUNCTION:
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- case MINUS:
- op = unaryOperator();
- break;
- default:
- jj_la1[245] = jj_gen;
- ;
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case NUMBER:
- n = jj_consume_token(NUMBER);
- result = LexicalUnitImpl.createNumber(n.beginLine, n.beginColumn,
- prev, number(op, n, 0));
- break;
- case PERCENTAGE:
- n = jj_consume_token(PERCENTAGE);
- result = LexicalUnitImpl.createPercentage(n.beginLine, n.beginColumn,
- prev, number(op, n, 1));
- break;
- case PT:
- n = jj_consume_token(PT);
- result = LexicalUnitImpl.createPT(n.beginLine, n.beginColumn,
- prev, number(op, n, 2));
- break;
- case CM:
- n = jj_consume_token(CM);
- result = LexicalUnitImpl.createCM(n.beginLine, n.beginColumn,
- prev, number(op, n, 2));
- break;
- case MM:
- n = jj_consume_token(MM);
- result = LexicalUnitImpl.createMM(n.beginLine, n.beginColumn,
- prev, number(op, n, 2));
- break;
- case PC:
- n = jj_consume_token(PC);
- result = LexicalUnitImpl.createPC(n.beginLine, n.beginColumn,
- prev, number(op, n, 2));
- break;
- case IN:
- n = jj_consume_token(IN);
- result = LexicalUnitImpl.createIN(n.beginLine, n.beginColumn,
- prev, number(op, n, 2));
- break;
- case PX:
- n = jj_consume_token(PX);
- result = LexicalUnitImpl.createPX(n.beginLine, n.beginColumn,
- prev, number(op, n, 2));
- break;
- case EMS:
- n = jj_consume_token(EMS);
- result = LexicalUnitImpl.createEMS(n.beginLine, n.beginColumn,
- prev, number(op, n, 2));
- break;
- case LEM:
- n = jj_consume_token(LEM);
- result = LexicalUnitImpl.createLEM(n.beginLine, n.beginColumn,
- prev, number(op, n, 3));
- break;
- case REM:
- n = jj_consume_token(REM);
- result = LexicalUnitImpl.createREM(n.beginLine, n.beginColumn,
- prev, number(op, n, 3));
- break;
- case EXS:
- n = jj_consume_token(EXS);
- result = LexicalUnitImpl.createEXS(n.beginLine, n.beginColumn,
- prev, number(op, n, 2));
- break;
- case DEG:
- n = jj_consume_token(DEG);
- result = LexicalUnitImpl.createDEG(n.beginLine, n.beginColumn,
- prev, number(op, n, 3));
- break;
- case RAD:
- n = jj_consume_token(RAD);
- result = LexicalUnitImpl.createRAD(n.beginLine, n.beginColumn,
- prev, number(op, n, 3));
- break;
- case GRAD:
- n = jj_consume_token(GRAD);
- result = LexicalUnitImpl.createGRAD(n.beginLine, n.beginColumn,
- prev, number(op, n, 3));
- break;
- case SECOND:
- n = jj_consume_token(SECOND);
- result = LexicalUnitImpl.createS(n.beginLine, n.beginColumn,
- prev, number(op, n, 1));
- break;
- case MS:
- n = jj_consume_token(MS);
- result = LexicalUnitImpl.createMS(n.beginLine, n.beginColumn,
- prev, number(op, n, 2));
- break;
- case HZ:
- n = jj_consume_token(HZ);
- result = LexicalUnitImpl.createHZ(n.beginLine, n.beginColumn,
- prev, number(op, n, 2));
- break;
- case KHZ:
- n = jj_consume_token(KHZ);
- result = LexicalUnitImpl.createKHZ(n.beginLine, n.beginColumn,
- prev, number(op, n, 3));
- break;
- case DIMEN:
- n = jj_consume_token(DIMEN);
- s = n.image;
- int i = 0;
- while (i < s.length()
- && (Character.isDigit(s.charAt(i)) || (s.charAt(i) == '.'))) {
- i++;
- }
-
- result = LexicalUnitImpl.createDimen(n.beginLine, n.beginColumn, prev,
- number(op,n,s.length()-i),
- s.substring(i));
- break;
- case FUNCTION:
- result = function(op, prev);
- break;
- default:
- jj_la1[246] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- break;
- case DOT:
- case TO:
- case THROUGH:
- case FROM:
- case STRING:
- case IDENT:
- case URL:
- case HASH:
- case UNICODERANGE:
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case STRING:
- n = jj_consume_token(STRING);
- result =
- LexicalUnitImpl.createString(n.beginLine, n.beginColumn, prev,
- convertStringIndex(n.image, 1,
- n.image.length() -1));
- break;
- case DOT:
- case TO:
- case THROUGH:
- case FROM:
- case IDENT:
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case DOT:
- jj_consume_token(DOT);
- s+=".";
- break;
- default:
- jj_la1[247] = jj_gen;
- ;
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IDENT:
- n = jj_consume_token(IDENT);
- break;
- case TO:
- n = jj_consume_token(TO);
- break;
- case THROUGH:
- n = jj_consume_token(THROUGH);
- break;
- case FROM:
- n = jj_consume_token(FROM);
- break;
- default:
- jj_la1[248] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- s += convertIdent(n.image);
- if ("inherit".equals(s)) {
- result = LexicalUnitImpl.createInherit(n.beginLine, n.beginColumn,
- prev);
- } else {
- result = LexicalUnitImpl.createIdent(n.beginLine, n.beginColumn,
- prev, convertIdent(n.image));
- }
-
- /* /
- Auto correction code used in the CSS Validator but must not
- be used by a conformant CSS2 parser.
- * Common error :
- * H1 {
- * color : black
- * background : white
- * }
- *
- Token t = getToken(1);
- Token semicolon = new Token();
- semicolon.kind = SEMICOLON;
- semicolon.image = ";";
- if (t.kind == COLON) {
- // @@SEEME. (generate a warning?)
- // @@SEEME if expression is a single ident,
- generate an error ?
- rejectToken(semicolon);
-
- result = prev;
- }
- / */
-
- break;
- case HASH:
- result = hexcolor(prev);
- break;
- case URL:
- result = url(prev);
- break;
- case UNICODERANGE:
- result = unicode(prev);
- break;
- default:
- jj_la1[249] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- break;
- default:
- jj_la1[250] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- label_162:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[251] = jj_gen;
- break label_162;
- }
- jj_consume_token(S);
- }
- {if (true) return result;}
- throw new Error("Missing return statement in function");
- }
-
-/**
- * Handle all CSS2 functions.
- * @exception ParseException exception during the parse
- */
- final public LexicalUnitImpl function(char operator, LexicalUnitImpl prev) throws ParseException {
- Token n;
- LexicalUnit params = null;
- n = jj_consume_token(FUNCTION);
- label_163:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[252] = jj_gen;
- break label_163;
- }
- jj_consume_token(S);
- }
- String fname = convertIdent(n.image);
- if("alpha(".equals(fname)){
- String body = skipStatementUntilSemiColon();
- {if (true) return LexicalUnitImpl.createIdent(n.beginLine, n.beginColumn,
- null, "alpha("+body);}
- }else if("expression(".equals(fname)){
- String body = skipStatementUntilSemiColon();
- {if (true) return LexicalUnitImpl.createIdent(n.beginLine, n.beginColumn,
- null, "expression("+body);}
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- case MINUS:
- case DOT:
- case TO:
- case THROUGH:
- case FROM:
- case STRING:
- case IDENT:
- case NUMBER:
- case URL:
- case VARIABLE:
- case PERCENTAGE:
- case PT:
- case MM:
- case CM:
- case PC:
- case IN:
- case PX:
- case EMS:
- case LEM:
- case REM:
- case EXS:
- case DEG:
- case RAD:
- case GRAD:
- case MS:
- case SECOND:
- case HZ:
- case KHZ:
- case DIMEN:
- case HASH:
- case UNICODERANGE:
- case FUNCTION:
- params = expr();
- break;
- default:
- jj_la1[253] = jj_gen;
- ;
- }
- jj_consume_token(RPARAN);
- if (operator != ' ') {
- {if (true) throw new CSSParseException("invalid operator before a function.",
- getLocator());}
- }
- String f = convertIdent(n.image);
- LexicalUnitImpl l = (LexicalUnitImpl) params;
- boolean loop = true;
- if ("rgb(".equals(f)) {
- // this is a RGB declaration (e.g. rgb(255, 50%, 0) )
- int i = 0;
- boolean hasVariables = false;
- while (loop && l != null && i < 5) {
- switch (i) {
- case 0:
- case 2:
- case 4:
- if (l.getLexicalUnitType() == SCSSLexicalUnit.SCSS_VARIABLE) {
- hasVariables = true;
- } else if ((l.getLexicalUnitType() != LexicalUnit.SAC_INTEGER)
- && (l.getLexicalUnitType() != LexicalUnit.SAC_PERCENTAGE)) {
- loop = false;
- }
- break;
- case 1:
- case 3:
- if (l.getLexicalUnitType() != LexicalUnit.SAC_OPERATOR_COMMA) {
- loop = false;
- }
- break;
- default:
- {if (true) throw new ParseException("implementation error");}
- }
- if (loop) {
- l = (LexicalUnitImpl) l.getNextLexicalUnit();
- i ++;
- }
- }
- if ((i == 5) && loop && (l == null)) {
- if (hasVariables) {
- {if (true) return LexicalUnitImpl.createFunction(n.beginLine,
- n.beginColumn, prev,
- f.substring(0, f.length() - 1), params);}
- } else {
- {if (true) return LexicalUnitImpl.createRGBColor(n.beginLine,
- n.beginColumn,
- prev, params);}
- }
- } else {
- if (errorHandler != null) {
- String errorText;
- Locator loc;
- if (i < 5) {
- if (params == null) {
- loc = new LocatorImpl(this, n.beginLine,
- n.beginColumn-1);
- errorText = "not enough parameters.";
- } else if (l == null) {
- loc = new LocatorImpl(this, n.beginLine,
- n.beginColumn-1);
- errorText = "not enough parameters: "
- + params.toString();
- } else {
- loc = new LocatorImpl(this, l.getLineNumber(),
- l.getColumnNumber());
- errorText = "invalid parameter: "
- + l.toString();
- }
- } else {
- loc = new LocatorImpl(this, l.getLineNumber(),
- l.getColumnNumber());
- errorText = "too many parameters: "
- + l.toString();
- }
- errorHandler.error(new CSSParseException(errorText, loc));
- }
-
- {if (true) throw new JumpException();}
- }
- } else if ("counter".equals(f)) {
- int i = 0;
- while (loop && l != null && i < 3) {
- switch (i) {
- case 0:
- case 2:
- if (l.getLexicalUnitType() != LexicalUnit.SAC_IDENT) {
- loop = false;
- }
- break;
- case 1:
- if (l.getLexicalUnitType() != LexicalUnit.SAC_OPERATOR_COMMA) {
- loop = false;
- }
- break;
- default:
- {if (true) throw new ParseException("implementation error");}
- }
- l = (LexicalUnitImpl) l.getNextLexicalUnit();
- i ++;
- }
- if (((i == 1) || (i == 3)) && loop && (l == null)) {
- {if (true) return LexicalUnitImpl.createCounter(n.beginLine, n.beginColumn,
- prev, params);}
- }
-
- } else if ("counters(".equals(f)) {
-
- int i = 0;
- while (loop && l != null && i < 5) {
- switch (i) {
- case 0:
- case 4:
- if (l.getLexicalUnitType() != LexicalUnit.SAC_IDENT) {
- loop = false;
- }
- break;
- case 2:
- if (l.getLexicalUnitType() != LexicalUnit.SAC_STRING_VALUE) {
- loop = false;
- }
- break;
- case 1:
- case 3:
- if (l.getLexicalUnitType() != LexicalUnit.SAC_OPERATOR_COMMA) {
- loop = false;
- }
- break;
- default:
- {if (true) throw new ParseException("implementation error");}
- }
- l = (LexicalUnitImpl) l.getNextLexicalUnit();
- i ++;
- }
- if (((i == 3) || (i == 5)) && loop && (l == null)) {
- {if (true) return LexicalUnitImpl.createCounters(n.beginLine, n.beginColumn,
- prev, params);}
- }
- } else if ("attr(".equals(f)) {
- if ((l != null)
- && (l.getNextLexicalUnit() == null)
- && (l.getLexicalUnitType() == LexicalUnit.SAC_IDENT)) {
- {if (true) return LexicalUnitImpl.createAttr(l.getLineNumber(),
- l.getColumnNumber(),
- prev, l.getStringValue());}
- }
- } else if ("rect(".equals(f)) {
- int i = 0;
- while (loop && l != null && i < 7) {
- switch (i) {
- case 0:
- case 2:
- case 4:
- case 6:
- switch (l.getLexicalUnitType()) {
- case LexicalUnit.SAC_INTEGER:
- if (l.getIntegerValue() != 0) {
- loop = false;
- }
- break;
- case LexicalUnit.SAC_IDENT:
- if (!l.getStringValue().equals("auto")) {
- loop = false;
- }
- break;
- case LexicalUnit.SAC_EM:
- case LexicalUnit.SAC_EX:
- case LexicalUnit.SAC_PIXEL:
- case LexicalUnit.SAC_CENTIMETER:
- case LexicalUnit.SAC_MILLIMETER:
- case LexicalUnit.SAC_INCH:
- case LexicalUnit.SAC_POINT:
- case LexicalUnit.SAC_PICA:
- // nothing
- break;
- default:
- loop = false;
- }
- break;
- case 1:
- case 3:
- case 5:
- if (l.getLexicalUnitType() != LexicalUnit.SAC_OPERATOR_COMMA) {
- loop = false;
- }
- break;
- default:
- {if (true) throw new ParseException("implementation error");}
- }
- l = (LexicalUnitImpl) l.getNextLexicalUnit();
- i ++;
- }
- if ((i == 7) && loop && (l == null)) {
- {if (true) return LexicalUnitImpl.createRect(n.beginLine, n.beginColumn,
- prev, params);}
- }
- }
- {if (true) return LexicalUnitImpl.createFunction(n.beginLine, n.beginColumn, prev,
- f.substring(0,
- f.length() -1),
- params);}
- throw new Error("Missing return statement in function");
- }
-
- final public LexicalUnitImpl unicode(LexicalUnitImpl prev) throws ParseException {
- Token n;
- n = jj_consume_token(UNICODERANGE);
- LexicalUnitImpl params = null;
- String s = n.image.substring(2);
- int index = s.indexOf('-');
- if (index == -1) {
- params = LexicalUnitImpl.createInteger(n.beginLine, n.beginColumn,
- params, Integer.parseInt(s, 16));
- } else {
- String s1 = s.substring(0, index);
- String s2 = s.substring(index);
-
- params = LexicalUnitImpl.createInteger(n.beginLine, n.beginColumn,
- params, Integer.parseInt(s1, 16));
- params = LexicalUnitImpl.createInteger(n.beginLine, n.beginColumn,
- params, Integer.parseInt(s2, 16));
- }
-
- {if (true) return LexicalUnitImpl.createUnicodeRange(n.beginLine, n.beginColumn,
- prev, params);}
- throw new Error("Missing return statement in function");
- }
-
- final public LexicalUnitImpl url(LexicalUnitImpl prev) throws ParseException {
- Token n;
- n = jj_consume_token(URL);
- String urlname = n.image.substring(4, n.image.length()-1).trim();
- {if (true) return LexicalUnitImpl.createURL(n.beginLine, n.beginColumn, prev, urlname);}
- throw new Error("Missing return statement in function");
- }
-
-/**
- * @exception ParseException exception during the parse
- */
- final public LexicalUnitImpl hexcolor(LexicalUnitImpl prev) throws ParseException {
- Token n;
- n = jj_consume_token(HASH);
- int r;
- LexicalUnitImpl first, params = null;
- String s = n.image.substring(1);
-
- if(s.length()!=3 && s.length()!=6) {
- first = null;
- {if (true) throw new CSSParseException("invalid hexadecimal notation for RGB: " + s,
- getLocator());}
- }
- {if (true) return LexicalUnitImpl.createIdent(n.beginLine, n.beginColumn,
- prev, n.image);}
- throw new Error("Missing return statement in function");
- }
-
- float number(char operator, Token n, int lengthUnit) throws ParseException {
- String image = n.image;
- float f = 0;
-
- if (lengthUnit != 0) {
- image = image.substring(0, image.length() - lengthUnit);
- }
- f = Float.valueOf(image).floatValue();
- return (operator == '-')? -f: f;
- }
-
- String skipStatementUntilSemiColon() throws ParseException {
- int[] semicolon = {SEMICOLON};
- return skipStatementUntil(semicolon);
- }
-
- String skipStatementUntilLeftBrace() throws ParseException {
- int[] lBrace = {LBRACE};
- return skipStatementUntil(lBrace);
- }
-
- String skipStatementUntilMatchingRightParan() throws ParseException {
- int[] leftTokens = {LPARAN, FUNCTION}; // a FUNCTION also contains "("
- int[] rightTokens = {RPARAN};
- StringBuffer s = new StringBuffer();
- int difference = 1;
- Token tok;
- while(difference != 0){
- tok = getToken(1);
- if(tok.kind == EOF) {
- return null;
- }
- for(int sym : leftTokens){
- if(tok.kind == sym){
- difference++;
- }
- }
- for(int sym : rightTokens){
- if(tok.kind == sym){
- difference--;
- }
- }
- if(difference != 0){
- if (tok.image != null) {
- s.append(tok.image);
- }
- getNextToken();
- }
- }
- return s.toString().trim();
- }
-
- String skipStatementUntil(int[] symbols) throws ParseException {
- StringBuffer s = new StringBuffer();
- boolean found = false;
- Token tok;
- while(!found){
- tok = getToken(1);
- for(int sym : symbols){
- if(tok.kind == sym){
- found = true;
- break;
- }
- }
- if(tok.kind == EOF) {
- break;
- }
- if(!found){
- if (tok.image != null) {
- s.append(tok.image);
- }
- getNextToken();
- }
- }
- return found ? s.toString().trim() : null;
- }
-
- String skipStatement() throws ParseException {
- StringBuffer s = new StringBuffer();
- Token tok = getToken(0);
- if (tok.image != null) {
- s.append(tok.image);
- }
- while (true) {
- tok = getToken(1);
- if (tok.kind == EOF) {
- return null;
- }
- s.append(tok.image);
- if (tok.kind == LBRACE) {
- getNextToken();
- s.append(skip_to_matching_brace());
- getNextToken();
- tok = getToken(1);
- break;
- } else if (tok.kind == RBRACE) {
- getNextToken();
- tok = getToken(1);
- break;
- } else if (tok.kind == SEMICOLON) {
- getNextToken();
- tok = getToken(1);
- break;
- }
- getNextToken();
- }
-
- // skip white space
- while (true) {
- if (tok.kind != S) {
- break;
- }
- tok = getNextToken();
- tok = getToken(1);
- }
-
- return s.toString().trim();
- }
-
- String skip_to_matching_brace() throws ParseException {
- StringBuffer s = new StringBuffer();
- Token tok;
- int nesting = 1;
- while (true) {
- tok = getToken(1);
- if (tok.kind == EOF) {
- break;
- }
- s.append(tok.image);
- if (tok.kind == LBRACE) {
- nesting++;
- } else if (tok.kind == RBRACE) {
- nesting--;
- if (nesting == 0) {
- break;
- }
- }
- getNextToken();
- }
- return s.toString();
- }
-
- String convertStringIndex(String s, int start, int len) throws ParseException {
- StringBuffer buf = new StringBuffer(len);
- int index = start;
-
- while (index < len) {
- char c = s.charAt(index);
- if (c == '\u005c\u005c') {
- if (++index < len) {
- c = s.charAt(index);
- switch (c) {
- case '0': case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8': case '9':
- case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
- case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
- buf.append('\u005c\u005c');
- while (index < len) {
- buf.append(s.charAt(index++));
- }
- break;
- case '\u005cn':
- case '\u005cf':
- break;
- case '\u005cr':
- if (index + 1 < len) {
- if (s.charAt(index + 1) == '\u005cn') {
- index ++;
- }
- }
- break;
- default:
- buf.append(c);
- }
- } else {
- throw new CSSParseException("invalid string " + s, getLocator());
- }
- } else {
- buf.append(c);
- }
- index++;
- }
-
- return buf.toString();
- }
-
- String convertIdent(String s) throws ParseException {
- return convertStringIndex(s, 0, s.length());
- }
-
- String convertString(String s) throws ParseException {
- return convertStringIndex(s, 0, s.length());
- }
-
- void comments() throws ParseException {
- /*keeps only the multiple line comments, single line comments are skipped*/
- if (token.specialToken != null && token.specialToken.image!=null && token.specialToken.image.startsWith("/*")){
- Token tmp_t = token.specialToken;
- while (tmp_t.specialToken != null) tmp_t = tmp_t.specialToken;
- while (tmp_t != null) {
- documentHandler.comment(tmp_t.image);
- tmp_t = tmp_t.next;
- }
- }
- }
-
- void rejectToken(Token t) throws ParseException {
- Token fakeToken = new Token();
- t.next = token;
- fakeToken.next = t;
- token = fakeToken;
- }
-
- String skipAfterExpression() throws ParseException {
- Token t = getToken(1);
- StringBuffer s = new StringBuffer();
- s.append(getToken(0).image);
-
- while ((t.kind != RBRACE) && (t.kind != SEMICOLON) && (t.kind != EOF)) {
- s.append(t.image);
- getNextToken();
- t = getToken(1);
- }
-
- return s.toString();
- }
-
-/**
- * The following functions are useful for a DOM CSS implementation only and are
- * not part of the general CSS2 parser.
- */
-// TODO required by original parser but not used by Vaadin?
- final public void _parseRule() throws ParseException {
- String ret = null;
- label_164:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[254] = jj_gen;
- break label_164;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IMPORT_SYM:
- importDeclaration();
- break;
- case DEBUG_SYM:
- case WARN_SYM:
- debuggingDirective();
- break;
- case PLUS:
- case PRECEDES:
- case SIBLING:
- case LBRACKET:
- case ANY:
- case PARENT:
- case DOT:
- case COLON:
- case INTERPOLATION:
- case IDENT:
- case HASH:
- styleRule();
- break;
- case MEDIA_SYM:
- media();
- break;
- case PAGE_SYM:
- page();
- break;
- case FONT_FACE_SYM:
- fontFace();
- break;
- default:
- jj_la1[255] = jj_gen;
- ret = skipStatement();
- if ((ret == null) || (ret.length() == 0)) {
- {if (true) return;}
- }
- if (ret.charAt(0) == '@') {
- documentHandler.unrecognizedRule(ret);
- } else {
- {if (true) throw new CSSParseException("unrecognize rule: " + ret,
- getLocator());}
- }
- }
- }
-
- final public void _parseImportRule() throws ParseException {
- label_165:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[256] = jj_gen;
- break label_165;
- }
- jj_consume_token(S);
- }
- importDeclaration();
- }
-
- final public void _parseMediaRule() throws ParseException {
- label_166:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[257] = jj_gen;
- break label_166;
- }
- jj_consume_token(S);
- }
- media();
- }
-
- final public void _parseDeclarationBlock() throws ParseException {
- label_167:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[258] = jj_gen;
- break label_167;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case INTERPOLATION:
- case IDENT:
- declaration();
- break;
- default:
- jj_la1[259] = jj_gen;
- ;
- }
- label_168:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case SEMICOLON:
- ;
- break;
- default:
- jj_la1[260] = jj_gen;
- break label_168;
- }
- jj_consume_token(SEMICOLON);
- label_169:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[261] = jj_gen;
- break label_169;
- }
- jj_consume_token(S);
- }
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case INTERPOLATION:
- case IDENT:
- declaration();
- break;
- default:
- jj_la1[262] = jj_gen;
- ;
- }
- }
- }
-
- final public ArrayList<String> _parseSelectors() throws ParseException {
- ArrayList<String> p = null;
- try {
- label_170:
- while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case S:
- ;
- break;
- default:
- jj_la1[263] = jj_gen;
- break label_170;
- }
- jj_consume_token(S);
- }
- p = selectorList();
- {if (true) return p;}
- } catch (ThrowedParseException e) {
- {if (true) throw (ParseException) e.e.fillInStackTrace();}
- }
- throw new Error("Missing return statement in function");
- }
-
- private boolean jj_2_1(int xla) {
- jj_la = xla; jj_lastpos = jj_scanpos = token;
- try { return !jj_3_1(); }
- catch(LookaheadSuccess ls) { return true; }
- finally { jj_save(0, xla); }
- }
-
- private boolean jj_2_2(int xla) {
- jj_la = xla; jj_lastpos = jj_scanpos = token;
- try { return !jj_3_2(); }
- catch(LookaheadSuccess ls) { return true; }
- finally { jj_save(1, xla); }
- }
-
- private boolean jj_2_3(int xla) {
- jj_la = xla; jj_lastpos = jj_scanpos = token;
- try { return !jj_3_3(); }
- catch(LookaheadSuccess ls) { return true; }
- finally { jj_save(2, xla); }
- }
-
- private boolean jj_2_4(int xla) {
- jj_la = xla; jj_lastpos = jj_scanpos = token;
- try { return !jj_3_4(); }
- catch(LookaheadSuccess ls) { return true; }
- finally { jj_save(3, xla); }
- }
-
- private boolean jj_2_5(int xla) {
- jj_la = xla; jj_lastpos = jj_scanpos = token;
- try { return !jj_3_5(); }
- catch(LookaheadSuccess ls) { return true; }
- finally { jj_save(4, xla); }
- }
-
- private boolean jj_2_6(int xla) {
- jj_la = xla; jj_lastpos = jj_scanpos = token;
- try { return !jj_3_6(); }
- catch(LookaheadSuccess ls) { return true; }
- finally { jj_save(5, xla); }
- }
-
- private boolean jj_2_7(int xla) {
- jj_la = xla; jj_lastpos = jj_scanpos = token;
- try { return !jj_3_7(); }
- catch(LookaheadSuccess ls) { return true; }
- finally { jj_save(6, xla); }
- }
-
- private boolean jj_2_8(int xla) {
- jj_la = xla; jj_lastpos = jj_scanpos = token;
- try { return !jj_3_8(); }
- catch(LookaheadSuccess ls) { return true; }
- finally { jj_save(7, xla); }
- }
-
- private boolean jj_2_9(int xla) {
- jj_la = xla; jj_lastpos = jj_scanpos = token;
- try { return !jj_3_9(); }
- catch(LookaheadSuccess ls) { return true; }
- finally { jj_save(8, xla); }
- }
-
- private boolean jj_3R_174() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_189()) jj_scanpos = xsp;
- if (jj_scan_token(CONTAINS)) return true;
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- if (true) { jj_la = 0; jj_scanpos = jj_lastpos; return false;}
- return false;
- }
-
- private boolean jj_3R_209() {
- if (jj_3R_208()) return true;
- return false;
- }
-
- private boolean jj_3R_208() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_scan_token(18)) {
- jj_scanpos = xsp;
- if (jj_scan_token(22)) {
- jj_scanpos = xsp;
- if (jj_scan_token(23)) return true;
- }
- }
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- private boolean jj_3R_186() {
- if (jj_scan_token(S)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_209()) jj_scanpos = xsp;
- return false;
- }
-
- private boolean jj_3R_171() {
- if (jj_3R_181()) return true;
- if (jj_scan_token(COLON)) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- if (jj_3R_182()) return true;
- xsp = jj_scanpos;
- if (jj_3R_183()) jj_scanpos = xsp;
- if (jj_3R_184()) return true;
- return false;
- }
-
- private boolean jj_3R_185() {
- if (jj_3R_208()) return true;
- return false;
- }
-
- private boolean jj_3R_172() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_185()) {
- jj_scanpos = xsp;
- if (jj_3R_186()) return true;
- }
- return false;
- }
-
- private boolean jj_3R_260() {
- if (jj_scan_token(HASH)) return true;
- return false;
- }
-
- private boolean jj_3R_277() {
- if (jj_scan_token(IDENT)) return true;
- return false;
- }
-
- private boolean jj_3R_278() {
- if (jj_scan_token(FUNCTION)) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- if (true) { jj_la = 0; jj_scanpos = jj_lastpos; return false;}
- return false;
- }
-
- private boolean jj_3_7() {
- if (jj_3R_178()) return true;
- return false;
- }
-
- private boolean jj_3R_196() {
- if (jj_scan_token(LBRACE)) return true;
- return false;
- }
-
- private boolean jj_3R_276() {
- if (jj_scan_token(COLON)) return true;
- return false;
- }
-
- private boolean jj_3R_263() {
- if (jj_scan_token(COLON)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_276()) jj_scanpos = xsp;
- xsp = jj_scanpos;
- if (jj_3R_277()) {
- jj_scanpos = xsp;
- if (jj_3R_278()) return true;
- }
- return false;
- }
-
- private boolean jj_3R_195() {
- if (jj_3R_182()) return true;
- return false;
- }
-
- private boolean jj_3_6() {
- if (jj_3R_177()) return true;
- if (jj_scan_token(LBRACE)) return true;
- return false;
- }
-
- private boolean jj_3R_178() {
- if (jj_3R_194()) return true;
- if (jj_scan_token(COLON)) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- xsp = jj_scanpos;
- if (jj_3R_195()) {
- jj_scanpos = xsp;
- if (jj_3R_196()) return true;
- }
- return false;
- }
-
- private boolean jj_3R_266() {
- if (jj_3R_182()) return true;
- return false;
- }
-
- private boolean jj_3R_207() {
- if (true) { jj_la = 0; jj_scanpos = jj_lastpos; return false;}
- return false;
- }
-
- private boolean jj_3R_243() {
- if (jj_scan_token(SEMICOLON)) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- private boolean jj_3R_252() {
- if (jj_scan_token(FUNCTION)) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- xsp = jj_scanpos;
- if (jj_3R_266()) jj_scanpos = xsp;
- if (jj_scan_token(RPARAN)) return true;
- return false;
- }
-
- private boolean jj_3R_206() {
- Token xsp;
- if (jj_3R_243()) return true;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3R_243()) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- private boolean jj_3R_184() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_206()) {
- jj_scanpos = xsp;
- if (jj_3R_207()) return true;
- }
- return false;
- }
-
- private boolean jj_3R_288() {
- if (jj_scan_token(STRING)) return true;
- return false;
- }
-
- private boolean jj_3R_286() {
- if (jj_scan_token(STARMATCH)) return true;
- return false;
- }
-
- private boolean jj_3R_287() {
- if (jj_scan_token(IDENT)) return true;
- return false;
- }
-
- private boolean jj_3R_285() {
- if (jj_scan_token(DOLLARMATCH)) return true;
- return false;
- }
-
- private boolean jj_3R_238() {
- if (jj_3R_256()) return true;
- return false;
- }
-
- private boolean jj_3R_284() {
- if (jj_scan_token(CARETMATCH)) return true;
- return false;
- }
-
- private boolean jj_3R_237() {
- if (jj_3R_255()) return true;
- return false;
- }
-
- private boolean jj_3R_283() {
- if (jj_scan_token(DASHMATCH)) return true;
- return false;
- }
-
- private boolean jj_3R_236() {
- if (jj_3R_254()) return true;
- return false;
- }
-
- private boolean jj_3R_282() {
- if (jj_scan_token(INCLUDES)) return true;
- return false;
- }
-
- private boolean jj_3R_268() {
- if (jj_scan_token(INTERPOLATION)) return true;
- return false;
- }
-
- private boolean jj_3R_281() {
- if (jj_scan_token(EQ)) return true;
- return false;
- }
-
- private boolean jj_3R_275() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_281()) {
- jj_scanpos = xsp;
- if (jj_3R_282()) {
- jj_scanpos = xsp;
- if (jj_3R_283()) {
- jj_scanpos = xsp;
- if (jj_3R_284()) {
- jj_scanpos = xsp;
- if (jj_3R_285()) {
- jj_scanpos = xsp;
- if (jj_3R_286()) return true;
- }
- }
- }
- }
- }
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- xsp = jj_scanpos;
- if (jj_3R_287()) {
- jj_scanpos = xsp;
- if (jj_3R_288()) return true;
- }
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- private boolean jj_3R_262() {
- if (jj_scan_token(LBRACKET)) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- if (jj_scan_token(IDENT)) return true;
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- xsp = jj_scanpos;
- if (jj_3R_275()) jj_scanpos = xsp;
- if (jj_scan_token(RBRACKET)) return true;
- return false;
- }
-
- private boolean jj_3R_175() {
- if (jj_scan_token(COMMA)) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- private boolean jj_3R_280() {
- if (jj_scan_token(INTERPOLATION)) return true;
- return false;
- }
-
- private boolean jj_3R_246() {
- if (jj_scan_token(PARENT)) return true;
- return false;
- }
-
- private boolean jj_3R_245() {
- if (jj_scan_token(ANY)) return true;
- return false;
- }
-
- private boolean jj_3_5() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_175()) jj_scanpos = xsp;
- if (jj_3R_176()) return true;
- return false;
- }
-
- private boolean jj_3R_259() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_267()) {
- jj_scanpos = xsp;
- if (jj_3R_268()) return true;
- }
- return false;
- }
-
- private boolean jj_3R_267() {
- if (jj_scan_token(IDENT)) return true;
- return false;
- }
-
- private boolean jj_3R_210() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_244()) {
- jj_scanpos = xsp;
- if (jj_3R_245()) {
- jj_scanpos = xsp;
- if (jj_3R_246()) return true;
- }
- }
- return false;
- }
-
- private boolean jj_3R_244() {
- Token xsp;
- if (jj_3R_259()) return true;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3R_259()) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- private boolean jj_3R_253() {
- if (jj_scan_token(DOT)) return true;
- return false;
- }
-
- private boolean jj_3R_235() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_253()) jj_scanpos = xsp;
- xsp = jj_scanpos;
- if (jj_scan_token(72)) {
- jj_scanpos = xsp;
- if (jj_scan_token(49)) {
- jj_scanpos = xsp;
- if (jj_scan_token(50)) {
- jj_scanpos = xsp;
- if (jj_scan_token(52)) return true;
- }
- }
- }
- return false;
- }
-
- private boolean jj_3R_234() {
- if (jj_scan_token(STRING)) return true;
- return false;
- }
-
- private boolean jj_3R_233() {
- if (jj_3R_252()) return true;
- return false;
- }
-
- private boolean jj_3R_191() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_234()) {
- jj_scanpos = xsp;
- if (jj_3R_235()) {
- jj_scanpos = xsp;
- if (jj_3R_236()) {
- jj_scanpos = xsp;
- if (jj_3R_237()) {
- jj_scanpos = xsp;
- if (jj_3R_238()) return true;
- }
- }
- }
- }
- return false;
- }
-
- private boolean jj_3R_274() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_279()) {
- jj_scanpos = xsp;
- if (jj_3R_280()) return true;
- }
- return false;
- }
-
- private boolean jj_3R_279() {
- if (jj_scan_token(IDENT)) return true;
- return false;
- }
-
- private boolean jj_3R_261() {
- if (jj_scan_token(DOT)) return true;
- Token xsp;
- if (jj_3R_274()) return true;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3R_274()) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- private boolean jj_3R_232() {
- if (jj_scan_token(DIMEN)) return true;
- return false;
- }
-
- private boolean jj_3R_231() {
- if (jj_scan_token(KHZ)) return true;
- return false;
- }
-
- private boolean jj_3R_230() {
- if (jj_scan_token(HZ)) return true;
- return false;
- }
-
- private boolean jj_3R_250() {
- if (jj_3R_263()) return true;
- return false;
- }
-
- private boolean jj_3R_273() {
- if (jj_3R_263()) return true;
- return false;
- }
-
- private boolean jj_3R_229() {
- if (jj_scan_token(MS)) return true;
- return false;
- }
-
- private boolean jj_3R_271() {
- if (jj_3R_261()) return true;
- return false;
- }
-
- private boolean jj_3R_228() {
- if (jj_scan_token(SECOND)) return true;
- return false;
- }
-
- private boolean jj_3R_248() {
- if (jj_3R_261()) return true;
- return false;
- }
-
- private boolean jj_3R_227() {
- if (jj_scan_token(GRAD)) return true;
- return false;
- }
-
- private boolean jj_3R_226() {
- if (jj_scan_token(RAD)) return true;
- return false;
- }
-
- private boolean jj_3R_225() {
- if (jj_scan_token(DEG)) return true;
- return false;
- }
-
- private boolean jj_3R_224() {
- if (jj_scan_token(EXS)) return true;
- return false;
- }
-
- private boolean jj_3R_249() {
- if (jj_3R_262()) return true;
- return false;
- }
-
- private boolean jj_3R_272() {
- if (jj_3R_262()) return true;
- return false;
- }
-
- private boolean jj_3R_223() {
- if (jj_scan_token(REM)) return true;
- return false;
- }
-
- private boolean jj_3R_269() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_270()) {
- jj_scanpos = xsp;
- if (jj_3R_271()) {
- jj_scanpos = xsp;
- if (jj_3R_272()) {
- jj_scanpos = xsp;
- if (jj_3R_273()) return true;
- }
- }
- }
- return false;
- }
-
- private boolean jj_3R_270() {
- if (jj_3R_260()) return true;
- return false;
- }
-
- private boolean jj_3R_222() {
- if (jj_scan_token(LEM)) return true;
- return false;
- }
-
- private boolean jj_3R_221() {
- if (jj_scan_token(EMS)) return true;
- return false;
- }
-
- private boolean jj_3R_211() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_247()) {
- jj_scanpos = xsp;
- if (jj_3R_248()) {
- jj_scanpos = xsp;
- if (jj_3R_249()) {
- jj_scanpos = xsp;
- if (jj_3R_250()) return true;
- }
- }
- }
- return false;
- }
-
- private boolean jj_3R_247() {
- if (jj_3R_260()) return true;
- return false;
- }
-
- private boolean jj_3R_188() {
- Token xsp;
- if (jj_3R_211()) return true;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3R_211()) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- private boolean jj_3R_220() {
- if (jj_scan_token(PX)) return true;
- return false;
- }
-
- private boolean jj_3R_187() {
- if (jj_3R_210()) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3R_269()) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- private boolean jj_3R_219() {
- if (jj_scan_token(IN)) return true;
- return false;
- }
-
- private boolean jj_3R_173() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_187()) {
- jj_scanpos = xsp;
- if (jj_3R_188()) return true;
- }
- return false;
- }
-
- private boolean jj_3R_218() {
- if (jj_scan_token(PC)) return true;
- return false;
- }
-
- private boolean jj_3R_240() {
- if (jj_3R_208()) return true;
- if (jj_3R_173()) return true;
- return false;
- }
-
- private boolean jj_3R_217() {
- if (jj_scan_token(MM)) return true;
- return false;
- }
-
- private boolean jj_3R_216() {
- if (jj_scan_token(CM)) return true;
- return false;
- }
-
- private boolean jj_3R_215() {
- if (jj_scan_token(PT)) return true;
- return false;
- }
-
- private boolean jj_3R_214() {
- if (jj_scan_token(PERCENTAGE)) return true;
- return false;
- }
-
- private boolean jj_3R_198() {
- if (jj_3R_242()) return true;
- return false;
- }
-
- private boolean jj_3R_254() {
- if (jj_scan_token(HASH)) return true;
- return false;
- }
-
- private boolean jj_3R_213() {
- if (jj_scan_token(NUMBER)) return true;
- return false;
- }
-
- private boolean jj_3R_212() {
- if (jj_3R_251()) return true;
- return false;
- }
-
- private boolean jj_3R_190() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_212()) jj_scanpos = xsp;
- xsp = jj_scanpos;
- if (jj_3R_213()) {
- jj_scanpos = xsp;
- if (jj_3R_214()) {
- jj_scanpos = xsp;
- if (jj_3R_215()) {
- jj_scanpos = xsp;
- if (jj_3R_216()) {
- jj_scanpos = xsp;
- if (jj_3R_217()) {
- jj_scanpos = xsp;
- if (jj_3R_218()) {
- jj_scanpos = xsp;
- if (jj_3R_219()) {
- jj_scanpos = xsp;
- if (jj_3R_220()) {
- jj_scanpos = xsp;
- if (jj_3R_221()) {
- jj_scanpos = xsp;
- if (jj_3R_222()) {
- jj_scanpos = xsp;
- if (jj_3R_223()) {
- jj_scanpos = xsp;
- if (jj_3R_224()) {
- jj_scanpos = xsp;
- if (jj_3R_225()) {
- jj_scanpos = xsp;
- if (jj_3R_226()) {
- jj_scanpos = xsp;
- if (jj_3R_227()) {
- jj_scanpos = xsp;
- if (jj_3R_228()) {
- jj_scanpos = xsp;
- if (jj_3R_229()) {
- jj_scanpos = xsp;
- if (jj_3R_230()) {
- jj_scanpos = xsp;
- if (jj_3R_231()) {
- jj_scanpos = xsp;
- if (jj_3R_232()) {
- jj_scanpos = xsp;
- if (jj_3R_233()) return true;
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- return false;
- }
-
- private boolean jj_3R_176() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_190()) {
- jj_scanpos = xsp;
- if (jj_3R_191()) return true;
- }
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- private boolean jj_3R_255() {
- if (jj_scan_token(URL)) return true;
- return false;
- }
-
- private boolean jj_3_2() {
- if (jj_3R_172()) return true;
- if (jj_3R_173()) return true;
- return false;
- }
-
- private boolean jj_3R_242() {
- if (jj_3R_181()) return true;
- return false;
- }
-
- private boolean jj_3R_193() {
- if (jj_scan_token(COMMA)) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- if (jj_3R_192()) return true;
- return false;
- }
-
- private boolean jj_3R_239() {
- if (jj_3R_173()) return true;
- return false;
- }
-
- private boolean jj_3R_197() {
- if (jj_3R_176()) return true;
- return false;
- }
-
- private boolean jj_3R_192() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_239()) {
- jj_scanpos = xsp;
- if (jj_3R_240()) return true;
- }
- while (true) {
- xsp = jj_scanpos;
- if (jj_3_2()) { jj_scanpos = xsp; break; }
- }
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- private boolean jj_3R_179() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_197()) {
- jj_scanpos = xsp;
- if (jj_3R_198()) return true;
- }
- return false;
- }
-
- private boolean jj_3_9() {
- if (jj_3R_180()) return true;
- return false;
- }
-
- private boolean jj_3R_256() {
- if (jj_scan_token(UNICODERANGE)) return true;
- return false;
- }
-
- private boolean jj_3_4() {
- if (jj_3R_174()) return true;
- return false;
- }
-
- private boolean jj_3R_265() {
- if (jj_scan_token(PLUS)) return true;
- return false;
- }
-
- private boolean jj_3R_251() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_264()) {
- jj_scanpos = xsp;
- if (jj_3R_265()) return true;
- }
- return false;
- }
-
- private boolean jj_3R_264() {
- if (jj_scan_token(MINUS)) return true;
- return false;
- }
-
- private boolean jj_3R_177() {
- if (jj_3R_192()) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3R_193()) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- private boolean jj_3_8() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_9()) jj_scanpos = xsp;
- if (jj_3R_179()) return true;
- return false;
- }
-
- private boolean jj_3_1() {
- if (jj_3R_171()) return true;
- return false;
- }
-
- private boolean jj_3R_182() {
- if (jj_3R_179()) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3_8()) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- private boolean jj_3R_204() {
- if (jj_scan_token(MINUS)) return true;
- Token xsp;
- if (jj_scan_token(1)) return true;
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- private boolean jj_3_3() {
- if (jj_3R_171()) return true;
- return false;
- }
-
- private boolean jj_3R_203() {
- if (jj_scan_token(PLUS)) return true;
- Token xsp;
- if (jj_scan_token(1)) return true;
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- private boolean jj_3R_258() {
- if (jj_scan_token(INTERPOLATION)) return true;
- return false;
- }
-
- private boolean jj_3R_202() {
- if (jj_scan_token(MOD)) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- private boolean jj_3R_201() {
- if (jj_scan_token(ANY)) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- private boolean jj_3R_200() {
- if (jj_scan_token(DIV)) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- private boolean jj_3R_199() {
- if (jj_scan_token(COMMA)) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- private boolean jj_3R_180() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_199()) {
- jj_scanpos = xsp;
- if (jj_3R_200()) {
- jj_scanpos = xsp;
- if (jj_3R_201()) {
- jj_scanpos = xsp;
- if (jj_3R_202()) {
- jj_scanpos = xsp;
- if (jj_3R_203()) {
- jj_scanpos = xsp;
- if (jj_3R_204()) return true;
- }
- }
- }
- }
- }
- return false;
- }
-
- private boolean jj_3R_181() {
- if (jj_scan_token(VARIABLE)) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- private boolean jj_3R_241() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_257()) {
- jj_scanpos = xsp;
- if (jj_3R_258()) return true;
- }
- return false;
- }
-
- private boolean jj_3R_257() {
- if (jj_scan_token(IDENT)) return true;
- return false;
- }
-
- private boolean jj_3R_194() {
- Token xsp;
- if (jj_3R_241()) return true;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3R_241()) { jj_scanpos = xsp; break; }
- }
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- private boolean jj_3R_205() {
- if (jj_scan_token(GUARDED_SYM)) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- private boolean jj_3R_183() {
- if (jj_3R_205()) return true;
- return false;
- }
-
- private boolean jj_3R_189() {
- if (jj_scan_token(VARIABLE)) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- if (jj_scan_token(COLON)) return true;
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- /** Generated Token Manager. */
- public ParserTokenManager token_source;
- /** Current token. */
- public Token token;
- /** Next token. */
- public Token jj_nt;
- private int jj_ntk;
- private Token jj_scanpos, jj_lastpos;
- private int jj_la;
- private int jj_gen;
- final private int[] jj_la1 = new int[264];
- static private int[] jj_la1_0;
- static private int[] jj_la1_1;
- static private int[] jj_la1_2;
- static private int[] jj_la1_3;
- static {
- jj_la1_init_0();
- jj_la1_init_1();
- jj_la1_init_2();
- jj_la1_init_3();
- }
- private static void jj_la1_init_0() {
- jj_la1_0 = new int[] {0x0,0x302,0x302,0x0,0x300,0x2,0x2,0x2,0x200000,0xd4c40000,0x0,0x300,0x2,0x300,0x2,0x0,0x2,0x200000,0x2,0x2,0x0,0x0,0x2,0x2,0x0,0x0,0x2,0x0,0x2,0x100000,0x2,0x0,0x2,0x2,0xd4c40000,0xd4c40000,0x2,0x2,0x2,0xd4fd1500,0x2,0xd4fd1500,0x2,0x2,0x0,0x0,0x2,0x0,0x200000,0x2,0x0,0x2,0x2,0x2,0x2,0x0,0x200000,0x2,0x0,0x2,0x391500,0xc40000,0xc40002,0xc40000,0x2,0x2,0x80120002,0x80120002,0x2,0x0,0x0,0x2,0x2,0x2,0x2,0xd4c40000,0xd4c40000,0x2,0x100000,0x2,0xd4c40000,0x2,0x84000000,0x84000000,0x84000000,0x84000000,0xd4000000,0x0,0x0,0x0,0x0,0x50000000,0x2,0x2,0x3f000,0x2,0x0,0x2,0x3f000,0x0,0x2,0x0,0x2,0x0,0x0,0xd4c40000,0x0,0x134e0002,0x2,0xd4c40000,0xd4c40000,0x2,0x0,0x2,0x134e0002,0x0,0x2,0xd4c40000,0xd4c40000,0x2,0x134e0002,0x2,0x2,0x2,0x0,0x2,0xd4c40000,0x2,0x2,0x100000,0x2,0x2,0x2,0x2,0x0,0x2,0xd4c40000,0xd4c40000,0x2,0x100000,0x2,0x0,0x2,0x2,0x100000,0x0,0x0,0x800c0000,0x2,0x0,0x100000,0x2,0x800c0000,0x2,0x0,0x800c0000,0x2,0x2,0x0,0x400,0x2,0x200000,0x200000,0x2,0xd4c40000,0xd4c40000,0x2,0x2,0x2,0x0,0x2,0x0,0x2,0x2,0x2,0x100000,0x2,0x2,0x2,0x2,0x2,0x0,0x2,0x2,0x2,0x100000,0x2,0x2,0x2,0x0,0x2,0x2,0x2,0x100000,0x2,0x2,0x0,0x2,0x0,0x2,0x2,0x2,0x100000,0x0,0x2,0x200000,0x2,0x200000,0x0,0x2,0x2,0x2,0x2,0x200000,0x2,0x2,0x0,0x200000,0x2,0x0,0x2,0x0,0xd4c40000,0x2,0x0,0x2,0x0,0x200000,0x2,0x0,0x2,0x800c0400,0x2,0x0,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x321c0000,0xc0000,0x800c0000,0xc0000,0x0,0x80000000,0x0,0x80000000,0x800c0000,0x2,0x2,0x800c0000,0x2,0xd4c40000,0x2,0x2,0x2,0x0,0x200000,0x2,0x0,0x2,};
- }
- private static void jj_la1_init_1() {
- jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x566000c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x0,0x0,0x120000,0x120000,0x0,0x120000,0x0,0x0,0x0,0x120000,0x0,0x0,0x564000c0,0x564000c0,0x0,0x0,0x0,0x60001c0,0x0,0x60001c0,0x0,0x0,0x0,0x40,0x0,0x80,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0xc2,0xc2,0x0,0x80,0x80,0x0,0x0,0x0,0x0,0x564000c0,0x564000c0,0x0,0x0,0x0,0xc0,0x0,0x40,0x40,0x40,0x40,0xc0,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x50000000,0x64000c0,0x50000000,0x3f,0x0,0x564000c0,0x564000c0,0x0,0x80000000,0x0,0x3f,0x0,0x0,0x564000c0,0x564000c0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0x564000c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x564000c0,0x564000c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x40,0x160040,0x0,0x40,0x0,0x0,0x160040,0x0,0x40,0x160000,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x61200c0,0x61200c0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x6000000,0x0,0x0,0x0,0x0,0x60000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x6000000,0xc0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x160000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x160000,0x0,0x0,0x0,0x160000,0x160000,0x160000,0x0,0x0,0x160000,0x0,0x60000c0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,};
- }
- private static void jj_la1_init_2() {
- jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x1000,0x0,0x0,0x0,0x0,0x880,0x0,0x0,0x0,0x0,0x100,0x100,0x0,0x0,0x2008,0x2008,0x0,0x2000,0x0,0x0,0x0,0x2000,0x0,0x0,0x1119,0x1119,0x0,0x0,0x0,0x2b88,0x0,0x2b88,0x0,0x0,0x100,0x0,0x0,0x100,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x100,0x0,0x2a80,0x0,0x0,0x0,0x0,0x0,0x380,0x380,0x0,0x100,0x100,0x0,0x0,0x0,0x0,0x1119,0x1119,0x0,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x100,0x100,0x100,0x100,0x100,0x100,0x0,0x0,0x0,0x0,0x180,0x0,0x0,0x0,0x0,0x100,0x0,0x40,0x0,0x109,0x1000,0x1300,0x0,0x1109,0x1109,0x0,0x0,0x0,0x1300,0x20,0x0,0x1109,0x1109,0x0,0x1300,0x0,0x0,0x0,0x1100,0x0,0x1109,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x1109,0x1109,0x0,0x0,0x0,0x1000,0x0,0x0,0x0,0x1000,0x1000,0xfffffb80,0x0,0x0,0x0,0x0,0xfffffb80,0x0,0x0,0xfffffb80,0x0,0x0,0x1100,0x0,0x0,0x0,0x0,0x0,0x2100,0x2100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x100,0x0,0x0,0x100,0x0,0x0,0x0,0x100,0x0,0x0,0x100,0x0,0xfffffb80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffffb80,0x0,0xffffe200,0x0,0x100,0x980,0xffffeb80,0x0,0x0,0xfffffb80,0x0,0x100,0x0,0x0,0x0,0x100,0x0,0x0,0x100,0x0,};
- }
- private static void jj_la1_init_3() {
- jj_la1_3 = new int[] {0x8,0x80,0x80,0x2,0x80,0x0,0x0,0x0,0x0,0x75,0x0,0x80,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc5,0xc5,0x0,0x0,0x0,0xc401bf,0x0,0xc401bf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc401be,0x0,0x0,0x0,0x0,0x0,0x400000,0x400000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc7,0xc7,0x0,0x0,0x0,0x1,0x0,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x400000,0x0,0x0,0x0,0x45,0x80,0x200000,0x0,0xe5,0xe5,0x0,0x0,0x0,0x200000,0x0,0x0,0xe5,0xe5,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc5,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x400000,0x0,0xf5,0xf5,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x440001,0x0,0x0,0x0,0x0,0x440001,0x0,0x0,0x440001,0x0,0x0,0x400000,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x380000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x440001,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x440001,0x0,0x400000,0x0,0x0,0x40001,0x440001,0x0,0x0,0x440001,0x0,0x37,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
- }
- final private JJCalls[] jj_2_rtns = new JJCalls[9];
- private boolean jj_rescan = false;
- private int jj_gc = 0;
-
- /** Constructor with user supplied CharStream. */
- public Parser(CharStream stream) {
- token_source = new ParserTokenManager(stream);
- token = new Token();
- jj_ntk = -1;
- jj_gen = 0;
- for (int i = 0; i < 264; i++) jj_la1[i] = -1;
- for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
- }
-
- /** Reinitialise. */
- public void ReInit(CharStream stream) {
- token_source.ReInit(stream);
- token = new Token();
- jj_ntk = -1;
- jj_gen = 0;
- for (int i = 0; i < 264; i++) jj_la1[i] = -1;
- for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
- }
-
- /** Constructor with generated Token Manager. */
- public Parser(ParserTokenManager tm) {
- token_source = tm;
- token = new Token();
- jj_ntk = -1;
- jj_gen = 0;
- for (int i = 0; i < 264; i++) jj_la1[i] = -1;
- for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
- }
-
- /** Reinitialise. */
- public void ReInit(ParserTokenManager tm) {
- token_source = tm;
- token = new Token();
- jj_ntk = -1;
- jj_gen = 0;
- for (int i = 0; i < 264; i++) jj_la1[i] = -1;
- for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
- }
-
- private Token jj_consume_token(int kind) throws ParseException {
- Token oldToken;
- if ((oldToken = token).next != null) token = token.next;
- else token = token.next = token_source.getNextToken();
- jj_ntk = -1;
- if (token.kind == kind) {
- jj_gen++;
- if (++jj_gc > 100) {
- jj_gc = 0;
- for (int i = 0; i < jj_2_rtns.length; i++) {
- JJCalls c = jj_2_rtns[i];
- while (c != null) {
- if (c.gen < jj_gen) c.first = null;
- c = c.next;
- }
- }
- }
- return token;
- }
- token = oldToken;
- jj_kind = kind;
- throw generateParseException();
- }
-
- static private final class LookaheadSuccess extends java.lang.Error { }
- final private LookaheadSuccess jj_ls = new LookaheadSuccess();
- private boolean jj_scan_token(int kind) {
- if (jj_scanpos == jj_lastpos) {
- jj_la--;
- if (jj_scanpos.next == null) {
- jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
- } else {
- jj_lastpos = jj_scanpos = jj_scanpos.next;
- }
- } else {
- jj_scanpos = jj_scanpos.next;
- }
- if (jj_rescan) {
- int i = 0; Token tok = token;
- while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
- if (tok != null) jj_add_error_token(kind, i);
- }
- if (jj_scanpos.kind != kind) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
- return false;
- }
-
-
-/** Get the next Token. */
- final public Token getNextToken() {
- if (token.next != null) token = token.next;
- else token = token.next = token_source.getNextToken();
- jj_ntk = -1;
- jj_gen++;
- return token;
- }
-
-/** Get the specific Token. */
- final public Token getToken(int index) {
- Token t = token;
- for (int i = 0; i < index; i++) {
- if (t.next != null) t = t.next;
- else t = t.next = token_source.getNextToken();
- }
- return t;
- }
-
- private int jj_ntk() {
- if ((jj_nt=token.next) == null)
- return (jj_ntk = (token.next=token_source.getNextToken()).kind);
- else
- return (jj_ntk = jj_nt.kind);
- }
-
- private java.util.List<int[]> jj_expentries = new java.util.ArrayList<int[]>();
- private int[] jj_expentry;
- private int jj_kind = -1;
- private int[] jj_lasttokens = new int[100];
- private int jj_endpos;
-
- private void jj_add_error_token(int kind, int pos) {
- if (pos >= 100) return;
- if (pos == jj_endpos + 1) {
- jj_lasttokens[jj_endpos++] = kind;
- } else if (jj_endpos != 0) {
- jj_expentry = new int[jj_endpos];
- for (int i = 0; i < jj_endpos; i++) {
- jj_expentry[i] = jj_lasttokens[i];
- }
- jj_entries_loop: for (java.util.Iterator<?> it = jj_expentries.iterator(); it.hasNext();) {
- int[] oldentry = (int[])(it.next());
- if (oldentry.length == jj_expentry.length) {
- for (int i = 0; i < jj_expentry.length; i++) {
- if (oldentry[i] != jj_expentry[i]) {
- continue jj_entries_loop;
- }
- }
- jj_expentries.add(jj_expentry);
- break jj_entries_loop;
- }
- }
- if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
- }
- }
-
- /** Generate ParseException. */
- public ParseException generateParseException() {
- jj_expentries.clear();
- boolean[] la1tokens = new boolean[120];
- if (jj_kind >= 0) {
- la1tokens[jj_kind] = true;
- jj_kind = -1;
- }
- for (int i = 0; i < 264; i++) {
- if (jj_la1[i] == jj_gen) {
- for (int j = 0; j < 32; j++) {
- if ((jj_la1_0[i] & (1<<j)) != 0) {
- la1tokens[j] = true;
- }
- if ((jj_la1_1[i] & (1<<j)) != 0) {
- la1tokens[32+j] = true;
- }
- if ((jj_la1_2[i] & (1<<j)) != 0) {
- la1tokens[64+j] = true;
- }
- if ((jj_la1_3[i] & (1<<j)) != 0) {
- la1tokens[96+j] = true;
- }
- }
- }
- }
- for (int i = 0; i < 120; i++) {
- if (la1tokens[i]) {
- jj_expentry = new int[1];
- jj_expentry[0] = i;
- jj_expentries.add(jj_expentry);
- }
- }
- jj_endpos = 0;
- jj_rescan_token();
- jj_add_error_token(0, 0);
- int[][] exptokseq = new int[jj_expentries.size()][];
- for (int i = 0; i < jj_expentries.size(); i++) {
- exptokseq[i] = jj_expentries.get(i);
- }
- return new ParseException(token, exptokseq, tokenImage);
- }
-
- /** Enable tracing. */
- final public void enable_tracing() {
- }
-
- /** Disable tracing. */
- final public void disable_tracing() {
- }
-
- private void jj_rescan_token() {
- jj_rescan = true;
- for (int i = 0; i < 9; i++) {
- try {
- JJCalls p = jj_2_rtns[i];
- do {
- if (p.gen > jj_gen) {
- jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
- switch (i) {
- case 0: jj_3_1(); break;
- case 1: jj_3_2(); break;
- case 2: jj_3_3(); break;
- case 3: jj_3_4(); break;
- case 4: jj_3_5(); break;
- case 5: jj_3_6(); break;
- case 6: jj_3_7(); break;
- case 7: jj_3_8(); break;
- case 8: jj_3_9(); break;
- }
- }
- p = p.next;
- } while (p != null);
- } catch(LookaheadSuccess ls) { }
- }
- jj_rescan = false;
- }
-
- private void jj_save(int index, int xla) {
- JJCalls p = jj_2_rtns[index];
- while (p.gen > jj_gen) {
- if (p.next == null) { p = p.next = new JJCalls(); break; }
- p = p.next;
- }
- p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
- }
-
- static final class JJCalls {
- int gen;
- Token first;
- int arg;
- JJCalls next;
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/Parser.jj b/theme-compiler/src/com/vaadin/sass/internal/parser/Parser.jj
deleted file mode 100644
index e52ad18223..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/parser/Parser.jj
+++ /dev/null
@@ -1,3139 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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.
- */
-/* -*-java-extended-*-
- * Copyright (c) 1999 World Wide Web Consortium
- * (Massachusetts Institute of Technology, Institut National de Recherche
- * en Informatique et en Automatique, Keio University).
- * All Rights Reserved. http://www.w3.org/Consortium/Legal/
- *
- * $Id: Parser.jj,v 1.15 2000/10/27 21:09:37 plehegar Exp $
- */
-
-options {
- IGNORE_CASE = true;
- STATIC = false;
- USER_CHAR_STREAM = true;
- /* DEBUG_TOKEN_MANAGER = true;
- DEBUG_PARSER = true; */
-}
-
-PARSER_BEGIN(Parser)
-
-package com.vaadin.sass.internal.parser;
-
-import java.io.*;
-import java.net.*;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Locale;
-import java.util.Map;
-import java.util.UUID;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.w3c.css.sac.ConditionFactory;
-import org.w3c.css.sac.Condition;
-import org.w3c.css.sac.SelectorFactory;
-import org.w3c.css.sac.SelectorList;
-import org.w3c.css.sac.Selector;
-import org.w3c.css.sac.SimpleSelector;
-import org.w3c.css.sac.DocumentHandler;
-import org.w3c.css.sac.InputSource;
-import org.w3c.css.sac.ErrorHandler;
-import org.w3c.css.sac.CSSException;
-import org.w3c.css.sac.CSSParseException;
-import org.w3c.css.sac.Locator;
-import org.w3c.css.sac.LexicalUnit;
-
-import org.w3c.flute.parser.selectors.SelectorFactoryImpl;
-import org.w3c.flute.parser.selectors.ConditionFactoryImpl;
-
-import org.w3c.flute.util.Encoding;
-
-import com.vaadin.sass.internal.handler.*;
-
-import com.vaadin.sass.internal.tree.*;
-
-/**
- * A CSS2 parser
- *
- * @author Philippe Le H�garet
- * @version $Revision: 1.15 $
- */
-public class Parser implements org.w3c.css.sac.Parser {
-
- // replaces all \t, \n, etc with this StringBuffer.
- static final StringBuilder SPACE = new StringBuilder(" ");
-
- // the document handler for the parser
- protected SCSSDocumentHandlerImpl documentHandler;
- // the error handler for the parser
- protected ErrorHandler errorHandler;
- // the input source for the parser
- protected InputSource source;
-
- protected ConditionFactory conditionFactory;
- protected SelectorFactory selectorFactory;
-
- // temporary place holder for pseudo-element ...
- private String pseudoElt;
-
- /**
- * Creates a new Parser
- */
- public Parser() {
- this((CharStream) null);
- }
-
- /**
- * @@TODO
- * @exception CSSException Not yet implemented
- */
- public void setLocale(Locale locale) throws CSSException {
- throw new CSSException(CSSException.SAC_NOT_SUPPORTED_ERR);
- }
-
- public InputSource getInputSource(){
- return source;
- }
-
- /**
- * Set the document handler for this parser
- */
- public void setDocumentHandler(DocumentHandler handler) {
- this.documentHandler = (SCSSDocumentHandlerImpl) handler;
- }
-
- public void setSelectorFactory(SelectorFactory selectorFactory) {
- this.selectorFactory = selectorFactory;
- }
-
- public void setConditionFactory(ConditionFactory conditionFactory) {
- this.conditionFactory = conditionFactory;
- }
-
- /**
- * Set the error handler for this parser
- */
- public void setErrorHandler(ErrorHandler error) {
- this.errorHandler = error;
- }
-
- /**
- * Main parse methods
- *
- * @param source the source of the style sheet.
- * @exception IOException the source can't be parsed.
- * @exception CSSException the source is not CSS valid.
- */
- public void parseStyleSheet(InputSource source)
- throws CSSException, IOException {
- this.source = source;
- ReInit(getCharStreamWithLurk(source));
- if (selectorFactory == null) {
- selectorFactory = new SelectorFactoryImpl();
- }
- if (conditionFactory == null) {
- conditionFactory = new ConditionFactoryImpl();
- }
-
- parserUnit();
- }
-
- /**
- * Convenient method for URIs.
- *
- * @param systemId the fully resolved URI of the style sheet.
- * @exception IOException the source can't be parsed.
- * @exception CSSException the source is not CSS valid.
- */
- public void parseStyleSheet(String systemId)
- throws CSSException, IOException {
- parseStyleSheet(new InputSource(systemId));
- }
-
- /**
- * This method parses only one rule (style rule or at-rule, except @charset).
- *
- * @param source the source of the rule.
- * @exception IOException the source can't be parsed.
- * @exception CSSException the source is not CSS valid.
- */
- // TODO required by original parser but not used by Vaadin?
- public void parseRule(InputSource source)
- throws CSSException, IOException {
- this.source = source;
- ReInit(getCharStreamWithLurk(source));
-
- if (selectorFactory == null) {
- selectorFactory = new SelectorFactoryImpl();
- }
- if (conditionFactory == null) {
- conditionFactory = new ConditionFactoryImpl();
- }
- _parseRule();
- }
-
- /**
- * This method parses a style declaration (including the surrounding curly
- * braces).
- *
- * @param source the source of the style declaration.
- * @exception IOException the source can't be parsed.
- * @exception CSSException the source is not CSS valid.
- */
- public void parseStyleDeclaration(InputSource source)
- throws CSSException, IOException {
- this.source = source;
- ReInit(getCharStreamWithLurk(source));
-
- if (selectorFactory == null) {
- selectorFactory = new SelectorFactoryImpl();
- }
- if (conditionFactory == null) {
- conditionFactory = new ConditionFactoryImpl();
- }
- _parseDeclarationBlock();
- }
-
- /**
- * This methods returns "http://www.w3.org/TR/REC-CSS2".
- * @return the string "http://www.w3.org/TR/REC-CSS2".
- */
- public String getParserVersion() {
- return "http://www.w3.org/TR/REC-CSS2";
- }
-
- /**
- * Parse methods used by DOM Level 2 implementation.
- */
- public void parseImportRule(InputSource source)
- throws CSSException, IOException {
- this.source = source;
- ReInit(getCharStreamWithLurk(source));
-
- if (selectorFactory == null) {
- selectorFactory = new SelectorFactoryImpl();
- }
- if (conditionFactory == null) {
- conditionFactory = new ConditionFactoryImpl();
- }
- _parseImportRule();
- }
-
- public void parseMediaRule(InputSource source)
- throws CSSException, IOException {
- this.source = source;
- ReInit(getCharStreamWithLurk(source));
-
- if (selectorFactory == null) {
- selectorFactory = new SelectorFactoryImpl();
- }
- if (conditionFactory == null) {
- conditionFactory = new ConditionFactoryImpl();
- }
- _parseMediaRule();
- }
-
- public SelectorList parseSelectors(InputSource source)
- throws CSSException, IOException {
- this.source = source;
- ReInit(getCharStreamWithLurk(source));
-
- return null;
- }
-
- public LexicalUnit parsePropertyValue(InputSource source)
- throws CSSException, IOException {
- this.source = source;
- ReInit(getCharStreamWithLurk(source));
-
- return expr();
- }
-
- public boolean parsePriority(InputSource source)
- throws CSSException, IOException {
- this.source = source;
- ReInit(getCharStreamWithLurk(source));
-
- return prio();
- }
-
- /**
- * Convert the source into a Reader. Used only by DOM Level 2 parser methods.
- */
- private Reader getReader(InputSource source) throws IOException {
- if (source.getCharacterStream() != null) {
- return source.getCharacterStream();
- } else if (source.getByteStream() != null) {
- // My DOM level 2 implementation doesn't use this case.
- if (source.getEncoding() == null) {
- // unknown encoding, use ASCII as default.
- return new InputStreamReader(source.getByteStream(), "ASCII");
- } else {
- return new InputStreamReader(source.getByteStream(),
- source.getEncoding());
- }
- } else {
- // systemId
- // @@TODO
- throw new CSSException("not yet implemented");
- }
- }
-
- /**
- * Convert the source into a CharStream with encoding informations.
- * The encoding can be found in the InputSource or in the CSS document.
- * Since this method marks the reader and make a reset after looking for
- * the charset declaration, you'll find the charset declaration into the
- * stream.
- */
- private CharStream getCharStreamWithLurk(InputSource source)
- throws CSSException, IOException {
- if (source.getCharacterStream() != null) {
- // all encoding are supposed to be resolved by the user
- // return the reader
- return new Generic_CharStream(source.getCharacterStream(), 1, 1);
- } else if (source.getByteStream() == null) {
- // @@CONTINUE ME. see also getReader() with systemId
- try {
- source.setByteStream(new URL(source.getURI()).openStream());
- } catch (Exception e) {
- try {
- source.setByteStream(new FileInputStream(source.getURI()));
- } catch (IOException ex) {
- throw new CSSException("invalid url ?");
- }
- }
- }
- //use UTF-8 as the default encoding.
- String encoding = source.getEncoding();
- InputStream input = source.getByteStream();
- if (!input.markSupported()) {
- // If mark is not supported, wrap it in a stream which supports mark
- input = new BufferedInputStream(input);
- source.setByteStream(input);
- }
- // Mark either the original stream or the wrapped stream
- input.mark(100);
- if(encoding == null){
- encoding = "ASCII";
-
- char c = ' ';
-
- c = (char) input.read();
-
- if (c == '@') {
- // hum, is it a charset ?
- int size = 100;
- byte[] buf = new byte[size];
- input.read(buf, 0, 7);
- String keyword = new String(buf, 0, 7);
- if (keyword.equals("charset")) {
- // Yes, this is the charset declaration !
-
- // here I don't use the right declaration : white space are ' '.
- while ((c = (char) input.read()) == ' ') {
- // find the first quote
- }
- char endChar = c;
- int i = 0;
-
- if ((endChar != '"') && (endChar != '\'')) {
- // hum this is not a quote.
- throw new CSSException("invalid charset declaration");
- }
-
- while ((c = (char) input.read()) != endChar) {
- buf[i++] = (byte) c;
- if (i == size) {
- byte[] old = buf;
- buf = new byte[size + 100];
- System.arraycopy(old, 0, buf, 0, size);
- size += 100;
- }
- }
- while ((c = (char) input.read()) == ' ') {
- // find the next relevant character
- }
- if (c != ';') {
- // no semi colon at the end ?
- throw new CSSException("invalid charset declaration: "
- + "missing semi colon");
- }
- encoding = new String(buf, 0, i);
- if (source.getEncoding() != null) {
- // compare the two encoding informations.
- // For example, I don't accept to have ASCII and after UTF-8.
- // Is it really good ? That is the question.
- if (!encoding.equals(source.getEncoding())) {
- throw new CSSException("invalid encoding information.");
- }
- }
- } // else no charset declaration available
- }
- }
- // ok set the real encoding of this source.
- source.setEncoding(encoding);
- // set the real reader of this source.
- source.setCharacterStream(new InputStreamReader(source.getByteStream(),
- Encoding.getJavaEncoding(encoding)));
- // reset the stream (leave the charset declaration in the stream).
- input.reset();
-
- return new Generic_CharStream(source.getCharacterStream(), 1, 1);
- }
-
- private LocatorImpl currentLocator;
- private Locator getLocator() {
- if (currentLocator == null) {
- currentLocator = new LocatorImpl(this);
- return currentLocator;
- }
- return currentLocator.reInit(this);
- }
- private LocatorImpl getLocator(Token save) {
- if (currentLocator == null) {
- currentLocator = new LocatorImpl(this, save);
- return currentLocator;
- }
- return currentLocator.reInit(this, save);
- }
-
- private void reportError(Locator l, Exception e) {
- if (errorHandler != null) {
- if (e instanceof ParseException) {
- // construct a clean error message.
- ParseException pe = (ParseException) e;
- if (pe.specialConstructor) {
- StringBuffer errorM = new StringBuffer();
- if (pe.currentToken != null) {
- errorM.append("encountered \"")
- .append(pe.currentToken.next);
- }
- errorM.append('"');
- if (pe.expectedTokenSequences.length != 0) {
- errorM.append(". Was expecting one of: ");
- for (int i = 0; i < pe.expectedTokenSequences.length; i++) {
- for (int j = 0; j < pe.expectedTokenSequences[i].length; j++) {
- int kind = pe.expectedTokenSequences[i][j];
- if (kind != S) {
- errorM.append(pe.tokenImage[kind]);
- errorM.append(' ');
- }
- }
- }
- }
- errorHandler.error(new CSSParseException(errorM.toString(),
- l, e));
- } else {
- errorHandler.error(new CSSParseException(e.getMessage(),
- l, e));
- }
- } else if (e == null) {
- errorHandler.error(new CSSParseException("error", l, null));
- } else {
- errorHandler.error(new CSSParseException(e.getMessage(), l, e));
- }
- }
- }
-
- private void reportWarningSkipText(Locator l, String text) {
- if (errorHandler != null && text != null) {
- errorHandler.warning(new CSSParseException("Skipping: " + text, l));
- }
- }
-}
-
-PARSER_END(Parser)
-
-/*
- * The tokenizer
- */
-
-<DEFAULT>
-TOKEN :
-{
- < S : ( [ " ", "\t" , "\n" , "\r", "\f" ] )+ >
- { image = Parser.SPACE; }
-}
-
-/*
- * for fixing #11638: Ending an imported SCSS file with a comment causes an error in the Sass.
- * now the single line comment is parsed as special token, before, they were simply skipped.
- * solution got from http://www.engr.mun.ca/~theo/JavaCC-FAQ/javacc-faq-moz.htm#tth_sEc3.15
- */
-<DEFAULT>
-SPECIAL_TOKEN : {
-< SINGLE_LINE_COMMENT: "//"(~["\n","\r"])* ("\n"|"\r"|"\r\n")? > }
-
-<DEFAULT>
-MORE :
-{
- <"/**" ~["/"]> { input_stream.backup(1); } : IN_FORMAL_COMMENT
-|
- "/*" : IN_MULTI_LINE_COMMENT
-}
-<IN_FORMAL_COMMENT>
-SPECIAL_TOKEN :
-{
- <FORMAL_COMMENT: "*/" > : DEFAULT
-}
-
-<IN_MULTI_LINE_COMMENT>
-SKIP :
-{
- <MULTI_LINE_COMMENT: "*/" > : DEFAULT
-}
-
-<IN_FORMAL_COMMENT,IN_MULTI_LINE_COMMENT>
-MORE :
-{
- < ~[] >
-}
-
-<DEFAULT>
-TOKEN :
-{
- < CDO : "<!--" >
- | < CDC : "-->" >
- | < LBRACE : "{" >
- | < RBRACE : "}">
- | < DASHMATCH : "|=" >
- | < CARETMATCH : "^=" >
- | < DOLLARMATCH : "$=" >
- | < STARMATCH : "*=" >
- | < INCLUDES : "~=" >
- | < EQ : "=" >
- | < PLUS : "+" >
- | < MINUS : "-" >
- | < COMMA : "," >
- | < SEMICOLON : ";" >
- | < PRECEDES : ">" >
- | < SIBLING : "~" >
- | < SUCCEEDS : "<" >
- | < DIV : "/" >
- | < LBRACKET : "[" >
- | < RBRACKET : "]" >
- | < ANY : "*" >
- | < MOD : "%" >
- | < PARENT : "&" >
- | < DOT : "." >
- | < LPARAN : "(" >
- | < RPARAN : ")">
- | < COMPARE : "==" >
- | < OR : "||" >
- | < AND : "&&" >
- | < NOT_EQ : "!=" >
-}
-
-<DEFAULT>
-TOKEN :
-{
- < COLON : ":" >
-}
-
-< DEFAULT >
-TOKEN :
-{
- < INTERPOLATION : "#{"< VARIABLE > "}">
-}
-
-<DEFAULT>
-TOKEN : /* basic tokens */
-{
- < NONASCII : ["\200"-"\377"] >
- | < #H : ["0"-"9", "a"-"f"] >
- | < #UNICODE : "\\" <H> ( <H> )? /* I can't say {1,6} */
- ( <H> )? ( <H> )?
- ( <H> )? ( <H> )?
- ( [ " ", "\t" , "\n" , "\r", "\f" ] )? >
- | < #ESCAPE : <UNICODE> | ( "\\" [ " "-"~","\200"-"\377" ] ) >
- | < #NMSTART : ("-")?[ "a"-"z","_"] | <NONASCII> | <ESCAPE> >
- | < #NMCHAR : ["a"-"z", "0"-"9", "-", "_"] | <NONASCII> | <ESCAPE> >
- | < #STRINGCHAR : [ "\t"," ","!","#","$","%","&","("-"~" ]
- | "\\\n" | "\\\r\n" | "\\\r" | "\\\f"
- | <NONASCII> | <ESCAPE> >
- | < #D : ["0"-"9"] >
- | < #NAME : ( <NMCHAR> )+ >
-
-}
-
-<DEFAULT>
-TOKEN :
-{
- <TO : "to">
- |<THROUGH : "through">
- |<EACH_IN : "in">
- |<FROM : "from">
-}
-
-/* DERECTIVES */
-<DEFAULT>
-TOKEN :
-{
- <MIXIN_SYM : "@mixin">
- | <INCLUDE_SYM : "@include">
- | <FUNCTION_SYM : "@function">
- | <RETURN_SYM : "@return">
- | <DEBUG_SYM : "@debug">
- | <WARN_SYM : "@warn">
- | <FOR_SYM : "@for">
- | <EACH_SYM : "@each">
- | <WHILE_SYM : "@while">
- | <IF_SYM : "@if">
- | <ELSE_SYM : "@else">
- | <EXTEND_SYM : "@extend">
- | <MOZ_DOCUMENT_SYM : "@-moz-document">
- | <SUPPORTS_SYM : "@supports">
- | <CONTENT_SYM : "@content">
-}
-
-< DEFAULT >
-TOKEN:
-{
- < MICROSOFT_RULE : "filter"|"-ms-filter" >
-}
-
-< DEFAULT >
-TOKEN:
-{
- < IF : "if" >
-}
-
-<DEFAULT>
-TOKEN:
-{
- < GUARDED_SYM : "!" ( <S> )? "default">
-}
-
-<DEFAULT>
-TOKEN :
-{
- < STRING : ( "\"" ( <STRINGCHAR> | "'" )* "\"" ) |
- ( "'" ( <STRINGCHAR> | "\"" )* "'" ) >
- | < IDENT : <NMSTART> ( <NMCHAR> )* >
- | < NUMBER : ( <D> )+ | ( <D> )* "." ( <D> )+ >
- | < #_URL : [ "!","#","$","%","&","*"-"~" ] | <NONASCII> | <ESCAPE> >
- | < URL : "url(" ( <S> )*
- ( <STRING> | ( <_URL> )* ) ( <S> )* ")" >
-}
-
-<DEFAULT>
-TOKEN:
-{
- < VARIABLE : "$" <IDENT>>
-}
-
-<DEFAULT>
-TOKEN :
-{
- < PERCENTAGE : <NUMBER> "%" >
- | < PT : <NUMBER> "pt" >
- | < MM : <NUMBER> "mm" >
- | < CM : <NUMBER> "cm" >
- | < PC : <NUMBER> "pc" >
- | < IN : <NUMBER> "in" >
- | < PX : <NUMBER> "px" >
- | < EMS : <NUMBER> "em" >
- | < LEM : <NUMBER> "lem" >
- | < REM : <NUMBER> "rem" >
- | < EXS : <NUMBER> "ex" >
- | < DEG : <NUMBER> "deg" >
- | < RAD : <NUMBER> "rad" >
- | < GRAD : <NUMBER> "grad" >
- | < MS : <NUMBER> "ms" >
- | < SECOND : <NUMBER> "s" >
- | < HZ : <NUMBER> "Hz" >
- | < KHZ : <NUMBER> "kHz" >
- | < DIMEN : <NUMBER> <IDENT> >
-}
-
-<DEFAULT>
-TOKEN :
-{
- < HASH : "#" <NAME> >
-}
-
-/* RESERVED ATRULE WORDS */
-<DEFAULT>
-TOKEN :
-{
- < IMPORT_SYM : "@import">
- | < MEDIA_SYM : "@media" >
- | < CHARSET_SYM : "@charset" >
- | < PAGE_SYM : "@page" >
- | < FONT_FACE_SYM: "@font-face" >
- | < KEY_FRAME_SYM: "@keyframes" | "@-moz-keyframes" | "@-o-keyframes" | "@-webkit-keyframes" | "@-ms-keyframes">
- | < ATKEYWORD : "@" <IDENT> >
-}
-
-<DEFAULT>
-TOKEN :
-{
- < IMPORTANT_SYM : "!" ( <S> )? "important" >
-}
-
-<DEFAULT>
-TOKEN :
-{
- < #RANGE0 : <H> <H> <H> <H> <H> >
- | < #RANGE1 : <H> <H> <H> <H> <H> ( "?" )? >
- | < #RANGE2 : <H> <H> <H> <H> ( "?" )? ( "?" )? >
- | < #RANGE3 : <H> <H> <H> ( "?" )? ( "?" )? ( "?" )? >
- | < #RANGE4 : <H> <H> ( "?" )? ( "?" )? ( "?" )? ( "?" )? >
- | < #RANGE5 : <H> ( "?" )? ( "?" )? ( "?" )? ( "?" )? ( "?" )? >
- | < #RANGE6 : "?" ( "?" )? ( "?" )? ( "?" )? ( "?" )? ( "?" )? >
- | < #RANGE : <RANGE0> | <RANGE1> | <RANGE2>
- | <RANGE3> | <RANGE4> | <RANGE5> | <RANGE6> >
- | < #UNI : <H> ( <H> )? ( <H> )? ( <H> )? ( <H> )? ( <H> )? >
- | < UNICODERANGE : "U+" <RANGE>
- | "U+" <UNI> "-" <UNI> >
-}
-
-< DEFAULT >
-TOKEN :
-{
- < REMOVE : "remove" (< S >)? "(" >
- | < APPEND : "append" (< S >)? "(" >
- | < CONTAINS : "contains" (< S >)? "(" >
-}
-
-<DEFAULT>
-TOKEN :
-{
- < FUNCTION : <IDENT>(< S >)* "(" >
-}
-
-<DEFAULT, IN_MULTI_LINE_COMMENT>
-TOKEN :
-{ /* avoid token manager error */
- < UNKNOWN : ~[] >
-}
-
-/*
- * The grammar of CSS2
- */
-
-/**
- * The main entry for the parser.
- *
- * @exception ParseException exception during the parse
- */
-void parserUnit() :
-{}
-{
- try {
- { documentHandler.startDocument(source); }
- ( charset() )?
- ( <S> comments()
- | ignoreStatement() )*
- ( importDeclaration() ( ignoreStatement() ( <S> )* )* )*
- afterImportDeclaration()
- <EOF>
- } finally {
- documentHandler.endDocument(source);
- }
-}
-
-void charset() :
-{ Token n; }
-{
- try {
- <CHARSET_SYM> ( <S> )* n=<STRING> ( <S> )* (";" | acceptMissingSemicolon(EOF))
- } catch (ParseException e) {
- reportError(getLocator(e.currentToken.next), e);
- skipStatement();
- // reportWarningSkipText(getLocator(), skipStatement());
- } catch (Exception e) {
- reportError(getLocator(), e);
- skipStatement();
- // reportWarningSkipText(getLocator(), skipStatement());
- }
-}
-
-void afterImportDeclaration() :
-{String ret;
- Locator l;
-}
-{
- (
- ( debuggingDirective() | mixinDirective() | controlDirective() | includeDirective() | styleRule() | media()
- | page() | fontFace() | keyframes() | LOOKAHEAD(variable()) variable() | listModifyDirective()
- | { l = getLocator(); } ret=skipStatement()
- {
- if ((ret == null) || (ret.length() == 0)) {
- return;
- }
- if (ret.charAt(0) == '@') {
- documentHandler.unrecognizedRule(ret);
- } else {
- reportWarningSkipText(l, ret);
- }
- }
- )
- ( ignoreStatement() ( <S> )* )* )*
-}
-
-void ignoreStatement() :
-{}
-{
- <CDO> | <CDC> | atRuleDeclaration()
-}
-
-/**
- * The import statement
- *
- * @exception ParseException exception during the parse
- */
-void importDeclaration() :
-{Token n;
- String uri;
- MediaListImpl ml = new MediaListImpl();
- boolean isURL = false;
-}
-{
- try {
- <IMPORT_SYM>
- ( <S> )* ( n=<STRING> { uri = convertStringIndex(n.image, 1,
- n.image.length() -1); }
- | n=<URL>
- {
- isURL=true;
- uri = n.image.substring(4, n.image.length()-1).trim();
- if ((uri.charAt(0) == '"')
- || (uri.charAt(0) == '\'')) {
- uri = uri.substring(1, uri.length()-1);
- }
- }
- )
- ( <S> )* mediaStatement(ml) (";" | acceptMissingSemicolon(RBRACE, EOF))
- ( <S> )*
- {
- if (ml.getLength() == 0) {
- // see section 6.3 of the CSS2 recommandation.
- ml.addItem("all");
- }
- documentHandler.importStyle(uri, ml, isURL);
- }
- } catch (ParseException e) {
- reportError(getLocator(), e);
- skipStatement();
- // reportWarningSkipText(getLocator(), skipStatement());
- }
-}
-
-/**
- * @exception ParseException exception during the parse
- */
-void keyframes() :
-{
- Token n;
- boolean start = false;
- String keyframeName = null;
- String animationname = "";
-}
-{
- try {
- n=<KEY_FRAME_SYM> ( <S> )* {keyframeName = n.image;}
- (n = <IDENT>{animationname += n.image; }|n = < INTERPOLATION >{ animationname += n.image; })+(<S>)*
- {start = true; documentHandler.startKeyFrames(keyframeName, animationname); }
- <LBRACE> ( <S> )* ( keyframeSelector() | contentDirective() )* <RBRACE> ( <S> )*
- } catch (ParseException e) {
- reportError(getLocator(), e);
- skipStatement();
- } finally {
- if (start) {
- documentHandler.endKeyFrames();
- }
- }
-}
-
-void keyframeSelector():
-{
- Token n;
- String selector = "";
- boolean start = false;
-}
-{
- try{
- (n = <FROM> | n = <TO> | n = <PERCENTAGE>){selector += n.image;} (<S>)*
- (<COMMA> (<S>)* (n = <FROM> | n = <TO> | n = <PERCENTAGE>) {selector += (", " + n.image);} (<S>)* )*
- <LBRACE> (<S>)*
- {
- start = true;
- documentHandler.startKeyframeSelector(selector);
- }
- (ifContentStatement() | microsoftExtension() )*
- <RBRACE> (<S>)*
- }
- catch (ThrowedParseException e) {
- if (errorHandler != null) {
- LocatorImpl li = new LocatorImpl(this,
- e.e.currentToken.next.beginLine,
- e.e.currentToken.next.beginColumn-1);
- reportError(li, e.e);
- }
- } catch (ParseException e) {
- reportError(getLocator(), e);
- skipStatement();
- // reportWarningSkipText(getLocator(), skipStatement());
- } catch (TokenMgrError e) {
- reportWarningSkipText(getLocator(), skipStatement());
- } finally {
- if (start) {
- documentHandler.endKeyframeSelector();
- }
- }
-}
-
-/**
- * @exception ParseException exception during the parse
- */
-/* see http://www.w3.org/TR/css3-mediaqueries/ */
-void media() :
-{
- boolean start = false;
- String ret;
- MediaListImpl ml = new MediaListImpl();
-}
-{
- try {
- <MEDIA_SYM> ( <S> )*
- mediaStatement(ml)
- { start = true; documentHandler.startMedia(ml); }
- <LBRACE> ( <S> )* ( mediaDirective() )* <RBRACE> ( <S> )*
- } catch (ParseException e) {
- reportError(getLocator(), e);
- skipStatement();
- // reportWarningSkipText(getLocator(), skipStatement());
- } finally {
- if (start) {
- documentHandler.endMedia(ml);
- }
- }
-}
-
-void mediaDirective() :
-{}
-{
- debuggingDirective() | styleRule() | skipUnknownRule() | contentDirective()
-}
-
-void mediaStatement(MediaListImpl ml) :
-{
- Token t;
-}
-{
- {
- t = getToken(1);
- // loop over comma separated parts, add each to ml
- while ((t.kind != LBRACE) && (t.kind != EOF) && (t.kind != SEMICOLON)) {
- StringBuffer s = new StringBuffer();
- s.append(getToken(0).image);
- while ((t.kind != COMMA) && (t.kind != LBRACE) && (t.kind != EOF) && (t.kind != SEMICOLON)) {
- s.append(t.image);
- getNextToken();
- t = getToken(1);
- }
- if (t.kind == COMMA) {
- // skip the comma and the token before it that is still the active token
- getNextToken();
- getNextToken();
- t = getToken(1);
- }
- String str = s.toString().trim();
- if (str.length() > 0) {
- ml.addItem(str);
- }
- }
- }
-}
-
-/**
- * @exception ParseException exception during the parse
- */
-String medium() : /* tv, projection, screen, ... */
-{Token n;}
-{
- n=<IDENT> { return convertIdent(n.image); }
-}
-
-/**
- * @exception ParseException exception during the parse
- */
-void page() :
-{
- boolean start = false;
- Token n = null;
- String page = null;
- String pseudo = null;
-}
-{
- try {
- <PAGE_SYM> ( <S> )* ( n=<IDENT> ( <S> )* )?
- ( pseudo=pseudo_page() )?
- {
- if (n != null) {
- page = convertIdent(n.image);
- }
- }
- <LBRACE> (<S>)*
- {
- start = true;
- documentHandler.startPage(page, pseudo);
- }
- ( declaration() )? ( ";" ( <S> )* ( declaration() )? )*
- <RBRACE> (<S>)*
- } catch (ParseException e) {
- if (errorHandler != null) {
- LocatorImpl li = new LocatorImpl(this,
- e.currentToken.next.beginLine,
- e.currentToken.next.beginColumn-1);
- reportError(li, e);
- skipStatement();
- // reportWarningSkipText(li, skipStatement());
- } else {
- skipStatement();
- }
- } finally {
- if (start) {
- documentHandler.endPage(page, pseudo);
- }
- }
-}
-
-String pseudo_page() :
-{ Token n; }
-{
- ":" n=<IDENT> ( <S> )* { return convertIdent(n.image); }
-}
-
-void fontFace() :
-{
- boolean start = false;
-}
-{
- try {
- <FONT_FACE_SYM> ( <S> )*
- <LBRACE> (<S>)*
- { start = true; documentHandler.startFontFace(); }
- ( declaration() )? ( ";" ( <S> )* ( declaration() )? )*
- <RBRACE> (<S>)*
- } catch (ParseException e) {
- reportError(getLocator(), e);
- skipStatement();
- // reportWarningSkipText(getLocator(), skipStatement());
- } finally {
- if (start) {
- documentHandler.endFontFace();
- }
- }
-}
-
-/**
- * @exception ParseException exception during the parse
- */
-void atRuleDeclaration() :
-{Token n;
- String ret;
-}
-{
- n=<ATKEYWORD>
- {
- ret=skipStatement();
- if ((ret != null) && (ret.charAt(0) == '@')) {
- documentHandler.unrecognizedRule(ret);
- } else {
- reportWarningSkipText(getLocator(), ret);
- }
- }
-}
-
-void skipUnknownRule() :
-{ Token n;}
-{
- ( n=<ATKEYWORD>
-| n=<CDO>
-| n=<CHARSET_SYM>
-| n=<COMMA>
-| n=<DASHMATCH>
-| n=<FONT_FACE_SYM>
-| n=<FUNCTION>
-| n=<IMPORTANT_SYM>
-| n=<IMPORT_SYM>
-| n=<INCLUDES>
-| n=<LBRACE>
-| n=<MEDIA_SYM>
-| n=<NONASCII>
-| n=<NUMBER>
-| n=<PAGE_SYM>
-| n=<PERCENTAGE>
-| n=<STRING>
-| n=<UNICODERANGE>
-| n=<URL>
-| n=";"
-| n="-"
-| n=<UNKNOWN>
- ) {
- String ret;
- Locator loc = getLocator();
- ret=skipStatement();
- if ((ret != null) && (n.image.charAt(0) == '@')) {
- documentHandler.unrecognizedRule(ret);
- } else {
- reportWarningSkipText(loc, ret);
- }
- }
-}
-
-/**
- * @exception ParseException exception during the parse
- */
-char combinator() :
-{
-char connector = ' ';
-}
-{
- (connector = combinatorChar()
- | <S> (connector = combinatorChar())?) { return connector; }
-}
-
-/**to refactor combinator and reuse in selector().*/
-char combinatorChar() :
-{Token t;}
-{
- (t = <PLUS> | t = <PRECEDES> | t = <SIBLING>) (<S>)*
- {
- return t.image.charAt(0);
- }
-}
-
-void microsoftExtension() :
-{
- Token n;
- String name = "";
- String value = "";
-}
-
-{
- // This is not really taking the syntax of filter rules into account
- n = < MICROSOFT_RULE > (< S >)* { name = n.image; }
- < COLON >
- ((n = < IDENT > { value += n.image; })
- | (n = < NUMBER > { value += n.image; })
- | (n = < STRING > { value += n.image; })
- | (n = < COMMA > { value += n.image; })
- | (n = < INTERPOLATION > { value += n.image; })
- | (n = < COLON > { value += n.image; })
- | (n = < FUNCTION > { value += n.image; })
- | (n = < RPARAN > { value += n.image; })
- | (n = < EQ > { value += n.image; })
- | (n = < DOT > { value += n.image; })
- | (n = < S > { if(value.lastIndexOf(' ') != value.length()-1)
- { value += n.image; } }
- ) )+
- < SEMICOLON >
- (< S >)*
- { documentHandler.microsoftDirective(name, value); }
-}
-
-/**
- * @exception ParseException exception during the parse
- */
-String property() :
-{Token t;String s = "";
-}
-{
- (t = <IDENT>{s += t.image; }|t = < INTERPOLATION >{ s += t.image; })+(< S >)*
- {
- return s;
- }
-}
-
-String variableName() :
-{Token n;}
-{
- n=<VARIABLE> (<S>)* {return convertIdent(n.image.substring(1));}
-}
-
-String functionName() :
-{Token n;}
-{
- n=<FUNCTION> ( <S> )* {return convertIdent(n.image.substring(0, n.image.length()-1));}
-}
-/**
- * @exception ParseException exception during the parse
- */
-void styleRule() :
-{
- boolean start = false;
- ArrayList<String> l = null;
- Token save;
- Locator loc;
-}
-{
- try {
- l=selectorList() { save = token; } <LBRACE> (<S>)*
- {
- start = true;
- documentHandler.startSelector(l);
- }
- // a CSS import here will not work
- ( ifContentStatement() | microsoftExtension() | importDeclaration() )*
- <RBRACE> (<S>)*
- } catch (ThrowedParseException e) {
- if (errorHandler != null) {
- LocatorImpl li = new LocatorImpl(this,
- e.e.currentToken.next.beginLine,
- e.e.currentToken.next.beginColumn-1);
- reportError(li, e.e);
- }
- } catch (ParseException e) {
- reportError(getLocator(), e);
- skipStatement();
- // reportWarningSkipText(getLocator(), skipStatement());
- } catch (TokenMgrError e) {
- reportWarningSkipText(getLocator(), skipStatement());
- } finally {
- if (start) {
- documentHandler.endSelector();
- }
- }
-}
-
- ArrayList<String> selectorList() :
-{
- ArrayList<String> selectors = new ArrayList<String>();
- String selector;
-}
-{
- selector=selector() ( <COMMA> (<S>)* { selectors.add(selector); }
- selector=selector() )*
- { selectors.add(selector);
- return selectors;
- }
-}
-
-/**
- * @exception ParseException exception during the parse
- */
-String selector() :
-{
- String selector = null;
- char comb;
-}
-{
- try {
- // the selector can begin either a simple_selector, or a combinatorChar(+, >, ~).
- // when beginning with combinatorChar, the next one should be a simple_selector().
- (selector=simple_selector(null, ' ') | (comb=combinatorChar() selector=simple_selector(selector, comb)))
- ( LOOKAHEAD(2) comb=combinator()
- selector=simple_selector(selector, comb) )* (<S>)*
- {
- return selector;
- }
- } catch (ParseException e) {
- /*
- Token t = getToken(1);
- StringBuffer s = new StringBuffer();
- s.append(getToken(0).image);
- while ((t.kind != COMMA) && (t.kind != SEMICOLON)
- && (t.kind != LBRACE) && (t.kind != EOF)) {
- s.append(t.image);
- getNextToken();
- t = getToken(1);
- }
- reportWarningSkipText(getLocator(), s.toString());
- */
- Token t = getToken(1);
- while ((t.kind != COMMA) && (t.kind != SEMICOLON)
- && (t.kind != LBRACE) && (t.kind != EOF)) {
- getNextToken();
- t = getToken(1);
- }
-
- throw new ThrowedParseException(e);
- }
-}
-
-/**
- * @exception ParseException exception during the parse
- */
-String simple_selector(String selector, char comb) :
-{
- String simple_current = null;
- String cond = null;
-
- pseudoElt = null;
-}
-{
- ( (simple_current=element_name()
- ( cond=hash(cond) | cond=_class(cond)
- | cond=attrib(cond) | cond=pseudo(cond) )* )
- | ( cond = hash(cond) | cond=_class(cond)
- | cond=attrib(cond) | cond=pseudo(cond) )+
- )
- {
- if (simple_current == null) {
- simple_current = "";
- }
- if (cond != null) {
- simple_current = simple_current + cond;
- }
- StringBuilder builder = new StringBuilder();
- switch (comb) {
- case ' ':
- if(selector!=null){
- builder.append(selector).append(" ");
- }
- break;
- case '+':
- case '>':
- case '~':
- if(selector!=null){
- builder.append(selector).append(" ");
- }
- builder.append(comb).append(" ");
- break;
- default:
- throw new ParseException("invalid state. send a bug report");
- }
- builder.append(simple_current);
- selector = builder.toString();
-
- if (pseudoElt != null) {
- selector = selector + pseudoElt;
- }
- return selector;
- }
-}
-
-/**
- * @exception ParseException exception during the parse
- */
-String _class(String pred) :
-{Token t;
-String s = ".";
-}
-{
- "." (t = <IDENT>{s += t.image; }|t = < INTERPOLATION >{ s += t.image; })+
- {
-
- if (pred == null) {
- return s;
- } else {
- return pred + s;
- }
- }
-}
-
-/**
- * @exception ParseException exception during the parse
- */
-String element_name() :
-{Token t; String s = "";}
-{
- (t = <IDENT>{s += t.image; }|t = < INTERPOLATION >{ s += t.image; })+
- {
- return s;
- }
- | "*"
- { return "*"; }
- | "&"
- { return "&"; }
-}
-
-/**
- * @exception ParseException exception during the parse
- */
-String attrib(String pred) :
-{
- int cases = 0;
- Token att = null;
- Token val = null;
- String attValue = null;
-}
-{
- "[" ( <S> )* att=<IDENT> ( <S> )*
- ( ( "=" { cases = 1; }
- | <INCLUDES> { cases = 2; }
- | <DASHMATCH> { cases = 3; }
- | <CARETMATCH> { cases = 4; }
- | <DOLLARMATCH> { cases = 5; }
- | <STARMATCH> { cases = 6; } ) ( <S> )*
- ( val=<IDENT> { attValue = val.image; }
- | val=<STRING> { attValue = val.image; }
- )
- ( <S> )* )?
- "]"
- {
- String name = convertIdent(att.image);
- String c;
- switch (cases) {
- case 0:
- c = name;
- break;
- case 1:
- c = name + "=" + attValue;
- break;
- case 2:
- c = name + "~=" + attValue;
- break;
- case 3:
- c = name + "|=" +attValue;
- break;
- case 4:
- c = name + "^=" +attValue;
- break;
- case 5:
- c = name + "$=" +attValue;
- break;
- case 6:
- c = name + "*=" +attValue;
- break;
- default:
- // never reached.
- c = null;
- }
- c = "[" + c + "]";
- if (pred == null) {
- return c;
- } else {
- return pred + c;
- }
- }
-}
-
-/**
- * @exception ParseException exception during the parse
- */
-String pseudo(String pred) :
-{Token n;
-Token param;
-String d;
-boolean isPseudoElement = false;
-}
-{
- ":" (":"{isPseudoElement=true;})?( n=<IDENT>
- {
- String s = ":" + convertIdent(n.image);
- if (isPseudoElement) {
- if (pseudoElt != null) {
- throw new CSSParseException("duplicate pseudo element definition "
- + s, getLocator());
- } else {
- pseudoElt = ":"+s;
- return pred;
- }
- } else {
- String c = s;
- if (pred == null) {
- return c;
- } else {
- return pred + c;
- }
- }
- }
- | ( n=<FUNCTION> ( <S> )* d=skipStatementUntilMatchingRightParan() <RPARAN>
- {
- // accept anything between function and a right parenthesis
- String f = convertIdent(n.image);
- String colons = isPseudoElement ? "::" : ":";
- String pseudofn = colons + f + d + ")";
- if (pred == null) {
- return pseudofn;
- } else {
- return pred + pseudofn;
- }
- }
- )
- )
-}
-
-/**
- * @exception ParseException exception during the parse
- */
-String hash(String pred) :
-{Token n; }
-{
- n=<HASH>
- {
- String d = n.image;
- if (pred == null) {
- return d;
- } else {
- return pred + d;
- }
- }
-}
-
-void variable() :
-{
- String name;
- LexicalUnitImpl exp = null;
- boolean guarded = false;
- String raw;
-}
-{
- try{
- name = variableName()
- ":" ( <S> )* exp=expr() ( guarded=guarded() )? semicolonTerminator()
- //raw=skipStatementUntilSemiColon()
- {
- exp = replaceNullValues(exp);
- documentHandler.variable(name, exp, guarded);
- }
- }catch (JumpException e) {
- skipAfterExpression();
- } catch (NumberFormatException e) {
- if (errorHandler != null) {
- errorHandler.error(new CSSParseException("Invalid number "
- + e.getMessage(),
- getLocator(),
- e));
- }
- reportWarningSkipText(getLocator(), skipAfterExpression());
- } catch (ParseException e) {
- if (errorHandler != null) {
- if (e.currentToken != null) {
- LocatorImpl li = new LocatorImpl(this,
- e.currentToken.next.beginLine,
- e.currentToken.next.beginColumn-1);
- reportError(li, e);
- } else {
- reportError(getLocator(), e);
- }
- skipAfterExpression();
- } else {
- skipAfterExpression();
- }
- }
-}
-
-JAVACODE
-LexicalUnitImpl replaceNullValues(LexicalUnitImpl unit) {
- if(unit == null){
- return null;
- }
- if (unit.getNextLexicalUnit() != null) {
- unit.setNextLexicalUnit(replaceNullValues(unit.getNextLexicalUnit()));
- }
- if (unit.getLexicalUnitType() == SCSSLexicalUnit.SAC_IDENT
- && "null".equals(unit.getStringValue())) {
- LexicalUnitImpl next = unit.getNextLexicalUnit();
- unit = LexicalUnitImpl.createNull(unit.getLineNumber(), unit.getColumnNumber(),
- unit.getPreviousLexicalUnit());
- unit.setNextLexicalUnit(next);
- }
- return unit;
-}
-
-void controlDirective() :
-{}
-{
- ifDirective() | eachDirective()
-}
-
-void ifContentStatement() :
-{}
-{
- contentDirective() | includeDirective() | media() | extendDirective() | styleRuleOrDeclarationOrNestedProperties()
- | keyframes() | LOOKAHEAD(variable()) variable() | listModifyDirective() | controlDirective() | atRuleDeclaration()
-}
-
-void ifDirective() :
-{
- Token n = null;
- String s = null;
- String evaluator = "";
-}
-{
- < IF_SYM >
- ( s = booleanExpressionToken() { evaluator += s;} )+
- < LBRACE >(< S >)*
- { documentHandler.startIfElseDirective();
- documentHandler.ifDirective(evaluator);
- }
- ( ifContentStatement() | fontFace() )*
- < RBRACE >(< S >)*
- (elseDirective())*
- { documentHandler.endIfElseDirective(); }
-}
-
-void elseDirective() :
-{
- String evaluator = "";
- Token n = null;
- String s = null;
-}
-{
- < ELSE_SYM >(< S >)*
- ( < IF > ( s = booleanExpressionToken() { evaluator += s; } )+ )?
- < LBRACE >(< S >)*
- { if(!evaluator.trim().equals("")){ documentHandler.ifDirective(evaluator); }
- else{ documentHandler.elseDirective(); }
- }
- ( ifContentStatement() | fontFace() )*
- < RBRACE >(< S >)*
-}
-
-String booleanExpressionToken() :
-{
- Token n = null;
- String s = null;
-}
-{
- (
- LOOKAHEAD(containsDirective())
- s = containsDirective()
- |n = < VARIABLE >
- |n = < IDENT >
- |n = < NUMBER >
- |n = < LPARAN >
- |n = < RPARAN >
- |n = < PLUS >
- |n = < MINUS >
- |n = < DIV >
- |n = < ANY >
- |n = < COMPARE >
- |n = < EQ >
- |n = < PRECEDES >
- |n = < SUCCEEDS >
- |n = < OR >
- |n = < AND >
- |n = < S >
- |n = < NOT_EQ >
-){
- if(n!=null){return n.image;}
- else{return s;}
- }
-}
-
-void eachDirective() :
-{
- Token var;
- ArrayList<String> list = null;
- String listVariable = null;
-}
-{
- < EACH_SYM >
- (< S >)*
- var = < VARIABLE > (< S >)* < EACH_IN > (< S >)*
- (list = stringList()
- {documentHandler.startEachDirective(var.image, list);}
- |listVariable = variableName()
- {documentHandler.startEachDirective(var.image, listVariable);}
- )
- < LBRACE >(< S >)*
- ( ifContentStatement() )*
- < RBRACE >(< S >)*
- { documentHandler.endEachDirective();}
-}
-
-ArrayList<String > stringList():
-{
- ArrayList<String > strings = new ArrayList<String >();
- Token input;
-}
-{
- (input = < IDENT > (< S >)*)
- { strings.add(input.image); }
-
- (< COMMA >(< S >)* input = < IDENT > { strings.add(input.image); } (< S >)*)*
- { return strings; }
-
-}
-
-void mixinDirective() :
-{
- String name;
- ArrayList<VariableNode> args = null;
- String body;
-}
-{
- <MIXIN_SYM>
- (<S>)*
- (name = property()
- |(name = functionName()
- args = arglist()) <RPARAN> (<S>)*) <LBRACE> (<S>)*
- {documentHandler.startMixinDirective(name, args);}
- ( ifContentStatement() | fontFace() | page())*
- <RBRACE>(<S>)*
- {documentHandler.endMixinDirective(name, args);}
-}
-
-ArrayList<VariableNode> arglist() :
-{
- ArrayList<VariableNode> args = new ArrayList<VariableNode>();
- VariableNode arg;
- boolean hasNonOptionalArgument = false;
-}
-{
- (arg=mixinArg() ( <COMMA> (<S>)* { hasNonOptionalArgument = checkMixinForNonOptionalArguments(arg, hasNonOptionalArgument); args.add(arg); }
- arg=mixinArg() )*
- { hasNonOptionalArgument = checkMixinForNonOptionalArguments(arg, hasNonOptionalArgument); args.add(arg); }
- )?
- {
- return args;
- }
-}
-
-JAVACODE
-boolean checkMixinForNonOptionalArguments(VariableNode arg, boolean hasNonOptionalArguments)
-{
- boolean currentArgHasArguments = arg.getExpr() != null && arg.getExpr().getLexicalUnitType() == LexicalUnitImpl.SCSS_VARIABLE && arg.getExpr().getNextLexicalUnit() != null;
-
- if(currentArgHasArguments)
- {
- if(hasNonOptionalArguments)
- {
- throw new ParseException("Sass Error: Required argument $"+ arg.getName() +" must come before any optional arguments.");
- }
- return hasNonOptionalArguments;
- }else
- {
- return true;
- }
-}
-
-VariableNode mixinArg() :
-{
- String name;
- Token variable = null;
- LexicalUnitImpl first = null;
- LexicalUnitImpl prev = null;
- LexicalUnitImpl next = null;
-}
-{
- name=variableName() (< COLON > (< S >)*
-
- (
- first = nonVariableTerm(null)
- {
- prev = first;
- }
- (LOOKAHEAD(3)(< COMMA >(< S >)*)? prev = nonVariableTerm(prev))*
- )
- | (variable = < VARIABLE >{ first = LexicalUnitImpl.createVariable(token.beginLine, token.beginColumn,
- prev, variable.image);}
-
- )
- )?
- {
- VariableNode arg = new VariableNode(name, first, false);
- return arg;
- }
-}
-
-ArrayList<LexicalUnitImpl> argValuelist() :
-{
- ArrayList<LexicalUnitImpl> args = new ArrayList<LexicalUnitImpl>();
- LexicalUnitImpl first = null;
- LexicalUnitImpl next = null;
- LexicalUnitImpl prev = null;
-}
-{
- (first = term(null) { args.add(first); prev = first;}((< COLON > (< S >)*)?next=term(prev){prev.setNextLexicalUnit(next); prev = next;})*
- ( <COMMA> (<S>)*
- first = term(null) { args.add(first); prev = first;}((< COLON > (< S >)*)?next=term(prev){prev.setNextLexicalUnit(next); prev = next;})*
- )*
- )?
- {return args;}
-}
-
-void includeDirective() :
-{
- String name;
- ArrayList<LexicalUnitImpl> args=null;
-}
-{
- <INCLUDE_SYM>
- (<S>)*
- (name = property() | name = variableName(){ name = "$"+name;}
- | (name = functionName() args = argValuelist()) <RPARAN>(<S>)*)
- {documentHandler.startInclude(name, args);}
- (includeDirectiveBlockContents() | semicolonTerminator())
- {documentHandler.endInclude();}
-}
-
-void semicolonTerminator():
-{}
-{
- (";"(<S>)*)+ | acceptMissingSemicolon(RBRACE, EOF)
-}
-
-JAVACODE
-void acceptMissingSemicolon(Integer... acceptedTerminators) throws ParseException {
- Token next = getToken(1);
- ArrayList<Integer> terminators = new ArrayList<Integer>(Arrays.asList(acceptedTerminators));
- if (!terminators.contains(next.kind)){
- String message = "encountered \"" + next.image + "\". Was expecting one of \";\"";
- for(int term : acceptedTerminators){
- message += ", " + tokenImage[term];
- }
- ParseException e = new ParseException(message);
- throw e;
- }
-}
-
-void includeDirectiveBlockContents():
-{}
-{
- <LBRACE> (<S>)*
- (styleRuleOrDeclarationOrNestedProperties() | keyframeSelector())*
- <RBRACE> (<S>)*
-}
-
-
-String interpolation() :
-{
- Token n;
-}
-{
- n = < INTERPOLATION >
- {
- return n.image;
- }
-}
-
-void listModifyDirective() :
-{
- String list = null;
- String remove = null;
- String separator = null;
- String variable = null;
- Token n = null;
- Token type = null;
-}
-{
- //refactor, remove those 3 LOOKAHEAD(5).
- n = < VARIABLE >{ variable = n.image; }(< S >)* ":" (< S >)*
- (type = < APPEND> | type = <REMOVE> | type=<CONTAINS> )(< S >)*
- (list = listModifyDirectiveArgs(0))
- (< RPARAN >)? < COMMA >(< S >)*
- (remove = listModifyDirectiveArgs(1))
- ( < COMMA >(< S >)* n = < IDENT >{ separator = n.image; } (< S >)*)?
- < RPARAN >
- {
- switch (type.kind) {
- case APPEND:
- documentHandler.appendDirective(variable,list,remove,separator);
- break;
- case REMOVE:
- documentHandler.removeDirective(variable,list,remove,separator);
- break;
- case CONTAINS:
- if(variable == null){
- variable = "$var_"+UUID.randomUUID();
- }
- documentHandler.containsDirective(variable,list,remove,separator);
- break;
- default:
- break;
- }
- }
- (< S >)*< SEMICOLON >(<S>)*
-}
-
-
-/**
- * @exception ParseException exception during the parse
- */
-void appendDirective() :
-{
- String list = null;
- String remove = null;
- String separator = null;
- String variable = null;
- Token n = null;
-}
-{
- n = < VARIABLE >{ variable = n.image; }(< S >)* ":" (< S >)*
- < APPEND >(< S >)*
- (list = listModifyDirectiveArgs(0))
- (< RPARAN >)? < COMMA >(< S >)*
- (remove = listModifyDirectiveArgs(1))
- ( < COMMA >(< S >)* n = < IDENT >{ separator = n.image; } (< S >)*)?
- < RPARAN >
-
- { documentHandler.appendDirective(variable,list,remove,separator); }
-}
-
-/**
- * @exception ParseException exception during the parse
- */
-void removeDirective() :
-{
- String list = null;
- String remove = null;
- String separator = null;
- String variable = null;
- Token n = null;
-}
-{
- n = < VARIABLE >{ variable = n.image; }(< S >)* ":" (< S >)*
- < REMOVE >(< S >)*
- (list = listModifyDirectiveArgs(0))
- (< RPARAN >)? < COMMA >(< S >)*
- (remove = listModifyDirectiveArgs(1))
- ( < COMMA >(< S >)* n = < IDENT >{ separator = n.image; } (< S >)*)?
- < RPARAN >
-
- { documentHandler.removeDirective(variable,list,remove,separator); }
-}
-
-/**
- * @exception ParseException exception during the parse
- */
-String containsDirective() :
-{
- String list = null;
- String remove = null;
- String separator = null;
- String variable = null;
- Token n = null;
-}
-{
- (n = < VARIABLE >{ variable = n.image; }(< S >)* ":" (< S >)*)?
- < CONTAINS >(< S >)*
- (list = listModifyDirectiveArgs(0))
- (< RPARAN >)? < COMMA >(< S >)*
- (remove = listModifyDirectiveArgs(1))
- ( < COMMA >(< S >)* n = < IDENT >{ separator = n.image; } (< S >)*)?
- < RPARAN >
-
- { /*
- *if it is not in the form like "$contains : contains($items, .v-button);"
- *for example in @if, like "@if (contains(a b c, b))", then create a temp
- *variable for contains(a b c, b);
- */
- if(variable == null){
- variable = "$var_"+UUID.randomUUID();
- }
- documentHandler.containsDirective(variable,list,remove,separator);
- return variable;
- }
-}
-
-JAVACODE
-String listModifyDirectiveArgs(int nest)
-{
- String list = "";
- int nesting = nest;
- Token t = null;
-
- while(true)
- {
- t = getToken(1);
- String s = t.image;
- if(t.kind == VARIABLE||t.kind == IDENT)
- {
- list += s;
- }else if(s.toLowerCase().equals("auto")||s.toLowerCase().equals("space")||s.toLowerCase().equals("comma"))
- {
- int i = 2;
- Token temp = getToken(i);
- boolean isLast = true;
- while(temp.kind != SEMICOLON)
- {
- if(temp.kind != RPARAN || temp.kind != S)
- {
- isLast = false;
- }
- i++;
- temp = getToken(i);
- }
-
- if(isLast)
- {
- return list;
- }
- }
- else if(t.kind == STRING)
- {
- list += s.substring(1,s.length()).substring(0,s.length()-2);
-
- }else if(t.kind == LPARAN)
- {
- nesting++;
- if(nesting > nest+1)
- {
- throw new CSSParseException("Only one ( ) pair per parameter allowed", getLocator());
- }
- }else if(t.kind == RPARAN)
- {
- nesting--;
- if(nesting == 0)
- {
- return list;
- }
- } else if(t.kind == COMMA)
- {
- if(nesting == nest)
- {
- return list;
- }else
- {
- list += ",";
- }
-
- }else if(t.kind == S)
- {
- list += " ";
- } else if(t.kind == LBRACE)
- {
- throw new CSSParseException("Invalid token,'{' found", getLocator());
- }
-
- getNextToken();
- }
-}
-
-Node returnDirective() :
-{
- String raw;
-}
-{
- raw = skipStatement()
- {return null;}
-}
-
-void debuggingDirective() :
-{}
-{
- debugDirective() | warnDirective()
-}
-
-void debugDirective() :
-{}
-{
- <DEBUG_SYM>
- {
- String content = skipStatementUntil(new int[] {SEMICOLON,RBRACE,EOF});
- // TODO should evaluate the content expression, call documentHandler.debugDirective() etc.
- Logger.getLogger(Parser.class.getName()).log(Level.INFO, content);
- }
- ( (";" (<S>)*) | acceptMissingSemicolon(RBRACE, EOF))
-}
-
-void warnDirective() :
-{}
-{
- <WARN_SYM>
- {
- String content = skipStatementUntil(new int[] {SEMICOLON,RBRACE,EOF});
- // TODO should evaluate the content expression, call documentHandler.warnDirective() etc.
- Logger.getLogger(Parser.class.getName()).log(Level.SEVERE, content);
- }
- ( (";" (<S>)*) | acceptMissingSemicolon(RBRACE, EOF))
-}
-
-Node forDirective() :
-{
- String var;
- String from;
- String to;
- boolean exclusive;
- String body;
- Token tok;
-}
-{
- var = variableName()
- {
- int[] toThrough = {TO, THROUGH};
- from = skipStatementUntil(toThrough);
- }
- (tok = <TO> {exclusive = true;}
- | tok = <THROUGH> {exclusive = false;})
- to = skipStatementUntilLeftBrace()
- (<S>)*
- body = skipStatement()
- {return documentHandler.forDirective(var, from, to, exclusive, body);}
-}
-
-Node whileDirective() :
-{
- String condition;
- String body;
-}
-{
- condition = skipStatementUntilLeftBrace()
- body = skipStatement()
- { return documentHandler.whileDirective(condition, body);}
-}
-
-void extendDirective() :
-{ArrayList<String> list;}
-{
- <EXTEND_SYM>
- (<S>)*
- list = selectorList()
- {documentHandler.extendDirective(list);}
- semicolonTerminator()
-}
-
-void contentDirective() :
-{}
-{
- <CONTENT_SYM>
- (<S>)*
- ( (";" (<S>)*) | acceptMissingSemicolon(RBRACE, EOF))
- {documentHandler.contentDirective();}
-}
-
-JAVACODE
-Node importDirective(){
- return null;
-}
-
-JAVACODE
-Node charsetDirective(){
- return null;
-}
-
-JAVACODE
-Node mozDocumentDirective(){
- return null;
-}
-
-JAVACODE
-Node supportsDirective(){
- return null;
-}
-
-
-void nestedProperties():
-{String name;
-LexicalUnit exp;}
-{
- name=property()
- ":" ( <S> )*
- <LBRACE> (<S>)*
- {
- documentHandler.startNestedProperties(name);
- }
- ( declaration() )? ( ";" ( <S> )* ( declaration() )? )*
- <RBRACE>
- {
- documentHandler.endNestedProperties(name);
- }
- (<S>)*
-}
-/**
- * @exception ParseException exception during the parse
- */
-void styleRuleOrDeclarationOrNestedProperties() :
-{
-}
-{
- try {
- // differentiate between the colon of a pseudo and the colon of nested properties and the colon of a simple property
- // first check if it is a normal styleRule, if not check if it is declarationOrNestedProperties(), if still fails, most likely, it is
- // is styleRule with pseudo selector with contains functions. have to do it in this way, because both the styleRule and declarationOrNestedProperties()
- // have 'skipStatementUntilXXX', which cannot be LOOKAHEAD properly.
- ( debuggingDirective() | LOOKAHEAD(selectorList()<LBRACE>) styleRule() | LOOKAHEAD(3)declarationOrNestedProperties() | styleRule())
- } catch (JumpException e) {
- skipAfterExpression();
- // reportWarningSkipText(getLocator(), skipAfterExpression());
- } catch (ParseException e) {
- if (errorHandler != null) {
- if (e.currentToken != null) {
- LocatorImpl li = new LocatorImpl(this,
- e.currentToken.next.beginLine,
- e.currentToken.next.beginColumn-1);
- reportError(li, e);
- } else {
- reportError(getLocator(), e);
- }
- skipAfterExpression();
- /*
- LocatorImpl loc = (LocatorImpl) getLocator();
- loc.column--;
- reportWarningSkipText(loc, skipAfterExpression());
- */
- } else {
- skipAfterExpression();
- }
- }
-}
-/**
- * @exception ParseException exception during the parse
- */
-void declarationOrNestedProperties() :
-{ boolean important = false;
- String name;
- LexicalUnitImpl exp;
- Token save;
- String comment = null;
-}
-{
- try {
- name=property()
- { save = token; }
- ":" ( <S> )*
- (exp=expr() ( important=prio() )?
- {
- Token next = getToken(1);
- if(next.kind == SEMICOLON || next.kind == RBRACE){
- while(next.kind == SEMICOLON){
- skipStatement();
- next = getToken(1);
- }
- //only add special token kept for sprites '/**'
- if(token.specialToken!=null && token.specialToken!=null && token.specialToken.image.startsWith("/**")){
- documentHandler.property(name, exp, important, token.specialToken.image);
- }else{
- documentHandler.property(name, exp, important, null);
- }
- }
- }
- |<LBRACE> (<S>)*
- {
- documentHandler.startNestedProperties(name);
- }
- ( declaration() )? ( ";" ( <S> )* ( declaration() )? )*
- <RBRACE>(<S>)*
- {
- documentHandler.endNestedProperties(name);
- }
- )
-
- } catch (JumpException e) {
- skipAfterExpression();
- // reportWarningSkipText(getLocator(), skipAfterExpression());
- } catch (NumberFormatException e) {
- if (errorHandler != null) {
- errorHandler.error(new CSSParseException("Invalid number "
- + e.getMessage(),
- getLocator(),
- e));
- }
- reportWarningSkipText(getLocator(), skipAfterExpression());
- } catch (ParseException e) {
- if (errorHandler != null) {
- if (e.currentToken != null) {
- LocatorImpl li = new LocatorImpl(this,
- e.currentToken.next.beginLine,
- e.currentToken.next.beginColumn-1);
- reportError(li, e);
- } else {
- reportError(getLocator(), e);
- }
- skipAfterExpression();
- /*
- LocatorImpl loc = (LocatorImpl) getLocator();
- loc.column--;
- reportWarningSkipText(loc, skipAfterExpression());
- */
- } else {
- skipAfterExpression();
- }
- }
-}
-
-/**
- * @exception ParseException exception during the parse
- */
-void declaration() :
-{ boolean important = false;
- String name;
- LexicalUnit exp;
- Token save;
-}
-{
- try {
- name=property()
- { save = token; }
- ":" ( <S> )* exp=expr() ( important=prio() )?
- {
- documentHandler.property(name, exp, important);
- }
- } catch (JumpException e) {
- skipAfterExpression();
- // reportWarningSkipText(getLocator(), skipAfterExpression());
- } catch (NumberFormatException e) {
- if (errorHandler != null) {
- errorHandler.error(new CSSParseException("Invalid number "
- + e.getMessage(),
- getLocator(),
- e));
- }
- reportWarningSkipText(getLocator(), skipAfterExpression());
- } catch (ParseException e) {
- if (errorHandler != null) {
- if (e.currentToken != null) {
- LocatorImpl li = new LocatorImpl(this,
- e.currentToken.next.beginLine,
- e.currentToken.next.beginColumn-1);
- reportError(li, e);
- } else {
- reportError(getLocator(), e);
- }
- skipAfterExpression();
- /*
- LocatorImpl loc = (LocatorImpl) getLocator();
- loc.column--;
- reportWarningSkipText(loc, skipAfterExpression());
- */
- } else {
- skipAfterExpression();
- }
- }
-}
-
-/**
- * @exception ParseException exception during the parse
- */
-boolean prio() :
-{}
-{
- <IMPORTANT_SYM> ( <S> )* { return true; }
-}
-
-boolean guarded() :
-{}
-{
- <GUARDED_SYM> (<S>)* {return true;}
-}
-
-/**
- * @exception ParseException exception during the parse
- */
-LexicalUnitImpl operator(LexicalUnitImpl prev) :
-{Token n;}
-{
-/* (comments copied from basic_arithmetics.scss)
-*supports:
-* 1. standard arithmetic operations (+, -, *, /, %)
-* 2. / is treated as css operator, unless one of its operands is variable or there is another binary arithmetic operator
-*limits:
-* 1. cannot mix arithmetic and css operations, e.g. "margin: 1px + 3px 2px" will fail
-* 2. space between add and minus operator and their following operand is mandatory. e.g. "1 + 2" is valid, "1+2" is not
-* 3. parenthesis is not supported now.
-*/
-n="," ( <S> )* { return LexicalUnitImpl.createComma(n.beginLine,
- n.beginColumn,
- prev); }
-|n="/" ( <S> )* { return LexicalUnitImpl.createSlash(n.beginLine,
- n.beginColumn,
- prev); }
-| n="*" ( <S> )* { return LexicalUnitImpl.createMultiply(n.beginLine,
- n.beginColumn,
- prev); }
-| n="%" ( <S> )* { return LexicalUnitImpl.createModulo(n.beginLine,
- n.beginColumn,
- prev); }
-/*
-* for '+', since it can be either a binary operator or an unary operator,
-* which is ambiguous. To avoid this, the binary operator '+' always has
-* a space before the following term. so '2+3' is not a valid binary expression,
-* but '2 + 3' is. The same for '-' operator.
-*/
-
-| n="+" ( <S> )+{ return LexicalUnitImpl.createAdd(n.beginLine,
- n.beginColumn,
- prev); }
-| n="-" ( <S> )+{ return LexicalUnitImpl.createMinus(n.beginLine,
- n.beginColumn,
- prev); }
-}
-
-/**
- * @exception ParseException exception during the parse
- */
-LexicalUnitImpl expr() :
-{
- LexicalUnitImpl first, res;
- char op;
-}
-{
- first=term(null){ res = first; }
- ( LOOKAHEAD(2) ( LOOKAHEAD(2) res=operator(res) )? res=term(res))*
- { return first; }
-}
-
-/**
- * @exception ParseException exception during the parse
- */
-char unaryOperator() :
-{}
-{
- "-" { return '-'; }
-| "+" { return '+'; }
-}
-
-/**
- * @exception ParseException exception during the parse
- */
-LexicalUnitImpl term(LexicalUnitImpl prev) :
-{ LexicalUnitImpl result = null;
- Token n = null;
- char op = ' ';
-}
-{
- (result = nonVariableTerm(prev)| result = variableTerm(prev))
- {
- return result;
- }
-}
-
-LexicalUnitImpl variableTerm(LexicalUnitImpl prev) :
-{
- LexicalUnitImpl result = null;
- String varName = "";
-}
-{
- varName = variableName()
- {result = LexicalUnitImpl.createVariable(token.beginLine, token.beginColumn,
- prev, varName); return result;}
-}
-
-LexicalUnitImpl nonVariableTerm(LexicalUnitImpl prev) :
-{
-LexicalUnitImpl result = null;
- Token n = null;
- char op = ' ';
- String varName;
- String s = "";
-}
-{
-( ( (
- op=unaryOperator() )?
- (n=<NUMBER>
- { result = LexicalUnitImpl.createNumber(n.beginLine, n.beginColumn,
- prev, number(op, n, 0)); }
- | n=<PERCENTAGE>
- { result = LexicalUnitImpl.createPercentage(n.beginLine, n.beginColumn,
- prev, number(op, n, 1)); }
- | n=<PT>
- { result = LexicalUnitImpl.createPT(n.beginLine, n.beginColumn,
- prev, number(op, n, 2)); }
- | n=<CM>
- { result = LexicalUnitImpl.createCM(n.beginLine, n.beginColumn,
- prev, number(op, n, 2)); }
- | n=<MM>
- { result = LexicalUnitImpl.createMM(n.beginLine, n.beginColumn,
- prev, number(op, n, 2)); }
- | n=<PC>
- { result = LexicalUnitImpl.createPC(n.beginLine, n.beginColumn,
- prev, number(op, n, 2)); }
- | n=<IN>
- { result = LexicalUnitImpl.createIN(n.beginLine, n.beginColumn,
- prev, number(op, n, 2)); }
- | n=<PX>
- { result = LexicalUnitImpl.createPX(n.beginLine, n.beginColumn,
- prev, number(op, n, 2)); }
- | n=<EMS>
- { result = LexicalUnitImpl.createEMS(n.beginLine, n.beginColumn,
- prev, number(op, n, 2)); }
- | n=<LEM>
- { result = LexicalUnitImpl.createLEM(n.beginLine, n.beginColumn,
- prev, number(op, n, 3)); }
- | n=<REM>
- { result = LexicalUnitImpl.createREM(n.beginLine, n.beginColumn,
- prev, number(op, n, 3)); }
- | n=<EXS>
- { result = LexicalUnitImpl.createEXS(n.beginLine, n.beginColumn,
- prev, number(op, n, 2)); }
- | n=<DEG>
- { result = LexicalUnitImpl.createDEG(n.beginLine, n.beginColumn,
- prev, number(op, n, 3)); }
- | n=<RAD>
- { result = LexicalUnitImpl.createRAD(n.beginLine, n.beginColumn,
- prev, number(op, n, 3)); }
- | n=<GRAD>
- { result = LexicalUnitImpl.createGRAD(n.beginLine, n.beginColumn,
- prev, number(op, n, 3)); }
- | n=<SECOND>
- { result = LexicalUnitImpl.createS(n.beginLine, n.beginColumn,
- prev, number(op, n, 1)); }
- | n=<MS>
- { result = LexicalUnitImpl.createMS(n.beginLine, n.beginColumn,
- prev, number(op, n, 2)); }
- | n=<HZ>
- { result = LexicalUnitImpl.createHZ(n.beginLine, n.beginColumn,
- prev, number(op, n, 2)); }
- | n=<KHZ>
- { result = LexicalUnitImpl.createKHZ(n.beginLine, n.beginColumn,
- prev, number(op, n, 3)); }
- | n=<DIMEN>
- {
- s = n.image;
- int i = 0;
- while (i < s.length()
- && (Character.isDigit(s.charAt(i)) || (s.charAt(i) == '.'))) {
- i++;
- }
-
- result = LexicalUnitImpl.createDimen(n.beginLine, n.beginColumn, prev,
- number(op,n,s.length()-i),
- s.substring(i));
- }
- | result=function(op, prev) ) )
- | ( n=<STRING>
- { result =
- LexicalUnitImpl.createString(n.beginLine, n.beginColumn, prev,
- convertStringIndex(n.image, 1,
- n.image.length() -1));}
- | (< DOT >{ s+="."; })?(n=<IDENT> | n=<TO> | n=<THROUGH> | n=<FROM>)
- { s += convertIdent(n.image);
- if ("inherit".equals(s)) {
- result = LexicalUnitImpl.createInherit(n.beginLine, n.beginColumn,
- prev);
- } else {
- result = LexicalUnitImpl.createIdent(n.beginLine, n.beginColumn,
- prev, convertIdent(n.image));
- }
-
- /* /
- Auto correction code used in the CSS Validator but must not
- be used by a conformant CSS2 parser.
- * Common error :
- * H1 {
- * color : black
- * background : white
- * }
- *
- Token t = getToken(1);
- Token semicolon = new Token();
- semicolon.kind = SEMICOLON;
- semicolon.image = ";";
- if (t.kind == COLON) {
- // @@SEEME. (generate a warning?)
- // @@SEEME if expression is a single ident,
- generate an error ?
- rejectToken(semicolon);
-
- result = prev;
- }
- / */
- }
- | result=hexcolor(prev)
- | result=url(prev)
- | result=unicode(prev)
- ) ) ( <S> )*
- {
- return result;
- }
-}
-
-/**
- * Handle all CSS2 functions.
- * @exception ParseException exception during the parse
- */
-LexicalUnitImpl function(char operator, LexicalUnitImpl prev) :
-{Token n;
- LexicalUnit params = null;
-}
-{
- n=<FUNCTION> ( <S> )*
- {
- String fname = convertIdent(n.image);
- if("alpha(".equals(fname)){
- String body = skipStatementUntilSemiColon();
- return LexicalUnitImpl.createIdent(n.beginLine, n.beginColumn,
- null, "alpha("+body);
- }else if("expression(".equals(fname)){
- String body = skipStatementUntilSemiColon();
- return LexicalUnitImpl.createIdent(n.beginLine, n.beginColumn,
- null, "expression("+body);
- }
- }
- ( params=expr() )? ")"
- {
- if (operator != ' ') {
- throw new CSSParseException("invalid operator before a function.",
- getLocator());
- }
- String f = convertIdent(n.image);
- LexicalUnitImpl l = (LexicalUnitImpl) params;
- boolean loop = true;
- if ("rgb(".equals(f)) {
- // this is a RGB declaration (e.g. rgb(255, 50%, 0) )
- int i = 0;
- boolean hasVariables = false;
- while (loop && l != null && i < 5) {
- switch (i) {
- case 0:
- case 2:
- case 4:
- if (l.getLexicalUnitType() == SCSSLexicalUnit.SCSS_VARIABLE) {
- hasVariables = true;
- } else if ((l.getLexicalUnitType() != LexicalUnit.SAC_INTEGER)
- && (l.getLexicalUnitType() != LexicalUnit.SAC_PERCENTAGE)) {
- loop = false;
- }
- break;
- case 1:
- case 3:
- if (l.getLexicalUnitType() != LexicalUnit.SAC_OPERATOR_COMMA) {
- loop = false;
- }
- break;
- default:
- throw new ParseException("implementation error");
- }
- if (loop) {
- l = (LexicalUnitImpl) l.getNextLexicalUnit();
- i ++;
- }
- }
- if ((i == 5) && loop && (l == null)) {
- if (hasVariables) {
- return LexicalUnitImpl.createFunction(n.beginLine,
- n.beginColumn, prev,
- f.substring(0, f.length() - 1), params);
- } else {
- return LexicalUnitImpl.createRGBColor(n.beginLine,
- n.beginColumn,
- prev, params);
- }
- } else {
- if (errorHandler != null) {
- String errorText;
- Locator loc;
- if (i < 5) {
- if (params == null) {
- loc = new LocatorImpl(this, n.beginLine,
- n.beginColumn-1);
- errorText = "not enough parameters.";
- } else if (l == null) {
- loc = new LocatorImpl(this, n.beginLine,
- n.beginColumn-1);
- errorText = "not enough parameters: "
- + params.toString();
- } else {
- loc = new LocatorImpl(this, l.getLineNumber(),
- l.getColumnNumber());
- errorText = "invalid parameter: "
- + l.toString();
- }
- } else {
- loc = new LocatorImpl(this, l.getLineNumber(),
- l.getColumnNumber());
- errorText = "too many parameters: "
- + l.toString();
- }
- errorHandler.error(new CSSParseException(errorText, loc));
- }
-
- throw new JumpException();
- }
- } else if ("counter".equals(f)) {
- int i = 0;
- while (loop && l != null && i < 3) {
- switch (i) {
- case 0:
- case 2:
- if (l.getLexicalUnitType() != LexicalUnit.SAC_IDENT) {
- loop = false;
- }
- break;
- case 1:
- if (l.getLexicalUnitType() != LexicalUnit.SAC_OPERATOR_COMMA) {
- loop = false;
- }
- break;
- default:
- throw new ParseException("implementation error");
- }
- l = (LexicalUnitImpl) l.getNextLexicalUnit();
- i ++;
- }
- if (((i == 1) || (i == 3)) && loop && (l == null)) {
- return LexicalUnitImpl.createCounter(n.beginLine, n.beginColumn,
- prev, params);
- }
-
- } else if ("counters(".equals(f)) {
-
- int i = 0;
- while (loop && l != null && i < 5) {
- switch (i) {
- case 0:
- case 4:
- if (l.getLexicalUnitType() != LexicalUnit.SAC_IDENT) {
- loop = false;
- }
- break;
- case 2:
- if (l.getLexicalUnitType() != LexicalUnit.SAC_STRING_VALUE) {
- loop = false;
- }
- break;
- case 1:
- case 3:
- if (l.getLexicalUnitType() != LexicalUnit.SAC_OPERATOR_COMMA) {
- loop = false;
- }
- break;
- default:
- throw new ParseException("implementation error");
- }
- l = (LexicalUnitImpl) l.getNextLexicalUnit();
- i ++;
- }
- if (((i == 3) || (i == 5)) && loop && (l == null)) {
- return LexicalUnitImpl.createCounters(n.beginLine, n.beginColumn,
- prev, params);
- }
- } else if ("attr(".equals(f)) {
- if ((l != null)
- && (l.getNextLexicalUnit() == null)
- && (l.getLexicalUnitType() == LexicalUnit.SAC_IDENT)) {
- return LexicalUnitImpl.createAttr(l.getLineNumber(),
- l.getColumnNumber(),
- prev, l.getStringValue());
- }
- } else if ("rect(".equals(f)) {
- int i = 0;
- while (loop && l != null && i < 7) {
- switch (i) {
- case 0:
- case 2:
- case 4:
- case 6:
- switch (l.getLexicalUnitType()) {
- case LexicalUnit.SAC_INTEGER:
- if (l.getIntegerValue() != 0) {
- loop = false;
- }
- break;
- case LexicalUnit.SAC_IDENT:
- if (!l.getStringValue().equals("auto")) {
- loop = false;
- }
- break;
- case LexicalUnit.SAC_EM:
- case LexicalUnit.SAC_EX:
- case LexicalUnit.SAC_PIXEL:
- case LexicalUnit.SAC_CENTIMETER:
- case LexicalUnit.SAC_MILLIMETER:
- case LexicalUnit.SAC_INCH:
- case LexicalUnit.SAC_POINT:
- case LexicalUnit.SAC_PICA:
- // nothing
- break;
- default:
- loop = false;
- }
- break;
- case 1:
- case 3:
- case 5:
- if (l.getLexicalUnitType() != LexicalUnit.SAC_OPERATOR_COMMA) {
- loop = false;
- }
- break;
- default:
- throw new ParseException("implementation error");
- }
- l = (LexicalUnitImpl) l.getNextLexicalUnit();
- i ++;
- }
- if ((i == 7) && loop && (l == null)) {
- return LexicalUnitImpl.createRect(n.beginLine, n.beginColumn,
- prev, params);
- }
- }
- return LexicalUnitImpl.createFunction(n.beginLine, n.beginColumn, prev,
- f.substring(0,
- f.length() -1),
- params);
- }
-}
-
-LexicalUnitImpl unicode(LexicalUnitImpl prev) :
-{ Token n;
-}
-{
- n=<UNICODERANGE>
- {
- LexicalUnitImpl params = null;
- String s = n.image.substring(2);
- int index = s.indexOf('-');
- if (index == -1) {
- params = LexicalUnitImpl.createInteger(n.beginLine, n.beginColumn,
- params, Integer.parseInt(s, 16));
- } else {
- String s1 = s.substring(0, index);
- String s2 = s.substring(index);
-
- params = LexicalUnitImpl.createInteger(n.beginLine, n.beginColumn,
- params, Integer.parseInt(s1, 16));
- params = LexicalUnitImpl.createInteger(n.beginLine, n.beginColumn,
- params, Integer.parseInt(s2, 16));
- }
-
- return LexicalUnitImpl.createUnicodeRange(n.beginLine, n.beginColumn,
- prev, params);
- }
-}
-
-LexicalUnitImpl url(LexicalUnitImpl prev) :
-{ Token n;
-}
-{
- n=<URL>
- {
- String urlname = n.image.substring(4, n.image.length()-1).trim();
- return LexicalUnitImpl.createURL(n.beginLine, n.beginColumn, prev, urlname);
- }
-}
-
-/**
- * @exception ParseException exception during the parse
- */
-LexicalUnitImpl hexcolor(LexicalUnitImpl prev) :
-{Token n;
-}
-{
- n=<HASH>
- {
- int r;
- LexicalUnitImpl first, params = null;
- String s = n.image.substring(1);
-
- if(s.length()!=3 && s.length()!=6) {
- first = null;
- throw new CSSParseException("invalid hexadecimal notation for RGB: " + s,
- getLocator());
- }
- return LexicalUnitImpl.createIdent(n.beginLine, n.beginColumn,
- prev, n.image);
- }
-}
-
-JAVACODE
-float number(char operator, Token n, int lengthUnit) {
- String image = n.image;
- float f = 0;
-
- if (lengthUnit != 0) {
- image = image.substring(0, image.length() - lengthUnit);
- }
- f = Float.valueOf(image).floatValue();
- return (operator == '-')? -f: f;
-}
-
-JAVACODE
-String skipStatementUntilSemiColon(){
- int[] semicolon = {SEMICOLON};
- return skipStatementUntil(semicolon);
-}
-
-JAVACODE
-String skipStatementUntilLeftBrace(){
- int[] lBrace = {LBRACE};
- return skipStatementUntil(lBrace);
-}
-
-JAVACODE
-String skipStatementUntilMatchingRightParan(){
- int[] leftTokens = {LPARAN, FUNCTION}; // a FUNCTION also contains "("
- int[] rightTokens = {RPARAN};
- StringBuffer s = new StringBuffer();
- int difference = 1;
- Token tok;
- while(difference != 0){
- tok = getToken(1);
- if(tok.kind == EOF) {
- return null;
- }
- for(int sym : leftTokens){
- if(tok.kind == sym){
- difference++;
- }
- }
- for(int sym : rightTokens){
- if(tok.kind == sym){
- difference--;
- }
- }
- if(difference != 0){
- if (tok.image != null) {
- s.append(tok.image);
- }
- getNextToken();
- }
- }
- return s.toString().trim();
-}
-
-JAVACODE
-String skipStatementUntil(int[] symbols){
- StringBuffer s = new StringBuffer();
- boolean found = false;
- Token tok;
- while(!found){
- tok = getToken(1);
- for(int sym : symbols){
- if(tok.kind == sym){
- found = true;
- break;
- }
- }
- if(tok.kind == EOF) {
- break;
- }
- if(!found){
- if (tok.image != null) {
- s.append(tok.image);
- }
- getNextToken();
- }
- }
- return found ? s.toString().trim() : null;
-}
-
-
-JAVACODE
-String skipStatement() {
- StringBuffer s = new StringBuffer();
- Token tok = getToken(0);
- if (tok.image != null) {
- s.append(tok.image);
- }
- while (true) {
- tok = getToken(1);
- if (tok.kind == EOF) {
- return null;
- }
- s.append(tok.image);
- if (tok.kind == LBRACE) {
- getNextToken();
- s.append(skip_to_matching_brace());
- getNextToken();
- tok = getToken(1);
- break;
- } else if (tok.kind == RBRACE) {
- getNextToken();
- tok = getToken(1);
- break;
- } else if (tok.kind == SEMICOLON) {
- getNextToken();
- tok = getToken(1);
- break;
- }
- getNextToken();
- }
-
- // skip white space
- while (true) {
- if (tok.kind != S) {
- break;
- }
- tok = getNextToken();
- tok = getToken(1);
- }
-
- return s.toString().trim();
-}
-
-JAVACODE
-String skip_to_matching_brace() {
- StringBuffer s = new StringBuffer();
- Token tok;
- int nesting = 1;
- while (true) {
- tok = getToken(1);
- if (tok.kind == EOF) {
- break;
- }
- s.append(tok.image);
- if (tok.kind == LBRACE) {
- nesting++;
- } else if (tok.kind == RBRACE) {
- nesting--;
- if (nesting == 0) {
- break;
- }
- }
- getNextToken();
- }
- return s.toString();
-}
-
-/*
- * Here I handle all CSS2 unicode character stuffs.
- * I convert all \XXXXXX character into a single character.
- * Don't forget that the parser has recognize the token before.
- * (So IDENT won't contain newline and stuffs like this).
- */
-JAVACODE
-String convertStringIndex(String s, int start, int len) {
- StringBuffer buf = new StringBuffer(len);
- int index = start;
-
- while (index < len) {
- char c = s.charAt(index);
- if (c == '\\') {
- if (++index < len) {
- c = s.charAt(index);
- switch (c) {
- case '0': case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8': case '9':
- case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
- case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
- buf.append('\\');
- while (index < len) {
- buf.append(s.charAt(index++));
- }
- break;
- case '\n':
- case '\f':
- break;
- case '\r':
- if (index + 1 < len) {
- if (s.charAt(index + 1) == '\n') {
- index ++;
- }
- }
- break;
- default:
- buf.append(c);
- }
- } else {
- throw new CSSParseException("invalid string " + s, getLocator());
- }
- } else {
- buf.append(c);
- }
- index++;
- }
-
- return buf.toString();
-}
-
-JAVACODE
-String convertIdent(String s) {
- return convertStringIndex(s, 0, s.length());
-}
-
-JAVACODE
-String convertString(String s) {
- return convertStringIndex(s, 0, s.length());
-}
-
-JAVACODE
-void comments(){
- /*keeps only the multiple line comments, single line comments are skipped*/
- if (token.specialToken != null && token.specialToken.image!=null && token.specialToken.image.startsWith("/*")){
- Token tmp_t = token.specialToken;
- while (tmp_t.specialToken != null) tmp_t = tmp_t.specialToken;
- while (tmp_t != null) {
- documentHandler.comment(tmp_t.image);
- tmp_t = tmp_t.next;
- }
- }
-}
-
-/*
- * @@HACK
- * I can't insert a token into the tokens flow.
- * It's jj_consume_token implementation dependant! :-(
- */
-JAVACODE
-void rejectToken(Token t) {
- Token fakeToken = new Token();
- t.next = token;
- fakeToken.next = t;
- token = fakeToken;
-}
-
-/**
- * skip after an expression
- */
-JAVACODE
-String skipAfterExpression() {
- Token t = getToken(1);
- StringBuffer s = new StringBuffer();
- s.append(getToken(0).image);
-
- while ((t.kind != RBRACE) && (t.kind != SEMICOLON) && (t.kind != EOF)) {
- s.append(t.image);
- getNextToken();
- t = getToken(1);
- }
-
- return s.toString();
-}
-
-/**
- * The following functions are useful for a DOM CSS implementation only and are
- * not part of the general CSS2 parser.
- */
-// TODO required by original parser but not used by Vaadin?
-void _parseRule() :
-{String ret = null;
-}
-{
- ( <S> )*
- ( importDeclaration() | debuggingDirective() | styleRule() | media() | page() | fontFace() | ret=skipStatement()
- {
- if ((ret == null) || (ret.length() == 0)) {
- return;
- }
- if (ret.charAt(0) == '@') {
- documentHandler.unrecognizedRule(ret);
- } else {
- throw new CSSParseException("unrecognize rule: " + ret,
- getLocator());
- }
- }
- )
-}
-
-void _parseImportRule() :
-{
-}
-{
- ( <S> )* importDeclaration()
-}
-
-void _parseMediaRule() :
-{
-}
-{
- ( <S> )* media()
-}
-
-void _parseDeclarationBlock() :
-{
-}
-{
- ( <S> )*
- ( declaration() )? ( ";" ( <S> )* ( declaration() )? )*
- }
-
-ArrayList<String> _parseSelectors() :
-{ ArrayList<String> p = null;
-}
-{
- try {
- ( <S> )* p = selectorList()
- { return p; }
- } catch (ThrowedParseException e) {
- throw (ParseException) e.e.fillInStackTrace();
- }
-}
-
-/*
- * Local Variables:
- * compile-command: javacc Parser.jj & javac Parser.java
- * End:
- */
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/ParserConstants.java b/theme-compiler/src/com/vaadin/sass/internal/parser/ParserConstants.java
deleted file mode 100644
index a3ab622ee9..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/parser/ParserConstants.java
+++ /dev/null
@@ -1,392 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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.
- */
-/* Generated By:JavaCC: Do not edit this line. ParserConstants.java */
-package com.vaadin.sass.internal.parser;
-
-
-/**
- * Token literal values and constants.
- * Generated by org.javacc.parser.OtherFilesGen#start()
- */
-public interface ParserConstants {
-
- /** End of File. */
- int EOF = 0;
- /** RegularExpression Id. */
- int S = 1;
- /** RegularExpression Id. */
- int SINGLE_LINE_COMMENT = 2;
- /** RegularExpression Id. */
- int FORMAL_COMMENT = 5;
- /** RegularExpression Id. */
- int MULTI_LINE_COMMENT = 6;
- /** RegularExpression Id. */
- int CDO = 8;
- /** RegularExpression Id. */
- int CDC = 9;
- /** RegularExpression Id. */
- int LBRACE = 10;
- /** RegularExpression Id. */
- int RBRACE = 11;
- /** RegularExpression Id. */
- int DASHMATCH = 12;
- /** RegularExpression Id. */
- int CARETMATCH = 13;
- /** RegularExpression Id. */
- int DOLLARMATCH = 14;
- /** RegularExpression Id. */
- int STARMATCH = 15;
- /** RegularExpression Id. */
- int INCLUDES = 16;
- /** RegularExpression Id. */
- int EQ = 17;
- /** RegularExpression Id. */
- int PLUS = 18;
- /** RegularExpression Id. */
- int MINUS = 19;
- /** RegularExpression Id. */
- int COMMA = 20;
- /** RegularExpression Id. */
- int SEMICOLON = 21;
- /** RegularExpression Id. */
- int PRECEDES = 22;
- /** RegularExpression Id. */
- int SIBLING = 23;
- /** RegularExpression Id. */
- int SUCCEEDS = 24;
- /** RegularExpression Id. */
- int DIV = 25;
- /** RegularExpression Id. */
- int LBRACKET = 26;
- /** RegularExpression Id. */
- int RBRACKET = 27;
- /** RegularExpression Id. */
- int ANY = 28;
- /** RegularExpression Id. */
- int MOD = 29;
- /** RegularExpression Id. */
- int PARENT = 30;
- /** RegularExpression Id. */
- int DOT = 31;
- /** RegularExpression Id. */
- int LPARAN = 32;
- /** RegularExpression Id. */
- int RPARAN = 33;
- /** RegularExpression Id. */
- int COMPARE = 34;
- /** RegularExpression Id. */
- int OR = 35;
- /** RegularExpression Id. */
- int AND = 36;
- /** RegularExpression Id. */
- int NOT_EQ = 37;
- /** RegularExpression Id. */
- int COLON = 38;
- /** RegularExpression Id. */
- int INTERPOLATION = 39;
- /** RegularExpression Id. */
- int NONASCII = 40;
- /** RegularExpression Id. */
- int H = 41;
- /** RegularExpression Id. */
- int UNICODE = 42;
- /** RegularExpression Id. */
- int ESCAPE = 43;
- /** RegularExpression Id. */
- int NMSTART = 44;
- /** RegularExpression Id. */
- int NMCHAR = 45;
- /** RegularExpression Id. */
- int STRINGCHAR = 46;
- /** RegularExpression Id. */
- int D = 47;
- /** RegularExpression Id. */
- int NAME = 48;
- /** RegularExpression Id. */
- int TO = 49;
- /** RegularExpression Id. */
- int THROUGH = 50;
- /** RegularExpression Id. */
- int EACH_IN = 51;
- /** RegularExpression Id. */
- int FROM = 52;
- /** RegularExpression Id. */
- int MIXIN_SYM = 53;
- /** RegularExpression Id. */
- int INCLUDE_SYM = 54;
- /** RegularExpression Id. */
- int FUNCTION_SYM = 55;
- /** RegularExpression Id. */
- int RETURN_SYM = 56;
- /** RegularExpression Id. */
- int DEBUG_SYM = 57;
- /** RegularExpression Id. */
- int WARN_SYM = 58;
- /** RegularExpression Id. */
- int FOR_SYM = 59;
- /** RegularExpression Id. */
- int EACH_SYM = 60;
- /** RegularExpression Id. */
- int WHILE_SYM = 61;
- /** RegularExpression Id. */
- int IF_SYM = 62;
- /** RegularExpression Id. */
- int ELSE_SYM = 63;
- /** RegularExpression Id. */
- int EXTEND_SYM = 64;
- /** RegularExpression Id. */
- int MOZ_DOCUMENT_SYM = 65;
- /** RegularExpression Id. */
- int SUPPORTS_SYM = 66;
- /** RegularExpression Id. */
- int CONTENT_SYM = 67;
- /** RegularExpression Id. */
- int MICROSOFT_RULE = 68;
- /** RegularExpression Id. */
- int IF = 69;
- /** RegularExpression Id. */
- int GUARDED_SYM = 70;
- /** RegularExpression Id. */
- int STRING = 71;
- /** RegularExpression Id. */
- int IDENT = 72;
- /** RegularExpression Id. */
- int NUMBER = 73;
- /** RegularExpression Id. */
- int _URL = 74;
- /** RegularExpression Id. */
- int URL = 75;
- /** RegularExpression Id. */
- int VARIABLE = 76;
- /** RegularExpression Id. */
- int PERCENTAGE = 77;
- /** RegularExpression Id. */
- int PT = 78;
- /** RegularExpression Id. */
- int MM = 79;
- /** RegularExpression Id. */
- int CM = 80;
- /** RegularExpression Id. */
- int PC = 81;
- /** RegularExpression Id. */
- int IN = 82;
- /** RegularExpression Id. */
- int PX = 83;
- /** RegularExpression Id. */
- int EMS = 84;
- /** RegularExpression Id. */
- int LEM = 85;
- /** RegularExpression Id. */
- int REM = 86;
- /** RegularExpression Id. */
- int EXS = 87;
- /** RegularExpression Id. */
- int DEG = 88;
- /** RegularExpression Id. */
- int RAD = 89;
- /** RegularExpression Id. */
- int GRAD = 90;
- /** RegularExpression Id. */
- int MS = 91;
- /** RegularExpression Id. */
- int SECOND = 92;
- /** RegularExpression Id. */
- int HZ = 93;
- /** RegularExpression Id. */
- int KHZ = 94;
- /** RegularExpression Id. */
- int DIMEN = 95;
- /** RegularExpression Id. */
- int HASH = 96;
- /** RegularExpression Id. */
- int IMPORT_SYM = 97;
- /** RegularExpression Id. */
- int MEDIA_SYM = 98;
- /** RegularExpression Id. */
- int CHARSET_SYM = 99;
- /** RegularExpression Id. */
- int PAGE_SYM = 100;
- /** RegularExpression Id. */
- int FONT_FACE_SYM = 101;
- /** RegularExpression Id. */
- int KEY_FRAME_SYM = 102;
- /** RegularExpression Id. */
- int ATKEYWORD = 103;
- /** RegularExpression Id. */
- int IMPORTANT_SYM = 104;
- /** RegularExpression Id. */
- int RANGE0 = 105;
- /** RegularExpression Id. */
- int RANGE1 = 106;
- /** RegularExpression Id. */
- int RANGE2 = 107;
- /** RegularExpression Id. */
- int RANGE3 = 108;
- /** RegularExpression Id. */
- int RANGE4 = 109;
- /** RegularExpression Id. */
- int RANGE5 = 110;
- /** RegularExpression Id. */
- int RANGE6 = 111;
- /** RegularExpression Id. */
- int RANGE = 112;
- /** RegularExpression Id. */
- int UNI = 113;
- /** RegularExpression Id. */
- int UNICODERANGE = 114;
- /** RegularExpression Id. */
- int REMOVE = 115;
- /** RegularExpression Id. */
- int APPEND = 116;
- /** RegularExpression Id. */
- int CONTAINS = 117;
- /** RegularExpression Id. */
- int FUNCTION = 118;
- /** RegularExpression Id. */
- int UNKNOWN = 119;
-
- /** Lexical state. */
- int DEFAULT = 0;
- /** Lexical state. */
- int IN_FORMAL_COMMENT = 1;
- /** Lexical state. */
- int IN_MULTI_LINE_COMMENT = 2;
-
- /** Literal token values. */
- String[] tokenImage = {
- "<EOF>",
- "<S>",
- "<SINGLE_LINE_COMMENT>",
- "<token of kind 3>",
- "\"/*\"",
- "\"*/\"",
- "\"*/\"",
- "<token of kind 7>",
- "\"<!--\"",
- "\"-->\"",
- "\"{\"",
- "\"}\"",
- "\"|=\"",
- "\"^=\"",
- "\"$=\"",
- "\"*=\"",
- "\"~=\"",
- "\"=\"",
- "\"+\"",
- "\"-\"",
- "\",\"",
- "\";\"",
- "\">\"",
- "\"~\"",
- "\"<\"",
- "\"/\"",
- "\"[\"",
- "\"]\"",
- "\"*\"",
- "\"%\"",
- "\"&\"",
- "\".\"",
- "\"(\"",
- "\")\"",
- "\"==\"",
- "\"||\"",
- "\"&&\"",
- "\"!=\"",
- "\":\"",
- "<INTERPOLATION>",
- "<NONASCII>",
- "<H>",
- "<UNICODE>",
- "<ESCAPE>",
- "<NMSTART>",
- "<NMCHAR>",
- "<STRINGCHAR>",
- "<D>",
- "<NAME>",
- "\"to\"",
- "\"through\"",
- "\"in\"",
- "\"from\"",
- "\"@mixin\"",
- "\"@include\"",
- "\"@function\"",
- "\"@return\"",
- "\"@debug\"",
- "\"@warn\"",
- "\"@for\"",
- "\"@each\"",
- "\"@while\"",
- "\"@if\"",
- "\"@else\"",
- "\"@extend\"",
- "\"@-moz-document\"",
- "\"@supports\"",
- "\"@content\"",
- "<MICROSOFT_RULE>",
- "\"if\"",
- "<GUARDED_SYM>",
- "<STRING>",
- "<IDENT>",
- "<NUMBER>",
- "<_URL>",
- "<URL>",
- "<VARIABLE>",
- "<PERCENTAGE>",
- "<PT>",
- "<MM>",
- "<CM>",
- "<PC>",
- "<IN>",
- "<PX>",
- "<EMS>",
- "<LEM>",
- "<REM>",
- "<EXS>",
- "<DEG>",
- "<RAD>",
- "<GRAD>",
- "<MS>",
- "<SECOND>",
- "<HZ>",
- "<KHZ>",
- "<DIMEN>",
- "<HASH>",
- "\"@import\"",
- "\"@media\"",
- "\"@charset\"",
- "\"@page\"",
- "\"@font-face\"",
- "<KEY_FRAME_SYM>",
- "<ATKEYWORD>",
- "<IMPORTANT_SYM>",
- "<RANGE0>",
- "<RANGE1>",
- "<RANGE2>",
- "<RANGE3>",
- "<RANGE4>",
- "<RANGE5>",
- "<RANGE6>",
- "<RANGE>",
- "<UNI>",
- "<UNICODERANGE>",
- "<REMOVE>",
- "<APPEND>",
- "<CONTAINS>",
- "<FUNCTION>",
- "<UNKNOWN>",
- };
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/ParserTokenManager.java b/theme-compiler/src/com/vaadin/sass/internal/parser/ParserTokenManager.java
deleted file mode 100644
index bb0f4cbf40..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/parser/ParserTokenManager.java
+++ /dev/null
@@ -1,5000 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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.
- */
-/* Generated By:JavaCC: Do not edit this line. ParserTokenManager.java */
-package com.vaadin.sass.internal.parser;
-import java.io.*;
-import java.net.*;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Locale;
-import java.util.Map;
-import java.util.UUID;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import org.w3c.css.sac.ConditionFactory;
-import org.w3c.css.sac.Condition;
-import org.w3c.css.sac.SelectorFactory;
-import org.w3c.css.sac.SelectorList;
-import org.w3c.css.sac.Selector;
-import org.w3c.css.sac.SimpleSelector;
-import org.w3c.css.sac.DocumentHandler;
-import org.w3c.css.sac.InputSource;
-import org.w3c.css.sac.ErrorHandler;
-import org.w3c.css.sac.CSSException;
-import org.w3c.css.sac.CSSParseException;
-import org.w3c.css.sac.Locator;
-import org.w3c.css.sac.LexicalUnit;
-import org.w3c.flute.parser.selectors.SelectorFactoryImpl;
-import org.w3c.flute.parser.selectors.ConditionFactoryImpl;
-import org.w3c.flute.util.Encoding;
-import com.vaadin.sass.internal.handler.*;
-import com.vaadin.sass.internal.tree.*;
-
-/** Token Manager. */
-public class ParserTokenManager implements ParserConstants
-{
-
- /** Debug output. */
- public java.io.PrintStream debugStream = System.out;
- /** Set debug output. */
- public void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
-private final int jjStopStringLiteralDfa_0(int pos, long active0, long active1)
-{
- switch (pos)
- {
- case 0:
- if ((active0 & 0xffe0000000000000L) != 0L || (active1 & 0x3e0000000fL) != 0L)
- return 162;
- if ((active0 & 0xe000000000000L) != 0L || (active1 & 0x20L) != 0L)
- {
- jjmatchedKind = 72;
- return 522;
- }
- if ((active0 & 0x80000000L) != 0L)
- return 523;
- if ((active0 & 0x10000000000000L) != 0L)
- {
- jjmatchedKind = 72;
- return 29;
- }
- if ((active0 & 0x4000L) != 0L)
- return 75;
- if ((active0 & 0x2000010L) != 0L)
- return 216;
- if ((active0 & 0x80200L) != 0L)
- return 38;
- if ((active0 & 0x2000000000L) != 0L)
- return 524;
- return -1;
- case 1:
- if ((active1 & 0x2L) != 0L)
- return 174;
- if ((active0 & 0xffe0000000000000L) != 0L || (active1 & 0x3e0000000dL) != 0L)
- {
- jjmatchedKind = 103;
- jjmatchedPos = 1;
- return 525;
- }
- if ((active0 & 0x14000000000000L) != 0L)
- {
- jjmatchedKind = 72;
- jjmatchedPos = 1;
- return 522;
- }
- if ((active0 & 0xa000000000000L) != 0L || (active1 & 0x20L) != 0L)
- return 522;
- if ((active0 & 0x10L) != 0L)
- return 221;
- return -1;
- case 2:
- if ((active0 & 0xbfe0000000000000L) != 0L || (active1 & 0x3e0000000dL) != 0L)
- {
- jjmatchedKind = 103;
- jjmatchedPos = 2;
- return 525;
- }
- if ((active0 & 0x4000000000000000L) != 0L)
- return 525;
- if ((active1 & 0x2L) != 0L)
- {
- jjmatchedKind = 103;
- jjmatchedPos = 2;
- return 173;
- }
- if ((active0 & 0x14000000000000L) != 0L)
- {
- jjmatchedKind = 72;
- jjmatchedPos = 2;
- return 522;
- }
- return -1;
- case 3:
- if ((active0 & 0xb7e0000000000000L) != 0L || (active1 & 0x3e0000000dL) != 0L)
- {
- jjmatchedKind = 103;
- jjmatchedPos = 3;
- return 525;
- }
- if ((active0 & 0x800000000000000L) != 0L)
- return 525;
- if ((active0 & 0x4000000000000L) != 0L)
- {
- jjmatchedKind = 72;
- jjmatchedPos = 3;
- return 522;
- }
- if ((active0 & 0x10000000000000L) != 0L)
- return 522;
- if ((active1 & 0x2L) != 0L)
- {
- jjmatchedKind = 103;
- jjmatchedPos = 3;
- return 172;
- }
- return -1;
- case 4:
- if ((active0 & 0x9400000000000000L) != 0L || (active1 & 0x1000000000L) != 0L)
- return 525;
- if ((active1 & 0x2L) != 0L)
- {
- jjmatchedKind = 103;
- jjmatchedPos = 4;
- return 171;
- }
- if ((active0 & 0x4000000000000L) != 0L)
- {
- jjmatchedKind = 72;
- jjmatchedPos = 4;
- return 522;
- }
- if ((active0 & 0x23e0000000000000L) != 0L || (active1 & 0x2e0000000dL) != 0L)
- {
- jjmatchedKind = 103;
- jjmatchedPos = 4;
- return 525;
- }
- return -1;
- case 5:
- if ((active1 & 0x2L) != 0L)
- {
- jjmatchedKind = 103;
- jjmatchedPos = 5;
- return 170;
- }
- if ((active0 & 0x4000000000000L) != 0L)
- {
- jjmatchedKind = 72;
- jjmatchedPos = 5;
- return 522;
- }
- if ((active0 & 0x2220000000000000L) != 0L || (active1 & 0x400000000L) != 0L)
- return 525;
- if ((active0 & 0x1c0000000000000L) != 0L || (active1 & 0x2a0000000dL) != 0L)
- {
- jjmatchedKind = 103;
- jjmatchedPos = 5;
- return 525;
- }
- return -1;
- case 6:
- if ((active0 & 0x100000000000000L) != 0L || (active1 & 0x200000001L) != 0L)
- return 525;
- if ((active0 & 0x4000000000000L) != 0L)
- return 522;
- if ((active0 & 0xc0000000000000L) != 0L || (active1 & 0x280000000eL) != 0L)
- {
- jjmatchedKind = 103;
- jjmatchedPos = 6;
- return 525;
- }
- return -1;
- case 7:
- if ((active0 & 0x40000000000000L) != 0L || (active1 & 0x800000008L) != 0L)
- return 525;
- if ((active0 & 0x80000000000000L) != 0L || (active1 & 0x2000000006L) != 0L)
- {
- jjmatchedKind = 103;
- jjmatchedPos = 7;
- return 525;
- }
- return -1;
- case 8:
- if ((active1 & 0x2000000002L) != 0L)
- {
- jjmatchedKind = 103;
- jjmatchedPos = 8;
- return 525;
- }
- if ((active0 & 0x80000000000000L) != 0L || (active1 & 0x4L) != 0L)
- return 525;
- return -1;
- case 9:
- if ((active1 & 0x2L) != 0L)
- {
- jjmatchedKind = 103;
- jjmatchedPos = 9;
- return 525;
- }
- if ((active1 & 0x2000000000L) != 0L)
- return 525;
- return -1;
- case 10:
- if ((active1 & 0x2L) != 0L)
- {
- jjmatchedKind = 103;
- jjmatchedPos = 10;
- return 525;
- }
- return -1;
- case 11:
- if ((active1 & 0x2L) != 0L)
- {
- jjmatchedKind = 103;
- jjmatchedPos = 11;
- return 525;
- }
- return -1;
- case 12:
- if ((active1 & 0x2L) != 0L)
- {
- jjmatchedKind = 103;
- jjmatchedPos = 12;
- return 525;
- }
- return -1;
- default :
- return -1;
- }
-}
-private final int jjStartNfa_0(int pos, long active0, long active1)
-{
- return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0, active1), pos + 1);
-}
-private int jjStopAtPos(int pos, int kind)
-{
- jjmatchedKind = kind;
- jjmatchedPos = pos;
- return pos + 1;
-}
-private int jjMoveStringLiteralDfa0_0()
-{
- switch(curChar)
- {
- case 33:
- return jjMoveStringLiteralDfa1_0(0x2000000000L, 0x0L);
- case 36:
- return jjMoveStringLiteralDfa1_0(0x4000L, 0x0L);
- case 37:
- return jjStopAtPos(0, 29);
- case 38:
- jjmatchedKind = 30;
- return jjMoveStringLiteralDfa1_0(0x1000000000L, 0x0L);
- case 40:
- return jjStopAtPos(0, 32);
- case 41:
- return jjStopAtPos(0, 33);
- case 42:
- jjmatchedKind = 28;
- return jjMoveStringLiteralDfa1_0(0x8000L, 0x0L);
- case 43:
- return jjStopAtPos(0, 18);
- case 44:
- return jjStopAtPos(0, 20);
- case 45:
- jjmatchedKind = 19;
- return jjMoveStringLiteralDfa1_0(0x200L, 0x0L);
- case 46:
- return jjStartNfaWithStates_0(0, 31, 523);
- case 47:
- jjmatchedKind = 25;
- return jjMoveStringLiteralDfa1_0(0x10L, 0x0L);
- case 58:
- return jjStopAtPos(0, 38);
- case 59:
- return jjStopAtPos(0, 21);
- case 60:
- jjmatchedKind = 24;
- return jjMoveStringLiteralDfa1_0(0x100L, 0x0L);
- case 61:
- jjmatchedKind = 17;
- return jjMoveStringLiteralDfa1_0(0x400000000L, 0x0L);
- case 62:
- return jjStopAtPos(0, 22);
- case 64:
- return jjMoveStringLiteralDfa1_0(0xffe0000000000000L, 0x3e0000000fL);
- case 91:
- return jjStopAtPos(0, 26);
- case 93:
- return jjStopAtPos(0, 27);
- case 94:
- return jjMoveStringLiteralDfa1_0(0x2000L, 0x0L);
- case 70:
- case 102:
- return jjMoveStringLiteralDfa1_0(0x10000000000000L, 0x0L);
- case 73:
- case 105:
- return jjMoveStringLiteralDfa1_0(0x8000000000000L, 0x20L);
- case 84:
- case 116:
- return jjMoveStringLiteralDfa1_0(0x6000000000000L, 0x0L);
- case 123:
- return jjStopAtPos(0, 10);
- case 124:
- return jjMoveStringLiteralDfa1_0(0x800001000L, 0x0L);
- case 125:
- return jjStopAtPos(0, 11);
- case 126:
- jjmatchedKind = 23;
- return jjMoveStringLiteralDfa1_0(0x10000L, 0x0L);
- default :
- return jjMoveNfa_0(24, 0);
- }
-}
-private int jjMoveStringLiteralDfa1_0(long active0, long active1)
-{
- try { curChar = input_stream.readChar(); }
- catch(java.io.IOException e) {
- jjStopStringLiteralDfa_0(0, active0, active1);
- return 1;
- }
- switch(curChar)
- {
- case 33:
- return jjMoveStringLiteralDfa2_0(active0, 0x100L, active1, 0L);
- case 38:
- if ((active0 & 0x1000000000L) != 0L)
- return jjStopAtPos(1, 36);
- break;
- case 42:
- if ((active0 & 0x10L) != 0L)
- return jjStartNfaWithStates_0(1, 4, 221);
- break;
- case 45:
- return jjMoveStringLiteralDfa2_0(active0, 0x200L, active1, 0x2L);
- case 61:
- if ((active0 & 0x1000L) != 0L)
- return jjStopAtPos(1, 12);
- else if ((active0 & 0x2000L) != 0L)
- return jjStopAtPos(1, 13);
- else if ((active0 & 0x4000L) != 0L)
- return jjStopAtPos(1, 14);
- else if ((active0 & 0x8000L) != 0L)
- return jjStopAtPos(1, 15);
- else if ((active0 & 0x10000L) != 0L)
- return jjStopAtPos(1, 16);
- else if ((active0 & 0x400000000L) != 0L)
- return jjStopAtPos(1, 34);
- else if ((active0 & 0x2000000000L) != 0L)
- return jjStopAtPos(1, 37);
- break;
- case 67:
- case 99:
- return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x800000008L);
- case 68:
- case 100:
- return jjMoveStringLiteralDfa2_0(active0, 0x200000000000000L, active1, 0L);
- case 69:
- case 101:
- return jjMoveStringLiteralDfa2_0(active0, 0x9000000000000000L, active1, 0x1L);
- case 70:
- case 102:
- if ((active1 & 0x20L) != 0L)
- return jjStartNfaWithStates_0(1, 69, 522);
- return jjMoveStringLiteralDfa2_0(active0, 0x880000000000000L, active1, 0x2000000000L);
- case 72:
- case 104:
- return jjMoveStringLiteralDfa2_0(active0, 0x4000000000000L, active1, 0L);
- case 73:
- case 105:
- return jjMoveStringLiteralDfa2_0(active0, 0x4040000000000000L, active1, 0x200000000L);
- case 77:
- case 109:
- return jjMoveStringLiteralDfa2_0(active0, 0x20000000000000L, active1, 0x400000000L);
- case 78:
- case 110:
- if ((active0 & 0x8000000000000L) != 0L)
- return jjStartNfaWithStates_0(1, 51, 522);
- break;
- case 79:
- case 111:
- if ((active0 & 0x2000000000000L) != 0L)
- return jjStartNfaWithStates_0(1, 49, 522);
- break;
- case 80:
- case 112:
- return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x1000000000L);
- case 82:
- case 114:
- return jjMoveStringLiteralDfa2_0(active0, 0x110000000000000L, active1, 0L);
- case 83:
- case 115:
- return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x4L);
- case 87:
- case 119:
- return jjMoveStringLiteralDfa2_0(active0, 0x2400000000000000L, active1, 0L);
- case 124:
- if ((active0 & 0x800000000L) != 0L)
- return jjStopAtPos(1, 35);
- break;
- default :
- break;
- }
- return jjStartNfa_0(0, active0, active1);
-}
-private int jjMoveStringLiteralDfa2_0(long old0, long active0, long old1, long active1)
-{
- if (((active0 &= old0) | (active1 &= old1)) == 0L)
- return jjStartNfa_0(0, old0, old1);
- try { curChar = input_stream.readChar(); }
- catch(java.io.IOException e) {
- jjStopStringLiteralDfa_0(1, active0, active1);
- return 2;
- }
- switch(curChar)
- {
- case 45:
- return jjMoveStringLiteralDfa3_0(active0, 0x100L, active1, 0L);
- case 62:
- if ((active0 & 0x200L) != 0L)
- return jjStopAtPos(2, 9);
- break;
- case 65:
- case 97:
- return jjMoveStringLiteralDfa3_0(active0, 0x1400000000000000L, active1, 0x1000000000L);
- case 69:
- case 101:
- return jjMoveStringLiteralDfa3_0(active0, 0x300000000000000L, active1, 0x400000000L);
- case 70:
- case 102:
- if ((active0 & 0x4000000000000000L) != 0L)
- return jjStartNfaWithStates_0(2, 62, 525);
- break;
- case 72:
- case 104:
- return jjMoveStringLiteralDfa3_0(active0, 0x2000000000000000L, active1, 0x800000000L);
- case 73:
- case 105:
- return jjMoveStringLiteralDfa3_0(active0, 0x20000000000000L, active1, 0L);
- case 76:
- case 108:
- return jjMoveStringLiteralDfa3_0(active0, 0x8000000000000000L, active1, 0L);
- case 77:
- case 109:
- return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x200000002L);
- case 78:
- case 110:
- return jjMoveStringLiteralDfa3_0(active0, 0x40000000000000L, active1, 0L);
- case 79:
- case 111:
- return jjMoveStringLiteralDfa3_0(active0, 0x810000000000000L, active1, 0x2000000008L);
- case 82:
- case 114:
- return jjMoveStringLiteralDfa3_0(active0, 0x4000000000000L, active1, 0L);
- case 85:
- case 117:
- return jjMoveStringLiteralDfa3_0(active0, 0x80000000000000L, active1, 0x4L);
- case 88:
- case 120:
- return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x1L);
- default :
- break;
- }
- return jjStartNfa_0(1, active0, active1);
-}
-private int jjMoveStringLiteralDfa3_0(long old0, long active0, long old1, long active1)
-{
- if (((active0 &= old0) | (active1 &= old1)) == 0L)
- return jjStartNfa_0(1, old0, old1);
- try { curChar = input_stream.readChar(); }
- catch(java.io.IOException e) {
- jjStopStringLiteralDfa_0(2, active0, active1);
- return 3;
- }
- switch(curChar)
- {
- case 45:
- if ((active0 & 0x100L) != 0L)
- return jjStopAtPos(3, 8);
- break;
- case 65:
- case 97:
- return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x800000000L);
- case 66:
- case 98:
- return jjMoveStringLiteralDfa4_0(active0, 0x200000000000000L, active1, 0L);
- case 67:
- case 99:
- return jjMoveStringLiteralDfa4_0(active0, 0x1040000000000000L, active1, 0L);
- case 68:
- case 100:
- return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x400000000L);
- case 71:
- case 103:
- return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x1000000000L);
- case 73:
- case 105:
- return jjMoveStringLiteralDfa4_0(active0, 0x2000000000000000L, active1, 0L);
- case 77:
- case 109:
- if ((active0 & 0x10000000000000L) != 0L)
- return jjStartNfaWithStates_0(3, 52, 522);
- break;
- case 78:
- case 110:
- return jjMoveStringLiteralDfa4_0(active0, 0x80000000000000L, active1, 0x2000000008L);
- case 79:
- case 111:
- return jjMoveStringLiteralDfa4_0(active0, 0x4000000000000L, active1, 0x2L);
- case 80:
- case 112:
- return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x200000004L);
- case 82:
- case 114:
- if ((active0 & 0x800000000000000L) != 0L)
- return jjStartNfaWithStates_0(3, 59, 525);
- return jjMoveStringLiteralDfa4_0(active0, 0x400000000000000L, active1, 0L);
- case 83:
- case 115:
- return jjMoveStringLiteralDfa4_0(active0, 0x8000000000000000L, active1, 0L);
- case 84:
- case 116:
- return jjMoveStringLiteralDfa4_0(active0, 0x100000000000000L, active1, 0x1L);
- case 88:
- case 120:
- return jjMoveStringLiteralDfa4_0(active0, 0x20000000000000L, active1, 0L);
- default :
- break;
- }
- return jjStartNfa_0(2, active0, active1);
-}
-private int jjMoveStringLiteralDfa4_0(long old0, long active0, long old1, long active1)
-{
- if (((active0 &= old0) | (active1 &= old1)) == 0L)
- return jjStartNfa_0(2, old0, old1);
- try { curChar = input_stream.readChar(); }
- catch(java.io.IOException e) {
- jjStopStringLiteralDfa_0(3, active0, active1);
- return 4;
- }
- switch(curChar)
- {
- case 67:
- case 99:
- return jjMoveStringLiteralDfa5_0(active0, 0x80000000000000L, active1, 0L);
- case 69:
- case 101:
- if ((active0 & 0x8000000000000000L) != 0L)
- return jjStartNfaWithStates_0(4, 63, 525);
- else if ((active1 & 0x1000000000L) != 0L)
- return jjStartNfaWithStates_0(4, 100, 525);
- return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x1L);
- case 72:
- case 104:
- if ((active0 & 0x1000000000000000L) != 0L)
- return jjStartNfaWithStates_0(4, 60, 525);
- break;
- case 73:
- case 105:
- return jjMoveStringLiteralDfa5_0(active0, 0x20000000000000L, active1, 0x400000000L);
- case 76:
- case 108:
- return jjMoveStringLiteralDfa5_0(active0, 0x2040000000000000L, active1, 0L);
- case 78:
- case 110:
- if ((active0 & 0x400000000000000L) != 0L)
- return jjStartNfaWithStates_0(4, 58, 525);
- break;
- case 79:
- case 111:
- return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x200000000L);
- case 80:
- case 112:
- return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x4L);
- case 82:
- case 114:
- return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x800000000L);
- case 84:
- case 116:
- return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x2000000008L);
- case 85:
- case 117:
- return jjMoveStringLiteralDfa5_0(active0, 0x304000000000000L, active1, 0L);
- case 90:
- case 122:
- return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x2L);
- default :
- break;
- }
- return jjStartNfa_0(3, active0, active1);
-}
-private int jjMoveStringLiteralDfa5_0(long old0, long active0, long old1, long active1)
-{
- if (((active0 &= old0) | (active1 &= old1)) == 0L)
- return jjStartNfa_0(3, old0, old1);
- try { curChar = input_stream.readChar(); }
- catch(java.io.IOException e) {
- jjStopStringLiteralDfa_0(4, active0, active1);
- return 5;
- }
- switch(curChar)
- {
- case 45:
- return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x2000000002L);
- case 65:
- case 97:
- if ((active1 & 0x400000000L) != 0L)
- return jjStartNfaWithStates_0(5, 98, 525);
- break;
- case 69:
- case 101:
- if ((active0 & 0x2000000000000000L) != 0L)
- return jjStartNfaWithStates_0(5, 61, 525);
- return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x8L);
- case 71:
- case 103:
- if ((active0 & 0x200000000000000L) != 0L)
- return jjStartNfaWithStates_0(5, 57, 525);
- return jjMoveStringLiteralDfa6_0(active0, 0x4000000000000L, active1, 0L);
- case 78:
- case 110:
- if ((active0 & 0x20000000000000L) != 0L)
- return jjStartNfaWithStates_0(5, 53, 525);
- return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x1L);
- case 79:
- case 111:
- return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x4L);
- case 82:
- case 114:
- return jjMoveStringLiteralDfa6_0(active0, 0x100000000000000L, active1, 0x200000000L);
- case 83:
- case 115:
- return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x800000000L);
- case 84:
- case 116:
- return jjMoveStringLiteralDfa6_0(active0, 0x80000000000000L, active1, 0L);
- case 85:
- case 117:
- return jjMoveStringLiteralDfa6_0(active0, 0x40000000000000L, active1, 0L);
- default :
- break;
- }
- return jjStartNfa_0(4, active0, active1);
-}
-private int jjMoveStringLiteralDfa6_0(long old0, long active0, long old1, long active1)
-{
- if (((active0 &= old0) | (active1 &= old1)) == 0L)
- return jjStartNfa_0(4, old0, old1);
- try { curChar = input_stream.readChar(); }
- catch(java.io.IOException e) {
- jjStopStringLiteralDfa_0(5, active0, active1);
- return 6;
- }
- switch(curChar)
- {
- case 68:
- case 100:
- if ((active1 & 0x1L) != 0L)
- return jjStartNfaWithStates_0(6, 64, 525);
- return jjMoveStringLiteralDfa7_0(active0, 0x40000000000000L, active1, 0x2L);
- case 69:
- case 101:
- return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x800000000L);
- case 70:
- case 102:
- return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x2000000000L);
- case 72:
- case 104:
- if ((active0 & 0x4000000000000L) != 0L)
- return jjStartNfaWithStates_0(6, 50, 522);
- break;
- case 73:
- case 105:
- return jjMoveStringLiteralDfa7_0(active0, 0x80000000000000L, active1, 0L);
- case 78:
- case 110:
- if ((active0 & 0x100000000000000L) != 0L)
- return jjStartNfaWithStates_0(6, 56, 525);
- return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x8L);
- case 82:
- case 114:
- return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x4L);
- case 84:
- case 116:
- if ((active1 & 0x200000000L) != 0L)
- return jjStartNfaWithStates_0(6, 97, 525);
- break;
- default :
- break;
- }
- return jjStartNfa_0(5, active0, active1);
-}
-private int jjMoveStringLiteralDfa7_0(long old0, long active0, long old1, long active1)
-{
- if (((active0 &= old0) | (active1 &= old1)) == 0L)
- return jjStartNfa_0(5, old0, old1);
- try { curChar = input_stream.readChar(); }
- catch(java.io.IOException e) {
- jjStopStringLiteralDfa_0(6, active0, active1);
- return 7;
- }
- switch(curChar)
- {
- case 65:
- case 97:
- return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0x2000000000L);
- case 69:
- case 101:
- if ((active0 & 0x40000000000000L) != 0L)
- return jjStartNfaWithStates_0(7, 54, 525);
- break;
- case 79:
- case 111:
- return jjMoveStringLiteralDfa8_0(active0, 0x80000000000000L, active1, 0x2L);
- case 84:
- case 116:
- if ((active1 & 0x8L) != 0L)
- return jjStartNfaWithStates_0(7, 67, 525);
- else if ((active1 & 0x800000000L) != 0L)
- return jjStartNfaWithStates_0(7, 99, 525);
- return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0x4L);
- default :
- break;
- }
- return jjStartNfa_0(6, active0, active1);
-}
-private int jjMoveStringLiteralDfa8_0(long old0, long active0, long old1, long active1)
-{
- if (((active0 &= old0) | (active1 &= old1)) == 0L)
- return jjStartNfa_0(6, old0, old1);
- try { curChar = input_stream.readChar(); }
- catch(java.io.IOException e) {
- jjStopStringLiteralDfa_0(7, active0, active1);
- return 8;
- }
- switch(curChar)
- {
- case 67:
- case 99:
- return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0x2000000002L);
- case 78:
- case 110:
- if ((active0 & 0x80000000000000L) != 0L)
- return jjStartNfaWithStates_0(8, 55, 525);
- break;
- case 83:
- case 115:
- if ((active1 & 0x4L) != 0L)
- return jjStartNfaWithStates_0(8, 66, 525);
- break;
- default :
- break;
- }
- return jjStartNfa_0(7, active0, active1);
-}
-private int jjMoveStringLiteralDfa9_0(long old0, long active0, long old1, long active1)
-{
- if (((active0 &= old0) | (active1 &= old1)) == 0L)
- return jjStartNfa_0(7, old0, old1);
- try { curChar = input_stream.readChar(); }
- catch(java.io.IOException e) {
- jjStopStringLiteralDfa_0(8, 0L, active1);
- return 9;
- }
- switch(curChar)
- {
- case 69:
- case 101:
- if ((active1 & 0x2000000000L) != 0L)
- return jjStartNfaWithStates_0(9, 101, 525);
- break;
- case 85:
- case 117:
- return jjMoveStringLiteralDfa10_0(active1, 0x2L);
- default :
- break;
- }
- return jjStartNfa_0(8, 0L, active1);
-}
-private int jjMoveStringLiteralDfa10_0(long old1, long active1)
-{
- if (((active1 &= old1)) == 0L)
- return jjStartNfa_0(8, 0L, old1);
- try { curChar = input_stream.readChar(); }
- catch(java.io.IOException e) {
- jjStopStringLiteralDfa_0(9, 0L, active1);
- return 10;
- }
- switch(curChar)
- {
- case 77:
- case 109:
- return jjMoveStringLiteralDfa11_0(active1, 0x2L);
- default :
- break;
- }
- return jjStartNfa_0(9, 0L, active1);
-}
-private int jjMoveStringLiteralDfa11_0(long old1, long active1)
-{
- if (((active1 &= old1)) == 0L)
- return jjStartNfa_0(9, 0L, old1);
- try { curChar = input_stream.readChar(); }
- catch(java.io.IOException e) {
- jjStopStringLiteralDfa_0(10, 0L, active1);
- return 11;
- }
- switch(curChar)
- {
- case 69:
- case 101:
- return jjMoveStringLiteralDfa12_0(active1, 0x2L);
- default :
- break;
- }
- return jjStartNfa_0(10, 0L, active1);
-}
-private int jjMoveStringLiteralDfa12_0(long old1, long active1)
-{
- if (((active1 &= old1)) == 0L)
- return jjStartNfa_0(10, 0L, old1);
- try { curChar = input_stream.readChar(); }
- catch(java.io.IOException e) {
- jjStopStringLiteralDfa_0(11, 0L, active1);
- return 12;
- }
- switch(curChar)
- {
- case 78:
- case 110:
- return jjMoveStringLiteralDfa13_0(active1, 0x2L);
- default :
- break;
- }
- return jjStartNfa_0(11, 0L, active1);
-}
-private int jjMoveStringLiteralDfa13_0(long old1, long active1)
-{
- if (((active1 &= old1)) == 0L)
- return jjStartNfa_0(11, 0L, old1);
- try { curChar = input_stream.readChar(); }
- catch(java.io.IOException e) {
- jjStopStringLiteralDfa_0(12, 0L, active1);
- return 13;
- }
- switch(curChar)
- {
- case 84:
- case 116:
- if ((active1 & 0x2L) != 0L)
- return jjStartNfaWithStates_0(13, 65, 525);
- break;
- default :
- break;
- }
- return jjStartNfa_0(12, 0L, active1);
-}
-private int jjStartNfaWithStates_0(int pos, int kind, int state)
-{
- jjmatchedKind = kind;
- jjmatchedPos = pos;
- try { curChar = input_stream.readChar(); }
- catch(java.io.IOException e) { return pos + 1; }
- return jjMoveNfa_0(state, pos + 1);
-}
-static final long[] jjbitVec0 = {
- 0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
-};
-private int jjMoveNfa_0(int startState, int curPos)
-{
- int startsAt = 0;
- jjnewStateCnt = 522;
- int i = 1;
- jjstateSet[0] = startState;
- int kind = 0x7fffffff;
- for (;;)
- {
- if (++jjround == 0x7fffffff)
- ReInitRounds();
- if (curChar < 64)
- {
- long l = 1L << curChar;
- do
- {
- switch(jjstateSet[--i])
- {
- case 524:
- if ((0x100003600L & l) != 0L)
- jjCheckNAddTwoStates(256, 265);
- if ((0x100003600L & l) != 0L)
- jjCheckNAddTwoStates(248, 255);
- break;
- case 162:
- if (curChar == 45)
- jjstateSet[jjnewStateCnt++] = 108;
- if (curChar == 45)
- jjstateSet[jjnewStateCnt++] = 213;
- if (curChar == 45)
- jjstateSet[jjnewStateCnt++] = 201;
- if (curChar == 45)
- jjstateSet[jjnewStateCnt++] = 185;
- if (curChar == 45)
- jjstateSet[jjnewStateCnt++] = 174;
- break;
- case 29:
- if ((0x3ff200000000000L & l) != 0L)
- jjCheckNAddStates(0, 3);
- else if ((0x100003600L & l) != 0L)
- jjCheckNAddTwoStates(236, 237);
- else if (curChar == 40)
- {
- if (kind > 118)
- kind = 118;
- }
- if ((0x3ff200000000000L & l) != 0L)
- {
- if (kind > 72)
- kind = 72;
- jjCheckNAddTwoStates(225, 226);
- }
- break;
- case 171:
- if ((0x3ff200000000000L & l) != 0L)
- {
- if (kind > 103)
- kind = 103;
- jjCheckNAddTwoStates(109, 110);
- }
- if (curChar == 45)
- jjstateSet[jjnewStateCnt++] = 170;
- break;
- case 523:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(4, 8);
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(327, 330);
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(324, 326);
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(322, 323);
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(319, 321);
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(314, 318);
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(310, 313);
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(306, 309);
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(303, 305);
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(299, 302);
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(295, 298);
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(292, 294);
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(289, 291);
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(286, 288);
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(283, 285);
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(280, 282);
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(277, 279);
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(274, 276);
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(272, 273);
- if ((0x3ff000000000000L & l) != 0L)
- {
- if (kind > 73)
- kind = 73;
- jjCheckNAdd(271);
- }
- break;
- case 525:
- case 109:
- if ((0x3ff200000000000L & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddTwoStates(109, 110);
- break;
- case 216:
- if (curChar == 42)
- jjstateSet[jjnewStateCnt++] = 221;
- else if (curChar == 47)
- {
- if (kind > 2)
- kind = 2;
- jjCheckNAddStates(9, 11);
- }
- break;
- case 173:
- if ((0x3ff200000000000L & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddTwoStates(109, 110);
- break;
- case 24:
- if ((0x3ff000000000000L & l) != 0L)
- {
- if (kind > 73)
- kind = 73;
- jjCheckNAddStates(12, 93);
- }
- else if ((0x100003600L & l) != 0L)
- {
- if (kind > 1)
- kind = 1;
- jjCheckNAdd(0);
- }
- else if (curChar == 46)
- jjCheckNAddStates(94, 113);
- else if (curChar == 45)
- jjAddStates(114, 115);
- else if (curChar == 33)
- jjCheckNAddStates(116, 119);
- else if (curChar == 47)
- jjAddStates(120, 121);
- else if (curChar == 35)
- jjCheckNAddTwoStates(96, 97);
- else if (curChar == 36)
- jjCheckNAddStates(122, 125);
- else if (curChar == 39)
- jjCheckNAddStates(126, 129);
- else if (curChar == 34)
- jjCheckNAddStates(130, 133);
- if (curChar == 45)
- jjstateSet[jjnewStateCnt++] = 38;
- else if (curChar == 35)
- jjstateSet[jjnewStateCnt++] = 1;
- break;
- case 172:
- if ((0x3ff200000000000L & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddTwoStates(109, 110);
- break;
- case 170:
- if ((0x3ff200000000000L & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddTwoStates(109, 110);
- break;
- case 75:
- if (curChar == 45)
- jjCheckNAdd(76);
- break;
- case 522:
- if ((0x3ff200000000000L & l) != 0L)
- jjCheckNAddStates(0, 3);
- else if ((0x100003600L & l) != 0L)
- jjCheckNAddTwoStates(236, 237);
- else if (curChar == 40)
- {
- if (kind > 118)
- kind = 118;
- }
- if ((0x3ff200000000000L & l) != 0L)
- {
- if (kind > 72)
- kind = 72;
- jjCheckNAddTwoStates(225, 226);
- }
- break;
- case 0:
- if ((0x100003600L & l) == 0L)
- break;
- if (kind > 1)
- kind = 1;
- jjCheckNAdd(0);
- break;
- case 2:
- if (curChar == 36)
- jjCheckNAddStates(134, 137);
- break;
- case 3:
- if (curChar == 45)
- jjCheckNAdd(4);
- break;
- case 5:
- if ((0x3ff200000000000L & l) != 0L)
- jjCheckNAddStates(138, 140);
- break;
- case 8:
- if ((0xffffffff00000000L & l) != 0L)
- jjCheckNAddStates(138, 140);
- break;
- case 9:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(141, 145);
- break;
- case 10:
- if ((0x100003600L & l) != 0L)
- jjCheckNAddStates(138, 140);
- break;
- case 11:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(146, 153);
- break;
- case 12:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(154, 157);
- break;
- case 13:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(158, 162);
- break;
- case 14:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(163, 168);
- break;
- case 15:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(169, 175);
- break;
- case 18:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(176, 180);
- break;
- case 19:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(181, 188);
- break;
- case 20:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(189, 192);
- break;
- case 21:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(193, 197);
- break;
- case 22:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(198, 203);
- break;
- case 23:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(204, 210);
- break;
- case 36:
- if (curChar == 45)
- jjstateSet[jjnewStateCnt++] = 35;
- break;
- case 39:
- if (curChar == 45)
- jjstateSet[jjnewStateCnt++] = 38;
- break;
- case 40:
- if (curChar == 34)
- jjCheckNAddStates(130, 133);
- break;
- case 41:
- if ((0xfffffffb00000200L & l) != 0L)
- jjCheckNAddStates(130, 133);
- break;
- case 42:
- if (curChar == 34 && kind > 71)
- kind = 71;
- break;
- case 44:
- if (curChar == 12)
- jjCheckNAddStates(130, 133);
- break;
- case 46:
- if ((0xffffffff00000000L & l) != 0L)
- jjCheckNAddStates(130, 133);
- break;
- case 47:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(211, 216);
- break;
- case 48:
- if ((0x100003600L & l) != 0L)
- jjCheckNAddStates(130, 133);
- break;
- case 49:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(217, 225);
- break;
- case 50:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(226, 230);
- break;
- case 51:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(231, 236);
- break;
- case 52:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(237, 243);
- break;
- case 53:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(244, 251);
- break;
- case 54:
- if (curChar == 13)
- jjCheckNAddStates(130, 133);
- break;
- case 55:
- if (curChar == 10)
- jjCheckNAddStates(130, 133);
- break;
- case 56:
- if (curChar == 13)
- jjstateSet[jjnewStateCnt++] = 55;
- break;
- case 57:
- if (curChar == 39)
- jjCheckNAddStates(126, 129);
- break;
- case 58:
- if ((0xffffff7f00000200L & l) != 0L)
- jjCheckNAddStates(126, 129);
- break;
- case 59:
- if (curChar == 39 && kind > 71)
- kind = 71;
- break;
- case 61:
- if (curChar == 12)
- jjCheckNAddStates(126, 129);
- break;
- case 63:
- if ((0xffffffff00000000L & l) != 0L)
- jjCheckNAddStates(126, 129);
- break;
- case 64:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(252, 257);
- break;
- case 65:
- if ((0x100003600L & l) != 0L)
- jjCheckNAddStates(126, 129);
- break;
- case 66:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(258, 266);
- break;
- case 67:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(267, 271);
- break;
- case 68:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(272, 277);
- break;
- case 69:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(278, 284);
- break;
- case 70:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(285, 292);
- break;
- case 71:
- if (curChar == 13)
- jjCheckNAddStates(126, 129);
- break;
- case 72:
- if (curChar == 10)
- jjCheckNAddStates(126, 129);
- break;
- case 73:
- if (curChar == 13)
- jjstateSet[jjnewStateCnt++] = 72;
- break;
- case 74:
- if (curChar == 36)
- jjCheckNAddStates(122, 125);
- break;
- case 77:
- if ((0x3ff200000000000L & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddTwoStates(77, 78);
- break;
- case 79:
- if ((0xffffffff00000000L & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddTwoStates(77, 78);
- break;
- case 80:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddStates(293, 296);
- break;
- case 81:
- if ((0x100003600L & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddTwoStates(77, 78);
- break;
- case 82:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddStates(297, 303);
- break;
- case 83:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddStates(304, 306);
- break;
- case 84:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddStates(307, 310);
- break;
- case 85:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddStates(311, 315);
- break;
- case 86:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddStates(316, 321);
- break;
- case 89:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddStates(322, 325);
- break;
- case 90:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddStates(326, 332);
- break;
- case 91:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddStates(333, 335);
- break;
- case 92:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddStates(336, 339);
- break;
- case 93:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddStates(340, 344);
- break;
- case 94:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddStates(345, 350);
- break;
- case 95:
- if (curChar == 35)
- jjCheckNAddTwoStates(96, 97);
- break;
- case 96:
- if ((0x3ff200000000000L & l) == 0L)
- break;
- if (kind > 96)
- kind = 96;
- jjCheckNAddTwoStates(96, 97);
- break;
- case 98:
- if ((0xffffffff00000000L & l) == 0L)
- break;
- if (kind > 96)
- kind = 96;
- jjCheckNAddTwoStates(96, 97);
- break;
- case 99:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 96)
- kind = 96;
- jjCheckNAddStates(351, 354);
- break;
- case 100:
- if ((0x100003600L & l) == 0L)
- break;
- if (kind > 96)
- kind = 96;
- jjCheckNAddTwoStates(96, 97);
- break;
- case 101:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 96)
- kind = 96;
- jjCheckNAddStates(355, 361);
- break;
- case 102:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 96)
- kind = 96;
- jjCheckNAddStates(362, 364);
- break;
- case 103:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 96)
- kind = 96;
- jjCheckNAddStates(365, 368);
- break;
- case 104:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 96)
- kind = 96;
- jjCheckNAddStates(369, 373);
- break;
- case 105:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 96)
- kind = 96;
- jjCheckNAddStates(374, 379);
- break;
- case 107:
- if (curChar == 45)
- jjstateSet[jjnewStateCnt++] = 108;
- break;
- case 111:
- if ((0xffffffff00000000L & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddTwoStates(109, 110);
- break;
- case 112:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddStates(380, 383);
- break;
- case 113:
- if ((0x100003600L & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddTwoStates(109, 110);
- break;
- case 114:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddStates(384, 390);
- break;
- case 115:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddStates(391, 393);
- break;
- case 116:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddStates(394, 397);
- break;
- case 117:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddStates(398, 402);
- break;
- case 118:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddStates(403, 408);
- break;
- case 121:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddStates(409, 412);
- break;
- case 122:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddStates(413, 419);
- break;
- case 123:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddStates(420, 422);
- break;
- case 124:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddStates(423, 426);
- break;
- case 125:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddStates(427, 431);
- break;
- case 126:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddStates(432, 437);
- break;
- case 128:
- if ((0x100003600L & l) != 0L)
- jjAddStates(438, 439);
- break;
- case 129:
- if (curChar == 40 && kind > 115)
- kind = 115;
- break;
- case 136:
- if ((0x100003600L & l) != 0L)
- jjAddStates(440, 441);
- break;
- case 137:
- if (curChar == 40 && kind > 116)
- kind = 116;
- break;
- case 144:
- if ((0x100003600L & l) != 0L)
- jjAddStates(442, 443);
- break;
- case 145:
- if (curChar == 40 && kind > 117)
- kind = 117;
- break;
- case 175:
- if (curChar == 45)
- jjstateSet[jjnewStateCnt++] = 174;
- break;
- case 184:
- if (curChar == 45)
- jjstateSet[jjnewStateCnt++] = 183;
- break;
- case 186:
- if (curChar == 45)
- jjstateSet[jjnewStateCnt++] = 185;
- break;
- case 195:
- if (curChar == 45)
- jjstateSet[jjnewStateCnt++] = 194;
- break;
- case 202:
- if (curChar == 45)
- jjstateSet[jjnewStateCnt++] = 201;
- break;
- case 211:
- if (curChar == 45)
- jjstateSet[jjnewStateCnt++] = 210;
- break;
- case 214:
- if (curChar == 45)
- jjstateSet[jjnewStateCnt++] = 213;
- break;
- case 215:
- if (curChar == 47)
- jjAddStates(120, 121);
- break;
- case 217:
- if ((0xffffffffffffdbffL & l) == 0L)
- break;
- if (kind > 2)
- kind = 2;
- jjCheckNAddStates(9, 11);
- break;
- case 218:
- if ((0x2400L & l) != 0L && kind > 2)
- kind = 2;
- break;
- case 219:
- if (curChar == 10 && kind > 2)
- kind = 2;
- break;
- case 220:
- if (curChar == 13)
- jjstateSet[jjnewStateCnt++] = 219;
- break;
- case 221:
- if (curChar == 42)
- jjstateSet[jjnewStateCnt++] = 222;
- break;
- case 222:
- if ((0xffff7fffffffffffL & l) != 0L && kind > 3)
- kind = 3;
- break;
- case 223:
- if (curChar == 42)
- jjstateSet[jjnewStateCnt++] = 221;
- break;
- case 225:
- if ((0x3ff200000000000L & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddTwoStates(225, 226);
- break;
- case 227:
- if ((0xffffffff00000000L & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddTwoStates(225, 226);
- break;
- case 228:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddStates(444, 447);
- break;
- case 229:
- if ((0x100003600L & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddTwoStates(225, 226);
- break;
- case 230:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddStates(448, 454);
- break;
- case 231:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddStates(455, 457);
- break;
- case 232:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddStates(458, 461);
- break;
- case 233:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddStates(462, 466);
- break;
- case 234:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddStates(467, 472);
- break;
- case 235:
- if ((0x3ff200000000000L & l) != 0L)
- jjCheckNAddStates(0, 3);
- break;
- case 236:
- if ((0x100003600L & l) != 0L)
- jjCheckNAddTwoStates(236, 237);
- break;
- case 237:
- if (curChar == 40 && kind > 118)
- kind = 118;
- break;
- case 239:
- if ((0xffffffff00000000L & l) != 0L)
- jjCheckNAddStates(0, 3);
- break;
- case 240:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(473, 477);
- break;
- case 241:
- if ((0x100003600L & l) != 0L)
- jjCheckNAddStates(0, 3);
- break;
- case 242:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(478, 485);
- break;
- case 243:
- case 457:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(486, 489);
- break;
- case 244:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(490, 494);
- break;
- case 245:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(495, 500);
- break;
- case 246:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(501, 507);
- break;
- case 247:
- if (curChar == 33)
- jjCheckNAddStates(116, 119);
- break;
- case 248:
- if ((0x100003600L & l) != 0L)
- jjCheckNAddTwoStates(248, 255);
- break;
- case 256:
- if ((0x100003600L & l) != 0L)
- jjCheckNAddTwoStates(256, 265);
- break;
- case 266:
- if (curChar == 45)
- jjAddStates(114, 115);
- break;
- case 270:
- if (curChar == 46)
- jjCheckNAddStates(94, 113);
- break;
- case 271:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 73)
- kind = 73;
- jjCheckNAdd(271);
- break;
- case 272:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(272, 273);
- break;
- case 273:
- if (curChar == 37 && kind > 77)
- kind = 77;
- break;
- case 274:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(274, 276);
- break;
- case 277:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(277, 279);
- break;
- case 280:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(280, 282);
- break;
- case 283:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(283, 285);
- break;
- case 286:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(286, 288);
- break;
- case 289:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(289, 291);
- break;
- case 292:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(292, 294);
- break;
- case 295:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(295, 298);
- break;
- case 299:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(299, 302);
- break;
- case 303:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(303, 305);
- break;
- case 306:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(306, 309);
- break;
- case 310:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(310, 313);
- break;
- case 314:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(314, 318);
- break;
- case 319:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(319, 321);
- break;
- case 322:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(322, 323);
- break;
- case 324:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(324, 326);
- break;
- case 327:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(327, 330);
- break;
- case 331:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(4, 8);
- break;
- case 332:
- if (curChar == 45)
- jjCheckNAdd(333);
- break;
- case 334:
- if ((0x3ff200000000000L & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddTwoStates(334, 335);
- break;
- case 336:
- if ((0xffffffff00000000L & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddTwoStates(334, 335);
- break;
- case 337:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddStates(508, 511);
- break;
- case 338:
- if ((0x100003600L & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddTwoStates(334, 335);
- break;
- case 339:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddStates(512, 518);
- break;
- case 340:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddStates(519, 521);
- break;
- case 341:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddStates(522, 525);
- break;
- case 342:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddStates(526, 530);
- break;
- case 343:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddStates(531, 536);
- break;
- case 346:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddStates(537, 540);
- break;
- case 347:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddStates(541, 547);
- break;
- case 348:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddStates(548, 550);
- break;
- case 349:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddStates(551, 554);
- break;
- case 350:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddStates(555, 559);
- break;
- case 351:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddStates(560, 565);
- break;
- case 353:
- if (curChar == 40)
- jjCheckNAddStates(566, 571);
- break;
- case 354:
- if ((0xfffffc7a00000000L & l) != 0L)
- jjCheckNAddStates(572, 575);
- break;
- case 355:
- if ((0x100003600L & l) != 0L)
- jjCheckNAddTwoStates(355, 356);
- break;
- case 356:
- if (curChar == 41 && kind > 75)
- kind = 75;
- break;
- case 358:
- if ((0xffffffff00000000L & l) != 0L)
- jjCheckNAddStates(572, 575);
- break;
- case 359:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(576, 580);
- break;
- case 360:
- if ((0x100003600L & l) != 0L)
- jjCheckNAddStates(572, 575);
- break;
- case 361:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(581, 588);
- break;
- case 362:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(589, 592);
- break;
- case 363:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(593, 597);
- break;
- case 364:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(598, 603);
- break;
- case 365:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(604, 610);
- break;
- case 366:
- if (curChar == 39)
- jjCheckNAddStates(611, 614);
- break;
- case 367:
- if ((0xffffff7f00000200L & l) != 0L)
- jjCheckNAddStates(611, 614);
- break;
- case 368:
- if (curChar == 39)
- jjCheckNAddTwoStates(355, 356);
- break;
- case 370:
- if (curChar == 12)
- jjCheckNAddStates(611, 614);
- break;
- case 372:
- if ((0xffffffff00000000L & l) != 0L)
- jjCheckNAddStates(611, 614);
- break;
- case 373:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(615, 620);
- break;
- case 374:
- if ((0x100003600L & l) != 0L)
- jjCheckNAddStates(611, 614);
- break;
- case 375:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(621, 629);
- break;
- case 376:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(630, 634);
- break;
- case 377:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(635, 640);
- break;
- case 378:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(641, 647);
- break;
- case 379:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(648, 655);
- break;
- case 380:
- if (curChar == 13)
- jjCheckNAddStates(611, 614);
- break;
- case 381:
- if (curChar == 10)
- jjCheckNAddStates(611, 614);
- break;
- case 382:
- if (curChar == 13)
- jjstateSet[jjnewStateCnt++] = 381;
- break;
- case 383:
- if (curChar == 34)
- jjCheckNAddStates(656, 659);
- break;
- case 384:
- if ((0xfffffffb00000200L & l) != 0L)
- jjCheckNAddStates(656, 659);
- break;
- case 385:
- if (curChar == 34)
- jjCheckNAddTwoStates(355, 356);
- break;
- case 387:
- if (curChar == 12)
- jjCheckNAddStates(656, 659);
- break;
- case 389:
- if ((0xffffffff00000000L & l) != 0L)
- jjCheckNAddStates(656, 659);
- break;
- case 390:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(660, 665);
- break;
- case 391:
- if ((0x100003600L & l) != 0L)
- jjCheckNAddStates(656, 659);
- break;
- case 392:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(666, 674);
- break;
- case 393:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(675, 679);
- break;
- case 394:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(680, 685);
- break;
- case 395:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(686, 692);
- break;
- case 396:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(693, 700);
- break;
- case 397:
- if (curChar == 13)
- jjCheckNAddStates(656, 659);
- break;
- case 398:
- if (curChar == 10)
- jjCheckNAddStates(656, 659);
- break;
- case 399:
- if (curChar == 13)
- jjstateSet[jjnewStateCnt++] = 398;
- break;
- case 400:
- if ((0x100003600L & l) != 0L)
- jjCheckNAddStates(701, 707);
- break;
- case 403:
- if (curChar == 43)
- jjAddStates(708, 709);
- break;
- case 404:
- if (curChar != 63)
- break;
- if (kind > 114)
- kind = 114;
- jjstateSet[jjnewStateCnt++] = 405;
- break;
- case 405:
- if (curChar != 63)
- break;
- if (kind > 114)
- kind = 114;
- jjCheckNAddStates(710, 713);
- break;
- case 406:
- if (curChar == 63 && kind > 114)
- kind = 114;
- break;
- case 407:
- case 422:
- case 426:
- case 429:
- case 432:
- if (curChar != 63)
- break;
- if (kind > 114)
- kind = 114;
- jjCheckNAdd(406);
- break;
- case 408:
- if (curChar != 63)
- break;
- if (kind > 114)
- kind = 114;
- jjCheckNAddTwoStates(406, 407);
- break;
- case 409:
- if (curChar != 63)
- break;
- if (kind > 114)
- kind = 114;
- jjCheckNAddStates(714, 716);
- break;
- case 410:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 114)
- kind = 114;
- jjAddStates(717, 722);
- break;
- case 411:
- if ((0x3ff000000000000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 412;
- break;
- case 412:
- if ((0x3ff000000000000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 413;
- break;
- case 413:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAdd(414);
- break;
- case 414:
- if ((0x3ff000000000000L & l) != 0L && kind > 114)
- kind = 114;
- break;
- case 415:
- if ((0x3ff000000000000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 416;
- break;
- case 416:
- if ((0x3ff000000000000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 417;
- break;
- case 417:
- if ((0x3ff000000000000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 418;
- break;
- case 418:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 114)
- kind = 114;
- jjCheckNAdd(406);
- break;
- case 419:
- if ((0x3ff000000000000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 420;
- break;
- case 420:
- if ((0x3ff000000000000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 421;
- break;
- case 421:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 114)
- kind = 114;
- jjstateSet[jjnewStateCnt++] = 422;
- break;
- case 423:
- if ((0x3ff000000000000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 424;
- break;
- case 424:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 114)
- kind = 114;
- jjstateSet[jjnewStateCnt++] = 425;
- break;
- case 425:
- if (curChar != 63)
- break;
- if (kind > 114)
- kind = 114;
- jjCheckNAddTwoStates(406, 426);
- break;
- case 427:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 114)
- kind = 114;
- jjstateSet[jjnewStateCnt++] = 428;
- break;
- case 428:
- if (curChar != 63)
- break;
- if (kind > 114)
- kind = 114;
- jjCheckNAddStates(723, 725);
- break;
- case 430:
- if (curChar != 63)
- break;
- if (kind > 114)
- kind = 114;
- jjCheckNAddTwoStates(406, 429);
- break;
- case 431:
- if (curChar != 63)
- break;
- if (kind > 114)
- kind = 114;
- jjCheckNAddStates(726, 729);
- break;
- case 433:
- if (curChar != 63)
- break;
- if (kind > 114)
- kind = 114;
- jjCheckNAddTwoStates(406, 432);
- break;
- case 434:
- if (curChar != 63)
- break;
- if (kind > 114)
- kind = 114;
- jjCheckNAddStates(730, 732);
- break;
- case 435:
- if (curChar == 43)
- jjstateSet[jjnewStateCnt++] = 436;
- break;
- case 436:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(437, 443);
- break;
- case 437:
- if (curChar == 45)
- jjstateSet[jjnewStateCnt++] = 438;
- break;
- case 438:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 114)
- kind = 114;
- jjstateSet[jjnewStateCnt++] = 439;
- break;
- case 439:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 114)
- kind = 114;
- jjCheckNAddStates(733, 736);
- break;
- case 440:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 114)
- kind = 114;
- jjCheckNAdd(414);
- break;
- case 441:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 114)
- kind = 114;
- jjCheckNAddTwoStates(414, 440);
- break;
- case 442:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 114)
- kind = 114;
- jjCheckNAddStates(737, 739);
- break;
- case 443:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(740, 744);
- break;
- case 444:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAdd(437);
- break;
- case 445:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(444, 437);
- break;
- case 446:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(745, 747);
- break;
- case 447:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(748, 751);
- break;
- case 449:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddStates(752, 755);
- break;
- case 450:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddStates(756, 762);
- break;
- case 451:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddStates(763, 765);
- break;
- case 452:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddStates(766, 769);
- break;
- case 453:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddStates(770, 774);
- break;
- case 454:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddStates(775, 780);
- break;
- case 455:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(781, 785);
- break;
- case 456:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(786, 793);
- break;
- case 458:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(794, 798);
- break;
- case 459:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(799, 804);
- break;
- case 460:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(805, 811);
- break;
- case 461:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 73)
- kind = 73;
- jjCheckNAddStates(12, 93);
- break;
- case 462:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 73)
- kind = 73;
- jjCheckNAdd(462);
- break;
- case 463:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(463, 464);
- break;
- case 464:
- if (curChar == 46)
- jjCheckNAdd(271);
- break;
- case 465:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(465, 273);
- break;
- case 466:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(466, 467);
- break;
- case 467:
- if (curChar == 46)
- jjCheckNAdd(272);
- break;
- case 468:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(468, 276);
- break;
- case 469:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(469, 470);
- break;
- case 470:
- if (curChar == 46)
- jjCheckNAdd(274);
- break;
- case 471:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(471, 279);
- break;
- case 472:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(472, 473);
- break;
- case 473:
- if (curChar == 46)
- jjCheckNAdd(277);
- break;
- case 474:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(474, 282);
- break;
- case 475:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(475, 476);
- break;
- case 476:
- if (curChar == 46)
- jjCheckNAdd(280);
- break;
- case 477:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(477, 285);
- break;
- case 478:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(478, 479);
- break;
- case 479:
- if (curChar == 46)
- jjCheckNAdd(283);
- break;
- case 480:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(480, 288);
- break;
- case 481:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(481, 482);
- break;
- case 482:
- if (curChar == 46)
- jjCheckNAdd(286);
- break;
- case 483:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(483, 291);
- break;
- case 484:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(484, 485);
- break;
- case 485:
- if (curChar == 46)
- jjCheckNAdd(289);
- break;
- case 486:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(486, 294);
- break;
- case 487:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(487, 488);
- break;
- case 488:
- if (curChar == 46)
- jjCheckNAdd(292);
- break;
- case 489:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(489, 298);
- break;
- case 490:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(490, 491);
- break;
- case 491:
- if (curChar == 46)
- jjCheckNAdd(295);
- break;
- case 492:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(492, 302);
- break;
- case 493:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(493, 494);
- break;
- case 494:
- if (curChar == 46)
- jjCheckNAdd(299);
- break;
- case 495:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(495, 305);
- break;
- case 496:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(496, 497);
- break;
- case 497:
- if (curChar == 46)
- jjCheckNAdd(303);
- break;
- case 498:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(498, 309);
- break;
- case 499:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(499, 500);
- break;
- case 500:
- if (curChar == 46)
- jjCheckNAdd(306);
- break;
- case 501:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(501, 313);
- break;
- case 502:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(502, 503);
- break;
- case 503:
- if (curChar == 46)
- jjCheckNAdd(310);
- break;
- case 504:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(504, 318);
- break;
- case 505:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(505, 506);
- break;
- case 506:
- if (curChar == 46)
- jjCheckNAdd(314);
- break;
- case 507:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(507, 321);
- break;
- case 508:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(508, 509);
- break;
- case 509:
- if (curChar == 46)
- jjCheckNAdd(319);
- break;
- case 510:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(510, 323);
- break;
- case 511:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(511, 512);
- break;
- case 512:
- if (curChar == 46)
- jjCheckNAdd(322);
- break;
- case 513:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(513, 326);
- break;
- case 514:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(514, 515);
- break;
- case 515:
- if (curChar == 46)
- jjCheckNAdd(324);
- break;
- case 516:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(516, 330);
- break;
- case 517:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(517, 518);
- break;
- case 518:
- if (curChar == 46)
- jjCheckNAdd(327);
- break;
- case 519:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddStates(812, 816);
- break;
- case 520:
- if ((0x3ff000000000000L & l) != 0L)
- jjCheckNAddTwoStates(520, 521);
- break;
- case 521:
- if (curChar == 46)
- jjCheckNAdd(331);
- break;
- default : break;
- }
- } while(i != startsAt);
- }
- else if (curChar < 128)
- {
- long l = 1L << (curChar & 077);
- do
- {
- switch(jjstateSet[--i])
- {
- case 524:
- if ((0x20000000200L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 264;
- else if ((0x1000000010L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 254;
- break;
- case 162:
- if ((0x7fffffe87fffffeL & l) != 0L)
- {
- if (kind > 103)
- kind = 103;
- jjCheckNAddTwoStates(109, 110);
- }
- else if (curChar == 92)
- jjCheckNAddTwoStates(111, 121);
- if ((0x80000000800L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 161;
- break;
- case 29:
- if ((0x7fffffe87fffffeL & l) != 0L)
- jjCheckNAddStates(0, 3);
- else if (curChar == 92)
- jjCheckNAddTwoStates(227, 228);
- if ((0x7fffffe87fffffeL & l) != 0L)
- {
- if (kind > 72)
- kind = 72;
- jjCheckNAddTwoStates(225, 226);
- }
- else if (curChar == 92)
- jjCheckNAddTwoStates(239, 240);
- if ((0x20000000200L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 28;
- break;
- case 171:
- if ((0x7fffffe87fffffeL & l) != 0L)
- {
- if (kind > 103)
- kind = 103;
- jjCheckNAddTwoStates(109, 110);
- }
- else if (curChar == 92)
- jjCheckNAddTwoStates(111, 112);
- break;
- case 525:
- if ((0x7fffffe87fffffeL & l) != 0L)
- {
- if (kind > 103)
- kind = 103;
- jjCheckNAddTwoStates(109, 110);
- }
- else if (curChar == 92)
- jjCheckNAddTwoStates(111, 112);
- break;
- case 38:
- if ((0x7fffffe87fffffeL & l) != 0L)
- jjCheckNAddStates(0, 3);
- if ((0x7fffffe87fffffeL & l) != 0L)
- {
- if (kind > 72)
- kind = 72;
- jjCheckNAddTwoStates(225, 226);
- }
- if ((0x200000002000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 37;
- break;
- case 173:
- if ((0x7fffffe87fffffeL & l) != 0L)
- {
- if (kind > 103)
- kind = 103;
- jjCheckNAddTwoStates(109, 110);
- }
- else if (curChar == 92)
- jjCheckNAddTwoStates(111, 112);
- if ((0x8000000080000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 211;
- else if ((0x800000008000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 172;
- break;
- case 24:
- if ((0x7fffffe87fffffeL & l) != 0L)
- {
- if (kind > 72)
- kind = 72;
- jjCheckNAddStates(817, 822);
- }
- else if (curChar == 92)
- jjCheckNAddStates(823, 826);
- else if (curChar == 64)
- jjAddStates(827, 831);
- if ((0x20000000200000L & l) != 0L)
- jjAddStates(832, 834);
- else if ((0x800000008L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 151;
- else if ((0x200000002L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 141;
- else if ((0x4000000040000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 133;
- else if ((0x4000000040L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 29;
- else if (curChar == 64)
- jjAddStates(835, 838);
- break;
- case 172:
- if ((0x7fffffe87fffffeL & l) != 0L)
- {
- if (kind > 103)
- kind = 103;
- jjCheckNAddTwoStates(109, 110);
- }
- else if (curChar == 92)
- jjCheckNAddTwoStates(111, 112);
- if ((0x400000004000000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 171;
- break;
- case 170:
- if ((0x7fffffe87fffffeL & l) != 0L)
- {
- if (kind > 103)
- kind = 103;
- jjCheckNAddTwoStates(109, 110);
- }
- else if (curChar == 92)
- jjCheckNAddTwoStates(111, 112);
- if ((0x80000000800L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 169;
- break;
- case 174:
- if ((0x7fffffe87fffffeL & l) != 0L)
- {
- if (kind > 103)
- kind = 103;
- jjCheckNAddTwoStates(109, 110);
- }
- if ((0x200000002000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 212;
- else if ((0x80000000800000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 200;
- else if ((0x800000008000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 184;
- if ((0x200000002000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 173;
- break;
- case 75:
- if ((0x7fffffe87fffffeL & l) != 0L)
- {
- if (kind > 76)
- kind = 76;
- jjCheckNAddTwoStates(77, 78);
- }
- else if (curChar == 92)
- jjCheckNAddTwoStates(79, 89);
- break;
- case 522:
- if ((0x7fffffe87fffffeL & l) != 0L)
- jjCheckNAddStates(0, 3);
- else if (curChar == 92)
- jjCheckNAddTwoStates(227, 228);
- if ((0x7fffffe87fffffeL & l) != 0L)
- {
- if (kind > 72)
- kind = 72;
- jjCheckNAddTwoStates(225, 226);
- }
- else if (curChar == 92)
- jjCheckNAddTwoStates(239, 240);
- break;
- case 1:
- if (curChar == 123)
- jjstateSet[jjnewStateCnt++] = 2;
- break;
- case 4:
- case 5:
- if ((0x7fffffe87fffffeL & l) != 0L)
- jjCheckNAddStates(138, 140);
- break;
- case 6:
- if (curChar == 125 && kind > 39)
- kind = 39;
- break;
- case 7:
- if (curChar == 92)
- jjCheckNAddTwoStates(8, 9);
- break;
- case 8:
- if ((0x7fffffffffffffffL & l) != 0L)
- jjCheckNAddStates(138, 140);
- break;
- case 9:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(141, 145);
- break;
- case 11:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(146, 153);
- break;
- case 12:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(154, 157);
- break;
- case 13:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(158, 162);
- break;
- case 14:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(163, 168);
- break;
- case 15:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(169, 175);
- break;
- case 17:
- if (curChar == 92)
- jjCheckNAddTwoStates(8, 18);
- break;
- case 18:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(176, 180);
- break;
- case 19:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(181, 188);
- break;
- case 20:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(189, 192);
- break;
- case 21:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(193, 197);
- break;
- case 22:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(198, 203);
- break;
- case 23:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(204, 210);
- break;
- case 25:
- if ((0x4000000040000L & l) != 0L && kind > 68)
- kind = 68;
- break;
- case 26:
- case 31:
- if ((0x2000000020L & l) != 0L)
- jjCheckNAdd(25);
- break;
- case 27:
- if ((0x10000000100000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 26;
- break;
- case 28:
- if ((0x100000001000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 27;
- break;
- case 30:
- if ((0x4000000040L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 29;
- break;
- case 32:
- if ((0x10000000100000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 31;
- break;
- case 33:
- if ((0x100000001000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 32;
- break;
- case 34:
- if ((0x20000000200L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 33;
- break;
- case 35:
- if ((0x4000000040L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 34;
- break;
- case 37:
- if ((0x8000000080000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 36;
- break;
- case 41:
- case 46:
- if ((0x7fffffffffffffffL & l) != 0L)
- jjCheckNAddStates(130, 133);
- break;
- case 43:
- if (curChar == 92)
- jjAddStates(839, 842);
- break;
- case 45:
- if (curChar == 92)
- jjAddStates(843, 844);
- break;
- case 47:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(211, 216);
- break;
- case 49:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(217, 225);
- break;
- case 50:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(226, 230);
- break;
- case 51:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(231, 236);
- break;
- case 52:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(237, 243);
- break;
- case 53:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(244, 251);
- break;
- case 58:
- case 63:
- if ((0x7fffffffffffffffL & l) != 0L)
- jjCheckNAddStates(126, 129);
- break;
- case 60:
- if (curChar == 92)
- jjAddStates(845, 848);
- break;
- case 62:
- if (curChar == 92)
- jjAddStates(849, 850);
- break;
- case 64:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(252, 257);
- break;
- case 66:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(258, 266);
- break;
- case 67:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(267, 271);
- break;
- case 68:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(272, 277);
- break;
- case 69:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(278, 284);
- break;
- case 70:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(285, 292);
- break;
- case 76:
- case 77:
- if ((0x7fffffe87fffffeL & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddTwoStates(77, 78);
- break;
- case 78:
- if (curChar == 92)
- jjCheckNAddTwoStates(79, 80);
- break;
- case 79:
- if ((0x7fffffffffffffffL & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddTwoStates(77, 78);
- break;
- case 80:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddStates(293, 296);
- break;
- case 82:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddStates(297, 303);
- break;
- case 83:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddStates(304, 306);
- break;
- case 84:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddStates(307, 310);
- break;
- case 85:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddStates(311, 315);
- break;
- case 86:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddStates(316, 321);
- break;
- case 88:
- if (curChar == 92)
- jjCheckNAddTwoStates(79, 89);
- break;
- case 89:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddStates(322, 325);
- break;
- case 90:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddStates(326, 332);
- break;
- case 91:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddStates(333, 335);
- break;
- case 92:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddStates(336, 339);
- break;
- case 93:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddStates(340, 344);
- break;
- case 94:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddStates(345, 350);
- break;
- case 96:
- if ((0x7fffffe87fffffeL & l) == 0L)
- break;
- if (kind > 96)
- kind = 96;
- jjCheckNAddTwoStates(96, 97);
- break;
- case 97:
- if (curChar == 92)
- jjAddStates(851, 852);
- break;
- case 98:
- if ((0x7fffffffffffffffL & l) == 0L)
- break;
- if (kind > 96)
- kind = 96;
- jjCheckNAddTwoStates(96, 97);
- break;
- case 99:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 96)
- kind = 96;
- jjCheckNAddStates(351, 354);
- break;
- case 101:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 96)
- kind = 96;
- jjCheckNAddStates(355, 361);
- break;
- case 102:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 96)
- kind = 96;
- jjCheckNAddStates(362, 364);
- break;
- case 103:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 96)
- kind = 96;
- jjCheckNAddStates(365, 368);
- break;
- case 104:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 96)
- kind = 96;
- jjCheckNAddStates(369, 373);
- break;
- case 105:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 96)
- kind = 96;
- jjCheckNAddStates(374, 379);
- break;
- case 106:
- if (curChar == 64)
- jjAddStates(835, 838);
- break;
- case 108:
- if ((0x7fffffe87fffffeL & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddTwoStates(109, 110);
- break;
- case 109:
- if ((0x7fffffe87fffffeL & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddTwoStates(109, 110);
- break;
- case 110:
- if (curChar == 92)
- jjCheckNAddTwoStates(111, 112);
- break;
- case 111:
- if ((0x7fffffffffffffffL & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddTwoStates(109, 110);
- break;
- case 112:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddStates(380, 383);
- break;
- case 114:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddStates(384, 390);
- break;
- case 115:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddStates(391, 393);
- break;
- case 116:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddStates(394, 397);
- break;
- case 117:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddStates(398, 402);
- break;
- case 118:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddStates(403, 408);
- break;
- case 120:
- if (curChar == 92)
- jjCheckNAddTwoStates(111, 121);
- break;
- case 121:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddStates(409, 412);
- break;
- case 122:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddStates(413, 419);
- break;
- case 123:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddStates(420, 422);
- break;
- case 124:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddStates(423, 426);
- break;
- case 125:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddStates(427, 431);
- break;
- case 126:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddStates(432, 437);
- break;
- case 127:
- if ((0x2000000020L & l) != 0L)
- jjAddStates(438, 439);
- break;
- case 130:
- if ((0x40000000400000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 127;
- break;
- case 131:
- if ((0x800000008000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 130;
- break;
- case 132:
- if ((0x200000002000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 131;
- break;
- case 133:
- if ((0x2000000020L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 132;
- break;
- case 134:
- if ((0x4000000040000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 133;
- break;
- case 135:
- if ((0x1000000010L & l) != 0L)
- jjAddStates(440, 441);
- break;
- case 138:
- if ((0x400000004000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 135;
- break;
- case 139:
- if ((0x2000000020L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 138;
- break;
- case 140:
- if ((0x1000000010000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 139;
- break;
- case 141:
- if ((0x1000000010000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 140;
- break;
- case 142:
- if ((0x200000002L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 141;
- break;
- case 143:
- if ((0x8000000080000L & l) != 0L)
- jjAddStates(442, 443);
- break;
- case 146:
- if ((0x400000004000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 143;
- break;
- case 147:
- if ((0x20000000200L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 146;
- break;
- case 148:
- if ((0x200000002L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 147;
- break;
- case 149:
- if ((0x10000000100000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 148;
- break;
- case 150:
- if ((0x400000004000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 149;
- break;
- case 151:
- if ((0x800000008000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 150;
- break;
- case 152:
- if ((0x800000008L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 151;
- break;
- case 153:
- if (curChar == 64)
- jjAddStates(827, 831);
- break;
- case 154:
- if ((0x8000000080000L & l) != 0L && kind > 102)
- kind = 102;
- break;
- case 155:
- case 163:
- case 176:
- case 187:
- case 203:
- if ((0x2000000020L & l) != 0L)
- jjCheckNAdd(154);
- break;
- case 156:
- if ((0x200000002000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 155;
- break;
- case 157:
- if ((0x200000002L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 156;
- break;
- case 158:
- if ((0x4000000040000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 157;
- break;
- case 159:
- if ((0x4000000040L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 158;
- break;
- case 160:
- if ((0x200000002000000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 159;
- break;
- case 161:
- if ((0x2000000020L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 160;
- break;
- case 164:
- if ((0x200000002000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 163;
- break;
- case 165:
- if ((0x200000002L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 164;
- break;
- case 166:
- if ((0x4000000040000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 165;
- break;
- case 167:
- if ((0x4000000040L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 166;
- break;
- case 168:
- if ((0x200000002000000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 167;
- break;
- case 169:
- if ((0x2000000020L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 168;
- break;
- case 177:
- if ((0x200000002000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 176;
- break;
- case 178:
- if ((0x200000002L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 177;
- break;
- case 179:
- if ((0x4000000040000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 178;
- break;
- case 180:
- if ((0x4000000040L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 179;
- break;
- case 181:
- if ((0x200000002000000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 180;
- break;
- case 182:
- if ((0x2000000020L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 181;
- break;
- case 183:
- if ((0x80000000800L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 182;
- break;
- case 185:
- if ((0x800000008000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 184;
- break;
- case 188:
- if ((0x200000002000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 187;
- break;
- case 189:
- if ((0x200000002L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 188;
- break;
- case 190:
- if ((0x4000000040000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 189;
- break;
- case 191:
- if ((0x4000000040L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 190;
- break;
- case 192:
- if ((0x200000002000000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 191;
- break;
- case 193:
- if ((0x2000000020L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 192;
- break;
- case 194:
- if ((0x80000000800L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 193;
- break;
- case 196:
- if ((0x10000000100000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 195;
- break;
- case 197:
- if ((0x20000000200L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 196;
- break;
- case 198:
- if ((0x80000000800L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 197;
- break;
- case 199:
- if ((0x400000004L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 198;
- break;
- case 200:
- if ((0x2000000020L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 199;
- break;
- case 201:
- if ((0x80000000800000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 200;
- break;
- case 204:
- if ((0x200000002000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 203;
- break;
- case 205:
- if ((0x200000002L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 204;
- break;
- case 206:
- if ((0x4000000040000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 205;
- break;
- case 207:
- if ((0x4000000040L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 206;
- break;
- case 208:
- if ((0x200000002000000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 207;
- break;
- case 209:
- if ((0x2000000020L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 208;
- break;
- case 210:
- if ((0x80000000800L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 209;
- break;
- case 212:
- if ((0x8000000080000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 211;
- break;
- case 213:
- if ((0x200000002000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 212;
- break;
- case 217:
- if (kind > 2)
- kind = 2;
- jjAddStates(9, 11);
- break;
- case 222:
- if (kind > 3)
- kind = 3;
- break;
- case 225:
- if ((0x7fffffe87fffffeL & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddTwoStates(225, 226);
- break;
- case 226:
- if (curChar == 92)
- jjCheckNAddTwoStates(227, 228);
- break;
- case 227:
- if ((0x7fffffffffffffffL & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddTwoStates(225, 226);
- break;
- case 228:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddStates(444, 447);
- break;
- case 230:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddStates(448, 454);
- break;
- case 231:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddStates(455, 457);
- break;
- case 232:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddStates(458, 461);
- break;
- case 233:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddStates(462, 466);
- break;
- case 234:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddStates(467, 472);
- break;
- case 235:
- if ((0x7fffffe87fffffeL & l) != 0L)
- jjCheckNAddStates(0, 3);
- break;
- case 238:
- if (curChar == 92)
- jjCheckNAddTwoStates(239, 240);
- break;
- case 239:
- if ((0x7fffffffffffffffL & l) != 0L)
- jjCheckNAddStates(0, 3);
- break;
- case 240:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(473, 477);
- break;
- case 242:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(478, 485);
- break;
- case 243:
- case 457:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(486, 489);
- break;
- case 244:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(490, 494);
- break;
- case 245:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(495, 500);
- break;
- case 246:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(501, 507);
- break;
- case 249:
- if ((0x10000000100000L & l) != 0L && kind > 70)
- kind = 70;
- break;
- case 250:
- if ((0x100000001000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 249;
- break;
- case 251:
- if ((0x20000000200000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 250;
- break;
- case 252:
- if ((0x200000002L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 251;
- break;
- case 253:
- if ((0x4000000040L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 252;
- break;
- case 254:
- if ((0x2000000020L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 253;
- break;
- case 255:
- if ((0x1000000010L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 254;
- break;
- case 257:
- if ((0x10000000100000L & l) != 0L && kind > 104)
- kind = 104;
- break;
- case 258:
- if ((0x400000004000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 257;
- break;
- case 259:
- if ((0x200000002L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 258;
- break;
- case 260:
- if ((0x10000000100000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 259;
- break;
- case 261:
- if ((0x4000000040000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 260;
- break;
- case 262:
- if ((0x800000008000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 261;
- break;
- case 263:
- if ((0x1000000010000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 262;
- break;
- case 264:
- if ((0x200000002000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 263;
- break;
- case 265:
- if ((0x20000000200L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 264;
- break;
- case 267:
- if ((0x7fffffe87fffffeL & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddTwoStates(225, 226);
- break;
- case 268:
- if ((0x7fffffe87fffffeL & l) != 0L)
- jjCheckNAddStates(0, 3);
- break;
- case 269:
- if ((0x7fffffe87fffffeL & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddStates(817, 822);
- break;
- case 275:
- if ((0x10000000100000L & l) != 0L && kind > 78)
- kind = 78;
- break;
- case 276:
- if ((0x1000000010000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 275;
- break;
- case 278:
- if ((0x200000002000L & l) != 0L && kind > 79)
- kind = 79;
- break;
- case 279:
- if ((0x200000002000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 278;
- break;
- case 281:
- if ((0x200000002000L & l) != 0L && kind > 80)
- kind = 80;
- break;
- case 282:
- if ((0x800000008L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 281;
- break;
- case 284:
- if ((0x800000008L & l) != 0L && kind > 81)
- kind = 81;
- break;
- case 285:
- if ((0x1000000010000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 284;
- break;
- case 287:
- if ((0x400000004000L & l) != 0L && kind > 82)
- kind = 82;
- break;
- case 288:
- if ((0x20000000200L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 287;
- break;
- case 290:
- if ((0x100000001000000L & l) != 0L && kind > 83)
- kind = 83;
- break;
- case 291:
- if ((0x1000000010000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 290;
- break;
- case 293:
- if ((0x200000002000L & l) != 0L && kind > 84)
- kind = 84;
- break;
- case 294:
- if ((0x2000000020L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 293;
- break;
- case 296:
- if ((0x200000002000L & l) != 0L && kind > 85)
- kind = 85;
- break;
- case 297:
- if ((0x2000000020L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 296;
- break;
- case 298:
- if ((0x100000001000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 297;
- break;
- case 300:
- if ((0x200000002000L & l) != 0L && kind > 86)
- kind = 86;
- break;
- case 301:
- if ((0x2000000020L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 300;
- break;
- case 302:
- if ((0x4000000040000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 301;
- break;
- case 304:
- if ((0x100000001000000L & l) != 0L && kind > 87)
- kind = 87;
- break;
- case 305:
- if ((0x2000000020L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 304;
- break;
- case 307:
- if ((0x8000000080L & l) != 0L && kind > 88)
- kind = 88;
- break;
- case 308:
- if ((0x2000000020L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 307;
- break;
- case 309:
- if ((0x1000000010L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 308;
- break;
- case 311:
- if ((0x1000000010L & l) != 0L && kind > 89)
- kind = 89;
- break;
- case 312:
- if ((0x200000002L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 311;
- break;
- case 313:
- if ((0x4000000040000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 312;
- break;
- case 315:
- if ((0x1000000010L & l) != 0L && kind > 90)
- kind = 90;
- break;
- case 316:
- if ((0x200000002L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 315;
- break;
- case 317:
- if ((0x4000000040000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 316;
- break;
- case 318:
- if ((0x8000000080L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 317;
- break;
- case 320:
- if ((0x8000000080000L & l) != 0L && kind > 91)
- kind = 91;
- break;
- case 321:
- if ((0x200000002000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 320;
- break;
- case 323:
- if ((0x8000000080000L & l) != 0L && kind > 92)
- kind = 92;
- break;
- case 325:
- if ((0x400000004000000L & l) != 0L && kind > 93)
- kind = 93;
- break;
- case 326:
- if ((0x10000000100L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 325;
- break;
- case 328:
- if ((0x400000004000000L & l) != 0L && kind > 94)
- kind = 94;
- break;
- case 329:
- if ((0x10000000100L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 328;
- break;
- case 330:
- if ((0x80000000800L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 329;
- break;
- case 333:
- case 334:
- if ((0x7fffffe87fffffeL & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddTwoStates(334, 335);
- break;
- case 335:
- if (curChar == 92)
- jjCheckNAddTwoStates(336, 337);
- break;
- case 336:
- if ((0x7fffffffffffffffL & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddTwoStates(334, 335);
- break;
- case 337:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddStates(508, 511);
- break;
- case 339:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddStates(512, 518);
- break;
- case 340:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddStates(519, 521);
- break;
- case 341:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddStates(522, 525);
- break;
- case 342:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddStates(526, 530);
- break;
- case 343:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddStates(531, 536);
- break;
- case 345:
- if (curChar == 92)
- jjCheckNAddTwoStates(336, 346);
- break;
- case 346:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddStates(537, 540);
- break;
- case 347:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddStates(541, 547);
- break;
- case 348:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddStates(548, 550);
- break;
- case 349:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddStates(551, 554);
- break;
- case 350:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddStates(555, 559);
- break;
- case 351:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddStates(560, 565);
- break;
- case 352:
- if ((0x20000000200000L & l) != 0L)
- jjAddStates(832, 834);
- break;
- case 354:
- case 358:
- if ((0x7fffffffffffffffL & l) != 0L)
- jjCheckNAddStates(572, 575);
- break;
- case 357:
- if (curChar == 92)
- jjAddStates(853, 854);
- break;
- case 359:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(576, 580);
- break;
- case 361:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(581, 588);
- break;
- case 362:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(589, 592);
- break;
- case 363:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(593, 597);
- break;
- case 364:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(598, 603);
- break;
- case 365:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(604, 610);
- break;
- case 367:
- case 372:
- if ((0x7fffffffffffffffL & l) != 0L)
- jjCheckNAddStates(611, 614);
- break;
- case 369:
- if (curChar == 92)
- jjAddStates(855, 858);
- break;
- case 371:
- if (curChar == 92)
- jjAddStates(859, 860);
- break;
- case 373:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(615, 620);
- break;
- case 375:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(621, 629);
- break;
- case 376:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(630, 634);
- break;
- case 377:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(635, 640);
- break;
- case 378:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(641, 647);
- break;
- case 379:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(648, 655);
- break;
- case 384:
- case 389:
- if ((0x7fffffffffffffffL & l) != 0L)
- jjCheckNAddStates(656, 659);
- break;
- case 386:
- if (curChar == 92)
- jjAddStates(861, 864);
- break;
- case 388:
- if (curChar == 92)
- jjAddStates(865, 866);
- break;
- case 390:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(660, 665);
- break;
- case 392:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(666, 674);
- break;
- case 393:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(675, 679);
- break;
- case 394:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(680, 685);
- break;
- case 395:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(686, 692);
- break;
- case 396:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(693, 700);
- break;
- case 401:
- if ((0x100000001000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 353;
- break;
- case 402:
- if ((0x4000000040000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 401;
- break;
- case 410:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 114)
- kind = 114;
- jjAddStates(717, 722);
- break;
- case 411:
- if ((0x7e0000007eL & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 412;
- break;
- case 412:
- if ((0x7e0000007eL & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 413;
- break;
- case 413:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAdd(414);
- break;
- case 414:
- if ((0x7e0000007eL & l) != 0L && kind > 114)
- kind = 114;
- break;
- case 415:
- if ((0x7e0000007eL & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 416;
- break;
- case 416:
- if ((0x7e0000007eL & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 417;
- break;
- case 417:
- if ((0x7e0000007eL & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 418;
- break;
- case 418:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 114)
- kind = 114;
- jjstateSet[jjnewStateCnt++] = 406;
- break;
- case 419:
- if ((0x7e0000007eL & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 420;
- break;
- case 420:
- if ((0x7e0000007eL & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 421;
- break;
- case 421:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 114)
- kind = 114;
- jjstateSet[jjnewStateCnt++] = 422;
- break;
- case 423:
- if ((0x7e0000007eL & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 424;
- break;
- case 424:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 114)
- kind = 114;
- jjstateSet[jjnewStateCnt++] = 425;
- break;
- case 427:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 114)
- kind = 114;
- jjstateSet[jjnewStateCnt++] = 428;
- break;
- case 436:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddTwoStates(437, 443);
- break;
- case 438:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 114)
- kind = 114;
- jjstateSet[jjnewStateCnt++] = 439;
- break;
- case 439:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 114)
- kind = 114;
- jjCheckNAddStates(733, 736);
- break;
- case 440:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 114)
- kind = 114;
- jjCheckNAdd(414);
- break;
- case 441:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 114)
- kind = 114;
- jjCheckNAddTwoStates(414, 440);
- break;
- case 442:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 114)
- kind = 114;
- jjCheckNAddStates(737, 739);
- break;
- case 443:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(740, 744);
- break;
- case 444:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAdd(437);
- break;
- case 445:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddTwoStates(444, 437);
- break;
- case 446:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(745, 747);
- break;
- case 447:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(748, 751);
- break;
- case 448:
- if (curChar == 92)
- jjCheckNAddStates(823, 826);
- break;
- case 449:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddStates(752, 755);
- break;
- case 450:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddStates(756, 762);
- break;
- case 451:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddStates(763, 765);
- break;
- case 452:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddStates(766, 769);
- break;
- case 453:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddStates(770, 774);
- break;
- case 454:
- if ((0x7e0000007eL & l) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddStates(775, 780);
- break;
- case 455:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(781, 785);
- break;
- case 456:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(786, 793);
- break;
- case 458:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(794, 798);
- break;
- case 459:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(799, 804);
- break;
- case 460:
- if ((0x7e0000007eL & l) != 0L)
- jjCheckNAddStates(805, 811);
- break;
- default : break;
- }
- } while(i != startsAt);
- }
- else
- {
- int i2 = (curChar & 0xff) >> 6;
- long l2 = 1L << (curChar & 077);
- do
- {
- switch(jjstateSet[--i])
- {
- case 162:
- case 111:
- if ((jjbitVec0[i2] & l2) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddTwoStates(109, 110);
- break;
- case 29:
- if ((jjbitVec0[i2] & l2) != 0L)
- {
- if (kind > 72)
- kind = 72;
- jjCheckNAddTwoStates(225, 226);
- }
- if ((jjbitVec0[i2] & l2) != 0L)
- jjCheckNAddStates(0, 3);
- break;
- case 171:
- case 109:
- if ((jjbitVec0[i2] & l2) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddTwoStates(109, 110);
- break;
- case 525:
- if ((jjbitVec0[i2] & l2) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddTwoStates(109, 110);
- break;
- case 173:
- if ((jjbitVec0[i2] & l2) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddTwoStates(109, 110);
- break;
- case 24:
- if ((jjbitVec0[i2] & l2) == 0L)
- break;
- if (kind > 40)
- kind = 40;
- jjCheckNAddStates(817, 822);
- break;
- case 172:
- if ((jjbitVec0[i2] & l2) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddTwoStates(109, 110);
- break;
- case 170:
- if ((jjbitVec0[i2] & l2) == 0L)
- break;
- if (kind > 103)
- kind = 103;
- jjCheckNAddTwoStates(109, 110);
- break;
- case 75:
- case 77:
- case 79:
- if ((jjbitVec0[i2] & l2) == 0L)
- break;
- if (kind > 76)
- kind = 76;
- jjCheckNAddTwoStates(77, 78);
- break;
- case 522:
- if ((jjbitVec0[i2] & l2) != 0L)
- {
- if (kind > 72)
- kind = 72;
- jjCheckNAddTwoStates(225, 226);
- }
- if ((jjbitVec0[i2] & l2) != 0L)
- jjCheckNAddStates(0, 3);
- break;
- case 5:
- case 8:
- case 16:
- if ((jjbitVec0[i2] & l2) != 0L)
- jjCheckNAddStates(138, 140);
- break;
- case 41:
- case 46:
- if ((jjbitVec0[i2] & l2) != 0L)
- jjCheckNAddStates(130, 133);
- break;
- case 58:
- case 63:
- if ((jjbitVec0[i2] & l2) != 0L)
- jjCheckNAddStates(126, 129);
- break;
- case 96:
- case 98:
- if ((jjbitVec0[i2] & l2) == 0L)
- break;
- if (kind > 96)
- kind = 96;
- jjCheckNAddTwoStates(96, 97);
- break;
- case 217:
- if ((jjbitVec0[i2] & l2) == 0L)
- break;
- if (kind > 2)
- kind = 2;
- jjAddStates(9, 11);
- break;
- case 222:
- if ((jjbitVec0[i2] & l2) != 0L && kind > 3)
- kind = 3;
- break;
- case 225:
- case 227:
- if ((jjbitVec0[i2] & l2) == 0L)
- break;
- if (kind > 72)
- kind = 72;
- jjCheckNAddTwoStates(225, 226);
- break;
- case 235:
- case 239:
- if ((jjbitVec0[i2] & l2) != 0L)
- jjCheckNAddStates(0, 3);
- break;
- case 334:
- case 336:
- case 344:
- if ((jjbitVec0[i2] & l2) == 0L)
- break;
- if (kind > 95)
- kind = 95;
- jjCheckNAddTwoStates(334, 335);
- break;
- case 354:
- case 358:
- if ((jjbitVec0[i2] & l2) != 0L)
- jjCheckNAddStates(572, 575);
- break;
- case 367:
- case 372:
- if ((jjbitVec0[i2] & l2) != 0L)
- jjCheckNAddStates(611, 614);
- break;
- case 384:
- case 389:
- if ((jjbitVec0[i2] & l2) != 0L)
- jjCheckNAddStates(656, 659);
- break;
- default : break;
- }
- } while(i != startsAt);
- }
- if (kind != 0x7fffffff)
- {
- jjmatchedKind = kind;
- jjmatchedPos = curPos;
- kind = 0x7fffffff;
- }
- ++curPos;
- if ((i = jjnewStateCnt) == (startsAt = 522 - (jjnewStateCnt = startsAt)))
- return curPos;
- try { curChar = input_stream.readChar(); }
- catch(java.io.IOException e) { return curPos; }
- }
-}
-private int jjMoveStringLiteralDfa0_2()
-{
- switch(curChar)
- {
- case 42:
- return jjMoveStringLiteralDfa1_2(0x40L);
- default :
- return 1;
- }
-}
-private int jjMoveStringLiteralDfa1_2(long active0)
-{
- try { curChar = input_stream.readChar(); }
- catch(java.io.IOException e) {
- return 1;
- }
- switch(curChar)
- {
- case 47:
- if ((active0 & 0x40L) != 0L)
- return jjStopAtPos(1, 6);
- break;
- default :
- return 2;
- }
- return 2;
-}
-private int jjMoveStringLiteralDfa0_1()
-{
- switch(curChar)
- {
- case 42:
- return jjMoveStringLiteralDfa1_1(0x20L);
- default :
- return 1;
- }
-}
-private int jjMoveStringLiteralDfa1_1(long active0)
-{
- try { curChar = input_stream.readChar(); }
- catch(java.io.IOException e) {
- return 1;
- }
- switch(curChar)
- {
- case 47:
- if ((active0 & 0x20L) != 0L)
- return jjStopAtPos(1, 5);
- break;
- default :
- return 2;
- }
- return 2;
-}
-static final int[] jjnextStates = {
- 235, 236, 237, 238, 331, 332, 333, 344, 345, 217, 218, 220, 462, 463, 464, 465,
- 466, 467, 273, 468, 469, 470, 276, 471, 472, 473, 279, 474, 475, 476, 282, 477,
- 478, 479, 285, 480, 481, 482, 288, 483, 484, 485, 291, 486, 487, 488, 294, 489,
- 490, 491, 298, 492, 493, 494, 302, 495, 496, 497, 305, 498, 499, 500, 309, 501,
- 502, 503, 313, 504, 505, 506, 318, 507, 508, 509, 321, 510, 511, 512, 323, 513,
- 514, 515, 326, 516, 517, 518, 330, 519, 520, 521, 332, 333, 344, 345, 271, 272,
- 274, 277, 280, 283, 286, 289, 292, 295, 299, 303, 306, 310, 314, 319, 322, 324,
- 327, 331, 267, 268, 248, 255, 256, 265, 216, 223, 75, 76, 87, 88, 58, 59,
- 60, 62, 41, 42, 43, 45, 3, 4, 16, 17, 5, 6, 7, 5, 10, 6,
- 7, 11, 5, 12, 10, 6, 7, 13, 14, 15, 5, 10, 6, 7, 5, 12,
- 10, 6, 7, 5, 12, 10, 6, 7, 13, 5, 12, 10, 6, 7, 13, 14,
- 10, 5, 6, 7, 19, 20, 10, 5, 6, 7, 21, 22, 23, 10, 5, 6,
- 7, 20, 10, 5, 6, 7, 20, 10, 5, 6, 7, 21, 20, 10, 5, 6,
- 7, 21, 22, 41, 48, 42, 43, 45, 49, 41, 50, 48, 42, 43, 45, 51,
- 52, 53, 41, 48, 42, 43, 45, 41, 50, 48, 42, 43, 45, 41, 50, 48,
- 42, 43, 45, 51, 41, 50, 48, 42, 43, 45, 51, 52, 58, 65, 59, 60,
- 62, 66, 58, 67, 65, 59, 60, 62, 68, 69, 70, 58, 65, 59, 60, 62,
- 58, 67, 65, 59, 60, 62, 58, 67, 65, 59, 60, 62, 68, 58, 67, 65,
- 59, 60, 62, 68, 69, 77, 81, 78, 82, 77, 83, 81, 78, 84, 85, 86,
- 77, 81, 78, 77, 83, 81, 78, 77, 83, 81, 78, 84, 77, 83, 81, 78,
- 84, 85, 81, 77, 78, 90, 91, 81, 77, 78, 92, 93, 94, 81, 77, 78,
- 91, 81, 77, 78, 91, 81, 77, 78, 92, 91, 81, 77, 78, 92, 93, 96,
- 100, 97, 101, 96, 102, 100, 97, 103, 104, 105, 96, 100, 97, 96, 102, 100,
- 97, 96, 102, 100, 97, 103, 96, 102, 100, 97, 103, 104, 109, 113, 110, 114,
- 109, 115, 113, 110, 116, 117, 118, 109, 113, 110, 109, 115, 113, 110, 109, 115,
- 113, 110, 116, 109, 115, 113, 110, 116, 117, 113, 109, 110, 122, 123, 113, 109,
- 110, 124, 125, 126, 113, 109, 110, 123, 113, 109, 110, 123, 113, 109, 110, 124,
- 123, 113, 109, 110, 124, 125, 128, 129, 136, 137, 144, 145, 225, 229, 226, 230,
- 225, 231, 229, 226, 232, 233, 234, 225, 229, 226, 225, 231, 229, 226, 225, 231,
- 229, 226, 232, 225, 231, 229, 226, 232, 233, 235, 237, 238, 241, 242, 235, 243,
- 237, 238, 241, 244, 245, 246, 235, 237, 238, 241, 235, 243, 237, 238, 241, 235,
- 243, 237, 238, 241, 244, 235, 243, 237, 238, 241, 244, 245, 334, 338, 335, 339,
- 334, 340, 338, 335, 341, 342, 343, 334, 338, 335, 334, 340, 338, 335, 334, 340,
- 338, 335, 341, 334, 340, 338, 335, 341, 342, 338, 334, 335, 347, 348, 338, 334,
- 335, 349, 350, 351, 338, 334, 335, 348, 338, 334, 335, 348, 338, 334, 335, 349,
- 348, 338, 334, 335, 349, 350, 354, 366, 383, 356, 357, 400, 354, 355, 356, 357,
- 354, 356, 357, 360, 361, 354, 362, 356, 357, 360, 363, 364, 365, 354, 356, 357,
- 360, 354, 362, 356, 357, 360, 354, 362, 356, 357, 360, 363, 354, 362, 356, 357,
- 360, 363, 364, 367, 368, 369, 371, 367, 374, 368, 369, 371, 375, 367, 376, 374,
- 368, 369, 371, 377, 378, 379, 367, 374, 368, 369, 371, 367, 376, 374, 368, 369,
- 371, 367, 376, 374, 368, 369, 371, 377, 367, 376, 374, 368, 369, 371, 377, 378,
- 384, 385, 386, 388, 384, 391, 385, 386, 388, 392, 384, 393, 391, 385, 386, 388,
- 394, 395, 396, 384, 391, 385, 386, 388, 384, 393, 391, 385, 386, 388, 384, 393,
- 391, 385, 386, 388, 394, 384, 393, 391, 385, 386, 388, 394, 395, 354, 366, 383,
- 355, 356, 357, 400, 404, 410, 406, 407, 408, 409, 406, 407, 408, 411, 415, 419,
- 423, 427, 431, 406, 429, 430, 406, 432, 433, 434, 406, 432, 433, 414, 440, 441,
- 442, 414, 440, 441, 444, 437, 445, 446, 447, 444, 437, 445, 444, 437, 445, 446,
- 229, 225, 226, 450, 451, 229, 225, 226, 452, 453, 454, 229, 225, 226, 451, 229,
- 225, 226, 451, 229, 225, 226, 452, 451, 229, 225, 226, 452, 453, 235, 237, 238,
- 241, 456, 457, 235, 237, 238, 241, 458, 459, 460, 457, 235, 237, 238, 241, 457,
- 235, 237, 238, 241, 458, 457, 235, 237, 238, 241, 458, 459, 519, 332, 333, 344,
- 345, 225, 235, 236, 237, 238, 226, 227, 449, 239, 455, 162, 175, 186, 202, 214,
- 402, 403, 435, 107, 108, 119, 120, 44, 54, 56, 55, 46, 47, 61, 71, 73,
- 72, 63, 64, 98, 99, 358, 359, 370, 380, 382, 381, 372, 373, 387, 397, 399,
- 398, 389, 390,
-};
-
-/** Token literal values. */
-public static final String[] jjstrLiteralImages = {
-"", null, null, null, null, null, null, null, "\74\41\55\55", "\55\55\76",
-"\173", "\175", "\174\75", "\136\75", "\44\75", "\52\75", "\176\75", "\75", "\53",
-"\55", "\54", "\73", "\76", "\176", "\74", "\57", "\133", "\135", "\52", "\45",
-"\46", "\56", "\50", "\51", "\75\75", "\174\174", "\46\46", "\41\75", "\72", null,
-null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-null, null, null, null, null, null, null, null, null, null, };
-
-/** Lexer state names. */
-public static final String[] lexStateNames = {
- "DEFAULT",
- "IN_FORMAL_COMMENT",
- "IN_MULTI_LINE_COMMENT",
-};
-
-/** Lex State array. */
-public static final int[] jjnewLexState = {
- -1, -1, -1, 1, 2, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-};
-static final long[] jjtoToken = {
- 0xfffe01ffffffff03L, 0xfc01fffffffbffL,
-};
-static final long[] jjtoSkip = {
- 0x64L, 0x0L,
-};
-static final long[] jjtoSpecial = {
- 0x24L, 0x0L,
-};
-static final long[] jjtoMore = {
- 0x98L, 0x0L,
-};
-protected CharStream input_stream;
-private final int[] jjrounds = new int[522];
-private final int[] jjstateSet = new int[1044];
-private final StringBuilder jjimage = new StringBuilder();
-private StringBuilder image = jjimage;
-private int jjimageLen;
-private int lengthOfMatch;
-protected char curChar;
-/** Constructor. */
-public ParserTokenManager(CharStream stream){
- input_stream = stream;
-}
-
-/** Constructor. */
-public ParserTokenManager(CharStream stream, int lexState){
- this(stream);
- SwitchTo(lexState);
-}
-
-/** Reinitialise parser. */
-public void ReInit(CharStream stream)
-{
- jjmatchedPos = jjnewStateCnt = 0;
- curLexState = defaultLexState;
- input_stream = stream;
- ReInitRounds();
-}
-private void ReInitRounds()
-{
- int i;
- jjround = 0x80000001;
- for (i = 522; i-- > 0;)
- jjrounds[i] = 0x80000000;
-}
-
-/** Reinitialise parser. */
-public void ReInit(CharStream stream, int lexState)
-{
- ReInit(stream);
- SwitchTo(lexState);
-}
-
-/** Switch to specified lex state. */
-public void SwitchTo(int lexState)
-{
- if (lexState >= 3 || lexState < 0)
- throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);
- else
- curLexState = lexState;
-}
-
-protected Token jjFillToken()
-{
- final Token t;
- final String curTokenImage;
- final int beginLine;
- final int endLine;
- final int beginColumn;
- final int endColumn;
- String im = jjstrLiteralImages[jjmatchedKind];
- curTokenImage = (im == null) ? input_stream.GetImage() : im;
- beginLine = input_stream.getBeginLine();
- beginColumn = input_stream.getBeginColumn();
- endLine = input_stream.getEndLine();
- endColumn = input_stream.getEndColumn();
- t = Token.newToken(jjmatchedKind, curTokenImage);
-
- t.beginLine = beginLine;
- t.endLine = endLine;
- t.beginColumn = beginColumn;
- t.endColumn = endColumn;
-
- return t;
-}
-
-int curLexState = 0;
-int defaultLexState = 0;
-int jjnewStateCnt;
-int jjround;
-int jjmatchedPos;
-int jjmatchedKind;
-
-/** Get the next Token. */
-public Token getNextToken()
-{
- Token specialToken = null;
- Token matchedToken;
- int curPos = 0;
-
- EOFLoop :
- for (;;)
- {
- try
- {
- curChar = input_stream.BeginToken();
- }
- catch(java.io.IOException e)
- {
- jjmatchedKind = 0;
- matchedToken = jjFillToken();
- matchedToken.specialToken = specialToken;
- return matchedToken;
- }
- image = jjimage;
- image.setLength(0);
- jjimageLen = 0;
-
- for (;;)
- {
- switch(curLexState)
- {
- case 0:
- jjmatchedKind = 0x7fffffff;
- jjmatchedPos = 0;
- curPos = jjMoveStringLiteralDfa0_0();
- if (jjmatchedPos == 0 && jjmatchedKind > 119)
- {
- jjmatchedKind = 119;
- }
- break;
- case 1:
- jjmatchedKind = 0x7fffffff;
- jjmatchedPos = 0;
- curPos = jjMoveStringLiteralDfa0_1();
- if (jjmatchedPos == 0 && jjmatchedKind > 7)
- {
- jjmatchedKind = 7;
- }
- break;
- case 2:
- jjmatchedKind = 0x7fffffff;
- jjmatchedPos = 0;
- curPos = jjMoveStringLiteralDfa0_2();
- if (jjmatchedPos == 0 && jjmatchedKind > 7)
- {
- jjmatchedKind = 7;
- }
- break;
- }
- if (jjmatchedKind != 0x7fffffff)
- {
- if (jjmatchedPos + 1 < curPos)
- input_stream.backup(curPos - jjmatchedPos - 1);
- if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
- {
- matchedToken = jjFillToken();
- matchedToken.specialToken = specialToken;
- TokenLexicalActions(matchedToken);
- if (jjnewLexState[jjmatchedKind] != -1)
- curLexState = jjnewLexState[jjmatchedKind];
- return matchedToken;
- }
- else if ((jjtoSkip[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
- {
- if ((jjtoSpecial[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
- {
- matchedToken = jjFillToken();
- if (specialToken == null)
- specialToken = matchedToken;
- else
- {
- matchedToken.specialToken = specialToken;
- specialToken = (specialToken.next = matchedToken);
- }
- SkipLexicalActions(matchedToken);
- }
- else
- SkipLexicalActions(null);
- if (jjnewLexState[jjmatchedKind] != -1)
- curLexState = jjnewLexState[jjmatchedKind];
- continue EOFLoop;
- }
- MoreLexicalActions();
- if (jjnewLexState[jjmatchedKind] != -1)
- curLexState = jjnewLexState[jjmatchedKind];
- curPos = 0;
- jjmatchedKind = 0x7fffffff;
- try {
- curChar = input_stream.readChar();
- continue;
- }
- catch (java.io.IOException e1) { }
- }
- int error_line = input_stream.getEndLine();
- int error_column = input_stream.getEndColumn();
- String error_after = null;
- boolean EOFSeen = false;
- try { input_stream.readChar(); input_stream.backup(1); }
- catch (java.io.IOException e1) {
- EOFSeen = true;
- error_after = curPos <= 1 ? "" : input_stream.GetImage();
- if (curChar == '\n' || curChar == '\r') {
- error_line++;
- error_column = 0;
- }
- else
- error_column++;
- }
- if (!EOFSeen) {
- input_stream.backup(1);
- error_after = curPos <= 1 ? "" : input_stream.GetImage();
- }
- throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR);
- }
- }
-}
-
-void SkipLexicalActions(Token matchedToken)
-{
- switch(jjmatchedKind)
- {
- default :
- break;
- }
-}
-void MoreLexicalActions()
-{
- jjimageLen += (lengthOfMatch = jjmatchedPos + 1);
- switch(jjmatchedKind)
- {
- case 3 :
- image.append(input_stream.GetSuffix(jjimageLen));
- jjimageLen = 0;
- input_stream.backup(1);
- break;
- default :
- break;
- }
-}
-void TokenLexicalActions(Token matchedToken)
-{
- switch(jjmatchedKind)
- {
- case 1 :
- image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
- image = Parser.SPACE;
- break;
- default :
- break;
- }
-}
-private void jjCheckNAdd(int state)
-{
- if (jjrounds[state] != jjround)
- {
- jjstateSet[jjnewStateCnt++] = state;
- jjrounds[state] = jjround;
- }
-}
-private void jjAddStates(int start, int end)
-{
- do {
- jjstateSet[jjnewStateCnt++] = jjnextStates[start];
- } while (start++ != end);
-}
-private void jjCheckNAddTwoStates(int state1, int state2)
-{
- jjCheckNAdd(state1);
- jjCheckNAdd(state2);
-}
-
-private void jjCheckNAddStates(int start, int end)
-{
- do {
- jjCheckNAdd(jjnextStates[start]);
- } while (start++ != end);
-}
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/SCSSLexicalUnit.java b/theme-compiler/src/com/vaadin/sass/internal/parser/SCSSLexicalUnit.java
deleted file mode 100644
index 84b0563493..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/parser/SCSSLexicalUnit.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.parser;
-
-import org.w3c.css.sac.LexicalUnit;
-
-public interface SCSSLexicalUnit extends LexicalUnit {
- static final short SCSS_VARIABLE = 100;
- static final short SCSS_OPERATOR_LEFT_PAREN = 101;
- static final short SCSS_OPERATOR_RIGHT_PAREN = 102;
-
- static final short SCSS_NULL = 110;
-
- static final short SAC_LEM = 200;
- static final short SAC_REM = 201;
-
- LexicalUnitImpl divide(LexicalUnitImpl denominator);
-
- LexicalUnitImpl add(LexicalUnitImpl another);
-
- LexicalUnitImpl minus(LexicalUnitImpl another);
-
- LexicalUnitImpl multiply(LexicalUnitImpl another);
-
- LexicalUnitImpl modulo(LexicalUnitImpl another);
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/SCSSParseException.java b/theme-compiler/src/com/vaadin/sass/internal/parser/SCSSParseException.java
deleted file mode 100644
index 6d56c8128e..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/parser/SCSSParseException.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.parser;
-
-public class SCSSParseException extends ParseException {
- private ParseException parseException;
- private String fileName;
-
- public SCSSParseException(ParseException parseException, String fileName) {
- this.parseException = parseException;
- this.fileName = fileName;
- }
-
- @Override
- public String getMessage() {
- StringBuilder builder = new StringBuilder();
- builder.append("Error when parsing file ").append(fileName)
- .append("\n").append(parseException.getMessage());
- return builder.toString();
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/SelectorListImpl.java b/theme-compiler/src/com/vaadin/sass/internal/parser/SelectorListImpl.java
deleted file mode 100644
index d799b93471..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/parser/SelectorListImpl.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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.
- */
-/*
- * Copyright (c) 1999 World Wide Web Consortium,
- * (Massachusetts Institute of Technology, Institut National de
- * Recherche en Informatique et en Automatique, Keio University). All
- * Rights Reserved. This program is distributed under the W3C's Software
- * Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
- *
- * $Id: SelectorListImpl.java,v 1.1 2000/08/07 01:16:21 plehegar Exp $
- */
-package com.vaadin.sass.internal.parser;
-
-import org.w3c.css.sac.Selector;
-import org.w3c.css.sac.SelectorList;
-
-/**
- * @version $Revision: 1.1 $
- * @author Philippe Le Hegaret
- */
-public class SelectorListImpl implements SelectorList {
-
- Selector[] selectors = new Selector[5];
- int current;
-
- @Override
- public Selector item(int index) {
- if ((index < 0) || (index >= current)) {
- return null;
- }
- return selectors[index];
- }
-
- public Selector itemSelector(int index) {
- if ((index < 0) || (index >= current)) {
- return null;
- }
- return selectors[index];
- }
-
- @Override
- public int getLength() {
- return current;
- }
-
- public void addSelector(Selector selector) {
- if (current == selectors.length) {
- Selector[] old = selectors;
- selectors = new Selector[old.length + old.length];
- System.arraycopy(old, 0, selectors, 0, old.length);
- }
- selectors[current++] = selector;
- }
-
- public void replaceSelector(int index, Selector selector) {
- if ((index >= 0) && (index < current)) {
- selectors[index] = selector;
- }
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/Selectors.java b/theme-compiler/src/com/vaadin/sass/internal/parser/Selectors.java
deleted file mode 100644
index 9fe4a9435c..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/parser/Selectors.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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.
- */
-/*
- * Copyright (c) 1999 World Wide Web Consortium,
- * (Massachusetts Institute of Technology, Institut National de
- * Recherche en Informatique et en Automatique, Keio University). All
- * Rights Reserved. This program is distributed under the W3C's Software
- * Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
- *
- * $Id: Selectors.java,v 1.1 2000/02/14 16:58:31 plehegar Exp $
- */
-package com.vaadin.sass.internal.parser;
-
-import org.w3c.css.sac.SelectorList;
-import org.w3c.css.sac.Selector;
-
-/**
- * @version $Revision: 1.1 $
- * @author Philippe Le Hegaret
- */
-class Selectors implements SelectorList {
-
- Selector[] selectors = new Selector[5];
- int current;
-
- public Selector item(int index) {
- if ((index < 0) || (index >= current)) {
- return null;
- }
- return selectors[index];
- }
-
- public Selector itemSelector(int index) {
- if ((index < 0) || (index >= current)) {
- return null;
- }
- return selectors[index];
- }
-
- public int getLength() {
- return current;
- }
-
- void addSelector(Selector selector) {
- if (current == selectors.length) {
- Selector[] old = selectors;
- selectors = new Selector[old.length + old.length];
- System.arraycopy(old, 0, selectors, 0, old.length);
- }
- selectors[current++] = selector;
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/ThrowedParseException.java b/theme-compiler/src/com/vaadin/sass/internal/parser/ThrowedParseException.java
deleted file mode 100644
index 0da869fdab..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/parser/ThrowedParseException.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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.
- */
-/*
- * (c) COPYRIGHT 1999 World Wide Web Consortium
- * (Massachusetts Institute of Technology, Institut National de Recherche
- * en Informatique et en Automatique, Keio University).
- * All Rights Reserved. http://www.w3.org/Consortium/Legal/
- *
- * $Id: ThrowedParseException.java,v 1.1 1999/06/09 15:21:33 plehegar Exp $
- */
-package com.vaadin.sass.internal.parser;
-
-/**
- * @version $Revision: 1.1 $
- * @author Philippe Le Hegaret
- */
-class ThrowedParseException extends RuntimeException {
- private static final long serialVersionUID = -7926371344505913546L;
-
- ParseException e;
-
- /**
- * Creates a new ThrowedParseException
- */
- ThrowedParseException(ParseException e) {
- this.e = e;
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/Token.java b/theme-compiler/src/com/vaadin/sass/internal/parser/Token.java
deleted file mode 100644
index ba29df7d33..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/parser/Token.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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.
- */
-/* Generated By:JavaCC: Do not edit this line. Token.java Version 5.0 */
-/* JavaCCOptions:TOKEN_EXTENDS=,KEEP_LINE_COL=null,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
-package com.vaadin.sass.internal.parser;
-
-/**
- * Describes the input token stream.
- */
-
-public class Token implements java.io.Serializable {
-
- /**
- * The version identifier for this Serializable class.
- * Increment only if the <i>serialized</i> form of the
- * class changes.
- */
- private static final long serialVersionUID = 1L;
-
- /**
- * An integer that describes the kind of this token. This numbering
- * system is determined by JavaCCParser, and a table of these numbers is
- * stored in the file ...Constants.java.
- */
- public int kind;
-
- /** The line number of the first character of this Token. */
- public int beginLine;
- /** The column number of the first character of this Token. */
- public int beginColumn;
- /** The line number of the last character of this Token. */
- public int endLine;
- /** The column number of the last character of this Token. */
- public int endColumn;
-
- /**
- * The string image of the token.
- */
- public String image;
-
- /**
- * A reference to the next regular (non-special) token from the input
- * stream. If this is the last token from the input stream, or if the
- * token manager has not read tokens beyond this one, this field is
- * set to null. This is true only if this token is also a regular
- * token. Otherwise, see below for a description of the contents of
- * this field.
- */
- public Token next;
-
- /**
- * This field is used to access special tokens that occur prior to this
- * token, but after the immediately preceding regular (non-special) token.
- * If there are no such special tokens, this field is set to null.
- * When there are more than one such special token, this field refers
- * to the last of these special tokens, which in turn refers to the next
- * previous special token through its specialToken field, and so on
- * until the first special token (whose specialToken field is null).
- * The next fields of special tokens refer to other special tokens that
- * immediately follow it (without an intervening regular token). If there
- * is no such token, this field is null.
- */
- public Token specialToken;
-
- /**
- * An optional attribute value of the Token.
- * Tokens which are not used as syntactic sugar will often contain
- * meaningful values that will be used later on by the compiler or
- * interpreter. This attribute value is often different from the image.
- * Any subclass of Token that actually wants to return a non-null value can
- * override this method as appropriate.
- */
- public Object getValue() {
- return null;
- }
-
- /**
- * No-argument constructor
- */
- public Token() {}
-
- /**
- * Constructs a new token for the specified Image.
- */
- public Token(int kind)
- {
- this(kind, null);
- }
-
- /**
- * Constructs a new token for the specified Image and Kind.
- */
- public Token(int kind, String image)
- {
- this.kind = kind;
- this.image = image;
- }
-
- /**
- * Returns the image.
- */
- public String toString()
- {
- return image;
- }
-
- /**
- * Returns a new Token object, by default. However, if you want, you
- * can create and return subclass objects based on the value of ofKind.
- * Simply add the cases to the switch for all those special cases.
- * For example, if you have a subclass of Token called IDToken that
- * you want to create if ofKind is ID, simply add something like :
- *
- * case MyParserConstants.ID : return new IDToken(ofKind, image);
- *
- * to the following switch statement. Then you can cast matchedToken
- * variable to the appropriate type and use sit in your lexical actions.
- */
- public static Token newToken(int ofKind, String image)
- {
- switch(ofKind)
- {
- default : return new Token(ofKind, image);
- }
- }
-
- public static Token newToken(int ofKind)
- {
- return newToken(ofKind, null);
- }
-
-}
-/* JavaCC - OriginalChecksum=8b653fc6be4ca9bd10137ee3ad4c32c4 (do not edit this line) */
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/TokenMgrError.java b/theme-compiler/src/com/vaadin/sass/internal/parser/TokenMgrError.java
deleted file mode 100644
index 1757cf6705..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/parser/TokenMgrError.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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.
- */
-/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 5.0 */
-/* JavaCCOptions: */
-package com.vaadin.sass.internal.parser;
-
-/** Token Manager Error. */
-public class TokenMgrError extends Error
-{
-
- /**
- * The version identifier for this Serializable class.
- * Increment only if the <i>serialized</i> form of the
- * class changes.
- */
- private static final long serialVersionUID = 1L;
-
- /*
- * Ordinals for various reasons why an Error of this type can be thrown.
- */
-
- /**
- * Lexical error occurred.
- */
- static final int LEXICAL_ERROR = 0;
-
- /**
- * An attempt was made to create a second instance of a static token manager.
- */
- static final int STATIC_LEXER_ERROR = 1;
-
- /**
- * Tried to change to an invalid lexical state.
- */
- static final int INVALID_LEXICAL_STATE = 2;
-
- /**
- * Detected (and bailed out of) an infinite loop in the token manager.
- */
- static final int LOOP_DETECTED = 3;
-
- /**
- * Indicates the reason why the exception is thrown. It will have
- * one of the above 4 values.
- */
- int errorCode;
-
- /**
- * Replaces unprintable characters by their escaped (or unicode escaped)
- * equivalents in the given string
- */
- protected static final String addEscapes(String str) {
- StringBuffer retval = new StringBuffer();
- char ch;
- for (int i = 0; i < str.length(); i++) {
- switch (str.charAt(i))
- {
- case 0 :
- continue;
- case '\b':
- retval.append("\\b");
- continue;
- case '\t':
- retval.append("\\t");
- continue;
- case '\n':
- retval.append("\\n");
- continue;
- case '\f':
- retval.append("\\f");
- continue;
- case '\r':
- retval.append("\\r");
- continue;
- case '\"':
- retval.append("\\\"");
- continue;
- case '\'':
- retval.append("\\\'");
- continue;
- case '\\':
- retval.append("\\\\");
- continue;
- default:
- if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
- String s = "0000" + Integer.toString(ch, 16);
- retval.append("\\u" + s.substring(s.length() - 4, s.length()));
- } else {
- retval.append(ch);
- }
- continue;
- }
- }
- return retval.toString();
- }
-
- /**
- * Returns a detailed message for the Error when it is thrown by the
- * token manager to indicate a lexical error.
- * Parameters :
- * EOFSeen : indicates if EOF caused the lexical error
- * curLexState : lexical state in which this error occurred
- * errorLine : line number when the error occurred
- * errorColumn : column number when the error occurred
- * errorAfter : prefix that was seen before this error occurred
- * curchar : the offending character
- * Note: You can customize the lexical error message by modifying this method.
- */
- protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {
- return("Lexical error at line " +
- errorLine + ", column " +
- errorColumn + ". Encountered: " +
- (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +
- "after : \"" + addEscapes(errorAfter) + "\"");
- }
-
- /**
- * You can also modify the body of this method to customize your error messages.
- * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not
- * of end-users concern, so you can return something like :
- *
- * "Internal Error : Please file a bug report .... "
- *
- * from this method for such cases in the release version of your parser.
- */
- public String getMessage() {
- return super.getMessage();
- }
-
- /*
- * Constructors of various flavors follow.
- */
-
- /** No arg constructor. */
- public TokenMgrError() {
- }
-
- /** Constructor with message and reason. */
- public TokenMgrError(String message, int reason) {
- super(message);
- errorCode = reason;
- }
-
- /** Full Constructor. */
- public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {
- this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
- }
-}
-/* JavaCC - OriginalChecksum=525946b34c715198d7c29f668b049f5d (do not edit this line) */
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/function/AbsFunctionGenerator.java b/theme-compiler/src/com/vaadin/sass/internal/parser/function/AbsFunctionGenerator.java
deleted file mode 100644
index 7eeae85eba..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/parser/function/AbsFunctionGenerator.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.parser.function;
-
-import com.vaadin.sass.internal.parser.LexicalUnitImpl;
-import com.vaadin.sass.internal.tree.Node.BuildStringStrategy;
-
-/**
- *
- * @since 7.2
- * @author Vaadin Ltd
- */
-public class AbsFunctionGenerator implements SCSSFunctionGenerator {
-
- @Override
- public String getFunctionName() {
- return "abs";
- }
-
- @Override
- public String printState(LexicalUnitImpl function,
- BuildStringStrategy strategy) {
- LexicalUnitImpl firstParam = function.getParameters();
- firstParam.setFloatValue(Math.abs(firstParam.getFloatValue()));
- return strategy.build(firstParam);
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/function/CeilFunctionGenerator.java b/theme-compiler/src/com/vaadin/sass/internal/parser/function/CeilFunctionGenerator.java
deleted file mode 100644
index 23a6bc5edd..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/parser/function/CeilFunctionGenerator.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.parser.function;
-
-import com.vaadin.sass.internal.parser.LexicalUnitImpl;
-import com.vaadin.sass.internal.tree.Node.BuildStringStrategy;
-
-/**
- *
- * @since 7.2
- * @author Vaadin Ltd
- */
-public class CeilFunctionGenerator implements SCSSFunctionGenerator {
-
- @Override
- public String getFunctionName() {
- return "ceil";
- }
-
- @Override
- public String printState(LexicalUnitImpl function,
- BuildStringStrategy strategy) {
- LexicalUnitImpl firstParam = function.getParameters();
- firstParam.setFloatValue((float) Math.ceil(firstParam.getFloatValue()));
- return strategy.build(firstParam);
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/function/DarkenFunctionGenerator.java b/theme-compiler/src/com/vaadin/sass/internal/parser/function/DarkenFunctionGenerator.java
deleted file mode 100644
index 70481be84c..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/parser/function/DarkenFunctionGenerator.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.parser.function;
-
-import com.vaadin.sass.internal.parser.LexicalUnitImpl;
-import com.vaadin.sass.internal.tree.Node.BuildStringStrategy;
-import com.vaadin.sass.internal.util.ColorUtil;
-
-/**
- *
- * @since 7.2
- * @author Vaadin Ltd
- */
-public class DarkenFunctionGenerator implements SCSSFunctionGenerator {
-
- @Override
- public String getFunctionName() {
- return "darken";
- }
-
- @Override
- public String printState(LexicalUnitImpl function,
- BuildStringStrategy strategy) {
- LexicalUnitImpl dark = ColorUtil.darken(function);
- return strategy.build(dark);
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/function/DefaultFunctionGenerator.java b/theme-compiler/src/com/vaadin/sass/internal/parser/function/DefaultFunctionGenerator.java
deleted file mode 100644
index 8ab9b3fb14..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/parser/function/DefaultFunctionGenerator.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.parser.function;
-
-import com.vaadin.sass.internal.parser.LexicalUnitImpl;
-import com.vaadin.sass.internal.tree.Node.BuildStringStrategy;
-
-/**
- *
- * @since 7.2
- * @author Vaadin Ltd
- */
-public class DefaultFunctionGenerator implements SCSSFunctionGenerator {
-
- @Override
- public String getFunctionName() {
- return null;
- }
-
- @Override
- public String printState(LexicalUnitImpl function,
- BuildStringStrategy strategy) {
- StringBuilder builder = new StringBuilder(function.getFunctionName());
- return builder.append('(').append(printParameters(function, strategy))
- .append(')').toString();
- }
-
- private String printParameters(LexicalUnitImpl function,
- BuildStringStrategy strategy) {
- if (function.getParameters() == null) {
- return null;
- }
- return strategy.build(function.getParameters());
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/function/FloorFunctionGenerator.java b/theme-compiler/src/com/vaadin/sass/internal/parser/function/FloorFunctionGenerator.java
deleted file mode 100644
index dc30f06ef0..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/parser/function/FloorFunctionGenerator.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.parser.function;
-
-import com.vaadin.sass.internal.parser.LexicalUnitImpl;
-import com.vaadin.sass.internal.tree.Node.BuildStringStrategy;
-
-/**
- *
- * @since 7.2
- * @author Vaadin Ltd
- */
-public class FloorFunctionGenerator implements SCSSFunctionGenerator {
-
- @Override
- public String getFunctionName() {
- return "floor";
- }
-
- @Override
- public String printState(LexicalUnitImpl function,
- BuildStringStrategy strategy) {
- LexicalUnitImpl firstParam = function.getParameters();
- firstParam
- .setFloatValue((float) Math.floor(firstParam.getFloatValue()));
- return strategy.build(firstParam);
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/function/LightenFunctionGenerator.java b/theme-compiler/src/com/vaadin/sass/internal/parser/function/LightenFunctionGenerator.java
deleted file mode 100644
index c78e63e104..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/parser/function/LightenFunctionGenerator.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.parser.function;
-
-import com.vaadin.sass.internal.parser.LexicalUnitImpl;
-import com.vaadin.sass.internal.tree.Node.BuildStringStrategy;
-import com.vaadin.sass.internal.util.ColorUtil;
-
-/**
- *
- * @since 7.2
- * @author Vaadin Ltd
- */
-public class LightenFunctionGenerator implements SCSSFunctionGenerator {
-
- @Override
- public String getFunctionName() {
- return "lighten";
- }
-
- @Override
- public String printState(LexicalUnitImpl function,
- BuildStringStrategy strategy) {
- return strategy.build(ColorUtil.lighten(function));
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/function/RoundFunctionGenerator.java b/theme-compiler/src/com/vaadin/sass/internal/parser/function/RoundFunctionGenerator.java
deleted file mode 100644
index 3eacba3b38..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/parser/function/RoundFunctionGenerator.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.parser.function;
-
-import com.vaadin.sass.internal.parser.LexicalUnitImpl;
-import com.vaadin.sass.internal.tree.Node.BuildStringStrategy;
-
-/**
- *
- * @since 7.2
- * @author Vaadin Ltd
- */
-public class RoundFunctionGenerator implements SCSSFunctionGenerator {
-
- @Override
- public String getFunctionName() {
- return "round";
- }
-
- @Override
- public String printState(LexicalUnitImpl function,
- BuildStringStrategy strategy) {
- LexicalUnitImpl firstParam = function.getParameters();
- firstParam.setFloatValue(Math.round(firstParam.getFloatValue()));
- return strategy.build(firstParam);
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/function/SCSSFunctionGenerator.java b/theme-compiler/src/com/vaadin/sass/internal/parser/function/SCSSFunctionGenerator.java
deleted file mode 100644
index 112fc1e395..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/parser/function/SCSSFunctionGenerator.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.parser.function;
-
-import com.vaadin.sass.internal.parser.LexicalUnitImpl;
-import com.vaadin.sass.internal.tree.Node.BuildStringStrategy;
-
-/**
- * Generator class is used to handle SCSS functions. Generator is applied to the
- * function lexical unit if its method {@link #getFunctionName()} returns name
- * of the function.
- *
- * If there are no dedicated generator for the function then default generator
- * is used.
- *
- * @since 7.2
- * @author Vaadin Ltd
- */
-public interface SCSSFunctionGenerator {
-
- /**
- * Returns function name handled by this generator. Default generator
- * returns <code>null</code> and is used if there is no dedicated generator
- * for given function.
- *
- * @since 7.2
- * @return
- */
- String getFunctionName();
-
- /**
- * Prints out the current state of the function. State is SCSS content of
- * the function before compilation and compiled CSS content after
- * compilation.
- *
- * @since 7.2
- * @param function
- * Function lexical unit to print its state
- * @param strategy
- * Strategy to build string from nodes
- * @return String state representation of the function
- */
- String printState(LexicalUnitImpl function, BuildStringStrategy strategy);
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/resolver/AbstractResolver.java b/theme-compiler/src/com/vaadin/sass/internal/resolver/AbstractResolver.java
deleted file mode 100644
index 5de1f95264..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/resolver/AbstractResolver.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.resolver;
-
-import java.io.File;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Stack;
-
-import org.w3c.css.sac.InputSource;
-
-import com.vaadin.sass.internal.ScssStylesheet;
-
-/**
- * Base class for resolvers. Implements functionality for locating paths which
- * an import can be relative to and helpers for extracting path information from
- * the identifier.
- *
- * @since 7.2
- * @author Vaadin Ltd
- */
-public abstract class AbstractResolver implements ScssStylesheetResolver,
- Serializable {
- /*
- * (non-Javadoc)
- *
- * @see
- * com.vaadin.sass.internal.resolver.ScssStylesheetResolver#resolve(java
- * .lang.String)
- */
- @Override
- public InputSource resolve(ScssStylesheet parentStylesheet,
- String identifier) {
- // Remove a possible ".scss" suffix
- identifier = identifier.replaceFirst(".scss$", "");
-
- List<String> potentialParentPaths = getPotentialParentPaths(
- parentStylesheet, identifier);
-
- // remove path from identifier as it has already been added to the
- // parent path
- if (identifier.contains("/")) {
- identifier = identifier.substring(identifier.lastIndexOf("/") + 1);
- }
-
- for (String path : potentialParentPaths) {
- InputSource source = normalizeAndResolve(path + "/" + identifier);
-
- if (source != null) {
- return source;
- }
-
- // Try to find partial import (_identifier.scss)
- source = normalizeAndResolve(path + "/_" + identifier);
-
- if (source != null) {
- return source;
- }
-
- }
-
- return normalizeAndResolve(identifier);
- }
-
- /**
- * Retrieves the parent paths which should be used while resolving relative
- * identifiers. By default uses the parent stylesheet location and a
- * possible absolute path in the identifier.
- *
- * @param parentStylesheet
- * The parent stylesheet or null if there is no parent
- * @param identifier
- * The identifier to be resolved
- * @return a list of paths in which to look for the relative import
- */
- protected List<String> getPotentialParentPaths(
- ScssStylesheet parentStylesheet, String identifier) {
- List<String> potentialParents = new ArrayList<String>();
- if (parentStylesheet != null) {
- potentialParents.add(extractFullPath(
- parentStylesheet.getDirectory(), identifier));
- }
-
- // Identifier can be a full path so extract the path part also as a
- // potential parent
- if (identifier.contains("/")) {
- potentialParents.add(extractFullPath("", identifier));
- }
-
- return potentialParents;
-
- }
-
- /**
- * Extracts the full path from the path combined with the identifier
- *
- * @param path
- * The base path
- * @param identifier
- * The identifier which may contain a path part, separated by "/"
- * from the real identifier
- * @return a normalized version of the path where identifier does not
- * contain any directory information
- */
- protected String extractFullPath(String path, String identifier) {
- int lastSlashPosition = identifier.lastIndexOf("/");
- if (lastSlashPosition == -1) {
- return path;
- }
- String identifierPath = identifier.substring(0, lastSlashPosition);
- if ("".equals(path)) {
- return identifierPath;
- } else {
- return path + "/" + identifierPath;
- }
- }
-
- /**
- * Resolves the normalized version of the given identifier
- *
- * @param identifier
- * The identifier to resolve
- * @return An input source if the resolver found one or null otherwise
- */
- protected InputSource normalizeAndResolve(String identifier) {
- String normalized = normalize(identifier);
- return resolveNormalized(normalized);
- }
-
- /**
- * Resolves the identifier after it has been normalized using
- * {@link #normalize(String)}.
- *
- * @param identifier
- * The normalized identifier
- * @return an InputSource if the resolver found a source or null otherwise
- */
- protected abstract InputSource resolveNormalized(String identifier);
-
- /**
- * Normalizes "." and ".." from the path string where parent path segments
- * can be removed. Preserve leading "..". Also ensure / is used instead of \
- * in all places.
- *
- * @param path
- * A relative or absolute file path
- * @return The normalized path
- */
- protected String normalize(String path) {
-
- // Ensure only "/" is used, also in Windows
- path = path.replace(File.separatorChar, '/');
-
- // Split into segments
- String[] segments = path.split("/");
- Stack<String> result = new Stack<String>();
-
- // Replace '.' and '..' segments
- for (int i = 0; i < segments.length; i++) {
- if (segments[i].equals(".")) {
- // Segments marked '.' are ignored
-
- } else if (segments[i].equals("..") && !result.isEmpty()
- && !result.lastElement().equals("..")) {
- // If segment is ".." then remove the previous iff the previous
- // element is not a ".." and the result stack is not empty
- result.pop();
- } else {
- // Other segments are just added to the stack
- result.push(segments[i]);
- }
- }
-
- // Reconstruct path
- StringBuilder pathBuilder = new StringBuilder();
- for (int i = 0; i < result.size(); i++) {
- if (i > 0) {
- pathBuilder.append("/");
- }
- pathBuilder.append(result.get(i));
- }
- return pathBuilder.toString();
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/resolver/ClassloaderResolver.java b/theme-compiler/src/com/vaadin/sass/internal/resolver/ClassloaderResolver.java
deleted file mode 100644
index 755073bc4c..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/resolver/ClassloaderResolver.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.resolver;
-
-import java.io.InputStream;
-
-import org.w3c.css.sac.InputSource;
-
-public class ClassloaderResolver extends AbstractResolver {
-
- @Override
- public InputSource resolveNormalized(String identifier) {
- String fileName = identifier;
- if (!fileName.endsWith(".css")) {
- fileName += ".scss";
- }
-
- // Filename should be a relative path starting with VAADIN/...
- int vaadinIdx = fileName.lastIndexOf("VAADIN/");
- if (vaadinIdx > -1) {
- fileName = fileName.substring(vaadinIdx);
- }
-
- // Can the classloader find it?
- InputStream is = getClass().getClassLoader().getResourceAsStream(
- fileName);
- if (is != null) {
- InputSource source = new InputSource();
- source.setByteStream(is);
- source.setURI(fileName);
- return source;
-
- } else {
- return null;
- }
-
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/resolver/FilesystemResolver.java b/theme-compiler/src/com/vaadin/sass/internal/resolver/FilesystemResolver.java
deleted file mode 100644
index 786d0875da..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/resolver/FilesystemResolver.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.resolver;
-
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.InputStream;
-import java.util.List;
-
-import org.w3c.css.sac.InputSource;
-
-import com.vaadin.sass.internal.ScssStylesheet;
-
-public class FilesystemResolver extends AbstractResolver {
-
- private String[] customPaths = null;
-
- public FilesystemResolver(String... customPaths) {
- this.customPaths = customPaths;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * com.vaadin.sass.internal.resolver.AbstractResolver#getPotentialPaths(
- * com.vaadin.sass.internal.ScssStylesheet, java.lang.String)
- */
- @Override
- protected List<String> getPotentialParentPaths(
- ScssStylesheet parentStyleSheet, String identifier) {
- List<String> potentialPaths = super.getPotentialParentPaths(
- parentStyleSheet, identifier);
- if (customPaths != null) {
- for (String path : customPaths) {
- potentialPaths.add(extractFullPath(path, identifier));
- }
- }
-
- return potentialPaths;
- }
-
- @Override
- public InputSource resolveNormalized(String identifier) {
- String fileName = identifier;
- if (!fileName.endsWith(".css")) {
- fileName += ".scss";
- }
-
- try {
- InputStream is = new FileInputStream(fileName);
- InputSource source = new InputSource();
- source.setByteStream(is);
- source.setURI(fileName);
- return source;
-
- } catch (FileNotFoundException e) {
- // not found, try something else
- return null;
- }
-
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/resolver/ScssStylesheetResolver.java b/theme-compiler/src/com/vaadin/sass/internal/resolver/ScssStylesheetResolver.java
deleted file mode 100644
index 64b3d10d88..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/resolver/ScssStylesheetResolver.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.resolver;
-
-import org.w3c.css.sac.InputSource;
-
-import com.vaadin.sass.internal.ScssStylesheet;
-
-public interface ScssStylesheetResolver {
- /**
- * Called with the "identifier" of a stylesheet that the resolver should try
- * to find. The identifier is basically a filename, like "runo.scss" or
- * "addon/styles.scss", but might exclude ".scss". The resolver must
- * {@link InputSource#setURI(String)} to the final location where the
- * stylesheet was found, e.g "runo.scss" might result in a URI like
- * "VAADIN/themes/runo/runo.scss".
- *
- * @param parentStylesheet
- * The parent style sheet
- * @param identifier
- * used fo find stylesheet
- * @return InputSource for stylesheet (with URI set) or null if not found
- */
- public InputSource resolve(ScssStylesheet parentStylesheet,
- String identifier);
-} \ No newline at end of file
diff --git a/theme-compiler/src/com/vaadin/sass/internal/selector/CompositeSelector.java b/theme-compiler/src/com/vaadin/sass/internal/selector/CompositeSelector.java
deleted file mode 100644
index 1721c9031e..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/selector/CompositeSelector.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.selector;
-
-import org.w3c.css.sac.Selector;
-
-public class CompositeSelector implements Selector {
- public static final short SCSS_COMPOSITE_SELECTOR = 100;
- private Selector first;
- private Selector second;
-
- public CompositeSelector(Selector first, Selector second) {
- this.first = first;
- this.second = second;
- }
-
- public Selector getFirst() {
- return first;
- }
-
- public Selector getSecond() {
- return second;
- }
-
- @Override
- public short getSelectorType() {
- return SCSS_COMPOSITE_SELECTOR;
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/selector/SelectorUtil.java b/theme-compiler/src/com/vaadin/sass/internal/selector/SelectorUtil.java
deleted file mode 100644
index c1f26f968e..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/selector/SelectorUtil.java
+++ /dev/null
@@ -1,340 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.selector;
-
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.w3c.css.sac.CombinatorCondition;
-import org.w3c.css.sac.Condition;
-import org.w3c.css.sac.ConditionFactory;
-import org.w3c.css.sac.ConditionalSelector;
-import org.w3c.css.sac.DescendantSelector;
-import org.w3c.css.sac.ElementSelector;
-import org.w3c.css.sac.Selector;
-import org.w3c.css.sac.SelectorFactory;
-import org.w3c.css.sac.SelectorList;
-import org.w3c.css.sac.SiblingSelector;
-import org.w3c.css.sac.SimpleSelector;
-import org.w3c.flute.parser.selectors.AndConditionImpl;
-import org.w3c.flute.parser.selectors.AttributeConditionImpl;
-import org.w3c.flute.parser.selectors.ChildSelectorImpl;
-import org.w3c.flute.parser.selectors.ClassConditionImpl;
-import org.w3c.flute.parser.selectors.ConditionFactoryImpl;
-import org.w3c.flute.parser.selectors.DirectAdjacentSelectorImpl;
-import org.w3c.flute.parser.selectors.ElementSelectorImpl;
-import org.w3c.flute.parser.selectors.IdConditionImpl;
-import org.w3c.flute.parser.selectors.PseudoClassConditionImpl;
-import org.w3c.flute.parser.selectors.PseudoElementSelectorImpl;
-import org.w3c.flute.parser.selectors.SelectorFactoryImpl;
-
-import com.vaadin.sass.internal.parser.SelectorListImpl;
-
-public class SelectorUtil {
-
- public static String toString(CompositeSelector compositeSelector) {
- StringBuilder builder = new StringBuilder();
- if (compositeSelector != null) {
- if (compositeSelector.getFirst() != null) {
- builder.append(toString(compositeSelector.getFirst())).append(
- " ");
- }
- if (compositeSelector.getSecond() != null) {
- builder.append(toString(compositeSelector.getSecond()));
- }
- }
- return builder.toString();
- }
-
- public static String toString(SelectorList selectorList) {
- StringBuilder stringBuilder = new StringBuilder();
- for (int i = 0; i < selectorList.getLength(); i++) {
- String selectorString = toString(selectorList.item(i));
- stringBuilder.append(selectorString);
- if (selectorList.getLength() > i + 1) {
- stringBuilder.append(", ");
- }
- }
- return stringBuilder.toString();
- }
-
- public static String toString(Selector selector) {
- if (selector == null) {
- return "";
- }
- if (selector.getSelectorType() == Selector.SAC_CONDITIONAL_SELECTOR) {
- StringBuilder stringBuilder = new StringBuilder();
- ConditionalSelector conditionalSelector = (ConditionalSelector) selector;
- String simpleSelectorString = toString(conditionalSelector
- .getSimpleSelector());
- if (simpleSelectorString != null) {
- stringBuilder.append(simpleSelectorString);
- }
- String conditionString = getConditionString(conditionalSelector
- .getCondition());
- stringBuilder.append(conditionString);
- return stringBuilder.toString();
- } else if (selector.getSelectorType() == Selector.SAC_DESCENDANT_SELECTOR) {
- return getDecendantSelectorString((DescendantSelector) selector,
- " ");
- } else if (selector.getSelectorType() == Selector.SAC_CHILD_SELECTOR) {
- DescendantSelector childSelector = (DescendantSelector) selector;
- String seperator = " > ";
- if (childSelector.getSimpleSelector() instanceof PseudoElementSelectorImpl) {
- seperator = "::";
- }
- return getDecendantSelectorString((DescendantSelector) selector,
- seperator);
- } else if (selector.getSelectorType() == Selector.SAC_ELEMENT_NODE_SELECTOR) {
- ElementSelectorImpl elementSelector = (ElementSelectorImpl) selector;
- return elementSelector.getLocalName() == null ? ""
- : elementSelector.getLocalName();
- } else if (selector.getSelectorType() == Selector.SAC_DIRECT_ADJACENT_SELECTOR) {
- DirectAdjacentSelectorImpl directAdjacentSelector = (DirectAdjacentSelectorImpl) selector;
- StringBuilder stringBuilder = new StringBuilder();
- stringBuilder
- .append(toString(directAdjacentSelector.getSelector()));
- stringBuilder.append(" + ");
- stringBuilder.append(toString(directAdjacentSelector
- .getSiblingSelector()));
- return stringBuilder.toString();
- } else if (selector.getSelectorType() == Selector.SAC_PSEUDO_ELEMENT_SELECTOR) {
- PseudoElementSelectorImpl pseudoElementSelectorImpl = (PseudoElementSelectorImpl) selector;
- return pseudoElementSelectorImpl.getLocalName();
- } else if (selector.getSelectorType() == CompositeSelector.SCSS_COMPOSITE_SELECTOR) {
- return toString((CompositeSelector) selector);
- } else {
- log("SU !Unknown selector type, type: "
- + selector.getSelectorType() + ", " + selector.toString());
- }
- return "";
- }
-
- private static String getDecendantSelectorString(
- DescendantSelector selector, String separator) {
- StringBuilder stringBuilder = new StringBuilder();
- String ancestor = toString(selector.getAncestorSelector());
- String simpleSelector = toString(selector.getSimpleSelector());
- stringBuilder.append(ancestor);
- stringBuilder.append(separator);
- stringBuilder.append(simpleSelector);
- return stringBuilder.toString();
- }
-
- private static String getConditionString(Condition condition) {
- short conditionType = condition.getConditionType();
- if (conditionType == Condition.SAC_CLASS_CONDITION) {
- ClassConditionImpl classCondition = (ClassConditionImpl) condition;
- return "." + classCondition.getValue();
- } else if (conditionType == Condition.SAC_ID_CONDITION) {
- IdConditionImpl idCondition = (IdConditionImpl) condition;
- return "#" + idCondition.getValue();
- } else if (conditionType == Condition.SAC_AND_CONDITION) {
- AndConditionImpl andCondition = (AndConditionImpl) condition;
- return getConditionString(andCondition.getFirstCondition())
- + getConditionString(andCondition.getSecondCondition());
- } else if (conditionType == Condition.SAC_ATTRIBUTE_CONDITION) {
- AttributeConditionImpl attributeCondition = (AttributeConditionImpl) condition;
- StringBuilder string = new StringBuilder();
- string.append('[');
- string.append(attributeCondition.getLocalName());
- String value = attributeCondition.getValue();
- if ("true".equals(value) || "false".equals(value)) {
- string.append("=").append(value).append(']');
- } else {
- string.append("=\"");
- string.append(attributeCondition.getValue());
- string.append("\"]");
- }
- return string.toString();
- } else if (conditionType == Condition.SAC_PSEUDO_CLASS_CONDITION) {
- PseudoClassConditionImpl pseudoClassCondition = (PseudoClassConditionImpl) condition;
- return ":" + pseudoClassCondition.getValue();
- } else {
- log("CU !condition type not identified, type: " + conditionType
- + ", " + condition.toString());
- return "";
- }
- }
-
- public static boolean hasParentSelector(SelectorList selectorList) {
- String selectorString = toString(selectorList);
- return selectorString.contains("&");
- }
-
- public static SelectorList createNewSelectorListFromAnOldOneWithSomPartReplaced(
- SelectorList oldList, String toBeReplacedSelectorName,
- SelectorList candidateSelectorList) throws Exception {
- if (candidateSelectorList.getLength() != 1) {
- throw new Exception("Candidate selector should not be a list");
- }
- if (!(candidateSelectorList.item(0) instanceof SimpleSelector)) {
- throw new Exception(
- "Candidate selector should only be a SimpleSelector");
- }
- SelectorListImpl newSelectorList = new SelectorListImpl();
- SimpleSelector candidateSelector = (SimpleSelector) candidateSelectorList
- .item(0);
- for (int i = 0; i < oldList.getLength(); i++) {
- Selector selector = oldList.item(i);
- newSelectorList.addSelector(createSelectorWithSomePartReplaced(
- selector, toBeReplacedSelectorName, candidateSelector));
- }
- return newSelectorList;
- }
-
- private static Selector createSelectorWithSomePartReplaced(
- Selector selector, String toBeReplacedSelectorName,
- SimpleSelector candidateSelector) {
- if (!toString(selector).contains(toBeReplacedSelectorName)) {
- return selector;
- }
- SelectorFactory factory = new SelectorFactoryImpl();
- if (selector instanceof SimpleSelector) {
- return createSimpleSelectorWithSomePartReplaced(
- (SimpleSelector) selector, toBeReplacedSelectorName,
- candidateSelector);
- } else if (selector instanceof DescendantSelector) {
- DescendantSelector descendantSelector = (DescendantSelector) selector;
- Selector ancestor = descendantSelector.getAncestorSelector();
- SimpleSelector simpleSelector = descendantSelector
- .getSimpleSelector();
- return factory.createDescendantSelector(
- createSelectorWithSomePartReplaced(ancestor,
- toBeReplacedSelectorName, candidateSelector),
- createSimpleSelectorWithSomePartReplaced(simpleSelector,
- toBeReplacedSelectorName, candidateSelector));
- } else if (selector instanceof DirectAdjacentSelectorImpl) {
- SiblingSelector siblingSelector = (SiblingSelector) selector;
- Selector ancestor = siblingSelector.getSelector();
- SimpleSelector simpleSelector = siblingSelector
- .getSiblingSelector();
- return factory.createDirectAdjacentSelector(
- Selector.SAC_DIRECT_ADJACENT_SELECTOR, ancestor,
- simpleSelector);
- } else if (selector instanceof CompositeSelector) {
- CompositeSelector compositeSelector = (CompositeSelector) selector;
- Selector first = compositeSelector.getFirst();
- Selector second = compositeSelector.getSecond();
- return new CompositeSelector(createSelectorWithSomePartReplaced(
- first, toBeReplacedSelectorName, candidateSelector),
- createSelectorWithSomePartReplaced(second,
- toBeReplacedSelectorName, candidateSelector));
- }
- return null;
- }
-
- private static SimpleSelector createSimpleSelectorWithSomePartReplaced(
- SimpleSelector simpleSelector, String toBeReplacedSelectorName,
- SimpleSelector candidateSelector) {
- if (simpleSelector == null
- || !toString(simpleSelector).contains(toBeReplacedSelectorName)) {
- return simpleSelector;
- }
- if (simpleSelector instanceof ElementSelector
- && candidateSelector instanceof ElementSelector) {
- return candidateSelector;
- }
- if (simpleSelector instanceof ConditionalSelector) {
- return createConditionSelectorWithSomePartReplaced(
- (ConditionalSelector) simpleSelector,
- toBeReplacedSelectorName, candidateSelector);
- }
- return simpleSelector;
- }
-
- private static ConditionalSelector createConditionSelectorWithSomePartReplaced(
- ConditionalSelector oldConditionSelector,
- String toBeReplacedSelectorName, SimpleSelector candidateSelector) {
- if (oldConditionSelector == null
- || !toString(oldConditionSelector).contains(
- toBeReplacedSelectorName)) {
- return oldConditionSelector;
- }
- SelectorFactory selectorFactory = new SelectorFactoryImpl();
- if (candidateSelector instanceof ElementSelector) {
- return selectorFactory.createConditionalSelector(candidateSelector,
- oldConditionSelector.getCondition());
- }
- if (candidateSelector instanceof ConditionalSelector) {
- // TODO some cases not covered.
- ConditionalSelector candidateConditionSelector = (ConditionalSelector) candidateSelector;
- Condition newCondition = createConditionWithSomePartReplaced(
- oldConditionSelector.getCondition(),
- toBeReplacedSelectorName,
- candidateConditionSelector.getCondition());
- return selectorFactory.createConditionalSelector(
- oldConditionSelector.getSimpleSelector(), newCondition);
- }
- return oldConditionSelector;
- }
-
- private static Condition createConditionWithSomePartReplaced(
- Condition oldCondition, String toBeReplaced, Condition candidate) {
- if (oldCondition == null
- || !getConditionString(oldCondition).contains(toBeReplaced)) {
- return oldCondition;
- }
- if (oldCondition.getConditionType() == Condition.SAC_AND_CONDITION) {
- ConditionFactory conditionFactory = new ConditionFactoryImpl();
- CombinatorCondition oldCombinatorCondition = (CombinatorCondition) oldCondition;
- Condition newFirstCondition = createConditionWithSomePartReplaced(
- oldCombinatorCondition.getFirstCondition(), toBeReplaced,
- candidate);
- Condition newSecondCondition = createConditionWithSomePartReplaced(
- oldCombinatorCondition.getSecondCondition(), toBeReplaced,
- candidate);
- return conditionFactory.createAndCondition(newFirstCondition,
- newSecondCondition);
- } else {
- return candidate;
- }
- }
-
- public static boolean equals(Selector one, Selector another) {
- return one == null ? another == null : toString(one).equals(
- toString(another));
- }
-
- public static Selector createSelectorAndreplaceSelectorVariableWithValue(
- Selector selector, String variable, String value) throws Exception {
-
- SelectorFactoryImpl factory = new SelectorFactoryImpl();
-
- ElementSelector es = factory.createElementSelector(
- null,
- ((ElementSelector) selector).getLocalName().replaceAll(
- variable, value));
-
- if (selector instanceof ConditionalSelector) {
- return factory.createConditionalSelector(es,
- ((ConditionalSelector) selector).getCondition());
- } else if (selector instanceof DescendantSelector) {
- return factory.createDescendantSelector(es,
- ((DescendantSelector) selector).getSimpleSelector());
- } else if (selector instanceof ChildSelectorImpl) {
- return factory.createChildSelector(es,
- ((DescendantSelector) selector).getSimpleSelector());
- } else {
- throw new Exception("Invalid selector type");
- }
- }
-
- private static void log(String msg) {
- Logger.getLogger(SelectorUtil.class.getName()).log(Level.INFO, msg);
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/BlockNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/BlockNode.java
deleted file mode 100644
index 5e7674e3b2..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/BlockNode.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree;
-
-import java.util.ArrayList;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import com.vaadin.sass.internal.ScssStylesheet;
-import com.vaadin.sass.internal.visitor.BlockNodeHandler;
-
-public class BlockNode extends Node implements IVariableNode {
-
- private static final long serialVersionUID = 5742962631468325048L;
-
- ArrayList<String> selectorList;
-
- public BlockNode(ArrayList<String> selectorList) {
- this.selectorList = selectorList;
- }
-
- public ArrayList<String> getSelectorList() {
- return selectorList;
- }
-
- public void setSelectorList(ArrayList<String> selectorList) {
- this.selectorList = selectorList;
- }
-
- public String buildString(boolean indent) {
- return buildString(indent, PRINT_STRATEGY);
- }
-
- @Override
- public String printState() {
- return buildString(false);
- }
-
- @Override
- public String toString() {
- return "BlockNode [" + buildString(true, TO_STRING_STRATEGY) + "]";
- }
-
- @Override
- public void replaceVariables(ArrayList<VariableNode> variables) {
-
- if (selectorList == null || selectorList.isEmpty()) {
- return;
- }
-
- for (final VariableNode var : variables) {
- for (final String selector : new ArrayList<String>(selectorList)) {
- String interpolation = "#{$" + var.getName() + "}";
- if (selector.contains(interpolation)) {
- String replace = selector.replace(interpolation, var
- .getExpr().unquotedString());
-
- selectorList.add(selectorList.indexOf(selector), replace);
- selectorList.remove(selector);
- }
- }
- }
- }
-
- public String getSelectors() {
- StringBuilder b = new StringBuilder();
- for (final String s : selectorList) {
- b.append(s);
- }
-
- return b.toString();
- }
-
- public void setParentNode(Node node) {
- parentNode.removeChild(this);
- node.appendChild(this);
- }
-
- @Override
- public void traverse() {
- try {
- BlockNodeHandler.traverse(this);
- replaceVariables(ScssStylesheet.getVariables());
- } catch (Exception e) {
- Logger.getLogger(BlockNode.class.getName()).log(Level.SEVERE, null,
- e);
- }
- }
-
- private String buildString(boolean indent, BuildStringStrategy strategy) {
- StringBuilder string = new StringBuilder();
- int i = 0;
- for (final String s : selectorList) {
- string.append(s);
- if (i != selectorList.size() - 1) {
- string.append(", ");
- }
- i++;
- }
- string.append(" {\n");
- for (Node child : children) {
- if (indent) {
- string.append("\t");
- }
- string.append("\t" + strategy.build(child) + "\n");
- }
- if (indent) {
- string.append("\t");
- }
- string.append("}");
- return string.toString();
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/CommentNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/CommentNode.java
deleted file mode 100644
index 968d0f7798..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/CommentNode.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree;
-
-public class CommentNode extends Node {
- private String comment;
-
- public CommentNode(String comment) {
- this.comment = comment;
- }
-
- public String getComment() {
- return comment;
- }
-
- public void setComment(String comment) {
- this.comment = comment;
- }
-
- @Override
- public String printState() {
- return comment;
- }
-
- @Override
- public String toString() {
- return "Comment node [" + comment + "]";
- }
-
- @Override
- public void traverse() {
- // Not used in CommentNode
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/ContentNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/ContentNode.java
deleted file mode 100644
index 10cb1599c1..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/ContentNode.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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.
- */
-
-/**
- * ContentNode represents a {@literal @}content in a SCSS tree.
- */
-package com.vaadin.sass.internal.tree;
-
-public class ContentNode extends Node {
-
- @Override
- public void traverse() {
- /*
- * ContentNode is basically just a placeholder for some content which
- * will be included. So for traverse of this node, it does nothing. it
- * will be replaced when traversing MixinDefNode which contains it.
- */
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/ExtendNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/ExtendNode.java
deleted file mode 100644
index 7614f7c606..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/ExtendNode.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree;
-
-import java.util.ArrayList;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import com.vaadin.sass.internal.visitor.ExtendNodeHandler;
-
-public class ExtendNode extends Node implements IVariableNode {
- private static final long serialVersionUID = 3301805078983796878L;
-
- ArrayList<String> list;
-
- public ExtendNode(ArrayList<String> list) {
- super();
- this.list = list;
- }
-
- public ArrayList<String> getList() {
- return list;
- }
-
- @Override
- public void replaceVariables(ArrayList<VariableNode> variables) {
-
- }
-
- @Override
- public String toString() {
- return "Extend node [" + getListAsString() + "]";
- }
-
- public String getListAsString() {
- StringBuilder b = new StringBuilder();
- for (final String s : list) {
- b.append(s);
- }
-
- return b.toString();
- }
-
- @Override
- public void traverse() {
- try {
- ExtendNodeHandler.traverse(this);
- getParentNode().removeChild(this);
- } catch (Exception e) {
- Logger.getLogger(ExtendNode.class.getName()).log(Level.SEVERE,
- null, e);
- }
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/FontFaceNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/FontFaceNode.java
deleted file mode 100644
index b953b1af11..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/FontFaceNode.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree;
-
-public class FontFaceNode extends Node {
-
- @Override
- public String printState() {
- return buildString(PRINT_STRATEGY);
- }
-
- @Override
- public String toString() {
- return "FontFace node [" + buildString(TO_STRING_STRATEGY) + "]";
- }
-
- @Override
- public void traverse() {
- // Not in use for FontFaceNode
- }
-
- private String buildString(BuildStringStrategy strategy) {
- StringBuilder builder = new StringBuilder();
- builder.append("@font-face {\n");
-
- for (final Node child : children) {
- builder.append("\t" + strategy.build(child) + "\n");
- }
-
- builder.append("}");
- return builder.toString();
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/ForNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/ForNode.java
deleted file mode 100644
index 02e28d5bb2..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/ForNode.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree;
-
-public class ForNode extends Node {
- private static final long serialVersionUID = -1159180539216623335L;
-
- String var;
- String from;
- String to;
- boolean exclusive;
- String body;
-
- public ForNode(String var, String from, String to, boolean exclusive,
- String body) {
- super();
- this.var = var;
- this.from = from;
- this.to = to;
- this.exclusive = exclusive;
- this.body = body;
- }
-
- @Override
- public String toString() {
- return "For Node: " + "{variable: " + var + ", from:" + from + ", to: "
- + to + ", exclusive: " + exclusive + ", body" + body;
- }
-
- @Override
- public void traverse() {
-
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/FunctionNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/FunctionNode.java
deleted file mode 100644
index 2d1001f47f..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/FunctionNode.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree;
-
-import java.util.ArrayList;
-
-import com.vaadin.sass.internal.ScssStylesheet;
-import com.vaadin.sass.internal.util.StringUtil;
-
-public class FunctionNode extends Node implements IVariableNode {
- private static final long serialVersionUID = -5383104165955523923L;
-
- private String name;
- private String args;
- private String body;
-
- public FunctionNode(String name) {
- super();
- this.name = name;
- }
-
- public FunctionNode(String name, String args, String body) {
- this.name = name;
- this.args = args;
- this.body = body;
- }
-
- @Override
- public String toString() {
- return "Function Node: {name: " + name + ", args: " + args + ", body: "
- + body + "}";
- }
-
- @Override
- public void replaceVariables(ArrayList<VariableNode> variables) {
- for (final VariableNode node : variables) {
- if (StringUtil.containsVariable(args, node.getName())) {
- args = StringUtil.replaceVariable(args, node.getName(), node
- .getExpr().printState());
- }
- }
- }
-
- @Override
- public void traverse() {
- replaceVariables(ScssStylesheet.getVariables());
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/IVariableNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/IVariableNode.java
deleted file mode 100644
index f0b22edc3d..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/IVariableNode.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree;
-
-import java.util.ArrayList;
-
-public interface IVariableNode {
-
- public void replaceVariables(ArrayList<VariableNode> variables);
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/ImportNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/ImportNode.java
deleted file mode 100644
index e112752138..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/ImportNode.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree;
-
-import org.w3c.css.sac.SACMediaList;
-
-import com.vaadin.sass.internal.visitor.ImportNodeHandler;
-
-public class ImportNode extends Node {
- private static final long serialVersionUID = 5671255892282668438L;
-
- private String uri;
- private SACMediaList ml;
- private boolean isURL;
-
- public ImportNode(String uri, SACMediaList ml, boolean isURL) {
- super();
- this.uri = uri;
- this.ml = ml;
- this.isURL = isURL;
- }
-
- public boolean isPureCssImport() {
- return (isURL || uri.endsWith(".css") || uri.startsWith("http://") || hasMediaQueries());
- }
-
- private boolean hasMediaQueries() {
- return (ml != null && ml.getLength() >= 1 && !"all".equals(ml.item(0)));
- }
-
- @Override
- public String printState() {
- StringBuilder builder = new StringBuilder("@import ");
- if (isURL) {
- builder.append("url(").append(uri).append(")");
- } else {
- builder.append("\"").append(uri).append("\"");
- }
- if (hasMediaQueries()) {
- for (int i = 0; i < ml.getLength(); i++) {
- builder.append(" ").append(ml.item(i));
- }
- }
- builder.append(";");
- return builder.toString();
- }
-
- @Override
- public String toString() {
- return "Import node [" + printState() + "]";
- }
-
- public String getUri() {
- return uri;
- }
-
- public void setUri(String uri) {
- this.uri = uri;
- }
-
- public SACMediaList getMl() {
- return ml;
- }
-
- @Override
- public void traverse() {
- // nested imports
- ImportNodeHandler.traverse(getParentNode());
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/KeyframeSelectorNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/KeyframeSelectorNode.java
deleted file mode 100644
index e89b9b2494..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/KeyframeSelectorNode.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree;
-
-public class KeyframeSelectorNode extends Node {
- private String selector;
-
- public KeyframeSelectorNode(String selector) {
- this.selector = selector;
- }
-
- @Override
- public String printState() {
- return buildString(PRINT_STRATEGY);
- }
-
- @Override
- public String toString() {
- return "Key frame selector node [" + buildString(TO_STRING_STRATEGY)
- + "]";
- }
-
- @Override
- public void traverse() {
-
- }
-
- public String buildString(BuildStringStrategy strategy) {
- StringBuilder string = new StringBuilder();
- string.append(selector).append(" {\n");
- for (Node child : children) {
- string.append("\t\t").append(strategy.build(child)).append("\n");
- }
- string.append("\t}");
- return string.toString();
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/KeyframesNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/KeyframesNode.java
deleted file mode 100644
index 28b1b0d42f..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/KeyframesNode.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree;
-
-import java.util.ArrayList;
-import java.util.regex.Pattern;
-
-import com.vaadin.sass.internal.ScssStylesheet;
-
-public class KeyframesNode extends Node implements IVariableNode {
- private String keyframeName;
- private String animationName;
-
- public KeyframesNode(String keyframeName, String animationName) {
- this.keyframeName = keyframeName;
- this.animationName = animationName;
- }
-
- @Override
- public String printState() {
- return buildString(PRINT_STRATEGY);
- }
-
- @Override
- public String toString() {
- return "Key frames node [" + buildString(TO_STRING_STRATEGY) + "]";
- }
-
- @Override
- public void traverse() {
- replaceVariables(ScssStylesheet.getVariables());
- }
-
- @Override
- public void replaceVariables(ArrayList<VariableNode> variables) {
- for (final VariableNode node : variables) {
- String interpolation = "#{$" + node.getName() + "}";
- if (animationName != null && animationName.contains(interpolation)) {
- if (animationName.contains(interpolation)) {
- animationName = animationName.replaceAll(Pattern
- .quote(interpolation), node.getExpr()
- .unquotedString());
- }
- }
- }
- }
-
- private String buildString(BuildStringStrategy strategy) {
- StringBuilder string = new StringBuilder();
- string.append(keyframeName).append(" ").append(animationName)
- .append(" {\n");
- for (Node child : children) {
- string.append("\t\t").append(strategy.build(child)).append("\n");
- }
- string.append("\t}");
- return string.toString();
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/ListAppendNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/ListAppendNode.java
deleted file mode 100644
index 7111c6f33f..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/ListAppendNode.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree;
-
-import java.util.ArrayList;
-
-public class ListAppendNode extends ListModifyNode {
-
- public ListAppendNode(String variable, String list, String append,
- String separator) {
- this.variable = variable;
- checkSeparator(separator, list);
- populateList(list, append);
- }
-
- @Override
- protected void modifyList(ArrayList<String> newList) {
- newList.addAll(modify);
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/ListContainsNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/ListContainsNode.java
deleted file mode 100644
index 54ec7550d7..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/ListContainsNode.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree;
-
-import java.util.ArrayList;
-
-import com.vaadin.sass.internal.parser.LexicalUnitImpl;
-
-public class ListContainsNode extends ListModifyNode {
-
- public ListContainsNode(String variable, String list, String contains,
- String separator) {
- this.variable = variable;
- checkSeparator(separator, list);
- populateList(list, contains);
- }
-
- @Override
- protected void modifyList(ArrayList<String> newList) {
- // Does not actually modify the list
- }
-
- @Override
- public VariableNode getModifiedList() {
- String contains = "" + list.containsAll(modify);
- VariableNode node = new VariableNode(variable.substring(1),
- LexicalUnitImpl.createString(contains), false);
- return node;
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/ListModifyNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/ListModifyNode.java
deleted file mode 100644
index 9da810d37b..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/ListModifyNode.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-
-import com.vaadin.sass.internal.ScssStylesheet;
-import com.vaadin.sass.internal.parser.LexicalUnitImpl;
-
-public abstract class ListModifyNode extends Node implements IVariableNode {
-
- protected ArrayList<String> list;
- protected ArrayList<String> modify;
- protected String separator = " ";
- protected String variable;
-
- public String getNewVariable() {
- return variable;
- }
-
- @Override
- public String toString() {
- return "List append node [var = " + variable + " , list =" + list
- + ", separator =" + separator + ", modify =" + modify + "]";
- }
-
- public VariableNode getModifiedList() {
- final ArrayList<String> newList = new ArrayList<String>(list);
- modifyList(newList);
-
- LexicalUnitImpl unit = null;
- if (newList.size() > 0) {
- unit = LexicalUnitImpl.createIdent(newList.get(0));
- LexicalUnitImpl last = unit;
- for (int i = 1; i < newList.size(); i++) {
- LexicalUnitImpl current = LexicalUnitImpl.createIdent(newList
- .get(i));
- last.setNextLexicalUnit(current);
- last = current;
- }
-
- }
- VariableNode node = new VariableNode(variable.substring(1), unit, false);
- return node;
- }
-
- protected abstract void modifyList(ArrayList<String> newList);
-
- protected void checkSeparator(String separator, String list) {
- String lowerCase = "";
- if (separator == null
- || (lowerCase = separator.toLowerCase()).equals("auto")) {
- if (list.contains(",")) {
- this.separator = ",";
- }
- } else if (lowerCase.equals("comma")) {
- this.separator = ",";
- } else if (lowerCase.equals("space")) {
- this.separator = " ";
- }
- }
-
- protected void populateList(String list, String modify) {
- this.list = new ArrayList<String>(Arrays.asList(list.split(separator)));
- this.modify = new ArrayList<String>(Arrays.asList(modify
- .split(separator)));
- }
-
- @Override
- public void replaceVariables(ArrayList<VariableNode> variables) {
- for (final String listVar : new ArrayList<String>(list)) {
- replacePossibleVariable(variables, listVar, list);
- }
-
- for (final String listVar : new ArrayList<String>(modify)) {
- replacePossibleVariable(variables, listVar, modify);
- }
-
- }
-
- private void replacePossibleVariable(ArrayList<VariableNode> variables,
- final String listVar, ArrayList<String> list) {
- if (listVar.startsWith("$")) {
-
- for (final VariableNode var : variables) {
-
- if (var.getName().equals(listVar.substring(1))) {
-
- String[] split = null;
- if (var.getExpr().printState().contains(",")) {
- split = var.getExpr().printState().split(",");
- } else {
- split = var.getExpr().printState().split(" ");
- }
- int i = list.indexOf(listVar);
- for (final String s : split) {
- list.add(i, s.trim());
- i++;
- }
-
- list.remove(listVar);
- break;
-
- }
- }
-
- }
- }
-
- @Override
- public void traverse() {
- replaceVariables(ScssStylesheet.getVariables());
- ScssStylesheet.addVariable(getModifiedList());
- getParentNode().removeChild(this);
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/ListRemoveNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/ListRemoveNode.java
deleted file mode 100644
index 71097d304d..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/ListRemoveNode.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree;
-
-import java.util.ArrayList;
-
-public class ListRemoveNode extends ListModifyNode {
-
- public ListRemoveNode(String variable, String list, String remove,
- String separator) {
- this.variable = variable;
- checkSeparator(separator, list);
- populateList(list, remove);
-
- }
-
- @Override
- protected void modifyList(ArrayList<String> newList) {
- newList.removeAll(modify);
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/MediaNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/MediaNode.java
deleted file mode 100644
index c5494cb665..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/MediaNode.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree;
-
-import org.w3c.css.sac.SACMediaList;
-
-public class MediaNode extends Node {
- private static final long serialVersionUID = 2502097081457509523L;
-
- SACMediaList media;
-
- public MediaNode(SACMediaList media) {
- super();
- this.media = media;
- }
-
- public SACMediaList getMedia() {
- return media;
- }
-
- public void setMedia(SACMediaList media) {
- this.media = media;
- }
-
- @Override
- public String printState() {
- return buildString(PRINT_STRATEGY, true);
- }
-
- @Override
- public String toString() {
- return buildString(TO_STRING_STRATEGY, true);
- }
-
- @Override
- public void traverse() {
-
- }
-
- private String buildString(BuildStringStrategy strategy, boolean indent) {
- StringBuilder builder = new StringBuilder("@media ");
- if (media != null) {
- for (int i = 0; i < media.getLength(); i++) {
- if (i > 0) {
- builder.append(", ");
- }
- builder.append(media.item(i));
- }
- }
- builder.append(" {\n");
- for (Node child : children) {
- builder.append('\t');
- if (child instanceof BlockNode) {
- if (PRINT_STRATEGY.equals(strategy)) {
- builder.append(((BlockNode) child).buildString(indent));
- } else {
- builder.append(strategy.build(child));
-
- }
- } else {
- builder.append(strategy.build(child));
- }
- builder.append('\n');
- }
- builder.append("}");
- return builder.toString();
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/MicrosoftRuleNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/MicrosoftRuleNode.java
deleted file mode 100644
index 18946d7279..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/MicrosoftRuleNode.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree;
-
-import java.util.ArrayList;
-
-import com.vaadin.sass.internal.ScssStylesheet;
-import com.vaadin.sass.internal.util.StringUtil;
-
-public class MicrosoftRuleNode extends Node implements IVariableNode {
-
- private final String name;
- private String value;
-
- public MicrosoftRuleNode(String name, String value) {
- this.name = name;
- this.value = value;
- }
-
- @Override
- public void replaceVariables(ArrayList<VariableNode> variables) {
- for (final VariableNode var : variables) {
- if (StringUtil.containsVariable(value, var.getName())) {
- value = StringUtil.replaceVariable(value, var.getName(), var
- .getExpr().printState());
- }
- }
- }
-
- @Override
- public String printState() {
- return name + ": " + value + ";";
- }
-
- @Override
- public String toString() {
- return "MicrosoftRule node [" + printState() + "]";
- }
-
- @Override
- public void traverse() {
- replaceVariables(ScssStylesheet.getVariables());
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/MixinDefNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/MixinDefNode.java
deleted file mode 100644
index bae1475076..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/MixinDefNode.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import com.vaadin.sass.internal.ScssStylesheet;
-import com.vaadin.sass.internal.util.DeepCopy;
-
-public class MixinDefNode extends Node implements IVariableNode {
- private static final long serialVersionUID = 5469294053247343948L;
-
- private String name;
- private ArrayList<VariableNode> arglist;
- private String body;
-
- public MixinDefNode(String name, Collection<VariableNode> args) {
- super();
- this.name = name;
- arglist = new ArrayList<VariableNode>();
- if (args != null && !args.isEmpty()) {
- arglist.addAll(args);
- }
- }
-
- @Override
- public String toString() {
- return "Mixin Definition Node: {name: " + name + ", args: "
- + arglist.size() + ", body: " + body + "}";
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public ArrayList<VariableNode> getArglist() {
- return arglist;
- }
-
- public void setArglist(ArrayList<VariableNode> arglist) {
- this.arglist = arglist;
- }
-
- @Override
- public void replaceVariables(ArrayList<VariableNode> variables) {
- for (final VariableNode var : variables) {
- for (final VariableNode arg : new ArrayList<VariableNode>(arglist)) {
- if (arg.getName().equals(var.getName())
- && arg.getExpr() == null) {
- arglist.add(arglist.indexOf(arg),
- (VariableNode) DeepCopy.copy(var));
- arglist.remove(arg);
- }
- }
- }
- }
-
- @Override
- public void traverse() {
- if (!arglist.isEmpty()) {
- for (final VariableNode arg : arglist) {
- if (arg.getExpr() != null) {
- ScssStylesheet.addVariable(arg);
- }
- }
- }
- }
-
- /**
- * This should only happen on a cloned MixinDefNode, since it changes the
- * Node itself.
- *
- * @param mixinNode
- * @return
- */
- public MixinDefNode replaceContentDirective(MixinNode mixinNode) {
- return findAndReplaceContentNodeInChildren(this, mixinNode);
- }
-
- private MixinDefNode findAndReplaceContentNodeInChildren(Node node,
- MixinNode mixinNode) {
- ContentNode contentNode = null;
- for (Node child : new ArrayList<Node>(node.getChildren())) {
- if (child instanceof ContentNode) {
- contentNode = (ContentNode) child;
- replaceContentNode(contentNode, mixinNode);
- } else {
- findAndReplaceContentNodeInChildren(child, mixinNode);
- }
- }
- return this;
- }
-
- public MixinDefNode replaceContentNode(ContentNode contentNode,
- MixinNode mixinNode) {
- if (contentNode != null) {
- contentNode.getParentNode().appendChildrenAfter(
- DeepCopy.copy(mixinNode.getChildren()), contentNode);
- contentNode.getParentNode().removeChild(contentNode);
- }
- return this;
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/MixinNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/MixinNode.java
deleted file mode 100644
index 23d65e1660..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/MixinNode.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Map;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import com.vaadin.sass.internal.ScssStylesheet;
-import com.vaadin.sass.internal.parser.LexicalUnitImpl;
-import com.vaadin.sass.internal.visitor.MixinNodeHandler;
-
-public class MixinNode extends Node implements IVariableNode {
- private static final long serialVersionUID = 4725008226813110658L;
-
- private String name;
- private ArrayList<LexicalUnitImpl> arglist;
-
- public MixinNode(String name) {
- this.name = name;
- arglist = new ArrayList<LexicalUnitImpl>();
- }
-
- public MixinNode(String name, Collection<LexicalUnitImpl> args) {
- this(name);
- if (args != null && !args.isEmpty()) {
- arglist.addAll(args);
- }
- }
-
- @Override
- public String printState() {
- return "name: " + name + " args: " + arglist;
- }
-
- @Override
- public String toString() {
- return "Mixin node [" + printState() + "]";
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public ArrayList<LexicalUnitImpl> getArglist() {
- return arglist;
- }
-
- public void setArglist(ArrayList<LexicalUnitImpl> arglist) {
- this.arglist = arglist;
- }
-
- /**
- * Replace variable references with their values in the mixin argument list.
- */
- @Override
- public void replaceVariables(ArrayList<VariableNode> variables) {
- for (final VariableNode var : variables) {
- for (final LexicalUnitImpl arg : new ArrayList<LexicalUnitImpl>(
- arglist)) {
- LexicalUnitImpl unit = arg;
- // only perform replace in the value if separate argument
- // name
- // and value
- if (unit.getNextLexicalUnit() != null) {
- unit = unit.getNextLexicalUnit();
- }
- if (unit.getLexicalUnitType() == LexicalUnitImpl.SCSS_VARIABLE
- && unit.getStringValue().equals(var.getName())) {
- unit.replaceValue(var.getExpr());
- }
- }
-
- if (name.startsWith("$")) {
- if (name.equals("$" + var.getName())) {
- name = var.getExpr().printState();
- }
- } else if (name.startsWith("#{") && name.endsWith("}")) {
- if (name.equals("#{$" + var.getName() + "}")) {
- name = var.getExpr().printState();
- }
- }
- }
- }
-
- protected void replaceVariablesForChildren() {
- for (Node child : getChildren()) {
- if (child instanceof IVariableNode) {
- ((IVariableNode) child).replaceVariables(ScssStylesheet
- .getVariables());
- }
- }
- }
-
- @Override
- public void traverse() {
- try {
- // limit variable scope to the mixin
- Map<String, VariableNode> variableScope = ScssStylesheet
- .openVariableScope();
-
- replaceVariables(ScssStylesheet.getVariables());
- replaceVariablesForChildren();
- MixinNodeHandler.traverse(this);
-
- ScssStylesheet.closeVariableScope(variableScope);
-
- } catch (Exception e) {
- Logger.getLogger(MixinNode.class.getName()).log(Level.SEVERE, null,
- e);
- }
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/NestPropertiesNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/NestPropertiesNode.java
deleted file mode 100644
index fb35e13175..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/NestPropertiesNode.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import com.vaadin.sass.internal.visitor.NestedNodeHandler;
-
-public class NestPropertiesNode extends Node implements IVariableNode {
- private static final long serialVersionUID = 3671253315690598308L;
-
- public NestPropertiesNode(String name) {
- super();
- this.name = name;
- }
-
- private String name;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- @Override
- public String toString() {
- return "Nest properties node [ name = " + name + " ]";
- }
-
- public Collection<RuleNode> unNesting() {
- List<RuleNode> result = new ArrayList<RuleNode>();
- for (Node child : children) {
- RuleNode createNewRuleNodeFromChild = createNewRuleNodeFromChild((RuleNode) child);
- result.add(createNewRuleNodeFromChild);
- }
- return result;
- }
-
- public RuleNode createNewRuleNodeFromChild(RuleNode child) {
- StringBuilder builder = new StringBuilder(name);
- builder.append("-").append(child.getVariable());
- RuleNode newRuleNode = new RuleNode(builder.toString(),
- child.getValue(), child.isImportant(), null);
- return newRuleNode;
- }
-
- @Override
- public void replaceVariables(ArrayList<VariableNode> variables) {
- for (Node child : getChildren()) {
- if (child instanceof RuleNode) {
- ((RuleNode) child).replaceVariables(variables);
- }
- }
- }
-
- @Override
- public void traverse() {
- NestedNodeHandler.traverse(this);
- }
-
- @Override
- public String printState() {
- return null;
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/Node.java b/theme-compiler/src/com/vaadin/sass/internal/tree/Node.java
deleted file mode 100644
index ea01655571..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/Node.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Collection;
-
-import com.vaadin.sass.internal.parser.LexicalUnitImpl;
-
-public abstract class Node implements Serializable {
-
- public static BuildStringStrategy PRINT_STRATEGY = new PrintStrategy();
-
- public static BuildStringStrategy TO_STRING_STRATEGY = new ToStringStrategy();
-
- private static final long serialVersionUID = 5914711715839294816L;
-
- protected ArrayList<Node> children;
-
- protected Node parentNode;
-
- public Node() {
- children = new ArrayList<Node>();
- }
-
- public void appendAll(Collection<Node> nodes) {
- if (nodes != null && !nodes.isEmpty()) {
- children.addAll(nodes);
-
- for (final Node n : nodes) {
- if (n.getParentNode() != null) {
- n.getParentNode().removeChild(n);
- }
- n.setParentNode(this);
- }
-
- }
- }
-
- public void appendChildrenAfter(Collection<Node> childrenNodes, Node after) {
- if (childrenNodes != null && !childrenNodes.isEmpty()) {
- int index = children.indexOf(after);
- if (index != -1) {
- children.addAll(index, childrenNodes);
- for (final Node child : childrenNodes) {
- if (child.getParentNode() != null) {
- child.getParentNode().removeChild(child);
- }
- child.setParentNode(this);
- }
- } else {
- throw new NullPointerException("after-node was not found");
- }
- }
- }
-
- public void appendChild(Node node) {
- if (node != null) {
- children.add(node);
- if (node.getParentNode() != null) {
- node.getParentNode().removeChild(node);
- }
- node.setParentNode(this);
- }
- }
-
- public void appendChild(Node node, Node after) {
- if (node != null) {
- int index = children.indexOf(after);
- if (index != -1) {
- children.add(index + 1, node);
- if (node.getParentNode() != null) {
- node.getParentNode().removeChild(node);
- }
- node.setParentNode(this);
- } else {
- throw new NullPointerException("after-node was not found");
- }
- }
- }
-
- public void removeChild(Node node) {
- if (node != null) {
- boolean removed = children.remove(node);
- if (removed) {
- node.setParentNode(null);
- }
- }
- }
-
- public ArrayList<Node> getChildren() {
- return children;
- }
-
- public void setChildren(ArrayList<Node> children) {
- this.children = children;
- }
-
- public boolean hasChildren() {
- return !children.isEmpty();
- }
-
- /**
- * Method for manipulating the data contained within the {@link Node}.
- *
- * Traversing a node is allowed to modify the node, replace it with one or
- * more nodes at the same or later position in its parent and modify the
- * children of the node, but not modify or remove preceding nodes in its
- * parent.
- */
- public abstract void traverse();
-
- /**
- * Prints out the current state of the node tree. Will return SCSS before
- * compile and CSS after.
- *
- * Result value could be null.
- *
- * @since 7.2
- * @return State as a string
- */
- public String printState() {
- return null;
- }
-
- public Node getParentNode() {
- return parentNode;
- }
-
- private void setParentNode(Node parentNode) {
- this.parentNode = parentNode;
- }
-
- public static interface BuildStringStrategy {
-
- String build(Node node);
-
- String build(LexicalUnitImpl unit);
- }
-
- public static class PrintStrategy implements BuildStringStrategy {
-
- @Override
- public String build(Node node) {
- return node.printState();
- }
-
- @Override
- public String build(LexicalUnitImpl unit) {
- return unit.printState();
- }
-
- }
-
- public static class ToStringStrategy implements BuildStringStrategy {
-
- @Override
- public String build(Node node) {
- return node.toString();
- }
-
- @Override
- public String build(LexicalUnitImpl unit) {
- return unit.toString();
- }
-
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/RuleNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/RuleNode.java
deleted file mode 100644
index e9886e6871..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/RuleNode.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree;
-
-import java.util.ArrayList;
-import java.util.regex.Pattern;
-
-import com.vaadin.sass.internal.ScssStylesheet;
-import com.vaadin.sass.internal.expression.ArithmeticExpressionEvaluator;
-import com.vaadin.sass.internal.parser.LexicalUnitImpl;
-import com.vaadin.sass.internal.util.StringUtil;
-
-public class RuleNode extends Node implements IVariableNode {
- private static final long serialVersionUID = 6653493127869037022L;
-
- String variable;
- LexicalUnitImpl value;
- String comment;
- private boolean important;
-
- public RuleNode(String variable, LexicalUnitImpl value, boolean important,
- String comment) {
- this.variable = variable;
- this.value = value;
- this.important = important;
- this.comment = comment;
- }
-
- public String getVariable() {
- return variable;
- }
-
- public void setVariable(String variable) {
- this.variable = variable;
- }
-
- public LexicalUnitImpl getValue() {
- return value;
- }
-
- public void setValue(LexicalUnitImpl value) {
- this.value = value;
- }
-
- @Override
- public String printState() {
- return buildString(PRINT_STRATEGY);
- }
-
- @Override
- public String toString() {
- return "Rule node [" + buildString(TO_STRING_STRATEGY) + "]";
- }
-
- public boolean isImportant() {
- return important;
- }
-
- public void setImportant(boolean important) {
- this.important = important;
- }
-
- public String getComment() {
- return comment;
- }
-
- public void setComment(String comment) {
- this.comment = comment;
- }
-
- @Override
- public void replaceVariables(ArrayList<VariableNode> variables) {
- for (final VariableNode node : variables) {
-
- String interpolation = "#{$" + node.getName() + "}";
-
- if (variable != null && variable.contains(interpolation)) {
- variable = variable.replaceAll(Pattern.quote(interpolation),
- node.getExpr().unquotedString());
-
- }
-
- if (value.getLexicalUnitType() == LexicalUnitImpl.SAC_FUNCTION) {
-
- if (value.getParameters() != null) {
- if (StringUtil.containsVariable(value.getParameters()
- .printState(), node.getName())) {
- LexicalUnitImpl param = value.getParameters();
- while (param != null) {
- if (param.getLexicalUnitType() == LexicalUnitImpl.SCSS_VARIABLE
- && param.getValueAsString().equals(
- node.getName())) {
- param.replaceValue(node.getExpr());
- }
- param = param.getNextLexicalUnit();
- }
- }
- }
- } else if (value.getStringValue() != null
- && value.getStringValue().contains(interpolation)) {
- LexicalUnitImpl current = value;
- while (current != null) {
- if (current.getValueAsString().contains(interpolation)) {
-
- current.setStringValue(current.getValueAsString()
- .replaceAll(Pattern.quote(interpolation),
- node.getExpr().unquotedString()));
- }
- current = current.getNextLexicalUnit();
- }
- } else {
- LexicalUnitImpl current = value;
- while (current != null) {
- if (current.getLexicalUnitType() == LexicalUnitImpl.SCSS_VARIABLE
- && current.getValueAsString()
- .equals(node.getName())) {
-
- current.replaceValue(node.getExpr());
- }
- current = current.getNextLexicalUnit();
- }
- }
- }
- }
-
- @Override
- public void traverse() {
- /*
- * "replaceVariables(ScssStylesheet.getVariables());" seems duplicated
- * and can be extracted out of if, but it is not.
- * containsArithmeticalOperator must be called before replaceVariables.
- * Because for the "/" operator, it needs to see if its predecessor or
- * successor is a Variable or not, to determine it is an arithmetic
- * operator.
- */
- if (ArithmeticExpressionEvaluator.get().containsArithmeticalOperator(
- value)) {
- replaceVariables(ScssStylesheet.getVariables());
- value = ArithmeticExpressionEvaluator.get().evaluate(value);
- } else {
- replaceVariables(ScssStylesheet.getVariables());
- }
- }
-
- private String buildString(BuildStringStrategy strategy) {
- String stringValue = strategy.build(value)
- + (important ? " !important" : "");
- StringBuilder builder = new StringBuilder();
- if (!"".equals(stringValue.trim())) {
- builder.append(variable);
- builder.append(": ");
- builder.append(stringValue);
- builder.append(';');
- }
-
- if (comment != null) {
- builder.append(comment);
- }
- return builder.toString();
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/SimpleNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/SimpleNode.java
deleted file mode 100644
index 91d9767b89..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/SimpleNode.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree;
-
-import java.util.ArrayList;
-
-import com.vaadin.sass.internal.ScssStylesheet;
-import com.vaadin.sass.internal.util.StringUtil;
-
-/**
- * A simple BlockNode where input text equals output. <b>Note : </b> ignores any
- * possible children so only use it when you are sure no child nodes will be
- * applied.
- *
- * @author Sebastian Nyholm @ Vaadin Ltd
- *
- */
-public class SimpleNode extends Node implements IVariableNode {
-
- private String text;
-
- public SimpleNode(String text) {
- this.text = text;
-
- }
-
- @Override
- public String printState() {
- return text;
- }
-
- @Override
- public String toString() {
- return printState();
- }
-
- @Override
- public void replaceVariables(ArrayList<VariableNode> variables) {
- for (final VariableNode node : variables) {
- if (StringUtil.containsVariable(text, node.getName())) {
- text = StringUtil.replaceVariable(text, node.getName(), node
- .getExpr().printState());
- }
- }
- }
-
- @Override
- public void traverse() {
- replaceVariables(ScssStylesheet.getVariables());
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/VariableNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/VariableNode.java
deleted file mode 100644
index 6884ae6f36..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/VariableNode.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree;
-
-import java.util.ArrayList;
-
-import com.vaadin.sass.internal.ScssStylesheet;
-import com.vaadin.sass.internal.expression.ArithmeticExpressionEvaluator;
-import com.vaadin.sass.internal.parser.LexicalUnitImpl;
-import com.vaadin.sass.internal.util.StringUtil;
-import com.vaadin.sass.internal.visitor.VariableNodeHandler;
-
-public class VariableNode extends Node implements IVariableNode {
- private static final long serialVersionUID = 7003372557547748734L;
-
- private String name;
- private LexicalUnitImpl expr;
- private boolean guarded;
-
- public VariableNode(String name, LexicalUnitImpl expr, boolean guarded) {
- super();
- this.name = name;
- this.expr = expr;
- this.guarded = guarded;
- }
-
- public LexicalUnitImpl getExpr() {
- return expr;
- }
-
- public void setExpr(LexicalUnitImpl expr) {
- this.expr = expr;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getName() {
- return name;
- }
-
- public boolean isGuarded() {
- return guarded;
- }
-
- @Override
- public String printState() {
- return buildString(PRINT_STRATEGY);
- }
-
- @Override
- public String toString() {
- return "Variable node [" + buildString(TO_STRING_STRATEGY) + "]";
- }
-
- public void setGuarded(boolean guarded) {
- this.guarded = guarded;
- }
-
- @Override
- public void replaceVariables(ArrayList<VariableNode> variables) {
- for (final VariableNode node : variables) {
- if (!equals(node)) {
-
- if (StringUtil.containsVariable(expr.printState(),
- node.getName())) {
- if (expr.getParameters() != null
- && StringUtil.containsVariable(expr.getParameters()
- .printState(), node.getName())) {
- replaceValues(expr.getParameters(), node);
- } else if (expr.getLexicalUnitType() == LexicalUnitImpl.SCSS_VARIABLE) {
- replaceValues(expr, node);
- }
- }
- }
- }
- }
-
- private void replaceValues(LexicalUnitImpl unit, VariableNode node) {
- while (unit != null) {
-
- if (unit.getLexicalUnitType() == LexicalUnitImpl.SCSS_VARIABLE
- && unit.getValueAsString().equals(node.getName())) {
- LexicalUnitImpl.replaceValues(unit, node.getExpr());
- }
-
- unit = unit.getNextLexicalUnit();
- }
- }
-
- @Override
- public void traverse() {
- /*
- * "replaceVariables(ScssStylesheet.getVariables());" seems duplicated
- * and can be extracted out of if, but it is not.
- * containsArithmeticalOperator must be called before replaceVariables.
- * Because for the "/" operator, it needs to see if its predecessor or
- * successor is a Variable or not, to determine it is an arithmetic
- * operator.
- */
- if (ArithmeticExpressionEvaluator.get().containsArithmeticalOperator(
- expr)) {
- replaceVariables(ScssStylesheet.getVariables());
- expr = ArithmeticExpressionEvaluator.get().evaluate(expr);
- } else {
- replaceVariables(ScssStylesheet.getVariables());
- }
- VariableNodeHandler.traverse(this);
- }
-
- private String buildString(BuildStringStrategy strategy) {
- StringBuilder builder = new StringBuilder("$");
- builder.append(name).append(": ").append(strategy.build(expr));
- return builder.toString();
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/WhileNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/WhileNode.java
deleted file mode 100644
index a059761a34..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/WhileNode.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree;
-
-public class WhileNode extends Node {
- private static final long serialVersionUID = 7593896018196027279L;
-
- private String condition;
- private String body;
-
- public WhileNode(String condition, String body) {
- this.condition = condition;
- this.body = body;
- }
-
- @Override
- public String toString() {
- return "While Node: { condition: " + condition + ", body:" + body + "}";
- }
-
- @Override
- public void traverse() {
-
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/controldirective/EachDefNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/controldirective/EachDefNode.java
deleted file mode 100644
index 88dbf2c25b..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/controldirective/EachDefNode.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree.controldirective;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import com.vaadin.sass.internal.ScssStylesheet;
-import com.vaadin.sass.internal.parser.LexicalUnitImpl;
-import com.vaadin.sass.internal.tree.IVariableNode;
-import com.vaadin.sass.internal.tree.Node;
-import com.vaadin.sass.internal.tree.VariableNode;
-import com.vaadin.sass.internal.visitor.EachNodeHandler;
-
-public class EachDefNode extends Node implements IVariableNode {
- private static final long serialVersionUID = 7943948981204906221L;
-
- private String var;
- private ArrayList<String> list;
-
- private String listVariable;
-
- public EachDefNode(String var, ArrayList<String> list) {
- super();
- this.var = var;
- this.list = list;
- }
-
- public EachDefNode(String var, String listVariable) {
- this.var = var;
- this.listVariable = listVariable;
- }
-
- public List<String> getVariables() {
- return list;
- }
-
- public String getVariableName() {
- return var;
- }
-
- @Override
- public String toString() {
- if (hasListVariable()) {
- return "Each Definition Node: {variable : " + var + ", "
- + "listVariable : " + listVariable + "}";
- } else {
- return "Each Definition Node: {variable : " + var + ", "
- + "children : " + list.size() + "}";
- }
- }
-
- public boolean hasListVariable() {
- return listVariable != null;
- }
-
- @Override
- public void replaceVariables(ArrayList<VariableNode> variables) {
- if (listVariable != null) {
- for (final VariableNode var : variables) {
- if (listVariable.equals(var.getName())) {
-
- LexicalUnitImpl current = var.getExpr();
- list = new ArrayList<String>();
-
- while (current != null) {
- if (current.getValue() != null
- && current.getLexicalUnitType() != LexicalUnitImpl.SAC_OPERATOR_COMMA) {
- list.add(current.getValueAsString());
- }
- current = current.getNextLexicalUnit();
- }
- listVariable = null;
- break;
- }
- }
-
- }
- }
-
- public String getListVariable() {
- return listVariable;
- }
-
- @Override
- public void traverse() {
- replaceVariables(ScssStylesheet.getVariables());
- EachNodeHandler.traverse(this);
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/controldirective/ElseNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/controldirective/ElseNode.java
deleted file mode 100644
index 08903d9a2a..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/controldirective/ElseNode.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree.controldirective;
-
-import com.vaadin.sass.internal.tree.Node;
-
-public class ElseNode extends Node implements IfElseNode {
-
- @Override
- public String getExpression() {
- return null;
- }
-
- @Override
- public void traverse() {
-
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/controldirective/IfElseDefNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/controldirective/IfElseDefNode.java
deleted file mode 100644
index 8c7fa86596..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/controldirective/IfElseDefNode.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree.controldirective;
-
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import com.vaadin.sass.internal.tree.Node;
-import com.vaadin.sass.internal.visitor.IfElseNodeHandler;
-
-public class IfElseDefNode extends Node {
-
- @Override
- public String printState() {
- return buildString(PRINT_STRATEGY);
- }
-
- @Override
- public String toString() {
- return "IfElseDef node [" + buildString(TO_STRING_STRATEGY) + "]";
- }
-
- @Override
- public void traverse() {
- try {
-
- for (final Node child : children) {
- child.traverse();
- }
-
- IfElseNodeHandler.traverse(this);
- } catch (Exception e) {
- Logger.getLogger(IfElseDefNode.class.getName()).log(Level.SEVERE,
- null, e);
- }
- }
-
- private String buildString(BuildStringStrategy strategy) {
- StringBuilder b = new StringBuilder();
- for (final Node child : getChildren()) {
- b.append(strategy.build(child));
- b.append("\n");
- }
- return b.toString();
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/controldirective/IfElseNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/controldirective/IfElseNode.java
deleted file mode 100644
index e57729e0d8..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/controldirective/IfElseNode.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree.controldirective;
-
-public interface IfElseNode {
-
- String getExpression();
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/tree/controldirective/IfNode.java b/theme-compiler/src/com/vaadin/sass/internal/tree/controldirective/IfNode.java
deleted file mode 100644
index 6c98927110..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/tree/controldirective/IfNode.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.tree.controldirective;
-
-import java.util.ArrayList;
-
-import com.vaadin.sass.internal.ScssStylesheet;
-import com.vaadin.sass.internal.tree.IVariableNode;
-import com.vaadin.sass.internal.tree.Node;
-import com.vaadin.sass.internal.tree.VariableNode;
-import com.vaadin.sass.internal.util.StringUtil;
-
-public class IfNode extends Node implements IfElseNode, IVariableNode {
- private String expression;
-
- public IfNode(String expression) {
- this.expression = expression;
- }
-
- @Override
- public String getExpression() {
- if (expression != null) {
- return expression.trim();
- } else {
- return "false";
- }
- }
-
- @Override
- public String toString() {
- return "@if " + expression;
- }
-
- @Override
- public void replaceVariables(ArrayList<VariableNode> variables) {
- for (final VariableNode node : variables) {
- if (StringUtil.containsVariable(expression, node.getName())) {
- expression = StringUtil.replaceVariable(expression,
- node.getName(), node.getExpr().printState());
- }
- }
- }
-
- @Override
- public void traverse() {
- replaceVariables(ScssStylesheet.getVariables());
- }
-
-} \ No newline at end of file
diff --git a/theme-compiler/src/com/vaadin/sass/internal/util/Clonable.java b/theme-compiler/src/com/vaadin/sass/internal/util/Clonable.java
deleted file mode 100644
index 573d03765f..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/util/Clonable.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.util;
-
-public interface Clonable {
-
- public Object clone() throws CloneNotSupportedException;
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/util/ColorUtil.java b/theme-compiler/src/com/vaadin/sass/internal/util/ColorUtil.java
deleted file mode 100644
index 14b4960d0b..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/util/ColorUtil.java
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.util;
-
-import org.w3c.css.sac.LexicalUnit;
-
-import com.vaadin.sass.internal.parser.LexicalUnitImpl;
-
-public class ColorUtil {
- public static LexicalUnitImpl hexColorToHsl(LexicalUnitImpl hexColor) {
- String s = hexColor.getStringValue().substring(1);
- int r = 0, g = 0, b = 0;
- if (s.length() == 3) {
- String sh = s.substring(0, 1);
- r = Integer.parseInt(sh + sh, 16);
- sh = s.substring(1, 2);
- g = Integer.parseInt(sh + sh, 16);
- sh = s.substring(2, 3);
- b = Integer.parseInt(sh + sh, 16);
- } else if (s.length() == 6) {
- r = Integer.parseInt(s.substring(0, 2), 16);
- g = Integer.parseInt(s.substring(2, 4), 16);
- b = Integer.parseInt(s.substring(4, 6), 16);
- }
- int hsl[] = calculateHsl(r, g, b);
-
- LexicalUnitImpl hslParams = createHslParameters(hsl[0], hsl[1], hsl[2],
- hexColor.getLineNumber(), hexColor.getColumnNumber(),
- hexColor.getPreviousLexicalUnit());
-
- return LexicalUnitImpl.createFunction(hexColor.getLineNumber(),
- hexColor.getColumnNumber(), hexColor.getPreviousLexicalUnit(),
- "hsl", hslParams);
- }
-
- public static LexicalUnitImpl hslToHexColor(LexicalUnitImpl hsl, int lengh) {
- int[] rgb = calculateRgb(hsl);
- StringBuilder builder = new StringBuilder("#");
- for (int i = 0; i < 3; i++) {
- String color = Integer.toHexString(rgb[i]);
- if (lengh == 6) {
- if (color.length() == 1) {
- color = "0" + color;
- }
- }
- if (lengh == 3) {
- color = color.substring(0, 1);
- }
- builder.append(color);
- }
- return LexicalUnitImpl.createIdent(hsl.getLineNumber(),
- hsl.getColumnNumber(), hsl.getPreviousLexicalUnit(),
- builder.toString());
- }
-
- private static int[] calculateRgb(LexicalUnitImpl hsl) {
- LexicalUnitImpl hslParam = hsl.getParameters();
- LexicalUnitImpl hue = null;
- LexicalUnitImpl saturation = null;
- LexicalUnitImpl lightness = null;
- int i = 0;
- while (i < 5) {
- switch (i) {
- case 0:
- hue = hslParam;
- break;
- case 2:
- saturation = hslParam;
- break;
- case 4:
- lightness = hslParam;
- break;
- case 1:
- case 3:
- break;
- }
- hslParam = hslParam.getNextLexicalUnit();
- i++;
- }
- float h = ((hue.getIntegerValue() % 360) + 360) % 360 / 360f;
- float s = saturation.getFloatValue() / 100;
- float l = lightness.getFloatValue() / 100;
- float m2, m1;
- int[] rgb = new int[3];
- m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;
- m1 = l * 2 - m2;
- rgb[0] = Math.round(hueToRgb(m1, m2, h + 1f / 3) * 255);
- rgb[1] = Math.round(hueToRgb(m1, m2, h) * 255);
- rgb[2] = Math.round(hueToRgb(m1, m2, h - 1f / 3) * 255);
- return rgb;
- }
-
- public static LexicalUnitImpl rgbToHsl(LexicalUnitImpl rgb) {
- LexicalUnitImpl rgbParam = rgb.getParameters();
- LexicalUnitImpl red = null;
- LexicalUnitImpl green = null;
- LexicalUnitImpl blue = null;
- int i = 0;
- while (i < 5) {
- switch (i) {
- case 0:
- red = rgbParam;
- break;
- case 2:
- green = rgbParam;
- break;
- case 4:
- blue = rgbParam;
- break;
- case 1:
- case 3:
- break;
- }
- rgbParam = rgbParam.getNextLexicalUnit();
- i++;
- }
-
- int hsl[] = calculateHsl(red.getIntegerValue(),
- green.getIntegerValue(), blue.getIntegerValue());
-
- rgbParam = rgb.getParameters();
-
- LexicalUnitImpl hslParams = createHslParameters(hsl[0], hsl[1], hsl[2],
- rgbParam.getLineNumber(), rgbParam.getColumnNumber(),
- rgbParam.getPreviousLexicalUnit());
-
- return LexicalUnitImpl.createFunction(rgb.getLineNumber(),
- rgb.getColumnNumber(), rgb.getPreviousLexicalUnit(), "hsl",
- hslParams);
- }
-
- private static int[] calculateHsl(int red, int green, int blue) {
- int[] hsl = new int[3];
-
- float r = red / 255f;
- float g = green / 255f;
- float b = blue / 255f;
-
- float max = Math.max(Math.max(r, g), b);
- float min = Math.min(Math.min(r, g), b);
- float d = max - min;
-
- float h = 0f, s = 0f, l = 0f;
-
- if (max == min) {
- h = 0;
- }
- if (max == r) {
- h = 60 * (g - b) / d;
- } else if (max == g) {
- h = 60 * (b - r) / d + 120;
- } else if (max == b) {
- h = 60 * (r - g) / d + 240;
- }
-
- l = (max + min) / 2f;
-
- if (max == min) {
- s = 0;
- } else if (l < 0.5) {
- s = d / (2 * l);
- } else {
- s = d / (2 - 2 * l);
- }
-
- hsl[0] = Math.round(h % 360);
- hsl[1] = Math.round(s * 100);
- hsl[2] = Math.round(l * 100);
-
- return hsl;
- }
-
- public static LexicalUnitImpl hslToRgb(LexicalUnitImpl hsl) {
- int[] rgb = calculateRgb(hsl);
- LexicalUnitImpl hslParam = hsl.getParameters();
- LexicalUnitImpl rgbParams = createRgbParameters(rgb[0], rgb[1], rgb[2],
- hslParam.getLineNumber(), hslParam.getColumnNumber(),
- hslParam.getPreviousLexicalUnit());
-
- return LexicalUnitImpl.createFunction(hsl.getLineNumber(),
- hsl.getColumnNumber(), hsl.getPreviousLexicalUnit(), "rgb",
- rgbParams);
- }
-
- private static float hueToRgb(float m1, float m2, float h) {
- if (h < 0) {
- h = h + 1;
- }
- if (h > 1) {
- h = h - 1;
- }
- if (h * 6 < 1) {
- return m1 + (m2 - m1) * h * 6;
- }
- if (h * 2 < 1) {
- return m2;
- }
- if (h * 3 < 2) {
- return m1 + (m2 - m1) * (2f / 3 - h) * 6;
- }
- return m1;
- }
-
- private static LexicalUnitImpl createRgbParameters(int r, int g, int b,
- int ln, int cn, LexicalUnitImpl prev) {
- LexicalUnitImpl red = LexicalUnitImpl.createInteger(ln, cn, prev, r);
- LexicalUnitImpl firstComma = LexicalUnitImpl.createComma(ln, cn, red);
- LexicalUnitImpl green = LexicalUnitImpl.createInteger(ln, cn,
- firstComma, g);
- LexicalUnitImpl secondComma = LexicalUnitImpl
- .createComma(ln, cn, green);
- LexicalUnitImpl.createInteger(ln, cn, secondComma, b);
- return red;
- }
-
- private static LexicalUnitImpl createHslParameters(int h, int s, int l,
- int ln, int cn, LexicalUnitImpl prev) {
- LexicalUnitImpl hue = LexicalUnitImpl.createInteger(ln, cn, prev, h);
- LexicalUnitImpl firstComma = LexicalUnitImpl.createComma(ln, cn, hue);
- LexicalUnitImpl saturation = LexicalUnitImpl.createPercentage(ln, cn,
- firstComma, s);
- LexicalUnitImpl secondComma = LexicalUnitImpl.createComma(ln, cn,
- saturation);
- LexicalUnitImpl.createPercentage(ln, cn, secondComma, l);
- return hue;
- }
-
- public static LexicalUnitImpl darken(LexicalUnitImpl darkenFunc) {
- LexicalUnitImpl color = darkenFunc.getParameters();
- float amount = getAmountValue(color);
- LexicalUnitImpl pre = darkenFunc.getPreviousLexicalUnit();
-
- return adjust(color, amount, ColorOperation.Darken, pre);
- }
-
- private static LexicalUnitImpl adjust(LexicalUnitImpl color,
- float amountByPercent, ColorOperation op, LexicalUnitImpl pre) {
- if (color.getLexicalUnitType() == LexicalUnit.SAC_FUNCTION) {
- LexicalUnit funcParam = color.getParameters();
- if ("hsl".equals(color.getFunctionName())) {
- LexicalUnit lightness = funcParam;
- for (int index = 0; index < 4; index++) {
- lightness = lightness.getNextLexicalUnit();
- }
- float newValue = 0f;
- if (op == ColorOperation.Darken) {
- newValue = lightness.getFloatValue() - amountByPercent;
- newValue = newValue < 0 ? 0 : newValue;
- } else if (op == ColorOperation.Lighten) {
- newValue = lightness.getFloatValue() + amountByPercent;
- newValue = newValue > 100 ? 100 : newValue;
- }
- ((LexicalUnitImpl) lightness).setFloatValue(newValue);
- return LexicalUnitImpl.createFunction(color.getLineNumber(),
- color.getColumnNumber(), pre, color.getFunctionName(),
- funcParam);
- }
-
- } else if (color.getLexicalUnitType() == LexicalUnit.SAC_IDENT) {
- if (color.getStringValue().startsWith("#")) {
- return hslToHexColor(
- adjust(hexColorToHsl(color), amountByPercent, op, pre),
- color.getStringValue().substring(1).length());
- }
- } else if (color.getLexicalUnitType() == LexicalUnit.SAC_RGBCOLOR) {
- LexicalUnitImpl hsl = rgbToHsl(color);
- LexicalUnitImpl hslAfterDarken = adjust(hsl, amountByPercent, op,
- pre);
- return hslToRgb(hslAfterDarken);
- }
- return color;
- }
-
- public static LexicalUnitImpl lighten(LexicalUnitImpl lightenFunc) {
- LexicalUnitImpl color = lightenFunc.getParameters();
- float amount = getAmountValue(color);
- LexicalUnitImpl pre = lightenFunc.getPreviousLexicalUnit();
-
- return adjust(color, amount, ColorOperation.Lighten, pre);
- }
-
- private static float getAmountValue(LexicalUnitImpl color) {
- LexicalUnit next = color.getNextLexicalUnit();
- float amount = 10f;
- if (next != null && next.getNextLexicalUnit() != null) {
- next = next.getNextLexicalUnit();
- amount = next.getFloatValue();
- }
- return amount;
- }
-
- enum ColorOperation {
- Darken, Lighten
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/util/DeepCopy.java b/theme-compiler/src/com/vaadin/sass/internal/util/DeepCopy.java
deleted file mode 100644
index af66eb9a74..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/util/DeepCopy.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.util;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-/**
- * Utility for making deep copies (vs. clone()'s shallow copies) of objects.
- * Objects are first serialized and then deserialized. Error checking is fairly
- * minimal in this implementation. If an object is encountered that cannot be
- * serialized (or that references an object that cannot be serialized) an error
- * is printed to the logger and null is returned. Depending on your specific
- * application, it might make more sense to have copy(...) re-throw the
- * exception.
- */
-public class DeepCopy {
-
- /**
- * Returns a copy of the object, or null if the object cannot be serialized.
- */
- public static Object copy(Object orig) {
-
- Object obj = null;
- if (!(orig instanceof Clonable)) {
- try {
- // Write the object out to a byte array
- FastByteArrayOutputStream fbos = new FastByteArrayOutputStream();
- ObjectOutputStream out = new ObjectOutputStream(fbos);
- out.writeObject(orig);
- out.flush();
- out.close();
-
- // Retrieve an input stream from the byte array and read
- // a copy of the object back in.
- ObjectInputStream in = new ObjectInputStream(
- fbos.getInputStream());
- obj = in.readObject();
- in.close();
- } catch (IOException e) {
- log(e);
- } catch (ClassNotFoundException cnfe) {
- log(cnfe);
- }
- return obj;
- } else {
- try {
- obj = ((Clonable) orig).clone();
- } catch (ClassCastException e2) {
- // Can't clone, return obj as null
- } catch (CloneNotSupportedException e2) {
- // Can't clone, return obj as null
- }
- return obj;
- }
- }
-
- public static <T> Collection<T> copy(Collection<T> objects) {
- List<T> copies = new LinkedList<T>();
- for (T object : objects) {
- copies.add((T) copy(object));
- }
- return copies;
- }
-
- private static void log(Throwable e) {
- Logger.getLogger(DeepCopy.class.getName()).log(Level.SEVERE, null, e);
- }
-} \ No newline at end of file
diff --git a/theme-compiler/src/com/vaadin/sass/internal/util/FastByteArrayInputStream.java b/theme-compiler/src/com/vaadin/sass/internal/util/FastByteArrayInputStream.java
deleted file mode 100644
index 9af2ccd97c..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/util/FastByteArrayInputStream.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.util;
-
-import java.io.InputStream;
-
-/**
- * ByteArrayInputStream implementation that does not synchronize methods.
- */
-public class FastByteArrayInputStream extends InputStream {
- /**
- * Our byte buffer
- */
- protected byte[] buf = null;
-
- /**
- * Number of bytes that we can read from the buffer
- */
- protected int count = 0;
-
- /**
- * Number of bytes that have been read from the buffer
- */
- protected int pos = 0;
-
- public FastByteArrayInputStream(byte[] buf, int count) {
- this.buf = buf;
- this.count = count;
- }
-
- @Override
- public final int available() {
- return count - pos;
- }
-
- @Override
- public final int read() {
- return (pos < count) ? (buf[pos++] & 0xff) : -1;
- }
-
- @Override
- public final int read(byte[] b, int off, int len) {
- if (pos >= count) {
- return -1;
- }
-
- if ((pos + len) > count) {
- len = (count - pos);
- }
-
- System.arraycopy(buf, pos, b, off, len);
- pos += len;
- return len;
- }
-
- @Override
- public final long skip(long n) {
- if ((pos + n) > count) {
- n = count - pos;
- }
- if (n < 0) {
- return 0;
- }
- pos += n;
- return n;
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/util/FastByteArrayOutputStream.java b/theme-compiler/src/com/vaadin/sass/internal/util/FastByteArrayOutputStream.java
deleted file mode 100644
index 3ede7e72f5..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/util/FastByteArrayOutputStream.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.util;
-
-import java.io.InputStream;
-import java.io.OutputStream;
-
-/**
- * ByteArrayOutputStream implementation that doesn't synchronize methods and
- * doesn't copy the data on toByteArray().
- */
-public class FastByteArrayOutputStream extends OutputStream {
- /**
- * Buffer and size
- */
- protected byte[] buf = null;
- protected int size = 0;
-
- /**
- * Constructs a stream with buffer capacity size 5K
- */
- public FastByteArrayOutputStream() {
- this(5 * 1024);
- }
-
- /**
- * Constructs a stream with the given initial size
- */
- public FastByteArrayOutputStream(int initSize) {
- size = 0;
- buf = new byte[initSize];
- }
-
- /**
- * Ensures that we have a large enough buffer for the given size.
- */
- private void verifyBufferSize(int sz) {
- if (sz > buf.length) {
- byte[] old = buf;
- buf = new byte[Math.max(sz, 2 * buf.length)];
- System.arraycopy(old, 0, buf, 0, old.length);
- old = null;
- }
- }
-
- public int getSize() {
- return size;
- }
-
- /**
- * Returns the byte array containing the written data. Note that this array
- * will almost always be larger than the amount of data actually written.
- */
- public byte[] getByteArray() {
- return buf;
- }
-
- @Override
- public final void write(byte b[]) {
- verifyBufferSize(size + b.length);
- System.arraycopy(b, 0, buf, size, b.length);
- size += b.length;
- }
-
- @Override
- public final void write(byte b[], int off, int len) {
- verifyBufferSize(size + len);
- System.arraycopy(b, off, buf, size, len);
- size += len;
- }
-
- @Override
- public final void write(int b) {
- verifyBufferSize(size + 1);
- buf[size++] = (byte) b;
- }
-
- public void reset() {
- size = 0;
- }
-
- /**
- * Returns a ByteArrayInputStream for reading back the written data
- */
- public InputStream getInputStream() {
- return new FastByteArrayInputStream(buf, size);
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/util/StringUtil.java b/theme-compiler/src/com/vaadin/sass/internal/util/StringUtil.java
deleted file mode 100644
index b20e8bab61..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/util/StringUtil.java
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.util;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-public class StringUtil {
- private static final String FOLDER_SEPARATOR = "/"; // folder separator
-
- private static final String WINDOWS_FOLDER_SEPARATOR = "\\"; // Windows
- // folder
- // separator
-
- private static final String TOP_PATH = ".."; // top folder
-
- private static final String CURRENT_PATH = "."; // current folder
-
- public static String cleanPath(String path) {
- String pathToUse = replace(path, WINDOWS_FOLDER_SEPARATOR,
- FOLDER_SEPARATOR);
- String[] pathArray = delimitedListToStringArray(pathToUse,
- FOLDER_SEPARATOR);
- List pathElements = new LinkedList();
- int tops = 0;
- for (int i = pathArray.length - 1; i >= 0; i--) {
- if (CURRENT_PATH.equals(pathArray[i])) {
- // do nothing
- } else if (TOP_PATH.equals(pathArray[i])) {
- tops++;
- } else {
- if (tops > 0) {
- tops--;
- } else {
- pathElements.add(0, pathArray[i]);
- }
- }
- }
- for (int i = 0; i < tops; i++) {
- pathElements.add(0, TOP_PATH);
- }
- return collectionToDelimitedString(pathElements, FOLDER_SEPARATOR);
- }
-
- public static String replace(String inString, String oldPattern,
- String newPattern) {
- if (inString == null) {
- return null;
- }
- if (oldPattern == null || newPattern == null) {
- return inString;
- }
-
- StringBuffer sbuf = new StringBuffer();
- // output StringBuffer we'll build up
- int pos = 0; // our position in the old string
- int index = inString.indexOf(oldPattern);
- // the index of an occurrence we've found, or -1
- int patLen = oldPattern.length();
- while (index >= 0) {
- sbuf.append(inString.substring(pos, index));
- sbuf.append(newPattern);
- pos = index + patLen;
- index = inString.indexOf(oldPattern, pos);
- }
- sbuf.append(inString.substring(pos));
-
- // remember to append any characters to the right of a match
- return sbuf.toString();
- }
-
- public static String[] delimitedListToStringArray(String str,
- String delimiter) {
- if (str == null) {
- return new String[0];
- }
- if (delimiter == null) {
- return new String[] { str };
- }
-
- List result = new ArrayList();
- int pos = 0;
- int delPos = 0;
- while ((delPos = str.indexOf(delimiter, pos)) != -1) {
- result.add(str.substring(pos, delPos));
- pos = delPos + delimiter.length();
- }
- if (str.length() > 0 && pos <= str.length()) {
- // Add rest of String, but not in case of empty input.
- result.add(str.substring(pos));
- }
-
- return (String[]) result.toArray(new String[result.size()]);
- }
-
- public static String collectionToDelimitedString(Collection coll,
- String delim, String prefix, String suffix) {
- if (coll == null) {
- return "";
- }
-
- StringBuffer sb = new StringBuffer();
- Iterator it = coll.iterator();
- int i = 0;
- while (it.hasNext()) {
- if (i > 0) {
- sb.append(delim);
- }
- sb.append(prefix).append(it.next()).append(suffix);
- i++;
- }
- return sb.toString();
- }
-
- public static String collectionToDelimitedString(Collection coll,
- String delim) {
- return collectionToDelimitedString(coll, delim, "", "");
- }
-
- /**
- * Check if a String contains a SCSS variable, using whole word match.
- *
- * @param text
- * text to be checked
- * @Param varName SCSS variable name to be checked. (Without '$' sign)
- * @return true if the text contains the SCSS variable, false if not
- */
- public static boolean containsVariable(String text, String varName) {
- return containsSubString(text, "$" + varName);
- }
-
- /**
- * Replace the SCSS variable in a String to its corresponding value, using
- * whole word match.
- *
- * @param text
- * text which contains the SCSS variable
- * @param varName
- * SCSS variable name (Without '$' sign)
- * @param value
- * the value of the SCSS variable
- * @return the String after replacing
- */
- public static String replaceVariable(String text, String varName,
- String value) {
- return replaceSubString(text, "$" + varName, value);
- }
-
- /**
- * Check if a String contains a sub string, using whole word match.
- *
- * @param text
- * text to be checked
- * @Param sub Sub String to be checked.
- * @return true if the text contains the sub string, false if not
- */
- public static boolean containsSubString(String text, String sub) {
- StringBuilder builder = new StringBuilder();
- // (?![\\w-]) means lookahead, the next one shouldn't be a word
- // character nor a dash.
- builder.append("(?<![\\w-])").append(Pattern.quote(sub))
- .append("(?![\\w-])");
- Pattern pattern = Pattern.compile(builder.toString());
- Matcher matcher = pattern.matcher(text);
- return matcher.find();
- }
-
- /**
- * Replace the sub string in a String to a value, using whole word match.
- *
- * @param text
- * text which contains the sub string
- * @param sub
- * the sub string
- * @param value
- * the new value
- * @return the String after replacing
- */
- public static String replaceSubString(String text, String sub, String value) {
- StringBuilder builder = new StringBuilder();
- // (?![\\w-]) means lookahead, the next one shouldn't be a word
- // character nor a dash.
- builder.append("(?<![\\w-])").append(Pattern.quote(sub))
- .append("(?![\\w-])");
- return text.replaceAll(builder.toString(), value);
- }
-
- /**
- * Remove duplicated sub string in a String given a splitter. Can be used to
- * removed duplicated selectors, e.g., in ".error.error", one duplicated
- * ".error" can be removed.
- *
- * @param motherString
- * string which may contains duplicated sub strings
- * @param splitter
- * the splitter splits the mother string to sub strings
- * @return the mother string with duplicated sub strings removed
- */
- public static String removeDuplicatedSubString(String motherString,
- String splitter) {
- List<String> subStrings = Arrays.asList(motherString.split(Pattern
- .quote(splitter)));
- LinkedHashSet<String> uniqueSubStrings = new LinkedHashSet<String>(
- subStrings);
- StringBuilder builder = new StringBuilder();
- int count = 0;
- for (String uniqueSubString : uniqueSubStrings) {
- count++;
- builder.append(uniqueSubString);
- if (count < uniqueSubStrings.size()) {
- builder.append(splitter);
- }
- }
- return builder.toString();
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/visitor/BlockNodeHandler.java b/theme-compiler/src/com/vaadin/sass/internal/visitor/BlockNodeHandler.java
deleted file mode 100644
index d5585264f5..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/visitor/BlockNodeHandler.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.visitor;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import com.vaadin.sass.internal.ScssStylesheet;
-import com.vaadin.sass.internal.tree.BlockNode;
-import com.vaadin.sass.internal.tree.Node;
-
-/**
- * Handle nesting of blocks by moving child blocks to their parent, updating
- * their selector lists while doing so. Also parent selectors (&amp;) are
- * handled here.
- *
- * Sample SASS code (from www.sass-lang.com):
- *
- * <pre>
- * table.hl {
- * margin: 2em 0;
- * td.ln {
- * text-align: right;
- * }
- * }
- * </pre>
- *
- * Note that nested properties are handled by {@link NestedNodeHandler}, not
- * here.
- */
-public class BlockNodeHandler {
-
- public static void traverse(BlockNode node) {
-
- if (node.getChildren().size() == 0) {
- // empty blocks are removed later
- return;
- }
-
- Node parent = node.getParentNode();
-
- if (parent instanceof BlockNode) {
- combineParentSelectorListToChild(node);
-
- } else if (node.getSelectors().contains("&")) {
- ScssStylesheet.warning("Base-level rule contains"
- + " the parent-selector-referencing character '&';"
- + " the character will be removed:\n" + node);
- removeParentReference(node);
- }
- }
-
- /**
- * Goes through the selector list of the given BlockNode and removes the '&'
- * character from the selectors.
- *
- * @param node
- */
- private static void removeParentReference(BlockNode node) {
- ArrayList<String> newList = new ArrayList<String>();
- for (String childSelector : node.getSelectorList()) {
- // remove parent selector
- if (childSelector.contains("&")) {
- newList.add(childSelector.replace("&", ""));
- } else {
- newList.add(childSelector);
- }
- }
- node.setSelectorList(newList);
- }
-
- private static void combineParentSelectorListToChild(BlockNode node) {
- ArrayList<String> newList = new ArrayList<String>();
- BlockNode parentBlock = (BlockNode) node.getParentNode();
- for (String parentSelector : parentBlock.getSelectorList()) {
- for (String childSelector : node.getSelectorList()) {
- // handle parent selector
- if (childSelector.contains("&")) {
- newList.add(childSelector.replace("&", parentSelector));
- } else {
- newList.add(parentSelector + " " + childSelector);
- }
- }
- }
- node.setSelectorList(newList);
- Node oldParent = node.getParentNode();
-
- HashMap<Node, Node> lastNodeAdded = ScssStylesheet.getLastNodeAdded();
- Node lastAdded = lastNodeAdded.get(oldParent.getParentNode());
- if (lastAdded == null) {
- lastAdded = oldParent;
- }
-
- oldParent.getParentNode().appendChild(node, lastAdded);
-
- lastNodeAdded.put(oldParent.getParentNode(), node);
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/visitor/EachNodeHandler.java b/theme-compiler/src/com/vaadin/sass/internal/visitor/EachNodeHandler.java
deleted file mode 100644
index 383c2388e1..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/visitor/EachNodeHandler.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.visitor;
-
-import java.util.ArrayList;
-
-import com.vaadin.sass.internal.ScssStylesheet;
-import com.vaadin.sass.internal.parser.LexicalUnitImpl;
-import com.vaadin.sass.internal.tree.IVariableNode;
-import com.vaadin.sass.internal.tree.Node;
-import com.vaadin.sass.internal.tree.VariableNode;
-import com.vaadin.sass.internal.tree.controldirective.EachDefNode;
-import com.vaadin.sass.internal.util.DeepCopy;
-
-public class EachNodeHandler {
-
- public static void traverse(EachDefNode node) {
- replaceEachDefNode(node);
- }
-
- private static void replaceEachDefNode(EachDefNode defNode) {
- Node last = defNode;
-
- for (final String var : defNode.getVariables()) {
- VariableNode varNode = new VariableNode(defNode.getVariableName()
- .substring(1), LexicalUnitImpl.createIdent(var), false);
- ArrayList<VariableNode> variables = new ArrayList<VariableNode>(
- ScssStylesheet.getVariables());
- variables.add(varNode);
-
- for (final Node child : defNode.getChildren()) {
-
- Node copy = (Node) DeepCopy.copy(child);
-
- replaceInterpolation(copy, variables);
-
- defNode.getParentNode().appendChild(copy, last);
- last = copy;
- }
-
- }
- defNode.setChildren(new ArrayList<Node>());
- defNode.getParentNode().removeChild(defNode);
- }
-
- private static void replaceInterpolation(Node copy,
- ArrayList<VariableNode> variables) {
- if (copy instanceof IVariableNode) {
- IVariableNode n = (IVariableNode) copy;
- n.replaceVariables(variables);
- }
-
- for (Node c : copy.getChildren()) {
- replaceInterpolation(c, variables);
- }
-
- }
-
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/visitor/ExtendNodeHandler.java b/theme-compiler/src/com/vaadin/sass/internal/visitor/ExtendNodeHandler.java
deleted file mode 100644
index e4a69ea5f3..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/visitor/ExtendNodeHandler.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.visitor;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import com.vaadin.sass.internal.ScssStylesheet;
-import com.vaadin.sass.internal.tree.BlockNode;
-import com.vaadin.sass.internal.tree.ExtendNode;
-import com.vaadin.sass.internal.tree.Node;
-import com.vaadin.sass.internal.util.StringUtil;
-
-public class ExtendNodeHandler {
- private static Map<String, List<ArrayList<String>>> extendsMap = new HashMap<String, List<ArrayList<String>>>();
-
- public static void traverse(ExtendNode node) throws Exception {
- buildExtendsMap(node);
- modifyTree(ScssStylesheet.get());
- }
-
- public static void clear() {
- if (extendsMap != null) {
- extendsMap.clear();
- }
- }
-
- private static void modifyTree(Node node) throws Exception {
- for (Node child : node.getChildren()) {
- if (child instanceof BlockNode) {
- BlockNode blockNode = (BlockNode) child;
- String selectorString = blockNode.getSelectors();
- if (extendsMap.get(selectorString) != null) {
- for (ArrayList<String> sList : extendsMap
- .get(selectorString)) {
- ArrayList<String> clone = (ArrayList<String>) sList
- .clone();
- addAdditionalSelectorListToBlockNode(blockNode, clone,
- null);
- }
- } else {
- for (Entry<String, List<ArrayList<String>>> entry : extendsMap
- .entrySet()) {
- if (StringUtil.containsSubString(selectorString,
- entry.getKey())) {
- for (ArrayList<String> sList : entry.getValue()) {
- ArrayList<String> clone = (ArrayList<String>) sList
- .clone();
- addAdditionalSelectorListToBlockNode(blockNode,
- clone, entry.getKey());
- }
- }
- }
- }
- }
- }
-
- }
-
- private static void buildExtendsMap(ExtendNode node) {
- String extendedString = node.getListAsString();
- if (extendsMap.get(extendedString) == null) {
- extendsMap.put(extendedString, new ArrayList<ArrayList<String>>());
- }
- // prevent a selector extends itself, e.g. .test{ @extend .test}
- String parentSelectorString = ((BlockNode) node.getParentNode())
- .getSelectors();
- if (!parentSelectorString.equals(extendedString)) {
- extendsMap.get(extendedString).add(
- ((BlockNode) node.getParentNode()).getSelectorList());
- }
- }
-
- private static void addAdditionalSelectorListToBlockNode(
- BlockNode blockNode, ArrayList<String> extendingSelectors,
- String extendedSelector) {
- if (extendingSelectors != null) {
- for (String extendingSelector : extendingSelectors) {
- if (extendedSelector == null) {
- blockNode.getSelectorList().add(extendingSelector);
- } else {
- ArrayList<String> newTags = new ArrayList<String>();
- for (final String selectorString : blockNode
- .getSelectorList()) {
- if (StringUtil.containsSubString(selectorString,
- extendedSelector)) {
- String newTag = generateExtendingSelectors(
- selectorString, extendedSelector,
- extendingSelector);
- // prevent adding duplicated selector list
- if (!blockNode.getSelectorList().contains(newTag)
- && !newTags.contains(newTag)) {
- newTags.add(newTag);
- }
- }
- }
- blockNode.getSelectorList().addAll(newTags);
- }
- }
- }
- }
-
- private static String generateExtendingSelectors(String selectorString,
- String extendedSelector, String extendingSelector) {
- String result = StringUtil.replaceSubString(selectorString,
- extendedSelector, extendingSelector);
- // remove duplicated class selectors.
- if (result.startsWith(".")) {
- result = StringUtil.removeDuplicatedSubString(result, ".");
- }
- return result;
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/visitor/IfElseNodeHandler.java b/theme-compiler/src/com/vaadin/sass/internal/visitor/IfElseNodeHandler.java
deleted file mode 100644
index 7a65842807..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/visitor/IfElseNodeHandler.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.visitor;
-
-import java.util.ArrayList;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.commons.jexl2.Expression;
-import org.apache.commons.jexl2.JexlEngine;
-import org.apache.commons.jexl2.JexlException;
-import org.w3c.flute.parser.ParseException;
-
-import com.vaadin.sass.internal.tree.Node;
-import com.vaadin.sass.internal.tree.controldirective.ElseNode;
-import com.vaadin.sass.internal.tree.controldirective.IfElseDefNode;
-import com.vaadin.sass.internal.tree.controldirective.IfElseNode;
-import com.vaadin.sass.internal.tree.controldirective.IfNode;
-
-public class IfElseNodeHandler {
-
- private static final JexlEngine evaluator = new JexlEngine();
- private static final Pattern pattern = Pattern
- .compile("[a-zA-Z0-9]*[a-zA-Z]+[a-zA-Z0-9]*");
-
- public static void traverse(IfElseDefNode node) throws Exception {
-
- for (final Node child : node.getChildren()) {
- if (child instanceof IfNode) {
- try {
- String expression = ((IfElseNode) child).getExpression();
- // We need to add ' ' for strings in the expression for
- // jexl to understand that is should do a string
- // comparison
- expression = replaceStrings(expression);
- Expression e = evaluator.createExpression(expression);
- try {
- Object eval = e.evaluate(null);
-
- Boolean result = false;
- if (eval instanceof Boolean) {
- result = (Boolean) eval;
- } else if (eval instanceof String) {
- result = Boolean.valueOf((String) eval);
- }
-
- if (result) {
- replaceDefNodeWithCorrectChild(node,
- node.getParentNode(), child);
- break;
- }
- } catch (ClassCastException ex) {
- throw new ParseException(
- "Invalid @if/@else in scss file, not a boolean expression : "
- + child.toString());
- } catch (NullPointerException ex) {
- throw new ParseException(
- "Invalid @if/@else in scss file, not a boolean expression : "
- + child.toString());
- }
- } catch (JexlException e) {
- throw new ParseException(
- "Invalid @if/@else in scss file for "
- + child.toString());
- }
- } else {
- if (!(child instanceof ElseNode)
- && node.getChildren().indexOf(child) == node
- .getChildren().size() - 1) {
- throw new ParseException(
- "Invalid @if/@else in scss file for " + node);
- } else {
- replaceDefNodeWithCorrectChild(node, node.getParentNode(),
- child);
- break;
- }
- }
- }
-
- node.getParentNode().removeChild(node);
- }
-
- private static String replaceStrings(String expression) {
- expression = expression.replaceAll("\"", "");
- Matcher m = pattern.matcher(expression);
- StringBuffer b = new StringBuffer();
- while (m.find()) {
- String group = m.group();
- m.appendReplacement(b, "'" + group + "'");
- }
- m.appendTail(b);
- if (b.length() != 0) {
- return b.toString();
- }
- return expression;
- }
-
- private static void replaceDefNodeWithCorrectChild(IfElseDefNode defNode,
- Node parent, final Node child) {
- for (final Node n : new ArrayList<Node>(child.getChildren())) {
- parent.appendChild(n, defNode);
- }
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/visitor/ImportNodeHandler.java b/theme-compiler/src/com/vaadin/sass/internal/visitor/ImportNodeHandler.java
deleted file mode 100644
index daf01a3eab..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/visitor/ImportNodeHandler.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.visitor;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.w3c.css.sac.CSSException;
-import org.w3c.css.sac.LexicalUnit;
-
-import com.vaadin.sass.internal.ScssStylesheet;
-import com.vaadin.sass.internal.parser.LexicalUnitImpl;
-import com.vaadin.sass.internal.parser.ParseException;
-import com.vaadin.sass.internal.tree.ImportNode;
-import com.vaadin.sass.internal.tree.Node;
-import com.vaadin.sass.internal.tree.RuleNode;
-import com.vaadin.sass.internal.util.StringUtil;
-
-public class ImportNodeHandler {
-
- public static void traverse(Node node) {
- ScssStylesheet styleSheet = null;
- if (node instanceof ScssStylesheet) {
- styleSheet = (ScssStylesheet) node;
- } else {
- // iterate to parents of node, find ScssStylesheet
- Node parent = node.getParentNode();
- while (parent != null && !(parent instanceof ScssStylesheet)) {
- parent = parent.getParentNode();
- }
- if (parent instanceof ScssStylesheet) {
- styleSheet = (ScssStylesheet) parent;
- }
- }
- if (styleSheet == null) {
- throw new ParseException("Nested import in an invalid context");
- }
- ArrayList<Node> c = new ArrayList<Node>(node.getChildren());
- for (Node n : c) {
- if (n instanceof ImportNode) {
- ImportNode importNode = (ImportNode) n;
- if (!importNode.isPureCssImport()) {
- try {
- // set parent's charset to imported node.
- ScssStylesheet imported = ScssStylesheet.get(
- importNode.getUri(), styleSheet);
- if (imported == null) {
- throw new FileNotFoundException("Import '"
- + importNode.getUri() + "' in '"
- + styleSheet.getFileName()
- + "' could not be found");
- }
-
- traverse(imported);
-
- String prefix = getUrlPrefix(importNode.getUri());
- if (prefix != null) {
- updateUrlInImportedSheet(imported, prefix);
- }
-
- node.appendChildrenAfter(
- new ArrayList<Node>(imported.getChildren()),
- importNode);
- node.removeChild(importNode);
- } catch (CSSException e) {
- Logger.getLogger(ImportNodeHandler.class.getName())
- .log(Level.SEVERE, null, e);
- } catch (IOException e) {
- Logger.getLogger(ImportNodeHandler.class.getName())
- .log(Level.SEVERE, null, e);
- }
- } else {
- if (styleSheet != node) {
- throw new ParseException(
- "CSS imports can only be used at the top level, not as nested imports. Within style rules, use SCSS imports.");
- }
- }
- }
- }
- }
-
- private static String getUrlPrefix(String url) {
- if (url == null) {
- return null;
- }
- int pos = url.lastIndexOf('/');
- if (pos == -1) {
- return null;
- }
- return url.substring(0, pos + 1);
- }
-
- private static void updateUrlInImportedSheet(Node node, String prefix) {
- for (Node child : node.getChildren()) {
- if (child instanceof RuleNode) {
- LexicalUnit value = ((RuleNode) child).getValue();
- while (value != null) {
- if (value.getLexicalUnitType() == LexicalUnit.SAC_URI) {
- String path = value.getStringValue()
- .replaceAll("^\"|\"$", "")
- .replaceAll("^'|'$", "");
- if (!path.startsWith("/") && !path.contains(":")) {
- path = prefix + path;
- path = StringUtil.cleanPath(path);
- ((LexicalUnitImpl) value).setStringValue(path);
- }
- }
- value = value.getNextLexicalUnit();
- }
-
- }
- updateUrlInImportedSheet(child, prefix);
- }
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/visitor/MixinNodeHandler.java b/theme-compiler/src/com/vaadin/sass/internal/visitor/MixinNodeHandler.java
deleted file mode 100644
index feb1d7e622..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/visitor/MixinNodeHandler.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.visitor;
-
-import java.util.ArrayList;
-
-import com.vaadin.sass.internal.ScssStylesheet;
-import com.vaadin.sass.internal.parser.LexicalUnitImpl;
-import com.vaadin.sass.internal.tree.IVariableNode;
-import com.vaadin.sass.internal.tree.MixinDefNode;
-import com.vaadin.sass.internal.tree.MixinNode;
-import com.vaadin.sass.internal.tree.Node;
-import com.vaadin.sass.internal.tree.VariableNode;
-import com.vaadin.sass.internal.util.DeepCopy;
-
-public class MixinNodeHandler {
-
- public static void traverse(MixinNode node) throws Exception {
- replaceMixins(node);
- }
-
- private static void replaceMixins(MixinNode node) throws Exception {
- MixinDefNode mixinDef = ScssStylesheet.getMixinDefinition(node
- .getName());
- if (mixinDef == null) {
- throw new Exception("Mixin Definition: " + node.getName()
- + " not found");
- }
- replaceMixinNode(node, mixinDef);
- }
-
- private static void replaceMixinNode(MixinNode mixinNode,
- MixinDefNode mixinDef) {
- MixinDefNode defClone = (MixinDefNode) DeepCopy.copy(mixinDef);
- defClone.traverse();
-
- defClone.replaceContentDirective(mixinNode);
-
- if (mixinDef.getArglist().isEmpty()) {
- mixinNode.getParentNode().appendChildrenAfter(
- new ArrayList<Node>(defClone.getChildren()), mixinNode);
- } else {
- if (mixinNode.getArglist() != null
- && !mixinNode.getArglist().isEmpty()) {
- replacePossibleArguments(mixinNode, defClone);
- }
-
- Node previous = mixinNode;
- for (final Node child : new ArrayList<Node>(defClone.getChildren())) {
- replaceChildVariables(defClone, child);
- mixinNode.getParentNode().appendChild(child, previous);
- previous = child;
- }
-
- }
-
- mixinNode.getParentNode().removeChild(mixinNode);
- }
-
- /**
- * We have to replace all the mixin parameters. This is done in two phases.
- * First phase replaces all the named parameters while the second replaces
- * in order of remaining unmodified parameters.
- *
- * @param mixinNode
- * @param def
- */
- private static void replacePossibleArguments(MixinNode mixinNode,
- MixinDefNode def) {
- if (mixinNode.getArglist().size() > 0) {
- ArrayList<VariableNode> remainingNodes = new ArrayList<VariableNode>(
- def.getArglist());
- ArrayList<LexicalUnitImpl> remainingUnits = new ArrayList<LexicalUnitImpl>(
- mixinNode.getArglist());
-
- for (final LexicalUnitImpl unit : mixinNode.getArglist()) {
- if (unit.getLexicalUnitType() == LexicalUnitImpl.SCSS_VARIABLE
- && unit.getNextLexicalUnit() != null) {
- for (final VariableNode node : def.getArglist()) {
- if (node.getName().equals(unit.getValue().toString())) {
- node.setExpr((LexicalUnitImpl) DeepCopy.copy(unit
- .getNextLexicalUnit()));
- remainingNodes.remove(node);
- remainingUnits.remove(unit);
- break;
- }
- }
- }
- }
- checkExtraParameters(mixinNode, remainingNodes.size(),
- remainingUnits.size());
- for (int i = 0; i < remainingNodes.size()
- && i < remainingUnits.size(); i++) {
- LexicalUnitImpl unit = remainingUnits.get(i);
- remainingNodes.get(i).setExpr(
- (LexicalUnitImpl) DeepCopy.copy(unit));
- }
- }
-
- }
-
- protected static void checkExtraParameters(MixinNode mixinNode,
- int remainingNodesSize, int remainingUnitsSize) {
- if (remainingUnitsSize > remainingNodesSize) {
- String fileName = null;
- Node root = mixinNode.getParentNode();
- while (root != null && !(root instanceof ScssStylesheet)) {
- root = root.getParentNode();
- }
- if (root != null) {
- fileName = ((ScssStylesheet) root).getFileName();
- }
- StringBuilder builder = new StringBuilder();
- builder.append("More parameters than expected, in Mixin ").append(
- mixinNode.getName());
- if (fileName != null) {
- builder.append(", in file ").append(fileName);
- }
- throw new RuntimeException(builder.toString());
- }
- }
-
- private static void replaceChildVariables(MixinDefNode mixinDef, Node node) {
- for (final Node child : node.getChildren()) {
- replaceChildVariables(mixinDef, child);
- }
- if (node instanceof IVariableNode) {
- ((IVariableNode) node).replaceVariables(mixinDef.getArglist());
- }
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/visitor/NestedNodeHandler.java b/theme-compiler/src/com/vaadin/sass/internal/visitor/NestedNodeHandler.java
deleted file mode 100644
index 0e90587502..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/visitor/NestedNodeHandler.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.visitor;
-
-import com.vaadin.sass.internal.tree.NestPropertiesNode;
-import com.vaadin.sass.internal.tree.Node;
-import com.vaadin.sass.internal.tree.RuleNode;
-
-/**
- * Handle nested properties nodes (e.g. "font: { family: serif; }" to
- * "font-family: serif;").
- *
- * Sample SASS code (from www.sass-lang.com):
- *
- * <pre>
- * li {
- * font: {
- * family: serif;
- * weight: bold;
- * size: 1.2em;
- * }
- * }
- * </pre>
- *
- * Note that this does not apply to nested blocks, which are handled by
- * {@link BlockNodeHandler}.
- */
-public class NestedNodeHandler {
-
- public static void traverse(NestPropertiesNode node) {
- Node previous = node;
- for (RuleNode unNested : node.unNesting()) {
- node.getParentNode().appendChild(unNested, previous);
- previous = unNested;
- }
- node.getParentNode().removeChild(node);
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/visitor/VariableNodeHandler.java b/theme-compiler/src/com/vaadin/sass/internal/visitor/VariableNodeHandler.java
deleted file mode 100644
index a794def8cb..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/visitor/VariableNodeHandler.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.visitor;
-
-import com.vaadin.sass.internal.ScssStylesheet;
-import com.vaadin.sass.internal.parser.SCSSLexicalUnit;
-import com.vaadin.sass.internal.tree.VariableNode;
-
-public class VariableNodeHandler {
-
- public static void traverse(VariableNode node) {
- VariableNode variable = ScssStylesheet.getVariable(node.getName());
- if (!node.isGuarded()
- || variable == null
- || variable.getExpr() == null
- || (variable.getExpr().getLexicalUnitType() == SCSSLexicalUnit.SCSS_NULL && variable
- .getExpr().getNextLexicalUnit() == null)) {
- ScssStylesheet.addVariable(node);
- }
- node.getParentNode().removeChild(node);
- }
-}
diff --git a/theme-compiler/src/com/vaadin/sass/internal/visitor/Visitor.java b/theme-compiler/src/com/vaadin/sass/internal/visitor/Visitor.java
deleted file mode 100644
index 0d18b9723a..0000000000
--- a/theme-compiler/src/com/vaadin/sass/internal/visitor/Visitor.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- *
- * 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 com.vaadin.sass.internal.visitor;
-
-import com.vaadin.sass.internal.tree.Node;
-
-public interface Visitor {
-
- public void traverse(Node node) throws Exception;
-}