Clarified the syntax for real number literals. 1.0 is the same precision as AcReal, 1.0f is an explicit float and 1.0d is an explicit double.
This commit is contained in:
@@ -39,7 +39,8 @@ L [a-zA-Z_]
|
||||
"return" { return RETURN; }
|
||||
|
||||
{D}+"."{D}+ { return REAL_NUMBER; } /* Literals */
|
||||
{D}+"."{D}+[fd]+ { return NUMBER; }
|
||||
{D}+"."{D}+d+ { return DOUBLE_NUMBER; }
|
||||
{D}+"."{D}+f+ { return NUMBER; }
|
||||
{D}+[lu]* { return NUMBER; }
|
||||
{L}({L}|{D})* { return IDENTIFIER; }
|
||||
\"(.)*\" { return IDENTIFIER; } /* String */
|
||||
|
@@ -14,7 +14,7 @@ int yyget_lineno();
|
||||
%}
|
||||
|
||||
%token CONSTANT IN OUT UNIFORM
|
||||
%token IDENTIFIER NUMBER REAL_NUMBER
|
||||
%token IDENTIFIER NUMBER REAL_NUMBER DOUBLE_NUMBER
|
||||
%token RETURN
|
||||
%token SCALAR VECTOR MATRIX SCALARFIELD SCALARARRAY
|
||||
%token VOID INT INT3 COMPLEX
|
||||
@@ -222,6 +222,7 @@ identifier: IDENTIFIER
|
||||
;
|
||||
|
||||
number: REAL_NUMBER { $$ = astnode_create(NODE_REAL_NUMBER, NULL, NULL); astnode_set_buffer(yytext, $$); }
|
||||
| DOUBLE_NUMBER { $$ = astnode_create(NODE_UNKNOWN, NULL, NULL); astnode_set_buffer(yytext, $$); $$->buffer[strlen($$->buffer) - 1] = '\0'; }
|
||||
| NUMBER { $$ = astnode_create(NODE_UNKNOWN, NULL, NULL); astnode_set_buffer(yytext, $$); }
|
||||
;
|
||||
|
||||
|
Reference in New Issue
Block a user