From 17bc8e5c89805f5971e46f8f45c5e4eda970c561 Mon Sep 17 00:00:00 2001 From: "kr.angelov" Date: Thu, 12 Apr 2012 06:55:25 +0000 Subject: some fixes in the robust parser and a new API for literals --- src/runtime/c/pgf/lexer.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/runtime/c/pgf/lexer.c') diff --git a/src/runtime/c/pgf/lexer.c b/src/runtime/c/pgf/lexer.c index fd196bc1b..27fe97e34 100644 --- a/src/runtime/c/pgf/lexer.c +++ b/src/runtime/c/pgf/lexer.c @@ -36,13 +36,26 @@ pgf_lexer_next_token(PgfLexer *lexer, GuExn* err, GuPool *pool) if (iswalpha(lexer->ucs) || lexer->ucs == '\'' || lexer->ucs == '_') { + int counter = 0; do { gu_ucs_write(lexer->ucs, wtr, err); if (gu_exn_is_raised(err)) goto stop; + counter++; lexer->ucs = gu_read_ucs(lexer->rdr, err); if (gu_exn_is_raised(err)) goto stop; + + if (lexer->ucs == '.' && counter < 3) { + // perhaps an abreviation + gu_ucs_write(lexer->ucs, wtr, err); + if (gu_exn_is_raised(err)) + goto stop; + counter = 0; + lexer->ucs = gu_read_ucs(lexer->rdr, err); + if (gu_exn_is_raised(err)) + goto stop; + } } while (iswalnum(lexer->ucs) || lexer->ucs == '\'' || lexer->ucs == '_'); -- cgit v1.2.3