Add general ? operator
This commit is contained in:
1 parent
7fce34292e
commit
7d3a44a1e2
3 files changed
+22
No files matched your search
@@ -1584,6 +1584,16 @@ sections:
|
|||||||
input: 'true'
|
input: 'true'
|
||||||
output: ['"some exception"']
|
output: ['"some exception"']
|
||||||
|
|
||||||
|
- title: `?` operator
|
||||||
|
body: |
|
||||||
|
|
||||||
|
The `?` operator, used as `EXP?`, is shorthand for `try EXP`.
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- program: '[.[]|(.a)?]'
|
||||||
|
input: '[{}, true, {"a":1}'
|
||||||
|
output: ['[null, 1]']
|
||||||
|
|
||||||
- title: Advanced features
|
- title: Advanced features
|
||||||
body: |
|
body: |
|
||||||
Variables are an absolute necessity in most programming languages, but
|
Variables are an absolute necessity in most programming languages, but
|
||||||
|
|||||||
@@ -255,6 +255,10 @@ Term "as" '$' IDENT '|' Exp {
|
|||||||
$$ = $2;
|
$$ = $2;
|
||||||
} |
|
} |
|
||||||
|
|
||||||
|
Exp '?' {
|
||||||
|
$$ = gen_try($1, gen_op_simple(BACKTRACK));
|
||||||
|
} |
|
||||||
|
|
||||||
|
|
||||||
Exp '=' Exp {
|
Exp '=' Exp {
|
||||||
$$ = gen_call("_assign", BLOCK(gen_lambda($1), gen_lambda($3)));
|
$$ = gen_call("_assign", BLOCK(gen_lambda($1), gen_lambda($3)));
|
||||||
|
|||||||
@@ -670,6 +670,14 @@ def inc(x): x |= .+1; inc(.[].a)
|
|||||||
[0,1,2,3]
|
[0,1,2,3]
|
||||||
["foo","Cannot index number with string \"a\"",3]
|
["foo","Cannot index number with string \"a\"",3]
|
||||||
|
|
||||||
|
[.[]|(.a, .a)?]
|
||||||
|
[null,true,{"a":1}]
|
||||||
|
[null,null,1,1]
|
||||||
|
|
||||||
|
[[.[]|[.a,.a]]?]
|
||||||
|
[null,true,{"a":1}]
|
||||||
|
[]
|
||||||
|
|
||||||
# string operations
|
# string operations
|
||||||
[.[]|startswith("foo")]
|
[.[]|startswith("foo")]
|
||||||
["fo", "foo", "barfoo", "foobar", "barfoob"]
|
["fo", "foo", "barfoo", "foobar", "barfoob"]
|
||||||
|
|||||||
Reference in new issue
Block a user