Fixed various issue with parsing string (such as \t and related),
Implemented escaping of slash '/' only in case of '</' to avoid potential issue with javascript and </script> Many feature renaming to match Eiffel style and naming convention, kept previous feature as obsolete. Restructured the library to make easy extraction of "converter" classes if needed in the future. Updated part of the code to use new feature names.
This commit is contained in:
87
library/parser/json_tokens.e
Normal file
87
library/parser/json_tokens.e
Normal file
@@ -0,0 +1,87 @@
|
||||
note
|
||||
description: "Token used by the JSON_PARSER"
|
||||
author: "$Author$"
|
||||
date: "$Date$"
|
||||
revision: "$Revision$"
|
||||
|
||||
class
|
||||
JSON_TOKENS
|
||||
|
||||
feature -- Access
|
||||
|
||||
token_object_open: CHARACTER = '{'
|
||||
token_object_close: CHARACTER = '}'
|
||||
|
||||
token_array_open: CHARACTER = '['
|
||||
token_array_close: CHARACTER = ']'
|
||||
|
||||
token_double_quote: CHARACTER = '"'
|
||||
token_plus: CHARACTER = '+'
|
||||
token_minus: CHARACTER = '-'
|
||||
token_dot: CHARACTER = '.'
|
||||
token_exp: CHARACTER = 'e'
|
||||
token_comma: CHARACTER = ','
|
||||
token_colon: CHARACTER = ':'
|
||||
|
||||
feature -- Status report
|
||||
|
||||
is_open_token (c: CHARACTER): BOOLEAN
|
||||
-- Characters which open a type
|
||||
do
|
||||
inspect c
|
||||
when token_object_open, token_array_open, token_double_quote, token_plus, token_minus, token_dot then
|
||||
Result := True
|
||||
else
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
is_close_token (c: CHARACTER): BOOLEAN
|
||||
-- Characters which close a type
|
||||
do
|
||||
inspect c
|
||||
when token_object_close, token_array_close, token_double_quote then
|
||||
Result := True
|
||||
else
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
is_special_character (c: CHARACTER): BOOLEAN
|
||||
-- Control Characters
|
||||
-- %F Form feed
|
||||
-- %H backslasH
|
||||
-- %N Newline
|
||||
-- %R carriage Return
|
||||
-- %T horizontal Tab
|
||||
-- %B Backspace
|
||||
-- / Solidus
|
||||
-- " Quotation
|
||||
do
|
||||
inspect c
|
||||
when '"', '%H' , '/', '%B', '%F', '%N', '%R', '%T' then -- '%H' = '\' = reverse solidus
|
||||
Result := True
|
||||
else
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
is_special_control (c: CHARACTER): BOOLEAN
|
||||
-- Control Characters
|
||||
-- \b\f\n\r\t
|
||||
do
|
||||
inspect c
|
||||
when 'b', 'f', 'n', 'r', 't' then
|
||||
Result := True
|
||||
else
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
is_exp_token (c: CHARACTER): BOOLEAN
|
||||
-- Is number exposant token?
|
||||
do
|
||||
Result := c = token_exp or else c.as_lower = token_exp
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user