diff options
author | Jonatan Kronqvist <jonatan@vaadin.com> | 2014-03-28 12:55:33 +0200 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2014-03-31 13:37:27 +0000 |
commit | 353a1a1c3073975ddc6d0f25d8d2b21b9df94343 (patch) | |
tree | 73c62e2c993c3c035fe2ba242c5f9583ebe2f54d /theme-compiler/src/com | |
parent | 74bfd5e20759f0c26b40b41754129cbd71e0eff3 (diff) | |
download | vaadin-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')
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 (&) 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; -} |