-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Parser implementation #139
Conversation
This is a port of Farkle 6's `StackNeo`.
…proceed from its current state.
I thought that suspending the tokenizer without being in a chain would have no effect, but it actually has the effect of prohibiting subsequent suspensions. With this change, suspending is a real no-op if the tokenizer is not wrapped in a chain.
e193f17
to
953b6f3
Compare
`GetWriteBufferOffset` can resize the buffer, but calls to `_buffer.AsSpan(GetWriteBufferOffset(sizeHint))` always use the old buffer. The code was restructured to make the correct way to do it more apparent.
Turns out it is always needed to do GOTOs from the initial state if we reduce a production with as many members as the stack. And with that we don't need to separately track the LR state anymore; it's at the top of the stack.
0569d5c
to
112e674
Compare
SonarCloud Quality Gate failed. 1 Bug 16.7% Coverage Catch issues before they fail your Quality Gate with our IDE extension SonarLint |
Initial benchmarks
🥲 |
Let's merge it right now. The parser will be tested when we port the F# tests in a subsequent PR, and benchmarks already caught some bugs. Performance optimizations will happen in a subsequent PR. |
No description provided.