Unexpected result: Using an escape character to escape the character

@top Filter { expression* }

expression { FilterStatement | space }

FilterStatement { FilterKey space* FilterValue }

FilterKey { Identifier }
FilterValue { (PositionOperator? Identifier PositionOperator?) | Boolean }

Boolean { @specialize<Identifier, "true" | "false"> }

@tokens {
  space { @whitespace }
  escapedCharacter { "\\" _ }
  
  PositionOperator { "*" }
  Identifier { (escapedCharacter | ![ ,])* (![ *,)] | escapedCharacter) }

  @precedence { space, PositionOperator, Identifier }
}