Advertisement
Guest User

Untitled

a guest
Feb 7th, 2014
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 1.67 KB | None | 0 0
  1. namespace SimpleRon
  2.  
  3. open System;
  4. open System.Collections;
  5.  
  6. type internal valtype =
  7.     | value = 1
  8.     | name = 2
  9.  
  10. [<Sealed>]
  11. type Ron() =
  12.    
  13.     static let list = new ArrayList()
  14.     static let mutable value = ""
  15.     static let mutable name = ""
  16.     static let mutable state = valtype.name
  17.  
  18.     static let start =
  19.         value <- ""
  20.         name <- ""
  21.         state <- valtype.name
  22.  
  23.     static let writeChar (c:char) =
  24.         match state with
  25.         | valtype.name -> name <- name + c.ToString()
  26.         | valtype.value -> value <- value + c.ToString()
  27.         | _ -> ()
  28.  
  29.     static let writeValue =
  30.         Console.WriteLine(name+":"+value)
  31.         let tup =
  32.             (name, value)
  33.         match tup with
  34.             |(a,b) -> Console.WriteLine(a+":"+b)
  35.         list.Add(tup) |> ignore
  36.         ()
  37.                    
  38.     static let parse (str:string) =
  39.         str
  40.         |> Seq.filter (fun x -> Char.IsWhiteSpace(x) <> true) |> ignore
  41.         for c in str do
  42.             match c with
  43.             |'{' -> start
  44.             |'}' -> writeValue
  45.             |':' -> state <- valtype.value
  46.             |',' -> ()
  47.             |'[' -> ()
  48.             |']' -> ()
  49.             |_ -> writeChar c
  50.         list
  51.  
  52.     static member Parse (s:string) =
  53.         parse s
  54. //Test
  55. module Testfs
  56.  
  57. open SimpleRon
  58. open System.Collections;
  59. open System;
  60.  
  61. [<EntryPoint>]
  62. let main args =
  63.     let str = "{name:value}"
  64.     let al = Ron.Parse str
  65.     Console.WriteLine( (al.[0].ToString()) )
  66.     Console.Read() |> ignore
  67.     0
  68. writeValue is being called before the pattern match in parse even starts. I have no idea why? It's probably something obvious.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement