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

// format Cirru code
Cirru::format(cirru: Array[Cirru], use_inline=false) : 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)
}

FormatError

type FormatError

Cirru

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

Cirru uses nested Vecters and Strings as data structure
impl Compare for Cirru
impl Eq 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::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

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