aboutsummaryrefslogtreecommitdiff
path: root/compiler/parser/lexer.go
diff options
context:
space:
mode:
authorRyo Nihei <nihei.dev@gmail.com>2021-12-11 18:47:39 +0900
committerRyo Nihei <nihei.dev@gmail.com>2021-12-11 19:31:41 +0900
commit46d49df654e9e152680717830aec70b65e8c507c (patch)
treecb8c1410e34566a233a93bb52039ef47e0914ab8 /compiler/parser/lexer.go
parentSimplify process that generates UTF-8 byte sequences from a code point range (diff)
downloadtre-46d49df654e9e152680717830aec70b65e8c507c.tar.gz
tre-46d49df654e9e152680717830aec70b65e8c507c.tar.xz
Make character properties unavailable in bracket expressions
Diffstat (limited to 'compiler/parser/lexer.go')
-rw-r--r--compiler/parser/lexer.go13
1 files changed, 7 insertions, 6 deletions
diff --git a/compiler/parser/lexer.go b/compiler/parser/lexer.go
index d2237a5..01cebeb 100644
--- a/compiler/parser/lexer.go
+++ b/compiler/parser/lexer.go
@@ -176,18 +176,19 @@ func (l *lexer) next() (*token, error) {
if err != nil {
return nil, err
}
- switch tok.kind {
- case tokenKindBExpClose:
- l.modeStack.pop()
- case tokenKindCharRange:
- l.rangeState = rangeStateExpectRangeTerminator
- case tokenKindChar:
+ if tok.kind == tokenKindChar || tok.kind == tokenKindCodePointLeader || tok.kind == tokenKindCharPropLeader {
switch l.rangeState {
case rangeStateReady:
l.rangeState = rangeStateReadRangeInitiator
case rangeStateExpectRangeTerminator:
l.rangeState = rangeStateReady
}
+ }
+ switch tok.kind {
+ case tokenKindBExpClose:
+ l.modeStack.pop()
+ case tokenKindCharRange:
+ l.rangeState = rangeStateExpectRangeTerminator
case tokenKindCodePointLeader:
l.modeStack.push(lexerModeCPExp)
case tokenKindCharPropLeader: