in lib/src/parser.dart [154:175]
AstNode _parseLiteral({bool inOptions = false}) {
// If we're in an options block, we want to stop parsing as soon as we hit a
// comma. Otherwise, commas are fair game for literals.
var regExp = RegExp(inOptions ? r'[^*{[?\\}\],()]*' : r'[^*{[?\\}\]()]*');
_scanner.scan(regExp);
var buffer = StringBuffer()..write(_scanner.lastMatch![0]);
while (_scanner.scan('\\')) {
buffer.writeCharCode(_scanner.readChar());
_scanner.scan(regExp);
buffer.write(_scanner.lastMatch![0]);
}
for (var char in const [']', '(', ')']) {
if (_scanner.matches(char)) _scanner.error('unexpected "$char"');
}
if (!inOptions && _scanner.matches('}')) _scanner.error('unexpected "}"');
return LiteralNode(buffer.toString(),
context: _context, caseSensitive: _caseSensitive);
}