+++ /dev/null
-/* Generated by re2c */
-#include <math.h>
-#include <stdio.h>
-
-static double lex(const char *YYCURSOR)
-{
- const char *YYMARKER, *h1, *h2, *l1, *l2, *e1, *e2, *n;
- long e = 0;
- double d = 0;
- const char *yyt1;const char *yyt2;const char *yyt3;const char *yyt4;const char *yyt5;const char *yyt6;const char *yyt7;
-
-{
- char yych;
- yych = *YYCURSOR;
- switch (yych) {
- case 0x00:
- yyt2 = yyt4 = yyt5 = yyt6 = yyt7 = NULL;
- yyt1 = yyt3 = YYCURSOR;
- goto yy2;
- case '.':
- yyt1 = yyt3 = YYCURSOR;
- goto yy6;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- yyt1 = YYCURSOR;
- goto yy7;
- case 'E':
- case 'e': goto yy8;
- default: goto yy4;
- }
-yy2:
- ++YYCURSOR;
- h1 = yyt1;
- h2 = yyt3;
- l1 = yyt4;
- l2 = yyt5;
- n = yyt7;
- e1 = yyt6;
- e2 = yyt2;
- {
- for (; e1 < e2; ++e1) e = e * 10 + *e1 - '0';
- e = (n ? -e : e) - (l2 - l1);
- for (; h1 < h2; ++h1) d = d * 10 + *h1 - '0';
- for (; l1 < l2; ++l1) d = d * 10 + *l1 - '0';
- for (; e < 0; ++e) d /= 10;
- for (; e > 0; --e) d *= 10;
- return d;
- }
-yy4:
- ++YYCURSOR;
-yy5:
- { return NAN; }
-yy6:
- yych = *(YYMARKER = ++YYCURSOR);
- switch (yych) {
- case 0x00:
- yyt1 = yyt2 = yyt3 = NULL;
- goto yy9;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- yyt4 = YYCURSOR;
- goto yy11;
- case 'E':
- case 'e':
- yyt4 = yyt5 = YYCURSOR;
- goto yy14;
- default: goto yy5;
- }
-yy7:
- yych = *(YYMARKER = ++YYCURSOR);
- switch (yych) {
- case 0x00:
- yyt2 = yyt4 = yyt5 = yyt6 = yyt7 = NULL;
- yyt3 = YYCURSOR;
- goto yy2;
- case '.':
- yyt3 = YYCURSOR;
- goto yy15;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy16;
- case 'E':
- case 'e':
- yyt4 = yyt5 = NULL;
- yyt3 = YYCURSOR;
- goto yy14;
- default: goto yy5;
- }
-yy8:
- yych = *(YYMARKER = ++YYCURSOR);
- switch (yych) {
- case '+': goto yy18;
- case '-':
- yyt3 = YYCURSOR;
- goto yy19;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- yyt3 = NULL;
- yyt2 = YYCURSOR;
- goto yy20;
- default: goto yy5;
- }
-yy9:
- ++YYCURSOR;
- n = yyt3;
- e1 = yyt2;
- e2 = yyt1;
- { return NAN; }
-yy11:
- yych = *++YYCURSOR;
- switch (yych) {
- case 0x00:
- yyt2 = yyt6 = yyt7 = NULL;
- yyt5 = YYCURSOR;
- goto yy2;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy11;
- case 'E':
- case 'e':
- yyt5 = YYCURSOR;
- goto yy14;
- default: goto yy13;
- }
-yy13:
- YYCURSOR = YYMARKER;
- goto yy5;
-yy14:
- yych = *++YYCURSOR;
- switch (yych) {
- case '+': goto yy22;
- case '-':
- yyt7 = YYCURSOR;
- goto yy23;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- yyt7 = NULL;
- yyt6 = YYCURSOR;
- goto yy24;
- default: goto yy13;
- }
-yy15:
- yych = *++YYCURSOR;
- switch (yych) {
- case 0x00:
- yyt2 = yyt6 = yyt7 = NULL;
- yyt4 = yyt5 = YYCURSOR;
- goto yy2;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- yyt4 = YYCURSOR;
- goto yy11;
- case 'E':
- case 'e':
- yyt4 = yyt5 = YYCURSOR;
- goto yy14;
- default: goto yy13;
- }
-yy16:
- yych = *++YYCURSOR;
- switch (yych) {
- case 0x00:
- yyt2 = yyt4 = yyt5 = yyt6 = yyt7 = NULL;
- yyt3 = YYCURSOR;
- goto yy2;
- case '.':
- yyt3 = YYCURSOR;
- goto yy15;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy16;
- case 'E':
- case 'e':
- yyt4 = yyt5 = NULL;
- yyt3 = YYCURSOR;
- goto yy14;
- default: goto yy13;
- }
-yy18:
- yych = *++YYCURSOR;
- switch (yych) {
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- yyt3 = NULL;
- yyt2 = YYCURSOR;
- goto yy20;
- default: goto yy13;
- }
-yy19:
- yych = *++YYCURSOR;
- switch (yych) {
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- yyt2 = YYCURSOR;
- goto yy20;
- default: goto yy13;
- }
-yy20:
- yych = *++YYCURSOR;
- switch (yych) {
- case 0x00:
- yyt1 = YYCURSOR;
- goto yy9;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy20;
- default: goto yy13;
- }
-yy22:
- yych = *++YYCURSOR;
- switch (yych) {
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- yyt7 = NULL;
- yyt6 = YYCURSOR;
- goto yy24;
- default: goto yy13;
- }
-yy23:
- yych = *++YYCURSOR;
- switch (yych) {
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- yyt6 = YYCURSOR;
- goto yy24;
- default: goto yy13;
- }
-yy24:
- yych = *++YYCURSOR;
- switch (yych) {
- case 0x00:
- yyt2 = YYCURSOR;
- goto yy2;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': goto yy24;
- default: goto yy13;
- }
-}
-
-}
-
-int main(int argc, char **argv)
-{
- for (int i = 1; i < argc; ++i) {
- printf("%g\n", lex(argv[i]));
- }
- return 0;
-}
+++ /dev/null
-#include <math.h>
-#include <stdio.h>
-
-static double lex(const char *YYCURSOR)
-{
- const char *YYMARKER, *h1, *h2, *l1, *l2, *e1, *e2, *n;
- long e = 0;
- double d = 0;
- /*!stags:re2c format = 'const char *@@;'; */
- /*!re2c
- re2c:define:YYCTYPE = char;
- re2c:yyfill:enable = 0;
-
- end = [\x00];
- dot = ".";
- high = @h1 [0-9]* @h2;
- low = @l1 [0-9]* @l2;
- exp = 'e' ([+]? | @n [-]) @e1 [0-9]+ @e2;
-
- * { return NAN; }
- (exp | dot) end { return NAN; }
-
- high (dot low)? exp? end {
- for (; e1 < e2; ++e1) e = e * 10 + *e1 - '0';
- e = (n ? -e : e) - (l2 - l1);
- for (; h1 < h2; ++h1) d = d * 10 + *h1 - '0';
- for (; l1 < l2; ++l1) d = d * 10 + *l1 - '0';
- for (; e < 0; ++e) d /= 10;
- for (; e > 0; --e) d *= 10;
- return d;
- }
- */
-}
-
-int main(int argc, char **argv)
-{
- for (int i = 1; i < argc; ++i) {
- printf("%g\n", lex(argv[i]));
- }
- return 0;
-}