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

CirruLexItem

internal control item during lexing

CirruNode

Cirru uses nested Vecters and Strings as data structure

Functions

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

parseDeprecated
parse_cirru

parse function, parse String to CirruNode.

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

write_cirru

format Cirru code, use options to control use_inline option

Type Definitions

CirruLexItemList