summaryrefslogtreecommitdiff
path: root/src/runtime/c/pgf/lexer.c
diff options
context:
space:
mode:
authorkr.angelov <kr.angelov@gmail.com>2013-09-05 11:20:39 +0000
committerkr.angelov <kr.angelov@gmail.com>2013-09-05 11:20:39 +0000
commit7c0bad50921365746ea362710015853a4879c0a7 (patch)
treeead13c32a5b2d8ed2968bcdc5b58e5e7eed79720 /src/runtime/c/pgf/lexer.c
parent504341dfbafdcd858704350162bb7e233cf6daf2 (diff)
remove the read and write modules from libgu. this simplifies the i/o layer
Diffstat (limited to 'src/runtime/c/pgf/lexer.c')
-rw-r--r--src/runtime/c/pgf/lexer.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/src/runtime/c/pgf/lexer.c b/src/runtime/c/pgf/lexer.c
index d50098072..5f3867af3 100644
--- a/src/runtime/c/pgf/lexer.c
+++ b/src/runtime/c/pgf/lexer.c
@@ -1,11 +1,12 @@
#include <gu/list.h>
+#include <gu/utf8.h>
#include <pgf/pgf.h>
#include <pgf/data.h>
#include <wctype.h>
typedef struct {
PgfLexer base;
- GuReader* rdr;
+ GuIn* in;
GuPool* pool;
GuUCS ucs;
} PgfSimpleLexer;
@@ -13,7 +14,7 @@ typedef struct {
static void
pgf_lexer_read_ucs(PgfSimpleLexer *lexer, GuExn* err)
{
- lexer->ucs = gu_read_ucs(lexer->rdr, err);
+ lexer->ucs = gu_in_utf8(lexer->in, err);
if (gu_exn_is_raised(err)) {
gu_exn_clear(err);
lexer->ucs = ' ';
@@ -27,10 +28,10 @@ pgf_simple_lexer_read_token(PgfLexer *base, GuExn* err)
GuPool* tmp_pool = gu_new_pool();
GuStringBuf* buf = gu_string_buf(tmp_pool);
- GuWriter* wtr = gu_string_buf_writer(buf);
+ GuOut* out = gu_string_buf_out(buf);
while (iswspace(lexer->ucs)) {
- lexer->ucs = gu_read_ucs(lexer->rdr, err);
+ lexer->ucs = gu_in_utf8(lexer->in, err);
if (gu_exn_is_raised(err))
goto stop;
}
@@ -40,7 +41,7 @@ pgf_simple_lexer_read_token(PgfLexer *base, GuExn* err)
lexer->ucs == '_') {
int counter = 0;
do {
- gu_ucs_write(lexer->ucs, wtr, err);
+ gu_out_utf8(lexer->ucs, out, err);
if (gu_exn_is_raised(err))
goto stop;
counter++;
@@ -48,7 +49,7 @@ pgf_simple_lexer_read_token(PgfLexer *base, GuExn* err)
if (lexer->ucs == '.' && counter < 4) {
// perhaps an abreviation
- gu_ucs_write(lexer->ucs, wtr, err);
+ gu_out_utf8(lexer->ucs, out, err);
if (gu_exn_is_raised(err))
goto stop;
counter = 0;
@@ -59,7 +60,7 @@ pgf_simple_lexer_read_token(PgfLexer *base, GuExn* err)
lexer->ucs == '_');
} else if (iswdigit(lexer->ucs) || lexer->ucs == '-') {
if (lexer->ucs == '-') {
- gu_ucs_write(lexer->ucs, wtr, err);
+ gu_out_utf8(lexer->ucs, out, err);
if (gu_exn_is_raised(err))
goto stop;
@@ -69,7 +70,7 @@ pgf_simple_lexer_read_token(PgfLexer *base, GuExn* err)
}
do {
- gu_ucs_write(lexer->ucs, wtr, err);
+ gu_out_utf8(lexer->ucs, out, err);
if (gu_exn_is_raised(err))
goto stop;
@@ -77,20 +78,20 @@ pgf_simple_lexer_read_token(PgfLexer *base, GuExn* err)
} while (iswdigit(lexer->ucs));
if (lexer->ucs == '.') {
- gu_ucs_write(lexer->ucs, wtr, err);
+ gu_out_utf8(lexer->ucs, out, err);
if (gu_exn_is_raised(err))
goto stop;
pgf_lexer_read_ucs(lexer, err);
while (iswdigit(lexer->ucs)) {
- gu_ucs_write(lexer->ucs, wtr, err);
+ gu_out_utf8(lexer->ucs, out, err);
if (gu_exn_is_raised(err))
goto stop;
pgf_lexer_read_ucs(lexer, err);
}
}
} else {
- gu_ucs_write(lexer->ucs, wtr, err);
+ gu_out_utf8(lexer->ucs, out, err);
if (gu_exn_is_raised(err))
goto stop;
pgf_lexer_read_ucs(lexer, err);
@@ -104,12 +105,12 @@ stop:
}
PgfLexer*
-pgf_new_simple_lexer(GuReader *rdr, GuPool *pool)
+pgf_new_simple_lexer(GuIn *in, GuPool *pool)
{
PgfSimpleLexer* lexer = gu_new(PgfSimpleLexer, pool);
lexer->base.read_token = pgf_simple_lexer_read_token;
lexer->base.tok = gu_empty_string;
- lexer->rdr = rdr;
+ lexer->in = in;
lexer->pool = pool;
lexer->ucs = ' ';
return ((PgfLexer*) lexer);