in lib/src/scanner.dart [958:992]
Token _scanAnchor({bool anchor = true}) {
var start = _scanner.state;
// Eat the indicator character.
_scanner.readChar();
// libyaml only allows word characters in anchor names, but the spec
// disagrees: http://yaml.org/spec/1.2/spec.html#ns-anchor-char.
var startPosition = _scanner.position;
while (_isAnchorChar) {
_scanner.readChar();
}
var name = _scanner.substring(startPosition);
var next = _scanner.peekChar();
if (name.isEmpty ||
(!_isBlankOrEnd &&
next != QUESTION &&
next != COLON &&
next != COMMA &&
next != RIGHT_SQUARE &&
next != RIGHT_CURLY &&
next != PERCENT &&
next != AT &&
next != GRAVE_ACCENT)) {
throw YamlException(
'Expected alphanumeric character.', _scanner.emptySpan);
}
if (anchor) {
return AnchorToken(_scanner.spanFrom(start), name);
} else {
return AliasToken(_scanner.spanFrom(start), name);
}
}