在上下文无关和上下文相关的语言中,术语上下文是什么意思?一个变量可以有多个上下文吗?如果我需要将特定值存储在特定内存地址中,对内存地址的上下文有何影响?如果我想更新一个变量,变量的上下文如何变化?
问问题
245 次
2 回答
4
上下文相关的语法,产生式具有一般形式
aBc -> ab'c
其中大写符号是非终结符,小写符号是终结符和非终结符的序列。
在上面的示例中,a
andb
将是非终结符的上下文,B
并表示只有在被and包围时才B
可以“扩展”到。b'
a
c
在上下文无关语法中,产生式可能看起来像
B -> b'
即B
“扩展”到b'
无论周围有什么,换句话说,无论上下文如何。
于 2011-11-20T13:20:48.437 回答
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
。大多数语言,如 C,都有其变量定义的上下文,允许所谓hiding
的变量:在块内定义的变量({
和}
符号之间的区域)不会覆盖变量名称的先前定义,而是“隐藏”它们以用于块的上下文。
有些语言从定义的那一刻起直到程序退出,名称就存在于上下文不敏感的语言中。在这些语言中更新变量将在程序范围内更新其值。
于 2011-11-19T20:06:47.917 回答