我正在尝试为jq编写Notepad ++ UDL(用户定义语言),但是我已经达到了我知道如何使用一种特定的jq语言功能的极限。 :-(
jq(很多)的一项不错的功能是它使您可以将jq代码嵌入字符串中的紧凑方式,例如
"Value is \(.value | ascii_upcase)"
现在,我可以轻松地对双引号分隔的字符串进行样式化了...
Open: " Escape: \ Close: "
...然后我可以在中间将方括号内的样式化...
Open: \( Escape: Close: )
...但是我不能让两者一起工作。 :-(
我认为这里的问题是\字符试图服务于两个主服务器,即,一方面,它在“ --- \'---”字符串中充当正常的转义字符,然后另一方面,它与表达式定界符“ --- \(expression)---”一起工作(与左圆括号结合使用)(但仅当嵌套在字符串中时才有意义)。也就是说,我可以将\作为字符串转义符,也可以将\(作为字符串内的表达式定界符,但是我不能同时使用两者。这是正确的吗?
即使我可以解决此问题,也看不到如何在嵌入式表达式的中间处理圆括号对,因为闭合的圆括号会尽早终止嵌入式表达式。也就是说,我看不到如何正确地对其进行样式化...
"Name twice is \((.name + .name) | ascii_upcase)"
...没有破损...
"(I) (like) (brackets)"
(...应具有常规的字符串样式)。有什么建议?还是jq只是一种语言,需要比UDL提供的解析器更复杂的解析器?
或者,如果某个好心的人已经通过为jq生成UDL解决了所有这些问题,请在其中留下带有链接的评论,谢谢! :-)
(PS:StackOverflow尚没有UDL标签。:-()