summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lexer.l9
-rw-r--r--testdata/scad/misc/parser-tests.scad7
2 files changed, 13 insertions, 3 deletions
diff --git a/src/lexer.l b/src/lexer.l
index d9ccd76..2760b07 100644
--- a/src/lexer.l
+++ b/src/lexer.l
@@ -88,7 +88,8 @@ QString filepath;
%x comment string
%x include
-DIGIT [0-9]
+D [0-9]
+E [Ee][+-]?{D}+
%%
@@ -155,8 +156,10 @@ use[ \t\r\n>]*"<"[^\t\r\n>]+">" {
"false" return TOK_FALSE;
"undef" return TOK_UNDEF;
-{DIGIT}+|{DIGIT}*\.{DIGIT}+|{DIGIT}+\.{DIGIT}* { parserlval.number = QString(yytext).toDouble(); return TOK_NUMBER; }
-"$"?[a-zA-Z0-9_]+ { parserlval.text = strdup(yytext); return TOK_ID; }
+{D}+{E}? |
+{D}*\.{D}+{E}? |
+{D}+\.{D}*{E}? { parserlval.number = QString(yytext).toDouble(); return TOK_NUMBER; }
+"$"?[a-zA-Z0-9_]+ { parserlval.text = strdup(yytext); return TOK_ID; }
\" { BEGIN(string); stringcontents = new QString(); }
<string>{
diff --git a/testdata/scad/misc/parser-tests.scad b/testdata/scad/misc/parser-tests.scad
new file mode 100644
index 0000000..03cbded
--- /dev/null
+++ b/testdata/scad/misc/parser-tests.scad
@@ -0,0 +1,7 @@
+// Number literals
+
+a = .1; echo(a);
+b = 2.; echo(b);
+c = 11e+2; echo(c);
+d = 21.e-3; echo(d);
+e = .11e-12; echo(e);
contact: Jan Huwald // Impressum