./oceani --noexec --print .tmp.code1a >> .tmp.code2a || exit 1;\
if ! cmp -s .tmp.code1 .tmp.code2a; then \
echo " Failed"; diff -u .tmp.code1 .tmp.code2a; exit 1; fi ; \
+ echo -n "brackets.. "; \
+ echo '``````' > .tmp.code2b ; echo '``````' > .tmp.code2c ;\
+ ./oceani --noexec --print --brackets .tmp.code1 >> .tmp.code2b || exit 1; \
+ ./oceani -npb .tmp.code2b >> .tmp.code2c || exit 1 ; \
+ if ! cmp -s .tmp.code2b .tmp.code2c; then \
+ echo " Failed"; diff -u .tmp.code2b .tmp.code2c; exit 1; fi; \
echo -n "exec-after-print.. "; \
./oceani .tmp.code1 $${1+"$$@"} > .tmp.have ; \
if ! cmp -s .tmp.want .tmp.have; then \
## valgrind test code
@[ -n "$$SKIP_COVERAGE_CHECK" ] || awk '/NOTEST/ { next } /^ *[1-9]/ {ran+=1} /^ *###/ {skip+=1} \
END {printf "coverage: %6.2f%%\n", ran * 100 / (ran + skip); \
- if (ran < (ran + skip) *0.98) exit(1) }' \
+ if (ran < (ran + skip) *0.99) exit(1) }' \
coverage/oceani.mdc.gcov
coverage_oceani: oceani.c
print
for i:=0; then i=i+1; while i < 5:
- switch i:
- case 0: num:="zero"
- case 1: num:="one"
- case 2: num:="two"
- case 3: num:="three"
- else num:="many"
+ switch { use i }
+ case 0: num:="zero" ;
+ case 1: num:="one" ;
+ case 2 { num:="two" } case 3 { num:="three" }
+ else num:="many"
// re-declare a CondScope variable
num := i*i
print num,", ",
else
print 'larger'
+ // different parsing options
+ for {
+ x:=1; sum := 0
+ } then {
+ x = x + 1
+ } while {
+ use x < 10
+ } do {
+ sum = sum + x
+ } case 1 {
+ print "impossible"
+ }
+
###### output: cond_loop
Success
1 2 4 8 16 32 64
active:Boolean = True
struct baz { a:number; b:Boolean; }
+ struct bat {
+ a:string
+ b:Boolean
+ }
+ struct bat2 a:string; b:Boolean
func main
do
for i:=0; then i=i+1; while i < 4:
print info[i].name, info[i].active, info[i].size[0]
info[0].thing.b = True
+ x:bat
+ x.a = "Hello"
###### output: structs
angular := to_polar(32, 23)
print angular.rho, angular.theta
+ func test2(n:number; s:string;) : (ret:number)
+ ret = n + $s
+
+ func random
+ return
+ n:number
+ do
+ n = 4 // xkcd:221
+
+ // exercise the parsing options
+ func t1 (a:number) {
+ print "t1"
+ }
+ func t2 (a:string) {print "string"}
+ func t3() print "t3"
+
###### output: functions
done
1 done