1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-07-02 21:51:50 +02:00

First hit at providing support for floats in the language.

This commit is contained in:
Christian Theune 2016-01-05 00:40:40 +01:00
parent b8258a4475
commit 14ebde5289
16 changed files with 207 additions and 23 deletions

View file

@ -85,6 +85,7 @@ static Expr * unescapeStr(SymbolTable & symbols, const char * s)
ID [a-zA-Z\_][a-zA-Z0-9\_\'\-]*
INT [0-9]+
FLOAT {INT}[0-9]+\.[0-9]+[eE]-?{INT}
PATH [a-zA-Z0-9\.\_\-\+]*(\/[a-zA-Z0-9\.\_\-\+]+)+
HPATH \~(\/[a-zA-Z0-9\.\_\-\+]+)+
SPATH \<[a-zA-Z0-9\.\_\-\+]+(\/[a-zA-Z0-9\.\_\-\+]+)*\>
@ -123,6 +124,12 @@ or { return OR_KW; }
throw ParseError(format("invalid integer %1%") % yytext);
return INT;
}
{FLOAT} { errno = 0;
yylval->n = strtod(yytext, 0);
if (errno != 0)
throw ParseError(format("invalid float %1%") % yytext);
return FLOAT;
}
\$\{ { PUSH_STATE(INITIAL); return DOLLAR_CURLY; }
\{ { PUSH_STATE(INITIAL); return '{'; }