From e1c300a681521a5cd9a454cbfd79e86dee123b07 Mon Sep 17 00:00:00 2001 From: fangyidong Date: Sat, 10 Jan 2009 08:19:34 +0000 Subject: [PATCH] 1.0.2 get faster lexer --- AUTHORS.txt | 2 +- ChangeLog.txt | 4 + VERSION.txt | 2 +- build.xml | 4 +- doc/json.lex | 15 ++-- lib/json_simple-1.0.2.jar | Bin 0 -> 9735 bytes src/org/json/simple/parser/JSONParser.java | 22 +++-- src/org/json/simple/parser/Yylex.java | 91 +++++++++++---------- test.xml | 3 +- test/org/json/simple/Test.java | 7 ++ 10 files changed, 89 insertions(+), 61 deletions(-) create mode 100644 lib/json_simple-1.0.2.jar diff --git a/AUTHORS.txt b/AUTHORS.txt index f5ff495..e896fc1 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -1 +1 @@ -Fang Yidong \ No newline at end of file +Fang Yidong \ No newline at end of file diff --git a/ChangeLog.txt b/ChangeLog.txt index 1030c68..fa4dbb2 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -1,5 +1,9 @@ ChangeLog +Version 1.02 (2009/01/10) +* Updated json.lex to improve performance of the lexer +* Removed Rope.java and related junit test + Version 1.01 (2008/08/26) * License changed to a more commerce friendly and clear one, Apache License 2.0 * Use JFlex to generate a faster Yylex.java diff --git a/VERSION.txt b/VERSION.txt index 7f20734..e6d5cb8 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1 +1 @@ -1.0.1 \ No newline at end of file +1.0.2 \ No newline at end of file diff --git a/build.xml b/build.xml index b7acbc7..72b1c75 100644 --- a/build.xml +++ b/build.xml @@ -1,5 +1,5 @@ - + @@ -29,4 +29,4 @@ basedir="build/main" includes="**/*.class"/> - \ No newline at end of file + diff --git a/doc/json.lex b/doc/json.lex index ec5f05c..53fcf1b 100644 --- a/doc/json.lex +++ b/doc/json.lex @@ -1,11 +1,9 @@ package org.json.simple.parser; -import org.json.simple.rope.Rope; - %% %{ -private Rope sb=new Rope(); +private StringBuffer sb=new StringBuffer(); %} @@ -17,8 +15,11 @@ HEX_D = [a-fA-F0-9] INT = [-]?[0-9]+ DOUBLE = {INT}((\.[0-9]+)?([eE][-+]?[0-9]+)?) WS = [ \t\r\n] +UNESCAPED_CH = [^\"\\] %% + \" { yybegin(YYINITIAL);return new Yytoken(Yytoken.TYPE_VALUE,sb.toString());} + {UNESCAPED_CH}+ { sb.append(yytext());} \\\" {sb.append('"');} \\\\ {sb.append('\\');} \\\/ {sb.append('/');} @@ -30,10 +31,8 @@ WS = [ \t\r\n] \\u{HEX_D}{HEX_D}{HEX_D}{HEX_D} { int ch=Integer.parseInt(yytext().substring(2),16); sb.append((char)ch); } - - \" { yybegin(YYINITIAL);return new Yytoken(Yytoken.TYPE_VALUE,sb.toString());} - . { sb.append(yytext());} - \" { sb.clear();yybegin(STRING_BEGIN);} + + \" { sb.delete(0, sb.length());yybegin(STRING_BEGIN);} {INT} { Long val=Long.valueOf(yytext()); return new Yytoken(Yytoken.TYPE_VALUE,val);} {DOUBLE} { Double val=Double.valueOf(yytext()); return new Yytoken(Yytoken.TYPE_VALUE,val);} "true"|"false" { Boolean val=Boolean.valueOf(yytext()); return new Yytoken(Yytoken.TYPE_VALUE,val);} @@ -44,4 +43,4 @@ WS = [ \t\r\n] "]" { return new Yytoken(Yytoken.TYPE_RIGHT_SQUARE,null);} "," { return new Yytoken(Yytoken.TYPE_COMMA,null);} ":" { return new Yytoken(Yytoken.TYPE_COLON,null);} - {WS} {} + {WS}+ {} diff --git a/lib/json_simple-1.0.2.jar b/lib/json_simple-1.0.2.jar new file mode 100644 index 0000000000000000000000000000000000000000..73b66bd7c5f6fd8b88d653539e82ed1f3b4b3db9 GIT binary patch literal 9735 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 K4S$kiK>r6E5) 0); @@ -420,27 +418,25 @@ private Rope sb=new Rope(); switch (zzInput) { case 2: zzState = 2; break zzForNext; case 3: zzIsFinal = true; zzState = 3; break zzForNext; - case 7: - case 17: zzIsFinal = true; zzNoLookAhead = true; zzState = 4; break zzForNext; + case 7: zzIsFinal = true; zzState = 4; break zzForNext; case 9: zzIsFinal = true; zzNoLookAhead = true; zzState = 5; break zzForNext; case 12: zzState = 6; break zzForNext; case 13: zzState = 7; break zzForNext; case 15: zzState = 8; break zzForNext; - case 22: zzIsFinal = true; zzNoLookAhead = true; zzState = 9; break zzForNext; - case 23: zzIsFinal = true; zzNoLookAhead = true; zzState = 10; break zzForNext; - case 24: zzIsFinal = true; zzNoLookAhead = true; zzState = 11; break zzForNext; - case 25: zzIsFinal = true; zzNoLookAhead = true; zzState = 12; break zzForNext; - case 26: zzIsFinal = true; zzNoLookAhead = true; zzState = 13; break zzForNext; - case 27: zzIsFinal = true; zzNoLookAhead = true; zzState = 14; break zzForNext; + case 21: zzIsFinal = true; zzNoLookAhead = true; zzState = 9; break zzForNext; + case 22: zzIsFinal = true; zzNoLookAhead = true; zzState = 10; break zzForNext; + case 23: zzIsFinal = true; zzNoLookAhead = true; zzState = 11; break zzForNext; + case 24: zzIsFinal = true; zzNoLookAhead = true; zzState = 12; break zzForNext; + case 25: zzIsFinal = true; zzNoLookAhead = true; zzState = 13; break zzForNext; + case 26: zzIsFinal = true; zzNoLookAhead = true; zzState = 14; break zzForNext; default: break zzForAction; } case 1: switch (zzInput) { - case 8: zzIsFinal = true; zzState = 16; break zzForNext; + case 8: zzState = 16; break zzForNext; case 9: zzIsFinal = true; zzNoLookAhead = true; zzState = 17; break zzForNext; - case 17: break zzForAction; - default: zzIsFinal = true; zzNoLookAhead = true; zzState = 15; break zzForNext; + default: zzIsFinal = true; zzState = 15; break zzForNext; } case 2: @@ -454,13 +450,19 @@ private Rope sb=new Rope(); case 3: zzIsFinal = true; break zzForNext; case 4: zzState = 18; break zzForNext; case 5: - case 18: zzState = 19; break zzForNext; + case 17: zzState = 19; break zzForNext; + default: break zzForAction; + } + + case 4: + switch (zzInput) { + case 7: zzIsFinal = true; break zzForNext; default: break zzForAction; } case 6: switch (zzInput) { - case 19: zzState = 20; break zzForNext; + case 18: zzState = 20; break zzForNext; default: break zzForAction; } @@ -476,6 +478,13 @@ private Rope sb=new Rope(); default: break zzForAction; } + case 15: + switch (zzInput) { + case 8: + case 9: break zzForAction; + default: zzIsFinal = true; break zzForNext; + } + case 16: switch (zzInput) { case 8: zzIsFinal = true; zzNoLookAhead = true; zzState = 23; break zzForNext; @@ -506,13 +515,13 @@ private Rope sb=new Rope(); case 20: switch (zzInput) { - case 20: zzState = 35; break zzForNext; + case 19: zzState = 35; break zzForNext; default: break zzForAction; } case 21: switch (zzInput) { - case 20: zzState = 36; break zzForNext; + case 19: zzState = 36; break zzForNext; default: break zzForAction; } @@ -529,15 +538,15 @@ private Rope sb=new Rope(); case 5: case 11: case 12: - case 18: - case 19: zzState = 38; break zzForNext; + case 17: + case 18: zzState = 38; break zzForNext; default: break zzForAction; } case 32: switch (zzInput) { case 5: - case 18: zzState = 19; break zzForNext; + case 17: zzState = 19; break zzForNext; case 3: zzIsFinal = true; break zzForNext; default: break zzForAction; } @@ -556,19 +565,19 @@ private Rope sb=new Rope(); case 35: switch (zzInput) { - case 21: zzState = 37; break zzForNext; + case 20: zzState = 37; break zzForNext; default: break zzForAction; } case 36: switch (zzInput) { - case 20: zzIsFinal = true; zzNoLookAhead = true; zzState = 39; break zzForNext; + case 19: zzIsFinal = true; zzNoLookAhead = true; zzState = 39; break zzForNext; default: break zzForAction; } case 37: switch (zzInput) { - case 18: zzIsFinal = true; zzNoLookAhead = true; zzState = 40; break zzForNext; + case 17: zzIsFinal = true; zzNoLookAhead = true; zzState = 40; break zzForNext; default: break zzForAction; } @@ -579,8 +588,8 @@ private Rope sb=new Rope(); case 5: case 11: case 12: - case 18: - case 19: zzState = 41; break zzForNext; + case 17: + case 18: zzState = 41; break zzForNext; default: break zzForAction; } @@ -591,8 +600,8 @@ private Rope sb=new Rope(); case 5: case 11: case 12: - case 18: - case 19: zzState = 42; break zzForNext; + case 17: + case 18: zzState = 42; break zzForNext; default: break zzForAction; } @@ -603,8 +612,8 @@ private Rope sb=new Rope(); case 5: case 11: case 12: - case 18: - case 19: zzIsFinal = true; zzNoLookAhead = true; zzState = 43; break zzForNext; + case 17: + case 18: zzIsFinal = true; zzNoLookAhead = true; zzState = 43; break zzForNext; default: break zzForAction; } @@ -632,7 +641,7 @@ private Rope sb=new Rope(); } case 24: break; case 3: - { sb.clear();yybegin(STRING_BEGIN); + { sb.delete(0, sb.length());yybegin(STRING_BEGIN); } case 25: break; case 15: diff --git a/test.xml b/test.xml index 2265e9f..1af55bf 100644 --- a/test.xml +++ b/test.xml @@ -43,7 +43,6 @@ - - \ No newline at end of file + diff --git a/test/org/json/simple/Test.java b/test/org/json/simple/Test.java index be2ed57..0b44f68 100644 --- a/test/org/json/simple/Test.java +++ b/test/org/json/simple/Test.java @@ -4,6 +4,8 @@ */ package org.json.simple; +import java.util.List; + import junit.framework.TestCase; @@ -39,6 +41,11 @@ public class Test extends TestCase{ s="[5,,2]"; obj=JSONValue.parse(s); assertEquals("[5,2]",obj.toString()); + + s="[\"hello\\bworld\\\"abc\\tdef\\\\ghi\\rjkl\\n123\\u4e2d\"]"; + obj=JSONValue.parse(s); + assertEquals("hello\bworld\"abc\tdef\\ghi\rjkl\n123δΈ­",((List)obj).get(0).toString()); + } public void testEncode() throws Exception{