2016-12-27 08:10:47 -08:00

238 lines
3.2 KiB
Plaintext

-- demo
define a (read cd) $ if (> a cd)
print demo
print "not demo"
say $ print a $ save $ b $ x $ c 8
print fun
-- test on folding
a $
b $ c
d $ e $ f
g $ h $ i j $ k $
-- test on comma
print (, a)
a
, b
, c (, d)
-- test on HTML
doctype
html
head
title $ = Cirru
script (:defer) $ :src build/build.js
link (:rel stylesheet) $ :href css/page.css
link (:rel icon)
:href http://logo.cirru.org/cirru-32x32.png?v=3
body
textarea.demo.source $ :placeholder "Source Code"
textarea.demo.target $ :placeholder "Compiled Data"
@insert ../html/ga.html
-- test on indentation
a $ b $ c
e f
(g)
h
-- test on parentheses
3 4 (1) 4
((((1))))
x
-- test on quotes
a b c d
"a b c d"
"a b \" c d"
"a b" "c d"
-- test on unfolding
set
add 1 $
, x y
add 5 $
add 2
-- test on HTML attributes
div
div
:class a
div
:class a b c d
div
:class a (@ b) (@ c) d
div
:class a
@if (@ b)
div b
div c
div
:class a
@if (@ b) b c
-- test on helpers
@if (@call a b) (div) (span)
@each members
div (@ name)
@each a
div (@ b)
@each c
div (@ d)
-- test on HTML structure
@rich more
#demo-more-box
#demo-more
:data-lang-text demo-more
#demo-more-list
@each room
.demo-more-room
span.demo-name
@ topic
span.demo-join
:data-lang-text demo-join
:data-id (@ id)
-- text on bool
print #true
print #false
print #yes
print #no
print #t
print #f
-- test on Cirru js
set a 1
set a (= "This is a string")
set b #t
-- this is comment
number 1.4
string x
regex ^\s$
regex "^\\s-\"$"
sentence this is a string
array 1 2 3 (= nothing) #t (= #t)
set c (array 1 (= nothing))
set d $ object (a (= google))
b (= reader)
c 1
d $ array 1 2 (= string)
1 c
-1 c
:b d
.log console a 2
.log console
set demo $ object
call $ \ x (.log console x) (. this call)
. demo (.call 1) (.call 4)
=.x d 3
set d null
new Array 1 2 3
set x (:length c)
set str (= str)
set c (.toUpperCase str)
\ x (+ x 1)
\ (x y) (+ x y)
\ x (set aa 1) (+ aa x)
set f (\ x (+ x 1))
+ a 1 2
+= a 1
> 1 2 3
if (> 2 1) (+ a 1)
else 2
if (> a 2)
.log console (= "large")
elseif (> a 1)
.log console (= "still good")
else
.log console (= "so so")
set a $ if (> 2 1) #t #f
switch a
1 (.log console 1)
2 (.log console 2)
else (.log console (= "something else"))
set a $ array 2 +3 -4
for (a x i) (.log console x i)
set a 0
while (< a 10) (+= a 1) (.log console a)
-- WebAssembly variable names
-- ":(c) 2015 Andreas Rossberg"
module
export :even $even
export "odd" $odd
func $even (param $n i32) (result i32)
if (i32.eq (get_local $n) (i32.const 0))
i32.const 1
call $odd (i32.sub (get_local $n) (i32.const 1))
func $odd (param $n i32) (result i32)
store_global $scratch (get_local $n)
if (i32.eq (get_local $n) (i32.const 0)
i32.const 0
call $even (i32.sub (get_local $n) (i32.const 1))
global $scratch i32
assert_eq (invoke :even (i32.const 13)) (i32.const 0)
assert_eq (invoke :even (i32.const 20)) (i32.const 1)
assert_eq (invoke :odd (i32.const 13)) (i32.const 1)
assert_eq (invoke :odd (i32.const 20)) (i32.const 0)