shell运算符的优先级

时间:2015-08-09 13:44:09

标签: shell parsing bnf ll

我目前正在尝试使用BNF和LL解析器在C中重新编写shell。 否则,我需要知道shell运算符的优先级是什么 '|' ,“<<” ,“,”,“<” ,“>>” ,“>” ,“&” ,“;” ?

有没有人可以提供给我? 谢谢

1 个答案:

答案 0 :(得分:6)

  1. 重定向(<>>><><&>&>>-,以及here-docs <<delimiter和here-strings <<<word)与命令行参数大致相同,可以出现在简单命令的任何位置,包括命令字之前。实际上,它们绑定最紧密,就像大多数语言中的后缀运算符一样。
  2. 管道(|)是最强大的二元运算符。他们与左边相关联。
  3. 最后是短路布尔(&&||)。与许多语言不同,它们具有相同的优先级。他们也联系到左边。
  4. ,不是bash运算符。 ;&是语句终止符,而不是分隔符,但在某些情况下,最终分隔符是可选的。实际上,它们的优先级最低。

    有关详细信息,请参阅shell grammar。有很多细节。