parser: cleanup code for fixing comma bug

This commit is contained in:
Alex Zenla 2023-09-11 05:20:08 -04:00
parent dbe4e7d5a5
commit d8c0ef43c1
Signed by: alex
GPG Key ID: C0780728420EBFE5
2 changed files with 4 additions and 11 deletions

View File

@ -1,4 +1,4 @@
export let count = 5
let count = 5
export func main() {
var x = 1

View File

@ -60,11 +60,7 @@ class Parser(source: PeekableSource<Token>, val attribution: NodeAttribution) {
private fun readSymbolCases(): Expression = within {
val symbol = readSymbolRaw()
if (next(TokenType.LeftParentheses)) {
val arguments = collect(
TokenType.RightParentheses,
TokenType.Comma,
forceConsumeExceptLast = true
) {
val arguments = collect(TokenType.RightParentheses, TokenType.Comma) {
readExpression()
}
expect(TokenType.RightParentheses)
@ -363,17 +359,14 @@ class Parser(source: PeekableSource<Token>, val attribution: NodeAttribution) {
private fun <T> collect(
peeking: TokenType,
consuming: TokenType? = null,
forceConsumeExceptLast: Boolean = false,
read: () -> T
): List<T> {
val items = mutableListOf<T>()
while (!peek(peeking)) {
val item = read()
if (consuming != null) {
if (!next(consuming)) {
if (!peek(peeking)) {
expect(consuming)
}
if (!peek(peeking)) {
expect(consuming)
}
}
items.add(item)