C++ 使用boost spirit解析器进行在线编辑和自动完成提示

C++ 使用boost spirit解析器进行在线编辑和自动完成提示,c++,boost-spirit,C++,Boost Spirit,我正在尝试设计一个服务器应用程序,它将通过套接字流(一次一个字符)读取命令行。显然,最简单的方法是读取字符到下线,并执行包含在接收缓冲区中的命令 相反,我希望这样,当用户开始输入命令行,然后输入“?”时,应用程序将生成一个所有参数的列表,这些参数在解析命令行时语法正确(这与我所看到的一些嵌入式设备类似,如Cisco和Netscreen路由器) 比如说, $ set interface ? 将显示 > set interface [option] -- displays informati

我正在尝试设计一个服务器应用程序,它将通过套接字流(一次一个字符)读取命令行。显然,最简单的方法是读取字符到下线,并执行包含在接收缓冲区中的命令

相反,我希望这样,当用户开始输入命令行,然后输入“?”时,应用程序将生成一个所有参数的列表,这些参数在解析命令行时语法正确(这与我所看到的一些嵌入式设备类似,如Cisco和Netscreen路由器)

比如说,

$ set interface ?
将显示

> set interface [option] -- displays information about the specified interface.
>
> [option] must be one of the following:
>   address [ip-addr]
>   port [port-no]
>   protocol [tcp|udp]
所以基本上,我需要知道我们在语法中的位置,以及从那一点开始需要什么符号

如果它能够支持简单的行编辑命令(BS、DEL、insert、left-arrow、right-arrow),甚至可以支持命令历史记录的向上/向下箭头,那就太好了

这可以使用boostspirit解析器来完成吗

编辑:


简单地说:有没有一种简单的方法可以创建一个boost spirit解析器(除了拥有一组规则外),它可以在输入流中遇到“?”时立即执行操作(而不必将标记“?”显式编码到规则中)?

这个问题太广泛了。我认为这是因为您(无意中?)混合了几个抽象级别。我建议您将其分解,因为,例如,模拟终端样式编辑与解析输入无关。问题的答案是“是的”。是的,你是对的。我在最后补充了一个更具体的问题陈述。