0

文脈自由および文脈依存言語での文脈という用語はどういう意味ですか?変数は複数のコンテキストを持つことができますか?特定の値を特定のメモリアドレスに格納する必要がある場合、メモリアドレスのコンテキストにどのように影響しますか?また、変数を更新したい場合、変数のコンテキストはどのように変更されますか?

4

2 に答える 2

4

状況依存の文法、プロダクションは一般的な形式を持っています

aBc -> ab'c

ここで、大文字の記号は非終端記号であり、小文字の記号は終端記号と非終端記号のシーケンスです。

上記の例では、abは非終端記号のコンテキストであり、とで囲まれている場合にのみに「拡張」できることBを示します。Bb'ac

文脈自由文法では、生成は次のようになります。

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にリンクされているためです。Cのようなほとんどの言語には、変数と呼ばれるものを許可する変数定義のコンテキストがあります。ブロック内(と記号の間の領域)で定義された変数は、変数名の以前の定義をオーバーライドするのではなく、ブロックのコンテキスト。mainmainprint_valuehiding{}

定義の瞬間からプログラムが終了するまで名前が存在する場合、状況依存ではない言語があります。これらの言語で変数を更新すると、プログラム全体でその値が更新されます。

于 2011-11-19T20:06:47.917 に答える