Open bent-rasmussen opened 11 months ago
LexBuffer<'char> has this static method:
LexBuffer<'char>
static member LexemeString(lexbuf: LexBuffer<char>) = System.String(lexbuf.Buffer, lexbuf.BufferScanStart, lexbuf.LexemeLength)
See https://github.com/fsprojects/FsLexYacc/blob/master/src/FsLexYacc.Runtime/Lexing.fs#L178C58-L178C58
We would like to try and get access to the buffer, without necessarily allocating a string, e.g.:
#if NETSTANDARD2_1 static member LexemeSpan(lexbuf: LexBuffer<char>) = new ReadOnlySpan<char>(lexbuf.Buffer, lexbuf.BufferScanStart, lexbuf.LexemeLength) #endif
For example, we could use a StringPool to reuse prior allocations of equivalent strings:
StringPool
let ident = StringPool.Shared.GetOrAdd(lexemeSpan)
LexBuffer<'char>
has this static method:See https://github.com/fsprojects/FsLexYacc/blob/master/src/FsLexYacc.Runtime/Lexing.fs#L178C58-L178C58
We would like to try and get access to the buffer, without necessarily allocating a string, e.g.:
For example, we could use a
StringPool
to reuse prior allocations of equivalent strings: