diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2009-04-26 12:42:11 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2009-04-26 12:42:11 +0300 |
commit | d50fc04ded36255465184a16c70eb4c50acdb199 (patch) | |
tree | 02a568794c2a211621d1fe39868eaad7963bdc43 /src/html.lex.l | |
parent | 099a946ad4465c42db4737b247f1e89bd03c83ae (diff) | |
download | tagr-d50fc04ded36255465184a16c70eb4c50acdb199.tar.gz tagr-d50fc04ded36255465184a16c70eb4c50acdb199.tar.bz2 |
Introduce formats in preprocessor variables.
* configure.ac: Version 1.9.90
* NEWS: Likewise.
* etc/Makefile.am (EXTRA_DIST): Add logfilter.awk uptmpl.sed
* etc/logfilter.awk: New file
* etc/uptmpl.sed: New file
* etc/tagr.tmpl: Update
* etc/upgrade.awk: Add copyleft header
* gnulib.modules: Add fprintftime.
* src/graph.c (rate_unit): Change to "Bytes per Second".
(number_suffix, number_suffix_count): Move to grid.c
* src/html.gram.y: Work with formats.
* src/html.lex.l: Likewise.
* src/output.c (update_output): Store NOW as a number and
provide a formatting function for it.
* src/tagr.h (union value, value_format_fn): New types.
(pp_value_t): New members: fmt, format
(add_numeric_value, add_string_value): Change return type.
(init_value): New proto.
Diffstat (limited to 'src/html.lex.l')
-rw-r--r-- | src/html.lex.l | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/src/html.lex.l b/src/html.lex.l index 9f323dd..931bfc1 100644 --- a/src/html.lex.l +++ b/src/html.lex.l @@ -45,5 +45,5 @@ N [0-9]+ { yyerror ("unknown identifier"); - yylval.value.type = unspecified_value; + init_value (&yylval.value, unspecified_value, NULL); } return IDENT; @@ -54,5 +54,5 @@ N [0-9]+ { yyerror ("unknown identifier"); - yylval.value.type = unspecified_value; + init_value (&yylval.value, unspecified_value, NULL); } return IDENT; @@ -64,5 +64,5 @@ N [0-9]+ { yyerror ("unknown identifier"); - yylval.value.type = unspecified_value; + init_value (&yylval.value, unspecified_value, NULL); } else @@ -72,4 +72,25 @@ N [0-9]+ return IDENT; } +\$\({NAME}:[^)]+\) { + pp_value_t val; + char *p = strchr (yytext, ':'); + *p++ = 0; + if (find_value (yytext+2, &val)) + { + yyerror ("unknown identifier"); + init_value (&yylval.value, unspecified_value, NULL); + } + else + { + size_t len = strlen (p) - 1; + init_value (&yylval.value, val.type, &val.v); + yylval.value.prec = val.prec; + yylval.value.format = val.format; + yylval.value.fmt = xmalloc (len + 1); + memcpy (yylval.value.fmt, p, len); + yylval.value.fmt[len] = 0; + } + return IDENT; +} \$\{ return OBRACE; \$\} return CBRACE; |