@@ -55,14 +55,16 @@ public function applyProductionActions(Production $production): void
5555 ->queryAstBuilder
5656 ->setOutput (
5757 $ symbols [0 ]['s.value_list_id ' ],
58- $ symbols [0 ]['s.is_definite ' ]
58+ $ symbols [0 ]['s.is_definite ' ],
59+ $ symbols [0 ]['s.is_path ' ]
5960 );
6061 break ;
6162
6263 case SymbolType::NT_JSON_PATH . ".0 " :
6364 // [ 0:NT_PATH ]
6465 $ header ['s.value_list_id ' ] = $ symbols [0 ]['s.value_list_id ' ];
6566 $ header ['s.is_definite ' ] = $ symbols [0 ]['s.is_definite ' ];
67+ $ header ['s.is_path ' ] = $ symbols [0 ]['s.is_path ' ];
6668 break ;
6769
6870 case SymbolType::NT_PATH . ".0 " :
@@ -71,6 +73,7 @@ public function applyProductionActions(Production $production): void
7173 // [ 0:T_ROOT_RELATIVE, 1:NT_FILTER_LIST ]
7274 $ header ['s.value_list_id ' ] = $ symbols [1 ]['s.value_list_id ' ];
7375 $ header ['s.is_definite ' ] = $ symbols [1 ]['s.is_definite ' ];
76+ $ header ['s.is_path ' ] = $ symbols [1 ]['s.is_path ' ];
7477 break ;
7578
7679 case SymbolType::NT_DOT_FILTER_NEXT . ".0 " :
@@ -82,12 +85,14 @@ public function applyProductionActions(Production $production): void
8285 $ header ['i.value_list_id ' ]
8386 );
8487 $ header ['s.is_definite ' ] = $ header ['i.is_definite ' ];
88+ $ header ['s.is_path ' ] = false ;
8589 break ;
8690
8791 case SymbolType::NT_DOT_FILTER_NEXT . ".1 " :
8892 // [ 0:NT_FILTER_LIST ]
8993 $ header ['s.value_list_id ' ] = $ symbols [0 ]['s.value_list_id ' ];
9094 $ header ['s.is_definite ' ] = $ symbols [0 ]['s.is_definite ' ];
95+ $ header ['s.is_path ' ] = $ symbols [0 ]['s.is_path ' ];
9196 break ;
9297
9398 case SymbolType::NT_DOT_FILTER . ".0 " :
@@ -96,6 +101,7 @@ public function applyProductionActions(Production $production): void
96101 // [ 0:T_STAR, 1:NT_FILTER_LIST ]
97102 $ header ['s.value_list_id ' ] = $ symbols [1 ]['s.value_list_id ' ];
98103 $ header ['s.is_definite ' ] = $ symbols [1 ]['s.is_definite ' ];
104+ $ header ['s.is_path ' ] = $ symbols [1 ]['s.is_path ' ];
99105 break ;
100106
101107 case SymbolType::NT_DOUBLE_DOT_FILTER . '.0 ' :
@@ -104,18 +110,21 @@ public function applyProductionActions(Production $production): void
104110 // [ 0:T_STAR, 1:NT_FILTER_LIST ]
105111 $ header ['s.value_list_id ' ] = $ symbols [1 ]['s.value_list_id ' ];
106112 $ header ['s.is_definite ' ] = $ symbols [1 ]['s.is_definite ' ];
113+ $ header ['s.is_path ' ] = $ symbols [1 ]['s.is_path ' ];
107114 break ;
108115
109116 case SymbolType::NT_FILTER_LIST . ".0 " :
110117 // [ 0:T_DOT, 1:NT_DOT_FILTER ]
111118 $ header ['s.value_list_id ' ] = $ symbols [1 ]['s.value_list_id ' ];
112119 $ header ['s.is_definite ' ] = $ symbols [1 ]['s.is_definite ' ];
120+ $ header ['s.is_path ' ] = $ symbols [1 ]['s.is_path ' ];
113121 break ;
114122
115123 case SymbolType::NT_FILTER_LIST . ".1 " :
116124 // [ 0:T_DOUBLE_DOT, 1:NT_DOUBLE_DOT_FILTER ]
117125 $ header ['s.value_list_id ' ] = $ symbols [1 ]['s.value_list_id ' ];
118126 $ header ['s.is_definite ' ] = false ;
127+ $ header ['s.is_path ' ] = $ symbols [1 ]['s.is_path ' ];
119128 break ;
120129
121130 case SymbolType::NT_FILTER_LIST . ".2 " :
@@ -128,12 +137,14 @@ public function applyProductionActions(Production $production): void
128137 // ]
129138 $ header ['s.value_list_id ' ] = $ symbols [4 ]['s.value_list_id ' ];
130139 $ header ['s.is_definite ' ] = $ symbols [4 ]['s.is_definite ' ];
140+ $ header ['s.is_path ' ] = $ symbols [4 ]['s.is_path ' ];
131141 break ;
132142
133143 case SymbolType::NT_FILTER_LIST . ".3 " :
134144 // [ ]
135145 $ header ['s.value_list_id ' ] = $ header ['i.value_list_id ' ];
136146 $ header ['s.is_definite ' ] = $ header ['i.is_definite ' ];
147+ $ header ['s.is_path ' ] = $ header ['i.is_path ' ];
137148 break ;
138149
139150 case SymbolType::NT_EXPR_ARG_SCALAR . ".0 " :
@@ -596,12 +607,14 @@ public function applySymbolActions(Production $production, int $symbolIndex): vo
596607 ->queryAstBuilder
597608 ->getInput ();
598609 $ symbols [1 ]['i.is_definite ' ] = $ header ['i.is_definite ' ];
610+ $ symbols [1 ]['i.is_path ' ] = true ;
599611 break ;
600612
601613 case SymbolType::NT_PATH . ".1.1 " :
602614 // [ 0:T_ROOT_RELATIVE, 1:NT_FILTER_LIST ]
603615 $ symbols [1 ]['i.value_list_id ' ] = $ header ['i.value_list_id ' ];
604616 $ symbols [1 ]['i.is_definite ' ] = $ header ['i.is_definite ' ];
617+ $ symbols [1 ]['i.is_path ' ] = true ;
605618 break ;
606619
607620 case SymbolType::NT_BRACKET_FILTER . ".1.0 " :
@@ -879,11 +892,13 @@ public function applySymbolActions(Production $production, int $symbolIndex): vo
879892 // [ 0:T_DOT, 1:NT_DOT_FILTER ]
880893 $ symbols [1 ]['i.value_list_id ' ] = $ header ['i.value_list_id ' ];
881894 $ symbols [1 ]['i.is_definite ' ] = $ header ['i.is_definite ' ];
895+ $ symbols [1 ]['i.is_path ' ] = $ header ['i.is_path ' ];
882896 break ;
883897
884898 case SymbolType::NT_FILTER_LIST . ".1.1 " :
885899 // [ 0:T_DOUBLE_DOT, 1:NT_DOUBLE_DOT_FILTER ]
886900 $ symbols [1 ]['i.value_list_id ' ] = $ header ['i.value_list_id ' ];
901+ $ symbols [1 ]['i.is_path ' ] = $ header ['i.is_path ' ];
887902 break ;
888903
889904 case SymbolType::NT_FILTER_LIST . ".2.2 " :
@@ -908,13 +923,15 @@ public function applySymbolActions(Production $production, int $symbolIndex): vo
908923 // ]
909924 $ symbols [4 ]['i.value_list_id ' ] = $ symbols [2 ]['s.value_list_id ' ];
910925 $ symbols [4 ]['i.is_definite ' ] = $ symbols [2 ]['s.is_definite ' ];
926+ $ symbols [4 ]['i.is_path ' ] = $ header ['i.is_path ' ];
911927 break ;
912928
913929 case SymbolType::NT_DOT_FILTER . ".0.1 " :
914930 // [ 0:T_NAME, 1:NT_DOT_FILTER_NEXT ]
915931 $ symbols [1 ]['i.filter_name ' ] = $ symbols [0 ]['s.text ' ];
916932 $ symbols [1 ]['i.value_list_id ' ] = $ header ['i.value_list_id ' ];
917933 $ symbols [1 ]['i.is_definite ' ] = $ header ['i.is_definite ' ];
934+ $ symbols [1 ]['i.is_path ' ] = $ header ['i.is_path ' ];
918935 break ;
919936
920937 case SymbolType::NT_DOT_FILTER . ".1.1 " :
@@ -926,6 +943,7 @@ public function applySymbolActions(Production $production, int $symbolIndex): vo
926943 $ this ->queryAstBuilder ->matchAnyChild ($ header ['i.value_list_id ' ])
927944 );
928945 $ symbols [1 ]['i.is_definite ' ] = false ;
946+ $ symbols [1 ]['i.is_path ' ] = $ header ['i.is_path ' ];
929947 break ;
930948
931949 case SymbolType::NT_DOT_FILTER_NEXT . ".1.0 " :
@@ -944,6 +962,7 @@ public function applySymbolActions(Production $production, int $symbolIndex): vo
944962 )
945963 );
946964 $ symbols [0 ]['i.is_definite ' ] = $ header ['i.is_definite ' ];
965+ $ symbols [0 ]['i.is_path ' ] = $ header ['i.is_path ' ];
947966 break ;
948967
949968 case SymbolType::NT_DOUBLE_DOT_FILTER . '.0.1 ' :
@@ -962,6 +981,7 @@ public function applySymbolActions(Production $production, int $symbolIndex): vo
962981 )
963982 );
964983 $ symbols [1 ]['i.is_definite ' ] = false ;
984+ $ symbols [1 ]['i.is_path ' ] = $ header ['i.is_path ' ];
965985 break ;
966986
967987 case SymbolType::NT_DOUBLE_DOT_FILTER . '.1.1 ' :
@@ -973,6 +993,7 @@ public function applySymbolActions(Production $production, int $symbolIndex): vo
973993 $ this ->queryAstBuilder ->matchAnyChild ($ header ['i.value_list_id ' ])
974994 );
975995 $ symbols [1 ]['i.is_definite ' ] = false ;
996+ $ symbols [1 ]['i.is_path ' ] = $ header ['i.is_path ' ];
976997 break ;
977998
978999 case SymbolType::NT_STRING . ".0.1 " :
0 commit comments