From 3591b902657b97257ba5260dded79192e4019e44 Mon Sep 17 00:00:00 2001 From: Nathan Braswell Date: Thu, 2 Apr 2020 14:15:41 -0400 Subject: [PATCH] Also commit the syntax playground --- syntax.gp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 syntax.gp diff --git a/syntax.gp b/syntax.gp new file mode 100644 index 0000000..5c37694 --- /dev/null +++ b/syntax.gp @@ -0,0 +1,29 @@ + +; LISP style +(do + (println (+ 2 3)) + (println (- 2 3)) + (println (* 2 3)) + (println (/ 2 3)) + (println "howdy") +) + +; let's add some stuff to our grammer... +(add_grammer_rule :semi_forms [:form ";"] (fn* (xs) (list (first xs)))) +(add_grammer_rule :semi_forms [:form ";" :optional_WS :semi_forms ] (fn* (xs) (cons (first xs) (nth xs 3)))) +(add_grammer_rule :form ["{" :optional_WS :semi_forms :optional_WS "}"] (fn* (xs) `(do ,(nth xs 2)))) +(add_grammer_rule :form [:atom :form ] (fn* (xs) `(~(first xs) ,(nth xs 1)))) +(add_grammer_rule :form [:form :optional_WS "$" :atom :optional_WS :form] (fn* (xs) `(~(nth xs 3) ~(nth xs 0) ~(nth xs 5)))) + +; C style +{ + println( 2 $+ 3 ); + println( 2 $- 3 ); + println( 2 $* 3 ); + println( 2 $/ 3 ); + println("howdy"); +} + +; combo +(println (list 1 2 4 $+ 5)) +{ println( (+ 2 3) ); }