added STRING token type to parser/lexer, removed unused DQUOTE/SQUOTE tokens
git-svn-id: svn://anubis/fart/trunk@382 7f9b0f55-74a9-4bce-be96-3c2cd072584d
This commit is contained in:
parent
b7e2aa1bae
commit
48e2900e1f
@ -4,14 +4,20 @@
|
||||
|
||||
%{
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "nodes.h"
|
||||
#include "parser.h"
|
||||
#include "parser.tab.hh"
|
||||
|
||||
#define YY_USER_ACTION yylloc->first_column += yyleng;
|
||||
|
||||
static std::string build_string;
|
||||
|
||||
%}
|
||||
|
||||
%x str
|
||||
|
||||
%%
|
||||
|
||||
\+ return PLUS;
|
||||
@ -36,8 +42,6 @@
|
||||
\? return QUESTION;
|
||||
\$ return DOLLAR;
|
||||
\. return DOT;
|
||||
\" return DQUOTE;
|
||||
\' return SQUOTE;
|
||||
, return COMMA;
|
||||
|
||||
\{ return LCURLY;
|
||||
@ -119,6 +123,33 @@ local return LOCAL;
|
||||
}
|
||||
[ \t\v] /* ignore whitespace */
|
||||
|
||||
/* strings */
|
||||
\" build_string = ""; BEGIN(str);
|
||||
|
||||
<str>{
|
||||
|
||||
\" {
|
||||
/* end of the string literal */
|
||||
BEGIN(INITIAL);
|
||||
*yylval = new IdentifierNode(build_string);
|
||||
return STRING;
|
||||
}
|
||||
\\x[0-9A-Fa-f]{2} {
|
||||
/* hexadecimal escape code */
|
||||
unsigned int val;
|
||||
(void) sscanf(yytext + 2, "%x", &val);
|
||||
build_string += (char) val;
|
||||
}
|
||||
\\n build_string += '\n';
|
||||
\\t build_string += '\t';
|
||||
\\r build_string += '\r';
|
||||
\\b build_string += '\b';
|
||||
\\f build_string += '\f';
|
||||
\\(.|\n) build_string += yytext[1];
|
||||
[^\\\"]+ build_string += yytext;
|
||||
|
||||
}
|
||||
|
||||
. return yytext[0];
|
||||
|
||||
%%
|
||||
|
@ -55,8 +55,6 @@ refptr<Scope> parser_scope;
|
||||
%token QUESTION;
|
||||
%token DOLLAR;
|
||||
%token DOT;
|
||||
%token DQUOTE;
|
||||
%token SQUOTE;
|
||||
%token COMMA;
|
||||
|
||||
%token LCURLY;
|
||||
@ -67,6 +65,7 @@ refptr<Scope> parser_scope;
|
||||
%token RPAREN;
|
||||
|
||||
%token REAL_NUMBER;
|
||||
%token STRING;
|
||||
|
||||
%token AMBIENT;
|
||||
%token AMBIENT_OCCLUSION;
|
||||
|
Loading…
x
Reference in New Issue
Block a user