【发布时间】:2022-01-19 03:11:13
【问题描述】:
我正在开发一个程序来解析和执行类似于 bash 的命令。我想获取可能包含在单引号或双引号中的反引号内的字符串。例如,我想从输入字符串 'echo "`echo hello`" 中得到字符串 "echo hello",这样我就可以先处理它。
是否可以直接从 antlr 获取解析后的字符串,或者我应该在我的实际程序中处理这个命令替换功能?任何帮助将不胜感激!
【问题讨论】:
我正在开发一个程序来解析和执行类似于 bash 的命令。我想获取可能包含在单引号或双引号中的反引号内的字符串。例如,我想从输入字符串 'echo "`echo hello`" 中得到字符串 "echo hello",这样我就可以先处理它。
是否可以直接从 antlr 获取解析后的字符串,或者我应该在我的实际程序中处理这个命令替换功能?任何帮助将不胜感激!
【问题讨论】:
很简单:首先对整个输入进行第一次解析运行。找到字符串标记并将它们再次提供给您的词法分析器。您必须有一个匹配反引号字符串的规则才能使这项工作。在第二次词法分析器运行中,您将获得所有嵌入的反引号分隔的字符串。
或者,只需遍历第一次运行的字符串并查找开始的反引号,然后搜索下一个反引号作为第二个分隔符。当您发现更多反勾号时,请经常这样做。
【讨论】: