diff options
Diffstat (limited to 'examples/manual/example_er.lex')
-rw-r--r-- | examples/manual/example_er.lex | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/examples/manual/example_er.lex b/examples/manual/example_er.lex new file mode 100644 index 0000000..284031c --- /dev/null +++ b/examples/manual/example_er.lex @@ -0,0 +1,35 @@ +/* basic example, fully reentrant thread-safe version */ +%{ + struct stats { + int num_lines; + int num_chars; + }; +%} +%option reentrant noyywrap +%option extra-type="struct stats" +%% +\n { + struct stats ns = yyget_extra(yyscanner); + ++ns.num_lines; ++ns.num_chars; + yyset_extra(ns, yyscanner); + } +. { + struct stats ns = yyget_extra(yyscanner); + ++ns.num_chars; + yyset_extra(ns, yyscanner); + } + +%% + +int main() { + yyscan_t scanner; + struct stats ns; + + yylex_init ( &scanner ); + yylex ( scanner ); + + ns = yyget_extra(scanner); + printf( "# of lines = %d, # of chars = %d\n", + ns.num_lines, ns.num_chars); + yylex_destroy ( scanner ); +} |