Skip to content

Grinshpon/Foray

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FORAY

FORAY is a stack based or concatenative langauge inspired by Forth and Min (which is inspired by Forth, Factor, and Joy)

Foray files have the extension .fr

Read FORAY.md for the language design and basics.

Building and Running Instructions

Clone the project then run zig build to compile or zig build run to compile and run. Running with no arguments launches a repl. Running with a file given as an argument will look for and run that file.

TODO:

  • Lexer (still have to parse chars and strings)
  • Parser
  • Evaluater
    • Basic Evaluation
    • Builtin operator functionality (WIP)
  • Repl
    • Basic REPL
    • Features like history, etc
  • Standard Library
  • Actual error handling and not just a bunch of try's

Examples:

Define a variable:

> 10 :x
=>
> x
=> 10

Define a function and call it:

> (2 *) :double
=>
> 2 double;
=> 4

Prefixing the : to a symbol means to create a word in the dictionary and assign the top of the stack as its value. Putting items between parenthesis '(' and ')' is to create a quoted list. Putting the ';' after a list means to unquote and apply it. So what's happening is, you assign a list to a word, push the contents of the word onto the stack, then evaluate the list.

Factorial

( dup 1 <= 
  (drop 1)
  (dup 1 - dup rot * swap 1 - fac; *)
  if
) :fac

About

A concatenative language written in Zig

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages