Redian新闻
>
用python写了个SQL formatter
avatar
用python写了个SQL formatter# Programming - 葵花宝典
s*h
1
My brother is running a small business in China. He wants to visit me in the
US. What kind of documents should he provided? Do all material need to be
notarized, such as house property, vehicles ownership, income certificate,
company licensing etc? Or the original should be fine? In particular, what
kind of documents he should provide in relation to his own company?
Sorry, I can't type in Chinese right now. Thank you.
avatar
y*o
2
关于closing cost中,title insurance以及recording fee, survey fee等都是律师一
句话,这个也不能算银行收取的费用。
可是这个在刚开始确定律师的时候,这个费用都是不谈的,
如果律师后来在这几项上收费过高,是不是没有办法了?
有没有什么能够保护自己不受overcharge的办法?
多谢。
avatar
s*l
3
谁能告诉我《致命名单》的林雪为什么找了那么一个丑的一逼女的来演?而且演得也差
劲。导演总不至于那么重口味潜规则她吧。
情节倒还是马马虎虎,虽然其中破绽也是无数。
avatar
m*y
4
发生几率很高
发作起来我完全不碰屏幕,但是好像有一只看不见的手在乱点屏幕~~~~
avatar
T*x
5
把项目里的sourcing query全部format了一遍。自娱自乐。
遇到一个问题:就是它只能format一个语法正确的SQL,语法不正确,或者碰到parser
没有cover的语法,它就停下来了,要手工把这个语法加进parser里去。
那么一般的formatter应该怎么写呢?比如有些editor里面自带的formatter。我感觉
formatter可能比parser还难写。
avatar
I*s
6
导演的亲戚呗
avatar
d*j
7
return it

【在 m*****y 的大作中提到】
: 发生几率很高
: 发作起来我完全不碰屏幕,但是好像有一只看不见的手在乱点屏幕~~~~

avatar
h*i
8
应该是的吧,formatting优化还是个研究课题,parsing是基本解决了的问题。
google的paper
https://storage.googleapis.com/pub-tools-public-publication-data/pdf/44667.
pdf

parser

【在 T*******x 的大作中提到】
: 把项目里的sourcing query全部format了一遍。自娱自乐。
: 遇到一个问题:就是它只能format一个语法正确的SQL,语法不正确,或者碰到parser
: 没有cover的语法,它就停下来了,要手工把这个语法加进parser里去。
: 那么一般的formatter应该怎么写呢?比如有些editor里面自带的formatter。我感觉
: formatter可能比parser还难写。

avatar
x*g
9
那你不看不就完了吗,唧唧歪歪
avatar
T*x
10
谢谢。这个文章不错,有启发。不过这个文章好像也是在语法正确的基础上,研究
formatting优化的。

【在 h*i 的大作中提到】
: 应该是的吧,formatting优化还是个研究课题,parsing是基本解决了的问题。
: google的paper
: https://storage.googleapis.com/pub-tools-public-publication-data/pdf/44667.
: pdf
:
: parser

avatar
l*u
11
不算很丑吧。。。但嗓音倒是有点儿周迅 :)
这应该是低成本剧。据说,大腕男女一号,现在占成本70-80%了。。。

【在 s****l 的大作中提到】
: 谁能告诉我《致命名单》的林雪为什么找了那么一个丑的一逼女的来演?而且演得也差
: 劲。导演总不至于那么重口味潜规则她吧。
: 情节倒还是马马虎虎,虽然其中破绽也是无数。

avatar
j*w
12
我记得有些 parsing 的算法比如递归下降,当语法不正确的时候,可以跳过几个
tokens,继续 parse 余下的文本,或许可以试试?
目前有些基于 LSP 的 SQL 的 language service,可以当用户一边输入一边提供语法
提示,也就是说它可以处理语法不正确的 SQL 语句。比如这个:
https://github.com/joe-re/sql-language-server
纯属猜想,未必正确或有效。
avatar
a*e
13
现在都是投资方说得算,这点事儿只不过洒洒水啦。我现在比较好奇成龙的警察故事为
什么找了那么个女猪脚,按说成龙大哥不差钱啊。

【在 s****l 的大作中提到】
: 谁能告诉我《致命名单》的林雪为什么找了那么一个丑的一逼女的来演?而且演得也差
: 劲。导演总不至于那么重口味潜规则她吧。
: 情节倒还是马马虎虎,虽然其中破绽也是无数。

avatar
d*c
14
曾经想写R的formater,花了不少时间,是很费劲。
一些边角情况,要全都处理就得写一大堆regex,然后就比较慢。
处理comments很麻烦,相比之下编译器就省事了,全忽略。
parser理论多,工具多,formater太多人为的东西,比如人认为好的格式,不同情况,
在代码逻辑上没什么道理你还必须去凑

parser

【在 T*******x 的大作中提到】
: 把项目里的sourcing query全部format了一遍。自娱自乐。
: 遇到一个问题:就是它只能format一个语法正确的SQL,语法不正确,或者碰到parser
: 没有cover的语法,它就停下来了,要手工把这个语法加进parser里去。
: 那么一般的formatter应该怎么写呢?比如有些editor里面自带的formatter。我感觉
: formatter可能比parser还难写。

avatar
I*s
15
非常丑了,很奇葩,怎么还不算很丑?我看了一集就弃le。

【在 l*********u 的大作中提到】
: 不算很丑吧。。。但嗓音倒是有点儿周迅 :)
: 这应该是低成本剧。据说,大腕男女一号,现在占成本70-80%了。。。

avatar
g*t
16
这真不是一个简单的问题。只能头疼治头了。你查查prettier怎么做的。我以前找了个
goog出的java beautifer, 研究了下,没敢用。还是回去用IDE自带的formatter了。
你查查这个的代码。
https://www.emacswiki.org/emacs/SqlBeautify
avatar
l*u
17
还可以吧。。。而且,以前是打排球的。。。

【在 I*****s 的大作中提到】
: 非常丑了,很奇葩,怎么还不算很丑?我看了一集就弃le。
avatar
T*x
18
偏离正确之后,就不知道该怎么容纳不正确的输入了。是适当relax语法规则,还是干
脆抛弃语法规则,按照关键字来处理。这个就不好斟酌了。这个问题可以酝酿一下。谢
谢了。

【在 j*****w 的大作中提到】
: 我记得有些 parsing 的算法比如递归下降,当语法不正确的时候,可以跳过几个
: tokens,继续 parse 余下的文本,或许可以试试?
: 目前有些基于 LSP 的 SQL 的 language service,可以当用户一边输入一边提供语法
: 提示,也就是说它可以处理语法不正确的 SQL 语句。比如这个:
: https://github.com/joe-re/sql-language-server
: 纯属猜想,未必正确或有效。

avatar
a*t
19
这女的演过不少剧啊,别了温哥华走红。。。和姜武配戏
avatar
T*x
20
处理comments是挺麻烦的,sql里有line comment,block comment,我目前就是把
comment前后各加一个换行,比较粗暴,这样不会影响后面一个结构的indent。
R formatter,前面hci给的论文就是R formatter,叫rfmt。
边角情况,不知你指的是合乎语法规则的边角情况,还是不合乎语法规则的边角情况。
当然,合乎语法规则的边角情况好处理。不合乎的就难处理了。
多谢讨论。

【在 d******c 的大作中提到】
: 曾经想写R的formater,花了不少时间,是很费劲。
: 一些边角情况,要全都处理就得写一大堆regex,然后就比较慢。
: 处理comments很麻烦,相比之下编译器就省事了,全忽略。
: parser理论多,工具多,formater太多人为的东西,比如人认为好的格式,不同情况,
: 在代码逻辑上没什么道理你还必须去凑
:
: parser

avatar
I*s
21
不是这个人,这个好像是女主的妈妈吧。

【在 l*********u 的大作中提到】
: 还可以吧。。。而且,以前是打排球的。。。
avatar
T*x
22
谢谢你给的链接。我试了一下,相当好用。他这个可以接纳错误的语法。parser程序挺
短的,似乎是以关键字为导向。
看来这个问题确实挺难,因为要能接受错误的语法,错到什么程度还能叫SQL,这都不
好说了。

【在 g****t 的大作中提到】
: 这真不是一个简单的问题。只能头疼治头了。你查查prettier怎么做的。我以前找了个
: goog出的java beautifer, 研究了下,没敢用。还是回去用IDE自带的formatter了。
: 你查查这个的代码。
: https://www.emacswiki.org/emacs/SqlBeautify

avatar
m*d
23


【在 l*********u 的大作中提到】
: 还可以吧。。。而且,以前是打排球的。。。
avatar
g*t
24
这个问题的难度在于。任意字符串按照Rule来替换。是不可判定的。
但是在实践中。包含语法错误的代码又不是任意字符串。
所以你不知道替换来替换去会不会出问题。
所以策略很重要。
最简单的策略就是代码测试完后。再format。这种最强壮。
假如开发中间,代码被弄乱了。那可能会很麻烦。我以前用过一个python format出过
这个问题。(好像叫做black)


: 谢谢你给的链接。我试了一下,相当好用。他这个可以接纳错误的语法。
parser
程序挺

: 短的,似乎是以关键字为导向。

: 看来这个问题确实挺难,因为要能接受错误的语法,错到什么程度还能叫
SQL,
这都不

: 好说了。



【在 T*******x 的大作中提到】
: 谢谢你给的链接。我试了一下,相当好用。他这个可以接纳错误的语法。parser程序挺
: 短的,似乎是以关键字为导向。
: 看来这个问题确实挺难,因为要能接受错误的语法,错到什么程度还能叫SQL,这都不
: 好说了。

avatar
f*c
25
这个真得好丑阿

【在 m*****d 的大作中提到】

avatar
T*x
26
最近还在搞这个SQL formatter,语法正确的SQL的formatter基本没什么问题了。贴一
段代码,主要是高阶函数用起来太爽了。这是一段parser代码,formatting加进去的方
法,可以在函数定义上加decorator,这是最漂亮的方式,也可以用formatting函数直
接作用在单元函数上,这样比较灵活。
目前在思考如何format语法不一定正确的SQL。有两个思路,一个是用read until的方
法,找关键字,不过不太容易,因为until的terminal不好预估。另一个是relax语法,
但是要抽象出既通用又有意义的单元概念,也不容易。
avatar
P*s
27
看,人家坚持原则没有去整容,你们又嫌人家丑了。

【在 f*c 的大作中提到】
: 这个真得好丑阿
avatar
T*x
28
result_set_expression的代码在后面。每个函数只有一个return statement,也可以
直接写为函数变量,但是那样就必须注意函数定义的顺序了,因为有引用关系。而用
def 定义函数,可以乱序,比较灵活。
avatar
l*u
29
这个是女配角,确实不很漂亮。低成本剧撒,哪里有甄环传那排场,美女如云。

【在 m*****d 的大作中提到】

avatar
g*t
30
这写法似乎出问题比较难debug。跟函数指针一样。测试也不容易。oo的寫法歷史悠久
,有一整套支持體系。據我觀察,高階函數這方面還有待研究和發展。


: result_set_expression的代码在后面。每个函数只有一个return
statement,
也可以

: 直接写为函数变量,但是那样就必须注意函数定义的顺序了,因为有引用
关系。
而用

: def 定义函数,可以乱序,比较灵活。



【在 T*******x 的大作中提到】
: result_set_expression的代码在后面。每个函数只有一个return statement,也可以
: 直接写为函数变量,但是那样就必须注意函数定义的顺序了,因为有引用关系。而用
: def 定义函数,可以乱序,比较灵活。

avatar
s*l
31
我跟你说,五月风贴的这个照片算是她的最好的角度了。剧里面无数的角度看了都让人
觉得丑的让人yw。
情节还算可以,所以还没有弃剧

【在 f*c 的大作中提到】
: 这个真得好丑阿
avatar
I*s
32
就是,穿上tg的衣服更丑了。剧中她妈她爸都长得不错,怎么她就。。。还不如我们办
公室小蜜呢,

【在 s****l 的大作中提到】
: 我跟你说,五月风贴的这个照片算是她的最好的角度了。剧里面无数的角度看了都让人
: 觉得丑的让人yw。
: 情节还算可以,所以还没有弃剧

avatar
d*g
33
最近看了两部谍战片,致命名单和神秘人质,男演员都不错,女演员张得不咋的还弱智
,真是可惜了和她们配戏的男演员。
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。