variableman.com

What is ralyn? ralyn (rā'lin) is an experimental programming language. It's being built from the ground up, primarily for the edification of it's designer(s) but also to examine some conceptual ideas. ralyn aims to be minimalistic and simple without sacrificing ability.

ralyn is a work in progress... but you can download the current source code at...
github

Features ralyn is declarative, and currently implements the following:
• dynamic typing system that recognizes
    • String
    • Number
    • Boolean
    • Lists (can be associative or non-associative i.e. having tags or no tags)
• tag system to name data, or provide context/declarations
• data files easily export to JSON or XML
• path system for access data

Code Example


<doc|ralyn> : {

    //{
        This is a ralyn data
        description program.
    
        Colons between tag and
        data value are optional,
        as are commas/semicolons
        used to separate values.
    }
    
    <strings> : {
        <s1> : "Strings can be simple double quoted"
        <s2> : 'or simple single quoted'
        <s3> : $("or specify the delimiters as
        the first character after '$('")
    }
    <strings_2>:{
        <s3>:"this is also a string"
    }
    <numbers> : {
        <n1> : -12.3e-5
    }
    <bool> : {
        <b1> : true
        <b2> : false
        <b3> : null
    }
    <list>:{
        <nested>:{
            //{as deep as you want!}
        }
        <list_nonassociative>:{
            "one"
            "two"
            "three" 
        }
    }
}
                        


Path Examples

ralyn>strings>s1
Strings can be simple double quoted

ralyn>strings>[1]
or simple single quoted

ralyn>*>s3
{
  $("or specifiy the delmiters as
  the first character after '$('")
  "this is also a string"
}
                    

Progress *sigh* it's harder than I originally thought... and slow going with my other commitments. However, now that i've settled down a little on the feature set and design philosophy things are moving. The lexer is operational, and transpiling to JSON or XML works fairly well.

Update 2021-Feb-22: Now have a path system working... dereferencing is done with the '>' character and [ ] containing an integer will indicate indices. A '*' is a wildcard. See the examples above.

Update 2022-Jan-29: I've been looking into expanding the ideas here into a imparative language... probably something functional. I've done a little bit of work but I'm not ready to post it just yet.