| Index: src/parser.h
|
| diff --git a/src/parser.h b/src/parser.h
|
| index 7142551c2200a88215a69405d77d20f84090223f..59e642219c1f9b83e7914575d7ab1e93279d0874 100644
|
| --- a/src/parser.h
|
| +++ b/src/parser.h
|
| @@ -218,7 +218,6 @@ class Parser {
|
| FunctionLiteral* ParseProgram(Handle<String> source,
|
| bool in_global_context);
|
| FunctionLiteral* ParseLazy(Handle<SharedFunctionInfo> info);
|
| - FunctionLiteral* ParseJson(Handle<String> source);
|
|
|
| // The minimum number of contiguous assignment that will
|
| // be treated as an initialization block. Benchmarks show that
|
| @@ -411,29 +410,6 @@ class Parser {
|
| Handle<String> type,
|
| Vector< Handle<Object> > arguments);
|
|
|
| - // JSON is a subset of JavaScript, as specified in, e.g., the ECMAScript 5
|
| - // specification section 15.12.1 (and appendix A.8).
|
| - // The grammar is given section 15.12.1.2 (and appendix A.8.2).
|
| -
|
| - // Parse JSON input as a single JSON value.
|
| - Expression* ParseJson(bool* ok);
|
| -
|
| - // Parse a single JSON value from input (grammar production JSONValue).
|
| - // A JSON value is either a (double-quoted) string literal, a number literal,
|
| - // one of "true", "false", or "null", or an object or array literal.
|
| - Expression* ParseJsonValue(bool* ok);
|
| - // Parse a JSON object literal (grammar production JSONObject).
|
| - // An object literal is a squiggly-braced and comma separated sequence
|
| - // (possibly empty) of key/value pairs, where the key is a JSON string
|
| - // literal, the value is a JSON value, and the two are spearated by a colon.
|
| - // A JavaScript object also allows numbers and identifiers as keys.
|
| - Expression* ParseJsonObject(bool* ok);
|
| - // Parses a JSON array literal (grammar production JSONArray). An array
|
| - // literal is a square-bracketed and comma separated sequence (possibly empty)
|
| - // of JSON values.
|
| - // A JavaScript array allows leaving out values from the sequence.
|
| - Expression* ParseJsonArray(bool* ok);
|
| -
|
| friend class Target;
|
| friend class TargetScope;
|
| friend class LexicalScope;
|
| @@ -472,6 +448,49 @@ class CompileTimeValue: public AllStatic {
|
| };
|
|
|
|
|
| +// JSON is a subset of JavaScript, as specified in, e.g., the ECMAScript 5
|
| +// specification section 15.12.1 (and appendix A.8).
|
| +// The grammar is given section 15.12.1.2 (and appendix A.8.2).
|
| +class JsonParser BASE_EMBEDDED {
|
| + public:
|
| + // Parse JSON input as a single JSON value.
|
| + // Returns null handle and sets exception if parsing failed.
|
| + static Handle<Object> Parse(Handle<String> source) {
|
| + return JsonParser().ParseJson(source);
|
| + }
|
| +
|
| + private:
|
| + JsonParser() { }
|
| + ~JsonParser() { }
|
| +
|
| + // Parse a string containing a single JSON value.
|
| + Handle<Object> ParseJson(Handle<String>);
|
| + // Parse a single JSON value from input (grammar production JSONValue).
|
| + // A JSON value is either a (double-quoted) string literal, a number literal,
|
| + // one of "true", "false", or "null", or an object or array literal.
|
| + Handle<Object> ParseJsonValue();
|
| + // Parse a JSON object literal (grammar production JSONObject).
|
| + // An object literal is a squiggly-braced and comma separated sequence
|
| + // (possibly empty) of key/value pairs, where the key is a JSON string
|
| + // literal, the value is a JSON value, and the two are separated by a colon.
|
| + // A JSON array dosn't allow numbers and identifiers as keys, like a
|
| + // JavaScript array.
|
| + Handle<Object> ParseJsonObject();
|
| + // Parses a JSON array literal (grammar production JSONArray). An array
|
| + // literal is a square-bracketed and comma separated sequence (possibly empty)
|
| + // of JSON values.
|
| + // A JSON array doesn't allow leaving out values from the sequence, nor does
|
| + // it allow a terminal comma, like a JavaScript array does.
|
| + Handle<Object> ParseJsonArray();
|
| +
|
| + // Mark that a parsing error has happened at the current token, and
|
| + // return a null handle. Primarily for readability.
|
| + Handle<Object> ReportUnexpectedToken() { return Handle<Object>::null(); }
|
| + // Converts the currently parsed literal to a JavaScript String.
|
| + Handle<String> GetString();
|
| +
|
| + Scanner scanner_;
|
| +};
|
| } } // namespace v8::internal
|
|
|
| #endif // V8_PARSER_H_
|
|
|