Crate cirru_parser[][src]

Cirru Parser

This tiny parser parses indentation based syntax into nested a vector, then it could used as S-Expressions for evaluation or codegen.

defn fib (x)
  if (<= x 2) 1
    +
      fib $ dec x
      fib $ - x 2

parses to:

[ ["defn" "fib" [ "x" ]
    [ "if" [ "<=" "x" "2" ] "1"
      [ "+" [ "fib" ["dec" "x"] ] [ "fib" ["-" "x" "2"] ] ]
    ]
] ]

find more on http://text.cirru.org/ .

Structs

CirruWriterOptions

options for writer, use_inline for more compact format.

Enums

Cirru

Cirru uses nested Vecters and Strings as data structure

CirruLexItem

internal control item during lexing

Functions

format

format Cirru code, use options to control use_inline option

from_json_str

parse JSON string r#"["a", ["b"]]"# into Cirru, only Arrays and Strings are accepted

from_json_value

parse JSON ["a", ["b"]] into Cirru, only Arrays and Strings are accepted

lex

internal function for lexing

parse

parse function, parse String to Cirru.

resolve_indentations

internal function for figuring out indentations after lexing

to_json_str

generates JSON string from Cirru Data

to_json_value

generates JSON from Cirru Data

Type Definitions

CirruLexItemList