evy

command module
v0.1.141 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 19, 2024 License: Apache-2.0 Imports: 19 Imported by: 0

README ยถ

Evy

Discord Chat GitHub Build Go Reference GitHub Sponsorship

Evy is a simple programming language, made to learn coding. Try it out.

Evy bridges the gap between block-based languages like Scratch and conventional languages like Python or JavaScript. It has a minimalist syntax with fewer special characters and advanced concepts than most programming languages. Evy has a small set of built-in functions that are easy to understand and remember, but it still is powerful enough for user interaction, games, and animations.

๐ŸŒฑ Getting Started

You can try Evy online at play.evy.dev and browse the examples. Alternatively you can install the evy toolchain locally.

Here is a "hello world" program in Evy

print "Hello World!"
Screencast: How to code a simple animation in Evy.

Coding evy

Animation source code

๐Ÿ“– Documentation

Here are some resources for learning more about Evy:

For questions and discussions, join the Evy community on Discord.

๐Ÿ“ฆ Installation

You can install the Evy toolchain locally to run it from your command line. To learn how to use the Evy toolchain, read the usage documentation or run evy --help.

Linux and Windows

Download the latest release for your platform, unzip it and add evy to your path.

macOS

Use Homebrew to install evy.

brew install evylang/tap/evy

๐Ÿ’ป Development

The Evy interpreter is written in Go and built using the Go and TinyGo compilers. TinyGo targets WebAssembly, which allows Evy source code to be parsed and run in a web browser. The browser runtime is written in plain JavaScript without the use of frameworks.

To build the Evy source code, clone this repository and activate Hermit in your terminal. Then, build the sources with

make all

You can list make targets, execute a full CI run locally or serve the frontend locally with

make help
make ci
make serve
Hermit automatically installs tools.
Hermit

The tools used in this repository, such as Make, Go and Node, are automatically downloaded by Hermit when needed. Hermit ensures that developers on Mac, Linux, and GitHub Actions CI use the same version of the same tools. Cloning this repo is the only installation step necessary.

There are two ways to use the tools in the Evy repository. You can either prefix them with bin/, for example bin/make all. Or, you can activate Hermit in your shell with

. ./bin/activate-hermit

This will add the tools to your path, so you can use them without having to prefix them with bin/.

You can auto-activate Hermit when changing into the evy source directory by installing Hermit shell hooks with

hermit shell-hooks

๐Ÿ™ Thanks

Evy would not be here today without the help of many people.

  • camh: Thank you for your support, guidance, generosity and endless patience.
  • Jason: Thank you for donating the Evy website design. It is beautiful!
  • @ckaser: Thank you for creating the fantastic easylang language, which was a major inspiration for Evy.
  • @fcostin: Thank you for the Splash of Trig sample, your wisdom and your willingness to help.
  • @starkcoffee, @alecthomas, @loislambeth: Thank you for your insights, support, and encouragement. I am grateful for your friendship!
  • My daughter Mali: Thank you for being keen to learn programming and for testing Evy with me.

Documentation ยถ

Overview ยถ

Evy parses, runs, and formats Evy source code.

Evy on the command line supports all built-in functions except for graphics functions and event handlers. Only the web interface on play.evy.dev supports graphics and events.

The Evy toolchain has two subcommands: run and fmt.

Usage: evy <command> [flags]

evy is a tool for managing evy source code.

Flags:
  -h, --help       Show context-sensitive help.
  -V, --version    Print version information

Commands:
  run [<source>] [flags]
    Run Evy program.

  fmt [<files> ...] [flags]
    Format Evy files.

  serve export <dir> [flags]
    Export embedded content.

  serve start [flags]
    Start web server, default for "evy serve".

Run "evy <command> --help" for more information on a command.

Directories ยถ

Path Synopsis
build-tools
md
Command md is a markdown processing tool
Command md is a markdown processing tool
site-gen
Command site-gen generates the website files to be deployed to firebase.
Command site-gen generates the website files to be deployed to firebase.
pkg
assert
Package assert is a minimal testing utility package with inline assertions.
Package assert is a minimal testing utility package with inline assertions.
bytecode
Package bytecode contains a custom bytecode compiler and virtual machine.
Package bytecode contains a custom bytecode compiler and virtual machine.
cli
Package cli provides an Evy runtime to for Evy CLI execution in terminal.
Package cli provides an Evy runtime to for Evy CLI execution in terminal.
cli/svg
Package svg provides an Evy runtime to generate SVG output for evy programs that contain graphics function calls.
Package svg provides an Evy runtime to generate SVG output for evy programs that contain graphics function calls.
evaluator
Package evaluator executes a given Evy program by walking its AST.
Package evaluator executes a given Evy program by walking its AST.
lexer
Package lexer tokenizes the input.
Package lexer tokenizes the input.
md
Package md provides common markdown utilities, used by build-tools and learn platform.
Package md provides common markdown utilities, used by build-tools and learn platform.
parser
Package parser generates an AST for Evy programs.
Package parser generates an AST for Evy programs.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL