mirror of
https://github.com/fangyidong/json-simple.git
synced 2025-12-06 07:20:53 +03:00
1.0.2 get faster lexer
This commit is contained in:
15
doc/json.lex
15
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 = [^\"\\]
|
||||
%%
|
||||
|
||||
<STRING_BEGIN> \" { yybegin(YYINITIAL);return new Yytoken(Yytoken.TYPE_VALUE,sb.toString());}
|
||||
<STRING_BEGIN> {UNESCAPED_CH}+ { sb.append(yytext());}
|
||||
<STRING_BEGIN> \\\" {sb.append('"');}
|
||||
<STRING_BEGIN> \\\\ {sb.append('\\');}
|
||||
<STRING_BEGIN> \\\/ {sb.append('/');}
|
||||
@@ -30,10 +31,8 @@ WS = [ \t\r\n]
|
||||
<STRING_BEGIN> \\u{HEX_D}{HEX_D}{HEX_D}{HEX_D} { int ch=Integer.parseInt(yytext().substring(2),16);
|
||||
sb.append((char)ch);
|
||||
}
|
||||
|
||||
<STRING_BEGIN> \" { yybegin(YYINITIAL);return new Yytoken(Yytoken.TYPE_VALUE,sb.toString());}
|
||||
<STRING_BEGIN> . { sb.append(yytext());}
|
||||
<YYINITIAL> \" { sb.clear();yybegin(STRING_BEGIN);}
|
||||
|
||||
<YYINITIAL> \" { sb.delete(0, sb.length());yybegin(STRING_BEGIN);}
|
||||
<YYINITIAL> {INT} { Long val=Long.valueOf(yytext()); return new Yytoken(Yytoken.TYPE_VALUE,val);}
|
||||
<YYINITIAL> {DOUBLE} { Double val=Double.valueOf(yytext()); return new Yytoken(Yytoken.TYPE_VALUE,val);}
|
||||
<YYINITIAL> "true"|"false" { Boolean val=Boolean.valueOf(yytext()); return new Yytoken(Yytoken.TYPE_VALUE,val);}
|
||||
@@ -44,4 +43,4 @@ WS = [ \t\r\n]
|
||||
<YYINITIAL> "]" { return new Yytoken(Yytoken.TYPE_RIGHT_SQUARE,null);}
|
||||
<YYINITIAL> "," { return new Yytoken(Yytoken.TYPE_COMMA,null);}
|
||||
<YYINITIAL> ":" { return new Yytoken(Yytoken.TYPE_COLON,null);}
|
||||
<YYINITIAL> {WS} {}
|
||||
<YYINITIAL> {WS}+ {}
|
||||
|
||||
Reference in New Issue
Block a user