// Copyright (c) 2020, 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.

/// Character "'".
const int $apostrophe = 0x27;

/// "Carriage return" control character.
const int $cr = 0x0d;

/// Character `-`.
const int $dash = 0x2d;

/// Character `<`.
const int $equal = 0x3d;

/// Character `!`.
const int $exclamation = 0x21;

/// Character `>`.
const int $gt = 0x3e;

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

/// Character `<`.
const int $lt = 0x3c;

/// Character `?`.
const int $question = 0x3f;

/// Character `"`, short name.
const int $quote = 0x22;

/// Character `/`.
const int $slash = 0x2f;

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

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