web code editor 中如何实现简单的语法校验

2020-12-16 12:17:09 +08:00
 cyberpoint

div添加contentEditable属性支持编辑,并且实现了文本高亮。 然后想做些简单的语法判断,比如括号必须成对出现,+号后面不能有 /等等。。 先阶段我用正则校验的,但是效果并不好,像vs code这种是如何做到的。

1177 次点击
所在节点    问与答
5 条回复
codehz
2020-12-16 12:48:54 +08:00
简单的话就整一个 parser,然后把需要的语法考虑进去就好了。。。
比如你这种需求一个简单的状态机就搞定,注意忽略注释和文本里的,然后把左括号放栈里,遇到右括号就弹出来对比一下是否匹配,最后扫描到结尾栈里还有东西就说明漏了。。。
(继续扩展下去就可以做完整的 parser 了
miao1007
2020-12-16 12:53:49 +08:00
monaca editor
cyberpoint
2020-12-16 13:40:23 +08:00
@codehz 看来还是要把关键符号放在栈里,才好计算。我现在是每一次都对所有做正则匹配,确实有些麻烦了。
cyberpoint
2020-12-16 13:41:51 +08:00
@miao1007 这个我知道,没有去看源码,想知道一下大家的实现思路。
codehz
2020-12-16 14:39:42 +08:00
正常的正则表达式都无法处理这种递归的结构,.NET 的蜜汁正则倒是可以(

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

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

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

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

© 2021 V2EX