术语上下文在无上下文和上下文相关语言中的含义是什么?变量可以有多个上下文吗?如果我需要在特定的内存地址中存储特定值,那么它是如何影响内存地址的上下文的呢?如果我想更新变量,变量的上下文如何变化?
答案 0 :(得分:4)
一个上下文敏感的语法,制作具有一般形式
aBc -> ab'c
其中大写符号是非终端符号,小写符号是终端符号和非终端符号。
在上面的示例中,a
和b
将是非终端B
的上下文,并表示B
可以“扩展”为{{1} }仅在被b'
和a
包围时。
在上下文无关语法中,制作可能看起来像
c
即。 B -> b'
“扩展”为B
,无论周围是什么,换句话说,无论背景如何。
答案 1 :(得分:0)
考虑以下C程序:
#include <stdio.h>
unsigned int my_value = 0;
void print_value(void)
{
printf("My value: %d\n", my_value);
}
int main(void)
{
int my_value = 5;
printf("My main value: %d\n", my_value);
print_value();
return 0;
}
该程序将打印:
My main value: 5
My Value: 0
原因是变量my_value
链接到main
上下文中main
函数中定义的变量,并链接到在上下文中定义为全局变量的变量print_value
。 hiding
函数。大多数语言,如C,都有变量定义的上下文,允许所谓的{
变量:在块内定义的变量(}
和{{1}}符号之间的区域)不是覆盖变量名称的先前定义,而是“隐藏”它们用于块的上下文。
从定义时刻到程序退出之前,有些语言不是上下文敏感的。用这些语言更新变量将在程序范围内更新其值。