syntax pi ::= { 3.1415927 } syntax plus ( ) ::= { concat(,star()) } syntax optional ( ) ::= { union("", ) } syntax charcomplement ( ) ::= { intersection(anything,complement(range(,))) } syntax maybe ::= { if (random(2)==1) } /* syntax repeat until ( ) ; ::= { { while (!) } } */ syntax repeat until ( ) ; ::= { { bool first = true; while (first || !) { first = false; } } } syntax do while ( ) ; ::= { { bool first = true; while (first || ) { first = false; } } } syntax forever ::= { repeat until (false); } syntax loop ( ) times ::= { { int n; n = ; while (n>0) { n--; } } } /* syntax for ( ; ; ) ::= { { ; while () { ; } } } */ syntax MINTIME ::= { time(1970,01,01,00,00,00) } syntax MAXTIME ::= { time(2038,01,19,03,14,07) } syntax sendemail ( , , , ) ::= { sendmail(relation { tuple { `name = "To", `value = }, tuple { `name = "From", `value = }, tuple { `name = "Reply-To", `value = }, tuple { `name = "Errors-To", `value = }, tuple { `name = "Subject", `value = }}, ); } syntax sendhtml ( , , , ) ::= { sendmail(relation { tuple { `name = "To", `value = }, tuple { `name = "From", `value = }, tuple { `name = "Reply-To", `value = }, tuple { `name = "Errors-To", `value = }, tuple { `name = "Content-Type", `value = "text/html" }, tuple { `name = "Subject", `value = }}, ); } syntax spawn ( ) ::= { post (url ()) } syntax setYear ( , ) ::= { time(, getMonth(), getDay(), getHour(), getMinute(), getSecond() ) } syntax setMonth ( , ) ::= { time(getYear(), , getDay(), getHour(), getMinute(), getSecond()) } syntax setDay ( , ) ::= { time(getYear(), getMonth(), , getHour(), getMinute(), getSecond()) } syntax setHour ( , ) ::= { time(getYear(), getMonth(), getDay(), , getMinute(), getSecond()) } syntax setMinute ( , ) ::= { time(getYear(), getMonth(), getDay(), getHour(), , getSecond()) } syntax setSecond ( , ) ::= { time(getYear(), getMonth(), getDay(), getHour(), getMinute(), ) } /* ------------- backward compatibility macros --------------- */ syntax resource ; ::= { lock ~Lock; } syntax reader () ::= { read (~Lock) } syntax writer () ::= { write (~Lock) } syntax protected ; ::= { ; lock ~Lock; }