用 vimscript 写了一个 json parser

2015-11-25 10:27:43 +08:00
 bramblex
https://github.com/bramblex/BlxVimrc/blob/master/utils/json.vimrc

就是 vim 里面的函数栈太浅了……手动递归下降不靠谱 TnT
3257 次点击
所在节点    Vim
28 条回复
jswh
2015-11-25 10:33:00 +08:00
如果玩玩那就算了。如果是有实际用途的建议看看 neovim ,然后用 python 写
jings
2015-11-25 10:39:22 +08:00
前排
jings
2015-11-25 10:39:42 +08:00
钱排
bramblex
2015-11-25 11:01:45 +08:00
@jswh

Neo 早就在用了。我对我的 vimscript 还有信心,我自己造了 vimscript 语言层面上的模块加载机制,而且我就是自己玩……
bramblex
2015-11-25 11:01:56 +08:00
@jings ……什么鬼
cnallenzhao
2015-11-25 11:11:49 +08:00
前排好顶赞
Changxu
2015-11-25 11:13:07 +08:00
所以还得用 LR 文法自底向上处理啊。。。就是手写难度有点大
bramblex
2015-11-25 11:16:03 +08:00
@Changxu

LL 就够了,没有左递归

" Json := Object
" | List
" | String
" | Number
" | Boolean
" | Null
"
" Object := '{' KeyValueList '}' | '{' '}'
" KeyValueList := KeyValue | KeyValue ',' KeyValueList
" KeyValue := String ':' Json
"
" List := '[' ListBody ']' | '[' ']'
" ListBody := Json | Json ',' ListBody
bramblex
2015-11-25 11:16:42 +08:00
@cnallenzhao /w\ hi~
bramblex
2015-11-25 11:20:12 +08:00
@Changxu 手写 LR 确实蛋疼,但是可以手写 PDA ,然后把 LR 转 PDA 再转代代码就靠谱了。
ChiChou
2015-11-25 15:01:41 +08:00
乔帮主 = ,=
bramblex
2015-11-25 15:19:52 +08:00
@ChiChou 😂😂😂
Changxu
2015-11-25 17:20:14 +08:00
@bramblex 这只是个 Vim 脚本、何必呢
bramblex
2015-11-25 18:22:49 +08:00
@Changxu

VimScript 作为一个完备且还算能用的高级语言……这跟我拿 js / python / c++写有什么区别吗?都是设计好自动机,写好文法,然后填代码……
wittyfox
2015-11-25 18:25:41 +08:00
赞赞赞, jj
Changxu
2015-11-25 18:27:52 +08:00
@bramblex 你也可以尝试 Bash 脚本啊,以前就有人用 Bash 写 SVM 。

不过我觉得这就是当做消遣了,毕竟 VimScript 离开 Vim 也不能用啊
xcodebuild
2015-11-25 18:27:53 +08:00
丧心病狂
bramblex
2015-11-25 18:30:59 +08:00
@Changxu

Bash 太丧心病狂了😂😂😂……

虽然我也拿 bash 写过一些蛋疼东西……
bramblex
2015-11-25 18:32:13 +08:00
@Changxu
嘛,反正也是消遣嘛。真正生产用的谁会闲着蛋疼自己手撸……
Changxu
2015-11-25 18:33:12 +08:00
@bramblex 是啊、看得出来 LZ 你比较无聊。。。不是本科生就是研究僧。。。八成单身?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/238723

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX