我目前正在尝试使用BNF和LL解析器在C中重新编写shell。 否则,我需要知道shell运算符的优先级是什么 '|' ,“<<” ,“,”,“<” ,“>>” ,“>” ,“&” ,“;” ?
有没有人可以提供给我? 谢谢
答案 0 :(得分:6)
<
,>
,>>
,<>
,<&
。>&
和>>-
,以及here-docs <<delimiter
和here-strings <<<word
)与命令行参数大致相同,可以出现在简单命令的任何位置,包括命令字之前。实际上,它们绑定最紧密,就像大多数语言中的后缀运算符一样。|
)是最强大的二元运算符。他们与左边相关联。&&
和||
)。与许多语言不同,它们具有相同的优先级。他们也联系到左边。 ,
不是bash运算符。 ;
和&
是语句终止符,而不是分隔符,但在某些情况下,最终分隔符是可选的。实际上,它们的优先级最低。
有关详细信息,请参阅shell grammar。有很多细节。