ParserKt 我觉得它可以考虑下,是不是要允许有一个
StatedFeed…… 我注意到 检查闭括号的程序的错误提示,好像需要开括号的位置……Forwarded from Deleted Account
整个项目到现在维护了十几天才弄完,最近一次修改是 3days ago
项目的核心算法是 file tree walker 和 regex punctuation(标点) split / replace 以及 Map (k-v) pair ops,和基础的 read/write/parse。
最重要的是,尽管这个目的 不很复杂 且代码的复用性(我没太严格)还算可以,但项目居然有 107 commits 1,417,608 ++ 1,409,848 --,这就有点匪夷所思了…… 莫不是一开始把 node_modules 提交了上去
我昨天晚上还花了点时间用 ParserKt 的 TriePattern 复制了核心业务功能——文本替换,用的不是标点分词而是 Trie 树,效果与之差不多
项目的核心算法是 file tree walker 和 regex punctuation(标点) split / replace 以及 Map (k-v) pair ops,和基础的 read/write/parse。
最重要的是,尽管这个目的 不很复杂 且代码的复用性(我没太严格)还算可以,但项目居然有 107 commits 1,417,608 ++ 1,409,848 --,这就有点匪夷所思了…… 莫不是一开始把 node_modules 提交了上去
我昨天晚上还花了点时间用 ParserKt 的 TriePattern 复制了核心业务功能——文本替换,用的不是标点分词而是 Trie 树,效果与之差不多
Forwarded from Deleted Account
其实我一直很犹豫 应不应该靠近『中文编程组织』的这些人,因为他们大部分人都(说真话)太菜了,而且 我没特别看到什么大佬。
更没见过真正有实用价值的”中文编程语言“,文言(wenyan)和东北语(dongbei) 都不在实际上有工程能力,它们写出的代码不仅不能算 general-puropse,更缺乏可读性、可维护性。
更没见过真正有实用价值的”中文编程语言“,文言(wenyan)和东北语(dongbei) 都不在实际上有工程能力,它们写出的代码不仅不能算 general-puropse,更缺乏可读性、可维护性。
Forwarded from Deleted Account
他们和 @iseki_w 也不一样,iseki 虽然总体上好像比较菜,偶尔也是能研究的。
感觉这些人呢,虽然一直有在努力,可几乎从未进步过,甚至好像是因此才希望有中文编程来帮助他们”重整旗鼓“,不得不考虑。
感觉这些人呢,虽然一直有在努力,可几乎从未进步过,甚至好像是因此才希望有中文编程来帮助他们”重整旗鼓“,不得不考虑。
Forwarded from Deleted Account
https://github.com/duangsuse-valid-projects/Share/blob/master/Others/kt_misc/pkt_9/Parser.kt#L1293
@iseki_w 我用来处理缩进布局的算法概念上没有问题了,但还没测试 🤔
不过我注意到现在的情况好像有点缺陷,它不能解析
@iseki_w 我用来处理缩进布局的算法概念上没有问题了,但还没测试 🤔
不过我注意到现在的情况好像有点缺陷,它不能解析
class Dog(name: String) where这种情况,因为
val somePropDef = 1
fun speak(): String where
return "$name speaking"
LayoutPattern<IN, T, L> 还没支持根据 item, tail 动态决定 children 采用的 pattern…… 🤔GitHub
duangsuse-valid-projects/Share
🐕 duangsuse's shared files(e.g. productive software projects, documents) - duangsuse-valid-projects/Share
Forwarded from Deleted Account
找到了两个 bug,但原因在确定
>>> p.read("12334\n1234\n122->\n 1->\n 22\n2\n3\n0\n")
res29: Deep<kotlin.Int, kotlin.String>? = Root(nodes=[Term(item=12334), Term(item=1234), Nest(item=122, tail=->, children=[Nest(item=1, tail=->, children=[Term(item=22)]), Term(item=2)]), Term(item=3), Term(item=0)])
>>> p.read("12334\n1234\n122->\n 1\n 2\n 3\n0\n")
res18: Deep<kotlin.Int, kotlin.String>? = Root(nodes=[Term(item=12334), Term(item=1234), Nest(item=122, tail=->, children=[Term(item=1)])])Forwarded from Deleted Account
@iseki_w 是的,支持 layout 的解析和(调试性)复显了(毕竟正经的语言肯定会重写这类代码,我没保留 layout 本身的解析结果)。
Forwarded from Deleted Account
有很大把握可以在明天完成对 contextual LayoutPattern 的支持以及对 ParserKt 最后的检查,这样绝句的实现从 Layout 到 Infix 动态解析到汉字数值终于扫清了所有障碍,终于可以松口气了。
Forwarded from Deleted Account
val item = RepeatUn(asInt(), digitFor('0'..'9')) { i -> i.toString().map { it - '0' } }
val tail = Seq(::CharTuple, item('-'),item('>')).toStringPat()
val layout = Convert(Repeat(asString(), item(' ')).Many() prefix item('\n'), { it.length }, { "".padStart(it) })
val p = LayoutPattern(item, tail, layout)
就是这四行代码定义的布局解析器,现在我重构后已经支持 依据 item 和 tail 确定新布局里的解析项目了,但还没测试。 /** [Pattern.show] for resulting pattern should be general, since [show] does not use this function */
protected open fun decideLayerItem(parsed: T, parsedTail: L): Pattern<IN, T> = item在我看来,ParserKt 的 LayoutPattern 和 传统方法 最大的差别就是
- PKT 的是 scannerless parsing,lexer-parser 的话那不是最后一层操作(各有优缺)
- Lexer 用数据栈、PKT 用系统栈(个人 profile,用系统栈貌似块那么几ms)
- PKT 没有利用 state,而把 state 建立在递归用栈里(当然它其实也是完全支持 contextual parsing 的)
- PKT 依赖 Deep { Root, Nest, Term } 这种递归数据结构存储解析结果,要再次转化为 AST 必须使用 Deep.Visitor(缺点)
- PKT 的 LayoutPattern 支持 rebuild,对调试很方便
- PKT 的 decideLayerItem; item, tail, layout 都是抽象的,而且 onNestIndent、onTermIndent 也都可重写。代码复用性很高(优点)
- PKT 的是 scannerless parsing,lexer-parser 的话那不是最后一层操作(各有优缺)
- Lexer 用数据栈、PKT 用系统栈(个人 profile,用系统栈貌似块那么几ms)
- PKT 没有利用 state,而把 state 建立在递归用栈里(当然它其实也是完全支持 contextual parsing 的)
- PKT 依赖 Deep { Root, Nest, Term } 这种递归数据结构存储解析结果,要再次转化为 AST 必须使用 Deep.Visitor(缺点)
- PKT 的 LayoutPattern 支持 rebuild,对调试很方便
- PKT 的 decideLayerItem; item, tail, layout 都是抽象的,而且 onNestIndent、onTermIndent 也都可重写。代码复用性很高(优点)
Forwarded from Deleted Account
@CodeHz 大佬,冰封之前也写过 lexer 层面把布局解析为内部 END token 的做法,你觉得我们这两个实现有啥优缺点呢 ~ 请dalao分析……