git.asbjorn.biz
/
swftools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
standardized function names
[swftools.git]
/
src
/
parser.lex
diff --git
a/src/parser.lex
b/src/parser.lex
index
337da1e
..
b2b4948
100644
(file)
--- a/
src/parser.lex
+++ b/
src/parser.lex
@@
-99,10
+99,13
@@
static void unescapeString(string_t * tmp)
case 'n': p[0] = '\n'; break;
case 'r': p[0] = '\r'; break;
case 't': p[0] = '\t'; break;
case 'n': p[0] = '\n'; break;
case 'r': p[0] = '\r'; break;
case 't': p[0] = '\t'; break;
- case 'x': {
+ case 'x': case 'u': {
+ int max=2;
int num=0;
char*utf8;
int num=0;
char*utf8;
- while(strchr("0123456789abcdefABCDEF", p[nr])) {
+ if(p[1] == 'u')
+ max = 4;
+ while(strchr("0123456789abcdefABCDEF", p[nr]) && nr < max+2) {
num <<= 4;
if(p[nr]>='0' && p[nr]<='9') num |= p[nr] - '0';
if(p[nr]>='a' && p[nr]<='f') num |= p[nr] - 'a' + 10;
num <<= 4;
if(p[nr]>='0' && p[nr]<='9') num |= p[nr] - '0';
if(p[nr]>='a' && p[nr]<='f') num |= p[nr] - 'a' + 10;
@@
-111,7
+114,6
@@
static void unescapeString(string_t * tmp)
}
utf8 = getUTF8(num);
new = strlen(utf8);
}
utf8 = getUTF8(num);
new = strlen(utf8);
-
memcpy(p, utf8, new); // do not copy the terminating zero
break;
}
memcpy(p, utf8, new); // do not copy the terminating zero
break;
}
@@
-244,7
+246,6
@@
NUMBER -?[0-9]+(\.[0-9]*)?
PERCENT {NUMBER}%
STRING (\\.|[^\\"\n])*
S [ \n\r\t]
PERCENT {NUMBER}%
STRING (\\.|[^\\"\n])*
S [ \n\r\t]
-NS [^ \n\r\t]
RVALUE \"{STRING}\"|([^ \n\r\t]+)
%%
RVALUE \"{STRING}\"|([^ \n\r\t]+)
%%
@@
-266,7
+267,7
@@
RVALUE \"{STRING}\"|([^ \n\r\t]+)
}
\.include{S}.*\n {handleInclude(yytext, yyleng);}
\.{NAME} {s(COMMAND);c();}
}
\.include{S}.*\n {handleInclude(yytext, yyleng);}
\.{NAME} {s(COMMAND);c();}
-:({NS}|{S}[^.]|{S}\.[^e]|{S}\.e[^n]|{S}\.en[^d]|{S}\.end{NS})*{S}\.end {s(RAWDATA);c();}
+:([^.]|\.[^e]|\.e[^n]|\.en[^d]|\.end[^ \n\r\t]|[ \n\r\t])*\.end {s(RAWDATA);c();}
{NAME} {s(IDENTIFIER);c();}
"[" {c();BEGIN(BINARY);}
{S} {c();}
{NAME} {s(IDENTIFIER);c();}
"[" {c();BEGIN(BINARY);}
{S} {c();}