Visualization of parser LSColumns

Lexical analysis

_whitespace /^(\s+)/
string /^("(?:[^"\\]|\\.)*")/
float /^([0-9]+\.[0-9]*)/
integer /^([0-9]+)/
all /^(all|default)(?:[^a-z0-9_][\s\S]*|)$/i
name /^([a-z0-9_]+)/i
op_sub /^(-)/
op_add /^(\+)/
op_mult /^(\*)/
op_div /^(\/)/
comma /^(,)/
dot /^(\.)/
eq /^(=)/
par_l /^(\()/
par_r /^(\))/

Grammar

entry definition = column_list end
column_list_single column_list = column
column_list_multi column_list = column_list comma column
column_all column = all
column_default column = name
column_disable column = op_sub name
column_custom column = custom_name eq expr
_custom_name_name custom_name = name
_custom_name_str custom_name = string
expr_add expr = expr op_add expr2
expr_sub expr = expr op_sub expr2
_expr_1_2 expr = expr2
expr_mult expr2 = expr2 op_mult expr3
expr_div expr2 = expr2 op_div expr3
_expr_2_3 expr2 = expr3
expr_neg expr3 = op_sub expr4
_expr_3_4 expr3 = expr4
expr_var expr4 = var
expr_string expr4 = string
expr_int expr4 = integer
expr_float expr4 = float
_expr_par expr4 = par_l expr par_r
expr_func expr4 = name par_l expr par_r
var_var var = name
var_attr var = var dot name

LR Parser table

State end string float integer all name op_sub op_add op_mult op_div comma dot eq par_l par_r definition column_list column custom_name expr expr2 expr3 expr4 var
0
entry definition = column_list end
column_list_single column_list = column
column_list_multi column_list = column_list comma column
column_all column = all
column_default column = name
column_disable column = op_sub name
column_custom column = custom_name eq expr
_custom_name_name custom_name = name
_custom_name_str custom_name = string
shift
1
shift
51
shift
50
shift
48
goto
53
goto
52
goto
2
1
_custom_name_str custom_name = string  
reduce
_custom_name_str
2
column_custom column = custom_name eq expr
shift
3
3
column_custom column = custom_name eq expr
expr_add expr = expr op_add expr2
expr_sub expr = expr op_sub expr2
_expr_1_2 expr = expr2
expr_mult expr2 = expr2 op_mult expr3
expr_div expr2 = expr2 op_div expr3
_expr_2_3 expr2 = expr3
expr_neg expr3 = op_sub expr4
_expr_3_4 expr3 = expr4
expr_var expr4 = var
expr_string expr4 = string
expr_int expr4 = integer
expr_float expr4 = float
_expr_par expr4 = par_l expr par_r
expr_func expr4 = name par_l expr par_r
var_var var = name
var_attr var = var dot name
shift
9
shift
7
shift
8
shift
4
shift
14
shift
6
goto
47
goto
17
goto
16
goto
13
goto
10
4
expr_func expr4 = name par_l expr par_r
var_var var = name  
reduce
var_var
reduce
var_var
reduce
var_var
reduce
var_var
reduce
var_var
reduce
var_var
reduce
var_var
shift
5
reduce
var_var
5
expr_func expr4 = name par_l expr par_r
expr_add expr = expr op_add expr2
expr_sub expr = expr op_sub expr2
_expr_1_2 expr = expr2
expr_mult expr2 = expr2 op_mult expr3
expr_div expr2 = expr2 op_div expr3
_expr_2_3 expr2 = expr3
expr_neg expr3 = op_sub expr4
_expr_3_4 expr3 = expr4
expr_var expr4 = var
expr_string expr4 = string
expr_int expr4 = integer
expr_float expr4 = float
_expr_par expr4 = par_l expr par_r
expr_func expr4 = name par_l expr par_r
var_var var = name
var_attr var = var dot name
shift
9
shift
7
shift
8
shift
4
shift
14
shift
6
goto
36
goto
17
goto
16
goto
13
goto
10
6
_expr_par expr4 = par_l expr par_r
expr_add expr = expr op_add expr2
expr_sub expr = expr op_sub expr2
_expr_1_2 expr = expr2
expr_mult expr2 = expr2 op_mult expr3
expr_div expr2 = expr2 op_div expr3
_expr_2_3 expr2 = expr3
expr_neg expr3 = op_sub expr4
_expr_3_4 expr3 = expr4
expr_var expr4 = var
expr_string expr4 = string
expr_int expr4 = integer
expr_float expr4 = float
_expr_par expr4 = par_l expr par_r
expr_func expr4 = name par_l expr par_r
var_var var = name
var_attr var = var dot name
shift
9
shift
7
shift
8
shift
4
shift
14
shift
6
goto
22
goto
17
goto
16
goto
13
goto
10
7
expr_float expr4 = float  
reduce
expr_float
reduce
expr_float
reduce
expr_float
reduce
expr_float
reduce
expr_float
reduce
expr_float
reduce
expr_float
8
expr_int expr4 = integer  
reduce
expr_int
reduce
expr_int
reduce
expr_int
reduce
expr_int
reduce
expr_int
reduce
expr_int
reduce
expr_int
9
expr_string expr4 = string  
reduce
expr_string
reduce
expr_string
reduce
expr_string
reduce
expr_string
reduce
expr_string
reduce
expr_string
reduce
expr_string
10
expr_var expr4 = var  
var_attr var = var dot name
reduce
expr_var
reduce
expr_var
reduce
expr_var
reduce
expr_var
reduce
expr_var
reduce
expr_var
shift
11
reduce
expr_var
11
var_attr var = var dot name
shift
12
12
var_attr var = var dot name  
reduce
var_attr
reduce
var_attr
reduce
var_attr
reduce
var_attr
reduce
var_attr
reduce
var_attr
reduce
var_attr
reduce
var_attr
13
_expr_3_4 expr3 = expr4  
reduce
_expr_3_4
reduce
_expr_3_4
reduce
_expr_3_4
reduce
_expr_3_4
reduce
_expr_3_4
reduce
_expr_3_4
reduce
_expr_3_4
14
expr_neg expr3 = op_sub expr4
expr_var expr4 = var
expr_string expr4 = string
expr_int expr4 = integer
expr_float expr4 = float
_expr_par expr4 = par_l expr par_r
expr_func expr4 = name par_l expr par_r
var_var var = name
var_attr var = var dot name
shift
9
shift
7
shift
8
shift
4
shift
6
goto
15
goto
10
15
expr_neg expr3 = op_sub expr4  
reduce
expr_neg
reduce
expr_neg
reduce
expr_neg
reduce
expr_neg
reduce
expr_neg
reduce
expr_neg
reduce
expr_neg
16
_expr_2_3 expr2 = expr3  
reduce
_expr_2_3
reduce
_expr_2_3
reduce
_expr_2_3
reduce
_expr_2_3
reduce
_expr_2_3
reduce
_expr_2_3
reduce
_expr_2_3
17
_expr_1_2 expr = expr2  
expr_mult expr2 = expr2 op_mult expr3
expr_div expr2 = expr2 op_div expr3
reduce
_expr_1_2
reduce
_expr_1_2
reduce
_expr_1_2
shift
20
shift
18
reduce
_expr_1_2
reduce
_expr_1_2
18
expr_div expr2 = expr2 op_div expr3
expr_neg expr3 = op_sub expr4
_expr_3_4 expr3 = expr4
expr_var expr4 = var
expr_string expr4 = string
expr_int expr4 = integer
expr_float expr4 = float
_expr_par expr4 = par_l expr par_r
expr_func expr4 = name par_l expr par_r
var_var var = name
var_attr var = var dot name
shift
9
shift
7
shift
8
shift
4
shift
14
shift
6
goto
19
goto
13
goto
10
19
expr_div expr2 = expr2 op_div expr3  
reduce
expr_div
reduce
expr_div
reduce
expr_div
reduce
expr_div
reduce
expr_div
reduce
expr_div
reduce
expr_div
20
expr_mult expr2 = expr2 op_mult expr3
expr_neg expr3 = op_sub expr4
_expr_3_4 expr3 = expr4
expr_var expr4 = var
expr_string expr4 = string
expr_int expr4 = integer
expr_float expr4 = float
_expr_par expr4 = par_l expr par_r
expr_func expr4 = name par_l expr par_r
var_var var = name
var_attr var = var dot name
shift
9
shift
7
shift
8
shift
4
shift
14
shift
6
goto
21
goto
13
goto
10
21
expr_mult expr2 = expr2 op_mult expr3  
reduce
expr_mult
reduce
expr_mult
reduce
expr_mult
reduce
expr_mult
reduce
expr_mult
reduce
expr_mult
reduce
expr_mult
22
_expr_par expr4 = par_l expr par_r
expr_add expr = expr op_add expr2
expr_sub expr = expr op_sub expr2
shift
23
shift
25
shift
27
23
expr_sub expr = expr op_sub expr2
expr_mult expr2 = expr2 op_mult expr3
expr_div expr2 = expr2 op_div expr3
_expr_2_3 expr2 = expr3
expr_neg expr3 = op_sub expr4
_expr_3_4 expr3 = expr4
expr_var expr4 = var
expr_string expr4 = string
expr_int expr4 = integer
expr_float expr4 = float
_expr_par expr4 = par_l expr par_r
expr_func expr4 = name par_l expr par_r
var_var var = name
var_attr var = var dot name
shift
9
shift
7
shift
8
shift
4
shift
14
shift
6
goto
24
goto
16
goto
13
goto
10
24
expr_sub expr = expr op_sub expr2  
expr_mult expr2 = expr2 op_mult expr3
expr_div expr2 = expr2 op_div expr3
reduce
expr_sub
reduce
expr_sub
reduce
expr_sub
shift
20
shift
18
reduce
expr_sub
reduce
expr_sub
25
expr_add expr = expr op_add expr2
expr_mult expr2 = expr2 op_mult expr3
expr_div expr2 = expr2 op_div expr3
_expr_2_3 expr2 = expr3
expr_neg expr3 = op_sub expr4
_expr_3_4 expr3 = expr4
expr_var expr4 = var
expr_string expr4 = string
expr_int expr4 = integer
expr_float expr4 = float
_expr_par expr4 = par_l expr par_r
expr_func expr4 = name par_l expr par_r
var_var var = name
var_attr var = var dot name
shift
9
shift
7
shift
8
shift
4
shift
14
shift
6
goto
26
goto
16
goto
13
goto
10
26
expr_add expr = expr op_add expr2  
expr_mult expr2 = expr2 op_mult expr3
expr_div expr2 = expr2 op_div expr3
reduce
expr_add
reduce
expr_add
reduce
expr_add
shift
20
shift
18
reduce
expr_add
reduce
expr_add
27
_expr_par expr4 = par_l expr par_r  
reduce
_expr_par
reduce
_expr_par
reduce
_expr_par
reduce
_expr_par
reduce
_expr_par
reduce
_expr_par
reduce
_expr_par
28
expr_float expr4 = float  
reduce
expr_float
reduce
expr_float
reduce
expr_float
reduce
expr_float
reduce
expr_float
reduce
expr_float
reduce
expr_float
29
expr_int expr4 = integer  
reduce
expr_int
reduce
expr_int
reduce
expr_int
reduce
expr_int
reduce
expr_int
reduce
expr_int
reduce
expr_int
30
expr_string expr4 = string  
reduce
expr_string
reduce
expr_string
reduce
expr_string
reduce
expr_string
reduce
expr_string
reduce
expr_string
reduce
expr_string
31
expr_var expr4 = var  
var_attr var = var dot name
reduce
expr_var
reduce
expr_var
reduce
expr_var
reduce
expr_var
reduce
expr_var
reduce
expr_var
shift
11
reduce
expr_var
32
_expr_3_4 expr3 = expr4  
reduce
_expr_3_4
reduce
_expr_3_4
reduce
_expr_3_4
reduce
_expr_3_4
reduce
_expr_3_4
reduce
_expr_3_4
reduce
_expr_3_4
33
expr_neg expr3 = op_sub expr4
expr_var expr4 = var
expr_string expr4 = string
expr_int expr4 = integer
expr_float expr4 = float
_expr_par expr4 = par_l expr par_r
expr_func expr4 = name par_l expr par_r
var_var var = name
var_attr var = var dot name
shift
9
shift
7
shift
8
shift
4
shift
6
goto
15
goto
10
34
_expr_2_3 expr2 = expr3  
reduce
_expr_2_3
reduce
_expr_2_3
reduce
_expr_2_3
reduce
_expr_2_3
reduce
_expr_2_3
reduce
_expr_2_3
reduce
_expr_2_3
35
_expr_1_2 expr = expr2  
expr_mult expr2 = expr2 op_mult expr3
expr_div expr2 = expr2 op_div expr3
reduce
_expr_1_2
reduce
_expr_1_2
reduce
_expr_1_2
shift
20
shift
18
reduce
_expr_1_2
reduce
_expr_1_2
36
expr_func expr4 = name par_l expr par_r
expr_add expr = expr op_add expr2
expr_sub expr = expr op_sub expr2
shift
23
shift
25
shift
37
37
expr_func expr4 = name par_l expr par_r  
reduce
expr_func
reduce
expr_func
reduce
expr_func
reduce
expr_func
reduce
expr_func
reduce
expr_func
reduce
expr_func
38
_expr_par expr4 = par_l expr par_r
expr_add expr = expr op_add expr2
expr_sub expr = expr op_sub expr2
_expr_1_2 expr = expr2
expr_mult expr2 = expr2 op_mult expr3
expr_div expr2 = expr2 op_div expr3
_expr_2_3 expr2 = expr3
expr_neg expr3 = op_sub expr4
_expr_3_4 expr3 = expr4
expr_var expr4 = var
expr_string expr4 = string
expr_int expr4 = integer
expr_float expr4 = float
_expr_par expr4 = par_l expr par_r
expr_func expr4 = name par_l expr par_r
var_var var = name
var_attr var = var dot name
shift
9
shift
7
shift
8
shift
4
shift
14
shift
6
goto
22
goto
17
goto
16
goto
13
goto
10
39
expr_float expr4 = float  
reduce
expr_float
reduce
expr_float
reduce
expr_float
reduce
expr_float
reduce
expr_float
reduce
expr_float
reduce
expr_float
40
expr_int expr4 = integer  
reduce
expr_int
reduce
expr_int
reduce
expr_int
reduce
expr_int
reduce
expr_int
reduce
expr_int
reduce
expr_int
41
expr_string expr4 = string  
reduce
expr_string
reduce
expr_string
reduce
expr_string
reduce
expr_string
reduce
expr_string
reduce
expr_string
reduce
expr_string
42
expr_var expr4 = var  
var_attr var = var dot name
reduce
expr_var
reduce
expr_var
reduce
expr_var
reduce
expr_var
reduce
expr_var
reduce
expr_var
shift
11
reduce
expr_var
43
_expr_3_4 expr3 = expr4  
reduce
_expr_3_4
reduce
_expr_3_4
reduce
_expr_3_4
reduce
_expr_3_4
reduce
_expr_3_4
reduce
_expr_3_4
reduce
_expr_3_4
44
expr_neg expr3 = op_sub expr4
expr_var expr4 = var
expr_string expr4 = string
expr_int expr4 = integer
expr_float expr4 = float
_expr_par expr4 = par_l expr par_r
expr_func expr4 = name par_l expr par_r
var_var var = name
var_attr var = var dot name
shift
9
shift
7
shift
8
shift
4
shift
6
goto
15
goto
10
45
_expr_2_3 expr2 = expr3  
reduce
_expr_2_3
reduce
_expr_2_3
reduce
_expr_2_3
reduce
_expr_2_3
reduce
_expr_2_3
reduce
_expr_2_3
reduce
_expr_2_3
46
_expr_1_2 expr = expr2  
expr_mult expr2 = expr2 op_mult expr3
expr_div expr2 = expr2 op_div expr3
reduce
_expr_1_2
reduce
_expr_1_2
reduce
_expr_1_2
shift
20
shift
18
reduce
_expr_1_2
reduce
_expr_1_2
47
column_custom column = custom_name eq expr  
expr_add expr = expr op_add expr2
expr_sub expr = expr op_sub expr2
reduce
column_custom
shift
23
shift
25
reduce
column_custom
48
column_disable column = op_sub name
shift
49
49
column_disable column = op_sub name  
reduce
column_disable
reduce
column_disable
50
column_default column = name  
_custom_name_name custom_name = name  
reduce
column_default
reduce
column_default
reduce
_custom_name_name
51
column_all column = all  
reduce
column_all
reduce
column_all
52
column_list_single column_list = column  
reduce
column_list_single
reduce
column_list_single
53
entry definition = column_list end
column_list_multi column_list = column_list comma column
accept
shift
54
54
column_list_multi column_list = column_list comma column
column_all column = all
column_default column = name
column_disable column = op_sub name
column_custom column = custom_name eq expr
_custom_name_name custom_name = name
_custom_name_str custom_name = string
shift
1
shift
51
shift
50
shift
48
goto
55
goto
2
55
column_list_multi column_list = column_list comma column  
reduce
column_list_multi
reduce
column_list_multi