/tmp/duangsuse.sock
汉字数值最特殊的地方在于有 十一 和 七百亿 这种,哈哈
我不打算写汉字数值的,但打算写普通
汉字的有一个特点,它的前置单位要递归,才支持 七百亿 这种
普通的没什么困难,就是累加和 max cmpLT、div/mod 好了
1min2s 这种的汉字的有一个特点,它的前置单位要递归,才支持 七百亿 这种
普通的没什么困难,就是累加和 max cmpLT、div/mod 好了
以 ANTLR 的威力,其实 EOF 问题也只是不存在罢了
但 ParserKt 可以解析数值的序列、Token 的序列,ANTLR 不能
而且那样 EOF 字符便不能合法存在了
我知道仅仅不允许 EOF 字符的说法很可笑,但 ParserKt 是泛型框架
但 ParserKt 可以解析数值的序列、Token 的序列,ANTLR 不能
而且那样 EOF 字符便不能合法存在了
我知道仅仅不允许 EOF 字符的说法很可笑,但 ParserKt 是泛型框架
/tmp/duangsuse.sock
我不打算写汉字数值的,但打算写普通 1min2s 这种的 汉字的有一个特点,它的前置单位要递归,才支持 七百亿 这种 普通的没什么困难,就是累加和 max cmpLT、div/mod 好了
写不了,整 StickyEOF 和 EOF Char 的问题已经心力交瘁,晚安
/tmp/duangsuse.sock
写不了,整 StickyEOF 和 EOF Char 的问题已经心力交瘁,晚安
StickyEnd(nlChar or item(EOF), notParsed) { clamWhile(!nlChar, Line.Unknown, "unknown line") } 总算是解决了,ParserKt 走向实践之重大隐患
Deleted Account
sealed class Sexp { data class Term(val name: String): Sexp(); data class Nest(val list: List<Sexp>): Sexp() } lateinit var sexp: Pattern<Char, Sexp> val str = Until(elementIn(' ', *parens.items()), asString(), anyChar) val atom = Convert(str) { Sexp.Term(it)…
sealed class Sexp { data class Term(val name: String): Sexp(); data class Nest(val list: List<Sexp>): Sexp() }
lateinit var sexp: Pattern<Char, Sexp>
val str = Until(elementIn(' ', '(', ')'), asString(), anyChar)
val atom = Convert(str) { Sexp.Term(it) }
val nestItems = SurroundBy(parens.map(String::first).toPat(), JoinBy(item(' '), Deferred{sexp}).mergeConstantJoin())
val nest = Convert(nestItems) { Sexp.Nest(it) }
sexp = Decide(nest, atom).mergeFirst { if (it is Sexp.Term) 0 else 1 }Forwarded from Deleted Account
我也重复了一下
个人建议:下次
-
- 切忌把 Kotlin IO 写回 Haskell 式 IO,一旦发现代码太“空”,要及时调整,
-
个人建议:下次
-
iter.joinToString("") { "$it" } 这类可读性不高的还是用 iter.joinToString("", Char::toString) 代替好了,尤其是 dollar string 不能滥用。- 切忌把 Kotlin IO 写回 Haskell 式 IO,一旦发现代码太“空”,要及时调整,
let 什么的是用来提升可读性的,不要用它降低代码密集度。-
n, p 这样的名字可以说是 meaningless…… n 叫 accumulator 吧。尤其是那个 p,怎么能叫 p 呢……Gist
CustomBaseNumberKt
CustomBaseNumberKt. GitHub Gist: instantly share code, notes, and snippets.
Forwarded from Yuuta 🎀 | clrd enroute
Telegram
みつき そはら | 薄餅 | 中國加油 in #archlinux-cn-offtopic
大金毛和小橘猫
https://github.com/mattbierner/bennu
哈,这个人非常的大佬,可是尽管 bennu Parser Combinator 很 Haskell,但远不如 ParserKt 工程,而且 ParserKt 实现了它的绝大部分常用功能。
哈,这个人非常的大佬,可是尽管 bennu Parser Combinator 很 Haskell,但远不如 ParserKt 工程,而且 ParserKt 实现了它的绝大部分常用功能。
GitHub
GitHub - mattbierner/bennu: Javascript Parser Combinator Library
Javascript Parser Combinator Library. Contribute to mattbierner/bennu development by creating an account on GitHub.
var op = oneOf '><+-.,';
var other = many <| noneOf "><+-.,[]"; // Brainfuck ignores any other characters
var block = (body) => between(character '[', character ']', body);
var program := rec\self -> // allows referencing `program` in parse definition.
next(other, // consume non BF chars at start,
eager <| sepEndBy(other, // and between instructions and ending program
either(op,
block(self) ))); 这 Haskell 系编程就有一个特点,它偏向艺术,喜欢弄一些数学上优雅但又没啥实际作用的小技巧。
ParserKt 里这还容易写明白一些
sealed class BF {
data class Op(val id: Char): BF()
data class Blk(val body: List<BF>): BF()
}
val control = elementIn('>', '<', '+', '-', '.', ',', ']')
val controlBF = Convert(control, { BF.Op(it) }, { it.id })
lateinit var program: Pattern<Char, List<BF>>
val block = SurroundBy(item('[') to item(']').clam("] !!!"), Deferred {program})
val blockBF = Convert(block, { BF.Blk(it) }, { it.body })
val ws = Repeat(asString(), !control).Many()
program = Convert(Seq(::AnyTuple, ws,
JoinBy(ws, Decide(blockBF, controlBF).mergeFirst { if (it is BF.Op) 0 else 1 }).mergeConstantJoin(""),
ws)) { it.getAs<List<BF>>(1) }
/tmp/duangsuse.sock
🤔 我又考虑了下绝句的语言特性 语言层次:常量(literal)、言元(atom expression)、言(expression)、句(statement)、段(block)、构(item)、书(file) 面向对象构件:常(const val)、变(var)、量(val) 取者(getter) 置者(setter)、事(fun)、造于(constructor) 初(init)、例(object)、物(class) 伴生例(companion object)、类(interface) 特化物:扩物、内物(inner…
改天得拿这个把 那个文档 更新下
Share
绝句程序设计语言
🐕 duangsuse’s shared files(e.g. productive software projects, documents)
Forwarded from Rachel 碎碎念 (IFTTT)
有感而发。
完全垄断市场。
可以设想,微信将不再是一个应用启动器,不是一个可安装系统,更不是一个纯粹的 IM ,它将成为一个人的实际人权。
每个人的出生就是一个新微信号的建立。微信号与这个人绑定,跟随这个人一生。此后微信再也不需要手机号,因为你的全部生物数据就是你微信号的唯一标志。(1/3) https://t.co/6mbLOnr6jZ— Rachel Mirai. (@tangrui003) February 13, 2020
完全垄断市场。
可以设想,微信将不再是一个应用启动器,不是一个可安装系统,更不是一个纯粹的 IM ,它将成为一个人的实际人权。
每个人的出生就是一个新微信号的建立。微信号与这个人绑定,跟随这个人一生。此后微信再也不需要手机号,因为你的全部生物数据就是你微信号的唯一标志。(1/3) https://t.co/6mbLOnr6jZ— Rachel Mirai. (@tangrui003) February 13, 2020
Twitter
是萝莉控
搞了这一出以后,必须重新审视一下腾讯的垄断行为。 腾讯从垄断人的嘴,转变成垄断人的数字生活,最后升级成垄断人的一生。一个萎信号被封了,就相当于人权被剥夺。
Forwarded from Rachel 碎碎念 (IFTTT)
没有绑定微信号的人不配进出公共场所,不配获得计划福利,甚至不配存在于官方的人口数据库。当你从微信上消失,你就不再是一个合法公民,就没有人来维护你的权利,而这种对自由的追求,就会使你成为可任意霸凌的对象。
Cyberpunk WeChat.
(2/3)— Rachel Mirai. (@tangrui003) February 13, 2020
Cyberpunk WeChat.
(2/3)— Rachel Mirai. (@tangrui003) February 13, 2020
Twitter
Rachel Mirai.
没有绑定微信号的人不配进出公共场所,不配获得计划福利,甚至不配存在于官方的人口数据库。当你从微信上消失,你就不再是一个合法公民,就没有人来维护你的权利,而这种对自由的追求,就会使你成为可任意霸凌的对象。 Cyberpunk WeChat. (2/3)
Forwarded from Rachel 碎碎念 (IFTTT)
微信已经从一个 IM ,彻底变成了一代中国人的生活方式。它从未拥有完善的 IM 功能,从未拥有完整的团队协作,甚至根本没有打算做完整的桌面端。它在从原来简单纯粹的联系工具转变为一款国民应用的过程中,越来越不思进取。
但用微信打理生活的做法却被越来越多的人奉为圭臬。
(3/3)— Rachel Mirai. (@tangrui003) February 13, 2020
但用微信打理生活的做法却被越来越多的人奉为圭臬。
(3/3)— Rachel Mirai. (@tangrui003) February 13, 2020
Twitter
Rachel Mirai.
微信已经从一个 IM ,彻底变成了一代中国人的生活方式。它从未拥有完善的 IM 功能,从未拥有完整的团队协作,甚至根本没有打算做完整的桌面端。它在从原来简单纯粹的联系工具转变为一款国民应用的过程中,越来越不思进取。 但用微信打理生活的做法却被越来越多的人奉为圭臬。 (3/3)
/tmp/duangsuse.sock
#China #Low #life #tencent #WeChat
而且微信自古以来对”别人“的技术用的都比较多