gpt4 book ai didi

c++ - 如何测试字符串是否是有效的 C++(ish) 表达式?

转载 作者:搜寻专家 更新时间:2023-10-31 02:13:21 24 4
gpt4 key购买 nike

我正在用 C++ 编写一个程序,它需要能够测试一个字符串(可能是 std::string )是否是一个有效的 C++ 表达式。可以检查变量是否已声明 (bool variableDeclared(std::string identifier)),也可以检查它们的类型 (std::string variableType(std::string identifier))。 variableType 函数根据它在 C++ 中的声明方式返回一个字符串("bool""double""char" 等)。

表达式不需要求值,只需要测试它是否有效。 The function only needs to support character literals, string literals, number literals, brackets, simple operators ( + , - , * , / , ! (logic not), && , || , > , < , == ), and variables of type double , std::string(不需要函数调用),boolchar。也不需要支持字符串连接。

期望的结果将是一个类似于 bool validExpression(std::string expression) 的函数。它还允许我修改操作(例如,我可以将 "==" 更改为 "equal-to" )。

我将如何实现?是否有一个库可以做这样的事情,一个正则表达式语句,或者它只是一个包含大量 if 语句的长函数的问题?

最佳答案

形式上,你的情况是:你有一个语法,它描述了你想要验证的表达式的语言,以及一个你想要确定它是否属于该语言的词。这是该语言的解析器的工作。

您可以手工制作递归下降 LL(1) 解析器之类的东西,或者使用工具生成解析器。这种工具的一个著名示例是 Bison用于生成 LALR(1) 解析器。维基百科有很长parser generator list .


上面使用的技术术语主要是为谷歌搜索提供入口点。

关于c++ - 如何测试字符串是否是有效的 C++(ish) 表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41542420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com