mirror of
				https://github.com/GayPizzaSpecifications/pork.git
				synced 2025-11-03 17:39:38 +00:00 
			
		
		
		
	parser: cleanup code for fixing comma bug
This commit is contained in:
		@ -1,4 +1,4 @@
 | 
			
		||||
export let count = 5
 | 
			
		||||
let count = 5
 | 
			
		||||
 | 
			
		||||
export func main() {
 | 
			
		||||
  var x = 1
 | 
			
		||||
 | 
			
		||||
@ -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,19 +359,16 @@ 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)
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      }
 | 
			
		||||
      items.add(item)
 | 
			
		||||
    }
 | 
			
		||||
    return items
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user