Software: Apache/2.0.54 (Fedora). PHP/5.0.4 uname -a: Linux mina-info.me 2.6.17-1.2142_FC4smp #1 SMP Tue Jul 11 22:57:02 EDT 2006 i686 uid=48(apache) gid=48(apache) groups=48(apache) Safe-mode: OFF (not secure) /usr/share/gtk-doc/html/glib/ drwxr-xr-x |
Viewing file: Select action/file-type:
Synopsis#include <glib.h> GScanner; GScanner* g_scanner_new (const GScannerConfig *config_templ); GScannerConfig; void g_scanner_input_file (GScanner *scanner, gint input_fd); void g_scanner_sync_file_offset (GScanner *scanner); void g_scanner_input_text (GScanner *scanner, const gchar *text, guint text_len); GTokenType g_scanner_peek_next_token (GScanner *scanner); GTokenType g_scanner_get_next_token (GScanner *scanner); guint g_scanner_cur_line (GScanner *scanner); guint g_scanner_cur_position (GScanner *scanner); GTokenType g_scanner_cur_token (GScanner *scanner); GTokenValue g_scanner_cur_value (GScanner *scanner); gboolean g_scanner_eof (GScanner *scanner); guint g_scanner_set_scope (GScanner *scanner, guint scope_id); void g_scanner_scope_add_symbol (GScanner *scanner, guint scope_id, const gchar *symbol, gpointer value); void g_scanner_scope_foreach_symbol (GScanner *scanner, guint scope_id, GHFunc func, gpointer user_data); gpointer g_scanner_scope_lookup_symbol (GScanner *scanner, guint scope_id, const gchar *symbol); void g_scanner_scope_remove_symbol (GScanner *scanner, guint scope_id, const gchar *symbol); #define g_scanner_freeze_symbol_table (scanner) #define g_scanner_thaw_symbol_table (scanner) gpointer g_scanner_lookup_symbol (GScanner *scanner, const gchar *symbol); void g_scanner_warn (GScanner *scanner, const gchar *format, ...); void g_scanner_error (GScanner *scanner, const gchar *format, ...); void g_scanner_unexp_token (GScanner *scanner, GTokenType expected_token, const gchar *identifier_spec, const gchar *symbol_spec, const gchar *symbol_name, const gchar *message, gint is_error); void (*GScannerMsgFunc) (GScanner *scanner, gchar *message, gboolean error); void g_scanner_destroy (GScanner *scanner); enum GTokenType; union GTokenValue; enum GErrorType; #define G_CSET_a_2_z #define G_CSET_A_2_Z #define G_CSET_DIGITS #define G_CSET_LATINC #define G_CSET_LATINS #define g_scanner_add_symbol ( scanner, symbol, value ) #define g_scanner_remove_symbol ( scanner, symbol ) #define g_scanner_foreach_symbol ( scanner, func, data ) DescriptionThe GScanner and its associated functions provide a general purpose lexical scanner. FIXME: really needs an example and more detail, but I don't completely understand it myself. Look at gtkrc.c for some code using the scanner. DetailsGScannertypedef struct { /* unused fields */ gpointer user_data; guint max_parse_errors; /* g_scanner_error() increments this field */ guint parse_errors; /* name of input stream, featured by the default message handler */ const gchar *input_name; /* quarked data */ GData *qdata; /* link into the scanner configuration */ GScannerConfig *config; /* fields filled in after g_scanner_get_next_token() */ GTokenType token; GTokenValue value; guint line; guint position; /* fields filled in after g_scanner_peek_next_token() */ GTokenType next_token; GTokenValue next_value; guint next_line; guint next_position; /* to be considered private */ GHashTable *symbol_table; gint input_fd; const gchar *text; const gchar *text_end; gchar *buffer; guint scope_id; /* handler function for _warn and _error */ GScannerMsgFunc msg_handler; } GScanner; The data structure representing a lexical scanner.
You should set
The
If you want to use your own message handler you can set the
g_scanner_new ()GScanner* g_scanner_new (const GScannerConfig *config_templ);
Creates a new GScanner.
The
GScannerConfigtypedef struct { /* Character sets */ gchar *cset_skip_characters; /* default: " \t\n" */ gchar *cset_identifier_first; gchar *cset_identifier_nth; gchar *cpair_comment_single; /* default: "#\n" */ /* Should symbol lookup work case sensitive? */ guint case_sensitive : 1; /* Boolean values to be adjusted "on the fly" * to configure scanning behaviour. */ guint skip_comment_multi : 1; /* C like comment */ guint skip_comment_single : 1; /* single line comment */ guint scan_comment_multi : 1; /* scan multi line comments? */ guint scan_identifier : 1; guint scan_identifier_1char : 1; guint scan_identifier_NULL : 1; guint scan_symbols : 1; guint scan_binary : 1; guint scan_octal : 1; guint scan_float : 1; guint scan_hex : 1; /* `0x0ff0' */ guint scan_hex_dollar : 1; /* `$0ff0' */ guint scan_string_sq : 1; /* string: 'anything' */ guint scan_string_dq : 1; /* string: "\\-escapes!\n" */ guint numbers_2_int : 1; /* bin, octal, hex => int */ guint int_2_float : 1; /* int => G_TOKEN_FLOAT? */ guint identifier_2_string : 1; guint char_2_token : 1; /* return G_TOKEN_CHAR? */ guint symbol_2_token : 1; guint scope_0_fallback : 1; /* try scope 0 on lookups? */ guint store_int64 : 1; /* use value.v_int64 rather than v_int */ guint padding_dummy; } GScannerConfig; Specifies the GScanner settings.
g_scanner_input_file ()void g_scanner_input_file (GScanner *scanner, gint input_fd); Prepares to scan a file.
g_scanner_sync_file_offset ()void g_scanner_sync_file_offset (GScanner *scanner); 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.
g_scanner_input_text ()void g_scanner_input_text (GScanner *scanner, const gchar *text, guint text_len); Prepares to scan a text buffer.
g_scanner_peek_next_token ()GTokenType g_scanner_peek_next_token (GScanner *scanner);
Gets the next token, without removing it from the input stream.
The token data is placed in the
g_scanner_get_next_token ()GTokenType g_scanner_get_next_token (GScanner *scanner);
Gets the next token, removing it from the input stream.
The token data is placed in the
g_scanner_cur_line ()guint g_scanner_cur_line (GScanner *scanner); Gets the current line in the input stream (counting from 1).
g_scanner_cur_position ()guint g_scanner_cur_position (GScanner *scanner); Gets the current position in the current line (counting from 0).
g_scanner_cur_token ()GTokenType g_scanner_cur_token (GScanner *scanner);
Gets the current token type.
This is simply the
g_scanner_cur_value ()GTokenValue g_scanner_cur_value (GScanner *scanner);
Gets the current token value.
This is simply the
g_scanner_eof ()gboolean g_scanner_eof (GScanner *scanner);
Returns
g_scanner_set_scope ()guint g_scanner_set_scope (GScanner *scanner, guint scope_id); Sets the current scope.
g_scanner_scope_add_symbol ()void g_scanner_scope_add_symbol (GScanner *scanner, guint scope_id, const gchar *symbol, gpointer value); Adds a symbol to the given scope.
g_scanner_scope_foreach_symbol ()void g_scanner_scope_foreach_symbol (GScanner *scanner, guint scope_id, GHFunc func, gpointer user_data);
Calls the given function for each of the symbol/value pairs in the
given scope of the GScanner. The function is passed the symbol and
value of each pair, and the given
g_scanner_scope_lookup_symbol ()gpointer g_scanner_scope_lookup_symbol (GScanner *scanner, guint scope_id, const gchar *symbol);
Looks up a symbol in a scope and return its value. If the
symbol is not bound in the scope,
g_scanner_scope_remove_symbol ()void g_scanner_scope_remove_symbol (GScanner *scanner, guint scope_id, const gchar *symbol); Removes a symbol from a scope.
g_scanner_freeze_symbol_table()#define g_scanner_freeze_symbol_table(scanner) Warning
This function is deprecated and will be removed in the next major release of GLib. It does nothing.
g_scanner_thaw_symbol_table()#define g_scanner_thaw_symbol_table(scanner) Warning
This function is deprecated and will be removed in the next major release of GLib. It does nothing.
g_scanner_lookup_symbol ()gpointer g_scanner_lookup_symbol (GScanner *scanner, const gchar *symbol);
Looks up a symbol in the current scope and return its value. If the
symbol is not bound in the current scope,
g_scanner_warn ()void g_scanner_warn (GScanner *scanner, const gchar *format, ...); Outputs a warning message, via the GScanner message handler.
g_scanner_error ()void g_scanner_error (GScanner *scanner, const gchar *format, ...); Outputs an error message, via the GScanner message handler.
g_scanner_unexp_token ()void g_scanner_unexp_token (GScanner *scanner, GTokenType expected_token, const gchar *identifier_spec, const gchar *symbol_spec, const gchar *symbol_name, const gchar *message, gint is_error);
Outputs a message through the scanner's msg_handler, resulting from an
unexpected token in the input stream.
Note that you should not call
GScannerMsgFunc ()void (*GScannerMsgFunc) (GScanner *scanner, gchar *message, gboolean error); Specifies the type of the message handler function.
g_scanner_destroy ()void g_scanner_destroy (GScanner *scanner); Frees all memory used by the GScanner.
enum GTokenTypetypedef enum { G_TOKEN_EOF = 0, G_TOKEN_LEFT_PAREN = '(', G_TOKEN_RIGHT_PAREN = ')', G_TOKEN_LEFT_CURLY = '{', G_TOKEN_RIGHT_CURLY = '}', G_TOKEN_LEFT_BRACE = '[', G_TOKEN_RIGHT_BRACE = ']', G_TOKEN_EQUAL_SIGN = '=', G_TOKEN_COMMA = ',', G_TOKEN_NONE = 256, G_TOKEN_ERROR, G_TOKEN_CHAR, G_TOKEN_BINARY, G_TOKEN_OCTAL, G_TOKEN_INT, G_TOKEN_HEX, G_TOKEN_FLOAT, G_TOKEN_STRING, G_TOKEN_SYMBOL, G_TOKEN_IDENTIFIER, G_TOKEN_IDENTIFIER_NULL, G_TOKEN_COMMENT_SINGLE, G_TOKEN_COMMENT_MULTI, G_TOKEN_LAST } GTokenType;
The possible types of token returned from each
union GTokenValueunion GTokenValue { gpointer v_symbol; gchar *v_identifier; gulong v_binary; gulong v_octal; gulong v_int; guint64 v_int64; gdouble v_float; gulong v_hex; gchar *v_string; gchar *v_comment; guchar v_char; guint v_error; }; A union holding the value of the token. enum GErrorTypetypedef enum { G_ERR_UNKNOWN, G_ERR_UNEXP_EOF, G_ERR_UNEXP_EOF_IN_STRING, G_ERR_UNEXP_EOF_IN_COMMENT, G_ERR_NON_DIGIT_IN_CONST, G_ERR_DIGIT_RADIX, G_ERR_FLOAT_RADIX, G_ERR_FLOAT_MALFORMED } GErrorType;
The possible errors, used in the
G_CSET_a_2_z#define G_CSET_a_2_z "abcdefghijklmnopqrstuvwxyz" The set of lowercase ASCII alphabet characters. Used for specifying valid identifier characters in GScannerConfig. G_CSET_A_2_Z#define G_CSET_A_2_Z "ABCDEFGHIJKLMNOPQRSTUVWXYZ" The set of uppercase ASCII alphabet characters. Used for specifying valid identifier characters in GScannerConfig. G_CSET_DIGITS#define G_CSET_DIGITS "0123456789" The set of digits. Used for specifying valid identifier characters in GScannerConfig. G_CSET_LATINC#define G_CSET_LATINC The set of uppercase ISO 8859-1 alphabet characters which are not ASCII characters. Used for specifying valid identifier characters in GScannerConfig. G_CSET_LATINS#define G_CSET_LATINS The set of lowercase ISO 8859-1 alphabet characters which are not ASCII characters. Used for specifying valid identifier characters in GScannerConfig. g_scanner_add_symbol()#define g_scanner_add_symbol( scanner, symbol, value ) Warning
Adds a symbol to the default scope.
g_scanner_remove_symbol()#define g_scanner_remove_symbol( scanner, symbol ) Warning
Removes a symbol from the default scope.
g_scanner_foreach_symbol()#define g_scanner_foreach_symbol( scanner, func, data ) Warning
Calls a function for each symbol in the default scope.
|
:: Command execute :: | |
--[ c99shell v. 1.0 pre-release build #16 powered by Captain Crunch Security Team | http://ccteam.ru | Generation time: 0.004 ]-- |