summaryrefslogtreecommitdiff
path: root/creg/json_feature_map_lexer.ll
diff options
context:
space:
mode:
authorPatrick Simianer <simianer@cl.uni-heidelberg.de>2012-05-18 13:16:03 +0200
committerPatrick Simianer <simianer@cl.uni-heidelberg.de>2012-05-18 13:16:03 +0200
commit47e9deff1c2cbd104d6e2822703cc83df625d8aa (patch)
tree72d2db8fc921a48e1b6306255ebbe5e7408e034b /creg/json_feature_map_lexer.ll
parent37050e861de2b216d3a28f79e111b674c5d142ac (diff)
parent05b86961fa7e04d47cf729ea27e27c527f895da0 (diff)
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'creg/json_feature_map_lexer.ll')
-rw-r--r--creg/json_feature_map_lexer.ll9
1 files changed, 7 insertions, 2 deletions
diff --git a/creg/json_feature_map_lexer.ll b/creg/json_feature_map_lexer.ll
index cbb6d9a9..f9ce7977 100644
--- a/creg/json_feature_map_lexer.ll
+++ b/creg/json_feature_map_lexer.ll
@@ -77,6 +77,11 @@ UNESCAPED_CH [^\"\\\b\n\r\f\t]
<JSON>{WS}*{LCB}{WS}* { BEGIN(PREVAL); }
+<JSON>{WS}*{LCB}{WS}*{RCB}\n* {const SparseVector<float> x;
+ json_fmap_callback(instid, x, json_fmap_callback_extra);
+ curfeat = 0;
+ BEGIN(INITIAL);}
+
<PREVAL>\" { BEGIN(STRING); spos=0; }
<STRING>\" { featname[spos] = 0;
@@ -92,7 +97,8 @@ UNESCAPED_CH [^\"\\\b\n\r\f\t]
<STRING>\\n { }
<STRING>\\r { }
<STRING>\\t { }
-<STRING>\\u{HEX_D}{HEX_D}{HEX_D}{HEX_D} { abort();
+<STRING>\\u{HEX_D}{HEX_D}{HEX_D}{HEX_D} { uint16_t hex = strtol(&yytext[2], NULL, 16);
+ spos += unicode_escape_to_utf8(hex, 0, &featname[spos++])-1;
}
<JSONVAL>{WS}*:{WS}* { BEGIN(DOUBLE); }
@@ -129,4 +135,3 @@ int main() {
JSONFeatureMapLexer::ReadRules(&std::cin, cb, NULL);
}
#endif
-