你知道 shell 解释器中如何区分变量和可执行文件吗?因为我不知道如何在我的词法分析器中做到这一点。 如果有人有想法^^
谢谢, 祝你有美好的一天
马修
最佳答案
在普通的 Posix 风格 shell 中,语句中的第一个“单词”(不是变量赋值)是要执行的命令。变量赋值的形式为 name=value
,其中 = 周围不能有任何空格,并且 name
是有效的变量名称。
除此之外,在算术求值上下文中(基本 shell 不需要),任何变量的使用都必须以 $ 开头。
识别分配是与上下文相关的,但由于 = 是强制性的,所以很容易做到。例如,在 Flex 风格的词法分析器中,您可以使用适当的开始条件启用和禁用赋值识别。
如果不了解更多关于词法分析策略的信息,就很难提供更详细的答案。
如果您关心与 Posix shell 语法的兼容性,可以找到说明 here .
关于c - shell解释器中的变量和可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28883511/