summaryrefslogtreecommitdiffstats
path: root/lexer
diff options
context:
space:
mode:
authorDave Davenport <qball@gmpclient.org>2017-01-11 23:19:29 +0100
committerDave Davenport <qball@gmpclient.org>2017-01-11 23:19:29 +0100
commit63d8bfb0713eb2d3faee78eb96a866cf06223d6a (patch)
treee9bb40dbf51b6bd27394932d659abf274259254f /lexer
parentd8ca3e01def8fa54b0e60f3391fd8568ec3ca7da (diff)
Updates
Diffstat (limited to 'lexer')
-rw-r--r--lexer/theme-lexer.l17
1 files changed, 9 insertions, 8 deletions
diff --git a/lexer/theme-lexer.l b/lexer/theme-lexer.l
index f920b891..2f288367 100644
--- a/lexer/theme-lexer.l
+++ b/lexer/theme-lexer.l
@@ -55,7 +55,8 @@ WORD [[:alnum:]-]+
STRING [[:print:]]+
HEX [[:xdigit:]]
NUMBER [[:digit:]]
-REAL [[:digit:]]+(\.[[:digit:]]+)?
+PNNUMBER [-+]?[[:digit:]]+
+REAL [-+]?[[:digit:]]+(\.[[:digit:]]+)?
PX (px)
EM (em)
PERCENT (\%)
@@ -164,8 +165,8 @@ if ( queue == NULL ){
<INITIAL,ENTRY>":" { g_queue_push_head ( queue, GINT_TO_POINTER (YY_START) ); BEGIN(PROPERTIES); return PSEP; }
<PROPERTIES>";" { BEGIN(GPOINTER_TO_INT ( g_queue_pop_head ( queue ))); return PCLOSE;}
<PROPERTIES>(true|false) { yylval->bval= g_strcmp0(yytext, "true") == 0; return T_BOOLEAN;}
-<PROPERTIES>{NUMBER}+ { yylval->ival = (int)g_ascii_strtoll(yytext, NULL, 10); return T_INT;}
-<PROPERTIES>{NUMBER}+\.{NUMBER}+ { yylval->fval = g_ascii_strtod(yytext, NULL); return T_DOUBLE;}
+<PROPERTIES>{PNNUMBER}+ { yylval->ival = (int)g_ascii_strtoll(yytext, NULL, 10); return T_INT;}
+<PROPERTIES>{PNNUMBER}+\.{NUMBER}+ { yylval->fval = g_ascii_strtod(yytext, NULL); return T_DOUBLE;}
<PROPERTIES>\"{STRING}\" { yytext[yyleng-1] = '\0'; yylval->sval = g_strdup(&yytext[1]); return T_STRING;}
<PROPERTIES>@{WORD} {
yylval->sval = g_strdup(yytext);
@@ -178,31 +179,31 @@ if ( queue == NULL ){
yylval->distance.style = SOLID;
return T_PIXEL;
}
-<PROPERTIES>{NUMBER}+{PX} {
+<PROPERTIES>{PNNUMBER}{PX} {
yylval->distance.distance = (double)g_ascii_strtoll(yytext, NULL, 10);
yylval->distance.type = PW_PX;
yylval->distance.style = SOLID;
return T_PIXEL;
}
-<PROPERTIES>{NUMBER}+{PX}{WHITESPACE}{LS_DASH} {
+<PROPERTIES>{PNNUMBER}+{PX}{WHITESPACE}{LS_DASH} {
yylval->distance.distance = (double)g_ascii_strtoll(yytext, NULL, 10);
yylval->distance.type = PW_PX;
yylval->distance.style = DASH;
return T_PIXEL;
}
-<PROPERTIES>{NUMBER}+{EM}{WHITESPACE}{LS_DASH} {
+<PROPERTIES>{PNNUMBER}+{EM}{WHITESPACE}{LS_DASH} {
yylval->distance.distance = (double)g_ascii_strtoll(yytext, NULL, 10);
yylval->distance.type = PW_PX;
yylval->distance.style = DASH;
return T_PIXEL;
}
-<PROPERTIES>{NUMBER}+{PX}{WHITESPACE}{LS_SOLID} {
+<PROPERTIES>{PNNUMBER}+{PX}{WHITESPACE}{LS_SOLID} {
yylval->distance.distance = (double)g_ascii_strtoll(yytext, NULL, 10);
yylval->distance.type = PW_PX;
yylval->distance.style = SOLID;
return T_PIXEL;
}
-<PROPERTIES>{NUMBER}+{EM}{WHITESPACE}{LS_SOLID} {
+<PROPERTIES>{PNNUMBER}+{EM}{WHITESPACE}{LS_SOLID} {
yylval->distance.distance = (double)g_ascii_strtoll(yytext, NULL, 10);
yylval->distance.type = PW_PX;
yylval->distance.style = SOLID;