}
jj_consume_token(RPARAN);
if (operator != ' ') {
{
if (true) {
throw new CSSParseException(
"invalid operator before a function.", getLocator());
}
}
}
String f = convertIdent(n.image);
LexicalUnitImpl l = (LexicalUnitImpl) params;
boolean loop = true;
if ("rgb(".equals(f)) {
// this is a RGB declaration (e.g. rgb(255, 50%, 0) )
int i = 0;
while (loop && l != null && i < 5) {
switch (i) {
case 0:
case 2:
case 4:
if ((l.getLexicalUnitType() != LexicalUnit.SAC_INTEGER)
&& (l.getLexicalUnitType() != LexicalUnit.SAC_PERCENTAGE)) {
loop = false;
}
break;
case 1:
case 3:
if (l.getLexicalUnitType() != LexicalUnit.SAC_OPERATOR_COMMA) {
loop = false;
}
break;
default: {
if (true) {
throw new ParseException("implementation error");
}
}
}
if (loop) {
l = l.getNextLexicalUnit();
i++;
}
}
if ((i == 5) && loop && (l == null)) {
{
if (true) {
return LexicalUnitImpl.createRGBColor(n.beginLine,
n.beginColumn, prev, params);
}
}
} else {
if (errorHandler != null) {
String errorText;
Locator loc;
if (i < 5) {
if (params == null) {
loc = new LocatorImpl(this, n.beginLine,
n.beginColumn - 1);
errorText = "not enough parameters.";
} else if (l == null) {
loc = new LocatorImpl(this, n.beginLine,
n.beginColumn - 1);
errorText = "not enough parameters: "
+ params.toString();
} else {
loc = new LocatorImpl(this, l.getLineNumber(),
l.getColumnNumber());
errorText = "invalid parameter: " + l.toString();
}
} else {
loc = new LocatorImpl(this, l.getLineNumber(),
l.getColumnNumber());
errorText = "too many parameters: " + l.toString();
}
errorHandler.error(new CSSParseException(errorText, loc));
}
{
if (true) {
throw new JumpException();