考虑此字符串my_comamnd -A aaa {-B | -C} [-D -E]
这定义了一个名为my_command
的命令,它接受一个强制参数-A aaa
,两个互斥开关{-B | -C}
(应该指定其中一个)和两个可选开关{{ 1}}(不应指定任何一个或两者。)
我需要编写将接受使用字符串的解析器,并提供一些将用于创建命令的结构(可能是语法树)。
我对此有一些疑问
什么叫做语法?我正在考虑Extended Backus–Naur Form,但也许它有更具体的名称。什么叫描述命令的格式?
我在考虑使用Boost::spirit库。可能吗?我相信它是Parsing Expression Grammar。所以应该可以使用Boost :: spirit编写解析器。
是否有用C ++编写的解析器可以解析这些字符串?