File: json_parser_outline.txt

package info (click to toggle)
tarantool 1.5.2.20.g5f5d924-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 26,568 kB
  • ctags: 18,697
  • sloc: ansic: 109,092; sh: 21,312; cpp: 20,633; xml: 9,666; asm: 2,488; python: 2,195; java: 1,759; perl: 1,002; makefile: 679
file content (50 lines) | stat: -rw-r--r-- 1,036 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
parser:
	- call parse_value
	- next_token
	? <EOF>		nop.

parse_value:
	- next_token
	? <OBJ_BEGIN>	call parse_object.
	? <ARR_BEGIN>	call parse_array.
	? <STRING>	push. return.
	? <BOOLEAN>	push. return.
	? <NULL>	push. return.
	? <NUMBER>	push. return.

parse_object:
	- push table
	- next_token
	? <STRING>	push.
	- next_token
	? <COLON>	nop.
	- call parse_value
	- set table
	- next_token
	? <OBJ_END>	return.
	? <COMMA>	loop parse_object.

parse_array:
	- push table
	- call parse_value
	- table append
	- next_token
	? <COMMA>	loop parse_array.
	? ]		return.

next_token:
	- check next character
	? {		return <OBJ_BEGIN>
	? }		return <OBJ_END>
	? [		return <ARR_BEGIN>
	? ]		return <ARR_END>
	? ,		return <COMMA>
	? :		return <COLON>
	? [-0-9]	gobble number. return <NUMBER>
	? "		gobble string. return <STRING>
	? [ \t\n]	eat whitespace.
	? n		Check "null". return <NULL> or <UNKNOWN>
	? t		Check "true". return <BOOLEAN> or <UNKNOWN>
	? f		Check "false". return <BOOLEAN> or <UNKNOWN>
	? .		return <UNKNOWN>
	? \0		return <END>