RockstarLang / rockstar

Home of the Rockstar programming language
https://codewithrockstar.com/
GNU Affero General Public License v3.0
6.88k stars 223 forks source link

Proposal: Use ellipsis to define operator precedence/group expressions #328

Open holly-cummins opened 10 months ago

holly-cummins commented 10 months ago

Satriani has some difficulty parsing My world is nothing without your love (#326). I think this may be, under the covers, a precedence thing, because it gets parsed as "my world is nothing" and then the "without your love" is hanging around on the end and confusing the parser.

Parentheses can't be used to group arithmetic expressions, because they're used for comments. But what about using ellipsis for grouping? Ellipsis are often used in song lyrics, and they seem to map nicely to the intention here. For example:

My world is ... nothing without your love

dylanbeattie commented 10 months ago

So, this is one of the many ways in which using is to denote a poetic literal turns out to have been a horrible mistake, because you're absolutely right - once the parser sees My world is it consumes the rest of the line as poetic literal digits and there's no way to use an expression as part of the assignment.

What I should have done was use a keyword such as like to prefix a poetic literals - although I also like the idea of using punctuation to denote the end of a literal; a single point . is used as a decimal separator but no reason that other punctuation marks couldn't indicate the end of a poetic literal expression.

My world is nothing initialises my_world to 0 My world is nothing without your love - subtraction expression My world is like a big scary hamster - initialise my_world to 1357

This would also mean you could use poetic literals in comparisons:

If the moon is like a crazy diamond

It'd be a breaking change, but it's probably time for Rockstar 2.0 anyway... 🤘🏽