summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJo-Philipp Wich <jo@mein.io>2016-05-24 17:06:50 +0200
committerJo-Philipp Wich <jo@mein.io>2016-05-24 17:08:38 +0200
commit596f31e7c6e59685d1c04e91ea01b5982c044459 (patch)
tree0720fe3b2812cfafc9a2bdd577beefd2e966f886
parent479ca5def5b6bd5c79de488806299064346e2339 (diff)
downloadjsonpath-596f31e7c6e59685d1c04e91ea01b5982c044459.tar.gz
parser: allow root path specifications
All a patch specification to be just '@' or '$' - this is mainly useful when exporting the keys of the toplevel object to the shell. Example: $ echo '{ "abc": 1, "def": 2 }' | jsonpath -e 'keys=@' export keys='abc'\ 'def'; Signed-off-by: Jo-Philipp Wich <jo@mein.io>
-rw-r--r--parser.y2
1 files changed, 2 insertions, 0 deletions
diff --git a/parser.y b/parser.y
index f77779b..f037a69 100644
--- a/parser.y
+++ b/parser.y
@@ -56,6 +56,8 @@ expr(A) ::= path(B). { A = B; }
path(A) ::= T_ROOT segments(B). { A = alloc_op(T_ROOT, 0, NULL, B); }
path(A) ::= T_THIS segments(B). { A = alloc_op(T_THIS, 0, NULL, B); }
+path(A) ::= T_ROOT(B). { A = B; }
+path(A) ::= T_THIS(B). { A = B; }
segments(A) ::= segments(B) segment(C). { A = append_op(B, C); }
segments(A) ::= segment(B). { A = B; }