private void parseStyleValue(Context ctx, Other name) throws IOException {
		StyleDefinition sdef = new StyleDefinition(ctx.block.owner, name.getValue(), name.getLine());
		for (Token token; (token = next(ctx)) != null;) {
			if (token instanceof Other) {
				new ConstantValue(sdef, ((Other)token).getValue(), token.getLine());
			} else if (token instanceof Symbol) {
				final char symbol = ((Symbol)token).getValue();
				if (symbol == ';')
					break; //done
				if (symbol == '}') {
					putback(token);
					break; //done
				}
				if (",()+-*/".indexOf(symbol) < 0)
					throw error("unexpected '" + symbol + '\'', token);
				new ConstantValue(sdef, "" + symbol, token.getLine());
			} else if (token instanceof Id) {
				//handle @xx or @xxx()
				if (_in.peek() == '(') { //a function invocation
					putback(token);
					parseExpression(ctx, new Expression(sdef, token.getLine()), EOPAREN);
						//note: the expression is a child of sdef
				} else {
					new FunctionValue(sdef, ((Id)token).getValue(), token.getLine()); //no parenthesis
				}
			}
		}
	}