Code Monkey home page Code Monkey logo

nim-parsec's Introduction

nim-parsec

parsec for nim

example

  let aParser = charp('a')
  let bParser = charp('b')
  echo $aParser.parse("abc")
  echo $bParser.parse("bca")

  let abParser = charp('a') >> charp('b')
  echo $abParser.parse("abc")

  let aorbParser = charp('a') | charp('b')
  echo $aorbParser.parse("acd")
  echo $aorbParser.parse("bcd")

  let abcParser = parseString("abc")
  echo $abcParser.parse("abcdef")

  let manyA = many(charp('a'))
  echo $manyA.parse("aaab")
  echo $manyA.parse("bbb")

  let manyA1 = many1(charp('a'))
  echo $manyA1.parse("aaab")
  echo $manyA1.parse("bbb")

  let manyDigits = many1(digit)
  echo $manyDigits.parse("1234")

  let commaseparatednums = sep_by(charp(',').suppress(), digit)
  echo $commaseparatednums.parse("1,2,4")

  #let greetparser = letters >> charp(',') >> many(ws) >> letters
  let greetparser = word >> charp(',').suppress() >> many(ws).suppress() >> word
  echo $greetparser.parse("Hello,   World")

  echo $(letter*3).parse("abc")

  let uuidsample = "db9674c4-72a9-4ab9-9ddd-1d641a37cde4"
  let uuidparser =(hexstr*8).map(smashtransformer) >> charp('-') >> (hexstr*4).map(smashtransformer) >> charp('-') >>  (hexstr*4).map(smashtransformer) >> charp('-') >> (hexstr*4).map(smashtransformer) >> charp('-') >> (hexstr*12).map(smashtransformer)
  echo $uuidparser.parse(uuidsample)


  # recursive lang ints and list of ints or lists
  var listp: Parser
  var valref = (proc():Parser =digits|listp)
  listp = charp('[') >> sep_by(charp(',').suppress(), many(valref)) >> charp(']')
  var valp = valref()

  echo $valp.parse("1")
  echo $valp.parse("[1,2]")
  echo $valp.parse("[1,[1,2]]")
<Right parsed: @["a"], remaining: bc >
<Right parsed: @["b"], remaining: ca >
<Right parsed: @["a", "b"], remaining: c >
<Right parsed: @["a"], remaining: cd >
<Right parsed: @["b"], remaining: cd >
<Right parsed: @["abc"], remaining: def >
<Right parsed: @["a", "a", "a"], remaining: b >
<Right parsed: @[], remaining: bbb >
<Right parsed: @["a", "a", "a"], remaining: b >
Left Expecting '$a' and found 'b'
<Right parsed: @["1", "2", "3", "4"], remaining:  >
<Right parsed: @["1", "2", "4"], remaining:  >
<Right parsed: @["Hello", "World"], remaining:  >
<Right parsed: @["a", "b", "c"], remaining:  >
<Right parsed: @["db9674c4", "-", "72a9", "-", "4ab9", "-", "9ddd", "-", "1d641a37cde4"], remaining:  >
<Right parsed: @["1"], remaining:  >
<Right parsed: @["[", "1", "2", "]"], remaining:  >
<Right parsed: @["[", "1", "[", "1", "2", "]", "]"], remaining:  >

nim-parsec's People

Contributors

xmonader avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.