Advertisement
Guest User

Untitled

a guest
Jan 7th, 2015
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 2.04 KB | None | 0 0
  1.     and (|IdentifierDefinition|_|) tokens =
  2.         let rec parseIdentifierTuple tokens (cont:IdentifierDefinition list) =
  3.             match tokens with
  4.             | Token.LParen (row,col) :: remainingTokens ->
  5.                 let remainingTokens,tuple = parseIdentifierTuple remainingTokens []
  6.                 let remainingTokens,RHS = parseIdentifierTuple remainingTokens (cont @ [IdentifierDefinition.TupleIdentifier tuple])
  7.                 (remainingTokens, RHS)
  8.             | Token.Identifier (name,row,col) :: remainingTokens ->
  9.                 let identifier = IdentifierDefinition.Identifier (name,Unknown)
  10.                 match remainingTokens with
  11.                 | Token.Comma (row,col) :: remainingTokens ->
  12.                     match remainingTokens with
  13.                     | Token.Identifier _ :: _ | Token.LParen _ :: _ -> ()
  14.                     | _ -> failwith <| errorMessage codeLines.[row] row col "Unexpected token after comma"
  15.                     let remainingTokens,cont =  parseIdentifierTuple remainingTokens (cont @ [identifier])
  16.                     (remainingTokens,cont)
  17.                 | Token.RParen (row,col) :: remainingTokens ->
  18.                     match remainingTokens with
  19.                     | Token.Comma (row,col) :: remainingTokens ->   (remainingTokens,cont @ [identifier])
  20.                     | _ ->                                          (remainingTokens,cont @ [identifier])
  21.                 | _ ->
  22.                     failwith <| errorMessage codeLines.[row] row col ("Unexpected token after " + name)
  23.             | Token.RParen (row,col) :: remainingTokens ->
  24.                 (remainingTokens,cont)
  25.         match tokens with
  26.         | Token.LParen (row,col) :: remainingTokens ->
  27.             let remainingTokens,tuple = parseIdentifierTuple remainingTokens []
  28.             Some <| (remainingTokens, IdentifierDefinition.TupleIdentifier tuple)
  29.         | Token.Identifier (name,row,col) :: remainingTokens->
  30.             Some (remainingTokens, IdentifierDefinition.Identifier (name,Unknown))
  31.         | _ -> None
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement