cirru-parser

parser for Cirru Syntax

Cirru
Download zip
Author
Version
0.3.0
License
Apache-2.0
Last updated
3 months ago
Downloads
3K

#Cirru Parser in Moonbit

Docs: https://mooncakes.io/docs/#/tiye/cirru-parser/lib/members

moon add tiye/cirru-parser

import in moon.pkg.json:

{ "path": "tiye/cirru-parser", "alias": "cirru_parser" }

using @cirru_parser {type Cirru}

// parse Cirru code
Cirru::parse(code: String) : Array[Cirru] raise CirruParseError

// parse a one-line Cirru expression
Cirru::parse_expr_one_liner(code: String) : Cirru raise CirruParseError

// format Cirru code
Cirru::format(cirru: Array[Cirru], use_inline=false) : String raise FormatCirruError

// format one expression into one line
Cirru::format_expr_one_liner(expr: Cirru) : String raise FormatCirruError
Cirru::format_one_liner(expr: Cirru) : String raise FormatCirruError

#License

Apache-2.0

CirruParseError

type CirruParseError

CirruParseError::to_string

fn CirruParseError::to_string(self : CirruParseError) -> String

display Cirru parse error

FormatCirruError

pub(all) suberror FormatCirruError {
FormatCirruError(String)
} derive(
Debug
)

FormatError

type FormatError

Cirru

pub(all) enum Cirru {
Leaf(String)
List(Array[Cirru])
} derive(Eq)

Cirru uses nested Vecters and Strings as data structure
impl Compare for Cirru
impl Hash for Cirru
impl Show for Cirru
impl ToJson for Cirru

Cirru::format

fn Cirru::format(xs : Array[Cirru], use_inline? : Bool) -> String raise FormatCirruError

format Cirru code, use options to control use_inline option

Cirru::format_expr_one_liner

fn Cirru::format_expr_one_liner(expr : Cirru) -> String raise FormatCirruError

format a single Cirru expression as a single line

Cirru::format_one_liner

fn Cirru::format_one_liner(self : Cirru) -> String raise FormatCirruError

format this expression into a single line of Cirru code

Cirru::is_comment

fn Cirru::is_comment(self : Cirru) -> Bool

Cirru::is_empty

fn Cirru::is_empty(self : Cirru) -> Bool

Cirru::is_nested

fn Cirru::is_nested(self : Cirru) -> Bool

Cirru::length

fn Cirru::length(self : Cirru) -> Int

Cirru::parse

fn Cirru::parse(code : String) -> Array[Cirru] raise CirruParseError

main function to parse Cirru code into syntax tree

Cirru::parse_expr_one_liner

fn Cirru::parse_expr_one_liner(code : String) -> Cirru raise CirruParseError

parse a one-line Cirru expression into exactly one expression

format_to_lisp

fn format_to_lisp(xs : Array[Cirru]) -> String raise FormatError

format program to Cirru to Lisp-like code

Powered by MoonBit

Site sourceReport issuePackagesBuild queueSkillsStatistics

© 2026 mooncakes.io