GLib.Scanner¶
Fields¶
Name |
Type |
Access |
Description |
---|---|---|---|
buffer |
r |
||
config |
r/w |
link into the scanner configuration |
|
input_fd |
r |
||
input_name |
r/w |
name of input stream, featured by the default message handler |
|
line |
r/w |
line number of the last token from |
|
max_parse_errors |
r/w |
unused |
|
msg_handler |
r/w |
handler function for _warn and _error |
|
next_line |
r/w |
line number of the last token from |
|
next_position |
r/w |
|
|
next_token |
r/w |
token parsed by the last |
|
next_value |
r/w |
value of the last token from |
|
parse_errors |
r/w |
g_scanner_error() increments this field |
|
position |
r/w |
|
|
qdata |
r/w |
quarked data |
|
scope_id |
r |
||
symbol_table |
r |
||
text |
r |
||
text_end |
r |
||
token |
r/w |
token parsed by the last |
|
user_data |
r/w |
unused |
|
value |
r/w |
value of the last token from |
Methods¶
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Details¶
- class GLib.Scanner¶
GScanner
provides a general-purpose lexical scanner.You should set input_name after creating the scanner, since it is used by the default message handler when displaying warnings and errors. If you are scanning a file, the filename would be a good choice.
The user_data and max_parse_errors fields are not used. If you need to associate extra data with the scanner you can place them here.
If you want to use your own message handler you can set the msg_handler field. The type of the message handler function is declared by
GLib.ScannerMsgFunc
.- cur_line()[source]¶
- Returns:
the current line
- Return type:
Returns the current line in the input stream (counting from 1). This is the line of the last token parsed via
GLib.Scanner.get_next_token
().
- cur_position()[source]¶
- Returns:
the current position on the line
- Return type:
Returns the current position in the current line (counting from 0). This is the position of the last token parsed via
GLib.Scanner.get_next_token
().
- cur_token()[source]¶
- Returns:
the current token type
- Return type:
Gets the current token type. This is simply the token field in the
GLib.Scanner
structure.
- destroy()[source]¶
Frees all memory used by the
GLib.Scanner
.
- get_next_token()[source]¶
- Returns:
the type of the token
- Return type:
Parses the next token just like
GLib.Scanner.peek_next_token
() and also removes it from the input stream. The token data is placed in the token, value, line, and position fields of theGLib.Scanner
structure.
- input_file(input_fd)[source]¶
- Parameters:
input_fd (
int
) – a file descriptor
Prepares to scan a file.
- lookup_symbol(symbol)[source]¶
- Parameters:
symbol (
str
) – the symbol to look up- Returns:
the value of symbol in the current scope, or
None
if symbol is not bound in the current scope- Return type:
Looks up a symbol in the current scope and return its value. If the symbol is not bound in the current scope,
None
is returned.
- peek_next_token()[source]¶
- Returns:
the type of the token
- Return type:
Parses the next token, without removing it from the input stream. The token data is placed in the next_token, next_value, next_line, and next_position fields of the
GLib.Scanner
structure.Note that, while the token is not removed from the input stream (i.e. the next call to
GLib.Scanner.get_next_token
() will return the same token), it will not be reevaluated. This can lead to surprising results when changing scope or the scanner configuration after peeking the next token. Getting the next token after switching the scope or configuration will return whatever was peeked before, regardless of any symbols that may have been added or removed in the new scope.
- scope_foreach_symbol(scope_id, func, *user_data)[source]¶
- Parameters:
scope_id (
int
) – the scope idfunc (
GLib.HFunc
) – the function to call for each symbol/value pairuser_data (
object
orNone
) – user data to pass to the function
Calls the given function for each of the symbol/value pairs in the given scope of the
GLib.Scanner
. The function is passed the symbol and value of each pair, and the given user_data parameter.
- scope_lookup_symbol(scope_id, symbol)[source]¶
- Parameters:
- Returns:
the value of symbol in the given scope, or
None
if symbol is not bound in the given scope.- Return type:
Looks up a symbol in a scope and return its value. If the symbol is not bound in the scope,
None
is returned.
- sync_file_offset()[source]¶
Rewinds the filedescriptor to the current buffer position and blows the file read ahead buffer. This is useful for third party uses of the scanners filedescriptor, which hooks onto the current scanning position.
- unexp_token(expected_token, identifier_spec, symbol_spec, symbol_name, message, is_error)[source]¶
- Parameters:
expected_token (
GLib.TokenType
) – the expected tokenidentifier_spec (
str
) – a string describing how the scanner’s user refers to identifiers (None
defaults to “identifier”). This is used if expected_token isGLib.TokenType.IDENTIFIER
orGLib.TokenType.IDENTIFIER_NULL
.symbol_spec (
str
) – a string describing how the scanner’s user refers to symbols (None
defaults to “symbol”). This is used if expected_token isGLib.TokenType.SYMBOL
or any token value greater than %G_TOKEN_LAST.symbol_name (
str
) – the name of the symbol, if the scanner’s current token is a symbol.message (
str
) – a message string to output at the end of the warning/error, orNone
.is_error (
int
) – ifTrue
it is output as an error. IfFalse
it is output as a warning.
Outputs a message through the scanner’s msg_handler, resulting from an unexpected token in the input stream. Note that you should not call
GLib.Scanner.peek_next_token
() followed byGLib.Scanner.unexp_token
() without an intermediate call toGLib.Scanner.get_next_token
(), asGLib.Scanner.unexp_token
() evaluates the scanner’s current token (not the peeked token) to construct part of the message.