sandwich

A funny programming language written in Rust
git clone https://tilde.team/~karx/sandwich.git
Log | Files | Refs | README | LICENSE

commit e0295a53f9c157459246c4e60b2601602a32f403
parent 92027f414dc4333233aed2eb254267977de8584d
Author: ~karx <karx@tilde.team>
Date:   Mon,  8 Mar 2021 13:22:37 -0600

Modify readme for use in stagit

Diffstat:
AREADME | 67+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DREADME.md | 99-------------------------------------------------------------------------------
2 files changed, 67 insertions(+), 99 deletions(-)

diff --git a/README b/README @@ -0,0 +1,67 @@ +sandwich +========= + +sandwich is a funny programming language written in Rust. + +"Why's it called sandwich?" + +"Well, Rust's logo is a crab, right? And crabs live on beaches. Beaches have sand. A program is just a bunch of bytes one after another. So what do you bite that's related to sand? A sandwich!" + +Running +------- + +Use cargo to run an input file. + + +$ git clone https://tildegit.org/karx/sandwich +$ cd sandwich +$ cargo run <filename> + +Reference +--------- + +sandwich is comprised of opcodes. The syntax looks like this: + + +<opcode><Arguments> + + +The currently available opcodes are as follows: + +- p - print out the arguments: `pHello World!` prints "Hello World!" +- a, s, m, d - add, subtract, multiply, and divide, respectively: `a2-2` adds 2 + 2. +- l - declare a variable: `lv9` declares variable `v` with value `9`; doing `p$v` prints out 9. +- f - declare a function: see the devlog entry[0] for more info +- i - import variables and functions from another file: see the devlog entry[1] for more info. + +[0]: https:/tilde.team/~karx/blog/sandwich-devlog-3-function-junction.html +[1]: https://tilde.team/~karx/blog/from-cup-import-coffee-sandwich-devlog-4.html + + +Here's an example "Hello world" program: + + +lhHello +lwWorld! +p$h $w + + +Contributing +------------ + +Please make sure to update tests as appropriate. + +You can send a patch to `karx@tilde.team`. +Read [this guide](https://git-send-email.io) for more information. + +For major changes, include the reason for the change in the email. + + +TODO +----- + + +- [x] Ability to explicitly print math output and assign math output to variables +- [ ] Better function parsing (multi-instruction functions?) +- [x] Importing/Running other files +- [ ] "Verbose" or "Debug" mode (environment variable or flag?) diff --git a/README.md b/README.md @@ -1,98 +0,0 @@ -# sandwich - -[![Build Status](https://drone.tildegit.org/api/badges/karx/sandwich/status.svg)](https://drone.tildegit.org/karx/sandwich) [![License](https://img.shields.io/badge/license-Unlicense-green)](https://unlicense.org) - -`sandwich` is a funny programming language written in Rust. - -*"Why's it called sandwich?"* - -*"Well, Rust's logo is a crab, right? And crabs live on beaches. Beaches have sand. A program is just a bunch of bytes one after another. So what do you bite that's related to sand? A sandwich!"* - -## Running - -Use `cargo` to run an input file. - -```bash -git clone https://tildegit.org/karx/sandwich -cd sandwich -cargo run <filename> -``` - -## Reference - -`sandwich` is comprised of *opcodes*. The syntax looks like this: -``` -opcodeArguments -``` - -The currently available opcodes are as follows: - -- `p` - print out the arguments: `pHello World!` prints "Hello World!" -- `a`, `s`, `m`, `d` - add, subtract, multiply, and divide, respectively: `a2-2` adds 2 + 2. -- `l` - declare a variable: `lv9` declares variable `v` with value `9`; doing `p$v` prints out 9. -- `f` - declare a function: see [the devlog entry](https:/tilde.team/~karx/blog/sandwich-devlog-3-function-junction.html) for more info -- `i` - import variables and functions from another file: see [the devlog entry](https://tilde.team/~karx/blog/from-cup-import-coffee-sandwich-devlog-4.html) for more info. - -Here's an example "Hello world" program: - -``` -lhHello -lwWorld! -p$h $w -``` - -## Contributing - - -For major changes, please open an issue first to discuss what you would like to change. -Please make sure to update tests as appropriate. - -You can do two things to submit code: - -### Make a pull request -- Fork the repo -- `git clone https://tildegit.org/yourusername/sandwich` -- Make a feature branch: `git checkout -b feature/amazing-feature` -- Make your changes and commit them: `git commit -am "My amazing commit message"` -- Push changes to your fork: `git push -u origin master` -- Create a pull request. - -### Send a patch - -You can send a patch to `karx@tilde.team`. -Read [this guide](https://git-send-email.io) for more information. - -## TODO - - -- [x] Ability to explicitly print math output and assign math output to variables -- [ ] Better function parsing (multi-instruction functions?) -- [x] Importing/Running other files -- [ ] "Verbose" or "Debug" mode (environment variable or flag?) - -## License - -This is free and unencumbered software released into the public domain. - -Anyone is free to copy, modify, publish, use, compile, sell, or -distribute this software, either in source code form or as a compiled -binary, for any purpose, commercial or non-commercial, and by any -means. - -In jurisdictions that recognize copyright laws, the author or authors -of this software dedicate any and all copyright interest in the -software to the public domain. We make this dedication for the benefit -of the public at large and to the detriment of our heirs and -successors. We intend this dedication to be an overt act of -relinquishment in perpetuity of all present and future rights to this -software under copyright law. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -For more information, please refer to <https://unlicense.org>- \ No newline at end of file