.示例1
%BEGING/***重写递归方案的规则。非终结符必须以大写字母开头***/S->F c./***第一条规则的非终结符被解释为开始符号***/F x->a x(F(b x))。/***无边界名称(本规则中的“a”、“b”)被解释为终端***/%ENDG(结束)%BEGINA/***布其树自动机的转换规则(所有状态都是最终的)***/q0 a->q0 q0./***第一个状态被解释为初始状态**/q0 b->q1。q1 b->q1。q0 c->。问题1 c->。%ENDA公司
简单文件访问程序
/*以下文件访问程序的编码。让recf x=if*,然后关闭x else(读(x);f x)让y=在中打开“foo”f年要检查的属性是:文件“foo”的访问依据读取*关闭。*/%开始S->F d结束。F x k->br(关闭k)(读取(F x k))。%ENDG(结束)%贝吉纳q0 br->q0 q0。q1 br->q1 q1。q0读取->q0。q0关闭->q1。q1结束->。%ENDA公司
示例2
/***一个来自POPL09论文的示例,该论文创建并访问两个文件***/%乞求S->新C1。C1 x->新(C2 x)。C2 x y->F x y端。F x y k->br(关闭x(关闭y k))(读取x(写入y(F x y k)))。I x y->x y。K x y->y。新k->br(新(k I))(k k)。新k->br(新k(k I))(k k)。关闭x k->x关闭k。读取x k->x读取k。写y k->y写k。%ENDG(结束)%贝吉纳q0 br->q0 q0。qr br->qr qr。qw-br->qw-qw。qrw br->qrw qrw。q0新->qr。qr读取->qr。qr关闭->qc。q0 neww->qw。qw写入->qw。qw关闭->qc。qw newr->qrw。qr新建->新建。qrw读取->qrw。qrw写入->qrw。qrw关闭->qrw。qc结束->。q0结束->。qrw结束->。%ENDA公司
示例3
/***以POPL09论文为例,该论文获取并释放锁***/%开始S->br(新建(F0端))(新建(F1端))。F0 k x->C0 x k。F1 k x->锁x(C1 x k)。C0 x k->k。C1 x k->解锁x k。新k->br(newl(k I))(k k)。I x y->x y。K x y->y。锁定x k->x锁定k。解锁x k->x解锁k。%ENDG(结束)%贝吉纳q0 br->q0 q0。q1 br->q1 q1。q2 br->q2 q2。q0 newl->q1。q1锁定->q2。q2解锁->q1。q0结束->。q1结束->。%ENDA公司
示例4
TRecS还支持有限的整数集。_案例n i e1。。。英语
被简化为ei,其中i的范围必须大于{0,…,n-1}。请参见下面的示例。%开始S->br(新(C 0))(新(C1))。C b x->F b x(G b x末端)。F b x k->_case 2 b k(锁定x k)。G b x k->_case 2 b k(解锁x k)。新k->br(newl(k I))(k k)。I x y->x y。K x y->y。锁定x k->x锁定k。解锁x k->x解锁k。%ENDG(结束)%贝吉纳q0 br->q0 q0。q1 br->q1 q1。q2 br->q2 q2。q0 newl->q1。q1锁定->q2。q2解锁->q1。q0结束->。q1结束->。%ENDA公司