g_scanner_scope_add_symbol中的scope_id参数代表什么?

时间:2011-09-09 03:10:59

标签: c glib

使用Lexical Scanner GScanner时,我想添加自己的符号进行扫描。在查找信息时,我只找到API文档和其他人的源代码,如Gimp。除非我错过了一些明显的东西,否则没有任何关于范围的解释。

我可以使用g_scanner_add_symbol并忽略该问题,但不推荐使用g_scanner_add_symbol,并且唯一剩下的就是g_scanner_scope_add_symbol。我理解如何使用此功能将符号添加到我的自定义扫描仪,但我仍然不知道参数scope_id用于什么。我可以每次都将它设置为零,而不用担心它。问题是我不喜欢神秘,并认为scope_id可能非常有用。我想知道它有多有用。

GScanner中的scope_id代表什么?如何利用它?

1 个答案:

答案 0 :(得分:1)

我猜你可以使用范围来拥有不同的符号集。像这样:

...
g_scanner_set_scope (scanner, first_scope);
g_scanner_scope_add_symbol (scanner, first_scope, "ONE", GINT_TO_POINTER(1));
...
g_scanner_set_scope (scanner, second_scope);
g_scanner_scope_add_symbol (scanner, second_scope, "TWO", GINT_TO_POINTER(2));
// The scanner wont find the symbol "ONE" now

我对此并不完全确定,但这就是我认为的范围。不过你可以轻松测试它。