Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace SimpleRon
- open System;
- open System.Collections;
- type internal valtype =
- | value = 1
- | name = 2
- [<Sealed>]
- type Ron() =
- static let list = new ArrayList()
- static let mutable value = ""
- static let mutable name = ""
- static let mutable state = valtype.name
- static let start =
- value <- ""
- name <- ""
- state <- valtype.name
- static let writeChar (c:char) =
- match state with
- | valtype.name -> name <- name + c.ToString()
- | valtype.value -> value <- value + c.ToString()
- | _ -> ()
- static let writeValue =
- Console.WriteLine(name+":"+value)
- let tup =
- (name, value)
- match tup with
- |(a,b) -> Console.WriteLine(a+":"+b)
- list.Add(tup) |> ignore
- ()
- static let parse (str:string) =
- str
- |> Seq.filter (fun x -> Char.IsWhiteSpace(x) <> true) |> ignore
- for c in str do
- match c with
- |'{' -> start
- |'}' -> writeValue
- |':' -> state <- valtype.value
- |',' -> ()
- |'[' -> ()
- |']' -> ()
- |_ -> writeChar c
- list
- static member Parse (s:string) =
- parse s
- //Test
- module Testfs
- open SimpleRon
- open System.Collections;
- open System;
- [<EntryPoint>]
- let main args =
- let str = "{name:value}"
- let al = Ron.Parse str
- Console.WriteLine( (al.[0].ToString()) )
- Console.Read() |> ignore
- 0
- 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