git.asbjorn.biz
/
swftools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added rollbacking functionality to trier (for namespaces)
[swftools.git]
/
lib
/
as3
/
tokenizer.lex
diff --git
a/lib/as3/tokenizer.lex
b/lib/as3/tokenizer.lex
index
bc4f012
..
732c97f
100644
(file)
--- a/
lib/as3/tokenizer.lex
+++ b/
lib/as3/tokenizer.lex
@@
-259,8
+259,15
@@
static int do_unescape(const char*s, const char*end, char*n)
}
break;
}
}
break;
}
- default:
- syntaxerror("unknown escape sequence: \"\\%c\"", *s);
+ default: {
+ if(o) {
+ o[len+0] = '\\';
+ o[len+1] = *s;
+ }
+ s++;
+ len+=2;
+ break;
+ }
}
}
if(o) o[len]=0;
}
}
if(o) o[len]=0;
@@
-288,12
+295,6
@@
static void handleCData(char*s, int len)
static void handleString(char*s, int len)
{
static void handleString(char*s, int len)
{
- if(as3_pass < 2) {
- // don't bother decoding strings in pass 1
- memset(&a3_lval, 0, sizeof(a3_lval));
- return;
- }
-
if(s[0]=='"') {
if(s[len-1]!='"') syntaxerror("String doesn't end with '\"'");
s++;len-=2;
if(s[0]=='"') {
if(s[len-1]!='"') syntaxerror("String doesn't end with '\"'");
s++;len-=2;
@@
-303,7
+304,6
@@
static void handleString(char*s, int len)
s++;len-=2;
}
else syntaxerror("String incorrectly terminated");
s++;len-=2;
}
else syntaxerror("String incorrectly terminated");
-
a3_lval.str = string_unescape(s, len);
}
a3_lval.str = string_unescape(s, len);
}
@@
-516,14
+516,18
@@
static inline void c() {
current_column+=yyleng;
}
current_column+=yyleng;
}
-static trie_t*namespaces = 0;
-void tokenizer_register_namespace(const char*id)
+trie_t*active_namespaces = 0;
+/*void tokenizer_register_namespace(const char*id)
{
{
- trie_put(&namespaces, id);
+ trie_put(namespaces, id, 0);
}
}
+void tokenizer_unregister_namespace(const char*id)
+{
+ trie_remove(namespaces, id);
+}*/
static inline tokenizer_is_namespace(const char*id)
{
static inline tokenizer_is_namespace(const char*id)
{
- return trie_lookup(namespaces, id);
+ return trie_contains(active_namespaces, id);
}
static inline int handleIdentifier()
}
static inline int handleIdentifier()