diff options
author | Jesse Luehrs <doy@tozt.net> | 2016-05-08 02:02:41 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2016-05-08 03:01:48 -0400 |
commit | 8593074c9a014c24ccb3b22de5b38ff569fec93b (patch) | |
tree | 77f7fad29e0467f97bdffc31d9a2d13b232c7e0f /src/screen.c | |
parent | 06f385a854302a692f76307853ec2c3e7a2c3c64 (diff) | |
download | libvt100-8593074c9a014c24ccb3b22de5b38ff569fec93b.tar.gz libvt100-8593074c9a014c24ccb3b22de5b38ff569fec93b.zip |
start trying out a re2c-based parser
Diffstat (limited to 'src/screen.c')
-rw-r--r-- | src/screen.c | 16 |
1 files changed, 2 insertions, 14 deletions
diff --git a/src/screen.c b/src/screen.c index 1dad246..ff9db35 100644 --- a/src/screen.c +++ b/src/screen.c @@ -1,3 +1,4 @@ +#include <stdio.h> #include <stdlib.h> #include <string.h> @@ -6,11 +7,6 @@ #include "vt100.h" #include "parser.h" -struct vt100_parser_state { - yyscan_t scanner; - YY_BUFFER_STATE state; -}; - static void vt100_screen_get_string( VT100Screen *vt, struct vt100_loc *start, struct vt100_loc *end, char **strp, size_t *lenp, int formatted); @@ -36,8 +32,6 @@ VT100Screen *vt100_screen_new(int rows, int cols) void vt100_screen_init(VT100Screen *vt) { vt->grid = calloc(1, sizeof(struct vt100_grid)); - vt->parser_state = calloc(1, sizeof(struct vt100_parser_state)); - vt100_parser_yylex_init_extra(vt, &vt->parser_state->scanner); } void vt100_screen_set_window_size(VT100Screen *vt, int rows, int cols) @@ -109,12 +103,9 @@ void vt100_screen_set_scrollback_length(VT100Screen *vt, int rows) int vt100_screen_process_string(VT100Screen *vt, char *buf, size_t len) { - struct vt100_parser_state *state = vt->parser_state; int remaining; - state->state = vt100_parser_yy_scan_bytes(buf, len, state->scanner); - remaining = vt100_parser_yylex(state->scanner); - vt100_parser_yy_delete_buffer(state->state, state->scanner); + remaining = vt100_parser_yylex(vt, (uint8_t*)buf, len); return len - remaining; } @@ -882,9 +873,6 @@ void vt100_screen_cleanup(VT100Screen *vt) free(vt->title); free(vt->icon_name); - - vt100_parser_yylex_destroy(vt->parser_state->scanner); - free(vt->parser_state); } void vt100_screen_delete(VT100Screen *vt) |