diff options
author | Ryo Nihei <nihei.dev@gmail.com> | 2021-05-25 21:55:17 +0900 |
---|---|---|
committer | Ryo Nihei <nihei.dev@gmail.com> | 2021-05-25 21:57:45 +0900 |
commit | 520bf02582be7ab36b17fd78f8931cfdb702b07f (patch) | |
tree | a1e7ad54915152fce6f96a18312e28f34f256c84 /compiler/lexer_test.go | |
parent | Fix the initial state number (diff) | |
download | tre-520bf02582be7ab36b17fd78f8931cfdb702b07f.tar.gz tre-520bf02582be7ab36b17fd78f8931cfdb702b07f.tar.xz |
Add fragment expression
A fragment entry is defined by an entry whose `fragment` field is `true`, and is referenced by a fragment expression (`\f{...}`).
Diffstat (limited to 'compiler/lexer_test.go')
-rw-r--r-- | compiler/lexer_test.go | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/compiler/lexer_test.go b/compiler/lexer_test.go index 089253b..51eb82e 100644 --- a/compiler/lexer_test.go +++ b/compiler/lexer_test.go @@ -445,6 +445,34 @@ func TestLexer(t *testing.T) { newToken(tokenKindEOF, nullChar), }, }, + { + caption: "lexer can recognize the special characters and symbols in fragment expression mode", + src: "\\f{integer}", + tokens: []*token{ + newToken(tokenKindFragmentLeader, nullChar), + newToken(tokenKindLBrace, nullChar), + newFragmentSymbolToken("integer"), + newToken(tokenKindRBrace, nullChar), + + newToken(tokenKindEOF, nullChar), + }, + }, + { + caption: "a fragment expression is not supported in a bracket expression", + src: "[\\f", + tokens: []*token{ + newToken(tokenKindBExpOpen, nullChar), + }, + err: synErrInvalidEscSeq, + }, + { + caption: "a fragment expression is not supported in an inverse bracket expression", + src: "[^\\f", + tokens: []*token{ + newToken(tokenKindInverseBExpOpen, nullChar), + }, + err: synErrInvalidEscSeq, + }, } for _, tt := range tests { t.Run(tt.caption, func(t *testing.T) { |