// Copyright 2021, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

// Generated using:
//  pub global run charcode \$=dollar \'=single_quote \"=double_quote \
//      \' '\\\n"$`# \t'

/// "Horizontal Tab" control character, common name.
const int $tab = 0x09;

/// "Line feed" control character.
const int $lf = 0x0a;

/// Space character.
const int $space = 0x20;

/// Character `"`, short name.
// ignore: constant_identifier_names
const int $double_quote = 0x22;

/// Character `#`.
const int $hash = 0x23;

/// Character `$`.
const int $dollar = 0x24;

/// Character "'".
// ignore: constant_identifier_names
const int $single_quote = 0x27;

/// Character `\`.
const int $backslash = 0x5c;

/// Character `` ` ``.
const int $backquote = 0x60;
