feat(parser): add bytes literal syntax #894
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
Implements bytes literals, which return
[]bytedirectly and interpret\xand octal escapes as raw byte values (0-255) rather than Unicode codepoints.Fixes #457.
Changes
Components:
[bB]'...'and[bB]"..."prefix, emit Bytes token\u/\Usupport, 0-255 limit)[]bytevalue[]byteUpdated docs.
Further comments
This is not exactly CEL-compatible:
\uXXXXin bytes literals (only\Uis string-only). We reject both, requiring\xfor arbitrary byte values instead.b\...and triple-quoted bytes. We only support single-lineb'...'andb"..."Non-ASCII characters like
b"ÿ"are UTF-8 encoded to[]byte{0xC3, 0xBF}, which does match CEL behavior.Open to discussion whether we want to go for this compatibility or stay at this level!