code: private Expression parseAtom() {
          // Parse a number
          if (tokenizer.current().isNumber()) {
              return new Number(tokenizer.consume().getContents());
          }
          // Parse a color
          if (tokenizer.current().isSpecialIdentifier("#")) {
              return new Color(tokenizer.consume().getSource());
          }
  
          // Parse an identifier or function call
          if (tokenizer.current().isIdentifier() || tokenizer.current().isString()) {
              return parseIdentifierOrFunctionCall();
          }
  
          // Parse as variable reference
          if (tokenizer.current().isSpecialIdentifier("$")) {
              return new VariableReference(tokenizer.consume().getContents());
          }
  
          // Parse as expression in braces
          if (tokenizer.current().isSymbol("(")) {
              tokenizer.consumeExpectedSymbol("(");
              Expression expression = parseExpression(true);
              tokenizer.consumeExpectedSymbol(")");
              if (expression instanceof Operation) {
                  ((Operation) expression).protect();
              }
              return expression;
          }
  
          // Attribute values can be followed by things like "!import" -> make a value list
          if (tokenizer.current().isSymbol("!") && tokenizer.next().isIdentifier()) {
              tokenizer.consumeExpectedSymbol("!");
              return new Value("!" + tokenizer.consume().getContents());
          }
  
          // We failed! Report an error and return "" as value (we will fail anyway...)
          tokenizer.addError(tokenizer.current(),
                             "Unexpected token: '" + tokenizer.consume().getSource() + "'. Expected an expression.");
          return new Value("");
      }
docs: /*
  Parses an atom. This is either an identifier ("bold"), a number (15px), a string ('OpenSans'), a color
  (#454545) or another expression in braces.