parser: - call parse_value - next_token ? nop. parse_value: - next_token ? call parse_object. ? call parse_array. ? push. return. ? push. return. ? push. return. ? push. return. parse_object: - push table - next_token ? push. - next_token ? nop. - call parse_value - set table - next_token ? return. ? loop parse_object. parse_array: - push table - call parse_value - table append - next_token ? loop parse_array. ? ] return. next_token: - check next character ? { return ? } return ? [ return ? ] return ? , return ? : return ? [-0-9] gobble number. return ? " gobble string. return ? [ \t\n] eat whitespace. ? n Check "null". return or ? t Check "true". return or ? f Check "false". return or ? . return ? \0 return