docs: Expression XreadAllTypesPrimary(boolean boole) {
  
          Expression e = null;
  
          switch (token.tokenType) {
  
              case Tokens.SUBSTRING :
              case Tokens.SUBSTRING_REGEX :
              case Tokens.LOWER :
              case Tokens.UPPER :
              case Tokens.TRANSLATE_REGEX :
              case Tokens.TRIM :
              case Tokens.OVERLAY :
              case Tokens.NORMALIZE :
  
              //
              case Tokens.POSITION :
              case Tokens.OCCURRENCES_REGEX :
              case Tokens.POSITION_REGEX :
              case Tokens.EXTRACT :
              case Tokens.CHAR_LENGTH :
              case Tokens.CHARACTER_LENGTH :
              case Tokens.OCTET_LENGTH :
              case Tokens.CARDINALITY :
              case Tokens.ABS :
              case Tokens.MOD :
              case Tokens.LN :
              case Tokens.EXP :
              case Tokens.POWER :
              case Tokens.SQRT :
              case Tokens.FLOOR :
              case Tokens.CEILING :
              case Tokens.CEIL :
              case Tokens.WIDTH_BUCKET :
                  FunctionSQL function =
                      FunctionSQL.newSQLFunction(token.tokenString,
                                                 compileContext);
  
                  if (function == null) {
                      throw unsupportedFeature();
                  }
  
                  e = readSQLFunction(function);
                  break;
  
              default :
                  e = XreadAllTypesValueExpressionPrimary(boole);
          }
  
          e = XreadModifier(e);
  
          return e;
      }