这个问题与实施语言无关。
在最近的一次采访中,我被要求编写一个JSON解析器: 我得到的输入如下所示:
{
'key1': 'value1',
'key2': [key21, key22]
}
听起来很简单,因为我不知道如何编写解析器而感到难过(顺便说一句,我知道JSON.parse()方法)。
问题是编写自己的解析器。
上述JSON的格式不正确并不重要。如果不是,解析应该抛出错误。
有人能指出我可以用来解决这个问题的技巧。
答案 0 :(得分:4)
基本上,您首先必须逐个字符地扫描字符串,以便将其分隔为令牌。
{
和}
是令牌。我们称他们为'START_OBJECT'和'END_OBJECT'; [
和]
也是令牌。我们称他们为'START_ARRAY'和'END_ARRAY'; :
和,
也是令牌。我们称他们为'COLON'和'COMMA'; 'key1'
,'key2'
和'value1'
是'STRING_CONSTANT'标记,其值是字符串本身; key21
和key22
是IDENTIFIER
个令牌,其值为'key21'和'key22'解析过程的初始部分,即将源代码分解为标记,称为“词法分析”,是解析过程的第一步。
下一步是'语法分析',你可以从标记序列中找出源的实际结构。