int sdd(int x,int y):结束符号不可用
时间: 2023-12-21 10:05:58 浏览: 62
对不起,您的函数声明中似乎有一个拼写错误,正确的函数声明应该是:
```c++
int add(int x, int y);
```
其中,add是函数名,接收两个int类型的参数x和y,返回值为int类型。如果您需要声明一个名为sdd的函数,可以按照以下格式编写:
```c++
int sdd(int x, int y);
```
请注意,C++中的函数声明需要以分号(;)结尾,而不是结束符号。
相关问题
Expr → for id := int1 to int2 do Expr1。这个产生式如何定义SDD
我们可以为 Expr 定义如下的 SDD:
1. 在 for 循环开始前,记录 id 的初始值为 int1。
2. 对 Expr1 进行 SDD 求值,并将其结果丢弃。
3. 如果 id 的值小于等于 int2,执行以下步骤:
- 对 Expr 进行 SDD 求值,并将其结果丢弃。
- 将 id 的值加 1。
- 跳转到第 3 步。
4. 如果 id 的值大于 int2,则退出 for 循环。
其中,SDD 的语义动作可以通过在产生式右侧的代码块中实现。例如,对于这个产生式,我们可以这样实现 SDD:
```
Expr → for id := int1 to int2 do Expr1
{
// 1. 在 for 循环开始前,记录 id 的初始值为 int1。
id.val = int1.val;
// 2. 对 Expr1 进行 SDD 求值,并将其结果丢弃。
Expr1.syn = null;
// 3. 如果 id 的值小于等于 int2,执行以下步骤:
while (id.val <= int2.val) {
// - 对 Expr 进行 SDD 求值,并将其结果丢弃。
Expr.syn = null;
// - 将 id 的值加 1。
id.val++;
// - 跳转到第 3 步。
}
// 4. 如果 id 的值大于 int2,则退出 for 循环。
Expr.syn = null;
}
```
在这个实现中,我们使用了一个名为 `syn` 的属性来保存 SDD 的语义值。在产生式右侧的代码块中,我们根据 SDD 动作的语义规则对 `syn` 进行赋值。在这个例子中,我们没有对 `syn` 进行赋值,而是直接将其设为 null,因为这个产生式的语义是执行一段代码块,而不是返回一个值。
阅读全文