diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..49ce72d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+.dart_tool/
+.packages
+pubspec.lock
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..38bc356
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,7 @@
+Lasse R.H. Nielsen, https://github.com/lrhn
+
+Contributors:
+
+Kevin Moore, https://github.com/kevmoo
+Phil Quitslund, https://github.com/pq
+Greg Lowe, https://github.com/xxgreg
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..a1e50f5
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,24 @@
+## 1.2.0
+
+- Release with null safety.
+
+## 1.2.0-nullsafety
+
+- Opt in to null safety experimentally.
+
+## 1.1.3
+
+- Added example, changed lints.
+
+## 1.1.2
+
+- Updated the SDK constraint.
+
+## 1.1.1
+
+- Spelling and linting fixes.
+- Linting fixes.
+
+## 1.1.0
+
+- Initial version
\ No newline at end of file
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..c709cf2
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,30 @@
+# How to Contribute
+
+We'd love to accept your patches and contributions to this project,
+but any larger change should be discussed using the issue tracker
+before submitting a pull request.
+There are a few other guidelines you need to follow.
+
+## Contributor License Agreement
+
+Contributions to this project must be accompanied by a Contributor License
+Agreement. You (or your employer) retain the copyright to your contribution;
+this simply gives us permission to use and redistribute your contributions as
+part of the project. Head over to <https://cla.developers.google.com/> to see
+your current agreements on file or to sign a new one.
+
+You generally only need to submit a CLA once, so if you've already submitted one
+(even if it was for a different project), you probably don't need to do it
+again.
+
+## Code reviews
+
+All submissions by non project members require review.
+We use GitHub pull requests for this purpose. Consult
+[GitHub Help](https://help.github.com/articles/about-pull-requests/) for more
+information on using pull requests.
+
+## Community Guidelines
+
+This project follows
+[Google's Open Source Community Guidelines](https://opensource.google/conduct/).
\ No newline at end of file
diff --git a/README.md b/README.md
index 35c4818..2bba63e 100644
--- a/README.md
+++ b/README.md
@@ -1,51 +1,60 @@
-Character code constants.
+-[![Build Status](https://travis-ci.org/lrhn/charcode.svg?branch=master)](https://travis-ci.org/lrhn/charcode)
+-[![Pub](https://img.shields.io/pub/v/charcode.svg)](https://pub.dev/packages/charcode) -
 
-These libraries define symbolic names for some character codes.
+# Character code constants
 
-This is not an official Goggle package, and is not supported by Google.
+This package defines symbolic names for some character codes (aka. code points).
 
-## Using
+They can used when working directly with characters as integers,
+to make the code more readable: `if (firstChar == $A) ...`.
+
+This is not an official Google package, and is not supported by Google.
+
+## Usage
 
 Import either one of the libraries:
-
-    import "package:charcode/ascii.dart"
-    import "package:charcode/html_entity.dart"
-
+```dart
+import "package:charcode/ascii.dart";
+import "package:charcode/html_entity.dart";
+```
 or import both libraries using the `charcode.dart` library:
+```dart
+import "package:charcode/charcode.dart";
+```
 
-    import "package:charcode/charcode.dart"
-
-# Naming
+## Naming
 
 The character names are preceded by a `$` to avoid conflicting with other
-variables due to the short and common names (for example "$i").
+variables, due to their short and common names (for example "$i").
 
-The characters that are valid in a Dart identifier directly follow the `$`.
+Characters that are valid in a Dart identifier directly follow the `$`.
 Examples: `$_`, `$a`, `$B` and `$3`. Other characters are given symbolic names.
 
-The names of letters are lower-case for lower-case letters, and mixed- or
-upper-case for upper-case letters. The names of symbols are all lower-case,
-and omit suffixes like "sign", "symbol" and "mark". E
-xamples: `$plus`, `$exclamation`
+The names of letters are lower-case for lower-case letters (`$sigma` for `σ`),
+and mixed- or upper-case for upper-case letters (`$Sigma` for `Σ`).
+The names of symbols and punctuation are all lower-case,
+and omit suffixes like "sign", "symbol" and "mark".
+Examples: `$plus`, `$exclamation`, `$tilde`.
 
 The `ascii.dart` library defines a symbolic name for each ASCII character.
-For some chraceters, it has more than one name. For example the common `$tab`
-and the official `$ht` for the horisontal tab.
+Some characters have more than one name. For example the common name `$tab`
+and the official abbreviation `$ht` for the horisontal tab.
 
 The `html_entity.dart` library defines a constant for each HTML 4.01 character
-entity, using the standard entity abbreviation, incluing its case.
+entity using their standard entity abbreviation, including case.
 Examples: `$nbsp` for `&nbps;`, `$aring` for the lower-case `&aring;`
 and `$Aring` for the upper-case `&Aring;`.
 
-The HTML entities includes all characters in the Latin-1 code page, greek
+The HTML entities include all characters in the Latin-1 code page, greek
 letters and some mathematical symbols.
 
-The `charcode.dart` library just exports both `ascii.dart` and
-`html_entity.dart`.
+The `charcode.dart` library exports both `ascii.dart` and
+`html_entity.dart`. Where both libraries define the same name,
+the HTML entity name is preferred.
 
-# Rationale
+## Rationale
 
-The Dart language doesn't have character literals. If that ever happens, this
-library will be irrelevant. Until then, this library can be used for the most
-common characters.
+The Dart language doesn't have character literals.
+If that ever changes, this package will become irrelevant.
+Until then, this package can be used for the most common characters.
 See [http://dartbug.com/4415](request for character literals).
diff --git a/analysis_options.yaml b/analysis_options.yaml
new file mode 100644
index 0000000..86f07d0
--- /dev/null
+++ b/analysis_options.yaml
@@ -0,0 +1,16 @@
+# Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+# for details. All rights reserved. Use of this source is governed by a
+# BSD-style license that can be found in the LICENSE file.
+
+include: package:pedantic/analysis_options.1.9.0.yaml
+analyzer:
+  errors:
+    annotate_overrides: ignore
+    prefer_single_quotes: ignore
+    use_function_type_syntax_for_parameters: ignore
+  enable-experiment:
+    - non-nullable
+
+#linter:
+#   rules:
+#    - prefer_double_quotes
\ No newline at end of file
diff --git a/bin/charcode.dart b/bin/charcode.dart
new file mode 100644
index 0000000..7db4a1d
--- /dev/null
+++ b/bin/charcode.dart
@@ -0,0 +1,913 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import "dart:io"; // For writing directly to file.
+
+import 'package:charcode/ascii.dart';
+
+import "src/uflags.dart";
+
+/// Generates Dart constant declarations for character codes.
+///
+/// Usage:
+/// ```text
+///   charcode (character-range | rename | flags)*
+/// ```
+///
+/// ## Character ranges
+///
+/// A `character-range` is either
+/// * a single charater,
+/// * an escaped character `\n`, `\r`, `\t`, `\xHH`, `\uHHHH` or `\DD*`,
+///   where `H` is a hexadecimal digit and `D` is a decimal digit.
+/// * two characters separated by `-` or the `\d`, `\w` or `\s` escapes, or
+/// * a sequence of character ranges.
+/// Examples include `a`, `a-z`, or `abe-gz`.
+/// Accepts `\n`, `\r`, `\t`, `\`, `\-`, `\xHH` and `\uHHHHHH` escapes.
+///
+/// A (re)name declaration is a single or escaped character, a `=` and an
+/// identifier name, optionally followed by a `:` and a description
+/// Example: `x=cross:"A cross product."`.
+/// The naming names or renames the character and adds or changes
+/// the associated description.
+/// It will not add the character to the output.
+/// Following occurrences of the character will use the new name.
+/// Example: `y y=why x-z` will generate `$y` for the character
+/// code of "y", then `$x`, `$why` and `$z` as well.
+///
+/// ## Flags
+///
+/// `-o` followed by a file name makes output be written to that file
+/// instead of to stdout.
+///
+/// `-f` followed by a file name will read declarations from that file
+/// as well as from the command line. Each line in the file is handled
+/// like a command line argument (not including flags.)
+/// Intended for importing a set of name declarations.
+/// The line is not split on spaces, so it allows comments with spaces
+/// like:
+/// ```text
+/// x=cross:The cross character.
+/// ```
+///
+/// `-p` followed by zero more characters makes those characters be
+/// used as prefix for later generated names. The default is the `$`
+/// character. If setting an empty prefix, names starting with digits
+/// will still use the previously configured prefix character since
+/// identifiers cannot start with a digit.
+///
+/// `-h` includes declarations for HTML entity names.
+///
+/// `--` disables flags in the following command line arguments.
+void main(List<String> args) {
+  String? outputFile;
+  var declarations = CharcodeBuilder();
+  addAscii(declarations);
+
+  var flags = Flags<String>()
+    ..add(FlagConfig('?', null, 'help',
+        description: "Display this usage information"))
+    ..add(FlagConfig.optionalParameter("p", "p", "prefix", r"$",
+        description: "Sets prefix for later generated constants",
+        valueDescription: "PREFIX"))
+    ..add(FlagConfig.requiredParameter("o", "o", "output",
+        description: "Write generated code to file instead of stdout",
+        valueDescription: "FILE"))
+    ..add(FlagConfig.requiredParameter("f", "f", "input",
+        description:
+            "Read instructions from file. Each line of the file is treated as a non-flag command line entry.",
+        valueDescription: "FILE"))
+    ..add(FlagConfig("h", "h", "html",
+        description: "Include HTML entity names in predefined names"));
+
+  for (var arg in parseFlags(flags, args, stderr.writeln)) {
+    var key = arg.key;
+    if (key == null) {
+      // Not a flag, value is command line argument.
+      declarations.parse(arg.value!);
+    } else {
+      switch (key) {
+        case "p":
+          var prefix = arg.value!;
+          if (prefix.isNotEmpty &&
+              (!_isIdentifierPart(prefix) || !_startsWithNonDigit(prefix))) {
+            warn("Invalid prefix, must be valid identifier: $prefix");
+            continue;
+          }
+          declarations.prefix = prefix;
+          break;
+        case "o":
+          if (arg.value != null) {
+            outputFile = arg.value;
+          } else {
+            warn("No file name after `-o` option");
+          }
+          break;
+        case "f":
+          var inputFile = arg.value;
+          if (inputFile != null) {
+            var input = File(inputFile).readAsLinesSync();
+            for (var line in input) {
+              line = line.trimRight();
+              if (line.isNotEmpty) declarations.parse(line);
+            }
+          } else {
+            warn("No file name after `-f` option");
+          }
+          break;
+        case "h":
+          addHtmlEntities(declarations);
+          break;
+        case "?":
+          var buffer = StringBuffer(usageString);
+
+          flags.writeUsage(buffer);
+          stdout
+            ..write(buffer)
+            ..flush();
+          return;
+      }
+    }
+  }
+
+  IOSink output = stdout;
+  if (outputFile != null) {
+    output = File(outputFile).openWrite();
+  }
+  declarations.writeTo(output);
+  if (outputFile != null) {
+    output.close();
+  }
+}
+
+void warn(String warning) {
+  stderr.writeln(warning);
+}
+/// A single declaration to be written to the output.
+class Entry implements Comparable<Entry> {
+
+  /// The code point.
+  final int charCode;
+
+  /// The non-prefixed name to be given
+  final String name;
+
+  /// The prefix to put before the name.
+  ///
+  /// The prefix may be empty, but it won't be if
+  /// the name be used as an identifier by itself
+  /// (which means it starts with a digit).
+  final String prefix;
+
+  /// Any documentation to add to the declaration.
+  final String? comment;
+
+  Entry(this.charCode, this.name, this.prefix, this.comment);
+
+  /// Emits a declaration to [output].
+  ///
+  /// The constant declaration declares the identifier [prefix]+[name]
+  /// to have the value [codePoint].
+  void writeTo(IOSink output) {
+    var hex = charCode.toRadixString(16).padLeft(2, "0");
+    if (comment != null) {
+      output.writeln("/// $comment");
+    }
+    output.writeln("const int $prefix$name = 0x$hex;");
+  }
+
+  /// Orders entries by [charCode] first, then by
+  /// prefixed and name.
+  int compareTo(Entry other) {
+    var delta = charCode - other.charCode;
+    if (delta == 0) {
+      delta = prefix.compareTo(other.prefix);
+      if (delta == 0) {
+        delta = name.compareTo(other.name);
+      }
+    }
+    return delta;
+  }
+}
+
+/// A name and optional description currently assigned to a code point.
+class CharacterDeclaration {
+  /// The unprefixed name to use for the code point.
+  final String name;
+  /// An optional description.
+  final String? description;
+  CharacterDeclaration(this.name, this.description);
+}
+
+/// Character code declaration builder.
+///
+/// Remembers names and descriptions assigned to code points,
+/// and accumulates requestes for declarations for a number
+/// of those.
+/// Allows the prefix to be changed between declaration
+/// requests.
+class CharcodeBuilder {
+  /// Prefix used for all characters being added.
+  String _prefix = r"$";
+
+  /// Reserve prefix used for digits when [_prefix] is empty.
+  String _reservePrefix = r"$";
+
+  final Map<int, CharacterDeclaration> _declarations = {};
+
+  final Set<String> _entryNames = {};
+
+  final List<Entry> _entries = [];
+
+  void parse(String arg) {
+    var scanner = CharScanner(arg);
+    var allowRename = true;
+    while (true) {
+      var start = scanner.index;
+
+      var char = scanner.next();
+      if (char < 0) break;
+      if (char == $backslash) {
+        var escape = interpretCharEscape(scanner);
+        if (escape >= 0) {
+          char == escape;
+        } else if (interpretRangeEscape(scanner)) {
+          allowRename = false;
+          continue;
+        }
+      }
+      var peek = scanner.peek;
+      if (allowRename && peek == $equal) {
+        // A rename.
+        scanner.skip();
+        var newName = scanner.rest;
+        if (newName.isEmpty || !_isIdentifierPart(newName)) {
+          warn("Invalid name: $arg");
+        } else {
+          var colon = newName.indexOf(":");
+          if (colon >= 0) {
+            var description = newName.substring(colon + 1);
+            newName = newName.substring(0, colon);
+            rename(char, newName, description);
+          } else {
+            rename(char, newName);
+          }
+        }
+        break;
+      }
+      allowRename = false;
+      if (peek != $minus) {
+        addChar(char);
+      } else {
+        var afterChar = scanner.index;
+        scanner.skip();
+        var secondChar = scanner.next();
+        if (secondChar < 0) {
+          // Trailing `-`.
+          addChar(char);
+          addChar(peek);
+          continue;
+        }
+        if (secondChar == $backslash) {
+          var escape = interpretCharEscape(scanner);
+          if (escape >= 0) secondChar = escape;
+        }
+        if (char <= secondChar) {
+          addCharRange(char, secondChar);
+        } else {
+          warn(
+              "Invalid range, end befroe start: ${scanner.input.substring(start, scanner.index)}");
+          addChar(char);
+          scanner.index = afterChar;
+        }
+      }
+    }
+  }
+
+  /// Recognize single-character escapes.
+  ///
+  /// - `\n`: Line feed
+  /// - `\r`: Carriage return
+  /// - `\t`: Tab
+  /// - `\x..`: Hex escape, up to two digits.
+  /// - `\u......`: Hex escape, up to six digits.
+  /// - `\[0-9]+`: Decimal escape.
+  /// - `\-` and `\\`: Identitiy escapes.
+  static int interpretCharEscape(CharScanner scanner) {
+    if (scanner.hasNext) {
+      var char = scanner.next();
+      if (char == $n) return $lf;
+      if (char == $r) return $cr;
+      if (char == $t) return $tab;
+      if (char == $u) return scanner.hex(6);
+      if (char == $x) return scanner.hex(2);
+      if (char == $backslash) return char;
+      if (char == $minus) return char;
+      if (_isDigit(char)) return scanner.dec(char);
+      scanner.index--;
+    }
+    return -1;
+  }
+
+  /// Renames `charCode` to `name` in following declarations.
+  ///
+  /// Returns whether the name is valid as an identifier.
+  /// If it is not valid, no change is made.
+  bool rename(int charCode, String name, [String? description]) {
+    if (!_isIdentifierPart(name)) return false;
+    _declarations.putIfAbsent(
+        charCode, () => CharacterDeclaration(name, description));
+    return true;
+  }
+
+  /// Adds a single character to the output.
+  bool addChar(int charCode) {
+    var declaration = _declarations[charCode];
+    if (declaration == null) return false;
+    var name = declaration.name;
+    if (_entryNames.contains(name)) {
+      warn("Existing declaration with name \"$name\" for character "
+          "'${String.fromCharCode(charCode)}' "
+          "(U+${charCode.toRadixString(16).toUpperCase().padLeft(4, "0")})");
+      return false;
+    }
+    var prefix = _prefix;
+    if (!_startsWithNonDigit(declaration.name)) prefix = _reservePrefix;
+    _entries.add(Entry(charCode, name, prefix, declaration.description));
+    _entryNames.add(name);
+    return true;
+  }
+
+  /// Adds a range of characters, both ends inclusive.
+  ///
+  /// If a character in the range has no name, nothing is emitted fo rit.
+  void addCharRange(int start, int end) {
+    for (var charCode = start; charCode <= end; charCode++) {
+      addChar(charCode); // Ignore return value.
+    }
+  }
+
+  /// The current prefix used to prefix declarations.
+  ///
+  /// May be emtpy, otherwise needs to be a valid identifier.
+  String get prefix => _prefix;
+  set prefix(String prefix) {
+    if (!_isIdentifierPart(prefix) ||
+        (prefix.isNotEmpty && !_startsWithNonDigit(prefix))) {
+      throw ArgumentError.value(prefix, "Not a valid identifier start");
+    }
+    _prefix = prefix;
+    if (prefix.isNotEmpty) {
+      _reservePrefix = prefix;
+    }
+  }
+
+  void writeTo(IOSink output) {
+    _entries.sort((a, b) => a.charCode - b.charCode);
+    var separator = "";
+    for (var entry in _entries) {
+      output.write(separator);
+      entry.writeTo(output);
+      separator = "\n";
+    }
+  }
+
+  bool interpretRangeEscape(CharScanner scanner) {
+    if (!scanner.hasNext) return false;
+    var char = scanner.peek;
+    if (char == $d) {
+      addCharRange($0, $9);
+    } else if (char == $s) {
+      addChar($space);
+      addChar($tab);
+      addChar($cr);
+      addChar($lf);
+    } else if (char == $w) {
+      addCharRange($0, $9);
+      addCharRange($A, $Z);
+      addCharRange($a, $z);
+      addChar($_);
+      addChar($$);
+    } else {
+      return false;
+    }
+    scanner.skip();
+    return true;
+  }
+}
+
+/// Whether the string starts with a non-digit.
+///
+/// Only used on strings that have passed [_isIdentifierPart],
+/// and if those start with a non-digit, the string is a valid identifier.
+bool _startsWithNonDigit(String string) =>
+    string.isNotEmpty && (string.codeUnitAt(0) ^ $0) > 9;
+
+/// Whether [string] contains only characters that can be in an identifier.
+bool _isIdentifierPart(String string) {
+  for (var i = 0; i < string.length; i++) {
+    var char = string.codeUnitAt(i);
+    if (char ^ $0 <= 9) continue;
+    var lowerCaseChar = char | 0x20;
+    if (lowerCaseChar >= $a && lowerCaseChar <= $z) continue;
+    if (char == $$ || char == $_) continue;
+    return false;
+  }
+  return true;
+}
+
+class CharScanner {
+  final String input;
+  int index = 0;
+  CharScanner(this.input);
+  // The next character of input.
+  int get peek => index < input.length ? input.codeUnitAt(index) : -1;
+
+  bool get hasNext => index < input.length;
+
+  void skip() {
+    if (index >= input.length) throw StateError("Nothing to skip");
+    index++;
+  }
+
+  String get rest => input.substring(index);
+
+  int next() => index < input.length ? input.codeUnitAt(index++) : -1;
+
+  /// Parses a hex number with at most [maxDigits] digits.
+  int hex(int maxDigits) {
+    var result = 0;
+    while (maxDigits > 0 && index < input.length) {
+      var char = input.codeUnitAt(index);
+      var hexValue = _hexValue(char);
+      if (hexValue < 0) break;
+      result = result * 16 + hexValue;
+      maxDigits--;
+      index++;
+    }
+    return result;
+  }
+
+  /// Parses a decimal number with the first digit already read.
+  int dec(int firstDigit) {
+    var result = firstDigit ^ 0x30;
+    while (index < input.length) {
+      var char = input.codeUnitAt(index);
+      var digit = char ^ 0x30;
+      if (digit > 9) break;
+      result = result * 10 + digit;
+      index++;
+    }
+    return result;
+  }
+
+  static int _hexValue(int char) {
+    var digit = char ^ 0x30;
+    if (digit <= 9) return digit;
+    var lc = (char | 0x20);
+    if (lc >= 0x61 && lc <= 0x66) return lc - (0x61 - 10);
+    return -1;
+  }
+}
+
+bool _isDigit(int char) => (char ^ 0x30) <= 9;
+
+void addAscii(CharcodeBuilder descriptions) {
+  // ASCII character comments and default names.
+  descriptions
+    // Control characters
+    ..rename(0x00, "nul", '"Null character" control character.')
+    ..rename(0x01, "soh", '"Start of Header" control character.')
+    ..rename(0x02, "stx", '"Start of Text" control character.')
+    ..rename(0x03, "etx", '"End of Text" control character.')
+    ..rename(0x04, "eot", '"End of Transmission" control character.')
+    ..rename(0x05, "enq", '"Enquiry" control character.')
+    ..rename(0x06, "ack", '"Acknowledgment" control character.')
+    ..rename(0x07, "bel", '"Bell" control character.')
+    ..rename(0x08, "bs", '"Backspace" control character.')
+    ..rename(0x09, "tab", '"Horizontal Tab" control character, common name.')
+    ..rename(0x0A, "lf", '"Line feed" control character.')
+    ..rename(0x0B, "vt", '"Vertical Tab" control character.')
+    ..rename(0x0C, "ff", '"Form feed" control character.')
+    ..rename(0x0D, "cr", '"Carriage return" control character.')
+    ..rename(0x0E, "so", '"Shift Out" control character.')
+    ..rename(0x0F, "si", '"Shift In" control character.')
+    ..rename(0x10, "dle", '"Data Link Escape" control character.')
+    ..rename(0x11, "dc1", '"Device Control 1" control character (oft. XON).')
+    ..rename(0x12, "dc2", '"Device Control 2" control character.')
+    ..rename(0x13, "dc3", '"Device Control 3" control character (oft. XOFF).')
+    ..rename(0x14, "dc4", '"Device Control 4" control character.')
+    ..rename(0x15, "nak", '"Negative Acknowledgment" control character.')
+    ..rename(0x16, "syn", '"Synchronous idle" control character.')
+    ..rename(0x17, "etb", '"End of Transmission Block" control character.')
+    ..rename(0x18, "can", '"Cancel" control character.')
+    ..rename(0x19, "em", '"End of Medium" control character.')
+    ..rename(0x1A, "sub", '"Substitute" control character.')
+    ..rename(0x1B, "esc", '"Escape" control character.')
+    ..rename(0x1C, "fs", '"File Separator" control character.')
+    ..rename(0x1D, "gs", '"Group Separator" control character.')
+    ..rename(0x1E, "rs", '"Record Separator" control character.')
+    ..rename(0x1F, "us", '"Unit Separator" control character.')
+    // Visible characters.
+    ..rename(0x20, "space", 'Space character.')
+    ..rename(0x21, "exclamation", 'Character `!`.')
+    ..rename(0x22, "quot", 'Character `"`, short name.')
+    ..rename(0x23, "hash", 'Character `#`.')
+    ..rename(0x24, "\$", 'Character `\$`.')
+    ..rename(0x25, "percent", 'Character `%`.')
+    ..rename(0x26, "amp", 'Character `&`, short name.')
+    ..rename(0x27, "apos", 'Character "\'".')
+    ..rename(0x28, "lparen", 'Character `(`.')
+    ..rename(0x29, "rparen", 'Character `)`.')
+    ..rename(0x2A, "asterisk", 'Character `*`.')
+    ..rename(0x2B, "plus", 'Character `+`.')
+    ..rename(0x2C, "comma", 'Character `,`.')
+    ..rename(0x2D, "minus", 'Character `-`.')
+    ..rename(0x2E, "dot", 'Character `.`.')
+    ..rename(0x2F, "slash", 'Character `/`.')
+    ..rename(0x30, "0", 'Character `0`.')
+    ..rename(0x31, "1", 'Character `1`.')
+    ..rename(0x32, "2", 'Character `2`.')
+    ..rename(0x33, "3", 'Character `3`.')
+    ..rename(0x34, "4", 'Character `4`.')
+    ..rename(0x35, "5", 'Character `5`.')
+    ..rename(0x36, "6", 'Character `6`.')
+    ..rename(0x37, "7", 'Character `7`.')
+    ..rename(0x38, "8", 'Character `8`.')
+    ..rename(0x39, "9", 'Character `9`.')
+    ..rename(0x3A, "colon", 'Character `:`.')
+    ..rename(0x3B, "semicolon", 'Character `;`.')
+    ..rename(0x3C, "lt", 'Character `<`.')
+    ..rename(0x3D, "equal", 'Character `<`.')
+    ..rename(0x3E, "gt", 'Character `>`.')
+    ..rename(0x3F, "question", 'Character `?`.')
+    ..rename(0x40, "at", 'Character `@`.')
+    ..rename(0x41, "A", 'Character `A`.')
+    ..rename(0x42, "B", 'Character `B`.')
+    ..rename(0x43, "C", 'Character `C`.')
+    ..rename(0x44, "D", 'Character `D`.')
+    ..rename(0x45, "E", 'Character `E`.')
+    ..rename(0x46, "F", 'Character `F`.')
+    ..rename(0x47, "G", 'Character `G`.')
+    ..rename(0x48, "H", 'Character `H`.')
+    ..rename(0x49, "I", 'Character `I`.')
+    ..rename(0x4A, "J", 'Character `J`.')
+    ..rename(0x4B, "K", 'Character `K`.')
+    ..rename(0x4C, "L", 'Character `L`.')
+    ..rename(0x4D, "M", 'Character `M`.')
+    ..rename(0x4E, "N", 'Character `N`.')
+    ..rename(0x4F, "O", 'Character `O`.')
+    ..rename(0x50, "P", 'Character `P`.')
+    ..rename(0x51, "Q", 'Character `Q`.')
+    ..rename(0x52, "R", 'Character `R`.')
+    ..rename(0x53, "S", 'Character `S`.')
+    ..rename(0x54, "T", 'Character `T`.')
+    ..rename(0x55, "U", 'Character `U`.')
+    ..rename(0x56, "V", 'Character `V`.')
+    ..rename(0x57, "W", 'Character `W`.')
+    ..rename(0x58, "X", 'Character `X`.')
+    ..rename(0x59, "Y", 'Character `Y`.')
+    ..rename(0x5A, "Z", 'Character `Z`.')
+    ..rename(0x5B, "lbracket", 'Character `[`.')
+    ..rename(0x5C, "backslash", r'Character `\`.')
+    ..rename(0x5D, "rbracket", 'Character `]`.')
+    ..rename(0x5E, "caret", 'Character `^`.')
+    ..rename(0x5F, "_", 'Character `_`.')
+    ..rename(0x60, "backquote", 'Character `` ` ``.')
+    ..rename(0x61, "a", 'Character `a`.')
+    ..rename(0x62, "b", 'Character `b`.')
+    ..rename(0x63, "c", 'Character `c`.')
+    ..rename(0x64, "d", 'Character `d`.')
+    ..rename(0x65, "e", 'Character `e`.')
+    ..rename(0x66, "f", 'Character `f`.')
+    ..rename(0x67, "g", 'Character `g`.')
+    ..rename(0x68, "h", 'Character `h`.')
+    ..rename(0x69, "i", 'Character `i`.')
+    ..rename(0x6A, "j", 'Character `j`.')
+    ..rename(0x6B, "k", 'Character `k`.')
+    ..rename(0x6C, "l", 'Character `l`.')
+    ..rename(0x6D, "m", 'Character `m`.')
+    ..rename(0x6E, "n", 'Character `n`.')
+    ..rename(0x6F, "o", 'Character `o`.')
+    ..rename(0x70, "p", 'Character `p`.')
+    ..rename(0x71, "q", 'Character `q`.')
+    ..rename(0x72, "r", 'Character `r`.')
+    ..rename(0x73, "s", 'Character `s`.')
+    ..rename(0x74, "t", 'Character `t`.')
+    ..rename(0x75, "u", 'Character `u`.')
+    ..rename(0x76, "v", 'Character `v`.')
+    ..rename(0x77, "w", 'Character `w`.')
+    ..rename(0x78, "x", 'Character `x`.')
+    ..rename(0x79, "y", 'Character `y`.')
+    ..rename(0x7A, "z", 'Character `z`.')
+    ..rename(0x7B, "lbrace", 'Character `{`.')
+    ..rename(0x7C, "bar", 'Character `|`.')
+    ..rename(0x7D, "rbrace", 'Character `}`.')
+    ..rename(0x7E, "tilde", 'Character `~`.')
+    // Control character
+    ..rename(0x7F, "del", '"Delete" control character.');
+}
+
+void addHtmlEntities(CharcodeBuilder descriptions) {
+  descriptions
+    ..rename(0x22, "quot", "Character '\"', short name.")
+    ..rename(0x27, "apos", "Character \"'\".")
+    ..rename(0x3C, "lt", "Character '<'.")
+    ..rename(0x3E, "gt", "Character '>'.")
+    ..rename(0x00A0, "nbsp", "no-break space (non-breaking space)")
+    ..rename(0x00A1, "iexcl", "inverted exclamation mark ('¡')")
+    ..rename(0x00A2, "cent", "cent sign ('¢')")
+    ..rename(0x00A3, "pound", "pound sign ('£')")
+    ..rename(0x00A4, "curren", "currency sign ('¤')")
+    ..rename(0x00A5, "yen", "yen sign (yuan sign) ('¥')")
+    ..rename(0x00A6, "brvbar", "broken bar (broken vertical bar) ('¦')")
+    ..rename(0x00A7, "sect", "section sign ('§')")
+    ..rename(
+        0x00A8, "uml", "diaeresis (spacing diaeresis); see Germanic umlaut ('¨')")
+    ..rename(0x00A9, "copy", "copyright symbol ('©')")
+    ..rename(0x00AA, "ordf", "feminine ordinal indicator ('ª')")
+    ..rename(0x00AB, "laquo",
+        "left-pointing double angle quotation mark (left pointing guillemet) ('«')")
+    ..rename(0x00AC, "not", "not sign ('¬')")
+    ..rename(0x00AD, "shy", "soft hyphen (discretionary hyphen)")
+    ..rename(
+        0x00AE, "reg", "registered sign (registered trademark symbol) ('®')")
+    ..rename(
+        0x00AF, "macr", "macron (spacing macron, overline, APL overbar) ('¯')")
+    ..rename(0x00B0, "deg", "degree symbol ('°')")
+    ..rename(0x00B1, "plusmn", "plus-minus sign (plus-or-minus sign) ('±')")
+    ..rename(
+        0x00B2, "sup2", "superscript two (superscript digit two, squared) ('²')")
+    ..rename(0x00B3, "sup3",
+        "superscript three (superscript digit three, cubed) ('³')")
+    ..rename(0x00B4, "acute", "acute accent (spacing acute) ('´')")
+    ..rename(0x00B5, "micro", "micro sign ('µ')")
+    ..rename(0x00B6, "para", "pilcrow sign (paragraph sign) ('¶')")
+    ..rename(
+        0x00B7, "middot", "middle dot (Georgian comma, Greek middle dot) ('·')")
+    ..rename(0x00B8, "cedil", "cedilla (spacing cedilla) ('¸')")
+    ..rename(0x00B9, "sup1", "superscript one (superscript digit one) ('¹')")
+    ..rename(0x00BA, "ordm", "masculine ordinal indicator ('º')")
+    ..rename(0x00BB, "raquo",
+        "right-pointing double angle quotation mark (right pointing guillemet) ('»')")
+    ..rename(0x00BC, "frac14",
+        "vulgar fraction one quarter (fraction one quarter) ('¼')")
+    ..rename(
+        0x00BD, "frac12", "vulgar fraction one half (fraction one half) ('½')")
+    ..rename(0x00BE, "frac34",
+        "vulgar fraction three quarters (fraction three quarters) ('¾')")
+    ..rename(
+        0x00BF, "iquest", "inverted question mark (turned question mark) ('¿')")
+    ..rename(0x00C0, "Agrave",
+        "Latin capital letter A with grave accent (Latin capital letter A grave) ('À')")
+    ..rename(0x00C1, "Aacute", "Latin capital letter A with acute accent ('Á')")
+    ..rename(0x00C2, "Acirc", "Latin capital letter A with circumflex ('Â')")
+    ..rename(0x00C3, "Atilde", "Latin capital letter A with tilde ('Ã')")
+    ..rename(0x00C4, "Auml", "Latin capital letter A with diaeresis ('Ä')")
+    ..rename(0x00C5, "Aring",
+        "Latin capital letter A with ring above (Latin capital letter A ring) ('Å')")
+    ..rename(0x00C6, "AElig",
+        "Latin capital letter AE (Latin capital ligature AE) ('Æ')")
+    ..rename(0x00C7, "Ccedil", "Latin capital letter C with cedilla ('Ç')")
+    ..rename(0x00C8, "Egrave", "Latin capital letter E with grave accent ('È')")
+    ..rename(0x00C9, "Eacute", "Latin capital letter E with acute accent ('É')")
+    ..rename(0x00CA, "Ecirc", "Latin capital letter E with circumflex ('Ê')")
+    ..rename(0x00CB, "Euml", "Latin capital letter E with diaeresis ('Ë')")
+    ..rename(0x00CC, "Igrave", "Latin capital letter I with grave accent ('Ì')")
+    ..rename(0x00CD, "Iacute", "Latin capital letter I with acute accent ('Í')")
+    ..rename(0x00CE, "Icirc", "Latin capital letter I with circumflex ('Î')")
+    ..rename(0x00CF, "Iuml", "Latin capital letter I with diaeresis ('Ï')")
+    ..rename(0x00D0, "ETH", "Latin capital letter Eth ('Ð')")
+    ..rename(0x00D1, "Ntilde", "Latin capital letter N with tilde ('Ñ')")
+    ..rename(0x00D2, "Ograve", "Latin capital letter O with grave accent ('Ò')")
+    ..rename(0x00D3, "Oacute", "Latin capital letter O with acute accent ('Ó')")
+    ..rename(0x00D4, "Ocirc", "Latin capital letter O with circumflex ('Ô')")
+    ..rename(0x00D5, "Otilde", "Latin capital letter O with tilde ('Õ')")
+    ..rename(0x00D6, "Ouml", "Latin capital letter O with diaeresis ('Ö')")
+    ..rename(0x00D7, "times", "multiplication sign ('×')")
+    ..rename(0x00D8, "Oslash",
+        "Latin capital letter O with stroke (Latin capital letter O slash) ('Ø')")
+    ..rename(0x00D9, "Ugrave", "Latin capital letter U with grave accent ('Ù')")
+    ..rename(0x00DA, "Uacute", "Latin capital letter U with acute accent ('Ú')")
+    ..rename(0x00DB, "Ucirc", "Latin capital letter U with circumflex ('Û')")
+    ..rename(0x00DC, "Uuml", "Latin capital letter U with diaeresis ('Ü')")
+    ..rename(0x00DD, "Yacute", "Latin capital letter Y with acute accent ('Ý')")
+    ..rename(0x00DE, "THORN", "Latin capital letter THORN ('Þ')")
+    ..rename(0x00DF, "szlig",
+        "Latin small letter sharp s (ess-zed); see German Eszett ('ß')")
+    ..rename(0x00E0, "agrave", "Latin small letter a with grave accent ('à')")
+    ..rename(0x00E1, "aacute", "Latin small letter a with acute accent ('á')")
+    ..rename(0x00E2, "acirc", "Latin small letter a with circumflex ('â')")
+    ..rename(0x00E3, "atilde", "Latin small letter a with tilde ('ã')")
+    ..rename(0x00E4, "auml", "Latin small letter a with diaeresis ('ä')")
+    ..rename(0x00E5, "aring", "Latin small letter a with ring above ('å')")
+    ..rename(
+        0x00E6, "aelig", "Latin small letter ae (Latin small ligature ae) ('æ')")
+    ..rename(0x00E7, "ccedil", "Latin small letter c with cedilla ('ç')")
+    ..rename(0x00E8, "egrave", "Latin small letter e with grave accent ('è')")
+    ..rename(0x00E9, "eacute", "Latin small letter e with acute accent ('é')")
+    ..rename(0x00EA, "ecirc", "Latin small letter e with circumflex ('ê')")
+    ..rename(0x00EB, "euml", "Latin small letter e with diaeresis ('ë')")
+    ..rename(0x00EC, "igrave", "Latin small letter i with grave accent ('ì')")
+    ..rename(0x00ED, "iacute", "Latin small letter i with acute accent ('í')")
+    ..rename(0x00EE, "icirc", "Latin small letter i with circumflex ('î')")
+    ..rename(0x00EF, "iuml", "Latin small letter i with diaeresis ('ï')")
+    ..rename(0x00F0, "eth", "Latin small letter eth ('ð')")
+    ..rename(0x00F1, "ntilde", "Latin small letter n with tilde ('ñ')")
+    ..rename(0x00F2, "ograve", "Latin small letter o with grave accent ('ò')")
+    ..rename(0x00F3, "oacute", "Latin small letter o with acute accent ('ó')")
+    ..rename(0x00F4, "ocirc", "Latin small letter o with circumflex ('ô')")
+    ..rename(0x00F5, "otilde", "Latin small letter o with tilde ('õ')")
+    ..rename(0x00F6, "ouml", "Latin small letter o with diaeresis ('ö')")
+    ..rename(0x00F7, "divide", "division sign (obelus) ('÷')")
+    ..rename(0x00F8, "oslash",
+        "Latin small letter o with stroke (Latin small letter o slash) ('ø')")
+    ..rename(0x00F9, "ugrave", "Latin small letter u with grave accent ('ù')")
+    ..rename(0x00FA, "uacute", "Latin small letter u with acute accent ('ú')")
+    ..rename(0x00FB, "ucirc", "Latin small letter u with circumflex ('û')")
+    ..rename(0x00FC, "uuml", "Latin small letter u with diaeresis ('ü')")
+    ..rename(0x00FD, "yacute", "Latin small letter y with acute accent ('ý')")
+    ..rename(0x00FE, "thorn", "Latin small letter thorn ('þ')")
+    ..rename(0x00FF, "yuml", "Latin small letter y with diaeresis ('ÿ')")
+    ..rename(0x0152, "OElig", "Latin capital ligature oe ('Œ')")
+    ..rename(0x0153, "oelig", "Latin small ligature oe ('œ')")
+    ..rename(0x0160, "Scaron", "Latin capital letter s with caron ('Š')")
+    ..rename(0x0161, "scaron", "Latin small letter s with caron ('š')")
+    ..rename(0x0178, "Yuml", "Latin capital letter y with diaeresis ('Ÿ')")
+    ..rename(0x0192, "fnof",
+        "Latin small letter f with hook (function, florin) ('ƒ')")
+    ..rename(0x02C6, "circ", "modifier letter circumflex accent ('ˆ')")
+    ..rename(0x02DC, "tilde", "small tilde ('˜')")
+    ..rename(0x0391, "Alpha", "Greek capital letter Alpha ('Α')")
+    ..rename(0x0392, "Beta", "Greek capital letter Beta ('Β')")
+    ..rename(0x0393, "Gamma", "Greek capital letter Gamma ('Γ')")
+    ..rename(0x0394, "Delta", "Greek capital letter Delta ('Δ')")
+    ..rename(0x0395, "Epsilon", "Greek capital letter Epsilon ('Ε')")
+    ..rename(0x0396, "Zeta", "Greek capital letter Zeta ('Ζ')")
+    ..rename(0x0397, "Eta", "Greek capital letter Eta ('Η')")
+    ..rename(0x0398, "Theta", "Greek capital letter Theta ('Θ')")
+    ..rename(0x0399, "Iota", "Greek capital letter Iota ('Ι')")
+    ..rename(0x039A, "Kappa", "Greek capital letter Kappa ('Κ')")
+    ..rename(0x039B, "Lambda", "Greek capital letter Lambda ('Λ')")
+    ..rename(0x039C, "Mu", "Greek capital letter Mu ('Μ')")
+    ..rename(0x039D, "Nu", "Greek capital letter Nu ('Ν')")
+    ..rename(0x039E, "Xi", "Greek capital letter Xi ('Ξ')")
+    ..rename(0x039F, "Omicron", "Greek capital letter Omicron ('Ο')")
+    ..rename(0x03A0, "Pi", "Greek capital letter Pi ('Π')")
+    ..rename(0x03A1, "Rho", "Greek capital letter Rho ('Ρ')")
+    ..rename(0x03A3, "Sigma", "Greek capital letter Sigma ('Σ')")
+    ..rename(0x03A4, "Tau", "Greek capital letter Tau ('Τ')")
+    ..rename(0x03A5, "Upsilon", "Greek capital letter Upsilon ('Υ')")
+    ..rename(0x03A6, "Phi", "Greek capital letter Phi ('Φ')")
+    ..rename(0x03A7, "Chi", "Greek capital letter Chi ('Χ')")
+    ..rename(0x03A8, "Psi", "Greek capital letter Psi ('Ψ')")
+    ..rename(0x03A9, "Omega", "Greek capital letter Omega ('Ω')")
+    ..rename(0x03B1, "alpha", "Greek small letter alpha ('α')")
+    ..rename(0x03B2, "beta", "Greek small letter beta ('β')")
+    ..rename(0x03B3, "gamma", "Greek small letter gamma ('γ')")
+    ..rename(0x03B4, "delta", "Greek small letter delta ('δ')")
+    ..rename(0x03B5, "epsilon", "Greek small letter epsilon ('ε')")
+    ..rename(0x03B6, "zeta", "Greek small letter zeta ('ζ')")
+    ..rename(0x03B7, "eta", "Greek small letter eta ('η')")
+    ..rename(0x03B8, "theta", "Greek small letter theta ('θ')")
+    ..rename(0x03B9, "iota", "Greek small letter iota ('ι')")
+    ..rename(0x03BA, "kappa", "Greek small letter kappa ('κ')")
+    ..rename(0x03BB, "lambda", "Greek small letter lambda ('λ')")
+    ..rename(0x03BC, "mu", "Greek small letter mu ('μ')")
+    ..rename(0x03BD, "nu", "Greek small letter nu ('ν')")
+    ..rename(0x03BE, "xi", "Greek small letter xi ('ξ')")
+    ..rename(0x03BF, "omicron", "Greek small letter omicron ('ο')")
+    ..rename(0x03C0, "pi", "Greek small letter pi ('π')")
+    ..rename(0x03C1, "rho", "Greek small letter rho ('ρ')")
+    ..rename(0x03C2, "sigmaf", "Greek small letter final sigma ('ς')")
+    ..rename(0x03C3, "sigma", "Greek small letter sigma ('σ')")
+    ..rename(0x03C4, "tau", "Greek small letter tau ('τ')")
+    ..rename(0x03C5, "upsilon", "Greek small letter upsilon ('υ')")
+    ..rename(0x03C6, "phi", "Greek small letter phi ('φ')")
+    ..rename(0x03C7, "chi", "Greek small letter chi ('χ')")
+    ..rename(0x03C8, "psi", "Greek small letter psi ('ψ')")
+    ..rename(0x03C9, "omega", "Greek small letter omega ('ω')")
+    ..rename(0x03D1, "thetasym", "Greek theta symbol ('ϑ')")
+    ..rename(0x03D2, "upsih", "Greek Upsilon with hook symbol ('ϒ')")
+    ..rename(0x03D6, "piv", "Greek pi symbol ('ϖ')")
+    ..rename(0x2002, "ensp", "en space")
+    ..rename(0x2003, "emsp", "em space")
+    ..rename(0x2009, "thinsp", "thin space")
+    ..rename(0x200C, "zwnj", "zero-width non-joiner")
+    ..rename(0x200D, "zwj", "zero-width joiner")
+    ..rename(0x200E, "lrm", "left-to-right mark")
+    ..rename(0x200F, "rlm", "right-to-left mark")
+    ..rename(0x2013, "ndash", "en dash ('–')")
+    ..rename(0x2014, "mdash", "em dash ('—')")
+    ..rename(0x2018, "lsquo", "left single quotation mark ('‘')")
+    ..rename(0x2019, "rsquo", "right single quotation mark ('’')")
+    ..rename(0x201A, "sbquo", "single low-9 quotation mark ('‚')")
+    ..rename(0x201C, "ldquo", "left double quotation mark ('“')")
+    ..rename(0x201D, "rdquo", "right double quotation mark ('”')")
+    ..rename(0x201E, "bdquo", "double low-9 quotation mark ('„')")
+    ..rename(0x2020, "dagger", "dagger, obelisk ('†')")
+    ..rename(0x2021, "Dagger", "double dagger, double obelisk ('‡')")
+    ..rename(0x2022, "bull", "bullet (black small circle) ('•')")
+    ..rename(0x2026, "hellip", "horizontal ellipsis (three dot leader) ('…')")
+    ..rename(0x2030, "permil", "per mille sign ('‰')")
+    ..rename(0x2032, "prime", "prime (minutes, feet) ('′')")
+    ..rename(0x2033, "Prime", "double prime (seconds, inches) ('″')")
+    ..rename(
+        0x2039, "lsaquo", "single left-pointing angle quotation mark ('‹')")
+    ..rename(0x203A, "rsaquo", "single right-pointing angle quotation mark ('›')")
+    ..rename(0x203E, "oline", "overline (spacing overscore) ('‾')")
+    ..rename(0x2044, "frasl", "fraction slash (solidus) ('⁄')")
+    ..rename(0x20AC, "euro", "euro sign ('€')")
+    ..rename(0x2111, "image", "black-letter capital I (imaginary part) ('ℑ')")
+    ..rename(0x2118, "weierp", "script capital P (power set, Weierstrass p) ('℘')")
+    ..rename(0x211C, "real", "black-letter capital R (real part symbol) ('ℜ')")
+    ..rename(0x2122, "trade", "trademark symbol ('™')")
+    ..rename(0x2135, "alefsym", "alef symbol (first transfinite cardinal) ('ℵ')")
+    ..rename(0x2190, "larr", "leftwards arrow ('←')")
+    ..rename(0x2191, "uarr", "upwards arrow ('↑')")
+    ..rename(0x2192, "rarr", "rightwards arrow ('→')")
+    ..rename(0x2193, "darr", "downwards arrow ('↓')")
+    ..rename(0x2194, "harr", "left right arrow ('↔')")
+    ..rename(0x21B5, "crarr", "downwards arrow with corner leftwards (carriage return) ('↵')")
+    ..rename(0x21D0, "lArr", "leftwards double arrow ('⇐')")
+    ..rename(0x21D1, "uArr", "upwards double arrow ('⇑')")
+    ..rename(0x21D2, "rArr", "rightwards double arrow ('⇒')")
+    ..rename(0x21D3, "dArr", "downwards double arrow ('⇓')")
+    ..rename(0x21D4, "hArr", "left right double arrow ('⇔')")
+    ..rename(0x2200, "forall", "for all ('∀')")
+    ..rename(0x2202, "part", "partial differential ('∂')")
+    ..rename(0x2203, "exist", "there exists ('∃')")
+    ..rename(0x2205, "empty", "empty set (null set); see also U+8960, ⌀ ('∅')")
+    ..rename(0x2207, "nabla", "del or nabla (vector differential operator) ('∇')")
+    ..rename(0x2208, "isin", "element of ('∈')")
+    ..rename(0x2209, "notin", "not an element of ('∉')")
+    ..rename(0x220B, "ni", "contains as member ('∋')")
+    ..rename(0x220F, "prod", "n-ary product (product sign) ('∏')")
+    ..rename(0x2211, "sum", "n-ary summation ('∑')")
+    ..rename(0x2212, "minus", "minus sign ('−')")
+    ..rename(0x2217, "lowast", "asterisk operator ('∗')")
+    ..rename(0x221A, "radic", "square root (radical sign) ('√')")
+    ..rename(0x221D, "prop", "proportional to ('∝')")
+    ..rename(0x221E, "infin", "infinity ('∞')")
+    ..rename(0x2220, "ang", "angle ('∠')")
+    ..rename(0x2227, "and", "logical and (wedge) ('∧')")
+    ..rename(0x2228, "or", "logical or (vee) ('∨')")
+    ..rename(0x2229, "cap", "intersection (cap) ('∩')")
+    ..rename(0x222A, "cup", "union (cup) ('∪')")
+    ..rename(0x222B, "int", "integral ('∫')")
+    ..rename(0x2234, "there4", "therefore sign ('∴')")
+    ..rename(0x223C, "sim", "tilde operator (varies with, similar to) ('∼')")
+    ..rename(0x2245, "cong", "congruent to ('≅')")
+    ..rename(0x2248, "asymp", "almost equal to (asymptotic to) ('≈')")
+    ..rename(0x2260, "ne", "not equal to ('≠')")
+    ..rename(0x2261, "equiv", "identical to; sometimes used for 'equivalent to' ('≡')")
+    ..rename(0x2264, "le", "less-than or equal to ('≤')")
+    ..rename(0x2265, "ge", "greater-than or equal to ('≥')")
+    ..rename(0x2282, "sub", "subset of ('⊂')")
+    ..rename(0x2283, "sup", "superset of ('⊃')")
+    ..rename(0x2284, "nsub", "not a subset of ('⊄')")
+    ..rename(0x2286, "sube", "subset of or equal to ('⊆')")
+    ..rename(0x2287, "supe", "superset of or equal to ('⊇')")
+    ..rename(0x2295, "oplus", "circled plus (direct sum) ('⊕')")
+    ..rename(0x2297, "otimes", "circled times (vector product) ('⊗')")
+    ..rename(0x22A5, "perp", "up tack (orthogonal to, perpendicular) ('⊥')")
+    ..rename(0x22C5, "sdot", "dot operator ('⋅')")
+    ..rename(0x22EE, "vellip", "vertical ellipsis ('⋮')")
+    ..rename(0x2308, "lceil", "left ceiling (APL upstile) ('⌈')")
+    ..rename(0x2309, "rceil", "right ceiling ('⌉')")
+    ..rename(0x230A, "lfloor", "left floor (APL downstile) ('⌊')")
+    ..rename(0x230B, "rfloor", "right floor ('⌋')")
+    ..rename(0x2329, "lang", "left-pointing angle bracket (bra) ('〈')")
+    ..rename(0x232A, "rang", "right-pointing angle bracket (ket) ('〉')")
+    ..rename(0x25CA, "loz", "lozenge ('◊')")
+    ..rename(0x2660, "spades", "black spade suit ('♠')")
+    ..rename(0x2663, "clubs", "black club suit (shamrock) ('♣')")
+    ..rename(0x2665, "hearts", "black heart suit (valentine) ('♥')")
+    ..rename(0x2666, "diams", "black diamond suit ('♦')");
+}
+
+const String usageString = r"""
+Usage:
+  charcode [-h] [-oFILE] (<character-range> | <rename> | -pPREFIX | -fFILE)*
+
+  A <character-range> is either
+   - A literal character,
+   - An escaped character `\n`, `\r`, `\t`, `\xhh`, `\uhhhh` or `\dd*`,
+       where `h` is a hexadecimal digit and `d` is a decimal digit.
+   - Two characters separated by `-`,
+   - The `\d`, `\w` or `\s` escapes, or
+   - A sequence of character ranges.
+  Examples: `a`, `a-z`, `\da-fA-F`, `\x00-\uFFFF`.
+
+  A <rename> declaration is a single or escaped character, a `=` and an
+  identifier name, optionally followed by a `:` and a description
+  Example:  x=cross:\"a cross product.\"
+  The declaration names or renames the character and adds or changes
+  the associated description.
+  It will not add the character to the output.
+  Following occurrences of the character will use the new name.
+  Example: `charcode y y=why x-z` will generate `$y` for the character
+    code of "y", then `$x`, `$why` and `$z` as well.
+
+""";
diff --git a/bin/src/uflags.dart b/bin/src/uflags.dart
new file mode 100644
index 0000000..84ed299
--- /dev/null
+++ b/bin/src/uflags.dart
@@ -0,0 +1,418 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'dart:typed_data';
+
+import 'package:charcode/ascii.dart';
+
+/// Parses argument lists based on a [Flags] configuration.
+///
+/// Arguments are either literals or flags.
+///
+/// Flags start with `-` or `--`
+/// Flags starting with `-` are single-character flags, like `-x`.
+/// Single character flag names must be ASCII.
+/// Flags starting with `--` are named, like `--expand`.
+/// They extend to the end of the argument, or until a `=`.
+///
+/// Flags can have parameters.
+///
+/// Single-character flags can have an parameter:
+/// * immediately after the charcter, `-ofilename`,
+/// * with a `=` between them, `-o=filename`,
+/// * or as the next argument, `-o filename`.
+///
+/// Named flags cannot be directly concatenated with the parameter,
+/// but must be one of `--output=filename` or `--output filename`.
+/// Named flags conflate non-ASCII alphanumeric characters, like `-` and `_`
+/// (but not `=` which delimites a parameter value).
+/// Any non-letter, non-digit character sequence is matched by any other,
+/// so `--foo-bar`, `--foo_bar` and `--foo.<!>.bar` are all the same.
+///
+/// Flags can have *optional* parameters. A flag with an optional parameter
+/// cannot have its value in the next argument, it *must* use `=` or have
+/// the value immediately after a single character flag.
+/// It has a default value to use if the parameter is omitted.
+///
+/// An unrecognized or malformed flag is reported using the [warn]
+/// function.
+Iterable<CmdLineArg<T>> parseFlags<T>(
+    Flags<T> flags, Iterable<String> arguments,
+    [void warn(String warning)?]) sync* {
+  warn ??= _printWarning;
+  var args = arguments.iterator;
+  while (args.moveNext()) {
+    var arg = args.current;
+    if (arg.startsWith("-")) {
+      if (arg.startsWith("-", 1)) {
+        // Named flags.
+        if (arg.length == 2) {
+          // Found `--`. Stop parsing flags.
+          break;
+        }
+        var equals = arg.indexOf("=", 2);
+        if (equals >= 0) {
+          var name = arg.substring(2, equals);
+          var value = arg.substring(equals + 1);
+          var flag = flags.byName(name);
+          if (flag != null) {
+            if (!flag.hasParameter) {
+              warn("Flag $name should not have a parameter: $arg");
+              continue;
+            }
+            yield CmdLineArg<T>(flag.key, value);
+            continue;
+          }
+          warn("Unknown flag: $arg");
+          continue;
+        }
+        var name = arg.substring(2);
+        var flag = flags.byName(name);
+        if (flag != null) {
+          var value = flag.value;
+          if (flag.hasParameter &&
+              !flag.hasOptionalParameter &&
+              args.moveNext()) {
+            value = args.current;
+          }
+          yield CmdLineArg<T>(flag.key, value);
+          continue;
+        }
+        warn("Unknown flag: $arg");
+        continue;
+      }
+      // Character flag(s).
+      for (var i = 1; i < arg.length; i++) {
+        var char = arg.codeUnitAt(i);
+        var flag = flags.byChar(char);
+        if (flag == null) {
+          warn("Unknown flag: ${arg.substring(i, i + 1)}");
+          continue;
+        }
+        var value = flag.value;
+        if (arg.startsWith("=", i + 1)) {
+          value = arg.substring(i + 2);
+          if (!flag.hasParameter) {
+            warn(
+                "Flag ${arg.substring(i, i + 1)} should not have a parameter: ${arg.substring(i)}");
+            break;
+          }
+          yield CmdLineArg<T>(flag.key, value);
+          break;
+        }
+        if (flag.hasParameter) {
+          if (i + 1 < arg.length) {
+            value = arg.substring(i + 1);
+          } else if (!flag.hasOptionalParameter && args.moveNext()) {
+            value = args.current;
+          }
+          yield CmdLineArg<T>(flag.key, value);
+          break;
+        }
+        yield CmdLineArg<T>(flag.key, value);
+      }
+      continue;
+    }
+    yield CmdLineArg<Never>(null, arg);
+  }
+  // Handle entries after `--`.
+  while (args.moveNext()) {
+    yield CmdLineArg<Never>(null, args.current);
+  }
+}
+
+/// A part of the arguments list recognized as a flag or not.
+///
+/// If [key] is `null`, the [value] is a plain argument list entry.
+/// Otherwise they key corresponds to the flag that was recognized,
+/// and [value] is its parameter or default value, if any.
+///
+class CmdLineArg<T> {
+  final T? key;
+  final String? value;
+  CmdLineArg(this.key, this.value);
+  bool get isFlag => key != null;
+}
+
+/// A flag configuration.
+///
+/// Collects one or more [FlagConfig] objects and allows quick look-up
+/// on character or name.
+class Flags<T> {
+  final List<FlagConfig<T>?> _charFlags =
+      List<FlagConfig<T>?>.filled(128, null, growable: false);
+  final Map<String, FlagConfig<T>> _namedFlags = {};
+
+  void add(FlagConfig<T> flag) {
+    var char = flag.flagChar;
+    if (char != null) {
+      _charFlags[char] = flag;
+    }
+    var name = flag.flagName;
+    if (name != null) {
+      _namedFlags[name] = flag;
+    }
+  }
+
+  void addBoolFlag(T key, String flagChar, String flagName,
+      [String? description]) {
+    add(FlagConfig.optionalParameter(key, flagChar, flagName, "true",
+        description: description, valueDescription: "true"));
+    add(FlagConfig.optionalParameter(key, null, "no-" + flagName, "false"));
+  }
+
+  FlagConfig<T>? byName(String name) => _namedFlags[name];
+  FlagConfig<T>? byChar(int char) =>
+      0 <= char && char <= 217 ? _charFlags[char] : null;
+
+  void writeUsage(StringSink buffer) {
+    const descriptionStart = 28;
+    var allFlags = [
+      ...{
+        for (var flag in _namedFlags.values)
+          if (!flag.flagName!.startsWith("no-") || flag.value != "false") flag,
+        for (var flag in _charFlags)
+          if (flag != null && flag.flagName == null) flag
+      }
+    ]..sort(_flagOrder);
+    for (var flag in allFlags) {
+      var name = flag.flagName;
+      var char = flag.flagChar;
+      var parameter = flag.valueDescription ?? "VALUE";
+      var description = flag.description;
+      var lineLength = 0;
+      if (char != null) {
+        buffer
+          ..write("  -")
+          ..writeCharCode(char);
+        lineLength = 4;
+        if (name != null) {
+          buffer..write(', --')..write(name);
+          lineLength = name.length + 8;
+        }
+      } else if (name != null) {
+        buffer..write("      --")..write(name);
+        lineLength = name.length + 8;
+      } else {
+        continue;
+      }
+      if (flag.hasParameter) {
+        var end = "";
+        if (flag.hasOptionalParameter) {
+          buffer.write('[=');
+          lineLength += 2;
+          end = "]";
+        } else {
+          buffer.write('=');
+          lineLength += 1;
+        }
+        buffer.write(parameter);
+        lineLength += parameter.length;
+        buffer.write(end);
+        lineLength += end.length;
+      }
+      if (description != null) {
+        if (lineLength < descriptionStart) {
+          do {
+            buffer.write(' ');
+            lineLength += 1;
+          } while (lineLength < descriptionStart);
+        } else {
+          buffer.write(' ');
+          lineLength += 1;
+        }
+        var indent = "                              "; // 30 spaces.
+        _writeSplitDescription(buffer, description, lineLength, 80, indent);
+      } else {
+        buffer.writeln();
+      }
+    }
+  }
+
+  void _writeSplitDescription(StringSink output, String description, int indent,
+      int maxLength, String newLineIndent) {
+    var index = 0;
+    var end = index + (maxLength - indent);
+    end:
+    while (end < description.length) {
+      line:
+      while (description.codeUnitAt(end) != $space) {
+        end--;
+        if (end == index) {
+          end = index + (maxLength - indent) + 1;
+          while (end < description.length) {
+            if (description.codeUnitAt(end) == $space) {
+              break line;
+            }
+            end++;
+          }
+          break end;
+        }
+      }
+      output.writeln(description.substring(index, end));
+      index = end + 1;
+      output.write(newLineIndent);
+      indent = newLineIndent.length;
+      end = index + (maxLength - indent);
+    }
+    if (index < description.length) {
+      output.writeln(description.substring(index));
+    }
+  }
+
+  static int _flagOrder(FlagConfig a, FlagConfig b) {
+    var aName = a.flagName;
+    var bName = b.flagName;
+    if (aName != null) {
+      if (bName != null) return aName.compareTo(bName);
+      return aName.codeUnitAt(0) < b.flagChar! ? -1 : 1;
+    }
+    if (bName != null) {
+      return a.flagChar! < bName.codeUnitAt(0) ? -1 : 1;
+    }
+    return a.flagChar! - b.flagChar!;
+  }
+}
+
+/// Configuration of a single flag.
+class FlagConfig<T> {
+  /// The user designated key linked to this flag.
+  final T key;
+
+  /// ASCII character code for the single-character flag.
+  ///
+  /// Must be a digit or letter. Does distinguish case.
+  final int? flagChar;
+
+  /// Flag name.
+  ///
+  /// Canonicalized to lower-case letters, digits and single `-` characters.
+  final String? flagName;
+
+  /// Whether the flag expects a parameter.
+  ///
+  /// A flag expecting a parameter which is not optional ([hasOptionalParameter])
+  /// will require a value in the argument list to be well-formed.
+  final bool hasParameter;
+
+  /// Whether the parameter is optional.
+  ///
+  /// An optional parameter can be omitted.
+  final bool hasOptionalParameter;
+
+  /// A name for the parameter, if there is a parameter.
+  ///
+  /// Traditionally an all-upper-case name.
+  final String? valueDescription;
+
+  /// The value associated with the flag.
+  ///
+  /// A flag without parameters can have a value configured, which allows the same
+  /// [key] to be used for different flags.
+  ///
+  /// A flag with an optional parameter will have a default value, which may be
+  /// null.
+  final String? value;
+
+  /// Description for documentation purposes.
+  final String? description;
+
+  FlagConfig._(
+      this.key,
+      String? flagChar,
+      String? flagName,
+      this.hasParameter,
+      this.hasOptionalParameter,
+      this.value,
+      this.description,
+      this.valueDescription)
+      : flagChar = _checkFlagChar(flagChar),
+        flagName = canonicalizeName(flagName);
+  FlagConfig(T key, String? flagChar, String? flagName,
+      {String? value, String? description, String valueDescription = "VALUE"})
+      : this._(key, flagChar, flagName, false, false, value, description,
+            valueDescription);
+  FlagConfig.requiredParameter(T key, String? flagChar, String? flagName,
+      {String? description, String valueDescription = "VALUE"})
+      : this._(key, flagChar, flagName, true, false, null, description,
+            valueDescription);
+  FlagConfig.optionalParameter(
+      T key, String? flagChar, String? flagName, String defaultValue,
+      {String? description, String valueDescription = "VALUE"})
+      : this._(key, flagChar, flagName, true, true, defaultValue, description,
+            valueDescription);
+
+  static int? _checkFlagChar(String? flagChar) {
+    if (flagChar == null) return null;
+    if (flagChar.length == 1) {
+      var char = flagChar.codeUnitAt(0);
+      if (char ^ 0x30 <= 9) return char;
+      var lc = char | 0x20;
+      if (lc >= 0x61 && lc <= 0x7b) return char;
+    }
+    throw ArgumentError.value(flagChar, "flagChar",
+        "Must be a single ASCII digit or letter character");
+  }
+}
+
+String? canonicalizeName(String? name) {
+  if (name == null) return name;
+  const $dash = 0x2d;
+  var wasDash = false;
+  var i = 0;
+  while (i < name.length) {
+    var char = name.codeUnitAt(i++);
+    if (char ^ 0x30 <= 9 || char >= 0x61 && char <= 0x7b) {
+      wasDash = false;
+      continue;
+    }
+    if (char == $dash && !wasDash) {
+      wasDash = true;
+      continue;
+    }
+
+    var bytes = Uint8List(name.length);
+    var j = 0;
+    for (; j < i - 1; j++) {
+      bytes[j] = name.codeUnitAt(j);
+    }
+
+    // Convert all letters to lower-case, all non letter/digits to a single `-`.
+    outer:
+    do {
+      if (char >= 0x41 && char <= 0x5b) {
+        bytes[j++] = char | 0x20;
+        i++;
+        wasDash = false;
+      } else {
+        if (!wasDash) {
+          bytes[j++] = $dash;
+          i++;
+          wasDash = true;
+        }
+      }
+      while (i < name.length) {
+        char = name.codeUnitAt(i++);
+        if (char ^ 0x30 <= 9 || char >= 0x61 && char <= 0x7b) {
+          bytes[j++] = char;
+          wasDash = false;
+          continue;
+        }
+        if (char == $dash && !wasDash) {
+          bytes[j++] = char;
+          wasDash = true;
+          continue;
+        }
+        continue outer;
+      }
+      break;
+    } while (true);
+    return String.fromCharCodes(bytes);
+  }
+  return name;
+}
+
+void _printWarning(String message) {
+  print(message);
+}
diff --git a/example/example.dart b/example/example.dart
new file mode 100644
index 0000000..fc7542c
--- /dev/null
+++ b/example/example.dart
@@ -0,0 +1,33 @@
+// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:charcode/charcode.dart';
+
+void main() {
+  print(String.fromCharCodes([
+    $E,
+    $x,
+    $a,
+    $m,
+    $p,
+    $l,
+    $e,
+    $exclamation,
+  ]));
+}
+
+/// Check whether `(` and `)` are balanced in [input].
+bool checkBalancedParentheses(String input) {
+  var openParenCount = 0;
+  for (var i = 0; i < input.length; i++) {
+    var char = input.codeUnitAt(i);
+    if (char == $lparen) {
+      openParenCount++;
+    } else if (char == $rparen) {
+      openParenCount--;
+      if (openParenCount < 0) return false;
+    }
+  }
+  return openParenCount == 0;
+}
diff --git a/lib/ascii.dart b/lib/ascii.dart
index 48b51d0..0d31444 100644
--- a/lib/ascii.dart
+++ b/lib/ascii.dart
@@ -2,353 +2,507 @@
 // for details. All rights reserved. Use of this source is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-/**
- * Declare integer constants for each ASCII character.
- *
- * The constants all start with "$" to avoid conflicting with other constants.
- *
- * For characters that are valid in an identifier, the character iteself
- * follows the "$". For other characters, a symbolic name is used.
- * In some cases, multiple alternative symbolic names are provided.
- * Please stick to using one name per character in your code.
- *
- * The symbolic names are, where applicable, the name of the symbol without
- * any "mark", "symbol" "sign" or "accent" suffix.
- * Examples: [$exclamation], [$pipe], [$dollar] and [$grave].
- * For less common symbols, a selection of common names are used.
- *
- * For parenthetical markers, there is both a short name, [$lparen]/[$rparen],
- * and a long name, [$open_paren]/ [$close_paren].
- *
- * For common HTML entities, the entity names are also useable as symbolic
- * names: [$apos], [$quot], [$lt], [$gt], and [$amp].
- */
+/// Declare integer constants for each ASCII character.
+///
+/// The constants all start with "$" to avoid conflicting with other constants.
+///
+/// For characters that are valid in an identifier, the character iteself
+/// follows the "$". For other characters, a symbolic name is used.
+/// In some cases, multiple alternative symbolic names are provided.
+/// Please stick to using one name per character in your code.
+///
+/// The symbolic names are, where applicable, the name of the symbol without
+/// any "mark", "symbol" "sign" or "accent" suffix.
+/// Examples: [$exclamation], [$pipe], [$dollar] and [$grave].
+/// For less common symbols, a selection of common names are used.
+///
+/// For parenthetical markers, there is both a short name, [$lparen]/[$rparen],
+/// and a long name, [$open_paren]/ [$close_paren].
+///
+/// For common HTML entities, the entity names are also useable as symbolic
+/// names: [$apos], [$quot], [$lt], [$gt], and [$amp].
 library charcode.ascii.dollar_lowercase;
 
 // Control characters.
 
 /// "Null character" control character.
-const int $nul               = 0x00;
+const int $nul = 0x00;
+
 /// "Start of Header" control character.
-const int $soh               = 0x01;
+const int $soh = 0x01;
+
 /// "Start of Text" control character.
-const int $stx               = 0x02;
+const int $stx = 0x02;
+
 /// "End of Text" control character.
-const int $etx               = 0x03;
+const int $etx = 0x03;
+
 /// "End of Transmission" control character.
-const int $eot               = 0x04;
+const int $eot = 0x04;
+
 /// "Enquiry" control character.
-const int $enq               = 0x05;
+const int $enq = 0x05;
+
 /// "Acknowledgment" control character.
-const int $ack               = 0x06;
+const int $ack = 0x06;
+
 /// "Bell" control character.
-const int $bel               = 0x07;
+const int $bel = 0x07;
+
 /// "Backspace" control character.
-const int $bs                = 0x08;
+const int $bs = 0x08;
+
 /// "Horizontal Tab" control character.
-const int $ht                = 0x09;
+const int $ht = 0x09;
+
 /// "Horizontal Tab" control character, common name.
-const int $tab               = 0x09;
+const int $tab = 0x09;
+
 /// "Line feed" control character.
-const int $lf                = 0x0A;
+const int $lf = 0x0A;
+
 /// "Vertical Tab" control character.
-const int $vt                = 0x0B;
+const int $vt = 0x0B;
+
 /// "Form feed" control character.
-const int $ff                = 0x0C;
+const int $ff = 0x0C;
+
 /// "Carriage return" control character.
-const int $cr                = 0x0D;
+const int $cr = 0x0D;
+
 /// "Shift Out" control character.
-const int $so                = 0x0E;
+const int $so = 0x0E;
+
 /// "Shift In" control character.
-const int $si                = 0x0F;
+const int $si = 0x0F;
+
 /// "Data Link Escape" control character.
-const int $dle               = 0x10;
+const int $dle = 0x10;
+
 /// "Device Control 1" control character (oft. XON).
-const int $dc1               = 0x11;
+const int $dc1 = 0x11;
+
 /// "Device Control 2" control character.
-const int $dc2               = 0x12;
+const int $dc2 = 0x12;
+
 /// "Device Control 3" control character (oft. XOFF).
-const int $dc3               = 0x13;
+const int $dc3 = 0x13;
+
 /// "Device Control 4" control character.
-const int $dc4               = 0x14;
+const int $dc4 = 0x14;
+
 /// "Negative Acknowledgment" control character.
-const int $nak               = 0x15;
+const int $nak = 0x15;
+
 /// "Synchronous idle" control character.
-const int $syn               = 0x16;
+const int $syn = 0x16;
+
 /// "End of Transmission Block" control character.
-const int $etb               = 0x17;
+const int $etb = 0x17;
+
 /// "Cancel" control character.
-const int $can               = 0x18;
+const int $can = 0x18;
+
 /// "End of Medium" control character.
-const int $em                = 0x19;
+const int $em = 0x19;
+
 /// "Substitute" control character.
-const int $sub               = 0x1A;
+const int $sub = 0x1A;
+
 /// "Escape" control character.
-const int $esc               = 0x1B;
+const int $esc = 0x1B;
+
 /// "File Separator" control character.
-const int $fs                = 0x1C;
+const int $fs = 0x1C;
+
 /// "Group Separator" control character.
-const int $gs                = 0x1D;
+const int $gs = 0x1D;
+
 /// "Record Separator" control character.
-const int $rs                = 0x1E;
+const int $rs = 0x1E;
+
 /// "Unit Separator" control character.
-const int $us                = 0x1F;
+const int $us = 0x1F;
+
 /// "Delete" control character.
-const int $del               = 0x7F;
+const int $del = 0x7F;
 
 // Visible characters.
 
 /// Space character.
-const int $space             = 0x20;
+const int $space = 0x20;
+
 /// Character '!'.
-const int $exclamation       = 0x21;
+const int $exclamation = 0x21;
+
 /// Character '"', short name.
-const int $quot              = 0x22;
+const int $quot = 0x22;
+
 /// Character '"'.
-const int $quote             = 0x22;
+const int $quote = 0x22;
+
 /// Character '"'.
-const int $double_quote      = 0x22;
+const int $double_quote = 0x22;
+
 /// Character '"'.
-const int $quotation         = 0x22;
+const int $quotation = 0x22;
+
 /// Character '#'.
-const int $hash              = 0x23;
+const int $hash = 0x23;
+
 /// Character '$'.
-const int $$                 = 0x24;
+const int $$ = 0x24;
+
 /// Character '$'.
-const int $dollar            = 0x24;
+const int $dollar = 0x24;
+
 /// Character '%'.
-const int $percent           = 0x25;
+const int $percent = 0x25;
+
 /// Character '&', short name.
-const int $amp               = 0x26;
+const int $amp = 0x26;
+
 /// Character '&'.
-const int $ampersand         = 0x26;
+const int $ampersand = 0x26;
+
 /// Character "'".
-const int $apos              = 0x27;
+const int $apos = 0x27;
+
 /// Character '''.
-const int $apostrophe        = 0x27;
+const int $apostrophe = 0x27;
+
 /// Character '''.
-const int $single_quote      = 0x27;
+const int $single_quote = 0x27;
+
 /// Character '('.
-const int $lparen            = 0x28;
+const int $lparen = 0x28;
+
 /// Character '('.
-const int $open_paren        = 0x28;
+const int $open_paren = 0x28;
+
 /// Character '('.
-const int $open_parenthesis  = 0x28;
+const int $open_parenthesis = 0x28;
+
 /// Character ')'.
-const int $rparen            = 0x29;
+const int $rparen = 0x29;
+
 /// Character ')'.
-const int $close_paren       = 0x29;
+const int $close_paren = 0x29;
+
 /// Character ')'.
 const int $close_parenthesis = 0x29;
+
 /// Character '*'.
-const int $asterisk          = 0x2A;
+const int $asterisk = 0x2A;
+
 /// Character '+'.
-const int $plus              = 0x2B;
+const int $plus = 0x2B;
+
 /// Character ','.
-const int $comma             = 0x2C;
+const int $comma = 0x2C;
+
 /// Character '-'.
-const int $minus             = 0x2D;
+const int $minus = 0x2D;
+
 /// Character '-'.
-const int $dash              = 0x2D;
+const int $dash = 0x2D;
+
 /// Character '.'.
-const int $dot               = 0x2E;
+const int $dot = 0x2E;
+
 /// Character '.'.
-const int $fullstop          = 0x2E;
+const int $fullstop = 0x2E;
+
 /// Character '/'.
-const int $slash             = 0x2F;
+const int $slash = 0x2F;
+
 /// Character '/'.
-const int $solidus           = 0x2F;
+const int $solidus = 0x2F;
+
 /// Character '/'.
-const int $division          = 0x2F;
+const int $division = 0x2F;
+
 /// Character '0'.
-const int $0                 = 0x30;
+const int $0 = 0x30;
+
 /// Character '1'.
-const int $1                 = 0x31;
+const int $1 = 0x31;
+
 /// Character '2'.
-const int $2                 = 0x32;
+const int $2 = 0x32;
+
 /// Character '3'.
-const int $3                 = 0x33;
+const int $3 = 0x33;
+
 /// Character '4'.
-const int $4                 = 0x34;
+const int $4 = 0x34;
+
 /// Character '5'.
-const int $5                 = 0x35;
+const int $5 = 0x35;
+
 /// Character '6'.
-const int $6                 = 0x36;
+const int $6 = 0x36;
+
 /// Character '7'.
-const int $7                 = 0x37;
+const int $7 = 0x37;
+
 /// Character '8'.
-const int $8                 = 0x38;
+const int $8 = 0x38;
+
 /// Character '9'.
-const int $9                 = 0x39;
+const int $9 = 0x39;
+
 /// Character ':'.
-const int $colon             = 0x3A;
+const int $colon = 0x3A;
+
 /// Character ';'.
-const int $semicolon         = 0x3B;
+const int $semicolon = 0x3B;
+
 /// Character '<'.
-const int $lt                = 0x3C;
+const int $lt = 0x3C;
+
 /// Character '<'.
-const int $less_than         = 0x3C;
+const int $less_than = 0x3C;
+
 /// Character '<'.
-const int $langle            = 0x3C;
+const int $langle = 0x3C;
+
 /// Character '<'.
-const int $open_angle        = 0x3C;
+const int $open_angle = 0x3C;
+
 /// Character '='.
-const int $equal             = 0x3D;
+const int $equal = 0x3D;
+
 /// Character '>'.
-const int $gt                = 0x3E;
+const int $gt = 0x3E;
+
 /// Character '>'.
-const int $greater_than      = 0x3E;
+const int $greater_than = 0x3E;
+
 /// Character '>'.
-const int $rangle            = 0x3E;
+const int $rangle = 0x3E;
+
 /// Character '>'.
-const int $close_angle       = 0x3E;
+const int $close_angle = 0x3E;
+
 /// Character '?'.
-const int $question          = 0x3F;
+const int $question = 0x3F;
 
 /// Character '@'.
-const int $at                = 0x40;
+const int $at = 0x40;
+
 /// Character 'A'.
-const int $A                 = 0x41;
+const int $A = 0x41;
+
 /// Character 'B'.
-const int $B                 = 0x42;
+const int $B = 0x42;
+
 /// Character 'C'.
-const int $C                 = 0x43;
+const int $C = 0x43;
+
 /// Character 'D'.
-const int $D                 = 0x44;
+const int $D = 0x44;
+
 /// Character 'E'.
-const int $E                 = 0x45;
+const int $E = 0x45;
+
 /// Character 'F'.
-const int $F                 = 0x46;
+const int $F = 0x46;
+
 /// Character 'G'.
-const int $G                 = 0x47;
+const int $G = 0x47;
+
 /// Character 'H'.
-const int $H                 = 0x48;
+const int $H = 0x48;
+
 /// Character 'I'.
-const int $I                 = 0x49;
+const int $I = 0x49;
+
 /// Character 'J'.
-const int $J                 = 0x4A;
+const int $J = 0x4A;
+
 /// Character 'K'.
-const int $K                 = 0x4B;
+const int $K = 0x4B;
+
 /// Character 'L'.
-const int $L                 = 0x4C;
+const int $L = 0x4C;
+
 /// Character 'M'.
-const int $M                 = 0x4D;
+const int $M = 0x4D;
+
 /// Character 'N'.
-const int $N                 = 0x4E;
+const int $N = 0x4E;
+
 /// Character 'O'.
-const int $O                 = 0x4F;
+const int $O = 0x4F;
+
 /// Character 'P'.
-const int $P                 = 0x50;
+const int $P = 0x50;
+
 /// Character 'Q'.
-const int $Q                 = 0x51;
+const int $Q = 0x51;
+
 /// Character 'R'.
-const int $R                 = 0x52;
+const int $R = 0x52;
+
 /// Character 'S'.
-const int $S                 = 0x53;
+const int $S = 0x53;
+
 /// Character 'T'.
-const int $T                 = 0x54;
+const int $T = 0x54;
+
 /// Character 'U'.
-const int $U                 = 0x55;
+const int $U = 0x55;
+
 /// Character 'V'.
-const int $V                 = 0x56;
+const int $V = 0x56;
+
 /// Character 'W'.
-const int $W                 = 0x57;
+const int $W = 0x57;
+
 /// Character 'X'.
-const int $X                 = 0x58;
+const int $X = 0x58;
+
 /// Character 'Y'.
-const int $Y                 = 0x59;
+const int $Y = 0x59;
+
 /// Character 'Z'.
-const int $Z                 = 0x5A;
+const int $Z = 0x5A;
+
 /// Character '['.
-const int $lbracket          = 0x5B;
+const int $lbracket = 0x5B;
+
 /// Character '['.
-const int $open_bracket      = 0x5B;
+const int $open_bracket = 0x5B;
+
 /// Character '\'.
-const int $backslash         = 0x5C;
+const int $backslash = 0x5C;
+
 /// Character ']'.
-const int $rbracket          = 0x5D;
+const int $rbracket = 0x5D;
+
 /// Character ']'.
-const int $close_bracket     = 0x5D;
+const int $close_bracket = 0x5D;
+
 /// Character '^'.
-const int $circumflex        = 0x5E;
+const int $circumflex = 0x5E;
+
 /// Character '^'.
-const int $caret             = 0x5E;
+const int $caret = 0x5E;
+
 /// Character '^'.
-const int $hat               = 0x5E;
+const int $hat = 0x5E;
+
 /// Character '_'.
-const int $_                 = 0x5F;
+const int $_ = 0x5F;
+
 /// Character '_'.
-const int $underscore        = 0x5F;
+const int $underscore = 0x5F;
+
 /// Character '_'.
-const int $underline         = 0x5F;
+const int $underline = 0x5F;
 
 /// Character '`'.
-const int $backquote         = 0x60;
+const int $backquote = 0x60;
+
 /// Character '`'.
-const int $grave             = 0x60;
+const int $grave = 0x60;
+
 /// Character 'a'.
-const int $a                 = 0x61;
+const int $a = 0x61;
+
 /// Character 'b'.
-const int $b                 = 0x62;
+const int $b = 0x62;
+
 /// Character 'c'.
-const int $c                 = 0x63;
+const int $c = 0x63;
+
 /// Character 'd'.
-const int $d                 = 0x64;
+const int $d = 0x64;
+
 /// Character 'e'.
-const int $e                 = 0x65;
+const int $e = 0x65;
+
 /// Character 'f'.
-const int $f                 = 0x66;
+const int $f = 0x66;
+
 /// Character 'g'.
-const int $g                 = 0x67;
+const int $g = 0x67;
+
 /// Character 'h'.
-const int $h                 = 0x68;
+const int $h = 0x68;
+
 /// Character 'i'.
-const int $i                 = 0x69;
+const int $i = 0x69;
+
 /// Character 'j'.
-const int $j                 = 0x6A;
+const int $j = 0x6A;
+
 /// Character 'k'.
-const int $k                 = 0x6B;
+const int $k = 0x6B;
+
 /// Character 'l'.
-const int $l                 = 0x6C;
+const int $l = 0x6C;
+
 /// Character 'm'.
-const int $m                 = 0x6D;
+const int $m = 0x6D;
+
 /// Character 'n'.
-const int $n                 = 0x6E;
+const int $n = 0x6E;
+
 /// Character 'o'.
-const int $o                 = 0x6F;
+const int $o = 0x6F;
+
 /// Character 'p'.
-const int $p                 = 0x70;
+const int $p = 0x70;
+
 /// Character 'q'.
-const int $q                 = 0x71;
+const int $q = 0x71;
+
 /// Character 'r'.
-const int $r                 = 0x72;
+const int $r = 0x72;
+
 /// Character 's'.
-const int $s                 = 0x73;
+const int $s = 0x73;
+
 /// Character 't'.
-const int $t                 = 0x74;
+const int $t = 0x74;
+
 /// Character 'u'.
-const int $u                 = 0x75;
+const int $u = 0x75;
+
 /// Character 'v'.
-const int $v                 = 0x76;
+const int $v = 0x76;
+
 /// Character 'w'.
-const int $w                 = 0x77;
+const int $w = 0x77;
+
 /// Character 'x'.
-const int $x                 = 0x78;
+const int $x = 0x78;
+
 /// Character 'y'.
-const int $y                 = 0x79;
+const int $y = 0x79;
+
 /// Character 'z'.
-const int $z                 = 0x7A;
+const int $z = 0x7A;
+
 /// Character '{'.
-const int $lbrace            = 0x7B;
+const int $lbrace = 0x7B;
+
 /// Character '{'.
-const int $open_brace        = 0x7B;
+const int $open_brace = 0x7B;
+
 /// Character '|'.
-const int $pipe              = 0x7C;
+const int $pipe = 0x7C;
+
 /// Character '|'.
-const int $bar               = 0x7C;
+const int $bar = 0x7C;
+
 /// Character '}'.
-const int $rbrace            = 0x7D;
+const int $rbrace = 0x7D;
+
 /// Character '}'.
-const int $close_brace       = 0x7D;
+const int $close_brace = 0x7D;
+
 /// Character '~'.
-const int $tilde             = 0x7E;
+const int $tilde = 0x7E;
diff --git a/lib/charcode.dart b/lib/charcode.dart
index a47fc19..6a702d7 100644
--- a/lib/charcode.dart
+++ b/lib/charcode.dart
@@ -2,17 +2,15 @@
 // for details. All rights reserved. Use of this source is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-/**
- * Defines symbolic names for character code points.
- *
- * Includes all ASCII and Latin-1 characters.
- *
- * Exports the libraries `ascii.dart` and `html_entity.dart`.
- *
- * Hides the characters `$minus`, `$sub` and `$tilde` from
- * `html_entities.dart`, since other characters have the same name in
- * `ascii.dart`.
- */
+/// Defines symbolic names for character code points.
+///
+/// Includes all ASCII and Latin-1 characters.
+///
+/// Exports the libraries `ascii.dart` and `html_entity.dart`.
+///
+/// Hides the characters `$minus`, `$sub` and `$tilde` from
+/// `html_entities.dart`, since other characters have the same name in
+/// `ascii.dart`.
 library charcode;
 
 export "ascii.dart";
diff --git a/lib/html_entity.dart b/lib/html_entity.dart
index 507afd4..fa7c493 100644
--- a/lib/html_entity.dart
+++ b/lib/html_entity.dart
@@ -2,522 +2,768 @@
 // for details. All rights reserved. Use of this source is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-/**
- * Character codes based on HTML 4.01 character entity names.
- *
- * For each entity name, e.g., `nbsp`,
- * a constant with that name prefixed by `$` is defined
- * for that entity's code point.
- *
- * The HTML entities include the non-ASCII Latin-1 characters and
- * symbols, mathematical symbols and Greek litters.
- *
- * The five characters that are ASCII
- * are exported from the `ascii.dart` library.
- *
- * Three names conflict with `ascii.dart`: `$minus`, `$sub` and `$tilde`.
- * If importing both libraries, these three should be hidden from one of the
- * libraries.
- */
+/// Character codes based on HTML 4.01 character entity names.
+///
+/// For each entity name, e.g., `nbsp`,
+/// a constant with that name prefixed by `$` is defined
+/// for that entity's code point.
+///
+/// The HTML entities include the non-ASCII Latin-1 characters and
+/// symbols, mathematical symbols and Greek litters.
+///
+/// The five characters that are ASCII
+/// are exported from the `ascii.dart` library.
+///
+/// Three names conflict with `ascii.dart`: `$minus`, `$sub` and `$tilde`.
+/// If importing both libraries, these three should be hidden from one of the
+/// libraries.
 library charcode.htmlentity.dollar_lowercase;
 
 export "ascii.dart" show $quot, $amp, $apos, $lt, $gt;
 
 /// no-break space (non-breaking space)
-const int $nbsp     = 0x00A0;
+const int $nbsp = 0x00A0;
+
 /// inverted exclamation mark ('¡')
-const int $iexcl    = 0x00A1;
+const int $iexcl = 0x00A1;
+
 /// cent sign ('¢')
-const int $cent     = 0x00A2;
+const int $cent = 0x00A2;
+
 /// pound sign ('£')
-const int $pound    = 0x00A3;
+const int $pound = 0x00A3;
+
 /// currency sign ('¤')
-const int $curren   = 0x00A4;
+const int $curren = 0x00A4;
+
 /// yen sign (yuan sign) ('¥')
-const int $yen      = 0x00A5;
+const int $yen = 0x00A5;
+
 /// broken bar (broken vertical bar) ('¦')
-const int $brvbar   = 0x00A6;
+const int $brvbar = 0x00A6;
+
 /// section sign ('§')
-const int $sect     = 0x00A7;
+const int $sect = 0x00A7;
+
 /// diaeresis (spacing diaeresis); see Germanic umlaut ('¨')
-const int $uml      = 0x00A8;
+const int $uml = 0x00A8;
+
 /// copyright symbol ('©')
-const int $copy     = 0x00A9;
+const int $copy = 0x00A9;
+
 /// feminine ordinal indicator ('ª')
-const int $ordf     = 0x00AA;
+const int $ordf = 0x00AA;
+
 /// left-pointing double angle quotation mark (left pointing guillemet) ('«')
-const int $laquo    = 0x00AB;
+const int $laquo = 0x00AB;
+
 /// not sign ('¬')
-const int $not      = 0x00AC;
+const int $not = 0x00AC;
+
 /// soft hyphen (discretionary hyphen)
-const int $shy      = 0x00AD;
+const int $shy = 0x00AD;
+
 /// registered sign (registered trademark symbol) ('®')
-const int $reg      = 0x00AE;
+const int $reg = 0x00AE;
+
 /// macron (spacing macron, overline, APL overbar) ('¯')
-const int $macr     = 0x00AF;
+const int $macr = 0x00AF;
+
 /// degree symbol ('°')
-const int $deg      = 0x00B0;
+const int $deg = 0x00B0;
+
 /// plus-minus sign (plus-or-minus sign) ('±')
-const int $plusmn   = 0x00B1;
+const int $plusmn = 0x00B1;
+
 /// superscript two (superscript digit two, squared) ('²')
-const int $sup2     = 0x00B2;
+const int $sup2 = 0x00B2;
+
 /// superscript three (superscript digit three, cubed) ('³')
-const int $sup3     = 0x00B3;
+const int $sup3 = 0x00B3;
+
 /// acute accent (spacing acute) ('´')
-const int $acute    = 0x00B4;
+const int $acute = 0x00B4;
+
 /// micro sign ('µ')
-const int $micro    = 0x00B5;
+const int $micro = 0x00B5;
+
 /// pilcrow sign (paragraph sign) ('¶')
-const int $para     = 0x00B6;
+const int $para = 0x00B6;
+
 /// middle dot (Georgian comma, Greek middle dot) ('·')
-const int $middot   = 0x00B7;
+const int $middot = 0x00B7;
+
 /// cedilla (spacing cedilla) ('¸')
-const int $cedil    = 0x00B8;
+const int $cedil = 0x00B8;
+
 /// superscript one (superscript digit one) ('¹')
-const int $sup1     = 0x00B9;
+const int $sup1 = 0x00B9;
+
 /// masculine ordinal indicator ('º')
-const int $ordm     = 0x00BA;
+const int $ordm = 0x00BA;
+
 /// right-pointing double angle quotation mark (right pointing guillemet) ('»')
-const int $raquo    = 0x00BB;
+const int $raquo = 0x00BB;
+
 /// vulgar fraction one quarter (fraction one quarter) ('¼')
-const int $frac14   = 0x00BC;
+const int $frac14 = 0x00BC;
+
 /// vulgar fraction one half (fraction one half) ('½')
-const int $frac12   = 0x00BD;
+const int $frac12 = 0x00BD;
+
 /// vulgar fraction three quarters (fraction three quarters) ('¾')
-const int $frac34   = 0x00BE;
+const int $frac34 = 0x00BE;
+
 /// inverted question mark (turned question mark) ('¿')
-const int $iquest   = 0x00BF;
+const int $iquest = 0x00BF;
+
 /// Latin capital letter A with grave accent (Latin capital letter A grave) ('À')
-const int $Agrave   = 0x00C0;
+const int $Agrave = 0x00C0;
+
 /// Latin capital letter A with acute accent ('Á')
-const int $Aacute   = 0x00C1;
+const int $Aacute = 0x00C1;
+
 /// Latin capital letter A with circumflex ('Â')
-const int $Acirc    = 0x00C2;
+const int $Acirc = 0x00C2;
+
 /// Latin capital letter A with tilde ('Ã')
-const int $Atilde   = 0x00C3;
+const int $Atilde = 0x00C3;
+
 /// Latin capital letter A with diaeresis ('Ä')
-const int $Auml     = 0x00C4;
+const int $Auml = 0x00C4;
+
 /// Latin capital letter A with ring above (Latin capital letter A ring) ('Å')
-const int $Aring    = 0x00C5;
+const int $Aring = 0x00C5;
+
 /// Latin capital letter AE (Latin capital ligature AE) ('Æ')
-const int $AElig    = 0x00C6;
+const int $AElig = 0x00C6;
+
 /// Latin capital letter C with cedilla ('Ç')
-const int $Ccedil   = 0x00C7;
+const int $Ccedil = 0x00C7;
+
 /// Latin capital letter E with grave accent ('È')
-const int $Egrave   = 0x00C8;
+const int $Egrave = 0x00C8;
+
 /// Latin capital letter E with acute accent ('É')
-const int $Eacute   = 0x00C9;
+const int $Eacute = 0x00C9;
+
 /// Latin capital letter E with circumflex ('Ê')
-const int $Ecirc    = 0x00CA;
+const int $Ecirc = 0x00CA;
+
 /// Latin capital letter E with diaeresis ('Ë')
-const int $Euml     = 0x00CB;
+const int $Euml = 0x00CB;
+
 /// Latin capital letter I with grave accent ('Ì')
-const int $Igrave   = 0x00CC;
+const int $Igrave = 0x00CC;
+
 /// Latin capital letter I with acute accent ('Í')
-const int $Iacute   = 0x00CD;
+const int $Iacute = 0x00CD;
+
 /// Latin capital letter I with circumflex ('Î')
-const int $Icirc    = 0x00CE;
+const int $Icirc = 0x00CE;
+
 /// Latin capital letter I with diaeresis ('Ï')
-const int $Iuml     = 0x00CF;
+const int $Iuml = 0x00CF;
+
 /// Latin capital letter Eth ('Ð')
-const int $ETH      = 0x00D0;
+const int $ETH = 0x00D0;
+
 /// Latin capital letter N with tilde ('Ñ')
-const int $Ntilde   = 0x00D1;
+const int $Ntilde = 0x00D1;
+
 /// Latin capital letter O with grave accent ('Ò')
-const int $Ograve   = 0x00D2;
+const int $Ograve = 0x00D2;
+
 /// Latin capital letter O with acute accent ('Ó')
-const int $Oacute   = 0x00D3;
+const int $Oacute = 0x00D3;
+
 /// Latin capital letter O with circumflex ('Ô')
-const int $Ocirc    = 0x00D4;
+const int $Ocirc = 0x00D4;
+
 /// Latin capital letter O with tilde ('Õ')
-const int $Otilde   = 0x00D5;
+const int $Otilde = 0x00D5;
+
 /// Latin capital letter O with diaeresis ('Ö')
-const int $Ouml     = 0x00D6;
+const int $Ouml = 0x00D6;
+
 /// multiplication sign ('×')
-const int $times    = 0x00D7;
+const int $times = 0x00D7;
+
 /// Latin capital letter O with stroke (Latin capital letter O slash) ('Ø')
-const int $Oslash   = 0x00D8;
+const int $Oslash = 0x00D8;
+
 /// Latin capital letter U with grave accent ('Ù')
-const int $Ugrave   = 0x00D9;
+const int $Ugrave = 0x00D9;
+
 /// Latin capital letter U with acute accent ('Ú')
-const int $Uacute   = 0x00DA;
+const int $Uacute = 0x00DA;
+
 /// Latin capital letter U with circumflex ('Û')
-const int $Ucirc    = 0x00DB;
+const int $Ucirc = 0x00DB;
+
 /// Latin capital letter U with diaeresis ('Ü')
-const int $Uuml     = 0x00DC;
+const int $Uuml = 0x00DC;
+
 /// Latin capital letter Y with acute accent ('Ý')
-const int $Yacute   = 0x00DD;
+const int $Yacute = 0x00DD;
+
 /// Latin capital letter THORN ('Þ')
-const int $THORN    = 0x00DE;
+const int $THORN = 0x00DE;
+
 /// Latin small letter sharp s (ess-zed); see German Eszett ('ß')
-const int $szlig    = 0x00DF;
+const int $szlig = 0x00DF;
+
 /// Latin small letter a with grave accent ('à')
-const int $agrave   = 0x00E0;
+const int $agrave = 0x00E0;
+
 /// Latin small letter a with acute accent ('á')
-const int $aacute   = 0x00E1;
+const int $aacute = 0x00E1;
+
 /// Latin small letter a with circumflex ('â')
-const int $acirc    = 0x00E2;
+const int $acirc = 0x00E2;
+
 /// Latin small letter a with tilde ('ã')
-const int $atilde   = 0x00E3;
+const int $atilde = 0x00E3;
+
 /// Latin small letter a with diaeresis ('ä')
-const int $auml     = 0x00E4;
+const int $auml = 0x00E4;
+
 /// Latin small letter a with ring above ('å')
-const int $aring    = 0x00E5;
+const int $aring = 0x00E5;
+
 /// Latin small letter ae (Latin small ligature ae) ('æ')
-const int $aelig    = 0x00E6;
+const int $aelig = 0x00E6;
+
 /// Latin small letter c with cedilla ('ç')
-const int $ccedil   = 0x00E7;
+const int $ccedil = 0x00E7;
+
 /// Latin small letter e with grave accent ('è')
-const int $egrave   = 0x00E8;
+const int $egrave = 0x00E8;
+
 /// Latin small letter e with acute accent ('é')
-const int $eacute   = 0x00E9;
+const int $eacute = 0x00E9;
+
 /// Latin small letter e with circumflex ('ê')
-const int $ecirc    = 0x00EA;
+const int $ecirc = 0x00EA;
+
 /// Latin small letter e with diaeresis ('ë')
-const int $euml     = 0x00EB;
+const int $euml = 0x00EB;
+
 /// Latin small letter i with grave accent ('ì')
-const int $igrave   = 0x00EC;
+const int $igrave = 0x00EC;
+
 /// Latin small letter i with acute accent ('í')
-const int $iacute   = 0x00ED;
+const int $iacute = 0x00ED;
+
 /// Latin small letter i with circumflex ('î')
-const int $icirc    = 0x00EE;
+const int $icirc = 0x00EE;
+
 /// Latin small letter i with diaeresis ('ï')
-const int $iuml     = 0x00EF;
+const int $iuml = 0x00EF;
+
 /// Latin small letter eth ('ð')
-const int $eth      = 0x00F0;
+const int $eth = 0x00F0;
+
 /// Latin small letter n with tilde ('ñ')
-const int $ntilde   = 0x00F1;
+const int $ntilde = 0x00F1;
+
 /// Latin small letter o with grave accent ('ò')
-const int $ograve   = 0x00F2;
+const int $ograve = 0x00F2;
+
 /// Latin small letter o with acute accent ('ó')
-const int $oacute   = 0x00F3;
+const int $oacute = 0x00F3;
+
 /// Latin small letter o with circumflex ('ô')
-const int $ocirc    = 0x00F4;
+const int $ocirc = 0x00F4;
+
 /// Latin small letter o with tilde ('õ')
-const int $otilde   = 0x00F5;
+const int $otilde = 0x00F5;
+
 /// Latin small letter o with diaeresis ('ö')
-const int $ouml     = 0x00F6;
+const int $ouml = 0x00F6;
+
 /// division sign (obelus) ('÷')
-const int $divide   = 0x00F7;
+const int $divide = 0x00F7;
+
 /// Latin small letter o with stroke (Latin small letter o slash) ('ø')
-const int $oslash   = 0x00F8;
+const int $oslash = 0x00F8;
+
 /// Latin small letter u with grave accent ('ù')
-const int $ugrave   = 0x00F9;
+const int $ugrave = 0x00F9;
+
 /// Latin small letter u with acute accent ('ú')
-const int $uacute   = 0x00FA;
+const int $uacute = 0x00FA;
+
 /// Latin small letter u with circumflex ('û')
-const int $ucirc    = 0x00FB;
+const int $ucirc = 0x00FB;
+
 /// Latin small letter u with diaeresis ('ü')
-const int $uuml     = 0x00FC;
+const int $uuml = 0x00FC;
+
 /// Latin small letter y with acute accent ('ý')
-const int $yacute   = 0x00FD;
+const int $yacute = 0x00FD;
+
 /// Latin small letter thorn ('þ')
-const int $thorn    = 0x00FE;
+const int $thorn = 0x00FE;
+
 /// Latin small letter y with diaeresis ('ÿ')
-const int $yuml     = 0x00FF;
+const int $yuml = 0x00FF;
+
 /// Latin capital ligature oe ('Œ')
-const int $OElig    = 0x0152;
+const int $OElig = 0x0152;
+
 /// Latin small ligature oe ('œ')
-const int $oelig    = 0x0153;
+const int $oelig = 0x0153;
+
 /// Latin capital letter s with caron ('Š')
-const int $Scaron   = 0x0160;
+const int $Scaron = 0x0160;
+
 /// Latin small letter s with caron ('š')
-const int $scaron   = 0x0161;
+const int $scaron = 0x0161;
+
 /// Latin capital letter y with diaeresis ('Ÿ')
-const int $Yuml     = 0x0178;
+const int $Yuml = 0x0178;
+
 /// Latin small letter f with hook (function, florin) ('ƒ')
-const int $fnof     = 0x0192;
+const int $fnof = 0x0192;
+
 /// modifier letter circumflex accent ('ˆ')
-const int $circ     = 0x02C6;
+const int $circ = 0x02C6;
+
 /// small tilde ('˜')
-const int $tilde    = 0x02DC;
+const int $tilde = 0x02DC;
+
 /// Greek capital letter Alpha ('Α')
-const int $Alpha    = 0x0391;
+const int $Alpha = 0x0391;
+
 /// Greek capital letter Beta ('Β')
-const int $Beta     = 0x0392;
+const int $Beta = 0x0392;
+
 /// Greek capital letter Gamma ('Γ')
-const int $Gamma    = 0x0393;
+const int $Gamma = 0x0393;
+
 /// Greek capital letter Delta ('Δ')
-const int $Delta    = 0x0394;
+const int $Delta = 0x0394;
+
 /// Greek capital letter Epsilon ('Ε')
-const int $Epsilon  = 0x0395;
+const int $Epsilon = 0x0395;
+
 /// Greek capital letter Zeta ('Ζ')
-const int $Zeta     = 0x0396;
+const int $Zeta = 0x0396;
+
 /// Greek capital letter Eta ('Η')
-const int $Eta      = 0x0397;
+const int $Eta = 0x0397;
+
 /// Greek capital letter Theta ('Θ')
-const int $Theta    = 0x0398;
+const int $Theta = 0x0398;
+
 /// Greek capital letter Iota ('Ι')
-const int $Iota     = 0x0399;
+const int $Iota = 0x0399;
+
 /// Greek capital letter Kappa ('Κ')
-const int $Kappa    = 0x039A;
+const int $Kappa = 0x039A;
+
 /// Greek capital letter Lambda ('Λ')
-const int $Lambda   = 0x039B;
+const int $Lambda = 0x039B;
+
 /// Greek capital letter Mu ('Μ')
-const int $Mu       = 0x039C;
+const int $Mu = 0x039C;
+
 /// Greek capital letter Nu ('Ν')
-const int $Nu       = 0x039D;
+const int $Nu = 0x039D;
+
 /// Greek capital letter Xi ('Ξ')
-const int $Xi       = 0x039E;
+const int $Xi = 0x039E;
+
 /// Greek capital letter Omicron ('Ο')
-const int $Omicron  = 0x039F;
+const int $Omicron = 0x039F;
+
 /// Greek capital letter Pi ('Π')
-const int $Pi       = 0x03A0;
+const int $Pi = 0x03A0;
+
 /// Greek capital letter Rho ('Ρ')
-const int $Rho      = 0x03A1;
+const int $Rho = 0x03A1;
+
 /// Greek capital letter Sigma ('Σ')
-const int $Sigma    = 0x03A3;
+const int $Sigma = 0x03A3;
+
 /// Greek capital letter Tau ('Τ')
-const int $Tau      = 0x03A4;
+const int $Tau = 0x03A4;
+
 /// Greek capital letter Upsilon ('Υ')
-const int $Upsilon  = 0x03A5;
+const int $Upsilon = 0x03A5;
+
 /// Greek capital letter Phi ('Φ')
-const int $Phi      = 0x03A6;
+const int $Phi = 0x03A6;
+
 /// Greek capital letter Chi ('Χ')
-const int $Chi      = 0x03A7;
+const int $Chi = 0x03A7;
+
 /// Greek capital letter Psi ('Ψ')
-const int $Psi      = 0x03A8;
+const int $Psi = 0x03A8;
+
 /// Greek capital letter Omega ('Ω')
-const int $Omega    = 0x03A9;
+const int $Omega = 0x03A9;
+
 /// Greek small letter alpha ('α')
-const int $alpha    = 0x03B1;
+const int $alpha = 0x03B1;
+
 /// Greek small letter beta ('β')
-const int $beta     = 0x03B2;
+const int $beta = 0x03B2;
+
 /// Greek small letter gamma ('γ')
-const int $gamma    = 0x03B3;
+const int $gamma = 0x03B3;
+
 /// Greek small letter delta ('δ')
-const int $delta    = 0x03B4;
+const int $delta = 0x03B4;
+
 /// Greek small letter epsilon ('ε')
-const int $epsilon  = 0x03B5;
+const int $epsilon = 0x03B5;
+
 /// Greek small letter zeta ('ζ')
-const int $zeta     = 0x03B6;
+const int $zeta = 0x03B6;
+
 /// Greek small letter eta ('η')
-const int $eta      = 0x03B7;
+const int $eta = 0x03B7;
+
 /// Greek small letter theta ('θ')
-const int $theta    = 0x03B8;
+const int $theta = 0x03B8;
+
 /// Greek small letter iota ('ι')
-const int $iota     = 0x03B9;
+const int $iota = 0x03B9;
+
 /// Greek small letter kappa ('κ')
-const int $kappa    = 0x03BA;
+const int $kappa = 0x03BA;
+
 /// Greek small letter lambda ('λ')
-const int $lambda   = 0x03BB;
+const int $lambda = 0x03BB;
+
 /// Greek small letter mu ('μ')
-const int $mu       = 0x03BC;
+const int $mu = 0x03BC;
+
 /// Greek small letter nu ('ν')
-const int $nu       = 0x03BD;
+const int $nu = 0x03BD;
+
 /// Greek small letter xi ('ξ')
-const int $xi       = 0x03BE;
+const int $xi = 0x03BE;
+
 /// Greek small letter omicron ('ο')
-const int $omicron  = 0x03BF;
+const int $omicron = 0x03BF;
+
 /// Greek small letter pi ('π')
-const int $pi       = 0x03C0;
+const int $pi = 0x03C0;
+
 /// Greek small letter rho ('ρ')
-const int $rho      = 0x03C1;
+const int $rho = 0x03C1;
+
 /// Greek small letter final sigma ('ς')
-const int $sigmaf   = 0x03C2;
+const int $sigmaf = 0x03C2;
+
 /// Greek small letter sigma ('σ')
-const int $sigma    = 0x03C3;
+const int $sigma = 0x03C3;
+
 /// Greek small letter tau ('τ')
-const int $tau      = 0x03C4;
+const int $tau = 0x03C4;
+
 /// Greek small letter upsilon ('υ')
-const int $upsilon  = 0x03C5;
+const int $upsilon = 0x03C5;
+
 /// Greek small letter phi ('φ')
-const int $phi      = 0x03C6;
+const int $phi = 0x03C6;
+
 /// Greek small letter chi ('χ')
-const int $chi      = 0x03C7;
+const int $chi = 0x03C7;
+
 /// Greek small letter psi ('ψ')
-const int $psi      = 0x03C8;
+const int $psi = 0x03C8;
+
 /// Greek small letter omega ('ω')
-const int $omega    = 0x03C9;
+const int $omega = 0x03C9;
+
 /// Greek theta symbol ('ϑ')
 const int $thetasym = 0x03D1;
+
 /// Greek Upsilon with hook symbol ('ϒ')
-const int $upsih    = 0x03D2;
+const int $upsih = 0x03D2;
+
 /// Greek pi symbol ('ϖ')
-const int $piv      = 0x03D6;
+const int $piv = 0x03D6;
+
 /// en space
-const int $ensp     = 0x2002;
+const int $ensp = 0x2002;
+
 /// em space
-const int $emsp     = 0x2003;
+const int $emsp = 0x2003;
+
 /// thin space
-const int $thinsp   = 0x2009;
+const int $thinsp = 0x2009;
+
 /// zero-width non-joiner
-const int $zwnj     = 0x200C;
+const int $zwnj = 0x200C;
+
 /// zero-width joiner
-const int $zwj      = 0x200D;
+const int $zwj = 0x200D;
+
 /// left-to-right mark
-const int $lrm      = 0x200E;
+const int $lrm = 0x200E;
+
 /// right-to-left mark
-const int $rlm      = 0x200F;
+const int $rlm = 0x200F;
+
 /// en dash ('–')
-const int $ndash    = 0x2013;
+const int $ndash = 0x2013;
+
 /// em dash ('—')
-const int $mdash    = 0x2014;
+const int $mdash = 0x2014;
+
 /// left single quotation mark ('‘')
-const int $lsquo    = 0x2018;
+const int $lsquo = 0x2018;
+
 /// right single quotation mark ('’')
-const int $rsquo    = 0x2019;
+const int $rsquo = 0x2019;
+
 /// single low-9 quotation mark ('‚')
-const int $sbquo    = 0x201A;
+const int $sbquo = 0x201A;
+
 /// left double quotation mark ('“')
-const int $ldquo    = 0x201C;
+const int $ldquo = 0x201C;
+
 /// right double quotation mark ('”')
-const int $rdquo    = 0x201D;
+const int $rdquo = 0x201D;
+
 /// double low-9 quotation mark ('„')
-const int $bdquo    = 0x201E;
+const int $bdquo = 0x201E;
+
 /// dagger, obelisk ('†')
-const int $dagger   = 0x2020;
+const int $dagger = 0x2020;
+
 /// double dagger, double obelisk ('‡')
-const int $Dagger   = 0x2021;
+const int $Dagger = 0x2021;
+
 /// bullet (black small circle) ('•')
-const int $bull     = 0x2022;
+const int $bull = 0x2022;
+
 /// horizontal ellipsis (three dot leader) ('…')
-const int $hellip   = 0x2026;
+const int $hellip = 0x2026;
+
 /// per mille sign ('‰')
-const int $permil   = 0x2030;
+const int $permil = 0x2030;
+
 /// prime (minutes, feet) ('′')
-const int $prime    = 0x2032;
+const int $prime = 0x2032;
+
 /// double prime (seconds, inches) ('″')
-const int $Prime    = 0x2033;
+const int $Prime = 0x2033;
+
 /// single left-pointing angle quotation mark ('‹')
-const int $lsaquo   = 0x2039;
+const int $lsaquo = 0x2039;
+
 /// single right-pointing angle quotation mark ('›')
-const int $rsaquo   = 0x203A;
+const int $rsaquo = 0x203A;
+
 /// overline (spacing overscore) ('‾')
-const int $oline    = 0x203E;
+const int $oline = 0x203E;
+
 /// fraction slash (solidus) ('⁄')
-const int $frasl    = 0x2044;
+const int $frasl = 0x2044;
+
 /// euro sign ('€')
-const int $euro     = 0x20AC;
+const int $euro = 0x20AC;
+
 /// black-letter capital I (imaginary part) ('ℑ')
-const int $image    = 0x2111;
+const int $image = 0x2111;
+
 /// script capital P (power set, Weierstrass p) ('℘')
-const int $weierp   = 0x2118;
+const int $weierp = 0x2118;
+
 /// black-letter capital R (real part symbol) ('ℜ')
-const int $real     = 0x211C;
+const int $real = 0x211C;
+
 /// trademark symbol ('™')
-const int $trade    = 0x2122;
+const int $trade = 0x2122;
+
 /// alef symbol (first transfinite cardinal) ('ℵ')
-const int $alefsym  = 0x2135;
+const int $alefsym = 0x2135;
+
 /// leftwards arrow ('←')
-const int $larr     = 0x2190;
+const int $larr = 0x2190;
+
 /// upwards arrow ('↑')
-const int $uarr     = 0x2191;
+const int $uarr = 0x2191;
+
 /// rightwards arrow ('→')
-const int $rarr     = 0x2192;
+const int $rarr = 0x2192;
+
 /// downwards arrow ('↓')
-const int $darr     = 0x2193;
+const int $darr = 0x2193;
+
 /// left right arrow ('↔')
-const int $harr     = 0x2194;
+const int $harr = 0x2194;
+
 /// downwards arrow with corner leftwards (carriage return) ('↵')
-const int $crarr    = 0x21B5;
+const int $crarr = 0x21B5;
+
 /// leftwards double arrow ('⇐')
-const int $lArr     = 0x21D0;
+const int $lArr = 0x21D0;
+
 /// upwards double arrow ('⇑')
-const int $uArr     = 0x21D1;
+const int $uArr = 0x21D1;
+
 /// rightwards double arrow ('⇒')
-const int $rArr     = 0x21D2;
+const int $rArr = 0x21D2;
+
 /// downwards double arrow ('⇓')
-const int $dArr     = 0x21D3;
+const int $dArr = 0x21D3;
+
 /// left right double arrow ('⇔')
-const int $hArr     = 0x21D4;
+const int $hArr = 0x21D4;
+
 /// for all ('∀')
-const int $forall   = 0x2200;
+const int $forall = 0x2200;
+
 /// partial differential ('∂')
-const int $part     = 0x2202;
+const int $part = 0x2202;
+
 /// there exists ('∃')
-const int $exist    = 0x2203;
+const int $exist = 0x2203;
+
 /// empty set (null set); see also U+8960, ⌀ ('∅')
-const int $empty    = 0x2205;
+const int $empty = 0x2205;
+
 /// del or nabla (vector differential operator) ('∇')
-const int $nabla    = 0x2207;
+const int $nabla = 0x2207;
+
 /// element of ('∈')
-const int $isin     = 0x2208;
+const int $isin = 0x2208;
+
 /// not an element of ('∉')
-const int $notin    = 0x2209;
+const int $notin = 0x2209;
+
 /// contains as member ('∋')
-const int $ni       = 0x220B;
+const int $ni = 0x220B;
+
 /// n-ary product (product sign) ('∏')
-const int $prod     = 0x220F;
+const int $prod = 0x220F;
+
 /// n-ary summation ('∑')
-const int $sum      = 0x2211;
+const int $sum = 0x2211;
+
 /// minus sign ('−')
-const int $minus    = 0x2212;
+const int $minus = 0x2212;
+
 /// asterisk operator ('∗')
-const int $lowast   = 0x2217;
+const int $lowast = 0x2217;
+
 /// square root (radical sign) ('√')
-const int $radic    = 0x221A;
+const int $radic = 0x221A;
+
 /// proportional to ('∝')
-const int $prop     = 0x221D;
+const int $prop = 0x221D;
+
 /// infinity ('∞')
-const int $infin    = 0x221E;
+const int $infin = 0x221E;
+
 /// angle ('∠')
-const int $ang      = 0x2220;
+const int $ang = 0x2220;
+
 /// logical and (wedge) ('∧')
-const int $and      = 0x2227;
+const int $and = 0x2227;
+
 /// logical or (vee) ('∨')
-const int $or       = 0x2228;
+const int $or = 0x2228;
+
 /// intersection (cap) ('∩')
-const int $cap      = 0x2229;
+const int $cap = 0x2229;
+
 /// union (cup) ('∪')
-const int $cup      = 0x222A;
+const int $cup = 0x222A;
+
 /// integral ('∫')
-const int $int      = 0x222B;
+const int $int = 0x222B;
+
 /// therefore sign ('∴')
-const int $there4   = 0x2234;
+const int $there4 = 0x2234;
+
 /// tilde operator (varies with, similar to) ('∼')
-const int $sim      = 0x223C;
+const int $sim = 0x223C;
+
 /// congruent to ('≅')
-const int $cong     = 0x2245;
+const int $cong = 0x2245;
+
 /// almost equal to (asymptotic to) ('≈')
-const int $asymp    = 0x2248;
+const int $asymp = 0x2248;
+
 /// not equal to ('≠')
-const int $ne       = 0x2260;
+const int $ne = 0x2260;
+
 /// identical to; sometimes used for 'equivalent to' ('≡')
-const int $equiv    = 0x2261;
+const int $equiv = 0x2261;
+
 /// less-than or equal to ('≤')
-const int $le       = 0x2264;
+const int $le = 0x2264;
+
 /// greater-than or equal to ('≥')
-const int $ge       = 0x2265;
+const int $ge = 0x2265;
+
 /// subset of ('⊂')
-const int $sub      = 0x2282;
+const int $sub = 0x2282;
+
 /// superset of ('⊃')
-const int $sup      = 0x2283;
+const int $sup = 0x2283;
+
 /// not a subset of ('⊄')
-const int $nsub     = 0x2284;
+const int $nsub = 0x2284;
+
 /// subset of or equal to ('⊆')
-const int $sube     = 0x2286;
+const int $sube = 0x2286;
+
 /// superset of or equal to ('⊇')
-const int $supe     = 0x2287;
+const int $supe = 0x2287;
+
 /// circled plus (direct sum) ('⊕')
-const int $oplus    = 0x2295;
+const int $oplus = 0x2295;
+
 /// circled times (vector product) ('⊗')
-const int $otimes   = 0x2297;
+const int $otimes = 0x2297;
+
 /// up tack (orthogonal to, perpendicular) ('⊥')
-const int $perp     = 0x22A5;
+const int $perp = 0x22A5;
+
 /// dot operator ('⋅')
-const int $sdot     = 0x22C5;
+const int $sdot = 0x22C5;
+
 /// vertical ellipsis ('⋮')
-const int $vellip   = 0x22EE;
+const int $vellip = 0x22EE;
+
 /// left ceiling (APL upstile) ('⌈')
-const int $lceil    = 0x2308;
+const int $lceil = 0x2308;
+
 /// right ceiling ('⌉')
-const int $rceil    = 0x2309;
+const int $rceil = 0x2309;
+
 /// left floor (APL downstile) ('⌊')
-const int $lfloor   = 0x230A;
+const int $lfloor = 0x230A;
+
 /// right floor ('⌋')
-const int $rfloor   = 0x230B;
+const int $rfloor = 0x230B;
+
 /// left-pointing angle bracket (bra) ('〈')
-const int $lang     = 0x2329;
+const int $lang = 0x2329;
+
 /// right-pointing angle bracket (ket) ('〉')
-const int $rang     = 0x232A;
+const int $rang = 0x232A;
+
 /// lozenge ('◊')
-const int $loz      = 0x25CA;
+const int $loz = 0x25CA;
+
 /// black spade suit ('♠')
-const int $spades   = 0x2660;
+const int $spades = 0x2660;
+
 /// black club suit (shamrock) ('♣')
-const int $clubs    = 0x2663;
+const int $clubs = 0x2663;
+
 /// black heart suit (valentine) ('♥')
-const int $hearts   = 0x2665;
+const int $hearts = 0x2665;
+
 /// black diamond suit ('♦')
-const int $diams    = 0x2666;
+const int $diams = 0x2666;
diff --git a/pubspec.yaml b/pubspec.yaml
index 6494810..2a13d51 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,6 +1,5 @@
 name: charcode
-version: 1.1.0
-author: Dart Team <misc@dartlang.org>
+version: 1.2.0
 description: >
   Constants for ASCII and common non-ASCII character codes.
 
@@ -9,4 +8,7 @@
   This library declares readable symbolic names for character codes.
 homepage: http://www.dartlang.org
 environment:
-  sdk: '>=1.0.0 <2.0.0'
+  sdk: '>=2.9.0-18.0 <2.9.0'
+
+dependencies:
+  pedantic: '>=1.9.0 <2.0.0'
