在Backus-Naur形式中,逗号','在定义符号时是什么意思

时间:2010-08-16 13:10:05

标签: concurrency bnf

我和Pi-Calculus一样多,就像Backus Naur Form一样。 这是Pi微积分的核心BNF之一(见Peter Piwell的“应用Pi - 简要教程”)

P,Q ::= 0                        nil
        P | Q                    parallel composition of P and Q
        ~cv                      output v on channel c
        cw.P                     input from channel c
        new c in P               new channel name creation

在行动中,我专注于学习Pi微积分。但我确实想知道在BNF的定义中P,Q :: =的含义。

我理解P :: =意味着Pi演算的过程P是这个或这个或那个。 但P,Q :: =代表什么?

1 个答案:

答案 0 :(得分:2)

这意味着字母PQ都用于表示流程。例如,在P | Q中,P是一个进程,Q是一个进程。作者可以写

P ::= 0
      P1 | P2
      ~cv
      cw.P
      new c in P

但最好允许两个不同的字母引用相同的概念,以使公式更具可读性。

顺便说一句,经典的BNF中的替代品是由垂直条隔开的;但由于垂直条|在pi演算中具有意义,因此作者不想在它们的pi演算意义和BNF意义中使用它们。该定义仍应理解为“过程是零或并行组合,或......”。