Files
kraken/syntax.gp

30 lines
848 B
Plaintext
Raw Normal View History

2020-04-02 14:15:41 -04:00
; 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) ); }