From 69a827109a7513edce9026f6ca4a9186d9af0128 Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Sun, 29 Aug 2021 18:06:02 +0200 Subject: [PATCH 01/40] add CssVariable type --- org/w3c/css/values/CssRatio.java | 48 ++++++- org/w3c/css/values/CssTypes.java | 1 + org/w3c/css/values/CssVariable.java | 194 ++++++++++++++++++++++++++++ 3 files changed, 241 insertions(+), 2 deletions(-) create mode 100644 org/w3c/css/values/CssVariable.java diff --git a/org/w3c/css/values/CssRatio.java b/org/w3c/css/values/CssRatio.java index 761f7df4f..5da83d96d 100644 --- a/org/w3c/css/values/CssRatio.java +++ b/org/w3c/css/values/CssRatio.java @@ -24,7 +24,8 @@ public final int getType() { return type; } - BigDecimal w, h; + BigDecimal w = null, h = null; + CssValue gw = null, gh = null; /** @@ -38,6 +39,37 @@ public CssRatio(BigDecimal w, BigDecimal h) { this.h = h; } + public CssRatio(BigDecimal w, CssValue gh) { + this.w = w; + try { + this.h = gh.getNumber().getBigDecimalValue(); + } catch (Exception ex) { + this.gh = gh; + } + } + + public CssRatio(CssValue gw, BigDecimal h) { + try { + this.w = gw.getNumber().getBigDecimalValue(); + } catch (Exception ex) { + this.gw = gw; + } + this.h = h; + } + + public CssRatio(CssValue gw, CssValue gh) { + try { + this.w = gw.getNumber().getBigDecimalValue(); + } catch (Exception ex) { + this.gw = gw; + } + try { + this.h = gh.getNumber().getBigDecimalValue(); + } catch (Exception ex) { + this.gh = gh; + } + } + /** * Set the value of this ratio. * @@ -91,7 +123,17 @@ public Object get() { */ public String toString() { StringBuilder sb = new StringBuilder(); - sb.append(w.toPlainString()).append('/').append(h.toPlainString()); + if (w != null) { + sb.append(w.toPlainString()); + } else { + sb.append(gw.toString()).append(' '); + } + sb.append('/'); + if (h != null) { + sb.append(h.toPlainString()); + } else { + sb.append(gh.toString()); + } return sb.toString(); } @@ -110,6 +152,8 @@ public boolean equals(Object value) { return (ratio.compareTo(other_ratio) == 0); } catch (ClassCastException cce) { return false; + } catch (Exception ex) { + return false; } } } diff --git a/org/w3c/css/values/CssTypes.java b/org/w3c/css/values/CssTypes.java index 62043441d..5473f0933 100644 --- a/org/w3c/css/values/CssTypes.java +++ b/org/w3c/css/values/CssTypes.java @@ -37,6 +37,7 @@ public class CssTypes { public static final int CSS_MIN = 24; public static final int CSS_MAX = 25; public static final int CSS_CLAMP = 26; + public static final int CSS_VARIABLE = 27; // not generated by the parser public static final int CSS_VALUE_LIST = 30; diff --git a/org/w3c/css/values/CssVariable.java b/org/w3c/css/values/CssVariable.java new file mode 100644 index 000000000..948647f2b --- /dev/null +++ b/org/w3c/css/values/CssVariable.java @@ -0,0 +1,194 @@ +// +// @author Yves Lafon +// +// (c) COPYRIGHT MIT, ERCIM, Keio, Beihang, 2021. +// Please first read the full copyright statement in file COPYRIGHT.html + +package org.w3c.css.values; + +import org.w3c.css.util.ApplContext; +import org.w3c.css.util.InvalidParamException; + +import java.math.BigDecimal; + +/** + * A CSS var(). + * + * @spec https://www.w3.org/TR/2015/CR-css-variables-1-20151203/#funcdef-var + */ +public class CssVariable extends CssCheckableValue { + + public static final int type = CssTypes.CSS_VARIABLE; + + public final int getRawType() { + return type; + } + + public final int getType() { + if (computed_type == CssTypes.CSS_UNKNOWN) { + return type; + } + return computed_type; + } + + String variable_name = null; + ApplContext ac; + int computed_type = CssTypes.CSS_UNKNOWN; + CssExpression exp = null; + CssValue _exp_value = null; + String _toString = null; + + /** + * Create a new CssVariable + */ + public CssVariable() { + } + + public CssVariable(ApplContext ac, String varname) { + this(ac, varname, null); + } + + public CssVariable(String varname, CssExpression expression) { + this(null, varname, expression); + } + + public CssVariable(ApplContext ac, String varname, CssExpression expression) { + if (ac != null) { + this.ac = ac; + } + if (varname != null) { + variable_name = varname; + } + if (expression != null) { + if (expression.getCount() == 1) { + _exp_value = expression.getValue(); + computed_type = _exp_value.getType(); + } + } + this.exp = expression; + } + + public void set(String s, ApplContext ac) throws InvalidParamException { + // we don't support this way of setting the value + // as we rely on the parsing to create it incrementally + throw new InvalidParamException("unrecognize", s, ac); + } + + public void set(CssExpression expression) { + if (expression != null) { + if (expression.getCount() == 1) { + CssValue v = expression.getValue(); + computed_type = v.getType(); + } + } + this.exp = expression; + } + + /** + * Returns the value + */ + + public Object get() { + return toString(); + } + + + public String toString() { + if (_toString == null) { + StringBuilder sb = new StringBuilder(); + sb.append("var(").append(variable_name); + if (exp != null) { + sb.append(", ").append(exp.toStringFromStart()); + } + sb.append(')'); + _toString = sb.toString(); + } + return _toString; + } + + private boolean _isCheckableType(int type) { + switch (type) { + case CssTypes.CSS_ANGLE: + case CssTypes.CSS_CLAMP: + case CssTypes.CSS_FLEX: + case CssTypes.CSS_FREQUENCY: + case CssTypes.CSS_LENGTH: + case CssTypes.CSS_NUMBER: + case CssTypes.CSS_PERCENTAGE: + case CssTypes.CSS_SEMITONE: + case CssTypes.CSS_TIME: + case CssTypes.CSS_VOLUME: + return true; + default: + return false; + } + } + + @Override + public CssCheckableValue getCheckableValue() { + if (_isCheckableType(computed_type)) { + return this; + } + throw new ClassCastException("unknown"); + } + + @Override + public boolean isPositive() { + if (_isCheckableType(computed_type)) { + try { + return _exp_value.getCheckableValue().isPositive(); + } catch (Exception ignored) { + } + ; + } + return false; + } + + @Override + public boolean isStrictlyPositive() { + if (_isCheckableType(computed_type)) { + try { + return _exp_value.getCheckableValue().isStrictlyPositive(); + } catch (Exception ignored) { + } + ; + } + return false; + } + + @Override + public boolean isZero() { + if (_isCheckableType(computed_type)) { + try { + return _exp_value.getCheckableValue().isZero(); + } catch (Exception ignored) { + } + ; + } + return false; + } + + @Override + public void checkInteger(ApplContext ac, String callername) + throws InvalidParamException { + if (_isCheckableType(computed_type)) { + _exp_value.getCheckableValue().checkInteger(ac, callername); + } + } + + @Override + public void setValue(BigDecimal v) { + // do nothing + } + + /** + * Compares two values for equality. + * + * @param value The other value. + */ + public boolean equals(Object value) { + return (value instanceof CssVariable && + this.variable_name.equals(((CssVariable) value).variable_name)); + } + +} From a375dc412a12da404f8c21d1dc66274aa2a58a64 Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Sun, 29 Aug 2021 18:06:28 +0200 Subject: [PATCH 02/40] hint for registering css variable --- org/w3c/css/parser/CssFouffa.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/org/w3c/css/parser/CssFouffa.java b/org/w3c/css/parser/CssFouffa.java index 7809e01db..813deff26 100644 --- a/org/w3c/css/parser/CssFouffa.java +++ b/org/w3c/css/parser/CssFouffa.java @@ -587,7 +587,9 @@ public CssProperty handleDeclaration(String property, CssExpression expression, if (Util.onDebug) { System.err.println("Creating " + property + ": " + expression); } - + if (property.startsWith("--")) { + // css variable + } final CssValue lastValue = expression.getLastValue(); if (allowBackslash9Hack() && lastValue != null && lastValue.hasBackslash9Hack()) { From 05c9bda5a80317453c3b69a8be0a56938b8632cc Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Sun, 29 Aug 2021 18:06:59 +0200 Subject: [PATCH 03/40] rewrote to avoid forcing raw number casting --- org/w3c/css/properties/css3/CssAspectRatio.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/org/w3c/css/properties/css3/CssAspectRatio.java b/org/w3c/css/properties/css3/CssAspectRatio.java index 53d159d6f..6ff6b3a52 100644 --- a/org/w3c/css/properties/css3/CssAspectRatio.java +++ b/org/w3c/css/properties/css3/CssAspectRatio.java @@ -14,7 +14,6 @@ import org.w3c.css.values.CssValue; import org.w3c.css.values.CssValueList; -import java.math.BigDecimal; import java.util.ArrayList; import static org.w3c.css.values.CssOperator.SPACE; @@ -49,8 +48,8 @@ public CssAspectRatio(ApplContext ac, CssExpression expression, boolean check) char op; int ratio_state = 0; setByUser(); - BigDecimal dividend = null; - BigDecimal divisor = null; + CssValue dividend = null; + CssValue divisor = null; while (!expression.end()) { val = expression.getValue(); @@ -60,11 +59,11 @@ public CssAspectRatio(ApplContext ac, CssExpression expression, boolean check) // so we are cheating and create a CssRatio when needed. case CssTypes.CSS_NUMBER: if (ratio_state == 0) { - dividend = val.getNumber().getBigDecimalValue(); + dividend = val; ratio_state++; break; } else if (ratio_state == 2) { - divisor = val.getNumber().getBigDecimalValue(); + divisor = val; ratio_state++; v.add(new CssRatio(dividend, divisor)) ; break; From ecb940f2005937e3003c2137d414cc5f5d43bab0 Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Sun, 29 Aug 2021 18:07:49 +0200 Subject: [PATCH 04/40] prepare for partial analysis of css variable, when a single default is present, alter parsing for normal paramaters (need more work for nested declaration), currently only a failed attempt to just ignore) --- org/w3c/css/parser/CssPropertyFactory.java | 4 ++ org/w3c/css/parser/analyzer/CssParser.jj | 58 ++++++++++++++++++++-- org/w3c/css/util/Messages.properties.en | 1 + org/w3c/css/util/Messages.properties.fr | 2 + org/w3c/css/values/CssCalc.java | 21 +++++++- org/w3c/css/values/CssExpression.java | 9 ++++ 6 files changed, 89 insertions(+), 6 deletions(-) diff --git a/org/w3c/css/parser/CssPropertyFactory.java b/org/w3c/css/parser/CssPropertyFactory.java index c20a30fc1..704ddee99 100644 --- a/org/w3c/css/parser/CssPropertyFactory.java +++ b/org/w3c/css/parser/CssPropertyFactory.java @@ -253,6 +253,10 @@ public synchronized CssProperty createProperty(ApplContext ac, AtRule atRule, St throw new WarningParamException("vendor-extension", expression.toStringFromStart()); } + if (expression.hasCssVariable()) { + throw new WarningParamException("css-variable", expression.toStringFromStart()); + } + if (ac.getTreatCssHacksAsWarnings() && expression.hasCssHack()) { throw new WarningParamException("css-hack", expression.toStringFromStart()); } diff --git a/org/w3c/css/parser/analyzer/CssParser.jj b/org/w3c/css/parser/analyzer/CssParser.jj index 00f550db8..72f1a79f6 100644 --- a/org/w3c/css/parser/analyzer/CssParser.jj +++ b/org/w3c/css/parser/analyzer/CssParser.jj @@ -59,6 +59,7 @@ import org.w3c.css.values.CssRatio; import org.w3c.css.values.CssSemitone; import org.w3c.css.values.CssTypes; import org.w3c.css.values.CssVolume; +import org.w3c.css.values.CssVariable; import org.w3c.css.properties.css.CssProperty; import org.w3c.css.parser.CssError; import org.w3c.css.parser.CssErrorToken; @@ -405,11 +406,23 @@ public abstract class CssParser { if (f.getParameters().hasVendorExtensions()) { expr.markVendorExtension(); } + if (f.getParameters().hasCssVariable()) { + expr.markCssVariable(); + } if (f.getParameters().hasCssHack()) { expr.markCssHack(); } + } else if ( v.getType() == CssTypes.CSS_CALC) { + CssCalc c = (CssCalc) v; + if (c.hasCssVariable()) { + expr.markCssVariable(); + } } - } + } else if ( token == FUNCTIONVAR ) { + if (v.getType() == CssTypes.CSS_VARIABLE) { + expr.markCssVariable(); + } + } if (n != null) { if (ac.getCssVersion() == CssVersion.CSS1 && (n.image).equals("inherit")) { @@ -2873,7 +2886,8 @@ void term(CssExpression exp) : | func=mathmin() { setValue(func, exp, operator, null, FUNCTION); } | func=mathclamp() { setValue(func, exp, operator, null, FUNCTION); } | func=attr() { setValue(func, exp, operator, null, FUNCTION); } - | n= ( )* ( ( )* expr() )* ( )* + | func=functionvar() { setValue(func, exp, operator, null, FUNCTIONVAR); } +/* | n= ( )* ( ( )* expr() )* ( )* */ | func=function() { setValue(func, exp, operator, null, FUNCTION); } | n= { setValue(new CssString(), exp, operator, n, STRING); } | n=
{ setValue(new CssSwitch(), exp, operator, n, DIV); } @@ -3114,6 +3128,9 @@ CssCheckableValue mathsum() : nb_pre_sp = 0; if (concat) { nc = new CssCalc(ac, c); + if (c.hasCssVariable()) { + nc.markCssVariable(); + } nc.addRightSide(o.image.trim(), v2); c = nc; } else { @@ -3130,6 +3147,7 @@ CssCheckableValue mathproduct() : { Token n,o; CssCheckableValue v1 = null; CssCheckableValue v2 = null; + CssValue f; CssCalc c, nc; char operator = ' '; boolean concat = false; @@ -3139,11 +3157,14 @@ CssCheckableValue mathproduct() : ( ( o="*" ( )* v2=mathunit() ) | ( o=
( )* ( v2=calcnumbervalue() - | n= ( )* ( ( )* expr() )* ( )* ) + | n= ( )* ( ( )* expr() )* ( )* { c.markCssVariable(); } ) ) ) { if (concat) { nc = new CssCalc(ac, c); + if (c.hasCssVariable()) { + nc.markCssVariable(); + } nc.addRightSide(o.image, v2); c = nc; } else { @@ -3247,7 +3268,7 @@ char operator = ' '; | v=mathmin() | v=mathclamp() | v=attr() - | n= ( )* ( ( )* expr() )* ( )* + | n= ( )* ( ( )* expr() )* ( )* { CssCalc c = new CssCalc(); c.markCssVariable(); return c; } ) { return v; } @@ -3273,6 +3294,35 @@ CssExpression exp = null; } } +CssValue functionvar() : +{ Token n; + CssExpression exp = null; + CssExpression e; + CssVariable var; +} +{ + ( )* n= { + var = new CssVariable(ac, convertIdent(n.image)); + } + ( ( )* e=expr() { if (exp == null) { + exp = e; + } else { + exp.setOperator(CssOperator.COMMA) ; + while (!e.end()) { + exp.addValue(e.getValue()); + exp.setOperator(e.getOperator()); + e.next(); + } + } + } )* ( )* + { + if (exp != null) { + var.set(exp); + } + return var; + } +} + /** * @exception ParseException exception during the parse */ diff --git a/org/w3c/css/util/Messages.properties.en b/org/w3c/css/util/Messages.properties.en index 15fe233f5..b3ff14ce8 100644 --- a/org/w3c/css/util/Messages.properties.en +++ b/org/w3c/css/util/Messages.properties.en @@ -311,6 +311,7 @@ warning.noothermedium : Properties for other media might not work for usermedium warning.vendor-extension : \u201C%s\u201D is an unknown vendor extension warning.vendor-ext-pseudo-class : \u201C%s\u201D is an unknown vendor extended pseudo-class warning.vendor-ext-pseudo-element : \u201C%s\u201D is an unknown vendor extended pseudo-element +warning.css-variable: Due to their dynamic nature, CSS variables are currently not statically checked warning.css-hack : \u201C%s\u201D is a CSS hack diff --git a/org/w3c/css/util/Messages.properties.fr b/org/w3c/css/util/Messages.properties.fr index 2e7b22f5b..d763d5ba8 100644 --- a/org/w3c/css/util/Messages.properties.fr +++ b/org/w3c/css/util/Messages.properties.fr @@ -420,6 +420,8 @@ error.notforatsc: \u201C%s\u201D ne peut pas être utilisé pour le profil ATSC error.notfortv: \u201C%s\u201D ne peut pas être utilisé pour le profil TV error.notversion: \u201C%s\u201D ne peut pas être utilisé pour cette version CSS: \u201C%s\u201D +warning.css-variable: En raison de laur nature dynamique, les variables CSS ne sont pas vérifiées statiquement + warning.css-hack : \u201C%s\u201D est un hack CSS warning.atsc : il se peut que \u201C%s\u201D ne soit pas supporté par atsc-tv diff --git a/org/w3c/css/values/CssCalc.java b/org/w3c/css/values/CssCalc.java index 1b0b3e054..e8d15c8c7 100644 --- a/org/w3c/css/values/CssCalc.java +++ b/org/w3c/css/values/CssCalc.java @@ -39,6 +39,7 @@ public final int getType() { boolean hasParen = false; String _toString = null; boolean implicit_function = true; + boolean contains_variable = false; /** @@ -60,9 +61,21 @@ public CssCalc(ApplContext ac, CssValue value) { this.ac = ac; } if (value != null) { - computed_type = value.getType(); - val1 = value; + if (value.getRawType() == CssTypes.CSS_CALC) { + CssCalc c = (CssCalc) value; + contains_variable = c.hasCssVariable(); + } } + computed_type = value.getType(); + val1 = value; + } + + public boolean hasCssVariable() { + return contains_variable; + } + + public void markCssVariable() { + contains_variable = true; } public void setImplicitFunction(boolean v) { @@ -146,6 +159,10 @@ private void _computeResultingType(boolean end) throws InvalidParamException { int valtype; + if (contains_variable) { + // nothing to check as we may not have anything yet + return; + } if (val2 == null) { // we only have val1 to check. valtype = val1.getType(); diff --git a/org/w3c/css/values/CssExpression.java b/org/w3c/css/values/CssExpression.java index 566f53880..a245023f6 100644 --- a/org/w3c/css/values/CssExpression.java +++ b/org/w3c/css/values/CssExpression.java @@ -22,6 +22,7 @@ public class CssExpression implements CssOperator { private boolean vendor_extension = false; private boolean css_hack = false; + private boolean css_variable = false; public boolean hasVendorExtensions() { return vendor_extension; @@ -39,6 +40,14 @@ public void markCssHack() { css_hack = true; } + public boolean hasCssVariable() { + return css_variable; + } + + public void markCssVariable() { + css_variable = true; + } + /** * mark the current position, it can be set to this * position later by using reset From f312b03b1458839c110be72387017716b9cdcf9b Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Sun, 29 Aug 2021 18:08:27 +0200 Subject: [PATCH 05/40] regen --- org/w3c/css/parser/analyzer/CssParser.java | 1507 +++++++++-------- .../analyzer/CssParserTokenManager.java | 1 + 2 files changed, 780 insertions(+), 728 deletions(-) diff --git a/org/w3c/css/parser/analyzer/CssParser.java b/org/w3c/css/parser/analyzer/CssParser.java index 78fb6f96e..092b7e90e 100644 --- a/org/w3c/css/parser/analyzer/CssParser.java +++ b/org/w3c/css/parser/analyzer/CssParser.java @@ -2,70 +2,25 @@ /* Generated By:JavaCC: Do not edit this line. CssParser.java */ package org.w3c.css.parser.analyzer; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.UnsupportedEncodingException; -import java.util.ArrayList; -import java.net.URL; - -import org.w3c.css.values.CssValue; -import org.w3c.css.values.CssOperator; -import org.w3c.css.values.CssAngle; -import org.w3c.css.values.CssCheckableValue; -import org.w3c.css.values.CssExpression; -import org.w3c.css.values.CssString; -import org.w3c.css.values.CssURL; -import org.w3c.css.values.CssLength; -import org.w3c.css.values.CssNumber; -import org.w3c.css.values.CssAttr; -import org.w3c.css.values.CssBracket; -import org.w3c.css.values.CssCalc; -import org.w3c.css.values.CssClamp; -import org.w3c.css.values.CssColor; -import org.w3c.css.values.CssComparator; -import org.w3c.css.values.CssFlexibleLength; -import org.w3c.css.values.CssFunction; -import org.w3c.css.values.CssFrequency; -import org.w3c.css.values.CssHashIdent; -import org.w3c.css.values.CssIdent; -import org.w3c.css.values.CssImage; -import org.w3c.css.values.CssMax; -import org.w3c.css.values.CssMin; -import org.w3c.css.values.CssPercentage; -import org.w3c.css.values.CssSwitch; -import org.w3c.css.values.CssTime; -import org.w3c.css.values.CssUnicodeRange; -import org.w3c.css.values.CssResolution; -import org.w3c.css.values.CssRatio; -import org.w3c.css.values.CssSemitone; -import org.w3c.css.values.CssTypes; -import org.w3c.css.values.CssVolume; -import org.w3c.css.properties.css.CssProperty; -import org.w3c.css.parser.CssError; -import org.w3c.css.parser.CssErrorToken; -import org.w3c.css.parser.CssSelectors; -import org.w3c.css.parser.CssParseException; -import org.w3c.css.parser.AtRule; -import org.w3c.css.atrules.svg.AtRuleColorProfile; import org.w3c.css.atrules.css.AtRuleCounterStyle; import org.w3c.css.atrules.css.AtRuleFontFace; import org.w3c.css.atrules.css.AtRuleKeyframes; import org.w3c.css.atrules.css.AtRuleMedia; -import org.w3c.css.atrules.css.media.MediaFeature; -import org.w3c.css.atrules.css.media.MediaRangeFeature; import org.w3c.css.atrules.css.AtRulePage; import org.w3c.css.atrules.css.AtRulePhoneticAlphabet; import org.w3c.css.atrules.css.AtRulePreference; import org.w3c.css.atrules.css.AtRuleSupports; -import org.w3c.css.atrules.css.supports.SupportsFeature; import org.w3c.css.atrules.css.AtRuleViewport; -import org.w3c.css.util.ApplContext; -import org.w3c.css.util.CssProfile; -import org.w3c.css.util.CssVersion; -import org.w3c.css.util.InvalidParamException; -import org.w3c.css.util.WarningParamException; -import org.w3c.css.util.Util; - +import org.w3c.css.atrules.css.media.MediaFeature; +import org.w3c.css.atrules.css.media.MediaRangeFeature; +import org.w3c.css.atrules.css.supports.SupportsFeature; +import org.w3c.css.atrules.svg.AtRuleColorProfile; +import org.w3c.css.parser.AtRule; +import org.w3c.css.parser.CssError; +import org.w3c.css.parser.CssErrorToken; +import org.w3c.css.parser.CssParseException; +import org.w3c.css.parser.CssSelectors; +import org.w3c.css.properties.css.CssProperty; import org.w3c.css.selectors.AdjacentSiblingSelector; import org.w3c.css.selectors.AttributeSelector; import org.w3c.css.selectors.ChildSelector; @@ -82,6 +37,51 @@ import org.w3c.css.selectors.attributes.AttributeStart; import org.w3c.css.selectors.attributes.AttributeSubstr; import org.w3c.css.selectors.attributes.AttributeSuffix; +import org.w3c.css.util.ApplContext; +import org.w3c.css.util.CssProfile; +import org.w3c.css.util.CssVersion; +import org.w3c.css.util.InvalidParamException; +import org.w3c.css.util.Util; +import org.w3c.css.util.WarningParamException; +import org.w3c.css.values.CssAngle; +import org.w3c.css.values.CssAttr; +import org.w3c.css.values.CssBracket; +import org.w3c.css.values.CssCalc; +import org.w3c.css.values.CssCheckableValue; +import org.w3c.css.values.CssClamp; +import org.w3c.css.values.CssColor; +import org.w3c.css.values.CssComparator; +import org.w3c.css.values.CssExpression; +import org.w3c.css.values.CssFlexibleLength; +import org.w3c.css.values.CssFrequency; +import org.w3c.css.values.CssFunction; +import org.w3c.css.values.CssHashIdent; +import org.w3c.css.values.CssIdent; +import org.w3c.css.values.CssImage; +import org.w3c.css.values.CssLength; +import org.w3c.css.values.CssMax; +import org.w3c.css.values.CssMin; +import org.w3c.css.values.CssNumber; +import org.w3c.css.values.CssOperator; +import org.w3c.css.values.CssPercentage; +import org.w3c.css.values.CssRatio; +import org.w3c.css.values.CssResolution; +import org.w3c.css.values.CssSemitone; +import org.w3c.css.values.CssString; +import org.w3c.css.values.CssSwitch; +import org.w3c.css.values.CssTime; +import org.w3c.css.values.CssTypes; +import org.w3c.css.values.CssURL; +import org.w3c.css.values.CssUnicodeRange; +import org.w3c.css.values.CssValue; +import org.w3c.css.values.CssVariable; +import org.w3c.css.values.CssVolume; + +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; +import java.net.URL; +import java.util.ArrayList; /** * A CSS parser @@ -386,9 +386,21 @@ private void setValue(CssValue v, CssExpression expr, if (f.getParameters().hasVendorExtensions()) { expr.markVendorExtension(); } + if (f.getParameters().hasCssVariable()) { + expr.markCssVariable(); + } if (f.getParameters().hasCssHack()) { expr.markCssHack(); } + } else if ( v.getType() == CssTypes.CSS_CALC) { + CssCalc c = (CssCalc) v; + if (c.hasCssVariable()) { + expr.markCssVariable(); + } + } + } else if ( token == FUNCTIONVAR ) { + if (v.getType() == CssTypes.CSS_VARIABLE) { + expr.markCssVariable(); } } if (n != null) { @@ -5920,62 +5932,8 @@ final public boolean prio() throws ParseException { break; } case FUNCTIONVAR:{ - n = jj_consume_token(FUNCTIONVAR); - label_142: - while (true) { - switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { - case S:{ - ; - break; - } - default: - jj_la1[212] = jj_gen; - break label_142; - } - jj_consume_token(S); - } - jj_consume_token(CUSTOM_PROPERTY_NAME); - label_143: - while (true) { - switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { - case COMMA:{ - ; - break; - } - default: - jj_la1[213] = jj_gen; - break label_143; - } - jj_consume_token(COMMA); - label_144: - while (true) { - switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { - case S:{ - ; - break; - } - default: - jj_la1[214] = jj_gen; - break label_144; - } - jj_consume_token(S); - } - expr(); - } - label_145: - while (true) { - switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { - case S:{ - ; - break; - } - default: - jj_la1[215] = jj_gen; - break label_145; - } - jj_consume_token(S); - } - jj_consume_token(LPARAN); + func = functionvar(); +setValue(func, exp, operator, null, FUNCTIONVAR); break; } case FUNCTION:{ @@ -6005,7 +5963,7 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[216] = jj_gen; + jj_la1[212] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -6059,23 +6017,23 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[217] = jj_gen; + jj_la1[213] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; } default: - jj_la1[218] = jj_gen; + jj_la1[214] = jj_gen; jj_consume_token(-1); throw new ParseException(); } - label_146: + label_142: while (true) { if (jj_2_9(2)) { ; } else { - break label_146; + break label_142; } jj_consume_token(S); } @@ -6117,7 +6075,7 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[219] = jj_gen; + jj_la1[215] = jj_gen; ; } switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { @@ -6132,7 +6090,7 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[220] = jj_gen; + jj_la1[216] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -6258,18 +6216,18 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[221] = jj_gen; + jj_la1[217] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; } default: - jj_la1[222] = jj_gen; + jj_la1[218] = jj_gen; jj_consume_token(-1); throw new ParseException(); } - label_147: + label_143: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6277,8 +6235,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[223] = jj_gen; - break label_147; + jj_la1[219] = jj_gen; + break label_143; } jj_consume_token(S); } @@ -6348,11 +6306,11 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[224] = jj_gen; + jj_la1[220] = jj_gen; jj_consume_token(-1); throw new ParseException(); } - label_148: + label_144: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6360,15 +6318,15 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[225] = jj_gen; - break label_148; + jj_la1[221] = jj_gen; + break label_144; } jj_consume_token(S); } break; } default: - jj_la1[226] = jj_gen; + jj_la1[222] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -6378,7 +6336,7 @@ final public boolean prio() throws ParseException { CssMin c; Token n; n = jj_consume_token(FUNCTIONMIN); - label_149: + label_145: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6386,8 +6344,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[227] = jj_gen; - break label_149; + jj_la1[223] = jj_gen; + break label_145; } jj_consume_token(S); } @@ -6397,7 +6355,7 @@ final public boolean prio() throws ParseException { } else { c = (CssMin) v; } - label_150: + label_146: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6405,12 +6363,12 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[228] = jj_gen; - break label_150; + jj_la1[224] = jj_gen; + break label_146; } jj_consume_token(S); } - label_151: + label_147: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case COMMA:{ @@ -6418,11 +6376,11 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[229] = jj_gen; - break label_151; + jj_la1[225] = jj_gen; + break label_147; } jj_consume_token(COMMA); - label_152: + label_148: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6430,14 +6388,14 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[230] = jj_gen; - break label_152; + jj_la1[226] = jj_gen; + break label_148; } jj_consume_token(S); } v = mathsum(); c.addValue(v); - label_153: + label_149: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6445,8 +6403,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[231] = jj_gen; - break label_153; + jj_la1[227] = jj_gen; + break label_149; } jj_consume_token(S); } @@ -6461,7 +6419,7 @@ final public boolean prio() throws ParseException { CssMax c; Token n; n = jj_consume_token(FUNCTIONMAX); - label_154: + label_150: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6469,8 +6427,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[232] = jj_gen; - break label_154; + jj_la1[228] = jj_gen; + break label_150; } jj_consume_token(S); } @@ -6480,7 +6438,7 @@ final public boolean prio() throws ParseException { } else { c = (CssMax) v; } - label_155: + label_151: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6488,12 +6446,12 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[233] = jj_gen; - break label_155; + jj_la1[229] = jj_gen; + break label_151; } jj_consume_token(S); } - label_156: + label_152: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case COMMA:{ @@ -6501,11 +6459,11 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[234] = jj_gen; - break label_156; + jj_la1[230] = jj_gen; + break label_152; } jj_consume_token(COMMA); - label_157: + label_153: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6513,14 +6471,14 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[235] = jj_gen; - break label_157; + jj_la1[231] = jj_gen; + break label_153; } jj_consume_token(S); } v = mathsum(); c.addValue(v); - label_158: + label_154: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6528,8 +6486,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[236] = jj_gen; - break label_158; + jj_la1[232] = jj_gen; + break label_154; } jj_consume_token(S); } @@ -6544,7 +6502,7 @@ final public boolean prio() throws ParseException { CssClamp c; Token n; n = jj_consume_token(FUNCTIONCLAMP); - label_159: + label_155: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6552,13 +6510,13 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[237] = jj_gen; - break label_159; + jj_la1[233] = jj_gen; + break label_155; } jj_consume_token(S); } v1 = mathsum(); - label_160: + label_156: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6566,13 +6524,13 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[238] = jj_gen; - break label_160; + jj_la1[234] = jj_gen; + break label_156; } jj_consume_token(S); } jj_consume_token(COMMA); - label_161: + label_157: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6580,13 +6538,13 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[239] = jj_gen; - break label_161; + jj_la1[235] = jj_gen; + break label_157; } jj_consume_token(S); } v2 = mathsum(); - label_162: + label_158: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6594,13 +6552,13 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[240] = jj_gen; - break label_162; + jj_la1[236] = jj_gen; + break label_158; } jj_consume_token(S); } jj_consume_token(COMMA); - label_163: + label_159: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6608,13 +6566,13 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[241] = jj_gen; - break label_163; + jj_la1[237] = jj_gen; + break label_159; } jj_consume_token(S); } v3 = mathsum(); - label_164: + label_160: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6622,8 +6580,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[242] = jj_gen; - break label_164; + jj_la1[238] = jj_gen; + break label_160; } jj_consume_token(S); } @@ -6638,7 +6596,7 @@ final public boolean prio() throws ParseException { CssCalc c; Token n; n = jj_consume_token(FUNCTIONCALC); - label_165: + label_161: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6646,13 +6604,13 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[243] = jj_gen; - break label_165; + jj_la1[239] = jj_gen; + break label_161; } jj_consume_token(S); } v = mathsum(); - label_166: + label_162: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6660,8 +6618,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[244] = jj_gen; - break label_166; + jj_la1[240] = jj_gen; + break label_162; } jj_consume_token(S); } @@ -6697,12 +6655,12 @@ final public boolean prio() throws ParseException { v1 = mathproduct(); c = new CssCalc(ac, v1); nb_pre_sp = 0; - label_167: + label_163: while (true) { if (jj_2_11(2)) { ; } else { - break label_167; + break label_163; } switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case PLUS:{ @@ -6711,7 +6669,7 @@ final public boolean prio() throws ParseException { } case S: case MINUS:{ - label_168: + label_164: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6719,8 +6677,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[245] = jj_gen; - break label_168; + jj_la1[241] = jj_gen; + break label_164; } jj_consume_token(S); nb_pre_sp++; @@ -6729,14 +6687,14 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[246] = jj_gen; + jj_la1[242] = jj_gen; jj_consume_token(-1); throw new ParseException(); } if (o.image.length() < 2 && nb_pre_sp == 0) { {if (true) throw new ParseException(ac.getMsg().getString("parser.calcwhitespace"));} } - label_169: + label_165: while (true) { jj_consume_token(S); switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { @@ -6745,14 +6703,17 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[247] = jj_gen; - break label_169; + jj_la1[243] = jj_gen; + break label_165; } } v2 = mathproduct(); nb_pre_sp = 0; if (concat) { nc = new CssCalc(ac, c); + if (c.hasCssVariable()) { + nc.markCssVariable(); + } nc.addRightSide(o.image.trim(), v2); c = nc; } else { @@ -6767,19 +6728,20 @@ final public boolean prio() throws ParseException { final public CssCheckableValue mathproduct() throws ParseException {Token n,o; CssCheckableValue v1 = null; CssCheckableValue v2 = null; + CssValue f; CssCalc c, nc; char operator = ' '; boolean concat = false; v1 = mathunit(); c = new CssCalc(ac, v1); - label_170: + label_166: while (true) { if (jj_2_12(2)) { ; } else { - break label_170; + break label_166; } - label_171: + label_167: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6787,15 +6749,15 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[248] = jj_gen; - break label_171; + jj_la1[244] = jj_gen; + break label_167; } jj_consume_token(S); } switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case ANY:{ o = jj_consume_token(ANY); - label_172: + label_168: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6803,8 +6765,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[249] = jj_gen; - break label_172; + jj_la1[245] = jj_gen; + break label_168; } jj_consume_token(S); } @@ -6813,7 +6775,7 @@ final public boolean prio() throws ParseException { } case DIV:{ o = jj_consume_token(DIV); - label_173: + label_169: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6821,8 +6783,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[250] = jj_gen; - break label_173; + jj_la1[246] = jj_gen; + break label_169; } jj_consume_token(S); } @@ -6836,7 +6798,7 @@ final public boolean prio() throws ParseException { } case FUNCTIONVAR:{ n = jj_consume_token(FUNCTIONVAR); - label_174: + label_170: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6844,13 +6806,13 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[251] = jj_gen; - break label_174; + jj_la1[247] = jj_gen; + break label_170; } jj_consume_token(S); } jj_consume_token(CUSTOM_PROPERTY_NAME); - label_175: + label_171: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case COMMA:{ @@ -6858,11 +6820,11 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[252] = jj_gen; - break label_175; + jj_la1[248] = jj_gen; + break label_171; } jj_consume_token(COMMA); - label_176: + label_172: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6870,14 +6832,14 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[253] = jj_gen; - break label_176; + jj_la1[249] = jj_gen; + break label_172; } jj_consume_token(S); } expr(); } - label_177: + label_173: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6885,28 +6847,32 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[254] = jj_gen; - break label_177; + jj_la1[250] = jj_gen; + break label_173; } jj_consume_token(S); } jj_consume_token(LPARAN); +c.markCssVariable(); break; } default: - jj_la1[255] = jj_gen; + jj_la1[251] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; } default: - jj_la1[256] = jj_gen; + jj_la1[252] = jj_gen; jj_consume_token(-1); throw new ParseException(); } if (concat) { nc = new CssCalc(ac, c); + if (c.hasCssVariable()) { + nc.markCssVariable(); + } nc.addRightSide(o.image, v2); c = nc; } else { @@ -6932,7 +6898,7 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[257] = jj_gen; + jj_la1[253] = jj_gen; ; } n = jj_consume_token(NUMBER); @@ -6941,7 +6907,7 @@ final public boolean prio() throws ParseException { } case RPARAN:{ jj_consume_token(RPARAN); - label_178: + label_174: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6949,13 +6915,13 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[258] = jj_gen; - break label_178; + jj_la1[254] = jj_gen; + break label_174; } jj_consume_token(S); } v = calcnumbersum(); - label_179: + label_175: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6963,8 +6929,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[259] = jj_gen; - break label_179; + jj_la1[255] = jj_gen; + break label_175; } jj_consume_token(S); } @@ -6973,7 +6939,7 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[260] = jj_gen; + jj_la1[256] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -6990,12 +6956,12 @@ final public boolean prio() throws ParseException { int nb_pre_sp; v1 = calcnumberproduct(); c = new CssCalc(ac, v1); nb_pre_sp = 0; - label_180: + label_176: while (true) { if (jj_2_13(2)) { ; } else { - break label_180; + break label_176; } switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case PLUS:{ @@ -7004,7 +6970,7 @@ final public boolean prio() throws ParseException { } case S: case MINUS:{ - label_181: + label_177: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -7012,8 +6978,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[261] = jj_gen; - break label_181; + jj_la1[257] = jj_gen; + break label_177; } jj_consume_token(S); nb_pre_sp++; @@ -7022,14 +6988,14 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[262] = jj_gen; + jj_la1[258] = jj_gen; jj_consume_token(-1); throw new ParseException(); } if (o.image.length() < 2 && nb_pre_sp == 0) { {if (true) throw new ParseException(ac.getMsg().getString("parser.calcwhitespace"));} } - label_182: + label_178: while (true) { jj_consume_token(S); switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { @@ -7038,8 +7004,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[263] = jj_gen; - break label_182; + jj_la1[259] = jj_gen; + break label_178; } } v2 = calcnumberproduct(); @@ -7065,14 +7031,14 @@ final public boolean prio() throws ParseException { boolean concat = false; v1 = calcnumbervalue(); c = new CssCalc(ac, v1); - label_183: + label_179: while (true) { if (jj_2_14(2)) { ; } else { - break label_183; + break label_179; } - label_184: + label_180: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -7080,8 +7046,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[264] = jj_gen; - break label_184; + jj_la1[260] = jj_gen; + break label_180; } jj_consume_token(S); } @@ -7095,11 +7061,11 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[265] = jj_gen; + jj_la1[261] = jj_gen; jj_consume_token(-1); throw new ParseException(); } - label_185: + label_181: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -7107,8 +7073,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[266] = jj_gen; - break label_185; + jj_la1[262] = jj_gen; + break label_181; } jj_consume_token(S); } @@ -7148,7 +7114,7 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[267] = jj_gen; + jj_la1[263] = jj_gen; ; } switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { @@ -7198,7 +7164,7 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[268] = jj_gen; + jj_la1[264] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -7206,7 +7172,7 @@ final public boolean prio() throws ParseException { } case RPARAN:{ jj_consume_token(RPARAN); - label_186: + label_182: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -7214,13 +7180,13 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[269] = jj_gen; - break label_186; + jj_la1[265] = jj_gen; + break label_182; } jj_consume_token(S); } v = mathsum(); - label_187: + label_183: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -7228,8 +7194,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[270] = jj_gen; - break label_187; + jj_la1[266] = jj_gen; + break label_183; } jj_consume_token(S); } @@ -7259,7 +7225,7 @@ final public boolean prio() throws ParseException { } case FUNCTIONVAR:{ n = jj_consume_token(FUNCTIONVAR); - label_188: + label_184: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -7267,13 +7233,13 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[271] = jj_gen; - break label_188; + jj_la1[267] = jj_gen; + break label_184; } jj_consume_token(S); } jj_consume_token(CUSTOM_PROPERTY_NAME); - label_189: + label_185: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case COMMA:{ @@ -7281,11 +7247,11 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[272] = jj_gen; - break label_189; + jj_la1[268] = jj_gen; + break label_185; } jj_consume_token(COMMA); - label_190: + label_186: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -7293,14 +7259,14 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[273] = jj_gen; - break label_190; + jj_la1[269] = jj_gen; + break label_186; } jj_consume_token(S); } expr(); } - label_191: + label_187: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -7308,16 +7274,17 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[274] = jj_gen; - break label_191; + jj_la1[270] = jj_gen; + break label_187; } jj_consume_token(S); } jj_consume_token(LPARAN); +CssCalc c = new CssCalc(); c.markCssVariable(); {if ("" != null) return c;} break; } default: - jj_la1[275] = jj_gen; + jj_la1[271] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -7329,7 +7296,7 @@ final public boolean prio() throws ParseException { Token n = null; CssExpression exp = null; jj_consume_token(FUNCTIONATTR); - label_192: + label_188: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -7337,13 +7304,13 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[276] = jj_gen; - break label_192; + jj_la1[272] = jj_gen; + break label_188; } jj_consume_token(S); } n = ident(); - label_193: + label_189: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -7351,8 +7318,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[277] = jj_gen; - break label_193; + jj_la1[273] = jj_gen; + break label_189; } jj_consume_token(S); } @@ -7379,12 +7346,12 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[278] = jj_gen; + jj_la1[274] = jj_gen; jj_consume_token(-1); throw new ParseException(); } setValue(new CssIdent(), exp, ' ', n, IDENT); - label_194: + label_190: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -7392,22 +7359,22 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[279] = jj_gen; - break label_194; + jj_la1[275] = jj_gen; + break label_190; } jj_consume_token(S); } break; } default: - jj_la1[280] = jj_gen; + jj_la1[276] = jj_gen; ; } switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case COMMA:{ jj_consume_token(COMMA); exp.setOperator(','); - label_195: + label_191: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -7415,8 +7382,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[281] = jj_gen; - break label_195; + jj_la1[277] = jj_gen; + break label_191; } jj_consume_token(S); } @@ -7424,7 +7391,7 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[282] = jj_gen; + jj_la1[278] = jj_gen; ; } jj_consume_token(LPARAN); @@ -7434,6 +7401,84 @@ final public boolean prio() throws ParseException { throw new Error("Missing return statement in function"); } + final public CssValue functionvar() throws ParseException {Token n; + CssExpression exp = null; + CssExpression e; + CssVariable var; + jj_consume_token(FUNCTIONVAR); + label_192: + while (true) { + switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { + case S:{ + ; + break; + } + default: + jj_la1[279] = jj_gen; + break label_192; + } + jj_consume_token(S); + } + n = jj_consume_token(CUSTOM_PROPERTY_NAME); +var = new CssVariable(ac, convertIdent(n.image)); + label_193: + while (true) { + switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { + case COMMA:{ + ; + break; + } + default: + jj_la1[280] = jj_gen; + break label_193; + } + jj_consume_token(COMMA); + label_194: + while (true) { + switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { + case S:{ + ; + break; + } + default: + jj_la1[281] = jj_gen; + break label_194; + } + jj_consume_token(S); + } + e = expr(); +if (exp == null) { + exp = e; + } else { + exp.setOperator(CssOperator.COMMA) ; + while (!e.end()) { + exp.addValue(e.getValue()); + exp.setOperator(e.getOperator()); + e.next(); + } + } + } + label_195: + while (true) { + switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { + case S:{ + ; + break; + } + default: + jj_la1[282] = jj_gen; + break label_195; + } + jj_consume_token(S); + } + jj_consume_token(LPARAN); +if (exp != null) { + var.set(exp); + } + {if ("" != null) return var;} + throw new Error("Missing return statement in function"); + } + /** * @exception ParseException exception during the parse */ @@ -7944,295 +7989,161 @@ private boolean jj_2_15(int xla) finally { jj_save(14, xla); } } - private boolean jj_3R_335() - { - if (jj_scan_token(COMMA)) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(21)) { jj_scanpos = xsp; break; } - } - if (jj_3R_326()) return true; - return false; - } - - private boolean jj_3R_301() + private boolean jj_3_2() { - if (jj_scan_token(FUNCTIONCLAMP)) return true; + if (jj_scan_token(RPARAN)) return true; Token xsp; while (true) { xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } - if (jj_3R_326()) return true; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(21)) { jj_scanpos = xsp; break; } - } - if (jj_scan_token(COMMA)) return true; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(21)) { jj_scanpos = xsp; break; } - } - if (jj_3R_326()) return true; + if (jj_3R_197()) return true; return false; } - private boolean jj_3R_337() + private boolean jj_3R_230() { Token xsp; xsp = jj_scanpos; - if (jj_scan_token(129)) { - jj_scanpos = xsp; - if (jj_scan_token(130)) { - jj_scanpos = xsp; - if (jj_scan_token(131)) { - jj_scanpos = xsp; - if (jj_scan_token(132)) { - jj_scanpos = xsp; - if (jj_scan_token(133)) { - jj_scanpos = xsp; - if (jj_scan_token(134)) { - jj_scanpos = xsp; - if (jj_scan_token(135)) { - jj_scanpos = xsp; - if (jj_scan_token(136)) { - jj_scanpos = xsp; - if (jj_scan_token(53)) { - jj_scanpos = xsp; - if (jj_scan_token(48)) { - jj_scanpos = xsp; - if (jj_scan_token(52)) { - jj_scanpos = xsp; - if (jj_scan_token(51)) { - jj_scanpos = xsp; - if (jj_scan_token(55)) { - jj_scanpos = xsp; - if (jj_scan_token(56)) { - jj_scanpos = xsp; - if (jj_scan_token(57)) { - jj_scanpos = xsp; - if (jj_scan_token(32)) { - jj_scanpos = xsp; - if (jj_scan_token(27)) { - jj_scanpos = xsp; - if (jj_scan_token(31)) { + if (jj_3_2()) { jj_scanpos = xsp; - if (jj_scan_token(29)) { + if (jj_3_3()) { jj_scanpos = xsp; - if (jj_scan_token(50)) return true; - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } + if (jj_3R_295()) return true; } } return false; } - private boolean jj_3R_334() + private boolean jj_3R_326() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_337()) jj_scanpos = xsp; - if (jj_3R_203()) return true; + if (jj_scan_token(PLUS)) return true; return false; } - private boolean jj_3R_322() + private boolean jj_3R_337() { - if (jj_scan_token(RPARAN)) return true; + if (jj_scan_token(COMMA)) return true; Token xsp; while (true) { xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } - if (jj_scan_token(IDENT)) return true; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(21)) { jj_scanpos = xsp; break; } - } - xsp = jj_scanpos; - if (jj_3R_329()) jj_scanpos = xsp; - if (jj_scan_token(LPARAN)) return true; + if (jj_3R_327()) return true; return false; } - private boolean jj_3R_332() + private boolean jj_3R_325() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_334()) { - jj_scanpos = xsp; - if (jj_scan_token(43)) return true; - } - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(21)) { jj_scanpos = xsp; break; } - } + if (jj_scan_token(MINUS)) return true; return false; } - private boolean jj_3R_330() + private boolean jj_3R_297() { Token xsp; xsp = jj_scanpos; - if (jj_3R_332()) { + if (jj_3R_325()) { jj_scanpos = xsp; - if (jj_3R_333()) return true; + if (jj_3R_326()) return true; } return false; } - private boolean jj_3_2() + private boolean jj_3R_299() { - if (jj_scan_token(RPARAN)) return true; + if (jj_scan_token(FUNCTIONMAX)) return true; Token xsp; while (true) { xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } - if (jj_3R_197()) return true; + if (jj_3R_327()) return true; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(21)) { jj_scanpos = xsp; break; } + } + while (true) { + xsp = jj_scanpos; + if (jj_3R_336()) { jj_scanpos = xsp; break; } + } + if (jj_scan_token(LPARAN)) return true; return false; } - private boolean jj_3R_230() + private boolean jj_3R_324() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_2()) { - jj_scanpos = xsp; - if (jj_3_3()) { - jj_scanpos = xsp; - if (jj_3R_295()) return true; - } - } + if (jj_3R_331()) return true; + if (jj_scan_token(COLON)) return true; return false; } - private boolean jj_3R_325() + private boolean jj_3R_305() { - if (jj_scan_token(PLUS)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_scan_token(40)) { + jj_scanpos = xsp; + if (jj_scan_token(41)) return true; + } return false; } - private boolean jj_3R_324() + private boolean jj_3R_213() { - if (jj_scan_token(MINUS)) return true; + if (jj_3R_230()) return true; return false; } - private boolean jj_3R_297() + private boolean jj_3R_197() { Token xsp; xsp = jj_scanpos; - if (jj_3R_324()) { + if (jj_3R_212()) { jj_scanpos = xsp; - if (jj_3R_325()) return true; + if (jj_3R_213()) return true; } return false; } - private boolean jj_3R_336() + private boolean jj_3R_212() { - if (jj_scan_token(COMMA)) return true; + if (jj_scan_token(NOT)) return true; Token xsp; while (true) { xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } - if (jj_3R_326()) return true; - return false; - } - - private boolean jj_3R_323() - { - if (jj_3R_330()) return true; - if (jj_scan_token(COLON)) return true; + if (jj_3R_230()) return true; return false; } - private boolean jj_3R_299() + private boolean jj_3R_300() { - if (jj_scan_token(FUNCTIONMAX)) return true; + if (jj_scan_token(FUNCTIONMIN)) return true; Token xsp; while (true) { xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } - if (jj_3R_326()) return true; + if (jj_3R_327()) return true; while (true) { xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } while (true) { xsp = jj_scanpos; - if (jj_3R_335()) { jj_scanpos = xsp; break; } + if (jj_3R_337()) { jj_scanpos = xsp; break; } } if (jj_scan_token(LPARAN)) return true; return false; } - private boolean jj_3R_213() - { - if (jj_3R_230()) return true; - return false; - } - - private boolean jj_3R_197() - { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_212()) { - jj_scanpos = xsp; - if (jj_3R_213()) return true; - } - return false; - } - - private boolean jj_3R_212() - { - if (jj_scan_token(NOT)) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(21)) { jj_scanpos = xsp; break; } - } - if (jj_3R_230()) return true; - return false; - } - - private boolean jj_3R_300() + private boolean jj_3R_328() { - if (jj_scan_token(FUNCTIONMIN)) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(21)) { jj_scanpos = xsp; break; } - } - if (jj_3R_326()) return true; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(21)) { jj_scanpos = xsp; break; } - } - while (true) { - xsp = jj_scanpos; - if (jj_3R_336()) { jj_scanpos = xsp; break; } - } - if (jj_scan_token(LPARAN)) return true; + if (jj_3R_203()) return true; + if (jj_scan_token(EQ)) return true; + if (jj_scan_token(NUMBER)) return true; return false; } @@ -8275,22 +8186,11 @@ private boolean jj_3R_284() private boolean jj_3R_283() { - if (jj_3R_304()) return true; - return false; - } - - private boolean jj_3R_304() - { - Token xsp; - xsp = jj_scanpos; - if (jj_scan_token(40)) { - jj_scanpos = xsp; - if (jj_scan_token(41)) return true; - } + if (jj_3R_305()) return true; return false; } - private boolean jj_3R_328() + private boolean jj_3R_329() { if (jj_scan_token(NUMBER)) return true; Token xsp; @@ -8307,14 +8207,6 @@ private boolean jj_3R_328() return false; } - private boolean jj_3R_327() - { - if (jj_3R_203()) return true; - if (jj_scan_token(EQ)) return true; - if (jj_scan_token(NUMBER)) return true; - return false; - } - private boolean jj_3R_281() { if (jj_scan_token(STRING)) return true; @@ -8327,7 +8219,7 @@ private boolean jj_3R_282() return false; } - private boolean jj_3R_311() + private boolean jj_3R_312() { if (jj_3R_301()) return true; return false; @@ -8357,27 +8249,27 @@ private boolean jj_3R_222() return false; } - private boolean jj_3R_310() + private boolean jj_3R_311() { if (jj_3R_300()) return true; return false; } - private boolean jj_3R_309() + private boolean jj_3R_310() { if (jj_3R_299()) return true; return false; } - private boolean jj_3R_308() + private boolean jj_3R_309() { if (jj_3R_298()) return true; return false; } - private boolean jj_3R_307() + private boolean jj_3R_308() { - if (jj_3R_303()) return true; + if (jj_3R_304()) return true; return false; } @@ -8385,15 +8277,15 @@ private boolean jj_3R_280() { Token xsp; xsp = jj_scanpos; - if (jj_3R_307()) { - jj_scanpos = xsp; if (jj_3R_308()) { jj_scanpos = xsp; if (jj_3R_309()) { jj_scanpos = xsp; if (jj_3R_310()) { jj_scanpos = xsp; - if (jj_3R_311()) return true; + if (jj_3R_311()) { + jj_scanpos = xsp; + if (jj_3R_312()) return true; } } } @@ -8401,6 +8293,13 @@ private boolean jj_3R_280() return false; } + private boolean jj_3_15() + { + if (jj_3R_211()) return true; + if (jj_scan_token(LPARAN)) return true; + return false; + } + private boolean jj_3R_279() { if (jj_scan_token(DIMEN_9)) return true; @@ -8449,6 +8348,22 @@ private boolean jj_3R_274() return false; } + private boolean jj_3R_304() + { + if (jj_scan_token(FUNCTION)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(21)) { jj_scanpos = xsp; break; } + } + xsp = jj_scanpos; + if (jj_3_15()) { + jj_scanpos = xsp; + if (jj_3R_328()) return true; + } + return false; + } + private boolean jj_3R_273() { if (jj_scan_token(FREQ)) return true; @@ -8479,12 +8394,6 @@ private boolean jj_3R_269() return false; } - private boolean jj_3R_339() - { - if (jj_scan_token(COMMA)) return true; - return false; - } - private boolean jj_3R_268() { if (jj_scan_token(RELVIEWLENGTH)) return true; @@ -8503,13 +8412,13 @@ private boolean jj_3R_266() return false; } - private boolean jj_3R_305() + private boolean jj_3R_306() { - if (jj_3R_328()) return true; + if (jj_3R_329()) return true; return false; } - private boolean jj_3R_306() + private boolean jj_3R_307() { if (jj_scan_token(NUMBER)) return true; return false; @@ -8519,17 +8428,16 @@ private boolean jj_3R_265() { Token xsp; xsp = jj_scanpos; - if (jj_3R_305()) { + if (jj_3R_306()) { jj_scanpos = xsp; - if (jj_3R_306()) return true; + if (jj_3R_307()) return true; } return false; } - private boolean jj_3_15() + private boolean jj_3R_339() { - if (jj_3R_211()) return true; - if (jj_scan_token(LPARAN)) return true; + if (jj_scan_token(COMMA)) return true; return false; } @@ -8609,12 +8517,6 @@ private boolean jj_3R_205() return false; } - private boolean jj_3R_338() - { - if (jj_scan_token(COMMA)) return true; - return false; - } - private boolean jj_3_9() { if (jj_scan_token(S)) return true; @@ -8627,41 +8529,52 @@ private boolean jj_3R_263() return false; } + private boolean jj_3R_341() + { + if (jj_scan_token(COMMA)) return true; + return false; + } + private boolean jj_3R_262() { if (jj_scan_token(URL)) return true; return false; } - private boolean jj_3R_261() + private boolean jj_3R_342() { - if (jj_3R_304()) return true; + if (jj_scan_token(COMMA)) return true; return false; } - private boolean jj_3R_341() + private boolean jj_3R_261() { - if (jj_scan_token(COMMA)) return true; + if (jj_3R_305()) return true; return false; } private boolean jj_3R_303() { - if (jj_scan_token(FUNCTION)) return true; + if (jj_scan_token(FUNCTIONVAR)) return true; Token xsp; while (true) { xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } - xsp = jj_scanpos; - if (jj_3_15()) { - jj_scanpos = xsp; - if (jj_3R_327()) return true; + if (jj_scan_token(CUSTOM_PROPERTY_NAME)) return true; + while (true) { + xsp = jj_scanpos; + if (jj_3R_342()) { jj_scanpos = xsp; break; } + } + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } + if (jj_scan_token(LPARAN)) return true; return false; } - private boolean jj_3R_342() + private boolean jj_3R_343() { if (jj_3R_203()) return true; return false; @@ -8671,13 +8584,46 @@ private boolean jj_3R_340() { Token xsp; xsp = jj_scanpos; - if (jj_3R_342()) { + if (jj_3R_343()) { jj_scanpos = xsp; if (jj_scan_token(131)) return true; } return false; } + private boolean jj_3R_314() + { + if (jj_scan_token(NUMBER)) return true; + return false; + } + + private boolean jj_3R_260() + { + if (jj_3R_203()) return true; + return false; + } + + private boolean jj_3R_302() + { + if (jj_scan_token(FUNCTIONATTR)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(21)) { jj_scanpos = xsp; break; } + } + if (jj_3R_203()) return true; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(21)) { jj_scanpos = xsp; break; } + } + xsp = jj_scanpos; + if (jj_3R_340()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_341()) jj_scanpos = xsp; + if (jj_scan_token(LPARAN)) return true; + return false; + } + private boolean jj_3R_231() { Token xsp; @@ -8698,12 +8644,6 @@ private boolean jj_3R_231() return false; } - private boolean jj_3R_260() - { - if (jj_3R_203()) return true; - return false; - } - private boolean jj_3R_259() { Token xsp; @@ -8715,12 +8655,6 @@ private boolean jj_3R_259() return false; } - private boolean jj_3R_313() - { - if (jj_scan_token(NUMBER)) return true; - return false; - } - private boolean jj_3R_258() { if (jj_scan_token(DIV)) return true; @@ -8735,28 +8669,13 @@ private boolean jj_3R_257() private boolean jj_3R_256() { - if (jj_3R_303()) return true; + if (jj_3R_304()) return true; return false; } private boolean jj_3R_255() { - if (jj_scan_token(FUNCTIONVAR)) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(21)) { jj_scanpos = xsp; break; } - } - if (jj_scan_token(CUSTOM_PROPERTY_NAME)) return true; - while (true) { - xsp = jj_scanpos; - if (jj_3R_339()) { jj_scanpos = xsp; break; } - } - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(21)) { jj_scanpos = xsp; break; } - } - if (jj_scan_token(LPARAN)) return true; + if (jj_3R_303()) return true; return false; } @@ -8772,27 +8691,6 @@ private boolean jj_3R_253() return false; } - private boolean jj_3R_302() - { - if (jj_scan_token(FUNCTIONATTR)) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(21)) { jj_scanpos = xsp; break; } - } - if (jj_3R_203()) return true; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(21)) { jj_scanpos = xsp; break; } - } - xsp = jj_scanpos; - if (jj_3R_340()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_341()) jj_scanpos = xsp; - if (jj_scan_token(LPARAN)) return true; - return false; - } - private boolean jj_3R_252() { if (jj_3R_300()) return true; @@ -8811,18 +8709,45 @@ private boolean jj_3R_250() return false; } - private boolean jj_3R_220() + private boolean jj_3R_293() { + if (jj_scan_token(FUNCTIONVAR)) return true; Token xsp; - xsp = jj_scanpos; - if (jj_3R_250()) { - jj_scanpos = xsp; - if (jj_3R_251()) { - jj_scanpos = xsp; - if (jj_3R_252()) { - jj_scanpos = xsp; - if (jj_3R_253()) { - jj_scanpos = xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(21)) { jj_scanpos = xsp; break; } + } + if (jj_scan_token(CUSTOM_PROPERTY_NAME)) return true; + while (true) { + xsp = jj_scanpos; + if (jj_3R_339()) { jj_scanpos = xsp; break; } + } + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(21)) { jj_scanpos = xsp; break; } + } + if (jj_scan_token(LPARAN)) return true; + return false; + } + + private boolean jj_3R_292() + { + if (jj_3R_302()) return true; + return false; + } + + private boolean jj_3R_220() + { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_250()) { + jj_scanpos = xsp; + if (jj_3R_251()) { + jj_scanpos = xsp; + if (jj_3R_252()) { + jj_scanpos = xsp; + if (jj_3R_253()) { + jj_scanpos = xsp; if (jj_3R_254()) { jj_scanpos = xsp; if (jj_3R_255()) { @@ -8858,39 +8783,6 @@ private boolean jj_3R_220() return false; } - private boolean jj_3R_293() - { - if (jj_scan_token(FUNCTIONVAR)) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(21)) { jj_scanpos = xsp; break; } - } - if (jj_scan_token(CUSTOM_PROPERTY_NAME)) return true; - while (true) { - xsp = jj_scanpos; - if (jj_3R_338()) { jj_scanpos = xsp; break; } - } - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(21)) { jj_scanpos = xsp; break; } - } - if (jj_scan_token(LPARAN)) return true; - return false; - } - - private boolean jj_3R_292() - { - if (jj_3R_302()) return true; - return false; - } - - private boolean jj_3R_249() - { - if (jj_scan_token(DIMEN_9)) return true; - return false; - } - private boolean jj_3R_291() { if (jj_3R_301()) return true; @@ -8923,7 +8815,7 @@ private boolean jj_3R_287() xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } - if (jj_3R_326()) return true; + if (jj_3R_327()) return true; while (true) { xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } @@ -8932,61 +8824,61 @@ private boolean jj_3R_287() return false; } - private boolean jj_3R_321() + private boolean jj_3R_322() { if (jj_scan_token(FREQ)) return true; return false; } - private boolean jj_3R_320() + private boolean jj_3R_321() { if (jj_scan_token(TIME)) return true; return false; } - private boolean jj_3R_319() + private boolean jj_3R_320() { if (jj_scan_token(ANGLE)) return true; return false; } - private boolean jj_3R_248() + private boolean jj_3R_249() { - if (jj_scan_token(IMPORTANT_NOT)) return true; + if (jj_scan_token(DIMEN_9)) return true; return false; } - private boolean jj_3R_318() + private boolean jj_3R_319() { if (jj_scan_token(FLEX)) return true; return false; } - private boolean jj_3R_317() + private boolean jj_3R_318() { if (jj_scan_token(ABSOLUTLENGTH)) return true; return false; } - private boolean jj_3R_316() + private boolean jj_3R_317() { if (jj_scan_token(RELVIEWLENGTH)) return true; return false; } - private boolean jj_3R_315() + private boolean jj_3R_316() { if (jj_scan_token(RELFONTLENGTH)) return true; return false; } - private boolean jj_3R_312() + private boolean jj_3R_313() { if (jj_3R_297()) return true; return false; } - private boolean jj_3R_314() + private boolean jj_3R_315() { if (jj_scan_token(PERCENTAGE)) return true; return false; @@ -8996,10 +8888,8 @@ private boolean jj_3R_286() { Token xsp; xsp = jj_scanpos; - if (jj_3R_312()) jj_scanpos = xsp; + if (jj_3R_313()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_313()) { - jj_scanpos = xsp; if (jj_3R_314()) { jj_scanpos = xsp; if (jj_3R_315()) { @@ -9014,7 +8904,9 @@ private boolean jj_3R_286() jj_scanpos = xsp; if (jj_3R_320()) { jj_scanpos = xsp; - if (jj_3R_321()) return true; + if (jj_3R_321()) { + jj_scanpos = xsp; + if (jj_3R_322()) return true; } } } @@ -9026,9 +8918,9 @@ private boolean jj_3R_286() return false; } - private boolean jj_3R_247() + private boolean jj_3R_248() { - if (jj_scan_token(PROGID)) return true; + if (jj_scan_token(IMPORTANT_NOT)) return true; return false; } @@ -9061,6 +8953,18 @@ private boolean jj_3R_224() return false; } + private boolean jj_3R_247() + { + if (jj_scan_token(PROGID)) return true; + return false; + } + + private boolean jj_3R_227() + { + if (jj_scan_token(S)) return true; + return false; + } + private boolean jj_3R_246() { if (jj_scan_token(DIMEN)) return true; @@ -9073,6 +8977,17 @@ private boolean jj_3R_245() return false; } + private boolean jj_3R_209() + { + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_227()) { jj_scanpos = xsp; break; } + } + if (jj_scan_token(MINUS)) return true; + return false; + } + private boolean jj_3R_244() { if (jj_scan_token(ST)) return true; @@ -9085,21 +9000,35 @@ private boolean jj_3R_243() return false; } - private boolean jj_3R_242() + private boolean jj_3_14() { - if (jj_scan_token(FREQ)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(21)) { jj_scanpos = xsp; break; } + } + xsp = jj_scanpos; + if (jj_scan_token(50)) { + jj_scanpos = xsp; + if (jj_scan_token(53)) return true; + } + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(21)) { jj_scanpos = xsp; break; } + } + if (jj_3R_210()) return true; return false; } - private boolean jj_3R_241() + private boolean jj_3R_242() { - if (jj_scan_token(TIME)) return true; + if (jj_scan_token(FREQ)) return true; return false; } - private boolean jj_3R_227() + private boolean jj_3R_241() { - if (jj_scan_token(S)) return true; + if (jj_scan_token(TIME)) return true; return false; } @@ -9127,17 +9056,6 @@ private boolean jj_3R_237() return false; } - private boolean jj_3R_209() - { - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_227()) { jj_scanpos = xsp; break; } - } - if (jj_scan_token(MINUS)) return true; - return false; - } - private boolean jj_3R_236() { if (jj_scan_token(RELFONTLENGTH)) return true; @@ -9150,26 +9068,6 @@ private boolean jj_3R_235() return false; } - private boolean jj_3_14() - { - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(21)) { jj_scanpos = xsp; break; } - } - xsp = jj_scanpos; - if (jj_scan_token(50)) { - jj_scanpos = xsp; - if (jj_scan_token(53)) return true; - } - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(21)) { jj_scanpos = xsp; break; } - } - if (jj_3R_210()) return true; - return false; - } - private boolean jj_3R_234() { if (jj_scan_token(NUMBER)) return true; @@ -9261,18 +9159,7 @@ private boolean jj_3R_202() private boolean jj_3R_295() { - if (jj_3R_322()) return true; - return false; - } - - private boolean jj_3R_204() - { - if (jj_3R_205()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3_8()) { jj_scanpos = xsp; break; } - } + if (jj_3R_323()) return true; return false; } @@ -9292,6 +9179,17 @@ private boolean jj_3_13() return false; } + private boolean jj_3R_204() + { + if (jj_3R_205()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3_8()) { jj_scanpos = xsp; break; } + } + return false; + } + private boolean jj_3_12() { Token xsp; @@ -9355,12 +9253,6 @@ private boolean jj_3R_229() return false; } - private boolean jj_3R_226() - { - if (jj_scan_token(FUNCTIONVAR)) return true; - return false; - } - private boolean jj_3R_228() { Token xsp; @@ -9381,6 +9273,12 @@ private boolean jj_3R_210() return false; } + private boolean jj_3R_226() + { + if (jj_scan_token(FUNCTIONVAR)) return true; + return false; + } + private boolean jj_3R_208() { if (jj_scan_token(DIV)) return true; @@ -9397,9 +9295,21 @@ private boolean jj_3R_208() return false; } + private boolean jj_3R_207() + { + if (jj_scan_token(ANY)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(21)) { jj_scanpos = xsp; break; } + } + if (jj_3R_224()) return true; + return false; + } + private boolean jj_3R_296() { - if (jj_3R_323()) return true; + if (jj_3R_324()) return true; return false; } @@ -9435,18 +9345,6 @@ private boolean jj_3R_214() return false; } - private boolean jj_3R_207() - { - if (jj_scan_token(ANY)) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(21)) { jj_scanpos = xsp; break; } - } - if (jj_3R_224()) return true; - return false; - } - private boolean jj_3_4() { if (jj_3R_199()) return true; @@ -9516,7 +9414,7 @@ private boolean jj_3R_206() return false; } - private boolean jj_3R_331() + private boolean jj_3R_332() { if (jj_3R_224()) return true; Token xsp; @@ -9584,9 +9482,9 @@ private boolean jj_3_11() return false; } - private boolean jj_3R_326() + private boolean jj_3R_327() { - if (jj_3R_331()) return true; + if (jj_3R_332()) return true; Token xsp; while (true) { xsp = jj_scanpos; @@ -9615,6 +9513,23 @@ private boolean jj_3R_203() return false; } + private boolean jj_3R_298() + { + if (jj_scan_token(FUNCTIONCALC)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(21)) { jj_scanpos = xsp; break; } + } + if (jj_3R_327()) return true; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(21)) { jj_scanpos = xsp; break; } + } + if (jj_scan_token(LPARAN)) return true; + return false; + } + private boolean jj_3R_217() { if (jj_3R_203()) return true; @@ -9632,53 +9547,189 @@ private boolean jj_3R_200() return false; } - private boolean jj_3R_298() + private boolean jj_3R_334() { - if (jj_scan_token(FUNCTIONCALC)) return true; Token xsp; + xsp = jj_scanpos; + if (jj_scan_token(40)) { + jj_scanpos = xsp; + if (jj_scan_token(117)) { + jj_scanpos = xsp; + if (jj_scan_token(106)) return true; + } + } while (true) { xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } - if (jj_3R_326()) return true; + return false; + } + + private boolean jj_3R_330() + { + if (jj_scan_token(COLON)) return true; + return false; + } + + private boolean jj_3_5() + { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_200()) jj_scanpos = xsp; + if (jj_scan_token(136)) return true; + return false; + } + + private boolean jj_3R_336() + { + if (jj_scan_token(COMMA)) return true; + Token xsp; while (true) { xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } - if (jj_scan_token(LPARAN)) return true; + if (jj_3R_327()) return true; return false; } - private boolean jj_3R_333() + private boolean jj_3R_301() + { + if (jj_scan_token(FUNCTIONCLAMP)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(21)) { jj_scanpos = xsp; break; } + } + if (jj_3R_327()) return true; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(21)) { jj_scanpos = xsp; break; } + } + if (jj_scan_token(COMMA)) return true; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(21)) { jj_scanpos = xsp; break; } + } + if (jj_3R_327()) return true; + return false; + } + + private boolean jj_3R_338() { Token xsp; xsp = jj_scanpos; - if (jj_scan_token(40)) { + if (jj_scan_token(129)) { jj_scanpos = xsp; - if (jj_scan_token(117)) { + if (jj_scan_token(130)) { jj_scanpos = xsp; - if (jj_scan_token(106)) return true; + if (jj_scan_token(131)) { + jj_scanpos = xsp; + if (jj_scan_token(132)) { + jj_scanpos = xsp; + if (jj_scan_token(133)) { + jj_scanpos = xsp; + if (jj_scan_token(134)) { + jj_scanpos = xsp; + if (jj_scan_token(135)) { + jj_scanpos = xsp; + if (jj_scan_token(136)) { + jj_scanpos = xsp; + if (jj_scan_token(53)) { + jj_scanpos = xsp; + if (jj_scan_token(48)) { + jj_scanpos = xsp; + if (jj_scan_token(52)) { + jj_scanpos = xsp; + if (jj_scan_token(51)) { + jj_scanpos = xsp; + if (jj_scan_token(55)) { + jj_scanpos = xsp; + if (jj_scan_token(56)) { + jj_scanpos = xsp; + if (jj_scan_token(57)) { + jj_scanpos = xsp; + if (jj_scan_token(32)) { + jj_scanpos = xsp; + if (jj_scan_token(27)) { + jj_scanpos = xsp; + if (jj_scan_token(31)) { + jj_scanpos = xsp; + if (jj_scan_token(29)) { + jj_scanpos = xsp; + if (jj_scan_token(50)) return true; + } + } + } + } + } } } + } + } + } + } + } + } + } + } + } + } + } + } + return false; + } + + private boolean jj_3R_335() + { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_338()) jj_scanpos = xsp; + if (jj_3R_203()) return true; + return false; + } + + private boolean jj_3R_323() + { + if (jj_scan_token(RPARAN)) return true; + Token xsp; while (true) { xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } + if (jj_scan_token(IDENT)) return true; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(21)) { jj_scanpos = xsp; break; } + } + xsp = jj_scanpos; + if (jj_3R_330()) jj_scanpos = xsp; + if (jj_scan_token(LPARAN)) return true; return false; } - private boolean jj_3R_329() + private boolean jj_3R_333() { - if (jj_scan_token(COLON)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_335()) { + jj_scanpos = xsp; + if (jj_scan_token(43)) return true; + } + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(21)) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3_5() + private boolean jj_3R_331() { Token xsp; xsp = jj_scanpos; - if (jj_3R_200()) jj_scanpos = xsp; - if (jj_scan_token(136)) return true; + if (jj_3R_333()) { + jj_scanpos = xsp; + if (jj_3R_334()) return true; + } return false; } @@ -9707,19 +9758,19 @@ private boolean jj_3_5() jj_la1_init_4(); } private static void jj_la1_init_0() { - jj_la1_0 = new int[] {0x0,0x0,0x0,0xe00000,0xe00000,0x0,0x0,0x0,0x200000,0x200000,0x0,0x0,0xc00000,0xc00000,0x200000,0x200000,0x200000,0x0,0x0,0x200000,0x200000,0x200000,0x0,0x200000,0x0,0x200000,0x200000,0x0,0x200000,0x0,0x0,0x200000,0x200000,0x200000,0x80000000,0x200000,0x0,0x200000,0x0,0x200000,0x200000,0x0,0x0,0x200000,0x200000,0x0,0x200000,0x0,0x0,0x0,0x0,0x200000,0x0,0x200000,0x0,0x200000,0x200000,0x0,0x200000,0x200000,0x200000,0x0,0x200000,0x200000,0x200000,0x0,0x0,0x200000,0x200000,0x200000,0x0,0x200000,0x0,0x0,0x0,0x0,0x200000,0xa8000000,0x200000,0x0,0x200000,0x0,0x200000,0x200000,0x200000,0x200000,0x0,0x200000,0x200000,0x0,0x0,0x200000,0x200000,0x200000,0x0,0x0,0x0,0x200000,0x80000000,0x200000,0x0,0x0,0x0,0x200000,0x18000000,0x18000000,0x18000000,0x200000,0x200000,0x200000,0x200000,0x18000000,0x80000000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x80000000,0x28000000,0x200000,0x200000,0x28200000,0x18000000,0xa8000000,0xa8000000,0xa8000000,0x200000,0x0,0x200000,0xa8000000,0x80000000,0x200000,0x200000,0x200000,0xa8000000,0x0,0x200000,0xa8000000,0x200000,0x28200000,0x200000,0x200000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x200000,0x3000000,0x200000,0x0,0x200000,0x3000000,0x200000,0x0,0x200000,0x200000,0x0,0x200000,0x200000,0x0,0x0,0x0,0x0,0x200000,0x0,0x0,0x200000,0x0,0x200000,0x18000000,0x200000,0x18000000,0x200000,0x200000,0x60000000,0x200000,0x60000000,0x200000,0x200000,0x60000000,0x200000,0x60000000,0x18000000,0x200000,0x18000000,0x0,0x200000,0x80000000,0x200000,0x200000,0x0,0x0,0x18000000,0x18000000,0x0,0x0,0x0,0x200000,0x0,0x200000,0x18000000,0x200000,0x200000,0x80000000,0x200000,0x200000,0x200000,0x200000,0x80000000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x18200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x80000000,0x200000,0x200000,0x18000000,0x0,0x18000000,0x200000,0x200000,0x18000000,0x200000,0x18200000,0x200000,0x200000,0x0,0x200000,0x18000000,0x0,0x200000,0x200000,0x200000,0x80000000,0x200000,0x200000,0x18000000,0x200000,0x200000,0x0,0x200000,0x0,0x200000,0x80000000,0x200000,0x0,0x0,}; + jj_la1_0 = new int[] {0x0,0x0,0x0,0xe00000,0xe00000,0x0,0x0,0x0,0x200000,0x200000,0x0,0x0,0xc00000,0xc00000,0x200000,0x200000,0x200000,0x0,0x0,0x200000,0x200000,0x200000,0x0,0x200000,0x0,0x200000,0x200000,0x0,0x200000,0x0,0x0,0x200000,0x200000,0x200000,0x80000000,0x200000,0x0,0x200000,0x0,0x200000,0x200000,0x0,0x0,0x200000,0x200000,0x0,0x200000,0x0,0x0,0x0,0x0,0x200000,0x0,0x200000,0x0,0x200000,0x200000,0x0,0x200000,0x200000,0x200000,0x0,0x200000,0x200000,0x200000,0x0,0x0,0x200000,0x200000,0x200000,0x0,0x200000,0x0,0x0,0x0,0x0,0x200000,0xa8000000,0x200000,0x0,0x200000,0x0,0x200000,0x200000,0x200000,0x200000,0x0,0x200000,0x200000,0x0,0x0,0x200000,0x200000,0x200000,0x0,0x0,0x0,0x200000,0x80000000,0x200000,0x0,0x0,0x0,0x200000,0x18000000,0x18000000,0x18000000,0x200000,0x200000,0x200000,0x200000,0x18000000,0x80000000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x80000000,0x28000000,0x200000,0x200000,0x28200000,0x18000000,0xa8000000,0xa8000000,0xa8000000,0x200000,0x0,0x200000,0xa8000000,0x80000000,0x200000,0x200000,0x200000,0xa8000000,0x0,0x200000,0xa8000000,0x200000,0x28200000,0x200000,0x200000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x200000,0x3000000,0x200000,0x0,0x200000,0x3000000,0x200000,0x0,0x200000,0x200000,0x0,0x200000,0x200000,0x0,0x0,0x0,0x0,0x200000,0x0,0x0,0x200000,0x0,0x200000,0x18000000,0x200000,0x18000000,0x200000,0x200000,0x60000000,0x200000,0x60000000,0x200000,0x200000,0x60000000,0x200000,0x60000000,0x18000000,0x200000,0x18000000,0x0,0x0,0x0,0x18000000,0x18000000,0x0,0x0,0x0,0x200000,0x0,0x200000,0x18000000,0x200000,0x200000,0x80000000,0x200000,0x200000,0x200000,0x200000,0x80000000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x18200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x80000000,0x200000,0x200000,0x18000000,0x0,0x18000000,0x200000,0x200000,0x18000000,0x200000,0x18200000,0x200000,0x200000,0x0,0x200000,0x18000000,0x0,0x200000,0x200000,0x200000,0x80000000,0x200000,0x200000,0x18000000,0x200000,0x200000,0x0,0x200000,0x0,0x200000,0x80000000,0x200000,0x80000000,0x200000,0x200000,0x200000,0x0,0x0,}; } private static void jj_la1_init_1() { - jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x9e,0x0,0x0,0x0,0xba28039e,0x0,0x0,0x0,0x0,0x0,0x9e,0x4000020,0x0,0x0,0x0,0x4000020,0x0,0x1000098,0x0,0x0,0x1000098,0x0,0xba28039e,0xba28039e,0x0,0x0,0x0,0x0,0x0,0x18,0x0,0x18,0x0,0x0,0x2,0x98,0x0,0x0,0x2,0x0,0x4,0x6,0x6,0x1000010,0x0,0x2,0x0,0x1000010,0x0,0x0,0x1000000,0x0,0x0,0x0,0x2000000,0x0,0x0,0x0,0xba28039e,0xba28039e,0x0,0x0,0x0,0x2,0x0,0x4,0x6,0x6,0x1000010,0x0,0x3bd099f,0x0,0x1000000,0x0,0x9e,0x0,0x0,0x0,0x0,0x200009e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2000000,0x2000000,0x200009e,0x0,0x0,0x0,0x2000000,0x2000000,0x200009e,0x0,0x0,0x0,0x9e,0x0,0x0,0x0,0x0,0x9e,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,0x0,0x1,0x0,0x3bd0001,0x3bd0001,0x3bd089f,0x0,0x100,0x0,0x3bd099f,0x0,0x0,0x0,0x0,0x3bd099f,0x20000,0x0,0x3bd099f,0x0,0x1,0x0,0x0,0xba080300,0xba080300,0xba080300,0xba080300,0xba28039e,0xb8000000,0xb8000000,0x20009e,0x20009e,0x20009e,0x0,0x0,0x1e000,0x0,0xbe,0x0,0x1e000,0x0,0xba28039e,0x0,0x0,0xbe,0x0,0x0,0x0,0x9e,0x2000000,0x300,0x0,0x0,0x2000000,0x0,0x0,0x0,0xbe,0x0,0xbe,0x0,0x0,0x10000,0x0,0x10000,0x0,0x0,0x10000,0x0,0x10000,0xfc0003be,0x0,0x0,0xf8000400,0x0,0x0,0x0,0x0,0x180000,0x41c03be,0xfc1c07be,0x0,0x0,0x0,0xf8000000,0x0,0x40003be,0x0,0xfc0003be,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,0x1000000,0x240000,0x0,0x0,0x0,0x1000000,0x0,0x0,0x0,0x0,0x240000,0x0,0x0,0xf8000000,0x0,0x0,0x0,0x0,0x0,0x0,0xf9000000,0x0,0x0,0x9e,0x0,0x9e,0x0,0x0,0x0,0x9e,0x300,}; + jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x9e,0x0,0x0,0x0,0xba28039e,0x0,0x0,0x0,0x0,0x0,0x9e,0x4000020,0x0,0x0,0x0,0x4000020,0x0,0x1000098,0x0,0x0,0x1000098,0x0,0xba28039e,0xba28039e,0x0,0x0,0x0,0x0,0x0,0x18,0x0,0x18,0x0,0x0,0x2,0x98,0x0,0x0,0x2,0x0,0x4,0x6,0x6,0x1000010,0x0,0x2,0x0,0x1000010,0x0,0x0,0x1000000,0x0,0x0,0x0,0x2000000,0x0,0x0,0x0,0xba28039e,0xba28039e,0x0,0x0,0x0,0x2,0x0,0x4,0x6,0x6,0x1000010,0x0,0x3bd099f,0x0,0x1000000,0x0,0x9e,0x0,0x0,0x0,0x0,0x200009e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2000000,0x2000000,0x200009e,0x0,0x0,0x0,0x2000000,0x2000000,0x200009e,0x0,0x0,0x0,0x9e,0x0,0x0,0x0,0x0,0x9e,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,0x0,0x1,0x0,0x3bd0001,0x3bd0001,0x3bd089f,0x0,0x100,0x0,0x3bd099f,0x0,0x0,0x0,0x0,0x3bd099f,0x20000,0x0,0x3bd099f,0x0,0x1,0x0,0x0,0xba080300,0xba080300,0xba080300,0xba080300,0xba28039e,0xb8000000,0xb8000000,0x20009e,0x20009e,0x20009e,0x0,0x0,0x1e000,0x0,0xbe,0x0,0x1e000,0x0,0xba28039e,0x0,0x0,0xbe,0x0,0x0,0x0,0x9e,0x2000000,0x300,0x0,0x0,0x2000000,0x0,0x0,0x0,0xbe,0x0,0xbe,0x0,0x0,0x10000,0x0,0x10000,0x0,0x0,0x10000,0x0,0x10000,0xfc0003be,0x0,0x0,0xf8000400,0x180000,0x41c03be,0xfc1c07be,0x0,0x0,0x0,0xf8000000,0x0,0x40003be,0x0,0xfc0003be,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,0x1000000,0x240000,0x0,0x0,0x0,0x1000000,0x0,0x0,0x0,0x0,0x240000,0x0,0x0,0xf8000000,0x0,0x0,0x0,0x0,0x0,0x0,0xf9000000,0x0,0x0,0x9e,0x0,0x9e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x9e,0x300,}; } private static void jj_la1_init_2() { - jj_la1_2 = new int[] {0x0,0x0,0x1000,0x0,0x0,0x40000000,0x80000000,0x0,0x0,0x0,0x2000,0x285c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x285c,0x285c,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,0x285c,0x285c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3fffc000,0x3fffc000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x80,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,0x85c,0x85c,0x85c,0x85c,0x85c,0x5c,0x5c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x85c,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x800,0x0,0x0,0x200,0x0,0x0,0x200,0x0,0x1c0,0x0,0x1c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x5ff,0x0,0x0,0x5ff,0x0,0x0,0x0,0x0,0x0,0x0,0x5ff,0x0,0x100,0x0,0x5ff,0x0,0x0,0x0,0x5ff,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,0x100,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18c,0x0,0x0,0x0,0x0,0x0,0x0,0x18c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; + jj_la1_2 = new int[] {0x0,0x0,0x1000,0x0,0x0,0x40000000,0x80000000,0x0,0x0,0x0,0x2000,0x285c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x285c,0x285c,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,0x285c,0x285c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3fffc000,0x3fffc000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x80,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,0x85c,0x85c,0x85c,0x85c,0x85c,0x5c,0x5c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x85c,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x800,0x0,0x0,0x200,0x0,0x0,0x200,0x0,0x1c0,0x0,0x1c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x5ff,0x0,0x0,0x5ff,0x0,0x0,0x5ff,0x0,0x100,0x0,0x5ff,0x0,0x0,0x0,0x5ff,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,0x100,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18c,0x0,0x0,0x0,0x0,0x0,0x0,0x18c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; } private static void jj_la1_init_3() { - jj_la1_3 = new int[] {0x80000000,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7df,0xa007df,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xa007df,0xa007df,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,0xa007df,0xa007df,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200400,0x0,0x40000000,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,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200400,0x0,0x200400,0x0,0x0,0x0,0x0,0x200400,0x0,0x0,0x200400,0x0,0x0,0x0,0x0,0xa00000,0xa00000,0xa00000,0xa00000,0xa00000,0x200000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x0,0x0,0x0,0x0,0x0,0x40400000,0x40400000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4f100000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7f100000,0x7f100000,0x0,0x0,0x4f000000,0x4f000000,0x0,0x100000,0x0,0x4f100000,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,0x20000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3f000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; + jj_la1_3 = new int[] {0x80000000,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7df,0xa007df,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xa007df,0xa007df,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,0xa007df,0xa007df,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200400,0x0,0x40000000,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,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200400,0x0,0x200400,0x0,0x0,0x0,0x0,0x200400,0x0,0x0,0x200400,0x0,0x0,0x0,0x0,0xa00000,0xa00000,0xa00000,0xa00000,0xa00000,0x200000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x0,0x0,0x0,0x0,0x0,0x40400000,0x40400000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4f100000,0x0,0x0,0x0,0x0,0x7f100000,0x7f100000,0x0,0x0,0x4f000000,0x4f000000,0x0,0x100000,0x0,0x4f100000,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,0x20000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3f000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; } private static void jj_la1_init_4() { - jj_la1_4 = new int[] {0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x100,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,0x100,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1fe,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,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1fe,0x1fe,0x1fe,0x0,0x0,0x0,0x1fe,0x0,0x0,0x0,0x0,0x1fe,0x0,0x0,0x1fe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x280,0x0,0x280,0x0,0x0,0x280,0x0,0x280,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,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x0,0x8,0x0,0x0,0x0,0x0,0x0,}; + jj_la1_4 = new int[] {0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x100,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,0x100,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1fe,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,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1fe,0x1fe,0x1fe,0x0,0x0,0x0,0x1fe,0x0,0x0,0x0,0x0,0x1fe,0x0,0x0,0x1fe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x280,0x0,0x280,0x0,0x0,0x280,0x0,0x280,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,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; } final private JJCalls[] jj_2_rtns = new JJCalls[15]; private boolean jj_rescan = false; diff --git a/org/w3c/css/parser/analyzer/CssParserTokenManager.java b/org/w3c/css/parser/analyzer/CssParserTokenManager.java index 0beb38cd7..d082ce5e6 100644 --- a/org/w3c/css/parser/analyzer/CssParserTokenManager.java +++ b/org/w3c/css/parser/analyzer/CssParserTokenManager.java @@ -38,6 +38,7 @@ import org.w3c.css.values.CssSemitone; import org.w3c.css.values.CssTypes; import org.w3c.css.values.CssVolume; +import org.w3c.css.values.CssVariable; import org.w3c.css.properties.css.CssProperty; import org.w3c.css.parser.CssError; import org.w3c.css.parser.CssErrorToken; From 674906ba5b8c2f859ea5cadd9503a9baaa930db9 Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Sun, 29 Aug 2021 18:47:33 +0200 Subject: [PATCH 06/40] fix type when setting new exp --- org/w3c/css/values/CssVariable.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/org/w3c/css/values/CssVariable.java b/org/w3c/css/values/CssVariable.java index 948647f2b..b3bd6aa12 100644 --- a/org/w3c/css/values/CssVariable.java +++ b/org/w3c/css/values/CssVariable.java @@ -77,8 +77,8 @@ public void set(String s, ApplContext ac) throws InvalidParamException { public void set(CssExpression expression) { if (expression != null) { if (expression.getCount() == 1) { - CssValue v = expression.getValue(); - computed_type = v.getType(); + _exp_value = expression.getValue(); + computed_type = _exp_value.getType(); } } this.exp = expression; From 7fde8eeebb9c1d37b73aa6435e60ebb90e1a9ee4 Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Sun, 29 Aug 2021 19:16:36 +0200 Subject: [PATCH 07/40] accessor to get the default value when doing the extra check after parsing --- org/w3c/css/values/CssVariable.java | 42 +++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/org/w3c/css/values/CssVariable.java b/org/w3c/css/values/CssVariable.java index b3bd6aa12..e9f3138a9 100644 --- a/org/w3c/css/values/CssVariable.java +++ b/org/w3c/css/values/CssVariable.java @@ -191,4 +191,46 @@ public boolean equals(Object value) { this.variable_name.equals(((CssVariable) value).variable_name)); } + // extras for conflict resolution + public CssLength getLength() throws InvalidParamException { + if (computed_type != CssTypes.CSS_LENGTH) { + throw new ClassCastException("unknown"); + } + return _exp_value.getLength(); + } + + public CssPercentage getPercentage() throws InvalidParamException { + if (computed_type != CssTypes.CSS_PERCENTAGE) { + throw new ClassCastException("unknown"); + } + return _exp_value.getPercentage(); + } + + public CssNumber getNumber() throws InvalidParamException { + if (computed_type != CssTypes.CSS_NUMBER) { + throw new ClassCastException("unknown"); + } + return _exp_value.getNumber(); + } + + public CssTime getTime() throws InvalidParamException { + if (computed_type != CssTypes.CSS_TIME) { + throw new ClassCastException("unknown"); + } + return _exp_value.getTime(); + } + + public CssAngle getAngle() throws InvalidParamException { + if (computed_type != CssTypes.CSS_ANGLE) { + throw new ClassCastException("unknown"); + } + return _exp_value.getAngle(); + } + + public CssFrequency getFrequency() throws InvalidParamException { + if (computed_type != CssTypes.CSS_FREQUENCY) { + throw new ClassCastException("unknown"); + } + return _exp_value.getFrequency(); + } } From 9d9ca2971029d2d8fba409ad0150178d7a9eaa4a Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Sun, 29 Aug 2021 20:58:39 +0200 Subject: [PATCH 08/40] extract numerical value only when it is a true number --- org/w3c/css/values/CssRatio.java | 43 ++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/org/w3c/css/values/CssRatio.java b/org/w3c/css/values/CssRatio.java index 5da83d96d..02fc6b5b4 100644 --- a/org/w3c/css/values/CssRatio.java +++ b/org/w3c/css/values/CssRatio.java @@ -41,31 +41,48 @@ public CssRatio(BigDecimal w, BigDecimal h) { public CssRatio(BigDecimal w, CssValue gh) { this.w = w; - try { - this.h = gh.getNumber().getBigDecimalValue(); - } catch (Exception ex) { + if (gh.getRawType() == CssTypes.CSS_NUMBER) { + try { + this.h = gh.getNumber().getBigDecimalValue(); + } catch (Exception ex) { + this.gh = gh; + } + } else { this.gh = gh; } } public CssRatio(CssValue gw, BigDecimal h) { - try { - this.w = gw.getNumber().getBigDecimalValue(); - } catch (Exception ex) { + if (gw.getRawType() == CssTypes.CSS_NUMBER) { + try { + this.w = gw.getNumber().getBigDecimalValue(); + } catch (Exception ex) { + this.gw = gw; + } + } else { this.gw = gw; } this.h = h; } public CssRatio(CssValue gw, CssValue gh) { - try { - this.w = gw.getNumber().getBigDecimalValue(); - } catch (Exception ex) { + if (gw.getRawType() == CssTypes.CSS_NUMBER) { + try { + this.w = gw.getNumber().getBigDecimalValue(); + } catch (Exception ex) { + this.gw = gw; + } + } else { this.gw = gw; } - try { - this.h = gh.getNumber().getBigDecimalValue(); - } catch (Exception ex) { + + if (gh.getRawType() == CssTypes.CSS_NUMBER) { + try { + this.h = gh.getNumber().getBigDecimalValue(); + } catch (Exception ex) { + this.gh = gh; + } + } else { this.gh = gh; } } @@ -152,7 +169,7 @@ public boolean equals(Object value) { return (ratio.compareTo(other_ratio) == 0); } catch (ClassCastException cce) { return false; - } catch (Exception ex) { + } catch (Exception ex) { return false; } } From 518f593478da46ace14fb40718427e9b9697576f Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Mon, 30 Aug 2021 14:04:16 +0200 Subject: [PATCH 09/40] care for '--' identifier, see #298 --- org/w3c/css/parser/analyzer/CssParser.jj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org/w3c/css/parser/analyzer/CssParser.jj b/org/w3c/css/parser/analyzer/CssParser.jj index 72f1a79f6..49f371e87 100644 --- a/org/w3c/css/parser/analyzer/CssParser.jj +++ b/org/w3c/css/parser/analyzer/CssParser.jj @@ -591,7 +591,7 @@ TOKEN : TOKEN : { - ( )* > + ( ( )* )? > } From d93aab4a381289f055ec3f90e7402afe41c84ab7 Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Mon, 30 Aug 2021 14:04:32 +0200 Subject: [PATCH 10/40] regen --- org/w3c/css/parser/analyzer/CssParserTokenManager.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/org/w3c/css/parser/analyzer/CssParserTokenManager.java b/org/w3c/css/parser/analyzer/CssParserTokenManager.java index d082ce5e6..7805f09a1 100644 --- a/org/w3c/css/parser/analyzer/CssParserTokenManager.java +++ b/org/w3c/css/parser/analyzer/CssParserTokenManager.java @@ -2770,8 +2770,11 @@ else if (curChar == 62) { jjCheckNAddStates(1135, 1141); } break; case 429: - if (curChar == 45) - { jjAddStates(1142, 1143); } + if (curChar != 45) + break; + if (kind > 43) + kind = 43; + { jjAddStates(1142, 1143); } break; case 431: if ((0x3ff200000000000L & l) == 0L) From 9a252a99966b1694cead8171118d06163424e692 Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Mon, 30 Aug 2021 14:05:18 +0200 Subject: [PATCH 11/40] more genericity in treating type-indefinite values --- org/w3c/css/values/CssHashIdent.java | 6 ++++++ org/w3c/css/values/CssIdent.java | 6 ++++++ org/w3c/css/values/CssImage.java | 12 ++++++------ org/w3c/css/values/CssValue.java | 8 ++++++++ org/w3c/css/values/CssVariable.java | 22 ++++++++++++++++++++++ 5 files changed, 48 insertions(+), 6 deletions(-) diff --git a/org/w3c/css/values/CssHashIdent.java b/org/w3c/css/values/CssHashIdent.java index d8482cd02..f00d1e8d4 100644 --- a/org/w3c/css/values/CssHashIdent.java +++ b/org/w3c/css/values/CssHashIdent.java @@ -7,6 +7,7 @@ package org.w3c.css.values; import org.w3c.css.util.ApplContext; +import org.w3c.css.util.InvalidParamException; /** * @version $Revision$ @@ -117,4 +118,9 @@ public boolean hasBackslash9Hack() { } private String value; + + @Override + public CssHashIdent getHashIdent() throws InvalidParamException { + return this; + } } diff --git a/org/w3c/css/values/CssIdent.java b/org/w3c/css/values/CssIdent.java index 757c67df1..9f98bf7ae 100644 --- a/org/w3c/css/values/CssIdent.java +++ b/org/w3c/css/values/CssIdent.java @@ -7,6 +7,7 @@ package org.w3c.css.values; import org.w3c.css.util.ApplContext; +import org.w3c.css.util.InvalidParamException; import java.util.HashMap; @@ -151,5 +152,10 @@ public boolean hasBackslash9Hack() { return value.endsWith("\\000009"); } + @Override + public CssIdent getIdent() throws InvalidParamException { + return this; + } + private String value; } diff --git a/org/w3c/css/values/CssImage.java b/org/w3c/css/values/CssImage.java index 5c0cad443..11fdff632 100644 --- a/org/w3c/css/values/CssImage.java +++ b/org/w3c/css/values/CssImage.java @@ -570,16 +570,16 @@ private final ArrayList parseColorStops(CssExpression expression, case CssTypes.CSS_HASH_IDENT: stopcol = new CssColor(); - stopcol.setShortRGBColor(ac, val.toString()); + stopcol.setShortRGBColor(ac, val.getHashIdent().toString()); stop1 = stopcol; break; case CssTypes.CSS_IDENT: - if (CssColorCSS3.currentColor.equals((CssIdent) val)) { + if (CssColorCSS3.currentColor.equals(val.getIdent())) { stop1 = CssColorCSS3.currentColor; break; } stopcol = new CssColor(); - stopcol.setIdentColor(ac, val.toString()); + stopcol.setIdentColor(ac, val.getIdent().toString()); stop1 = stopcol; break; case CssTypes.CSS_COLOR: @@ -614,7 +614,7 @@ private final ArrayList parseColorStops(CssExpression expression, "color-stop", ac); } stopcol = new CssColor(); - stopcol.setShortRGBColor(ac, val.toString()); + stopcol.setShortRGBColor(ac, val.getHashIdent().toString()); // TODO we rewrite putting color first, should we do that? stop = new ArrayList(2); stop.add(stopcol); @@ -626,11 +626,11 @@ private final ArrayList parseColorStops(CssExpression expression, throw new InvalidParamException("value", val.toString(), "color-stop", ac); } - if (CssColorCSS3.currentColor.equals((CssIdent) val)) { + if (CssColorCSS3.currentColor.equals(val.getIdent())) { stop2 = CssColorCSS3.currentColor; } else { stopcol = new CssColor(); - stopcol.setIdentColor(ac, val.toString()); + stopcol.setIdentColor(ac, val.getIdent().toString()); stop2 = stopcol; } // TODO we rewrite putting color first, should we do that? diff --git a/org/w3c/css/values/CssValue.java b/org/w3c/css/values/CssValue.java index 157f54022..1289b4f0d 100644 --- a/org/w3c/css/values/CssValue.java +++ b/org/w3c/css/values/CssValue.java @@ -86,6 +86,14 @@ public CssCheckableValue getCheckableValue() throws InvalidParamException { throw new ClassCastException("unknown"); } + public CssIdent getIdent() throws InvalidParamException { + throw new ClassCastException("unknown"); + } + + public CssHashIdent getHashIdent() throws InvalidParamException { + throw new ClassCastException("unknown"); + } + /** * Does this value contain a "\9" CSS declaration hack? */ diff --git a/org/w3c/css/values/CssVariable.java b/org/w3c/css/values/CssVariable.java index e9f3138a9..788ed7eb3 100644 --- a/org/w3c/css/values/CssVariable.java +++ b/org/w3c/css/values/CssVariable.java @@ -192,6 +192,7 @@ public boolean equals(Object value) { } // extras for conflict resolution + @Override public CssLength getLength() throws InvalidParamException { if (computed_type != CssTypes.CSS_LENGTH) { throw new ClassCastException("unknown"); @@ -199,6 +200,7 @@ public CssLength getLength() throws InvalidParamException { return _exp_value.getLength(); } + @Override public CssPercentage getPercentage() throws InvalidParamException { if (computed_type != CssTypes.CSS_PERCENTAGE) { throw new ClassCastException("unknown"); @@ -206,6 +208,7 @@ public CssPercentage getPercentage() throws InvalidParamException { return _exp_value.getPercentage(); } + @Override public CssNumber getNumber() throws InvalidParamException { if (computed_type != CssTypes.CSS_NUMBER) { throw new ClassCastException("unknown"); @@ -213,6 +216,7 @@ public CssNumber getNumber() throws InvalidParamException { return _exp_value.getNumber(); } + @Override public CssTime getTime() throws InvalidParamException { if (computed_type != CssTypes.CSS_TIME) { throw new ClassCastException("unknown"); @@ -220,6 +224,7 @@ public CssTime getTime() throws InvalidParamException { return _exp_value.getTime(); } + @Override public CssAngle getAngle() throws InvalidParamException { if (computed_type != CssTypes.CSS_ANGLE) { throw new ClassCastException("unknown"); @@ -227,10 +232,27 @@ public CssAngle getAngle() throws InvalidParamException { return _exp_value.getAngle(); } + @Override public CssFrequency getFrequency() throws InvalidParamException { if (computed_type != CssTypes.CSS_FREQUENCY) { throw new ClassCastException("unknown"); } return _exp_value.getFrequency(); } + + @Override + public CssIdent getIdent() throws InvalidParamException { + if (computed_type != CssTypes.CSS_IDENT) { + throw new ClassCastException("unknown"); + } + return _exp_value.getIdent(); + } + + @Override + public CssHashIdent getHashIdent() throws InvalidParamException { + if (computed_type != CssTypes.CSS_HASH_IDENT) { + throw new ClassCastException("unknown"); + } + return _exp_value.getHashIdent(); + } } From e524b919af6ac0aff16ffa07b03a94906a9ef92d Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Mon, 30 Aug 2021 16:24:13 +0200 Subject: [PATCH 12/40] use variable instead of mitting results --- org/w3c/css/parser/analyzer/CssParser.jj | 52 ++++++++++++++---------- 1 file changed, 30 insertions(+), 22 deletions(-) diff --git a/org/w3c/css/parser/analyzer/CssParser.jj b/org/w3c/css/parser/analyzer/CssParser.jj index 49f371e87..65d86e9f9 100644 --- a/org/w3c/css/parser/analyzer/CssParser.jj +++ b/org/w3c/css/parser/analyzer/CssParser.jj @@ -3153,26 +3153,34 @@ CssCheckableValue mathproduct() : boolean concat = false; } { - ( v1=mathunit() { c = new CssCalc(ac, v1); } ( LOOKAHEAD(2) ( )* - ( ( o="*" ( )* v2=mathunit() ) - | - ( o=
( )* ( v2=calcnumbervalue() - | n= ( )* ( ( )* expr() )* ( )* { c.markCssVariable(); } ) - ) - ) { - if (concat) { - nc = new CssCalc(ac, c); - if (c.hasCssVariable()) { - nc.markCssVariable(); - } - nc.addRightSide(o.image, v2); - c = nc; - } else { - c.addRightSide(o.image, v2); - concat = true; - } - } - )* + ( v1=mathunit() { c = new CssCalc(ac, v1); } + ( LOOKAHEAD(2) ( )* + ( ( o="*" ( )* v2=mathunit() ) + | + ( o=
( )* + ( v2=calcnumbervalue() + | + v2=functionvar() { + if (v2.getType() == CssTypes.CSS_VARIABLE) { + c.markCssVariable(); + } + } + ) + ) + ) { + if (concat) { + nc = new CssCalc(ac, c); + if (c.hasCssVariable()) { + nc.markCssVariable(); + } + nc.addRightSide(o.image, v2); + c = nc; + } else { + c.addRightSide(o.image, v2); + concat = true; + } + } + )* ) { return c; } } @@ -3268,7 +3276,7 @@ char operator = ' '; | v=mathmin() | v=mathclamp() | v=attr() - | n= ( )* ( ( )* expr() )* ( )* { CssCalc c = new CssCalc(); c.markCssVariable(); return c; } + | v=functionvar() ) { return v; } @@ -3294,7 +3302,7 @@ CssExpression exp = null; } } -CssValue functionvar() : +CssCheckableValue functionvar() : { Token n; CssExpression exp = null; CssExpression e; From 14d8020586af4ba4dfc14a082442b5fc9d6fd74c Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Mon, 30 Aug 2021 16:24:26 +0200 Subject: [PATCH 13/40] regen --- org/w3c/css/parser/analyzer/CssParser.java | 1310 +++++++++----------- 1 file changed, 590 insertions(+), 720 deletions(-) diff --git a/org/w3c/css/parser/analyzer/CssParser.java b/org/w3c/css/parser/analyzer/CssParser.java index 092b7e90e..802ad6b64 100644 --- a/org/w3c/css/parser/analyzer/CssParser.java +++ b/org/w3c/css/parser/analyzer/CssParser.java @@ -6797,88 +6797,35 @@ final public boolean prio() throws ParseException { break; } case FUNCTIONVAR:{ - n = jj_consume_token(FUNCTIONVAR); - label_170: - while (true) { - switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { - case S:{ - ; - break; - } - default: - jj_la1[247] = jj_gen; - break label_170; - } - jj_consume_token(S); - } - jj_consume_token(CUSTOM_PROPERTY_NAME); - label_171: - while (true) { - switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { - case COMMA:{ - ; - break; - } - default: - jj_la1[248] = jj_gen; - break label_171; - } - jj_consume_token(COMMA); - label_172: - while (true) { - switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { - case S:{ - ; - break; - } - default: - jj_la1[249] = jj_gen; - break label_172; - } - jj_consume_token(S); - } - expr(); - } - label_173: - while (true) { - switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { - case S:{ - ; - break; - } - default: - jj_la1[250] = jj_gen; - break label_173; - } - jj_consume_token(S); - } - jj_consume_token(LPARAN); -c.markCssVariable(); + v2 = functionvar(); +if (v2.getType() == CssTypes.CSS_VARIABLE) { + c.markCssVariable(); + } break; } default: - jj_la1[251] = jj_gen; + jj_la1[247] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; } default: - jj_la1[252] = jj_gen; + jj_la1[248] = jj_gen; jj_consume_token(-1); throw new ParseException(); } if (concat) { - nc = new CssCalc(ac, c); - if (c.hasCssVariable()) { - nc.markCssVariable(); - } - nc.addRightSide(o.image, v2); - c = nc; - } else { - c.addRightSide(o.image, v2); - concat = true; - } + nc = new CssCalc(ac, c); + if (c.hasCssVariable()) { + nc.markCssVariable(); + } + nc.addRightSide(o.image, v2); + c = nc; + } else { + c.addRightSide(o.image, v2); + concat = true; + } } {if ("" != null) return c;} throw new Error("Missing return statement in function"); @@ -6898,7 +6845,7 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[253] = jj_gen; + jj_la1[249] = jj_gen; ; } n = jj_consume_token(NUMBER); @@ -6907,7 +6854,7 @@ final public boolean prio() throws ParseException { } case RPARAN:{ jj_consume_token(RPARAN); - label_174: + label_170: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6915,13 +6862,13 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[254] = jj_gen; - break label_174; + jj_la1[250] = jj_gen; + break label_170; } jj_consume_token(S); } v = calcnumbersum(); - label_175: + label_171: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6929,8 +6876,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[255] = jj_gen; - break label_175; + jj_la1[251] = jj_gen; + break label_171; } jj_consume_token(S); } @@ -6939,7 +6886,7 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[256] = jj_gen; + jj_la1[252] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -6956,12 +6903,12 @@ final public boolean prio() throws ParseException { int nb_pre_sp; v1 = calcnumberproduct(); c = new CssCalc(ac, v1); nb_pre_sp = 0; - label_176: + label_172: while (true) { if (jj_2_13(2)) { ; } else { - break label_176; + break label_172; } switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case PLUS:{ @@ -6970,7 +6917,7 @@ final public boolean prio() throws ParseException { } case S: case MINUS:{ - label_177: + label_173: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -6978,8 +6925,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[257] = jj_gen; - break label_177; + jj_la1[253] = jj_gen; + break label_173; } jj_consume_token(S); nb_pre_sp++; @@ -6988,14 +6935,14 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[258] = jj_gen; + jj_la1[254] = jj_gen; jj_consume_token(-1); throw new ParseException(); } if (o.image.length() < 2 && nb_pre_sp == 0) { {if (true) throw new ParseException(ac.getMsg().getString("parser.calcwhitespace"));} } - label_178: + label_174: while (true) { jj_consume_token(S); switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { @@ -7004,8 +6951,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[259] = jj_gen; - break label_178; + jj_la1[255] = jj_gen; + break label_174; } } v2 = calcnumberproduct(); @@ -7031,14 +6978,14 @@ final public boolean prio() throws ParseException { boolean concat = false; v1 = calcnumbervalue(); c = new CssCalc(ac, v1); - label_179: + label_175: while (true) { if (jj_2_14(2)) { ; } else { - break label_179; + break label_175; } - label_180: + label_176: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -7046,8 +6993,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[260] = jj_gen; - break label_180; + jj_la1[256] = jj_gen; + break label_176; } jj_consume_token(S); } @@ -7061,11 +7008,11 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[261] = jj_gen; + jj_la1[257] = jj_gen; jj_consume_token(-1); throw new ParseException(); } - label_181: + label_177: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -7073,8 +7020,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[262] = jj_gen; - break label_181; + jj_la1[258] = jj_gen; + break label_177; } jj_consume_token(S); } @@ -7114,7 +7061,7 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[263] = jj_gen; + jj_la1[259] = jj_gen; ; } switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { @@ -7164,7 +7111,7 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[264] = jj_gen; + jj_la1[260] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -7172,7 +7119,7 @@ final public boolean prio() throws ParseException { } case RPARAN:{ jj_consume_token(RPARAN); - label_182: + label_178: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -7180,13 +7127,13 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[265] = jj_gen; - break label_182; + jj_la1[261] = jj_gen; + break label_178; } jj_consume_token(S); } v = mathsum(); - label_183: + label_179: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -7194,8 +7141,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[266] = jj_gen; - break label_183; + jj_la1[262] = jj_gen; + break label_179; } jj_consume_token(S); } @@ -7224,67 +7171,11 @@ final public boolean prio() throws ParseException { break; } case FUNCTIONVAR:{ - n = jj_consume_token(FUNCTIONVAR); - label_184: - while (true) { - switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { - case S:{ - ; - break; - } - default: - jj_la1[267] = jj_gen; - break label_184; - } - jj_consume_token(S); - } - jj_consume_token(CUSTOM_PROPERTY_NAME); - label_185: - while (true) { - switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { - case COMMA:{ - ; - break; - } - default: - jj_la1[268] = jj_gen; - break label_185; - } - jj_consume_token(COMMA); - label_186: - while (true) { - switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { - case S:{ - ; - break; - } - default: - jj_la1[269] = jj_gen; - break label_186; - } - jj_consume_token(S); - } - expr(); - } - label_187: - while (true) { - switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { - case S:{ - ; - break; - } - default: - jj_la1[270] = jj_gen; - break label_187; - } - jj_consume_token(S); - } - jj_consume_token(LPARAN); -CssCalc c = new CssCalc(); c.markCssVariable(); {if ("" != null) return c;} + v = functionvar(); break; } default: - jj_la1[271] = jj_gen; + jj_la1[263] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -7296,7 +7187,7 @@ final public boolean prio() throws ParseException { Token n = null; CssExpression exp = null; jj_consume_token(FUNCTIONATTR); - label_188: + label_180: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -7304,13 +7195,13 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[272] = jj_gen; - break label_188; + jj_la1[264] = jj_gen; + break label_180; } jj_consume_token(S); } n = ident(); - label_189: + label_181: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -7318,8 +7209,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[273] = jj_gen; - break label_189; + jj_la1[265] = jj_gen; + break label_181; } jj_consume_token(S); } @@ -7346,12 +7237,12 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[274] = jj_gen; + jj_la1[266] = jj_gen; jj_consume_token(-1); throw new ParseException(); } setValue(new CssIdent(), exp, ' ', n, IDENT); - label_190: + label_182: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -7359,22 +7250,22 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[275] = jj_gen; - break label_190; + jj_la1[267] = jj_gen; + break label_182; } jj_consume_token(S); } break; } default: - jj_la1[276] = jj_gen; + jj_la1[268] = jj_gen; ; } switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case COMMA:{ jj_consume_token(COMMA); exp.setOperator(','); - label_191: + label_183: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -7382,8 +7273,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[277] = jj_gen; - break label_191; + jj_la1[269] = jj_gen; + break label_183; } jj_consume_token(S); } @@ -7391,7 +7282,7 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[278] = jj_gen; + jj_la1[270] = jj_gen; ; } jj_consume_token(LPARAN); @@ -7401,12 +7292,12 @@ final public boolean prio() throws ParseException { throw new Error("Missing return statement in function"); } - final public CssValue functionvar() throws ParseException {Token n; + final public CssCheckableValue functionvar() throws ParseException {Token n; CssExpression exp = null; CssExpression e; CssVariable var; jj_consume_token(FUNCTIONVAR); - label_192: + label_184: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -7414,14 +7305,14 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[279] = jj_gen; - break label_192; + jj_la1[271] = jj_gen; + break label_184; } jj_consume_token(S); } n = jj_consume_token(CUSTOM_PROPERTY_NAME); var = new CssVariable(ac, convertIdent(n.image)); - label_193: + label_185: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case COMMA:{ @@ -7429,11 +7320,11 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[280] = jj_gen; - break label_193; + jj_la1[272] = jj_gen; + break label_185; } jj_consume_token(COMMA); - label_194: + label_186: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -7441,8 +7332,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[281] = jj_gen; - break label_194; + jj_la1[273] = jj_gen; + break label_186; } jj_consume_token(S); } @@ -7458,7 +7349,7 @@ final public boolean prio() throws ParseException { } } } - label_195: + label_187: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -7466,8 +7357,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[282] = jj_gen; - break label_195; + jj_la1[274] = jj_gen; + break label_187; } jj_consume_token(S); } @@ -7486,7 +7377,7 @@ final public boolean prio() throws ParseException { CssExpression exp; CssColor color = new CssColor(); n = jj_consume_token(FUNCTION); - label_196: + label_188: while (true) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case S:{ @@ -7494,8 +7385,8 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[283] = jj_gen; - break label_196; + jj_la1[275] = jj_gen; + break label_188; } jj_consume_token(S); } @@ -7581,7 +7472,7 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[284] = jj_gen; + jj_la1[276] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -7613,7 +7504,7 @@ final public boolean prio() throws ParseException { break; } default: - jj_la1[285] = jj_gen; + jj_la1[277] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -7997,11 +7888,11 @@ private boolean jj_3_2() xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } - if (jj_3R_197()) return true; + if (jj_3R_189()) return true; return false; } - private boolean jj_3R_230() + private boolean jj_3R_222() { Token xsp; xsp = jj_scanpos; @@ -8009,19 +7900,19 @@ private boolean jj_3R_230() jj_scanpos = xsp; if (jj_3_3()) { jj_scanpos = xsp; - if (jj_3R_295()) return true; + if (jj_3R_288()) return true; } } return false; } - private boolean jj_3R_326() + private boolean jj_3R_318() { if (jj_scan_token(PLUS)) return true; return false; } - private boolean jj_3R_337() + private boolean jj_3R_329() { if (jj_scan_token(COMMA)) return true; Token xsp; @@ -8029,28 +7920,28 @@ private boolean jj_3R_337() xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } - if (jj_3R_327()) return true; + if (jj_3R_319()) return true; return false; } - private boolean jj_3R_325() + private boolean jj_3R_317() { if (jj_scan_token(MINUS)) return true; return false; } - private boolean jj_3R_297() + private boolean jj_3R_290() { Token xsp; xsp = jj_scanpos; - if (jj_3R_325()) { + if (jj_3R_317()) { jj_scanpos = xsp; - if (jj_3R_326()) return true; + if (jj_3R_318()) return true; } return false; } - private boolean jj_3R_299() + private boolean jj_3R_292() { if (jj_scan_token(FUNCTIONMAX)) return true; Token xsp; @@ -8058,27 +7949,20 @@ private boolean jj_3R_299() xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } - if (jj_3R_327()) return true; + if (jj_3R_319()) return true; while (true) { xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } while (true) { xsp = jj_scanpos; - if (jj_3R_336()) { jj_scanpos = xsp; break; } + if (jj_3R_328()) { jj_scanpos = xsp; break; } } if (jj_scan_token(LPARAN)) return true; return false; } - private boolean jj_3R_324() - { - if (jj_3R_331()) return true; - if (jj_scan_token(COLON)) return true; - return false; - } - - private boolean jj_3R_305() + private boolean jj_3R_297() { Token xsp; xsp = jj_scanpos; @@ -8089,24 +7973,39 @@ private boolean jj_3R_305() return false; } - private boolean jj_3R_213() + private boolean jj_3R_316() + { + if (jj_3R_323()) return true; + if (jj_scan_token(COLON)) return true; + return false; + } + + private boolean jj_3R_205() { - if (jj_3R_230()) return true; + if (jj_3R_222()) return true; return false; } - private boolean jj_3R_197() + private boolean jj_3R_320() + { + if (jj_3R_195()) return true; + if (jj_scan_token(EQ)) return true; + if (jj_scan_token(NUMBER)) return true; + return false; + } + + private boolean jj_3R_189() { Token xsp; xsp = jj_scanpos; - if (jj_3R_212()) { + if (jj_3R_204()) { jj_scanpos = xsp; - if (jj_3R_213()) return true; + if (jj_3R_205()) return true; } return false; } - private boolean jj_3R_212() + private boolean jj_3R_204() { if (jj_scan_token(NOT)) return true; Token xsp; @@ -8114,11 +8013,11 @@ private boolean jj_3R_212() xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } - if (jj_3R_230()) return true; + if (jj_3R_222()) return true; return false; } - private boolean jj_3R_300() + private boolean jj_3R_293() { if (jj_scan_token(FUNCTIONMIN)) return true; Token xsp; @@ -8126,34 +8025,26 @@ private boolean jj_3R_300() xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } - if (jj_3R_327()) return true; + if (jj_3R_319()) return true; while (true) { xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } while (true) { xsp = jj_scanpos; - if (jj_3R_337()) { jj_scanpos = xsp; break; } + if (jj_3R_329()) { jj_scanpos = xsp; break; } } if (jj_scan_token(LPARAN)) return true; return false; } - private boolean jj_3R_328() - { - if (jj_3R_203()) return true; - if (jj_scan_token(EQ)) return true; - if (jj_scan_token(NUMBER)) return true; - return false; - } - private boolean jj_3_1() { - if (jj_3R_197()) return true; + if (jj_3R_189()) return true; return false; } - private boolean jj_3R_218() + private boolean jj_3R_210() { if (jj_scan_token(COMMA)) return true; Token xsp; @@ -8164,33 +8055,33 @@ private boolean jj_3R_218() return false; } - private boolean jj_3R_201() + private boolean jj_3R_193() { Token xsp; xsp = jj_scanpos; - if (jj_3R_218()) jj_scanpos = xsp; + if (jj_3R_210()) jj_scanpos = xsp; return false; } - private boolean jj_3R_285() + private boolean jj_3R_277() { if (jj_scan_token(UNICODERANGE)) return true; return false; } - private boolean jj_3R_284() + private boolean jj_3R_276() { if (jj_scan_token(URL)) return true; return false; } - private boolean jj_3R_283() + private boolean jj_3R_275() { - if (jj_3R_305()) return true; + if (jj_3R_297()) return true; return false; } - private boolean jj_3R_329() + private boolean jj_3R_321() { if (jj_scan_token(NUMBER)) return true; Token xsp; @@ -8207,37 +8098,44 @@ private boolean jj_3R_329() return false; } - private boolean jj_3R_281() + private boolean jj_3R_273() { if (jj_scan_token(STRING)) return true; return false; } - private boolean jj_3R_282() + private boolean jj_3R_274() { - if (jj_3R_203()) return true; + if (jj_3R_195()) return true; return false; } - private boolean jj_3R_312() + private boolean jj_3R_304() { - if (jj_3R_301()) return true; + if (jj_3R_294()) return true; return false; } - private boolean jj_3R_222() + private boolean jj_3_15() + { + if (jj_3R_203()) return true; + if (jj_scan_token(LPARAN)) return true; + return false; + } + + private boolean jj_3R_214() { Token xsp; xsp = jj_scanpos; - if (jj_3R_281()) { + if (jj_3R_273()) { jj_scanpos = xsp; - if (jj_3R_282()) { + if (jj_3R_274()) { jj_scanpos = xsp; - if (jj_3R_283()) { + if (jj_3R_275()) { jj_scanpos = xsp; - if (jj_3R_284()) { + if (jj_3R_276()) { jj_scanpos = xsp; - if (jj_3R_285()) return true; + if (jj_3R_277()) return true; } } } @@ -8249,43 +8147,43 @@ private boolean jj_3R_222() return false; } - private boolean jj_3R_311() + private boolean jj_3R_303() { - if (jj_3R_300()) return true; + if (jj_3R_293()) return true; return false; } - private boolean jj_3R_310() + private boolean jj_3R_302() { - if (jj_3R_299()) return true; + if (jj_3R_292()) return true; return false; } - private boolean jj_3R_309() + private boolean jj_3R_301() { - if (jj_3R_298()) return true; + if (jj_3R_291()) return true; return false; } - private boolean jj_3R_308() + private boolean jj_3R_300() { - if (jj_3R_304()) return true; + if (jj_3R_296()) return true; return false; } - private boolean jj_3R_280() + private boolean jj_3R_272() { Token xsp; xsp = jj_scanpos; - if (jj_3R_308()) { + if (jj_3R_300()) { jj_scanpos = xsp; - if (jj_3R_309()) { + if (jj_3R_301()) { jj_scanpos = xsp; - if (jj_3R_310()) { + if (jj_3R_302()) { jj_scanpos = xsp; - if (jj_3R_311()) { + if (jj_3R_303()) { jj_scanpos = xsp; - if (jj_3R_312()) return true; + if (jj_3R_304()) return true; } } } @@ -8293,197 +8191,190 @@ private boolean jj_3R_280() return false; } - private boolean jj_3_15() - { - if (jj_3R_211()) return true; - if (jj_scan_token(LPARAN)) return true; - return false; - } - - private boolean jj_3R_279() + private boolean jj_3R_271() { if (jj_scan_token(DIMEN_9)) return true; return false; } - private boolean jj_3R_278() + private boolean jj_3R_270() { if (jj_scan_token(IMPORTANT_NOT)) return true; return false; } - private boolean jj_3R_277() - { - if (jj_scan_token(DIMEN)) return true; - return false; - } - - private boolean jj_3_10() + private boolean jj_3R_296() { - if (jj_scan_token(NUMBER)) return true; + if (jj_scan_token(FUNCTION)) return true; Token xsp; while (true) { xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } - if (jj_scan_token(DIV)) return true; + xsp = jj_scanpos; + if (jj_3_15()) { + jj_scanpos = xsp; + if (jj_3R_320()) return true; + } return false; } - private boolean jj_3R_276() + private boolean jj_3R_269() { - if (jj_scan_token(SPL)) return true; + if (jj_scan_token(DIMEN)) return true; return false; } - private boolean jj_3R_275() + private boolean jj_3_10() { - if (jj_scan_token(ST)) return true; + if (jj_scan_token(NUMBER)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(21)) { jj_scanpos = xsp; break; } + } + if (jj_scan_token(DIV)) return true; return false; } - private boolean jj_3R_274() + private boolean jj_3R_268() { - if (jj_scan_token(RESOLUTION)) return true; + if (jj_scan_token(SPL)) return true; return false; } - private boolean jj_3R_304() + private boolean jj_3R_267() { - if (jj_scan_token(FUNCTION)) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(21)) { jj_scanpos = xsp; break; } - } - xsp = jj_scanpos; - if (jj_3_15()) { - jj_scanpos = xsp; - if (jj_3R_328()) return true; - } + if (jj_scan_token(ST)) return true; return false; } - private boolean jj_3R_273() + private boolean jj_3R_266() + { + if (jj_scan_token(RESOLUTION)) return true; + return false; + } + + private boolean jj_3R_265() { if (jj_scan_token(FREQ)) return true; return false; } - private boolean jj_3R_272() + private boolean jj_3R_264() { if (jj_scan_token(TIME)) return true; return false; } - private boolean jj_3R_271() + private boolean jj_3R_263() { if (jj_scan_token(ANGLE)) return true; return false; } - private boolean jj_3R_270() + private boolean jj_3R_262() { if (jj_scan_token(FLEX)) return true; return false; } - private boolean jj_3R_269() + private boolean jj_3R_261() { if (jj_scan_token(ABSOLUTLENGTH)) return true; return false; } - private boolean jj_3R_268() + private boolean jj_3R_260() { if (jj_scan_token(RELVIEWLENGTH)) return true; return false; } - private boolean jj_3R_267() + private boolean jj_3R_259() { if (jj_scan_token(RELFONTLENGTH)) return true; return false; } - private boolean jj_3R_266() + private boolean jj_3R_258() { if (jj_scan_token(PERCENTAGE)) return true; return false; } - private boolean jj_3R_306() + private boolean jj_3R_298() { - if (jj_3R_329()) return true; + if (jj_3R_321()) return true; return false; } - private boolean jj_3R_307() + private boolean jj_3R_299() { if (jj_scan_token(NUMBER)) return true; return false; } - private boolean jj_3R_265() + private boolean jj_3R_257() { Token xsp; xsp = jj_scanpos; - if (jj_3R_306()) { + if (jj_3R_298()) { jj_scanpos = xsp; - if (jj_3R_307()) return true; + if (jj_3R_299()) return true; } return false; } - private boolean jj_3R_339() + private boolean jj_3R_256() { - if (jj_scan_token(COMMA)) return true; + if (jj_3R_290()) return true; return false; } - private boolean jj_3R_264() + private boolean jj_3R_332() { - if (jj_3R_297()) return true; + if (jj_scan_token(COMMA)) return true; return false; } - private boolean jj_3R_221() + private boolean jj_3R_213() { Token xsp; xsp = jj_scanpos; - if (jj_3R_264()) jj_scanpos = xsp; + if (jj_3R_256()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_265()) { + if (jj_3R_257()) { jj_scanpos = xsp; - if (jj_3R_266()) { + if (jj_3R_258()) { jj_scanpos = xsp; - if (jj_3R_267()) { + if (jj_3R_259()) { jj_scanpos = xsp; - if (jj_3R_268()) { + if (jj_3R_260()) { jj_scanpos = xsp; - if (jj_3R_269()) { + if (jj_3R_261()) { jj_scanpos = xsp; - if (jj_3R_270()) { + if (jj_3R_262()) { jj_scanpos = xsp; - if (jj_3R_271()) { + if (jj_3R_263()) { jj_scanpos = xsp; - if (jj_3R_272()) { + if (jj_3R_264()) { jj_scanpos = xsp; - if (jj_3R_273()) { + if (jj_3R_265()) { jj_scanpos = xsp; - if (jj_3R_274()) { + if (jj_3R_266()) { jj_scanpos = xsp; - if (jj_3R_275()) { + if (jj_3R_267()) { jj_scanpos = xsp; - if (jj_3R_276()) { + if (jj_3R_268()) { jj_scanpos = xsp; - if (jj_3R_277()) { + if (jj_3R_269()) { jj_scanpos = xsp; - if (jj_3R_278()) { + if (jj_3R_270()) { jj_scanpos = xsp; - if (jj_3R_279()) { + if (jj_3R_271()) { jj_scanpos = xsp; - if (jj_3R_280()) return true; + if (jj_3R_272()) return true; } } } @@ -8506,54 +8397,36 @@ private boolean jj_3R_221() return false; } - private boolean jj_3R_205() + private boolean jj_3R_197() { Token xsp; xsp = jj_scanpos; - if (jj_3R_221()) { + if (jj_3R_213()) { jj_scanpos = xsp; - if (jj_3R_222()) return true; + if (jj_3R_214()) return true; } return false; } - private boolean jj_3_9() - { - if (jj_scan_token(S)) return true; - return false; - } - - private boolean jj_3R_263() - { - if (jj_scan_token(UNICODERANGE)) return true; - return false; - } - - private boolean jj_3R_341() + private boolean jj_3R_333() { if (jj_scan_token(COMMA)) return true; return false; } - private boolean jj_3R_262() - { - if (jj_scan_token(URL)) return true; - return false; - } - - private boolean jj_3R_342() + private boolean jj_3_9() { - if (jj_scan_token(COMMA)) return true; + if (jj_scan_token(S)) return true; return false; } - private boolean jj_3R_261() + private boolean jj_3R_255() { - if (jj_3R_305()) return true; + if (jj_scan_token(UNICODERANGE)) return true; return false; } - private boolean jj_3R_303() + private boolean jj_3R_286() { if (jj_scan_token(FUNCTIONVAR)) return true; Token xsp; @@ -8564,7 +8437,7 @@ private boolean jj_3R_303() if (jj_scan_token(CUSTOM_PROPERTY_NAME)) return true; while (true) { xsp = jj_scanpos; - if (jj_3R_342()) { jj_scanpos = xsp; break; } + if (jj_3R_333()) { jj_scanpos = xsp; break; } } while (true) { xsp = jj_scanpos; @@ -8574,36 +8447,42 @@ private boolean jj_3R_303() return false; } - private boolean jj_3R_343() + private boolean jj_3R_254() { - if (jj_3R_203()) return true; + if (jj_scan_token(URL)) return true; return false; } - private boolean jj_3R_340() + private boolean jj_3R_253() + { + if (jj_3R_297()) return true; + return false; + } + + private boolean jj_3R_334() + { + if (jj_3R_195()) return true; + return false; + } + + private boolean jj_3R_331() { Token xsp; xsp = jj_scanpos; - if (jj_3R_343()) { + if (jj_3R_334()) { jj_scanpos = xsp; if (jj_scan_token(131)) return true; } return false; } - private boolean jj_3R_314() + private boolean jj_3R_306() { if (jj_scan_token(NUMBER)) return true; return false; } - private boolean jj_3R_260() - { - if (jj_3R_203()) return true; - return false; - } - - private boolean jj_3R_302() + private boolean jj_3R_295() { if (jj_scan_token(FUNCTIONATTR)) return true; Token xsp; @@ -8611,20 +8490,26 @@ private boolean jj_3R_302() xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } - if (jj_3R_203()) return true; + if (jj_3R_195()) return true; while (true) { xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } xsp = jj_scanpos; - if (jj_3R_340()) jj_scanpos = xsp; + if (jj_3R_331()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_341()) jj_scanpos = xsp; + if (jj_3R_332()) jj_scanpos = xsp; if (jj_scan_token(LPARAN)) return true; return false; } - private boolean jj_3R_231() + private boolean jj_3R_252() + { + if (jj_3R_195()) return true; + return false; + } + + private boolean jj_3R_223() { Token xsp; xsp = jj_scanpos; @@ -8644,7 +8529,7 @@ private boolean jj_3R_231() return false; } - private boolean jj_3R_259() + private boolean jj_3R_251() { Token xsp; xsp = jj_scanpos; @@ -8655,159 +8540,85 @@ private boolean jj_3R_259() return false; } - private boolean jj_3R_258() + private boolean jj_3R_250() { if (jj_scan_token(DIV)) return true; return false; } - private boolean jj_3R_257() + private boolean jj_3R_249() { if (jj_scan_token(STRING)) return true; return false; } - private boolean jj_3R_256() - { - if (jj_3R_304()) return true; - return false; - } - - private boolean jj_3R_255() - { - if (jj_3R_303()) return true; - return false; - } - - private boolean jj_3R_254() - { - if (jj_3R_302()) return true; - return false; - } - - private boolean jj_3R_253() + private boolean jj_3R_285() { - if (jj_3R_301()) return true; + if (jj_3R_286()) return true; return false; } - private boolean jj_3R_252() + private boolean jj_3R_248() { - if (jj_3R_300()) return true; + if (jj_3R_296()) return true; return false; } - private boolean jj_3R_251() + private boolean jj_3R_284() { - if (jj_3R_299()) return true; + if (jj_3R_295()) return true; return false; } - private boolean jj_3R_250() + private boolean jj_3R_283() { - if (jj_3R_298()) return true; + if (jj_3R_294()) return true; return false; } - private boolean jj_3R_293() + private boolean jj_3R_247() { - if (jj_scan_token(FUNCTIONVAR)) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(21)) { jj_scanpos = xsp; break; } - } - if (jj_scan_token(CUSTOM_PROPERTY_NAME)) return true; - while (true) { - xsp = jj_scanpos; - if (jj_3R_339()) { jj_scanpos = xsp; break; } - } - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(21)) { jj_scanpos = xsp; break; } - } - if (jj_scan_token(LPARAN)) return true; + if (jj_3R_286()) return true; return false; } - private boolean jj_3R_292() + private boolean jj_3R_282() { - if (jj_3R_302()) return true; + if (jj_3R_293()) return true; return false; } - private boolean jj_3R_220() + private boolean jj_3R_246() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_250()) { - jj_scanpos = xsp; - if (jj_3R_251()) { - jj_scanpos = xsp; - if (jj_3R_252()) { - jj_scanpos = xsp; - if (jj_3R_253()) { - jj_scanpos = xsp; - if (jj_3R_254()) { - jj_scanpos = xsp; - if (jj_3R_255()) { - jj_scanpos = xsp; - if (jj_3R_256()) { - jj_scanpos = xsp; - if (jj_3R_257()) { - jj_scanpos = xsp; - if (jj_3R_258()) { - jj_scanpos = xsp; - if (jj_3R_259()) { - jj_scanpos = xsp; - if (jj_3R_260()) { - jj_scanpos = xsp; - if (jj_3R_261()) { - jj_scanpos = xsp; - if (jj_3R_262()) { - jj_scanpos = xsp; - if (jj_3R_263()) return true; - } - } - } - } - } - } - } - } - } - } - } - } - } + if (jj_3R_295()) return true; return false; } - private boolean jj_3R_291() + private boolean jj_3R_281() { - if (jj_3R_301()) return true; + if (jj_3R_292()) return true; return false; } - private boolean jj_3R_290() + private boolean jj_3R_245() { - if (jj_3R_300()) return true; + if (jj_3R_294()) return true; return false; } - private boolean jj_3R_289() + private boolean jj_3R_280() { - if (jj_3R_299()) return true; + if (jj_3R_291()) return true; return false; } - private boolean jj_3R_288() + private boolean jj_3R_244() { - if (jj_3R_298()) return true; + if (jj_3R_293()) return true; return false; } - private boolean jj_3R_287() + private boolean jj_3R_279() { if (jj_scan_token(RPARAN)) return true; Token xsp; @@ -8815,7 +8626,7 @@ private boolean jj_3R_287() xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } - if (jj_3R_327()) return true; + if (jj_3R_319()) return true; while (true) { xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } @@ -8824,89 +8635,142 @@ private boolean jj_3R_287() return false; } - private boolean jj_3R_322() + private boolean jj_3R_243() + { + if (jj_3R_292()) return true; + return false; + } + + private boolean jj_3R_314() { if (jj_scan_token(FREQ)) return true; return false; } - private boolean jj_3R_321() + private boolean jj_3R_242() + { + if (jj_3R_291()) return true; + return false; + } + + private boolean jj_3R_313() { if (jj_scan_token(TIME)) return true; return false; } - private boolean jj_3R_320() + private boolean jj_3R_312() { if (jj_scan_token(ANGLE)) return true; return false; } - private boolean jj_3R_249() + private boolean jj_3R_212() { - if (jj_scan_token(DIMEN_9)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_242()) { + jj_scanpos = xsp; + if (jj_3R_243()) { + jj_scanpos = xsp; + if (jj_3R_244()) { + jj_scanpos = xsp; + if (jj_3R_245()) { + jj_scanpos = xsp; + if (jj_3R_246()) { + jj_scanpos = xsp; + 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()) { + jj_scanpos = xsp; + if (jj_3R_251()) { + jj_scanpos = xsp; + if (jj_3R_252()) { + jj_scanpos = xsp; + if (jj_3R_253()) { + jj_scanpos = xsp; + if (jj_3R_254()) { + jj_scanpos = xsp; + if (jj_3R_255()) return true; + } + } + } + } + } + } + } + } + } + } + } + } + } return false; } - private boolean jj_3R_319() + private boolean jj_3R_311() { if (jj_scan_token(FLEX)) return true; return false; } - private boolean jj_3R_318() + private boolean jj_3R_310() { if (jj_scan_token(ABSOLUTLENGTH)) return true; return false; } - private boolean jj_3R_317() + private boolean jj_3R_309() { if (jj_scan_token(RELVIEWLENGTH)) return true; return false; } - private boolean jj_3R_316() + private boolean jj_3R_308() { if (jj_scan_token(RELFONTLENGTH)) return true; return false; } - private boolean jj_3R_313() + private boolean jj_3R_305() { - if (jj_3R_297()) return true; + if (jj_3R_290()) return true; return false; } - private boolean jj_3R_315() + private boolean jj_3R_307() { if (jj_scan_token(PERCENTAGE)) return true; return false; } - private boolean jj_3R_286() + private boolean jj_3R_278() { Token xsp; xsp = jj_scanpos; - if (jj_3R_313()) jj_scanpos = xsp; + if (jj_3R_305()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_314()) { + if (jj_3R_306()) { jj_scanpos = xsp; - if (jj_3R_315()) { + if (jj_3R_307()) { jj_scanpos = xsp; - if (jj_3R_316()) { + if (jj_3R_308()) { jj_scanpos = xsp; - if (jj_3R_317()) { + if (jj_3R_309()) { jj_scanpos = xsp; - if (jj_3R_318()) { + if (jj_3R_310()) { jj_scanpos = xsp; - if (jj_3R_319()) { + if (jj_3R_311()) { jj_scanpos = xsp; - if (jj_3R_320()) { + if (jj_3R_312()) { jj_scanpos = xsp; - if (jj_3R_321()) { + if (jj_3R_313()) { jj_scanpos = xsp; - if (jj_3R_322()) return true; + if (jj_3R_314()) return true; } } } @@ -8918,31 +8782,31 @@ private boolean jj_3R_286() return false; } - private boolean jj_3R_248() + private boolean jj_3R_241() { - if (jj_scan_token(IMPORTANT_NOT)) return true; + if (jj_scan_token(DIMEN_9)) return true; return false; } - private boolean jj_3R_224() + private boolean jj_3R_216() { Token xsp; xsp = jj_scanpos; - if (jj_3R_286()) { + if (jj_3R_278()) { jj_scanpos = xsp; - if (jj_3R_287()) { + if (jj_3R_279()) { jj_scanpos = xsp; - if (jj_3R_288()) { + if (jj_3R_280()) { jj_scanpos = xsp; - if (jj_3R_289()) { + if (jj_3R_281()) { jj_scanpos = xsp; - if (jj_3R_290()) { + if (jj_3R_282()) { jj_scanpos = xsp; - if (jj_3R_291()) { + if (jj_3R_283()) { jj_scanpos = xsp; - if (jj_3R_292()) { + if (jj_3R_284()) { jj_scanpos = xsp; - if (jj_3R_293()) return true; + if (jj_3R_285()) return true; } } } @@ -8953,53 +8817,35 @@ private boolean jj_3R_224() return false; } - private boolean jj_3R_247() + private boolean jj_3R_240() { - if (jj_scan_token(PROGID)) return true; + if (jj_scan_token(IMPORTANT_NOT)) return true; return false; } - private boolean jj_3R_227() + private boolean jj_3R_219() { if (jj_scan_token(S)) return true; return false; } - private boolean jj_3R_246() - { - if (jj_scan_token(DIMEN)) return true; - return false; - } - - private boolean jj_3R_245() + private boolean jj_3R_239() { - if (jj_scan_token(SPL)) return true; + if (jj_scan_token(PROGID)) return true; return false; } - private boolean jj_3R_209() + private boolean jj_3R_201() { Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_227()) { jj_scanpos = xsp; break; } + if (jj_3R_219()) { jj_scanpos = xsp; break; } } if (jj_scan_token(MINUS)) return true; return false; } - private boolean jj_3R_244() - { - if (jj_scan_token(ST)) return true; - return false; - } - - private boolean jj_3R_243() - { - if (jj_scan_token(RESOLUTION)) return true; - return false; - } - private boolean jj_3_14() { Token xsp; @@ -9016,59 +8862,83 @@ private boolean jj_3_14() xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } - if (jj_3R_210()) return true; + if (jj_3R_202()) return true; + return false; + } + + private boolean jj_3R_238() + { + if (jj_scan_token(DIMEN)) return true; + return false; + } + + private boolean jj_3R_237() + { + if (jj_scan_token(SPL)) return true; return false; } - private boolean jj_3R_242() + private boolean jj_3R_236() + { + if (jj_scan_token(ST)) return true; + return false; + } + + private boolean jj_3R_235() + { + if (jj_scan_token(RESOLUTION)) return true; + return false; + } + + private boolean jj_3R_234() { if (jj_scan_token(FREQ)) return true; return false; } - private boolean jj_3R_241() + private boolean jj_3R_233() { if (jj_scan_token(TIME)) return true; return false; } - private boolean jj_3R_240() + private boolean jj_3R_232() { if (jj_scan_token(ANGLE)) return true; return false; } - private boolean jj_3R_239() + private boolean jj_3R_231() { if (jj_scan_token(FLEX)) return true; return false; } - private boolean jj_3R_238() + private boolean jj_3R_230() { if (jj_scan_token(ABSOLUTLENGTH)) return true; return false; } - private boolean jj_3R_237() + private boolean jj_3R_229() { if (jj_scan_token(RELVIEWLENGTH)) return true; return false; } - private boolean jj_3R_236() + private boolean jj_3R_228() { if (jj_scan_token(RELFONTLENGTH)) return true; return false; } - private boolean jj_3R_235() + private boolean jj_3R_227() { if (jj_scan_token(PERCENTAGE)) return true; return false; } - private boolean jj_3R_234() + private boolean jj_3R_226() { if (jj_scan_token(NUMBER)) return true; return false; @@ -9076,54 +8946,54 @@ private boolean jj_3R_234() private boolean jj_3_8() { - if (jj_3R_201()) return true; - if (jj_3R_205()) return true; + if (jj_3R_193()) return true; + if (jj_3R_197()) return true; return false; } - private boolean jj_3R_233() + private boolean jj_3R_225() { - if (jj_3R_297()) return true; + if (jj_3R_290()) return true; return false; } - private boolean jj_3R_219() + private boolean jj_3R_211() { Token xsp; xsp = jj_scanpos; - if (jj_3R_233()) jj_scanpos = xsp; + if (jj_3R_225()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_234()) { + if (jj_3R_226()) { jj_scanpos = xsp; - if (jj_3R_235()) { + if (jj_3R_227()) { jj_scanpos = xsp; - if (jj_3R_236()) { + if (jj_3R_228()) { jj_scanpos = xsp; - if (jj_3R_237()) { + if (jj_3R_229()) { jj_scanpos = xsp; - if (jj_3R_238()) { + if (jj_3R_230()) { jj_scanpos = xsp; - if (jj_3R_239()) { + if (jj_3R_231()) { jj_scanpos = xsp; - if (jj_3R_240()) { + if (jj_3R_232()) { jj_scanpos = xsp; - if (jj_3R_241()) { + if (jj_3R_233()) { jj_scanpos = xsp; - if (jj_3R_242()) { + if (jj_3R_234()) { jj_scanpos = xsp; - if (jj_3R_243()) { + if (jj_3R_235()) { jj_scanpos = xsp; - if (jj_3R_244()) { + if (jj_3R_236()) { jj_scanpos = xsp; - if (jj_3R_245()) { + if (jj_3R_237()) { jj_scanpos = xsp; - if (jj_3R_246()) { + if (jj_3R_238()) { jj_scanpos = xsp; - if (jj_3R_247()) { + if (jj_3R_239()) { jj_scanpos = xsp; - if (jj_3R_248()) { + if (jj_3R_240()) { jj_scanpos = xsp; - if (jj_3R_249()) return true; + if (jj_3R_241()) return true; } } } @@ -9142,13 +9012,13 @@ private boolean jj_3R_219() return false; } - private boolean jj_3R_202() + private boolean jj_3R_194() { Token xsp; xsp = jj_scanpos; - if (jj_3R_219()) { + if (jj_3R_211()) { jj_scanpos = xsp; - if (jj_3R_220()) return true; + if (jj_3R_212()) return true; } while (true) { xsp = jj_scanpos; @@ -9157,19 +9027,13 @@ private boolean jj_3R_202() return false; } - private boolean jj_3R_295() - { - if (jj_3R_323()) return true; - return false; - } - private boolean jj_3_13() { Token xsp; xsp = jj_scanpos; if (jj_scan_token(27)) { jj_scanpos = xsp; - if (jj_3R_209()) return true; + if (jj_3R_201()) return true; } if (jj_scan_token(21)) return true; while (true) { @@ -9179,9 +9043,15 @@ private boolean jj_3_13() return false; } - private boolean jj_3R_204() + private boolean jj_3R_288() { - if (jj_3R_205()) return true; + if (jj_3R_315()) return true; + return false; + } + + private boolean jj_3R_196() + { + if (jj_3R_197()) return true; Token xsp; while (true) { xsp = jj_scanpos; @@ -9190,30 +9060,41 @@ private boolean jj_3R_204() return false; } - private boolean jj_3_12() + private boolean jj_3R_287() + { + if (jj_3R_290()) return true; + return false; + } + + private boolean jj_3R_221() + { + if (jj_scan_token(RPARAN)) return true; + return false; + } + + private boolean jj_3R_220() { Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(21)) { jj_scanpos = xsp; break; } - } xsp = jj_scanpos; - if (jj_3R_207()) { - jj_scanpos = xsp; - if (jj_3R_208()) return true; - } + if (jj_3R_287()) jj_scanpos = xsp; + if (jj_scan_token(NUMBER)) return true; return false; } - private boolean jj_3R_225() + private boolean jj_3R_202() { - if (jj_3R_210()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_220()) { + jj_scanpos = xsp; + if (jj_3R_221()) return true; + } return false; } private boolean jj_3_7() { - if (jj_3R_203()) return true; + if (jj_3R_195()) return true; Token xsp; while (true) { xsp = jj_scanpos; @@ -9237,49 +9118,67 @@ private boolean jj_3_7() xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } - if (jj_3R_204()) return true; + if (jj_3R_196()) return true; return false; } - private boolean jj_3R_294() + private boolean jj_3R_218() { - if (jj_3R_297()) return true; + if (jj_3R_286()) return true; return false; } - private boolean jj_3R_229() + private boolean jj_3R_217() { - if (jj_scan_token(RPARAN)) return true; + if (jj_3R_202()) return true; return false; } - private boolean jj_3R_228() + private boolean jj_3R_289() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_294()) jj_scanpos = xsp; - if (jj_scan_token(NUMBER)) return true; + if (jj_3R_316()) return true; return false; } - private boolean jj_3R_210() + private boolean jj_3R_206() { + if (jj_3R_196()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_228()) { + if (jj_scan_token(29)) { + jj_scanpos = xsp; + if (jj_scan_token(30)) { + jj_scanpos = xsp; + if (jj_scan_token(48)) { + jj_scanpos = xsp; + if (jj_scan_token(135)) { jj_scanpos = xsp; - if (jj_3R_229()) return true; + if (jj_scan_token(137)) return true; + } + } + } + } + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } + if (jj_3R_195()) return true; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(21)) { jj_scanpos = xsp; break; } + } + xsp = jj_scanpos; + if (jj_3R_223()) jj_scanpos = xsp; return false; } - private boolean jj_3R_226() + private boolean jj_3_4() { - if (jj_scan_token(FUNCTIONVAR)) return true; + if (jj_3R_191()) return true; return false; } - private boolean jj_3R_208() + private boolean jj_3R_200() { if (jj_scan_token(DIV)) return true; Token xsp; @@ -9288,14 +9187,14 @@ private boolean jj_3R_208() if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } xsp = jj_scanpos; - if (jj_3R_225()) { + if (jj_3R_217()) { jj_scanpos = xsp; - if (jj_3R_226()) return true; + if (jj_3R_218()) return true; } return false; } - private boolean jj_3R_207() + private boolean jj_3R_199() { if (jj_scan_token(ANY)) return true; Token xsp; @@ -9303,55 +9202,28 @@ private boolean jj_3R_207() xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } - if (jj_3R_224()) return true; - return false; - } - - private boolean jj_3R_296() - { - if (jj_3R_324()) return true; + if (jj_3R_216()) return true; return false; } - private boolean jj_3R_214() + private boolean jj_3R_190() { - if (jj_3R_204()) return true; + if (jj_scan_token(RPARAN)) return true; Token xsp; - xsp = jj_scanpos; - if (jj_scan_token(29)) { - jj_scanpos = xsp; - if (jj_scan_token(30)) { - jj_scanpos = xsp; - if (jj_scan_token(48)) { - jj_scanpos = xsp; - if (jj_scan_token(135)) { - jj_scanpos = xsp; - if (jj_scan_token(137)) return true; - } - } - } - } - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(21)) { jj_scanpos = xsp; break; } - } - if (jj_3R_203()) return true; while (true) { xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } xsp = jj_scanpos; - if (jj_3R_231()) jj_scanpos = xsp; - return false; - } - - private boolean jj_3_4() - { - if (jj_3R_199()) return true; + if (jj_3_7()) { + jj_scanpos = xsp; + if (jj_3R_206()) return true; + } + if (jj_scan_token(LPARAN)) return true; return false; } - private boolean jj_3R_198() + private boolean jj_3R_224() { if (jj_scan_token(RPARAN)) return true; Token xsp; @@ -9360,31 +9232,29 @@ private boolean jj_3R_198() if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } xsp = jj_scanpos; - if (jj_3_7()) { + if (jj_3_4()) { jj_scanpos = xsp; - if (jj_3R_214()) return true; + if (jj_3R_289()) return true; } - if (jj_scan_token(LPARAN)) return true; return false; } - private boolean jj_3R_232() + private boolean jj_3_12() { - if (jj_scan_token(RPARAN)) return true; Token xsp; while (true) { xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } xsp = jj_scanpos; - if (jj_3_4()) { + if (jj_3R_199()) { jj_scanpos = xsp; - if (jj_3R_296()) return true; + if (jj_3R_200()) return true; } return false; } - private boolean jj_3R_223() + private boolean jj_3R_215() { if (jj_scan_token(S)) return true; return false; @@ -9392,31 +9262,31 @@ private boolean jj_3R_223() private boolean jj_3_3() { - if (jj_3R_198()) return true; + if (jj_3R_190()) return true; return false; } private boolean jj_3_6() { - if (jj_3R_201()) return true; - if (jj_3R_202()) return true; + if (jj_3R_193()) return true; + if (jj_3R_194()) return true; return false; } - private boolean jj_3R_206() + private boolean jj_3R_198() { Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_223()) { jj_scanpos = xsp; break; } + if (jj_3R_215()) { jj_scanpos = xsp; break; } } if (jj_scan_token(MINUS)) return true; return false; } - private boolean jj_3R_332() + private boolean jj_3R_324() { - if (jj_3R_224()) return true; + if (jj_3R_216()) return true; Token xsp; while (true) { xsp = jj_scanpos; @@ -9425,9 +9295,9 @@ private boolean jj_3R_332() return false; } - private boolean jj_3R_211() + private boolean jj_3R_203() { - if (jj_3R_202()) return true; + if (jj_3R_194()) return true; Token xsp; while (true) { xsp = jj_scanpos; @@ -9436,24 +9306,24 @@ private boolean jj_3R_211() return false; } - private boolean jj_3R_216() + private boolean jj_3R_208() { - if (jj_3R_232()) return true; + if (jj_3R_224()) return true; return false; } - private boolean jj_3R_199() + private boolean jj_3R_191() { Token xsp; xsp = jj_scanpos; - if (jj_3R_215()) { + if (jj_3R_207()) { jj_scanpos = xsp; - if (jj_3R_216()) return true; + if (jj_3R_208()) return true; } return false; } - private boolean jj_3R_215() + private boolean jj_3R_207() { if (jj_scan_token(NOT)) return true; Token xsp; @@ -9462,7 +9332,7 @@ private boolean jj_3R_215() xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } - if (jj_3R_232()) return true; + if (jj_3R_224()) return true; return false; } @@ -9472,7 +9342,7 @@ private boolean jj_3_11() xsp = jj_scanpos; if (jj_scan_token(27)) { jj_scanpos = xsp; - if (jj_3R_206()) return true; + if (jj_3R_198()) return true; } if (jj_scan_token(21)) return true; while (true) { @@ -9482,9 +9352,9 @@ private boolean jj_3_11() return false; } - private boolean jj_3R_327() + private boolean jj_3R_319() { - if (jj_3R_332()) return true; + if (jj_3R_324()) return true; Token xsp; while (true) { xsp = jj_scanpos; @@ -9493,7 +9363,7 @@ private boolean jj_3R_327() return false; } - private boolean jj_3R_203() + private boolean jj_3R_195() { Token xsp; xsp = jj_scanpos; @@ -9513,7 +9383,7 @@ private boolean jj_3R_203() return false; } - private boolean jj_3R_298() + private boolean jj_3R_291() { if (jj_scan_token(FUNCTIONCALC)) return true; Token xsp; @@ -9521,7 +9391,7 @@ private boolean jj_3R_298() xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } - if (jj_3R_327()) return true; + if (jj_3R_319()) return true; while (true) { xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } @@ -9530,24 +9400,24 @@ private boolean jj_3R_298() return false; } - private boolean jj_3R_217() + private boolean jj_3R_209() { - if (jj_3R_203()) return true; + if (jj_3R_195()) return true; return false; } - private boolean jj_3R_200() + private boolean jj_3R_192() { Token xsp; xsp = jj_scanpos; - if (jj_3R_217()) { + if (jj_3R_209()) { jj_scanpos = xsp; if (jj_scan_token(53)) return true; } return false; } - private boolean jj_3R_334() + private boolean jj_3R_326() { Token xsp; xsp = jj_scanpos; @@ -9565,7 +9435,7 @@ private boolean jj_3R_334() return false; } - private boolean jj_3R_330() + private boolean jj_3R_322() { if (jj_scan_token(COLON)) return true; return false; @@ -9575,12 +9445,12 @@ private boolean jj_3_5() { Token xsp; xsp = jj_scanpos; - if (jj_3R_200()) jj_scanpos = xsp; + if (jj_3R_192()) jj_scanpos = xsp; if (jj_scan_token(136)) return true; return false; } - private boolean jj_3R_336() + private boolean jj_3R_328() { if (jj_scan_token(COMMA)) return true; Token xsp; @@ -9588,11 +9458,11 @@ private boolean jj_3R_336() xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } - if (jj_3R_327()) return true; + if (jj_3R_319()) return true; return false; } - private boolean jj_3R_301() + private boolean jj_3R_294() { if (jj_scan_token(FUNCTIONCLAMP)) return true; Token xsp; @@ -9600,7 +9470,7 @@ private boolean jj_3R_301() xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } - if (jj_3R_327()) return true; + if (jj_3R_319()) return true; while (true) { xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } @@ -9610,11 +9480,11 @@ private boolean jj_3R_301() xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } - if (jj_3R_327()) return true; + if (jj_3R_319()) return true; return false; } - private boolean jj_3R_338() + private boolean jj_3R_330() { Token xsp; xsp = jj_scanpos; @@ -9679,16 +9549,16 @@ private boolean jj_3R_338() return false; } - private boolean jj_3R_335() + private boolean jj_3R_327() { Token xsp; xsp = jj_scanpos; - if (jj_3R_338()) jj_scanpos = xsp; - if (jj_3R_203()) return true; + if (jj_3R_330()) jj_scanpos = xsp; + if (jj_3R_195()) return true; return false; } - private boolean jj_3R_323() + private boolean jj_3R_315() { if (jj_scan_token(RPARAN)) return true; Token xsp; @@ -9702,16 +9572,16 @@ private boolean jj_3R_323() if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } xsp = jj_scanpos; - if (jj_3R_330()) jj_scanpos = xsp; + if (jj_3R_322()) jj_scanpos = xsp; if (jj_scan_token(LPARAN)) return true; return false; } - private boolean jj_3R_333() + private boolean jj_3R_325() { Token xsp; xsp = jj_scanpos; - if (jj_3R_335()) { + if (jj_3R_327()) { jj_scanpos = xsp; if (jj_scan_token(43)) return true; } @@ -9722,13 +9592,13 @@ private boolean jj_3R_333() return false; } - private boolean jj_3R_331() + private boolean jj_3R_323() { Token xsp; xsp = jj_scanpos; - if (jj_3R_333()) { + if (jj_3R_325()) { jj_scanpos = xsp; - if (jj_3R_334()) return true; + if (jj_3R_326()) return true; } return false; } @@ -9744,7 +9614,7 @@ private boolean jj_3R_331() private Token jj_scanpos, jj_lastpos; private int jj_la; private int jj_gen; - final private int[] jj_la1 = new int[286]; + final private int[] jj_la1 = new int[278]; static private int[] jj_la1_0; static private int[] jj_la1_1; static private int[] jj_la1_2; @@ -9758,19 +9628,19 @@ private boolean jj_3R_331() jj_la1_init_4(); } private static void jj_la1_init_0() { - jj_la1_0 = new int[] {0x0,0x0,0x0,0xe00000,0xe00000,0x0,0x0,0x0,0x200000,0x200000,0x0,0x0,0xc00000,0xc00000,0x200000,0x200000,0x200000,0x0,0x0,0x200000,0x200000,0x200000,0x0,0x200000,0x0,0x200000,0x200000,0x0,0x200000,0x0,0x0,0x200000,0x200000,0x200000,0x80000000,0x200000,0x0,0x200000,0x0,0x200000,0x200000,0x0,0x0,0x200000,0x200000,0x0,0x200000,0x0,0x0,0x0,0x0,0x200000,0x0,0x200000,0x0,0x200000,0x200000,0x0,0x200000,0x200000,0x200000,0x0,0x200000,0x200000,0x200000,0x0,0x0,0x200000,0x200000,0x200000,0x0,0x200000,0x0,0x0,0x0,0x0,0x200000,0xa8000000,0x200000,0x0,0x200000,0x0,0x200000,0x200000,0x200000,0x200000,0x0,0x200000,0x200000,0x0,0x0,0x200000,0x200000,0x200000,0x0,0x0,0x0,0x200000,0x80000000,0x200000,0x0,0x0,0x0,0x200000,0x18000000,0x18000000,0x18000000,0x200000,0x200000,0x200000,0x200000,0x18000000,0x80000000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x80000000,0x28000000,0x200000,0x200000,0x28200000,0x18000000,0xa8000000,0xa8000000,0xa8000000,0x200000,0x0,0x200000,0xa8000000,0x80000000,0x200000,0x200000,0x200000,0xa8000000,0x0,0x200000,0xa8000000,0x200000,0x28200000,0x200000,0x200000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x200000,0x3000000,0x200000,0x0,0x200000,0x3000000,0x200000,0x0,0x200000,0x200000,0x0,0x200000,0x200000,0x0,0x0,0x0,0x0,0x200000,0x0,0x0,0x200000,0x0,0x200000,0x18000000,0x200000,0x18000000,0x200000,0x200000,0x60000000,0x200000,0x60000000,0x200000,0x200000,0x60000000,0x200000,0x60000000,0x18000000,0x200000,0x18000000,0x0,0x0,0x0,0x18000000,0x18000000,0x0,0x0,0x0,0x200000,0x0,0x200000,0x18000000,0x200000,0x200000,0x80000000,0x200000,0x200000,0x200000,0x200000,0x80000000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x18200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x80000000,0x200000,0x200000,0x18000000,0x0,0x18000000,0x200000,0x200000,0x18000000,0x200000,0x18200000,0x200000,0x200000,0x0,0x200000,0x18000000,0x0,0x200000,0x200000,0x200000,0x80000000,0x200000,0x200000,0x18000000,0x200000,0x200000,0x0,0x200000,0x0,0x200000,0x80000000,0x200000,0x80000000,0x200000,0x200000,0x200000,0x0,0x0,}; + jj_la1_0 = new int[] {0x0,0x0,0x0,0xe00000,0xe00000,0x0,0x0,0x0,0x200000,0x200000,0x0,0x0,0xc00000,0xc00000,0x200000,0x200000,0x200000,0x0,0x0,0x200000,0x200000,0x200000,0x0,0x200000,0x0,0x200000,0x200000,0x0,0x200000,0x0,0x0,0x200000,0x200000,0x200000,0x80000000,0x200000,0x0,0x200000,0x0,0x200000,0x200000,0x0,0x0,0x200000,0x200000,0x0,0x200000,0x0,0x0,0x0,0x0,0x200000,0x0,0x200000,0x0,0x200000,0x200000,0x0,0x200000,0x200000,0x200000,0x0,0x200000,0x200000,0x200000,0x0,0x0,0x200000,0x200000,0x200000,0x0,0x200000,0x0,0x0,0x0,0x0,0x200000,0xa8000000,0x200000,0x0,0x200000,0x0,0x200000,0x200000,0x200000,0x200000,0x0,0x200000,0x200000,0x0,0x0,0x200000,0x200000,0x200000,0x0,0x0,0x0,0x200000,0x80000000,0x200000,0x0,0x0,0x0,0x200000,0x18000000,0x18000000,0x18000000,0x200000,0x200000,0x200000,0x200000,0x18000000,0x80000000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x80000000,0x28000000,0x200000,0x200000,0x28200000,0x18000000,0xa8000000,0xa8000000,0xa8000000,0x200000,0x0,0x200000,0xa8000000,0x80000000,0x200000,0x200000,0x200000,0xa8000000,0x0,0x200000,0xa8000000,0x200000,0x28200000,0x200000,0x200000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x200000,0x3000000,0x200000,0x0,0x200000,0x3000000,0x200000,0x0,0x200000,0x200000,0x0,0x200000,0x200000,0x0,0x0,0x0,0x0,0x200000,0x0,0x0,0x200000,0x0,0x200000,0x18000000,0x200000,0x18000000,0x200000,0x200000,0x60000000,0x200000,0x60000000,0x200000,0x200000,0x60000000,0x200000,0x60000000,0x18000000,0x200000,0x18000000,0x0,0x0,0x0,0x18000000,0x18000000,0x0,0x0,0x0,0x200000,0x0,0x200000,0x18000000,0x200000,0x200000,0x80000000,0x200000,0x200000,0x200000,0x200000,0x80000000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x18200000,0x200000,0x200000,0x200000,0x200000,0x18000000,0x0,0x18000000,0x200000,0x200000,0x18000000,0x200000,0x18200000,0x200000,0x200000,0x0,0x200000,0x18000000,0x0,0x200000,0x200000,0x18000000,0x200000,0x200000,0x0,0x200000,0x0,0x200000,0x80000000,0x200000,0x80000000,0x200000,0x200000,0x200000,0x0,0x0,}; } private static void jj_la1_init_1() { - jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x9e,0x0,0x0,0x0,0xba28039e,0x0,0x0,0x0,0x0,0x0,0x9e,0x4000020,0x0,0x0,0x0,0x4000020,0x0,0x1000098,0x0,0x0,0x1000098,0x0,0xba28039e,0xba28039e,0x0,0x0,0x0,0x0,0x0,0x18,0x0,0x18,0x0,0x0,0x2,0x98,0x0,0x0,0x2,0x0,0x4,0x6,0x6,0x1000010,0x0,0x2,0x0,0x1000010,0x0,0x0,0x1000000,0x0,0x0,0x0,0x2000000,0x0,0x0,0x0,0xba28039e,0xba28039e,0x0,0x0,0x0,0x2,0x0,0x4,0x6,0x6,0x1000010,0x0,0x3bd099f,0x0,0x1000000,0x0,0x9e,0x0,0x0,0x0,0x0,0x200009e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2000000,0x2000000,0x200009e,0x0,0x0,0x0,0x2000000,0x2000000,0x200009e,0x0,0x0,0x0,0x9e,0x0,0x0,0x0,0x0,0x9e,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,0x0,0x1,0x0,0x3bd0001,0x3bd0001,0x3bd089f,0x0,0x100,0x0,0x3bd099f,0x0,0x0,0x0,0x0,0x3bd099f,0x20000,0x0,0x3bd099f,0x0,0x1,0x0,0x0,0xba080300,0xba080300,0xba080300,0xba080300,0xba28039e,0xb8000000,0xb8000000,0x20009e,0x20009e,0x20009e,0x0,0x0,0x1e000,0x0,0xbe,0x0,0x1e000,0x0,0xba28039e,0x0,0x0,0xbe,0x0,0x0,0x0,0x9e,0x2000000,0x300,0x0,0x0,0x2000000,0x0,0x0,0x0,0xbe,0x0,0xbe,0x0,0x0,0x10000,0x0,0x10000,0x0,0x0,0x10000,0x0,0x10000,0xfc0003be,0x0,0x0,0xf8000400,0x180000,0x41c03be,0xfc1c07be,0x0,0x0,0x0,0xf8000000,0x0,0x40003be,0x0,0xfc0003be,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,0x1000000,0x240000,0x0,0x0,0x0,0x1000000,0x0,0x0,0x0,0x0,0x240000,0x0,0x0,0xf8000000,0x0,0x0,0x0,0x0,0x0,0x0,0xf9000000,0x0,0x0,0x9e,0x0,0x9e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x9e,0x300,}; + jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x9e,0x0,0x0,0x0,0xba28039e,0x0,0x0,0x0,0x0,0x0,0x9e,0x4000020,0x0,0x0,0x0,0x4000020,0x0,0x1000098,0x0,0x0,0x1000098,0x0,0xba28039e,0xba28039e,0x0,0x0,0x0,0x0,0x0,0x18,0x0,0x18,0x0,0x0,0x2,0x98,0x0,0x0,0x2,0x0,0x4,0x6,0x6,0x1000010,0x0,0x2,0x0,0x1000010,0x0,0x0,0x1000000,0x0,0x0,0x0,0x2000000,0x0,0x0,0x0,0xba28039e,0xba28039e,0x0,0x0,0x0,0x2,0x0,0x4,0x6,0x6,0x1000010,0x0,0x3bd099f,0x0,0x1000000,0x0,0x9e,0x0,0x0,0x0,0x0,0x200009e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2000000,0x2000000,0x200009e,0x0,0x0,0x0,0x2000000,0x2000000,0x200009e,0x0,0x0,0x0,0x9e,0x0,0x0,0x0,0x0,0x9e,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,0x0,0x1,0x0,0x3bd0001,0x3bd0001,0x3bd089f,0x0,0x100,0x0,0x3bd099f,0x0,0x0,0x0,0x0,0x3bd099f,0x20000,0x0,0x3bd099f,0x0,0x1,0x0,0x0,0xba080300,0xba080300,0xba080300,0xba080300,0xba28039e,0xb8000000,0xb8000000,0x20009e,0x20009e,0x20009e,0x0,0x0,0x1e000,0x0,0xbe,0x0,0x1e000,0x0,0xba28039e,0x0,0x0,0xbe,0x0,0x0,0x0,0x9e,0x2000000,0x300,0x0,0x0,0x2000000,0x0,0x0,0x0,0xbe,0x0,0xbe,0x0,0x0,0x10000,0x0,0x10000,0x0,0x0,0x10000,0x0,0x10000,0xfc0003be,0x0,0x0,0xf8000400,0x180000,0x41c03be,0xfc1c07be,0x0,0x0,0x0,0xf8000000,0x0,0x40003be,0x0,0xfc0003be,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000000,0x240000,0x0,0x0,0x0,0x1000000,0x0,0x0,0x0,0x0,0x240000,0x0,0x0,0xf8000000,0x0,0x0,0xf9000000,0x0,0x0,0x9e,0x0,0x9e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x9e,0x300,}; } private static void jj_la1_init_2() { - jj_la1_2 = new int[] {0x0,0x0,0x1000,0x0,0x0,0x40000000,0x80000000,0x0,0x0,0x0,0x2000,0x285c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x285c,0x285c,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,0x285c,0x285c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3fffc000,0x3fffc000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x80,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,0x85c,0x85c,0x85c,0x85c,0x85c,0x5c,0x5c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x85c,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x800,0x0,0x0,0x200,0x0,0x0,0x200,0x0,0x1c0,0x0,0x1c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x5ff,0x0,0x0,0x5ff,0x0,0x0,0x5ff,0x0,0x100,0x0,0x5ff,0x0,0x0,0x0,0x5ff,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,0x100,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18c,0x0,0x0,0x0,0x0,0x0,0x0,0x18c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; + jj_la1_2 = new int[] {0x0,0x0,0x1000,0x0,0x0,0x40000000,0x80000000,0x0,0x0,0x0,0x2000,0x285c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x285c,0x285c,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,0x285c,0x285c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3fffc000,0x3fffc000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x80,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,0x85c,0x85c,0x85c,0x85c,0x85c,0x5c,0x5c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x85c,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x800,0x0,0x0,0x200,0x0,0x0,0x200,0x0,0x1c0,0x0,0x1c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x5ff,0x0,0x0,0x5ff,0x0,0x0,0x5ff,0x0,0x100,0x0,0x5ff,0x0,0x0,0x0,0x5ff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18c,0x0,0x0,0x18c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; } private static void jj_la1_init_3() { - jj_la1_3 = new int[] {0x80000000,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7df,0xa007df,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xa007df,0xa007df,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,0xa007df,0xa007df,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200400,0x0,0x40000000,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,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200400,0x0,0x200400,0x0,0x0,0x0,0x0,0x200400,0x0,0x0,0x200400,0x0,0x0,0x0,0x0,0xa00000,0xa00000,0xa00000,0xa00000,0xa00000,0x200000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x0,0x0,0x0,0x0,0x0,0x40400000,0x40400000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4f100000,0x0,0x0,0x0,0x0,0x7f100000,0x7f100000,0x0,0x0,0x4f000000,0x4f000000,0x0,0x100000,0x0,0x4f100000,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,0x20000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3f000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; + jj_la1_3 = new int[] {0x80000000,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7df,0xa007df,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xa007df,0xa007df,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,0xa007df,0xa007df,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200400,0x0,0x40000000,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,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200400,0x0,0x200400,0x0,0x0,0x0,0x0,0x200400,0x0,0x0,0x200400,0x0,0x0,0x0,0x0,0xa00000,0xa00000,0xa00000,0xa00000,0xa00000,0x200000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x0,0x0,0x0,0x0,0x0,0x40400000,0x40400000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4f100000,0x0,0x0,0x0,0x0,0x7f100000,0x7f100000,0x0,0x0,0x4f000000,0x4f000000,0x0,0x100000,0x0,0x4f100000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3f000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; } private static void jj_la1_init_4() { - jj_la1_4 = new int[] {0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x100,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,0x100,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1fe,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,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1fe,0x1fe,0x1fe,0x0,0x0,0x0,0x1fe,0x0,0x0,0x0,0x0,0x1fe,0x0,0x0,0x1fe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x280,0x0,0x280,0x0,0x0,0x280,0x0,0x280,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,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; + jj_la1_4 = new int[] {0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x100,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,0x100,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1fe,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,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1fe,0x1fe,0x1fe,0x0,0x0,0x0,0x1fe,0x0,0x0,0x0,0x0,0x1fe,0x0,0x0,0x1fe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x280,0x0,0x280,0x0,0x0,0x280,0x0,0x280,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,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; } final private JJCalls[] jj_2_rtns = new JJCalls[15]; private boolean jj_rescan = false; @@ -9787,7 +9657,7 @@ public CssParser(java.io.InputStream stream, String encoding) { token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 286; i++) jj_la1[i] = -1; + for (int i = 0; i < 278; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -9802,7 +9672,7 @@ public void ReInit(java.io.InputStream stream, String encoding) { token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 286; i++) jj_la1[i] = -1; + for (int i = 0; i < 278; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -9813,7 +9683,7 @@ public CssParser(java.io.Reader stream) { token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 286; i++) jj_la1[i] = -1; + for (int i = 0; i < 278; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -9824,7 +9694,7 @@ public void ReInit(java.io.Reader stream) { token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 286; i++) jj_la1[i] = -1; + for (int i = 0; i < 278; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -9834,7 +9704,7 @@ public CssParser(CssParserTokenManager tm) { token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 286; i++) jj_la1[i] = -1; + for (int i = 0; i < 278; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -9844,7 +9714,7 @@ public void ReInit(CssParserTokenManager tm) { token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 286; i++) jj_la1[i] = -1; + for (int i = 0; i < 278; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -9962,7 +9832,7 @@ public ParseException generateParseException() { la1tokens[jj_kind] = true; jj_kind = -1; } - for (int i = 0; i < 286; i++) { + for (int i = 0; i < 278; i++) { if (jj_la1[i] == jj_gen) { for (int j = 0; j < 32; j++) { if ((jj_la1_0[i] & (1< Date: Mon, 30 Aug 2021 16:47:28 +0200 Subject: [PATCH 14/40] add calc value using proper token to do variable marking action when necessary --- org/w3c/css/parser/analyzer/CssParser.jj | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/org/w3c/css/parser/analyzer/CssParser.jj b/org/w3c/css/parser/analyzer/CssParser.jj index 65d86e9f9..4fa1cc034 100644 --- a/org/w3c/css/parser/analyzer/CssParser.jj +++ b/org/w3c/css/parser/analyzer/CssParser.jj @@ -412,16 +412,16 @@ public abstract class CssParser { if (f.getParameters().hasCssHack()) { expr.markCssHack(); } - } else if ( v.getType() == CssTypes.CSS_CALC) { - CssCalc c = (CssCalc) v; - if (c.hasCssVariable()) { - expr.markCssVariable(); - } } } else if ( token == FUNCTIONVAR ) { if (v.getType() == CssTypes.CSS_VARIABLE) { expr.markCssVariable(); } + } else if ( token == FUNCTIONCALC ) { + CssCalc c = (CssCalc) v; + if (c.hasCssVariable()) { + expr.markCssVariable(); + } } if (n != null) { if (ac.getCssVersion() == CssVersion.CSS1 && @@ -2881,7 +2881,7 @@ void term(CssExpression exp) : } ) ) - | ( func=mathcalc() { setValue(func, exp, operator, null, FUNCTION); } + | ( func=mathcalc() { setValue(func, exp, operator, null, FUNCTIONCALC); } | func=mathmax() { setValue(func, exp, operator, null, FUNCTION); } | func=mathmin() { setValue(func, exp, operator, null, FUNCTION); } | func=mathclamp() { setValue(func, exp, operator, null, FUNCTION); } @@ -2976,7 +2976,7 @@ void mediaterm(CssExpression exp) : } } | ( func=function() { setValue(func, exp, operator, null, FUNCTION); } - | func=mathcalc() { setValue(func, exp, operator, null, FUNCTION); } + | func=mathcalc() { setValue(func, exp, operator, null, FUNCTIONCALC); } | func=mathmax() { setValue(func, exp, operator, null, FUNCTION); } | func=mathmin() { setValue(func, exp, operator, null, FUNCTION); } | func=mathclamp() { setValue(func, exp, operator, null, FUNCTION); } From 46d552b44a3c41877dccb97b1e71aaa2ea1fdda4 Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Mon, 30 Aug 2021 16:47:38 +0200 Subject: [PATCH 15/40] regen --- org/w3c/css/parser/analyzer/CssParser.java | 205 +++++++++++---------- 1 file changed, 103 insertions(+), 102 deletions(-) diff --git a/org/w3c/css/parser/analyzer/CssParser.java b/org/w3c/css/parser/analyzer/CssParser.java index 802ad6b64..b3a7b70a6 100644 --- a/org/w3c/css/parser/analyzer/CssParser.java +++ b/org/w3c/css/parser/analyzer/CssParser.java @@ -2,25 +2,71 @@ /* Generated By:JavaCC: Do not edit this line. CssParser.java */ package org.w3c.css.parser.analyzer; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.net.URL; + +import org.w3c.css.values.CssValue; +import org.w3c.css.values.CssOperator; +import org.w3c.css.values.CssAngle; +import org.w3c.css.values.CssCheckableValue; +import org.w3c.css.values.CssExpression; +import org.w3c.css.values.CssString; +import org.w3c.css.values.CssURL; +import org.w3c.css.values.CssLength; +import org.w3c.css.values.CssNumber; +import org.w3c.css.values.CssAttr; +import org.w3c.css.values.CssBracket; +import org.w3c.css.values.CssCalc; +import org.w3c.css.values.CssClamp; +import org.w3c.css.values.CssColor; +import org.w3c.css.values.CssComparator; +import org.w3c.css.values.CssFlexibleLength; +import org.w3c.css.values.CssFunction; +import org.w3c.css.values.CssFrequency; +import org.w3c.css.values.CssHashIdent; +import org.w3c.css.values.CssIdent; +import org.w3c.css.values.CssImage; +import org.w3c.css.values.CssMax; +import org.w3c.css.values.CssMin; +import org.w3c.css.values.CssPercentage; +import org.w3c.css.values.CssSwitch; +import org.w3c.css.values.CssTime; +import org.w3c.css.values.CssUnicodeRange; +import org.w3c.css.values.CssResolution; +import org.w3c.css.values.CssRatio; +import org.w3c.css.values.CssSemitone; +import org.w3c.css.values.CssTypes; +import org.w3c.css.values.CssVolume; +import org.w3c.css.values.CssVariable; +import org.w3c.css.properties.css.CssProperty; +import org.w3c.css.parser.CssError; +import org.w3c.css.parser.CssErrorToken; +import org.w3c.css.parser.CssSelectors; +import org.w3c.css.parser.CssParseException; +import org.w3c.css.parser.AtRule; +import org.w3c.css.atrules.svg.AtRuleColorProfile; import org.w3c.css.atrules.css.AtRuleCounterStyle; import org.w3c.css.atrules.css.AtRuleFontFace; import org.w3c.css.atrules.css.AtRuleKeyframes; import org.w3c.css.atrules.css.AtRuleMedia; +import org.w3c.css.atrules.css.media.MediaFeature; +import org.w3c.css.atrules.css.media.MediaRangeFeature; import org.w3c.css.atrules.css.AtRulePage; import org.w3c.css.atrules.css.AtRulePhoneticAlphabet; import org.w3c.css.atrules.css.AtRulePreference; import org.w3c.css.atrules.css.AtRuleSupports; -import org.w3c.css.atrules.css.AtRuleViewport; -import org.w3c.css.atrules.css.media.MediaFeature; -import org.w3c.css.atrules.css.media.MediaRangeFeature; import org.w3c.css.atrules.css.supports.SupportsFeature; -import org.w3c.css.atrules.svg.AtRuleColorProfile; -import org.w3c.css.parser.AtRule; -import org.w3c.css.parser.CssError; -import org.w3c.css.parser.CssErrorToken; -import org.w3c.css.parser.CssParseException; -import org.w3c.css.parser.CssSelectors; -import org.w3c.css.properties.css.CssProperty; +import org.w3c.css.atrules.css.AtRuleViewport; +import org.w3c.css.util.ApplContext; +import org.w3c.css.util.CssProfile; +import org.w3c.css.util.CssVersion; +import org.w3c.css.util.InvalidParamException; +import org.w3c.css.util.WarningParamException; +import org.w3c.css.util.Util; + import org.w3c.css.selectors.AdjacentSiblingSelector; import org.w3c.css.selectors.AttributeSelector; import org.w3c.css.selectors.ChildSelector; @@ -37,51 +83,6 @@ import org.w3c.css.selectors.attributes.AttributeStart; import org.w3c.css.selectors.attributes.AttributeSubstr; import org.w3c.css.selectors.attributes.AttributeSuffix; -import org.w3c.css.util.ApplContext; -import org.w3c.css.util.CssProfile; -import org.w3c.css.util.CssVersion; -import org.w3c.css.util.InvalidParamException; -import org.w3c.css.util.Util; -import org.w3c.css.util.WarningParamException; -import org.w3c.css.values.CssAngle; -import org.w3c.css.values.CssAttr; -import org.w3c.css.values.CssBracket; -import org.w3c.css.values.CssCalc; -import org.w3c.css.values.CssCheckableValue; -import org.w3c.css.values.CssClamp; -import org.w3c.css.values.CssColor; -import org.w3c.css.values.CssComparator; -import org.w3c.css.values.CssExpression; -import org.w3c.css.values.CssFlexibleLength; -import org.w3c.css.values.CssFrequency; -import org.w3c.css.values.CssFunction; -import org.w3c.css.values.CssHashIdent; -import org.w3c.css.values.CssIdent; -import org.w3c.css.values.CssImage; -import org.w3c.css.values.CssLength; -import org.w3c.css.values.CssMax; -import org.w3c.css.values.CssMin; -import org.w3c.css.values.CssNumber; -import org.w3c.css.values.CssOperator; -import org.w3c.css.values.CssPercentage; -import org.w3c.css.values.CssRatio; -import org.w3c.css.values.CssResolution; -import org.w3c.css.values.CssSemitone; -import org.w3c.css.values.CssString; -import org.w3c.css.values.CssSwitch; -import org.w3c.css.values.CssTime; -import org.w3c.css.values.CssTypes; -import org.w3c.css.values.CssURL; -import org.w3c.css.values.CssUnicodeRange; -import org.w3c.css.values.CssValue; -import org.w3c.css.values.CssVariable; -import org.w3c.css.values.CssVolume; - -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.UnsupportedEncodingException; -import java.net.URL; -import java.util.ArrayList; /** * A CSS parser @@ -392,16 +393,16 @@ private void setValue(CssValue v, CssExpression expr, if (f.getParameters().hasCssHack()) { expr.markCssHack(); } - } else if ( v.getType() == CssTypes.CSS_CALC) { - CssCalc c = (CssCalc) v; - if (c.hasCssVariable()) { - expr.markCssVariable(); - } } } else if ( token == FUNCTIONVAR ) { if (v.getType() == CssTypes.CSS_VARIABLE) { expr.markCssVariable(); } + } else if ( token == FUNCTIONCALC ) { + CssCalc c = (CssCalc) v; + if (c.hasCssVariable()) { + expr.markCssVariable(); + } } if (n != null) { if (ac.getCssVersion() == CssVersion.CSS1 && @@ -700,7 +701,7 @@ private static String addOperator(char operator, String value) { (space1Token.specialToken != null) || (n.specialToken != null) || (semicolonToken.specialToken != null) || - (n.image.charAt(0) != '\"') + (n.image.charAt(0) != '\u005c"') ) { {if (true) throw new ParseException(ac.getMsg().getString( "parser.charsetspecial"));} @@ -949,7 +950,7 @@ final public void ignoreStatement() throws ParseException { ((CssURL) val).set(v.image, ac, url); nsname = (String) val.get(); if ((nsname.charAt(0) == '"') - || (nsname.charAt(0) == '\'')) { + || (nsname.charAt(0) == '\u005c'')) { nsname = nsname.substring(1, nsname.length()-1); } break; @@ -1035,7 +1036,7 @@ final public void ignoreStatement() throws ParseException { ((CssURL) val).set(n.image, ac, url); importFile = (String) val.get(); if ((importFile.charAt(0) == '"') - || (importFile.charAt(0) == '\'')) { + || (importFile.charAt(0) == '\u005c'')) { importFile = importFile.substring(1, importFile.length()-1); } is_url = true; @@ -4590,9 +4591,9 @@ final public ArrayList declarations() throws ParseException {if(!va if (p != null) { // FIXME should be > CSS3 if (ac.getCssVersion().compareTo(CssVersion.CSS3) < 0) { - StringBuilder sb = new StringBuilder("namespace \""); + StringBuilder sb = new StringBuilder("namespace \u005c""); if (n != null) sb.append(n.toString()); - sb.append("\""); + sb.append("\u005c""); ac.getFrame() .addError(new CssError(getSourceFile(), getBeginLine(), getBeginColumn(), getEndLine(), getEndColumn(), @@ -4604,8 +4605,8 @@ final public ArrayList declarations() throws ParseException {if(!va if (!ac.isNamespaceDefined(getURL(), prefix)) { // ns is not defined addError(new ParseException("Undefined namespace"), - ": The namespace \""+prefix - +"\" is not defined. " + ": The namespace \u005c""+prefix + +"\u005c" is not defined. " + prefix ); removeThisRule(); } @@ -5094,14 +5095,14 @@ final public ArrayList declarations() throws ParseException {if(!va if (version != CssVersion.CSS1) { // the id with the first digit escaped - String cl = "\\" + Integer.toString(n.image.charAt(0), 16); + String cl = "\u005c\u005c" + Integer.toString(n.image.charAt(0), 16); cl += n.image.substring(1); addError(new ParseException(ac.getMsg().getString( "parser.old_id")), - "To make \"." + n.image + "\" a valid id, CSS2" + + "To make \u005c"." + n.image + "\u005c" a valid id, CSS2" + " requires the first digit to be escaped " + - "(\"#" + cl + "\")"); + "(\u005c"#" + cl + "\u005c")"); // for css > 1, we add the rule to have a context, // and we then remove it s.addId(new IdSelector(n.image)); @@ -5840,7 +5841,7 @@ final public boolean prio() throws ParseException { case DIMEN:{ n = jj_consume_token(DIMEN); String dimen = n.image.trim(); - if ("0\\0".equals(dimen) && ac.getTreatCssHacksAsWarnings()) { + if ("0\u005c\u005c0".equals(dimen) && ac.getTreatCssHacksAsWarnings()) { exp.markCssHack(); ac.getFrame().addWarning("css-hack", dimen); } else { @@ -5908,7 +5909,7 @@ final public boolean prio() throws ParseException { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case FUNCTIONCALC:{ func = mathcalc(); -setValue(func, exp, operator, null, FUNCTION); +setValue(func, exp, operator, null, FUNCTIONCALC); break; } case FUNCTIONMAX:{ @@ -6156,7 +6157,7 @@ final public boolean prio() throws ParseException { case DIMEN:{ n = jj_consume_token(DIMEN); String dimen = n.image.trim(); - if ("0\\0".equals(dimen) && ac.getTreatCssHacksAsWarnings()) { + if ("0\u005c\u005c0".equals(dimen) && ac.getTreatCssHacksAsWarnings()) { exp.markCssHack(); ac.getFrame().addWarning("css-hack", dimen); } else { @@ -6197,7 +6198,7 @@ final public boolean prio() throws ParseException { } case FUNCTIONCALC:{ func = mathcalc(); -setValue(func, exp, operator, null, FUNCTION); +setValue(func, exp, operator, null, FUNCTIONCALC); break; } case FUNCTIONMAX:{ @@ -7636,14 +7637,14 @@ final public boolean prio() throws ParseException { String convertStringIndex(String s, int start, int len, boolean escapeFirst) throws ParseException {int index = start; int t; int maxCount = 0; - if ((start == 0) && (len == s.length()) && (s.indexOf('\\') == -1)) { + if ((start == 0) && (len == s.length()) && (s.indexOf('\u005c\u005c') == -1)) { return s; } StringBuilder buf = new StringBuilder(len); while (index < len) { char c = s.charAt(index); - if (c == '\\') { + if (c == '\u005c\u005c') { if (++index < len) { c = s.charAt(index); switch (c) { @@ -7664,15 +7665,15 @@ final public boolean prio() throws ParseException { numValue = (numValue<<4) | t; index++; } else { - if (c == ' ' || c == '\t' || - c == '\n' || c == '\f' ) { + if (c == ' ' || c == '\u005ct' || + c == '\u005cn' || c == '\u005cf' ) { // skip the latest white space index++; - } else if ( c == '\r' ) { + } else if ( c == '\u005cr' ) { index++; // special case for \r\n if (index+1 < len) { - if (s.charAt(index + 1) == '\n') { + if (s.charAt(index + 1) == '\u005cn') { index++; } } @@ -7688,7 +7689,7 @@ final public boolean prio() throws ParseException { || (numValue == 45) // - ) ) { - buf.append('\\'); + buf.append('\u005c\u005c'); } buf.append((char) numValue); break; @@ -7699,14 +7700,14 @@ final public boolean prio() throws ParseException { b[--t] = hexdigits[numValue & 0xF]; numValue >>>= 4; } - buf.append('\\').append(b); + buf.append('\u005c\u005c').append(b); break; - case '\n': - case '\f': + case '\u005cn': + case '\u005cf': break; - case '\r': + case '\u005cr': if (index + 1 < len) { - if (s.charAt(index + 1) == '\n') { + if (s.charAt(index + 1) == '\u005cn') { index ++; } } @@ -7725,7 +7726,7 @@ final public boolean prio() throws ParseException { buf.append(c); break; default: - buf.append('\\').append(c); + buf.append('\u005c\u005c').append(c); } } else { throw new ParseException("invalid string"); @@ -7749,7 +7750,7 @@ final public boolean prio() throws ParseException { } String hexEscapeFirst(String s) throws ParseException {StringBuilder sb = new StringBuilder(); - sb.append('\\').append(Integer.toString(s.charAt(0), 16)); + sb.append('\u005c\u005c').append(Integer.toString(s.charAt(0), 16)); char c = s.charAt(1); if (((c >= '0') && (c <= '9')) || ((c >= 'A') && (c <= 'F')) || @@ -7962,6 +7963,13 @@ private boolean jj_3R_292() return false; } + private boolean jj_3R_316() + { + if (jj_3R_323()) return true; + if (jj_scan_token(COLON)) return true; + return false; + } + private boolean jj_3R_297() { Token xsp; @@ -7973,13 +7981,6 @@ private boolean jj_3R_297() return false; } - private boolean jj_3R_316() - { - if (jj_3R_323()) return true; - if (jj_scan_token(COLON)) return true; - return false; - } - private boolean jj_3R_205() { if (jj_3R_222()) return true; @@ -8116,13 +8117,6 @@ private boolean jj_3R_304() return false; } - private boolean jj_3_15() - { - if (jj_3R_203()) return true; - if (jj_scan_token(LPARAN)) return true; - return false; - } - private boolean jj_3R_214() { Token xsp; @@ -8153,6 +8147,13 @@ private boolean jj_3R_303() return false; } + private boolean jj_3_15() + { + if (jj_3R_203()) return true; + if (jj_scan_token(LPARAN)) return true; + return false; + } + private boolean jj_3R_302() { if (jj_3R_292()) return true; From ea7507d21f206ae63077c914db5b1ad7dad679be Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Mon, 30 Aug 2021 16:48:23 +0200 Subject: [PATCH 16/40] mark the value as containing a variable during contruction --- org/w3c/css/values/CssCalc.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/org/w3c/css/values/CssCalc.java b/org/w3c/css/values/CssCalc.java index e8d15c8c7..52351d105 100644 --- a/org/w3c/css/values/CssCalc.java +++ b/org/w3c/css/values/CssCalc.java @@ -106,6 +106,9 @@ public CssCalc setLeftSide(CssValue value) throw new InvalidParamException("unrecognized", val1, ac); } val1 = value; + if (val1.getType() == CssTypes.CSS_VARIABLE) { + contains_variable = true; + } _toString = null; return this; } @@ -129,6 +132,9 @@ public CssCalc addRightSide(String oper, CssValue value) throws InvalidParamExce throw new InvalidParamException("operator", oper, ac); } val2 = value; + if (val2.getType() == CssTypes.CSS_VARIABLE) { + contains_variable = true; + } _computeResultingType(false); return this; } From 6db4bc950b5aa94acbff768af85c5471b2287b1a Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Mon, 30 Aug 2021 18:18:46 +0200 Subject: [PATCH 17/40] more variable marking --- org/w3c/css/parser/analyzer/CssParser.jj | 39 ++++++++++++++++-------- 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/org/w3c/css/parser/analyzer/CssParser.jj b/org/w3c/css/parser/analyzer/CssParser.jj index 4fa1cc034..1b6fa6c02 100644 --- a/org/w3c/css/parser/analyzer/CssParser.jj +++ b/org/w3c/css/parser/analyzer/CssParser.jj @@ -401,17 +401,33 @@ public abstract class CssParser { throws ParseException { if ( token == FUNCTION ) { - if ( v.getType() == CssTypes.CSS_FUNCTION ) { - CssFunction f = (CssFunction) v; - if (f.getParameters().hasVendorExtensions()) { - expr.markVendorExtension(); - } - if (f.getParameters().hasCssVariable()) { - expr.markCssVariable(); - } - if (f.getParameters().hasCssHack()) { - expr.markCssHack(); - } + switch (v.getType()) { + case CssTypes.CSS_FUNCTION: + CssFunction f = (CssFunction) v; + if (f.getParameters().hasVendorExtensions()) { + expr.markVendorExtension(); + } + if (f.getParameters().hasCssVariable()) { + expr.markCssVariable(); + } + if (f.getParameters().hasCssHack()) { + expr.markCssHack(); + } + break; + case CssTypes.CSS_IMAGE: + CssImage im = (CssImage) v; + if (im.hasCssVariable()) { + expr.markCssVariable(); + } + break; + case CssTypes.CSS_COLOR: + CssColor co = (CssColor) v; +// if (co.hasCssVariable()) { +// expr.markCssVariable(); +// } + break; + default: + // do nothing } } else if ( token == FUNCTIONVAR ) { if (v.getType() == CssTypes.CSS_VARIABLE) { @@ -2887,7 +2903,6 @@ void term(CssExpression exp) : | func=mathclamp() { setValue(func, exp, operator, null, FUNCTION); } | func=attr() { setValue(func, exp, operator, null, FUNCTION); } | func=functionvar() { setValue(func, exp, operator, null, FUNCTIONVAR); } -/* | n= ( )* ( ( )* expr() )* ( )* */ | func=function() { setValue(func, exp, operator, null, FUNCTION); } | n= { setValue(new CssString(), exp, operator, n, STRING); } | n=
{ setValue(new CssSwitch(), exp, operator, n, DIV); } From af49485aec6ace3c8e283798ea99357c99656dae Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Mon, 30 Aug 2021 18:18:54 +0200 Subject: [PATCH 18/40] regen --- org/w3c/css/parser/analyzer/CssParser.java | 513 +++++++++++---------- 1 file changed, 264 insertions(+), 249 deletions(-) diff --git a/org/w3c/css/parser/analyzer/CssParser.java b/org/w3c/css/parser/analyzer/CssParser.java index b3a7b70a6..69d702529 100644 --- a/org/w3c/css/parser/analyzer/CssParser.java +++ b/org/w3c/css/parser/analyzer/CssParser.java @@ -2,71 +2,25 @@ /* Generated By:JavaCC: Do not edit this line. CssParser.java */ package org.w3c.css.parser.analyzer; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.UnsupportedEncodingException; -import java.util.ArrayList; -import java.net.URL; - -import org.w3c.css.values.CssValue; -import org.w3c.css.values.CssOperator; -import org.w3c.css.values.CssAngle; -import org.w3c.css.values.CssCheckableValue; -import org.w3c.css.values.CssExpression; -import org.w3c.css.values.CssString; -import org.w3c.css.values.CssURL; -import org.w3c.css.values.CssLength; -import org.w3c.css.values.CssNumber; -import org.w3c.css.values.CssAttr; -import org.w3c.css.values.CssBracket; -import org.w3c.css.values.CssCalc; -import org.w3c.css.values.CssClamp; -import org.w3c.css.values.CssColor; -import org.w3c.css.values.CssComparator; -import org.w3c.css.values.CssFlexibleLength; -import org.w3c.css.values.CssFunction; -import org.w3c.css.values.CssFrequency; -import org.w3c.css.values.CssHashIdent; -import org.w3c.css.values.CssIdent; -import org.w3c.css.values.CssImage; -import org.w3c.css.values.CssMax; -import org.w3c.css.values.CssMin; -import org.w3c.css.values.CssPercentage; -import org.w3c.css.values.CssSwitch; -import org.w3c.css.values.CssTime; -import org.w3c.css.values.CssUnicodeRange; -import org.w3c.css.values.CssResolution; -import org.w3c.css.values.CssRatio; -import org.w3c.css.values.CssSemitone; -import org.w3c.css.values.CssTypes; -import org.w3c.css.values.CssVolume; -import org.w3c.css.values.CssVariable; -import org.w3c.css.properties.css.CssProperty; -import org.w3c.css.parser.CssError; -import org.w3c.css.parser.CssErrorToken; -import org.w3c.css.parser.CssSelectors; -import org.w3c.css.parser.CssParseException; -import org.w3c.css.parser.AtRule; -import org.w3c.css.atrules.svg.AtRuleColorProfile; import org.w3c.css.atrules.css.AtRuleCounterStyle; import org.w3c.css.atrules.css.AtRuleFontFace; import org.w3c.css.atrules.css.AtRuleKeyframes; import org.w3c.css.atrules.css.AtRuleMedia; -import org.w3c.css.atrules.css.media.MediaFeature; -import org.w3c.css.atrules.css.media.MediaRangeFeature; import org.w3c.css.atrules.css.AtRulePage; import org.w3c.css.atrules.css.AtRulePhoneticAlphabet; import org.w3c.css.atrules.css.AtRulePreference; import org.w3c.css.atrules.css.AtRuleSupports; -import org.w3c.css.atrules.css.supports.SupportsFeature; import org.w3c.css.atrules.css.AtRuleViewport; -import org.w3c.css.util.ApplContext; -import org.w3c.css.util.CssProfile; -import org.w3c.css.util.CssVersion; -import org.w3c.css.util.InvalidParamException; -import org.w3c.css.util.WarningParamException; -import org.w3c.css.util.Util; - +import org.w3c.css.atrules.css.media.MediaFeature; +import org.w3c.css.atrules.css.media.MediaRangeFeature; +import org.w3c.css.atrules.css.supports.SupportsFeature; +import org.w3c.css.atrules.svg.AtRuleColorProfile; +import org.w3c.css.parser.AtRule; +import org.w3c.css.parser.CssError; +import org.w3c.css.parser.CssErrorToken; +import org.w3c.css.parser.CssParseException; +import org.w3c.css.parser.CssSelectors; +import org.w3c.css.properties.css.CssProperty; import org.w3c.css.selectors.AdjacentSiblingSelector; import org.w3c.css.selectors.AttributeSelector; import org.w3c.css.selectors.ChildSelector; @@ -83,6 +37,51 @@ import org.w3c.css.selectors.attributes.AttributeStart; import org.w3c.css.selectors.attributes.AttributeSubstr; import org.w3c.css.selectors.attributes.AttributeSuffix; +import org.w3c.css.util.ApplContext; +import org.w3c.css.util.CssProfile; +import org.w3c.css.util.CssVersion; +import org.w3c.css.util.InvalidParamException; +import org.w3c.css.util.Util; +import org.w3c.css.util.WarningParamException; +import org.w3c.css.values.CssAngle; +import org.w3c.css.values.CssAttr; +import org.w3c.css.values.CssBracket; +import org.w3c.css.values.CssCalc; +import org.w3c.css.values.CssCheckableValue; +import org.w3c.css.values.CssClamp; +import org.w3c.css.values.CssColor; +import org.w3c.css.values.CssComparator; +import org.w3c.css.values.CssExpression; +import org.w3c.css.values.CssFlexibleLength; +import org.w3c.css.values.CssFrequency; +import org.w3c.css.values.CssFunction; +import org.w3c.css.values.CssHashIdent; +import org.w3c.css.values.CssIdent; +import org.w3c.css.values.CssImage; +import org.w3c.css.values.CssLength; +import org.w3c.css.values.CssMax; +import org.w3c.css.values.CssMin; +import org.w3c.css.values.CssNumber; +import org.w3c.css.values.CssOperator; +import org.w3c.css.values.CssPercentage; +import org.w3c.css.values.CssRatio; +import org.w3c.css.values.CssResolution; +import org.w3c.css.values.CssSemitone; +import org.w3c.css.values.CssString; +import org.w3c.css.values.CssSwitch; +import org.w3c.css.values.CssTime; +import org.w3c.css.values.CssTypes; +import org.w3c.css.values.CssURL; +import org.w3c.css.values.CssUnicodeRange; +import org.w3c.css.values.CssValue; +import org.w3c.css.values.CssVariable; +import org.w3c.css.values.CssVolume; + +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; +import java.net.URL; +import java.util.ArrayList; /** * A CSS parser @@ -382,17 +381,33 @@ private void setValue(CssValue v, CssExpression expr, throws ParseException { if ( token == FUNCTION ) { - if ( v.getType() == CssTypes.CSS_FUNCTION ) { - CssFunction f = (CssFunction) v; - if (f.getParameters().hasVendorExtensions()) { - expr.markVendorExtension(); - } - if (f.getParameters().hasCssVariable()) { - expr.markCssVariable(); - } - if (f.getParameters().hasCssHack()) { - expr.markCssHack(); - } + switch (v.getType()) { + case CssTypes.CSS_FUNCTION: + CssFunction f = (CssFunction) v; + if (f.getParameters().hasVendorExtensions()) { + expr.markVendorExtension(); + } + if (f.getParameters().hasCssVariable()) { + expr.markCssVariable(); + } + if (f.getParameters().hasCssHack()) { + expr.markCssHack(); + } + break; + case CssTypes.CSS_IMAGE: + CssImage im = (CssImage) v; + if (im.hasCssVariable()) { + expr.markCssVariable(); + } + break; + case CssTypes.CSS_COLOR: + CssColor co = (CssColor) v; +// if (co.hasCssVariable()) { +// expr.markCssVariable(); +// } + break; + default: + // do nothing } } else if ( token == FUNCTIONVAR ) { if (v.getType() == CssTypes.CSS_VARIABLE) { @@ -701,7 +716,7 @@ private static String addOperator(char operator, String value) { (space1Token.specialToken != null) || (n.specialToken != null) || (semicolonToken.specialToken != null) || - (n.image.charAt(0) != '\u005c"') + (n.image.charAt(0) != '\"') ) { {if (true) throw new ParseException(ac.getMsg().getString( "parser.charsetspecial"));} @@ -950,7 +965,7 @@ final public void ignoreStatement() throws ParseException { ((CssURL) val).set(v.image, ac, url); nsname = (String) val.get(); if ((nsname.charAt(0) == '"') - || (nsname.charAt(0) == '\u005c'')) { + || (nsname.charAt(0) == '\'')) { nsname = nsname.substring(1, nsname.length()-1); } break; @@ -1036,7 +1051,7 @@ final public void ignoreStatement() throws ParseException { ((CssURL) val).set(n.image, ac, url); importFile = (String) val.get(); if ((importFile.charAt(0) == '"') - || (importFile.charAt(0) == '\u005c'')) { + || (importFile.charAt(0) == '\'')) { importFile = importFile.substring(1, importFile.length()-1); } is_url = true; @@ -4591,9 +4606,9 @@ final public ArrayList declarations() throws ParseException {if(!va if (p != null) { // FIXME should be > CSS3 if (ac.getCssVersion().compareTo(CssVersion.CSS3) < 0) { - StringBuilder sb = new StringBuilder("namespace \u005c""); + StringBuilder sb = new StringBuilder("namespace \""); if (n != null) sb.append(n.toString()); - sb.append("\u005c""); + sb.append("\""); ac.getFrame() .addError(new CssError(getSourceFile(), getBeginLine(), getBeginColumn(), getEndLine(), getEndColumn(), @@ -4605,8 +4620,8 @@ final public ArrayList declarations() throws ParseException {if(!va if (!ac.isNamespaceDefined(getURL(), prefix)) { // ns is not defined addError(new ParseException("Undefined namespace"), - ": The namespace \u005c""+prefix - +"\u005c" is not defined. " + ": The namespace \""+prefix + +"\" is not defined. " + prefix ); removeThisRule(); } @@ -5095,14 +5110,14 @@ final public ArrayList declarations() throws ParseException {if(!va if (version != CssVersion.CSS1) { // the id with the first digit escaped - String cl = "\u005c\u005c" + Integer.toString(n.image.charAt(0), 16); + String cl = "\\" + Integer.toString(n.image.charAt(0), 16); cl += n.image.substring(1); addError(new ParseException(ac.getMsg().getString( "parser.old_id")), - "To make \u005c"." + n.image + "\u005c" a valid id, CSS2" + + "To make \"." + n.image + "\" a valid id, CSS2" + " requires the first digit to be escaped " + - "(\u005c"#" + cl + "\u005c")"); + "(\"#" + cl + "\")"); // for css > 1, we add the rule to have a context, // and we then remove it s.addId(new IdSelector(n.image)); @@ -5841,7 +5856,7 @@ final public boolean prio() throws ParseException { case DIMEN:{ n = jj_consume_token(DIMEN); String dimen = n.image.trim(); - if ("0\u005c\u005c0".equals(dimen) && ac.getTreatCssHacksAsWarnings()) { + if ("0\\0".equals(dimen) && ac.getTreatCssHacksAsWarnings()) { exp.markCssHack(); ac.getFrame().addWarning("css-hack", dimen); } else { @@ -6157,7 +6172,7 @@ final public boolean prio() throws ParseException { case DIMEN:{ n = jj_consume_token(DIMEN); String dimen = n.image.trim(); - if ("0\u005c\u005c0".equals(dimen) && ac.getTreatCssHacksAsWarnings()) { + if ("0\\0".equals(dimen) && ac.getTreatCssHacksAsWarnings()) { exp.markCssHack(); ac.getFrame().addWarning("css-hack", dimen); } else { @@ -7637,14 +7652,14 @@ final public boolean prio() throws ParseException { String convertStringIndex(String s, int start, int len, boolean escapeFirst) throws ParseException {int index = start; int t; int maxCount = 0; - if ((start == 0) && (len == s.length()) && (s.indexOf('\u005c\u005c') == -1)) { + if ((start == 0) && (len == s.length()) && (s.indexOf('\\') == -1)) { return s; } StringBuilder buf = new StringBuilder(len); while (index < len) { char c = s.charAt(index); - if (c == '\u005c\u005c') { + if (c == '\\') { if (++index < len) { c = s.charAt(index); switch (c) { @@ -7665,15 +7680,15 @@ final public boolean prio() throws ParseException { numValue = (numValue<<4) | t; index++; } else { - if (c == ' ' || c == '\u005ct' || - c == '\u005cn' || c == '\u005cf' ) { + if (c == ' ' || c == '\t' || + c == '\n' || c == '\f' ) { // skip the latest white space index++; - } else if ( c == '\u005cr' ) { + } else if ( c == '\r' ) { index++; // special case for \r\n if (index+1 < len) { - if (s.charAt(index + 1) == '\u005cn') { + if (s.charAt(index + 1) == '\n') { index++; } } @@ -7689,7 +7704,7 @@ final public boolean prio() throws ParseException { || (numValue == 45) // - ) ) { - buf.append('\u005c\u005c'); + buf.append('\\'); } buf.append((char) numValue); break; @@ -7700,14 +7715,14 @@ final public boolean prio() throws ParseException { b[--t] = hexdigits[numValue & 0xF]; numValue >>>= 4; } - buf.append('\u005c\u005c').append(b); + buf.append('\\').append(b); break; - case '\u005cn': - case '\u005cf': + case '\n': + case '\f': break; - case '\u005cr': + case '\r': if (index + 1 < len) { - if (s.charAt(index + 1) == '\u005cn') { + if (s.charAt(index + 1) == '\n') { index ++; } } @@ -7726,7 +7741,7 @@ final public boolean prio() throws ParseException { buf.append(c); break; default: - buf.append('\u005c\u005c').append(c); + buf.append('\\').append(c); } } else { throw new ParseException("invalid string"); @@ -7750,7 +7765,7 @@ final public boolean prio() throws ParseException { } String hexEscapeFirst(String s) throws ParseException {StringBuilder sb = new StringBuilder(); - sb.append('\u005c\u005c').append(Integer.toString(s.charAt(0), 16)); + sb.append('\\').append(Integer.toString(s.charAt(0), 16)); char c = s.charAt(1); if (((c >= '0') && (c <= '9')) || ((c >= 'A') && (c <= 'F')) || @@ -7881,106 +7896,6 @@ private boolean jj_2_15(int xla) finally { jj_save(14, xla); } } - private boolean jj_3_2() - { - if (jj_scan_token(RPARAN)) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(21)) { jj_scanpos = xsp; break; } - } - if (jj_3R_189()) return true; - return false; - } - - private boolean jj_3R_222() - { - Token xsp; - xsp = jj_scanpos; - if (jj_3_2()) { - jj_scanpos = xsp; - if (jj_3_3()) { - jj_scanpos = xsp; - if (jj_3R_288()) return true; - } - } - return false; - } - - private boolean jj_3R_318() - { - if (jj_scan_token(PLUS)) return true; - return false; - } - - private boolean jj_3R_329() - { - if (jj_scan_token(COMMA)) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(21)) { jj_scanpos = xsp; break; } - } - if (jj_3R_319()) return true; - return false; - } - - private boolean jj_3R_317() - { - if (jj_scan_token(MINUS)) return true; - return false; - } - - private boolean jj_3R_290() - { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_317()) { - jj_scanpos = xsp; - if (jj_3R_318()) return true; - } - return false; - } - - private boolean jj_3R_292() - { - if (jj_scan_token(FUNCTIONMAX)) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(21)) { jj_scanpos = xsp; break; } - } - if (jj_3R_319()) return true; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(21)) { jj_scanpos = xsp; break; } - } - while (true) { - xsp = jj_scanpos; - if (jj_3R_328()) { jj_scanpos = xsp; break; } - } - if (jj_scan_token(LPARAN)) return true; - return false; - } - - private boolean jj_3R_316() - { - if (jj_3R_323()) return true; - if (jj_scan_token(COLON)) return true; - return false; - } - - private boolean jj_3R_297() - { - Token xsp; - xsp = jj_scanpos; - if (jj_scan_token(40)) { - jj_scanpos = xsp; - if (jj_scan_token(41)) return true; - } - return false; - } - private boolean jj_3R_205() { if (jj_3R_222()) return true; @@ -8504,12 +8419,6 @@ private boolean jj_3R_295() return false; } - private boolean jj_3R_252() - { - if (jj_3R_195()) return true; - return false; - } - private boolean jj_3R_223() { Token xsp; @@ -8530,6 +8439,12 @@ private boolean jj_3R_223() return false; } + private boolean jj_3R_252() + { + if (jj_3R_195()) return true; + return false; + } + private boolean jj_3R_251() { Token xsp; @@ -8571,15 +8486,21 @@ private boolean jj_3R_284() return false; } + private boolean jj_3R_247() + { + if (jj_3R_286()) return true; + return false; + } + private boolean jj_3R_283() { if (jj_3R_294()) return true; return false; } - private boolean jj_3R_247() + private boolean jj_3R_246() { - if (jj_3R_286()) return true; + if (jj_3R_295()) return true; return false; } @@ -8589,9 +8510,9 @@ private boolean jj_3R_282() return false; } - private boolean jj_3R_246() + private boolean jj_3R_245() { - if (jj_3R_295()) return true; + if (jj_3R_294()) return true; return false; } @@ -8601,9 +8522,9 @@ private boolean jj_3R_281() return false; } - private boolean jj_3R_245() + private boolean jj_3R_244() { - if (jj_3R_294()) return true; + if (jj_3R_293()) return true; return false; } @@ -8613,9 +8534,9 @@ private boolean jj_3R_280() return false; } - private boolean jj_3R_244() + private boolean jj_3R_243() { - if (jj_3R_293()) return true; + if (jj_3R_292()) return true; return false; } @@ -8636,9 +8557,9 @@ private boolean jj_3R_279() return false; } - private boolean jj_3R_243() + private boolean jj_3R_242() { - if (jj_3R_292()) return true; + if (jj_3R_291()) return true; return false; } @@ -8648,24 +8569,12 @@ private boolean jj_3R_314() return false; } - private boolean jj_3R_242() - { - if (jj_3R_291()) return true; - return false; - } - private boolean jj_3R_313() { if (jj_scan_token(TIME)) return true; return false; } - private boolean jj_3R_312() - { - if (jj_scan_token(ANGLE)) return true; - return false; - } - private boolean jj_3R_212() { Token xsp; @@ -8713,6 +8622,12 @@ private boolean jj_3R_212() return false; } + private boolean jj_3R_312() + { + if (jj_scan_token(ANGLE)) return true; + return false; + } + private boolean jj_3R_311() { if (jj_scan_token(FLEX)) return true; @@ -9195,32 +9110,32 @@ private boolean jj_3R_200() return false; } - private boolean jj_3R_199() + private boolean jj_3R_190() { - if (jj_scan_token(ANY)) return true; + if (jj_scan_token(RPARAN)) return true; Token xsp; while (true) { xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } - if (jj_3R_216()) return true; + xsp = jj_scanpos; + if (jj_3_7()) { + jj_scanpos = xsp; + if (jj_3R_206()) return true; + } + if (jj_scan_token(LPARAN)) return true; return false; } - private boolean jj_3R_190() + private boolean jj_3R_199() { - if (jj_scan_token(RPARAN)) return true; + if (jj_scan_token(ANY)) return true; Token xsp; while (true) { xsp = jj_scanpos; if (jj_scan_token(21)) { jj_scanpos = xsp; break; } } - xsp = jj_scanpos; - if (jj_3_7()) { - jj_scanpos = xsp; - if (jj_3R_206()) return true; - } - if (jj_scan_token(LPARAN)) return true; + if (jj_3R_216()) return true; return false; } @@ -9384,23 +9299,6 @@ private boolean jj_3R_195() return false; } - private boolean jj_3R_291() - { - if (jj_scan_token(FUNCTIONCALC)) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(21)) { jj_scanpos = xsp; break; } - } - if (jj_3R_319()) return true; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(21)) { jj_scanpos = xsp; break; } - } - if (jj_scan_token(LPARAN)) return true; - return false; - } - private boolean jj_3R_209() { if (jj_3R_195()) return true; @@ -9418,6 +9316,23 @@ private boolean jj_3R_192() return false; } + private boolean jj_3R_291() + { + if (jj_scan_token(FUNCTIONCALC)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(21)) { jj_scanpos = xsp; break; } + } + if (jj_3R_319()) return true; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(21)) { jj_scanpos = xsp; break; } + } + if (jj_scan_token(LPARAN)) return true; + return false; + } + private boolean jj_3R_326() { Token xsp; @@ -9604,6 +9519,106 @@ private boolean jj_3R_323() return false; } + private boolean jj_3_2() + { + if (jj_scan_token(RPARAN)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(21)) { jj_scanpos = xsp; break; } + } + if (jj_3R_189()) return true; + return false; + } + + private boolean jj_3R_222() + { + Token xsp; + xsp = jj_scanpos; + if (jj_3_2()) { + jj_scanpos = xsp; + if (jj_3_3()) { + jj_scanpos = xsp; + if (jj_3R_288()) return true; + } + } + return false; + } + + private boolean jj_3R_318() + { + if (jj_scan_token(PLUS)) return true; + return false; + } + + private boolean jj_3R_317() + { + if (jj_scan_token(MINUS)) return true; + return false; + } + + private boolean jj_3R_290() + { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_317()) { + jj_scanpos = xsp; + if (jj_3R_318()) return true; + } + return false; + } + + private boolean jj_3R_329() + { + if (jj_scan_token(COMMA)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(21)) { jj_scanpos = xsp; break; } + } + if (jj_3R_319()) return true; + return false; + } + + private boolean jj_3R_316() + { + if (jj_3R_323()) return true; + if (jj_scan_token(COLON)) return true; + return false; + } + + private boolean jj_3R_292() + { + if (jj_scan_token(FUNCTIONMAX)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(21)) { jj_scanpos = xsp; break; } + } + if (jj_3R_319()) return true; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(21)) { jj_scanpos = xsp; break; } + } + while (true) { + xsp = jj_scanpos; + if (jj_3R_328()) { jj_scanpos = xsp; break; } + } + if (jj_scan_token(LPARAN)) return true; + return false; + } + + private boolean jj_3R_297() + { + Token xsp; + xsp = jj_scanpos; + if (jj_scan_token(40)) { + jj_scanpos = xsp; + if (jj_scan_token(41)) return true; + } + return false; + } + /** Generated Token Manager. */ public CssParserTokenManager token_source; SimpleCharStream jj_input_stream; From 0925e82294a1e0a45930f8bf985b7e7fbaaf6e53 Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Mon, 30 Aug 2021 18:22:05 +0200 Subject: [PATCH 19/40] most cases of meaningful var() appearance should be covered --- org/w3c/css/values/CssImage.java | 64 +++++++++++++++++++++++++------- 1 file changed, 50 insertions(+), 14 deletions(-) diff --git a/org/w3c/css/values/CssImage.java b/org/w3c/css/values/CssImage.java index 11fdff632..c7a7393f1 100644 --- a/org/w3c/css/values/CssImage.java +++ b/org/w3c/css/values/CssImage.java @@ -46,6 +46,16 @@ public final int getType() { } } + boolean contains_variable = false; + + public boolean hasCssVariable() { + return contains_variable; + } + + public void markCssVariable() { + contains_variable = true; + } + public static boolean isVerticalIdent(CssIdent ident) { return ident.equals(top) || ident.equals(bottom); } @@ -149,7 +159,7 @@ public void setImageList(CssExpression exp, ApplContext ac) gotcolor = true; break; case CssTypes.CSS_IDENT: - if (CssColorCSS3.currentColor.equals((CssIdent) val)) { + if (CssColorCSS3.currentColor.equals(val.getIdent())) { v.add(val); gotcolor = true; break; @@ -233,7 +243,7 @@ private void _setLinearGradient(CssExpression exp, ApplContext ac) exp.next(); break; case CssTypes.CSS_IDENT: - CssIdent ident = (CssIdent) val; + CssIdent ident = val.getIdent(); if (to.equals(ident)) { CssValueList vl = new CssValueList(); vl.add(to); @@ -258,13 +268,13 @@ private void _setLinearGradient(CssExpression exp, ApplContext ac) val.toString(), name, ac); } - v1 = getLinearGradientIdent((CssIdent) val); + v1 = getLinearGradientIdent(val.getIdent()); if (v1 == null) { throw new InvalidParamException("value", val.toString(), name, ac); } - vl.add(v1); + vl.add((val.getRawType() == CssTypes.CSS_IDENT) ? v1 : val); isV1Vertical = isVerticalIdent(v1); exp.next(); if (exp.end()) { @@ -280,7 +290,7 @@ private void _setLinearGradient(CssExpression exp, ApplContext ac) val.toString(), name, ac); } - v2 = getLinearGradientIdent((CssIdent) val); + v2 = getLinearGradientIdent(val.getIdent()); if (v2 == null) { throw new InvalidParamException("value", val.toString(), @@ -293,7 +303,7 @@ private void _setLinearGradient(CssExpression exp, ApplContext ac) val.toString(), name, ac); } - vl.add(v2); + vl.add((val.getRawType() == CssTypes.CSS_IDENT) ? v2 : val); exp.next(); } v.add(vl); @@ -378,7 +388,7 @@ private void _setRadialGradient(CssExpression exp, ApplContext ac) parse_prolog = true; break; case CssTypes.CSS_IDENT: - CssIdent id = (CssIdent) val; + CssIdent id = val.getIdent(); parse_prolog = at.equals(id) || (getShape(id) != null) || (getExtentIdent(id) != null); @@ -472,7 +482,7 @@ private CssValue parseRadialProlog(CssExpression expression, throw new InvalidParamException("value", val, name, ac); case CssTypes.CSS_IDENT: - CssIdent id = (CssIdent) val; + CssIdent id = val.getIdent(); // final 'at' if (at.equals(id)) { CssExpression exp = new CssExpression(); @@ -554,6 +564,32 @@ private final ArrayList parseColorStops(CssExpression expression, boolean prev_is_hint = false; boolean got_length_percentage; + if (expression.hasCssVariable()) { + markCssVariable(); + // we won't check if type is unknown + stop = new ArrayList<>(2); + while (!expression.end()) { + stop1 = expression.getValue(); + op = expression.getOperator(); + if (op == SPACE && expression.getRemainingCount() > 1) { + expression.next(); + stop = new ArrayList<>(2); + stop.add(stop1); + stop.add(expression.getValue()); + op = expression.getOperator(); + v.add(new CssValueList(stop)); + } else { + v.add(stop1); + } + expression.next(); + if (!expression.end() && op != COMMA) { + expression.starts(); + throw new InvalidParamException("operator", + Character.toString(op), ac); + } + } + return v; + } while (!expression.end()) { val = expression.getValue(); op = expression.getOperator(); @@ -571,16 +607,16 @@ private final ArrayList parseColorStops(CssExpression expression, case CssTypes.CSS_HASH_IDENT: stopcol = new CssColor(); stopcol.setShortRGBColor(ac, val.getHashIdent().toString()); - stop1 = stopcol; + stop1 = (val.getRawType() == CssTypes.CSS_HASH_IDENT) ? stopcol : val; break; case CssTypes.CSS_IDENT: if (CssColorCSS3.currentColor.equals(val.getIdent())) { - stop1 = CssColorCSS3.currentColor; + stop1 = (val.getRawType() == CssTypes.CSS_IDENT) ? CssColorCSS3.currentColor : val; break; } stopcol = new CssColor(); stopcol.setIdentColor(ac, val.getIdent().toString()); - stop1 = stopcol; + stop1 = (val.getRawType() == CssTypes.CSS_IDENT) ? stopcol : val; break; case CssTypes.CSS_COLOR: stop1 = val; @@ -617,7 +653,7 @@ private final ArrayList parseColorStops(CssExpression expression, stopcol.setShortRGBColor(ac, val.getHashIdent().toString()); // TODO we rewrite putting color first, should we do that? stop = new ArrayList(2); - stop.add(stopcol); + stop.add((val.getRawType() == CssTypes.CSS_HASH_IDENT) ? stopcol : val); stop.add(stop1); v.add(new CssValueList(stop)); break; @@ -627,11 +663,11 @@ private final ArrayList parseColorStops(CssExpression expression, "color-stop", ac); } if (CssColorCSS3.currentColor.equals(val.getIdent())) { - stop2 = CssColorCSS3.currentColor; + stop2 = (val.getRawType() == CssTypes.CSS_HASH_IDENT) ? CssColorCSS3.currentColor : val; } else { stopcol = new CssColor(); stopcol.setIdentColor(ac, val.getIdent().toString()); - stop2 = stopcol; + stop2 = (val.getRawType() == CssTypes.CSS_IDENT) ? stopcol : val; } // TODO we rewrite putting color first, should we do that? stop = new ArrayList(2); From 32d81e172522dbdefadb739fe3b5bdb359cf1101 Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Mon, 30 Aug 2021 18:34:11 +0200 Subject: [PATCH 20/40] care for specific test cases (where 0 is an acceptable value of a length/angle/...) --- org/w3c/css/values/CssVariable.java | 30 ++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/org/w3c/css/values/CssVariable.java b/org/w3c/css/values/CssVariable.java index 788ed7eb3..4e2a41753 100644 --- a/org/w3c/css/values/CssVariable.java +++ b/org/w3c/css/values/CssVariable.java @@ -173,7 +173,7 @@ public void checkInteger(ApplContext ac, String callername) throws InvalidParamException { if (_isCheckableType(computed_type)) { _exp_value.getCheckableValue().checkInteger(ac, callername); - } + } } @Override @@ -194,10 +194,11 @@ public boolean equals(Object value) { // extras for conflict resolution @Override public CssLength getLength() throws InvalidParamException { - if (computed_type != CssTypes.CSS_LENGTH) { - throw new ClassCastException("unknown"); + if ((computed_type != CssTypes.CSS_LENGTH) + || (computed_type == CssTypes.CSS_NUMBER)) { + return _exp_value.getLength(); } - return _exp_value.getLength(); + throw new ClassCastException("unknown"); } @Override @@ -218,26 +219,29 @@ public CssNumber getNumber() throws InvalidParamException { @Override public CssTime getTime() throws InvalidParamException { - if (computed_type != CssTypes.CSS_TIME) { - throw new ClassCastException("unknown"); + if ((computed_type == CssTypes.CSS_TIME) + || (computed_type == CssTypes.CSS_NUMBER)) { + return _exp_value.getTime(); } - return _exp_value.getTime(); + throw new ClassCastException("unknown"); } @Override public CssAngle getAngle() throws InvalidParamException { - if (computed_type != CssTypes.CSS_ANGLE) { - throw new ClassCastException("unknown"); + if ((computed_type == CssTypes.CSS_ANGLE) + || (computed_type == CssTypes.CSS_NUMBER)) { + return _exp_value.getAngle(); } - return _exp_value.getAngle(); + throw new ClassCastException("unknown"); } @Override public CssFrequency getFrequency() throws InvalidParamException { - if (computed_type != CssTypes.CSS_FREQUENCY) { - throw new ClassCastException("unknown"); + if ((computed_type == CssTypes.CSS_FREQUENCY) + || (computed_type == CssTypes.CSS_NUMBER)) { + return _exp_value.getFrequency(); } - return _exp_value.getFrequency(); + throw new ClassCastException("unknown"); } @Override From 2bdd71ce1a26af1b9dd34ffff2a5101e344986c6 Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Mon, 30 Aug 2021 19:07:21 +0200 Subject: [PATCH 21/40] mark for color functions --- org/w3c/css/parser/analyzer/CssParser.jj | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/org/w3c/css/parser/analyzer/CssParser.jj b/org/w3c/css/parser/analyzer/CssParser.jj index 1b6fa6c02..97be9ad63 100644 --- a/org/w3c/css/parser/analyzer/CssParser.jj +++ b/org/w3c/css/parser/analyzer/CssParser.jj @@ -422,9 +422,9 @@ public abstract class CssParser { break; case CssTypes.CSS_COLOR: CssColor co = (CssColor) v; -// if (co.hasCssVariable()) { -// expr.markCssVariable(); -// } + if (co.hasCssVariable()) { + expr.markCssVariable(); + } break; default: // do nothing From dbe49ad75e7ecd416793523cc577972f371a5c3d Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Mon, 30 Aug 2021 19:07:31 +0200 Subject: [PATCH 22/40] regen --- org/w3c/css/parser/analyzer/CssParser.java | 117 +++++++++++---------- 1 file changed, 59 insertions(+), 58 deletions(-) diff --git a/org/w3c/css/parser/analyzer/CssParser.java b/org/w3c/css/parser/analyzer/CssParser.java index 69d702529..171fb0721 100644 --- a/org/w3c/css/parser/analyzer/CssParser.java +++ b/org/w3c/css/parser/analyzer/CssParser.java @@ -2,25 +2,71 @@ /* Generated By:JavaCC: Do not edit this line. CssParser.java */ package org.w3c.css.parser.analyzer; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.net.URL; + +import org.w3c.css.values.CssValue; +import org.w3c.css.values.CssOperator; +import org.w3c.css.values.CssAngle; +import org.w3c.css.values.CssCheckableValue; +import org.w3c.css.values.CssExpression; +import org.w3c.css.values.CssString; +import org.w3c.css.values.CssURL; +import org.w3c.css.values.CssLength; +import org.w3c.css.values.CssNumber; +import org.w3c.css.values.CssAttr; +import org.w3c.css.values.CssBracket; +import org.w3c.css.values.CssCalc; +import org.w3c.css.values.CssClamp; +import org.w3c.css.values.CssColor; +import org.w3c.css.values.CssComparator; +import org.w3c.css.values.CssFlexibleLength; +import org.w3c.css.values.CssFunction; +import org.w3c.css.values.CssFrequency; +import org.w3c.css.values.CssHashIdent; +import org.w3c.css.values.CssIdent; +import org.w3c.css.values.CssImage; +import org.w3c.css.values.CssMax; +import org.w3c.css.values.CssMin; +import org.w3c.css.values.CssPercentage; +import org.w3c.css.values.CssSwitch; +import org.w3c.css.values.CssTime; +import org.w3c.css.values.CssUnicodeRange; +import org.w3c.css.values.CssResolution; +import org.w3c.css.values.CssRatio; +import org.w3c.css.values.CssSemitone; +import org.w3c.css.values.CssTypes; +import org.w3c.css.values.CssVolume; +import org.w3c.css.values.CssVariable; +import org.w3c.css.properties.css.CssProperty; +import org.w3c.css.parser.CssError; +import org.w3c.css.parser.CssErrorToken; +import org.w3c.css.parser.CssSelectors; +import org.w3c.css.parser.CssParseException; +import org.w3c.css.parser.AtRule; +import org.w3c.css.atrules.svg.AtRuleColorProfile; import org.w3c.css.atrules.css.AtRuleCounterStyle; import org.w3c.css.atrules.css.AtRuleFontFace; import org.w3c.css.atrules.css.AtRuleKeyframes; import org.w3c.css.atrules.css.AtRuleMedia; +import org.w3c.css.atrules.css.media.MediaFeature; +import org.w3c.css.atrules.css.media.MediaRangeFeature; import org.w3c.css.atrules.css.AtRulePage; import org.w3c.css.atrules.css.AtRulePhoneticAlphabet; import org.w3c.css.atrules.css.AtRulePreference; import org.w3c.css.atrules.css.AtRuleSupports; -import org.w3c.css.atrules.css.AtRuleViewport; -import org.w3c.css.atrules.css.media.MediaFeature; -import org.w3c.css.atrules.css.media.MediaRangeFeature; import org.w3c.css.atrules.css.supports.SupportsFeature; -import org.w3c.css.atrules.svg.AtRuleColorProfile; -import org.w3c.css.parser.AtRule; -import org.w3c.css.parser.CssError; -import org.w3c.css.parser.CssErrorToken; -import org.w3c.css.parser.CssParseException; -import org.w3c.css.parser.CssSelectors; -import org.w3c.css.properties.css.CssProperty; +import org.w3c.css.atrules.css.AtRuleViewport; +import org.w3c.css.util.ApplContext; +import org.w3c.css.util.CssProfile; +import org.w3c.css.util.CssVersion; +import org.w3c.css.util.InvalidParamException; +import org.w3c.css.util.WarningParamException; +import org.w3c.css.util.Util; + import org.w3c.css.selectors.AdjacentSiblingSelector; import org.w3c.css.selectors.AttributeSelector; import org.w3c.css.selectors.ChildSelector; @@ -37,51 +83,6 @@ import org.w3c.css.selectors.attributes.AttributeStart; import org.w3c.css.selectors.attributes.AttributeSubstr; import org.w3c.css.selectors.attributes.AttributeSuffix; -import org.w3c.css.util.ApplContext; -import org.w3c.css.util.CssProfile; -import org.w3c.css.util.CssVersion; -import org.w3c.css.util.InvalidParamException; -import org.w3c.css.util.Util; -import org.w3c.css.util.WarningParamException; -import org.w3c.css.values.CssAngle; -import org.w3c.css.values.CssAttr; -import org.w3c.css.values.CssBracket; -import org.w3c.css.values.CssCalc; -import org.w3c.css.values.CssCheckableValue; -import org.w3c.css.values.CssClamp; -import org.w3c.css.values.CssColor; -import org.w3c.css.values.CssComparator; -import org.w3c.css.values.CssExpression; -import org.w3c.css.values.CssFlexibleLength; -import org.w3c.css.values.CssFrequency; -import org.w3c.css.values.CssFunction; -import org.w3c.css.values.CssHashIdent; -import org.w3c.css.values.CssIdent; -import org.w3c.css.values.CssImage; -import org.w3c.css.values.CssLength; -import org.w3c.css.values.CssMax; -import org.w3c.css.values.CssMin; -import org.w3c.css.values.CssNumber; -import org.w3c.css.values.CssOperator; -import org.w3c.css.values.CssPercentage; -import org.w3c.css.values.CssRatio; -import org.w3c.css.values.CssResolution; -import org.w3c.css.values.CssSemitone; -import org.w3c.css.values.CssString; -import org.w3c.css.values.CssSwitch; -import org.w3c.css.values.CssTime; -import org.w3c.css.values.CssTypes; -import org.w3c.css.values.CssURL; -import org.w3c.css.values.CssUnicodeRange; -import org.w3c.css.values.CssValue; -import org.w3c.css.values.CssVariable; -import org.w3c.css.values.CssVolume; - -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.UnsupportedEncodingException; -import java.net.URL; -import java.util.ArrayList; /** * A CSS parser @@ -402,9 +403,9 @@ private void setValue(CssValue v, CssExpression expr, break; case CssTypes.CSS_COLOR: CssColor co = (CssColor) v; -// if (co.hasCssVariable()) { -// expr.markCssVariable(); -// } + if (co.hasCssVariable()) { + expr.markCssVariable(); + } break; default: // do nothing From ba696acf480f9775a2ed1c4e3adad3327949d89e Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Mon, 30 Aug 2021 19:08:12 +0200 Subject: [PATCH 23/40] take care of variable handling in the modern syntax of rgb and rgba functions --- org/w3c/css/values/CssColor.java | 85 ++++++++++++++++++++++++++++++-- 1 file changed, 81 insertions(+), 4 deletions(-) diff --git a/org/w3c/css/values/CssColor.java b/org/w3c/css/values/CssColor.java index 95fa673bc..22af3fbb3 100644 --- a/org/w3c/css/values/CssColor.java +++ b/org/w3c/css/values/CssColor.java @@ -37,6 +37,16 @@ public final int getType() { LCH lch = null; DeviceCMYK cmyk = null; + boolean contains_variable = false; + + public boolean hasCssVariable() { + return contains_variable; + } + + public void markCssVariable() { + contains_variable = true; + } + /** * Create a new CssColor. */ @@ -206,17 +216,84 @@ public void setLegacyRGBColor(ApplContext ac, CssExpression exp) */ public void setModernRGBColor(ApplContext ac, CssExpression exp) throws InvalidParamException { - CssValue val = exp.getValue(); - char op = exp.getOperator(); + CssValue val; + char op; color = null; rgba = new RGBA("rgb"); - boolean separator_space = (op == SPACE); + boolean separator_space = true; + + // check for variables + if (exp.hasCssVariable()) { + // don't check value then + markCssVariable(); + + val = exp.getValue(); + op = exp.getOperator(); + separator_space = (op == SPACE); + rgba.setModernStyle(separator_space); + + if (val == null || (!separator_space && (op != COMMA))) { + throw new InvalidParamException("invalid-color", ac); + } + rgba.vr = val; + + exp.next(); + val = exp.getValue(); + op = exp.getOperator(); + + if (val == null || (separator_space && (op != SPACE)) || + (!separator_space && (op != COMMA))) { + throw new InvalidParamException("invalid-color", ac); + } + rgba.vg = val; + exp.next(); + val = exp.getValue(); + op = exp.getOperator(); + + rgba.vb = val; + exp.next(); + + if (!exp.end()) { + // care for old syntax + if (op == COMMA && !separator_space) { + val = exp.getValue(); + rgba.va = val; + } else { + // otherwise modern syntax + if (op != SPACE) { + throw new InvalidParamException("invalid-color", ac); + } + // now we need an alpha. + val = exp.getValue(); + op = exp.getOperator(); + + if (val.getType() != CssTypes.CSS_SWITCH) { + throw new InvalidParamException("rgb", val, ac); + } + if (op != SPACE) { + throw new InvalidParamException("invalid-color", ac); + } + exp.next(); + // now we get the alpha value + if (exp.end()) { + throw new InvalidParamException("rgb", exp.getValue(), ac); + } + val = exp.getValue(); + rgba.va = val; + } + exp.next(); + } + return; + } + + val = exp.getValue(); + op = exp.getOperator(); + separator_space = (op == SPACE); rgba.setModernStyle(separator_space); if (val == null || (!separator_space && (op != COMMA))) { throw new InvalidParamException("invalid-color", ac); } - switch (val.getType()) { case CssTypes.CSS_NUMBER: rgba.setPercent(false); From 6f622798e33a701ee8c71802ce72f8142470348d Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Mon, 30 Aug 2021 19:22:14 +0200 Subject: [PATCH 24/40] typo... --- org/w3c/css/values/CssVariable.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org/w3c/css/values/CssVariable.java b/org/w3c/css/values/CssVariable.java index 4e2a41753..ab9ea31ce 100644 --- a/org/w3c/css/values/CssVariable.java +++ b/org/w3c/css/values/CssVariable.java @@ -194,7 +194,7 @@ public boolean equals(Object value) { // extras for conflict resolution @Override public CssLength getLength() throws InvalidParamException { - if ((computed_type != CssTypes.CSS_LENGTH) + if ((computed_type == CssTypes.CSS_LENGTH) || (computed_type == CssTypes.CSS_NUMBER)) { return _exp_value.getLength(); } From 38f87673cca0a7335e2f3500a2dc918579e59868 Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Mon, 30 Aug 2021 21:26:40 +0200 Subject: [PATCH 25/40] remove gray() per https://www.w3.org/TR/2020/WD-css-color-4-20201112/ --- org/w3c/css/parser/analyzer/CssParser.jj | 3 --- 1 file changed, 3 deletions(-) diff --git a/org/w3c/css/parser/analyzer/CssParser.jj b/org/w3c/css/parser/analyzer/CssParser.jj index 97be9ad63..5c0467fb9 100644 --- a/org/w3c/css/parser/analyzer/CssParser.jj +++ b/org/w3c/css/parser/analyzer/CssParser.jj @@ -3376,9 +3376,6 @@ CssValue function() : } else if (funcname.equals("lab(")) { color.setLABColor(ac, exp); return color; - } else if (funcname.equals("gray(")) { - color.setGrayColor(ac, exp); - return color; } else if (funcname.equals("lch(")) { color.setLCHColor(ac, exp); return color; From ee3f0d734142092d507c2ad58d9564a780f4f496 Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Mon, 30 Aug 2021 21:27:56 +0200 Subject: [PATCH 26/40] regen --- org/w3c/css/parser/analyzer/CssParser.java | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/org/w3c/css/parser/analyzer/CssParser.java b/org/w3c/css/parser/analyzer/CssParser.java index 171fb0721..885067ab8 100644 --- a/org/w3c/css/parser/analyzer/CssParser.java +++ b/org/w3c/css/parser/analyzer/CssParser.java @@ -7429,9 +7429,6 @@ final public boolean prio() throws ParseException { } else if (funcname.equals("lab(")) { color.setLABColor(ac, exp); {if ("" != null) return color;} - } else if (funcname.equals("gray(")) { - color.setGrayColor(ac, exp); - {if ("" != null) return color;} } else if (funcname.equals("lch(")) { color.setLCHColor(ac, exp); {if ("" != null) return color;} @@ -7903,14 +7900,6 @@ private boolean jj_3R_205() return false; } - private boolean jj_3R_320() - { - if (jj_3R_195()) return true; - if (jj_scan_token(EQ)) return true; - if (jj_scan_token(NUMBER)) return true; - return false; - } - private boolean jj_3R_189() { Token xsp; @@ -7934,6 +7923,14 @@ private boolean jj_3R_204() return false; } + private boolean jj_3R_320() + { + if (jj_3R_195()) return true; + if (jj_scan_token(EQ)) return true; + if (jj_scan_token(NUMBER)) return true; + return false; + } + private boolean jj_3R_293() { if (jj_scan_token(FUNCTIONMIN)) return true; From 4cc5df5924ff25a3d2c6e646f38c7e2b8a0f8f9d Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Mon, 30 Aug 2021 21:32:46 +0200 Subject: [PATCH 27/40] remove gray() per https://www.w3.org/TR/2020/WD-css-color-4-20201112/ --- org/w3c/css/values/CssColor.java | 77 +------------------------------- org/w3c/css/values/LAB.java | 32 ++++--------- 2 files changed, 10 insertions(+), 99 deletions(-) diff --git a/org/w3c/css/values/CssColor.java b/org/w3c/css/values/CssColor.java index 22af3fbb3..7fa988264 100644 --- a/org/w3c/css/values/CssColor.java +++ b/org/w3c/css/values/CssColor.java @@ -11,8 +11,6 @@ import org.w3c.css.util.CssVersion; import org.w3c.css.util.InvalidParamException; -import java.math.BigDecimal; - import static org.w3c.css.values.CssOperator.COMMA; import static org.w3c.css.values.CssOperator.SPACE; @@ -249,7 +247,7 @@ public void setModernRGBColor(ApplContext ac, CssExpression exp) exp.next(); val = exp.getValue(); op = exp.getOperator(); - + rgba.vb = val; exp.next(); @@ -1024,79 +1022,6 @@ public void setLABColor(ApplContext ac, CssExpression exp) } } - public void setGrayColor(ApplContext ac, CssExpression exp) - throws InvalidParamException { - // HWB defined in CSSColor Level 4 and onward, currently used in the CSS level - if (ac.getCssVersion().compareTo(CssVersion.CSS3) < 0) { - StringBuilder sb = new StringBuilder(); - sb.append("gray(").append(exp.toStringFromStart()).append(')'); - throw new InvalidParamException("notversion", sb.toString(), - ac.getCssVersionString(), ac); - } - - color = null; - lab = new LAB(); - lab.setGray(true); - CssValue val = exp.getValue(); - char op = exp.getOperator(); - // L - if (val == null) { - throw new InvalidParamException("invalid-color", ac); - } - switch (val.getType()) { - case CssTypes.CSS_NUMBER: - lab.setL(ac, val); - break; - default: - throw new InvalidParamException("rgb", val, ac); // FIXME gray - } - - // A - CssNumber n = new CssNumber(); - n.setValue(BigDecimal.ZERO); - lab.setA(ac, n); - // B - lab.setB(ac, n); - - exp.next(); - if (!exp.end()) { - if (op != SPACE) { - throw new InvalidParamException("invalid-color", ac); - } - // now we need an alpha. - val = exp.getValue(); - op = exp.getOperator(); - - if (val.getType() != CssTypes.CSS_SWITCH) { - throw new InvalidParamException("rgb", val, ac); - } - if (op != SPACE) { - throw new InvalidParamException("invalid-color", ac); - } - exp.next(); - // now we get the alpha value - val = exp.getValue(); - if (val == null) { - throw new InvalidParamException("invalid-color", exp.toStringFromStart(), ac); - } - switch (val.getType()) { - case CssTypes.CSS_NUMBER: - case CssTypes.CSS_PERCENTAGE: - lab.setAlpha(ac, val); - break; - default: - exp.starts(); - throw new InvalidParamException("rgb", val, ac); // FIXME gray - } - exp.next(); - } - // extra values? - if (!exp.end()) { - exp.starts(); - throw new InvalidParamException("rgb", exp.toStringFromStart(), ac); - } - } - public void setLCHColor(ApplContext ac, CssExpression exp) throws InvalidParamException { diff --git a/org/w3c/css/values/LAB.java b/org/w3c/css/values/LAB.java index 6a5cea91c..c948d39e6 100644 --- a/org/w3c/css/values/LAB.java +++ b/org/w3c/css/values/LAB.java @@ -13,7 +13,6 @@ public class LAB { String output = null; CssValue vl, va, vb, alpha; boolean faSet = false; - boolean isGray = false; /** * Create a new LAB @@ -27,7 +26,7 @@ public static final CssValue filterL(ApplContext ac, CssValue val) // TODO add warning about uncheckability // might need to extend... } else { - if (val.getType() == CssTypes.CSS_NUMBER) { + if (val.getType() == CssTypes.CSS_PERCENTAGE) { CssCheckableValue v = val.getCheckableValue(); if (!v.isPositive()) { ac.getFrame().addWarning("out-of-range", val.toString()); @@ -78,11 +77,6 @@ public final void setAlpha(ApplContext ac, CssValue val) alpha = RGBA.filterAlpha(ac, val); } - public final boolean setGray(boolean isGray) { - this.isGray = isGray; - return isGray; - } - public boolean equals(LAB other) { if (other != null) { return (vl.equals(other.vl) && va.equals(other.va) && vb.equals(other.vb) && @@ -97,23 +91,15 @@ public boolean equals(LAB other) { public String toString() { if (output == null) { StringBuilder sb; - if (isGray) { - sb = new StringBuilder("gray("); - sb.append(vl); - if (faSet) { - sb.append(" / ").append(alpha); - } - sb.append(')'); - } else { - sb = new StringBuilder("lab("); - sb.append(vl).append(' '); - sb.append(va).append(' '); - sb.append(vb); - if (faSet) { - sb.append(" / ").append(alpha); - } - sb.append(')'); + + sb = new StringBuilder("lab("); + sb.append(vl).append(' '); + sb.append(va).append(' '); + sb.append(vb); + if (faSet) { + sb.append(" / ").append(alpha); } + sb.append(')'); output = sb.toString(); } return output; From 835d0d8a994768b36e9d88b31a8a784f20be3bd8 Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Tue, 31 Aug 2021 00:09:40 +0200 Subject: [PATCH 28/40] err msg for LAB --- org/w3c/css/util/Messages.properties.en | 1 + org/w3c/css/util/Messages.properties.fr | 1 + 2 files changed, 2 insertions(+) diff --git a/org/w3c/css/util/Messages.properties.en b/org/w3c/css/util/Messages.properties.en index b3ff14ce8..7f42f3338 100644 --- a/org/w3c/css/util/Messages.properties.en +++ b/org/w3c/css/util/Messages.properties.en @@ -279,6 +279,7 @@ error.url: \u201C%s\u201D is an incorrect URL # used by org.w3c.css.values.CssColor error.rgb: \u201C%s\u201D is not a valid color 3 or 6 hexadecimals numbers +error.lab: \u201C%s\u201D is not a valid LAB color error.angle: \u201C%s\u201D is not a valid angle. Value should be between \u201C0\u201D and \u201C360\u201D # used by org.w3c.css.values.CssNumber diff --git a/org/w3c/css/util/Messages.properties.fr b/org/w3c/css/util/Messages.properties.fr index d763d5ba8..ef93d2db3 100644 --- a/org/w3c/css/util/Messages.properties.fr +++ b/org/w3c/css/util/Messages.properties.fr @@ -292,6 +292,7 @@ error.url: \u201C%s\u201D n'est pas une URL correcte. # used by org.w3c.css.values.CssColor error.rgb: \u201C%s\u201D n'est pas une couleur valide (qui doit contenir 3 ou 6 chiffres hexadécimaux). +error.lab: \u201C%s\u201D n'est pas une couleur LAB valide error.angle: \u201C%s\u201D n'est pas une angle valide. La valeur doit être entre 0 et 360 # used by org.w3c.css.values.CssNumber From 2a0621b6a7f422b360b97a8c91a44d30ccd30c22 Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Tue, 31 Aug 2021 00:11:24 +0200 Subject: [PATCH 29/40] fix to LAB per https://www.w3.org/TR/2021/WD-css-color-4-20210601/#funcdef-lab and care about presence of var() --- org/w3c/css/values/CssColor.java | 56 ++++++++++++++++++++------------ 1 file changed, 35 insertions(+), 21 deletions(-) diff --git a/org/w3c/css/values/CssColor.java b/org/w3c/css/values/CssColor.java index 7fa988264..7b11769de 100644 --- a/org/w3c/css/values/CssColor.java +++ b/org/w3c/css/values/CssColor.java @@ -937,20 +937,27 @@ public void setLABColor(ApplContext ac, CssExpression exp) ac.getCssVersionString(), ac); } + if (exp.hasCssVariable()) { + markCssVariable(); + // we still parse variables as they will be ignored + // we check the delimiter syntax, and other failures + } + color = null; lab = new LAB(); CssValue val = exp.getValue(); char op = exp.getOperator(); // L if (val == null || op != SPACE) { - throw new InvalidParamException("invalid-color", ac); + throw new InvalidParamException("lab", ac); } switch (val.getType()) { - case CssTypes.CSS_NUMBER: + case CssTypes.CSS_PERCENTAGE: + case CssTypes.CSS_VARIABLE: lab.setL(ac, val); break; default: - throw new InvalidParamException("rgb", val, ac); // FIXME lab + throw new InvalidParamException("lab", val, ac); } // A @@ -961,11 +968,14 @@ public void setLABColor(ApplContext ac, CssExpression exp) exp.starts(); throw new InvalidParamException("invalid-color", ac); } - if (val.getType() == CssTypes.CSS_NUMBER) { - lab.setA(ac, val); - } else { - exp.starts(); - throw new InvalidParamException("rgb", val, ac); // FIXME lab + switch (val.getType()) { + case CssTypes.CSS_NUMBER: + case CssTypes.CSS_VARIABLE: + lab.setA(ac, val); + break; + default: + exp.starts(); + throw new InvalidParamException("lab", val, ac); } // B @@ -974,51 +984,55 @@ public void setLABColor(ApplContext ac, CssExpression exp) op = exp.getOperator(); if (val == null) { exp.starts(); - throw new InvalidParamException("invalid-color", ac); + throw new InvalidParamException("lab", ac); } - if (val.getType() == CssTypes.CSS_NUMBER) { - lab.setB(ac, val); - } else { - exp.starts(); - throw new InvalidParamException("rgb", val, ac); // FIXME lab + switch (val.getType()) { + case CssTypes.CSS_NUMBER: + case CssTypes.CSS_VARIABLE: + lab.setB(ac, val); + break; + default: + exp.starts(); + throw new InvalidParamException("lab", val, ac); } - + exp.next(); if (!exp.end()) { if (op != SPACE) { - throw new InvalidParamException("invalid-color", ac); + throw new InvalidParamException("lab", ac); } // now we need an alpha. val = exp.getValue(); op = exp.getOperator(); if (val.getType() != CssTypes.CSS_SWITCH) { - throw new InvalidParamException("rgb", val, ac); + throw new InvalidParamException("lab", val, ac); } if (op != SPACE) { - throw new InvalidParamException("invalid-color", ac); + throw new InvalidParamException("lab", ac); } exp.next(); // now we get the alpha value val = exp.getValue(); if (val == null) { - throw new InvalidParamException("invalid-color", exp.toStringFromStart(), ac); + throw new InvalidParamException("lab", exp.toStringFromStart(), ac); } switch (val.getType()) { case CssTypes.CSS_NUMBER: case CssTypes.CSS_PERCENTAGE: + case CssTypes.CSS_VARIABLE: lab.setAlpha(ac, val); break; default: exp.starts(); - throw new InvalidParamException("rgb", val, ac); // FIXME lab + throw new InvalidParamException("lab", val, ac); // FIXME lab } exp.next(); } // extra values? if (!exp.end()) { exp.starts(); - throw new InvalidParamException("rgb", exp.toStringFromStart(), ac); + throw new InvalidParamException("lab", exp.toStringFromStart(), ac); } } From fb702e65fd410e2634a958374051874acf1adf9f Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Tue, 31 Aug 2021 00:27:19 +0200 Subject: [PATCH 30/40] turn into a more generic message --- org/w3c/css/util/Messages.properties.en | 4 ++-- org/w3c/css/util/Messages.properties.fr | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/org/w3c/css/util/Messages.properties.en b/org/w3c/css/util/Messages.properties.en index 7f42f3338..183ba58fb 100644 --- a/org/w3c/css/util/Messages.properties.en +++ b/org/w3c/css/util/Messages.properties.en @@ -1,7 +1,7 @@ # Master localization string file: $Id$ # parameters use %s when ordered sequencially # you can use specific ordering by adding a digit after it -# like "foo %s2 bar %s1 toto %s3 titi" parameters 1,2,3 will be at %s1, %s1 and %s3 +# like "foo %s2 bar %s1 toto %s3 titi" parameters 1,2,3 will be at %s1, %s2 and %s3 direction: ltr language_name: English @@ -279,7 +279,7 @@ error.url: \u201C%s\u201D is an incorrect URL # used by org.w3c.css.values.CssColor error.rgb: \u201C%s\u201D is not a valid color 3 or 6 hexadecimals numbers -error.lab: \u201C%s\u201D is not a valid LAB color +error.colorfunc: \u201C%s1\u201D is not a valid %s2 color error.angle: \u201C%s\u201D is not a valid angle. Value should be between \u201C0\u201D and \u201C360\u201D # used by org.w3c.css.values.CssNumber diff --git a/org/w3c/css/util/Messages.properties.fr b/org/w3c/css/util/Messages.properties.fr index ef93d2db3..c41f7e7ca 100644 --- a/org/w3c/css/util/Messages.properties.fr +++ b/org/w3c/css/util/Messages.properties.fr @@ -292,7 +292,7 @@ error.url: \u201C%s\u201D n'est pas une URL correcte. # used by org.w3c.css.values.CssColor error.rgb: \u201C%s\u201D n'est pas une couleur valide (qui doit contenir 3 ou 6 chiffres hexadécimaux). -error.lab: \u201C%s\u201D n'est pas une couleur LAB valide +error.colorfunc: \u201C%s1\u201D n'est pas une couleur %s2 valide error.angle: \u201C%s\u201D n'est pas une angle valide. La valeur doit être entre 0 et 360 # used by org.w3c.css.values.CssNumber From 2ccd18dac6cf21f7a7c0a915a3fef730b5b2072f Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Tue, 31 Aug 2021 00:34:33 +0200 Subject: [PATCH 31/40] fix lch per https://www.w3.org/TR/2021/WD-css-color-4-20210601/#funcdef-lch --- org/w3c/css/values/CssColor.java | 72 +++++++++++++++++++------------- 1 file changed, 43 insertions(+), 29 deletions(-) diff --git a/org/w3c/css/values/CssColor.java b/org/w3c/css/values/CssColor.java index 7b11769de..4cc742997 100644 --- a/org/w3c/css/values/CssColor.java +++ b/org/w3c/css/values/CssColor.java @@ -949,7 +949,7 @@ public void setLABColor(ApplContext ac, CssExpression exp) char op = exp.getOperator(); // L if (val == null || op != SPACE) { - throw new InvalidParamException("lab", ac); + throw new InvalidParamException("colorfunc", exp, "Lab", ac); } switch (val.getType()) { case CssTypes.CSS_PERCENTAGE: @@ -957,7 +957,7 @@ public void setLABColor(ApplContext ac, CssExpression exp) lab.setL(ac, val); break; default: - throw new InvalidParamException("lab", val, ac); + throw new InvalidParamException("colorfunc", val, "Lab", ac); } // A @@ -975,7 +975,7 @@ public void setLABColor(ApplContext ac, CssExpression exp) break; default: exp.starts(); - throw new InvalidParamException("lab", val, ac); + throw new InvalidParamException("colorfunc", val, "Lab", ac); } // B @@ -984,7 +984,7 @@ public void setLABColor(ApplContext ac, CssExpression exp) op = exp.getOperator(); if (val == null) { exp.starts(); - throw new InvalidParamException("lab", ac); + throw new InvalidParamException("colorfunc", exp, "Lab", ac); } switch (val.getType()) { case CssTypes.CSS_NUMBER: @@ -993,29 +993,29 @@ public void setLABColor(ApplContext ac, CssExpression exp) break; default: exp.starts(); - throw new InvalidParamException("lab", val, ac); + throw new InvalidParamException("colorfunc", val, "Lab", ac); } - + exp.next(); if (!exp.end()) { if (op != SPACE) { - throw new InvalidParamException("lab", ac); + throw new InvalidParamException("colorfunc", op, "Lab", ac); } // now we need an alpha. val = exp.getValue(); op = exp.getOperator(); if (val.getType() != CssTypes.CSS_SWITCH) { - throw new InvalidParamException("lab", val, ac); + throw new InvalidParamException("colorfunc", val, "Lab", ac); } if (op != SPACE) { - throw new InvalidParamException("lab", ac); + throw new InvalidParamException("colorfunc", val, "Lab", ac); } exp.next(); // now we get the alpha value val = exp.getValue(); if (val == null) { - throw new InvalidParamException("lab", exp.toStringFromStart(), ac); + throw new InvalidParamException("colorfunc", exp.toStringFromStart(), "Lab", ac); } switch (val.getType()) { case CssTypes.CSS_NUMBER: @@ -1025,14 +1025,14 @@ public void setLABColor(ApplContext ac, CssExpression exp) break; default: exp.starts(); - throw new InvalidParamException("lab", val, ac); // FIXME lab + throw new InvalidParamException("colorfunc", val, "Lab", ac); } exp.next(); } // extra values? if (!exp.end()) { exp.starts(); - throw new InvalidParamException("lab", exp.toStringFromStart(), ac); + throw new InvalidParamException("colorfunc", exp.toStringFromStart(), "Lab", ac); } } @@ -1046,6 +1046,9 @@ public void setLCHColor(ApplContext ac, CssExpression exp) throw new InvalidParamException("notversion", sb.toString(), ac.getCssVersionString(), ac); } + if (exp.hasCssVariable()) { + markCssVariable(); + } color = null; lch = new LCH(); @@ -1056,11 +1059,12 @@ public void setLCHColor(ApplContext ac, CssExpression exp) throw new InvalidParamException("invalid-color", ac); } switch (val.getType()) { - case CssTypes.CSS_NUMBER: + case CssTypes.CSS_PERCENTAGE: + case CssTypes.CSS_VARIABLE: lch.setL(ac, val); break; default: - throw new InvalidParamException("rgb", val, ac); // FIXME lch + throw new InvalidParamException("colorfunc", val, "LCH", ac); } // A @@ -1071,11 +1075,15 @@ public void setLCHColor(ApplContext ac, CssExpression exp) exp.starts(); throw new InvalidParamException("invalid-color", ac); } - if (val.getType() == CssTypes.CSS_NUMBER) { - lch.setC(ac, val); - } else { - exp.starts(); - throw new InvalidParamException("rgb", val, ac); // FIXME lch + + switch (val.getType()) { + case CssTypes.CSS_NUMBER: + case CssTypes.CSS_VARIABLE: + lch.setC(ac, val); + break; + default: + exp.starts(); + throw new InvalidParamException("colorfunc", val, "LCH", ac); } // B @@ -1083,13 +1091,18 @@ public void setLCHColor(ApplContext ac, CssExpression exp) val = exp.getValue(); op = exp.getOperator(); if (val == null) { - throw new InvalidParamException("invalid-color", exp.toStringFromStart(), ac); + throw new InvalidParamException("colorfunc", exp.toStringFromStart(), "LCH", ac); } - if (val.getType() == CssTypes.CSS_NUMBER) { - lch.setH(ac, val); - } else { - exp.starts(); - throw new InvalidParamException("rgb", val, ac); // FIXME lch + + switch (val.getType()) { + case CssTypes.CSS_NUMBER: + case CssTypes.CSS_ANGLE: + case CssTypes.CSS_VARIABLE: + lch.setH(ac, val); + break; + default: + exp.starts(); + throw new InvalidParamException("colorfunc", val, "LCH", ac); } exp.next(); @@ -1102,7 +1115,7 @@ public void setLCHColor(ApplContext ac, CssExpression exp) op = exp.getOperator(); if (val.getType() != CssTypes.CSS_SWITCH) { - throw new InvalidParamException("rgb", val, ac); + throw new InvalidParamException("colorfunc", val, "LCH", ac); } if (op != SPACE) { throw new InvalidParamException("invalid-color", ac); @@ -1111,23 +1124,24 @@ public void setLCHColor(ApplContext ac, CssExpression exp) // now we get the alpha value val = exp.getValue(); if (val == null) { - throw new InvalidParamException("invalid-color", exp.toStringFromStart(), ac); + throw new InvalidParamException("colorfunc", exp.toStringFromStart(), "LCH", ac); } switch (val.getType()) { case CssTypes.CSS_NUMBER: case CssTypes.CSS_PERCENTAGE: + case CssTypes.CSS_VARIABLE: lch.setAlpha(ac, val); break; default: exp.starts(); - throw new InvalidParamException("rgb", val, ac); // FIXME lch + throw new InvalidParamException("colorfunc", val, "LCH", ac); } exp.next(); } // extra values? if (!exp.end()) { exp.starts(); - throw new InvalidParamException("rgb", exp.toStringFromStart(), ac); + throw new InvalidParamException("colorfunc", exp.toStringFromStart(), "LCH", ac); } } From 66bf5d44b72579d1d5003eff3b15451e9fcdf9c8 Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Tue, 31 Aug 2021 08:14:29 +0200 Subject: [PATCH 32/40] fix to HWB per https://www.w3.org/TR/2021/WD-css-color-4-20210601/#funcdef-hwb and care about presence of var() --- org/w3c/css/values/CssColor.java | 40 +++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/org/w3c/css/values/CssColor.java b/org/w3c/css/values/CssColor.java index 4cc742997..dc6d1944c 100644 --- a/org/w3c/css/values/CssColor.java +++ b/org/w3c/css/values/CssColor.java @@ -836,6 +836,9 @@ public void setHWBColor(ApplContext ac, CssExpression exp) throw new InvalidParamException("notversion", sb.toString(), ac.getCssVersionString(), ac); } + if (exp.hasCssVariable()) { + markCssVariable(); + } color = null; hwb = new HWB(); @@ -849,10 +852,11 @@ public void setHWBColor(ApplContext ac, CssExpression exp) switch (val.getType()) { case CssTypes.CSS_ANGLE: case CssTypes.CSS_NUMBER: + case CssTypes.CSS_VARIABLE: hwb.setHue(ac, val); break; default: - throw new InvalidParamException("rgb", val, ac); // FIXME hwb + throw new InvalidParamException("colorfunc", val, "HWB", ac); } // W @@ -863,11 +867,14 @@ public void setHWBColor(ApplContext ac, CssExpression exp) exp.starts(); throw new InvalidParamException("invalid-color", ac); } - if (val.getType() == CssTypes.CSS_PERCENTAGE) { - hwb.setWhiteness(ac, val); - } else { - exp.starts(); - throw new InvalidParamException("rgb", val, ac); // FIXME hwb + switch (val.getType()) { + case CssTypes.CSS_PERCENTAGE: + case CssTypes.CSS_VARIABLE: + hwb.setWhiteness(ac, val); + break; + default: + exp.starts(); + throw new InvalidParamException("colorfunc", val, "HWB", ac); } // B @@ -878,12 +885,16 @@ public void setHWBColor(ApplContext ac, CssExpression exp) exp.starts(); throw new InvalidParamException("invalid-color", ac); } - if (val.getType() == CssTypes.CSS_PERCENTAGE) { - hwb.setBlackness(ac, val); - } else { - exp.starts(); - throw new InvalidParamException("rgb", val, ac); // FIXME hwb + switch (val.getType()) { + case CssTypes.CSS_PERCENTAGE: + case CssTypes.CSS_VARIABLE: + hwb.setBlackness(ac, val); + break; + default: + exp.starts(); + throw new InvalidParamException("colorfunc", val, "HWB", ac); } + hwb.normalize(); // A @@ -897,7 +908,7 @@ public void setHWBColor(ApplContext ac, CssExpression exp) op = exp.getOperator(); if (val.getType() != CssTypes.CSS_SWITCH) { - throw new InvalidParamException("rgb", val, ac); + throw new InvalidParamException("colorfunc", val, "HWB", ac); } if (op != SPACE) { throw new InvalidParamException("invalid-color", ac); @@ -911,18 +922,19 @@ public void setHWBColor(ApplContext ac, CssExpression exp) switch (val.getType()) { case CssTypes.CSS_NUMBER: case CssTypes.CSS_PERCENTAGE: + case CssTypes.CSS_VARIABLE: hwb.setAlpha(ac, val); break; default: exp.starts(); - throw new InvalidParamException("rgb", val, ac); // FIXME hwb + throw new InvalidParamException("colorfunc", val, "HWB", ac); } exp.next(); } // extra values? if (!exp.end()) { exp.starts(); - throw new InvalidParamException("rgb", exp.toStringFromStart(), ac); + throw new InvalidParamException("colorfunc", exp.toStringFromStart(), "HWB", ac); } } From f004f8e6d47118bd6be9630ce0b986bd2ddefb57 Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Tue, 31 Aug 2021 08:23:13 +0200 Subject: [PATCH 33/40] fix to HSL per https://www.w3.org/TR/2021/WD-css-color-4-20210601/#funcdef-hsl and care about presence of var() --- org/w3c/css/values/CssColor.java | 47 ++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/org/w3c/css/values/CssColor.java b/org/w3c/css/values/CssColor.java index dc6d1944c..af73938d3 100644 --- a/org/w3c/css/values/CssColor.java +++ b/org/w3c/css/values/CssColor.java @@ -429,6 +429,10 @@ public void setHSLColor(ApplContext ac, CssExpression exp) hsl = new HSL(); boolean separator_space = (op == SPACE); + if (exp.hasCssVariable()) { + markCssVariable(); + } + if (val == null || (!separator_space && (op != COMMA))) { throw new InvalidParamException("invalid-color", ac); } @@ -437,10 +441,11 @@ public void setHSLColor(ApplContext ac, CssExpression exp) switch (val.getType()) { case CssTypes.CSS_ANGLE: case CssTypes.CSS_NUMBER: + case CssTypes.CSS_VARIABLE: hsl.setHue(ac, val); break; default: - throw new InvalidParamException("rgb", val, ac); // FIXME hsl + throw new InvalidParamException("colorfunc", val, "HSL", ac); } exp.next(); @@ -453,11 +458,14 @@ public void setHSLColor(ApplContext ac, CssExpression exp) } // S - if (val.getType() == CssTypes.CSS_PERCENTAGE) { - hsl.setSaturation(ac, val); - } else { - exp.starts(); - throw new InvalidParamException("rgb", val, ac); // FIXME hsl + switch (val.getType()) { + case CssTypes.CSS_PERCENTAGE: + case CssTypes.CSS_VARIABLE: + hsl.setSaturation(ac, val); + break; + default: + exp.starts(); + throw new InvalidParamException("colorfunc", val, "HSL", ac); } exp.next(); @@ -469,12 +477,14 @@ public void setHSLColor(ApplContext ac, CssExpression exp) } // L - - if (val.getType() == CssTypes.CSS_PERCENTAGE) { - hsl.setLightness(ac, val); - } else { - exp.starts(); - throw new InvalidParamException("rgb", val, ac); // FIXME hsl + switch (val.getType()) { + case CssTypes.CSS_PERCENTAGE: + case CssTypes.CSS_VARIABLE: + hsl.setLightness(ac, val); + break; + default: + exp.starts(); + throw new InvalidParamException("colorfunc", val, "HSL", ac); } exp.next(); @@ -487,10 +497,12 @@ public void setHSLColor(ApplContext ac, CssExpression exp) switch (val.getType()) { case CssTypes.CSS_NUMBER: case CssTypes.CSS_PERCENTAGE: + case CssTypes.CSS_VARIABLE: hsl.setAlpha(ac, val); break; default: - throw new InvalidParamException("rgb", val, ac); + exp.starts(); + throw new InvalidParamException("colorfunc", val, "HSL", ac); } } else { // otherwise modern syntax @@ -502,7 +514,7 @@ public void setHSLColor(ApplContext ac, CssExpression exp) op = exp.getOperator(); if (val.getType() != CssTypes.CSS_SWITCH) { - throw new InvalidParamException("rgb", val, ac); + throw new InvalidParamException("colorfunc", val, "HSL", ac); } if (op != SPACE) { throw new InvalidParamException("invalid-color", ac); @@ -510,22 +522,23 @@ public void setHSLColor(ApplContext ac, CssExpression exp) exp.next(); // now we get the alpha value if (exp.end()) { - throw new InvalidParamException("rgb", exp.getValue(), ac); + throw new InvalidParamException("colorfunc", exp.getValue(), "HSL", ac); } val = exp.getValue(); switch (val.getType()) { case CssTypes.CSS_NUMBER: case CssTypes.CSS_PERCENTAGE: + case CssTypes.CSS_VARIABLE: hsl.setAlpha(ac, val); break; default: - throw new InvalidParamException("rgb", val, ac); + throw new InvalidParamException("colorfunc", val, "HSL", ac); } } exp.next(); if (!exp.end()) { - throw new InvalidParamException("rgb", exp.getValue(), ac); + throw new InvalidParamException("colorfunc", exp.getValue(), "HSL", ac); } } } From 5a5e11368af66b08fd37d08273e5b8e7de45e86e Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Tue, 31 Aug 2021 09:06:40 +0200 Subject: [PATCH 34/40] variable check at object creation that includes left hand side --- org/w3c/css/values/CssCalc.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/org/w3c/css/values/CssCalc.java b/org/w3c/css/values/CssCalc.java index 52351d105..0b8356b95 100644 --- a/org/w3c/css/values/CssCalc.java +++ b/org/w3c/css/values/CssCalc.java @@ -64,6 +64,8 @@ public CssCalc(ApplContext ac, CssValue value) { if (value.getRawType() == CssTypes.CSS_CALC) { CssCalc c = (CssCalc) value; contains_variable = c.hasCssVariable(); + } else if (value.getType() == CssTypes.CSS_VARIABLE) { + contains_variable = true; } } computed_type = value.getType(); From 4d877b1168b829fa7a0fa3173706a830c0e18dbb Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Tue, 31 Aug 2021 10:19:40 +0200 Subject: [PATCH 35/40] don't throw when var() is used as it can expand as a sub-expression, including separators --- org/w3c/css/values/CssColor.java | 58 +++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 19 deletions(-) diff --git a/org/w3c/css/values/CssColor.java b/org/w3c/css/values/CssColor.java index af73938d3..c9f6f0a79 100644 --- a/org/w3c/css/values/CssColor.java +++ b/org/w3c/css/values/CssColor.java @@ -231,7 +231,8 @@ public void setModernRGBColor(ApplContext ac, CssExpression exp) rgba.setModernStyle(separator_space); if (val == null || (!separator_space && (op != COMMA))) { - throw new InvalidParamException("invalid-color", ac); + // don't throw, perhaps a warning instead? FIXME + // throw new InvalidParamException("invalid-color", ac); } rgba.vr = val; @@ -241,7 +242,8 @@ public void setModernRGBColor(ApplContext ac, CssExpression exp) if (val == null || (separator_space && (op != SPACE)) || (!separator_space && (op != COMMA))) { - throw new InvalidParamException("invalid-color", ac); + // don't throw, perhaps a warning instead? FIXME + // throw new InvalidParamException("invalid-color", ac); } rgba.vg = val; exp.next(); @@ -259,22 +261,26 @@ public void setModernRGBColor(ApplContext ac, CssExpression exp) } else { // otherwise modern syntax if (op != SPACE) { - throw new InvalidParamException("invalid-color", ac); + // don't throw, perhaps a warning instead? FIXME + // throw new InvalidParamException("invalid-color", ac); } // now we need an alpha. val = exp.getValue(); op = exp.getOperator(); if (val.getType() != CssTypes.CSS_SWITCH) { - throw new InvalidParamException("rgb", val, ac); + // don't throw, perhaps a warning instead? FIXME +// throw new InvalidParamException("rgb", val, ac); } if (op != SPACE) { - throw new InvalidParamException("invalid-color", ac); + // don't throw, perhaps a warning instead? FIXME +// throw new InvalidParamException("invalid-color", ac); } exp.next(); // now we get the alpha value if (exp.end()) { - throw new InvalidParamException("rgb", exp.getValue(), ac); + // don't throw, perhaps a warning instead? FIXME +// throw new InvalidParamException("rgb", exp.getValue(), ac); } val = exp.getValue(); rgba.va = val; @@ -434,7 +440,9 @@ public void setHSLColor(ApplContext ac, CssExpression exp) } if (val == null || (!separator_space && (op != COMMA))) { - throw new InvalidParamException("invalid-color", ac); + if (!hasCssVariable()) { + throw new InvalidParamException("invalid-color", ac); + } } // H @@ -445,7 +453,9 @@ public void setHSLColor(ApplContext ac, CssExpression exp) hsl.setHue(ac, val); break; default: - throw new InvalidParamException("colorfunc", val, "HSL", ac); + if (!hasCssVariable()) { + throw new InvalidParamException("colorfunc", val, "HSL", ac); + } } exp.next(); @@ -454,7 +464,9 @@ public void setHSLColor(ApplContext ac, CssExpression exp) if (val == null || (separator_space && (op != SPACE)) || (!separator_space && (op != COMMA))) { - throw new InvalidParamException("invalid-color", ac); + if (!hasCssVariable()) { + throw new InvalidParamException("invalid-color", ac); + } } // S @@ -465,14 +477,16 @@ public void setHSLColor(ApplContext ac, CssExpression exp) break; default: exp.starts(); - throw new InvalidParamException("colorfunc", val, "HSL", ac); + if (!hasCssVariable()) { + throw new InvalidParamException("colorfunc", val, "HSL", ac); + } } exp.next(); val = exp.getValue(); op = exp.getOperator(); - if (val == null) { + if (val == null && !hasCssVariable()) { throw new InvalidParamException("invalid-color", ac); } @@ -484,7 +498,9 @@ public void setHSLColor(ApplContext ac, CssExpression exp) break; default: exp.starts(); - throw new InvalidParamException("colorfunc", val, "HSL", ac); + if (!hasCssVariable()) { + throw new InvalidParamException("colorfunc", val, "HSL", ac); + } } exp.next(); @@ -502,26 +518,28 @@ public void setHSLColor(ApplContext ac, CssExpression exp) break; default: exp.starts(); - throw new InvalidParamException("colorfunc", val, "HSL", ac); + if (!hasCssVariable()) { + throw new InvalidParamException("colorfunc", val, "HSL", ac); + } } } else { // otherwise modern syntax - if (op != SPACE) { + if (op != SPACE && !hasCssVariable()) { throw new InvalidParamException("invalid-color", ac); } // now we need an alpha. val = exp.getValue(); op = exp.getOperator(); - if (val.getType() != CssTypes.CSS_SWITCH) { + if (val.getType() != CssTypes.CSS_SWITCH && !hasCssVariable()) { throw new InvalidParamException("colorfunc", val, "HSL", ac); } - if (op != SPACE) { + if (op != SPACE && !hasCssVariable()) { throw new InvalidParamException("invalid-color", ac); } exp.next(); // now we get the alpha value - if (exp.end()) { + if (exp.end() && !hasCssVariable()) { throw new InvalidParamException("colorfunc", exp.getValue(), "HSL", ac); } val = exp.getValue(); @@ -532,12 +550,14 @@ public void setHSLColor(ApplContext ac, CssExpression exp) hsl.setAlpha(ac, val); break; default: - throw new InvalidParamException("colorfunc", val, "HSL", ac); + if (!hasCssVariable()) { + throw new InvalidParamException("colorfunc", val, "HSL", ac); + } } } exp.next(); - if (!exp.end()) { + if (!exp.end() && !hasCssVariable()) { throw new InvalidParamException("colorfunc", exp.getValue(), "HSL", ac); } } From 3736cfb42f2fceb4217394259a718302f30e4f26 Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Tue, 31 Aug 2021 10:37:43 +0200 Subject: [PATCH 36/40] don't throw when var() is used as it can expand as a sub-expression, including separators (for HWB) --- org/w3c/css/values/CssColor.java | 36 +++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/org/w3c/css/values/CssColor.java b/org/w3c/css/values/CssColor.java index c9f6f0a79..a3d80ec51 100644 --- a/org/w3c/css/values/CssColor.java +++ b/org/w3c/css/values/CssColor.java @@ -879,7 +879,7 @@ public void setHWBColor(ApplContext ac, CssExpression exp) CssValue val = exp.getValue(); char op = exp.getOperator(); // H - if (val == null || op != SPACE) { + if ((val == null || op != SPACE) && !hasCssVariable()) { throw new InvalidParamException("invalid-color", ac); } switch (val.getType()) { @@ -889,14 +889,16 @@ public void setHWBColor(ApplContext ac, CssExpression exp) hwb.setHue(ac, val); break; default: - throw new InvalidParamException("colorfunc", val, "HWB", ac); + if (!hasCssVariable()) { + throw new InvalidParamException("colorfunc", val, "HWB", ac); + } } // W exp.next(); val = exp.getValue(); op = exp.getOperator(); - if (val == null || op != SPACE) { + if ((val == null || op != SPACE) && !hasCssVariable()) { exp.starts(); throw new InvalidParamException("invalid-color", ac); } @@ -907,7 +909,9 @@ public void setHWBColor(ApplContext ac, CssExpression exp) break; default: exp.starts(); - throw new InvalidParamException("colorfunc", val, "HWB", ac); + if (!hasCssVariable()) { + throw new InvalidParamException("colorfunc", val, "HWB", ac); + } } // B @@ -916,7 +920,9 @@ public void setHWBColor(ApplContext ac, CssExpression exp) op = exp.getOperator(); if (val == null || (op != SPACE && exp.getRemainingCount() > 1)) { exp.starts(); - throw new InvalidParamException("invalid-color", ac); + if (!hasCssVariable()) { + throw new InvalidParamException("invalid-color", ac); + } } switch (val.getType()) { case CssTypes.CSS_PERCENTAGE: @@ -925,7 +931,9 @@ public void setHWBColor(ApplContext ac, CssExpression exp) break; default: exp.starts(); - throw new InvalidParamException("colorfunc", val, "HWB", ac); + if (!hasCssVariable()) { + throw new InvalidParamException("colorfunc", val, "HWB", ac); + } } hwb.normalize(); @@ -933,23 +941,23 @@ public void setHWBColor(ApplContext ac, CssExpression exp) // A exp.next(); if (!exp.end()) { - if (op != SPACE) { + if (op != SPACE && !hasCssVariable()) { throw new InvalidParamException("invalid-color", ac); } // now we need an alpha. val = exp.getValue(); op = exp.getOperator(); - if (val.getType() != CssTypes.CSS_SWITCH) { + if ((val.getType() != CssTypes.CSS_SWITCH) && !hasCssVariable()) { throw new InvalidParamException("colorfunc", val, "HWB", ac); } - if (op != SPACE) { + if (op != SPACE && !hasCssVariable()) { throw new InvalidParamException("invalid-color", ac); } exp.next(); // now we get the alpha value val = exp.getValue(); - if (val == null) { + if (val == null && !hasCssVariable()) { throw new InvalidParamException("invalid-color", exp.toStringFromStart(), ac); } switch (val.getType()) { @@ -960,14 +968,18 @@ public void setHWBColor(ApplContext ac, CssExpression exp) break; default: exp.starts(); - throw new InvalidParamException("colorfunc", val, "HWB", ac); + if (!hasCssVariable()) { + throw new InvalidParamException("colorfunc", val, "HWB", ac); + } } exp.next(); } // extra values? if (!exp.end()) { exp.starts(); - throw new InvalidParamException("colorfunc", exp.toStringFromStart(), "HWB", ac); + if (!hasCssVariable()) { + throw new InvalidParamException("colorfunc", exp.toStringFromStart(), "HWB", ac); + } } } From e759eeb360b4440fc002489c308a82b5a879d986 Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Tue, 31 Aug 2021 10:39:50 +0200 Subject: [PATCH 37/40] don't throw when var() is used as it can expand as a sub-expression, including separators (for Lab) --- org/w3c/css/values/CssColor.java | 36 +++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/org/w3c/css/values/CssColor.java b/org/w3c/css/values/CssColor.java index a3d80ec51..4772c9274 100644 --- a/org/w3c/css/values/CssColor.java +++ b/org/w3c/css/values/CssColor.java @@ -1005,7 +1005,7 @@ public void setLABColor(ApplContext ac, CssExpression exp) CssValue val = exp.getValue(); char op = exp.getOperator(); // L - if (val == null || op != SPACE) { + if ((val == null || op != SPACE) && !hasCssVariable()) { throw new InvalidParamException("colorfunc", exp, "Lab", ac); } switch (val.getType()) { @@ -1014,14 +1014,16 @@ public void setLABColor(ApplContext ac, CssExpression exp) lab.setL(ac, val); break; default: - throw new InvalidParamException("colorfunc", val, "Lab", ac); + if (!hasCssVariable()) { + throw new InvalidParamException("colorfunc", val, "Lab", ac); + } } // A exp.next(); val = exp.getValue(); op = exp.getOperator(); - if (val == null || op != SPACE) { + if ((val == null || op != SPACE) && !hasCssVariable()) { exp.starts(); throw new InvalidParamException("invalid-color", ac); } @@ -1032,7 +1034,9 @@ public void setLABColor(ApplContext ac, CssExpression exp) break; default: exp.starts(); - throw new InvalidParamException("colorfunc", val, "Lab", ac); + if (!hasCssVariable()) { + throw new InvalidParamException("colorfunc", val, "Lab", ac); + } } // B @@ -1041,7 +1045,9 @@ public void setLABColor(ApplContext ac, CssExpression exp) op = exp.getOperator(); if (val == null) { exp.starts(); - throw new InvalidParamException("colorfunc", exp, "Lab", ac); + if (!hasCssVariable()) { + throw new InvalidParamException("colorfunc", exp, "Lab", ac); + } } switch (val.getType()) { case CssTypes.CSS_NUMBER: @@ -1050,28 +1056,30 @@ public void setLABColor(ApplContext ac, CssExpression exp) break; default: exp.starts(); - throw new InvalidParamException("colorfunc", val, "Lab", ac); + if (!hasCssVariable()) { + throw new InvalidParamException("colorfunc", val, "Lab", ac); + } } exp.next(); if (!exp.end()) { - if (op != SPACE) { + if (op != SPACE && !hasCssVariable()) { throw new InvalidParamException("colorfunc", op, "Lab", ac); } // now we need an alpha. val = exp.getValue(); op = exp.getOperator(); - if (val.getType() != CssTypes.CSS_SWITCH) { + if ((val.getType() != CssTypes.CSS_SWITCH) && !hasCssVariable()) { throw new InvalidParamException("colorfunc", val, "Lab", ac); } - if (op != SPACE) { + if (op != SPACE && !hasCssVariable()) { throw new InvalidParamException("colorfunc", val, "Lab", ac); } exp.next(); // now we get the alpha value val = exp.getValue(); - if (val == null) { + if ((val == null) && !hasCssVariable()) { throw new InvalidParamException("colorfunc", exp.toStringFromStart(), "Lab", ac); } switch (val.getType()) { @@ -1082,14 +1090,18 @@ public void setLABColor(ApplContext ac, CssExpression exp) break; default: exp.starts(); - throw new InvalidParamException("colorfunc", val, "Lab", ac); + if (!hasCssVariable()) { + throw new InvalidParamException("colorfunc", val, "Lab", ac); + } } exp.next(); } // extra values? if (!exp.end()) { exp.starts(); - throw new InvalidParamException("colorfunc", exp.toStringFromStart(), "Lab", ac); + if (!hasCssVariable()) { + throw new InvalidParamException("colorfunc", exp.toStringFromStart(), "Lab", ac); + } } } From cf8aa39d63a0c7ff3c4a1a868bbc003f12bd019e Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Tue, 31 Aug 2021 10:44:47 +0200 Subject: [PATCH 38/40] don't throw when var() is used as it can expand as a sub-expression, including separators (for LCH) --- org/w3c/css/values/CssColor.java | 58 +++++++++++++++++++------------- 1 file changed, 34 insertions(+), 24 deletions(-) diff --git a/org/w3c/css/values/CssColor.java b/org/w3c/css/values/CssColor.java index 4772c9274..fdc2a2c14 100644 --- a/org/w3c/css/values/CssColor.java +++ b/org/w3c/css/values/CssColor.java @@ -908,8 +908,8 @@ public void setHWBColor(ApplContext ac, CssExpression exp) hwb.setWhiteness(ac, val); break; default: - exp.starts(); if (!hasCssVariable()) { + exp.starts(); throw new InvalidParamException("colorfunc", val, "HWB", ac); } } @@ -919,8 +919,8 @@ public void setHWBColor(ApplContext ac, CssExpression exp) val = exp.getValue(); op = exp.getOperator(); if (val == null || (op != SPACE && exp.getRemainingCount() > 1)) { - exp.starts(); if (!hasCssVariable()) { + exp.starts(); throw new InvalidParamException("invalid-color", ac); } } @@ -930,8 +930,8 @@ public void setHWBColor(ApplContext ac, CssExpression exp) hwb.setBlackness(ac, val); break; default: - exp.starts(); if (!hasCssVariable()) { + exp.starts(); throw new InvalidParamException("colorfunc", val, "HWB", ac); } } @@ -967,8 +967,8 @@ public void setHWBColor(ApplContext ac, CssExpression exp) hwb.setAlpha(ac, val); break; default: - exp.starts(); if (!hasCssVariable()) { + exp.starts(); throw new InvalidParamException("colorfunc", val, "HWB", ac); } } @@ -976,8 +976,8 @@ public void setHWBColor(ApplContext ac, CssExpression exp) } // extra values? if (!exp.end()) { - exp.starts(); if (!hasCssVariable()) { + exp.starts(); throw new InvalidParamException("colorfunc", exp.toStringFromStart(), "HWB", ac); } } @@ -1033,8 +1033,8 @@ public void setLABColor(ApplContext ac, CssExpression exp) lab.setA(ac, val); break; default: - exp.starts(); if (!hasCssVariable()) { + exp.starts(); throw new InvalidParamException("colorfunc", val, "Lab", ac); } } @@ -1044,8 +1044,8 @@ public void setLABColor(ApplContext ac, CssExpression exp) val = exp.getValue(); op = exp.getOperator(); if (val == null) { - exp.starts(); if (!hasCssVariable()) { + exp.starts(); throw new InvalidParamException("colorfunc", exp, "Lab", ac); } } @@ -1055,8 +1055,8 @@ public void setLABColor(ApplContext ac, CssExpression exp) lab.setB(ac, val); break; default: - exp.starts(); if (!hasCssVariable()) { + exp.starts(); throw new InvalidParamException("colorfunc", val, "Lab", ac); } } @@ -1089,8 +1089,8 @@ public void setLABColor(ApplContext ac, CssExpression exp) lab.setAlpha(ac, val); break; default: - exp.starts(); if (!hasCssVariable()) { + exp.starts(); throw new InvalidParamException("colorfunc", val, "Lab", ac); } } @@ -1124,7 +1124,7 @@ public void setLCHColor(ApplContext ac, CssExpression exp) CssValue val = exp.getValue(); char op = exp.getOperator(); // L - if (val == null || op != SPACE) { + if ((val == null || op != SPACE) && !hasCssVariable()) { throw new InvalidParamException("invalid-color", ac); } switch (val.getType()) { @@ -1133,14 +1133,16 @@ public void setLCHColor(ApplContext ac, CssExpression exp) lch.setL(ac, val); break; default: - throw new InvalidParamException("colorfunc", val, "LCH", ac); + if (!hasCssVariable()) { + throw new InvalidParamException("colorfunc", val, "LCH", ac); + } } // A exp.next(); val = exp.getValue(); op = exp.getOperator(); - if (val == null || op != SPACE) { + if ((val == null || op != SPACE) && !hasCssVariable()) { exp.starts(); throw new InvalidParamException("invalid-color", ac); } @@ -1151,15 +1153,17 @@ public void setLCHColor(ApplContext ac, CssExpression exp) lch.setC(ac, val); break; default: - exp.starts(); - throw new InvalidParamException("colorfunc", val, "LCH", ac); + if (!hasCssVariable()) { + exp.starts(); + throw new InvalidParamException("colorfunc", val, "LCH", ac); + } } // B exp.next(); val = exp.getValue(); op = exp.getOperator(); - if (val == null) { + if ((val == null) && !hasCssVariable()) { throw new InvalidParamException("colorfunc", exp.toStringFromStart(), "LCH", ac); } @@ -1170,23 +1174,25 @@ public void setLCHColor(ApplContext ac, CssExpression exp) lch.setH(ac, val); break; default: - exp.starts(); - throw new InvalidParamException("colorfunc", val, "LCH", ac); + if (!hasCssVariable()) { + exp.starts(); + throw new InvalidParamException("colorfunc", val, "LCH", ac); + } } exp.next(); if (!exp.end()) { - if (op != SPACE) { + if ((op != SPACE) && !hasCssVariable()) { throw new InvalidParamException("invalid-color", ac); } // now we need an alpha. val = exp.getValue(); op = exp.getOperator(); - if (val.getType() != CssTypes.CSS_SWITCH) { + if ((val.getType() != CssTypes.CSS_SWITCH) && !hasCssVariable()) { throw new InvalidParamException("colorfunc", val, "LCH", ac); } - if (op != SPACE) { + if ((op != SPACE) && !hasCssVariable()) { throw new InvalidParamException("invalid-color", ac); } exp.next(); @@ -1202,15 +1208,19 @@ public void setLCHColor(ApplContext ac, CssExpression exp) lch.setAlpha(ac, val); break; default: - exp.starts(); - throw new InvalidParamException("colorfunc", val, "LCH", ac); + if (!hasCssVariable()) { + exp.starts(); + throw new InvalidParamException("colorfunc", val, "LCH", ac); + } } exp.next(); } // extra values? if (!exp.end()) { - exp.starts(); - throw new InvalidParamException("colorfunc", exp.toStringFromStart(), "LCH", ac); + if (!hasCssVariable()) { + exp.starts(); + throw new InvalidParamException("colorfunc", exp.toStringFromStart(), "LCH", ac); + } } } From 78c20e05949dec27892832e2ed23c9cf11de6d85 Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Tue, 31 Aug 2021 10:55:04 +0200 Subject: [PATCH 39/40] don't throw when var() is used as it can expand as a sub-expression, including separators (for device-cmyk) --- org/w3c/css/values/CssColor.java | 61 +++++++++++++++++++++----------- 1 file changed, 41 insertions(+), 20 deletions(-) diff --git a/org/w3c/css/values/CssColor.java b/org/w3c/css/values/CssColor.java index fdc2a2c14..c59006d30 100644 --- a/org/w3c/css/values/CssColor.java +++ b/org/w3c/css/values/CssColor.java @@ -1241,94 +1241,115 @@ public void setDeviceCMYKColor(ApplContext ac, CssExpression exp) char op = exp.getOperator(); boolean gotFallback = false; + if (exp.hasCssVariable()) { + markCssVariable(); + } // C - if (val == null || op != SPACE) { + if ((val == null || op != SPACE) && !hasCssVariable()) { throw new InvalidParamException("invalid-color", ac); } switch (val.getType()) { case CssTypes.CSS_NUMBER: case CssTypes.CSS_PERCENTAGE: + case CssTypes.CSS_VARIABLE: cmyk.setC(ac, val); break; default: - throw new InvalidParamException("rgb", val, ac); // FIXME device-cmyk + if (!hasCssVariable()) { + throw new InvalidParamException("colorfunc", val, "device-cmyk", ac); + } } // M exp.next(); val = exp.getValue(); op = exp.getOperator(); - if (val == null || op != SPACE) { + if ((val == null || op != SPACE) && !hasCssVariable()) { exp.starts(); throw new InvalidParamException("invalid-color", ac); } switch (val.getType()) { case CssTypes.CSS_NUMBER: case CssTypes.CSS_PERCENTAGE: + case CssTypes.CSS_VARIABLE: cmyk.setM(ac, val); break; default: - throw new InvalidParamException("rgb", val, ac); // FIXME device-cmyk + if (!hasCssVariable()) { + exp.starts(); + throw new InvalidParamException("colorfunc", val, "device-cmyk", ac); + } } // Y exp.next(); val = exp.getValue(); op = exp.getOperator(); - if (val == null) { - throw new InvalidParamException("invalid-color", exp.toStringFromStart(), ac); + if ((val == null) && !hasCssVariable()) { + throw new InvalidParamException("colorfunc", exp.toStringFromStart(), "device-cmyk", ac); } switch (val.getType()) { case CssTypes.CSS_NUMBER: case CssTypes.CSS_PERCENTAGE: + case CssTypes.CSS_VARIABLE: cmyk.setY(ac, val); break; default: - throw new InvalidParamException("rgb", val, ac); // FIXME device-cmyk + if (!hasCssVariable()) { + exp.starts(); + throw new InvalidParamException("colorfunc", val, "device-cmyk", ac); + } } // K exp.next(); val = exp.getValue(); op = exp.getOperator(); - if (val == null) { - throw new InvalidParamException("invalid-color", exp.toStringFromStart(), ac); + if ((val == null) && !hasCssVariable()) { + throw new InvalidParamException("colorfunc", exp.toStringFromStart(), "device-cmyk", ac); } switch (val.getType()) { case CssTypes.CSS_NUMBER: case CssTypes.CSS_PERCENTAGE: + case CssTypes.CSS_VARIABLE: cmyk.setK(ac, val); break; default: - throw new InvalidParamException("rgb", val, ac); // FIXME device-cmyk + if (!hasCssVariable()) { + exp.starts(); + throw new InvalidParamException("colorfunc", val, "device-cmyk", ac); + } } exp.next(); if (!exp.end()) { - if (op == SPACE) { + if ((op == SPACE) && !hasCssVariable()) { // now we need an alpha. val = exp.getValue(); op = exp.getOperator(); - if (val.getType() != CssTypes.CSS_SWITCH) { + if ((val.getType() != CssTypes.CSS_SWITCH) && !hasCssVariable()) { throw new InvalidParamException("rgb", val, ac); } - if (op != SPACE) { + if ((op != SPACE) && !hasCssVariable()) { throw new InvalidParamException("invalid-color", ac); } exp.next(); // now we get the alpha value val = exp.getValue(); - if (val == null) { + if ((val == null) && !hasCssVariable()) { throw new InvalidParamException("invalid-color", exp.toStringFromStart(), ac); } switch (val.getType()) { case CssTypes.CSS_NUMBER: case CssTypes.CSS_PERCENTAGE: + case CssTypes.CSS_VARIABLE: cmyk.setAlpha(ac, val); break; default: - exp.starts(); - throw new InvalidParamException("rgb", val, ac); // FIXME lch + if (!hasCssVariable()) { + exp.starts(); + throw new InvalidParamException("colorfunc", val, "device-cmyk", ac); + } } // need to check if we get a comma after this. op = exp.getOperator(); @@ -1336,8 +1357,8 @@ public void setDeviceCMYKColor(ApplContext ac, CssExpression exp) } if (op == COMMA) { //the optional fallback - if (exp.end()) { - throw new InvalidParamException("rgb", exp.toStringFromStart(), ac); + if (exp.end() && !hasCssVariable()) { + throw new InvalidParamException("colorfunc", exp.toStringFromStart(), "device-cmyk", ac); } val = exp.getValue(); cmyk.setFallbackColor(ac, val); @@ -1345,9 +1366,9 @@ public void setDeviceCMYKColor(ApplContext ac, CssExpression exp) } } // extra values? - if (!exp.end()) { + if (!exp.end() && !hasCssVariable()) { exp.starts(); - throw new InvalidParamException("rgb", exp.toStringFromStart(), ac); + throw new InvalidParamException("colorfunc", exp.toStringFromStart(), "device-cmyk", ac); } } From a7b785a93c874afe09f126ea054616fd839e14ff Mon Sep 17 00:00:00 2001 From: Yves Lafon Date: Tue, 31 Aug 2021 11:06:29 +0200 Subject: [PATCH 40/40] better handling or 'real' idents --- org/w3c/css/values/CssImage.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/org/w3c/css/values/CssImage.java b/org/w3c/css/values/CssImage.java index c7a7393f1..8a811fd46 100644 --- a/org/w3c/css/values/CssImage.java +++ b/org/w3c/css/values/CssImage.java @@ -150,8 +150,8 @@ public void setImageList(CssExpression exp, ApplContext ac) break; case CssTypes.CSS_HASH_IDENT: c = new CssColor(); - c.setShortRGBColor(ac, val.toString()); - v.add(c); + c.setShortRGBColor(ac, val.getHashIdent().toString()); + v.add((val.getRawType() == CssTypes.CSS_HASH_IDENT) ? c : val); gotcolor = true; break; case CssTypes.CSS_COLOR: @@ -165,8 +165,8 @@ public void setImageList(CssExpression exp, ApplContext ac) break; } c = new CssColor(); - c.setIdentColor(ac, val.toString()); - v.add(c); + c.setIdentColor(ac, val.getIdent().toString()); + v.add((val.getRawType() == CssTypes.CSS_IDENT) ? c : val); gotcolor = true; break; default: