cirru-parser

    parser for Cirru Syntax

    Cirru
    Download zip
    Author
    Version
    0.3.0
    License
    Apache-2.0
    Last updated
    4 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