举一个C++的实例
时间: 2023-10-23 12:24:38 浏览: 74
C++的一个例子
以下是一个使用 C++ 实现的简单的上下文无关文法(CFG)的示例:
```cpp
#include <iostream>
#include <vector>
#include <string>
using namespace std;
// 定义 CFG 的产生式规则
struct Rule {
string non_terminal; // 非终结符
vector<string> rhs; // 右部
};
// 定义 CFG
class CFG {
public:
CFG() {}
// 添加一个产生式规则
void add_rule(string non_terminal, vector<string> rhs) {
Rule rule;
rule.non_terminal = non_terminal;
rule.rhs = rhs;
rules.push_back(rule);
}
// 获取CFG的所有产生式规则
vector<Rule> get_rules() const {
return rules;
}
private:
vector<Rule> rules; // 产生式规则
};
int main() {
// 创建 CFG
CFG cfg;
// 添加产生式规则
cfg.add_rule("S", {"aSb"});
cfg.add_rule("S", {"c"});
// 获取 CFG 的所有产生式规则
vector<Rule> rules = cfg.get_rules();
// 输出 CFG 的所有产生式规则
for (auto rule : rules) {
cout << rule.non_terminal << " -> ";
for (auto symbol : rule.rhs) {
cout << symbol << " ";
}
cout << endl;
}
return 0;
}
```
在上面的示例中,我们定义了一个 `Rule` 结构体来表示 CFG 的一条产生式规则,包括非终结符和右部。通过 `CFG` 类,我们可以添加产生式规则,并使用 `get_rules()` 方法获取 CFG 的所有产生式规则。最后,我们使用一个简单的循环将 CFG 的所有产生式规则输出到控制台。
阅读全文