【发布时间】:2013-05-02 06:47:06
【问题描述】:
我想写一个正式的语法来描述一些 GNU/Linux 工具的命令行用法。
首先,我想定义一个语法:
Start -> COMMAND AXIS
AXIS -> EMPTY | INTER
INTER -> VALUE | -OPT
VALUE -> any characters for files
OPT -> OPION AXIS
OPTION -> WORD
WORD -> out | in | ... | LETTERS
LETTERS -> aLETTER |bLETTER | ... | zLETTER
LETTER -> a| b | c | ... | EMPTY | LETTERS
EMPTY ->
COMMAND -> ls | tar | touch | openssl | vi | ... | cat
我将把这个语法与 lex 和 yacc 一起使用来解析命令。如何定义 .l & .c 文件??
【问题讨论】:
-
这可能不可行,因为 shell 语言对上下文非常敏感。
-
请注意,空格(尤其是换行符)在命令行中很重要,因此您不能像在许多不重要的语言中那样在正式语法中忽略它。
标签: linux ubuntu grammar yacc lex