duangsues.is_a? SaltedFish
#daily 见到了一些非常简单的逻辑,但是居然算法就无法立刻想出来... 比如三个并排 LED 的『进度』提示 while true all_lights on sleep k light_r off sleep k light_c off sleep k light_l off sleep k continue 然后这个循环可以包装一下,成为 Coroutine 或者 Thread 模式的... 和 MDWiki 的 未读提示 routine update…
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from dnaugsuz
LLVM 做得也挺多的...
JIT 编译是很耗时的,虽然词法分析和语法分析之前都做了,bitcode 到机器代码要经过大得吓人的工序,数十个 Pass... 分析 Pass 和优化 Pass 都比较花时间
循环优化和启发式余赘指令合并、各种图操作、寄存器选择大概都是比较花时间的吧
AOT 就基本不用再多花时间做这些了
PassManager 要加载一大堆不是完全无关的 Pass,这些 Pass 还要初始化...JIT 编译是很耗时的,虽然词法分析和语法分析之前都做了,bitcode 到机器代码要经过大得吓人的工序,数十个 Pass... 分析 Pass 和优化 Pass 都比较花时间
循环优化和启发式余赘指令合并、各种图操作、寄存器选择大概都是比较花时间的吧
AOT 就基本不用再多花时间做这些了
LineTerminator = \r|\n|\r\n
InputCharacter = [^\r\n]
TraditionalComment = "/*" [^*] ~"*/" | "/*" "*"+ "*/"
EndOfLineComment = "//" {InputCharacter}* {LineTerminator}?
Comment = {TraditionalComment} | {EndOfLineComment}
%x YYINITIAL
%s STRING CHAR
%%
<YYINITIAL> {
{Comment} { }
\" { yybegin(STRING); }
\' { yybegin(CHAR); }
}
<STRING>("\"") { yybegin(YYINITIAL); printf("\""); }
<CHAR>("\'") { yybegin(YYINITIAL); printf("'"); }
<<EOF>> {}
%%
int main(int argc, const char *argv[]) {
if (argc > 1)
yyin = fopen(argv[1], "r");
else
yyin = stdin;
yylex();
return 0;
}
#include <stdio.h>
#include <stdlib.h>
static int lex(const char *YYCURSOR, const char *YYLIMIT) {
const char *YYMARKER;
/*!re2c
re2c:define:YYCTYPE = char;
re2c:define:YYFILL:naked = 1;
re2c:define:YYFILL = "return 0;";
end = "\x00";
bin = '0b' [01]+;
oct = "0" [0-7]*;
dec = [1-9][0-9]*;
hex = '0x' [0-9a-fA-F]+;
* { printf("a"); }
bin end { printf("a"); }
oct end { printf("a"); }
dec end { printf("a"); }
hex end { printf("a"); }
*/
return -1;
}
int main(int argc, const char *argv[]) {
if (argc > 1) {
FILE *lexf = fopen(argv[1], "rb");
if (lexf == NULL) { perror("Cannot open file"); exit(-1); };
fseek(lexf, 0, SEEK_END);
const size_t fsize = (size_t) ftell(lexf);
fseek(lexf, 0, SEEK_SET);
char *buffer = (char*) malloc(fsize);
fread(buffer, 1, fsize, lexf);
int result = lex(buffer, buffer + fsize);
free(buffer);
fclose(lexf);
return result;
} else {
fprintf(stderr, "Streaming is not supported\n");
}
}
如果可能的话,我愿意尝试 Kotlin/Multiplatform 来解决这两个,不过对 JS 来说其实 Kt 里必须写的东西其实不必要,比如数值类型自动提升、Number 对象操作等
ApkBundler 是我打算彻底独立于 GeekApk 和 GitApk 的作品,设计上会恢复之前 GeekApk 早期的大部分设计、包括依赖系统
我不知道我打不打算真正把它当一个 “商业项目” 运作,当然即使商业也只是商业标准,个人兴趣还是主打(
(当然,如果是商业项目的话,首先必须等我高中毕业了,其次,它得符合天朝变态的审查制度,但它明显会成为最良心的国产软件,而且像极了以前的酷安
(当然,我不会“借鉴”现在的酷安,它只会面向发烧友,至少是我运行的时候
(当然,我保存了之前所有真正有价值的设计文档,所以基本不会丢失好的设计,包括 PM(私信)也会加上
(当然,之前我貌似在 @dsuse 上发过一些要加的东西
ApkBundler Scheme 可能是,大家都知道很多极具扩展性的、著名的、Geek 的软件都拥有自己的脚本语言来扩展自己的功能(比如,Emacs/Emacs Lisp、Vim/VimScript)
ApkBundler 的 Android 客户端和 Web 客户端当然会支持 Java Class 文件插件和 JavaScript 插件,但是主打依然是 ABS(ApkBundler Scheme) 和 Kotlin/ES5 混合开发
ApkBundler Scheme
UpValue 由于 JVM 已有 GC 且闭包不需如此实现不需要使用
tailrec heredoc constarg-folding string-templating
exception square brackets call-by-need
BreakLexer
lex-features comment break binop(right left all) keyword
current(frame)
stack
.gotofast1
.gotofast2
.stop
.yield
.wait
.goto
.value
tailrec
.
varargs apend eval pure noreturn noarg onearg twoarg
org.apkbundler.scheme
text/
Lexer
BreakLexer
(SubSequence)Parser
HeapParser
Token
TokenType
TokenStream
SexpStream
Combinator
type/
Symbol
Reference
Chunk
Closure
Sexp
SexpList
SexpAtom
AbsStack
AbsFrame
port/
ListImpl
HashImpl
StringImpl
StringBuilderImpl
ReflectImpl
error/
Error
LexerError
ParserError
ReferenceError
TypeError
ArgumentError
Errno
ReflectError
ControlFlowTransfer
front/
Main
SchemeDebugger
SchemeServer
SchemeRepl
utils/
Coroutine
SchemeThread
Future
AbsClassLoader
(https://gitapk.popf.rip/OSS-Mirrors/BeanShell/src/branch/merge-fork-beanshell2/src/main/java/bsh/classpath/BshClassLoader.java)AbsClassPath
(https://gitapk.popf.rip/OSS-Mirrors/BeanShell/src/branch/merge-fork-beanshell2/src/main/java/bsh/classpath/BshClassPath.java)AbsClassManager
(https://gitapk.popf.rip/OSS-Mirrors/BeanShell/src/branch/merge-fork-beanshell2/src/main/java/bsh/classpath/ClassManagerImpl.java)AutoCloseable
SchemeJava
NumericOperations
AbsTyper
Stdlib
Scheme
基本数据类型
nil
list
chunk / closure
ref
array
pair
vector
map
enum
promise
fiber
date
行注释
p.s. 冰封波博客上那个字符串 escape 失败不报错作为标识符的真是奇妙
展开规则:
对任何宏:检查参数列表长度,对所有参数 sexp 列表递归展开并对标识符解引用,然后填充宏参数递归展开,如果是 varargs 宏就直接将求值后的列表填充到 varargs 参数里
对
对
插件:
1. 取值 hook
2. 找不到变量 proc
3. SEND handler
4. 错误 hook
作用域:
全局变量
全局变量
不过它是惰性求值的
Lime 使用嵌套作用域
全局变量
"Lime 的「六个展开」"
1.
否则,尝试全局的
这所谓「六个展开」其实可以归纳为三类
1. 宏展开
Lime 基于宏和自省功能来实现类似 Scheme 的语法,宏最终被展开为原生调用执行
Apply(施用宏)过程中,S 表达式首项必须是一个能被解析为宏的对象
而其后皆为宏的参数,如果参数长度不对,抛出 Arity Mismatch,除非是 vararg 宏
2. 原生调用
Lime 使用原生调用赋予拥有反射能力的 JVM 方便执行动态动作的能力
handlerid 其后皆为宏的参数,如果参数长度不对,抛出 Arity Mismatch,除非是 vararg 接收器
3. 无展开
不进行展开,直接返回原对象
ApkBundler 是我打算彻底独立于 GeekApk 和 GitApk 的作品,设计上会恢复之前 GeekApk 早期的大部分设计、包括依赖系统
我不知道我打不打算真正把它当一个 “商业项目” 运作,当然即使商业也只是商业标准,个人兴趣还是主打(
(当然,如果是商业项目的话,首先必须等我高中毕业了,其次,它得符合天朝变态的审查制度,但它明显会成为最良心的国产软件,而且像极了以前的酷安
(当然,我不会“借鉴”现在的酷安,它只会面向发烧友,至少是我运行的时候
(当然,我保存了之前所有真正有价值的设计文档,所以基本不会丢失好的设计,包括 PM(私信)也会加上
(当然,之前我貌似在 @dsuse 上发过一些要加的东西
ApkBundler Scheme 可能是,大家都知道很多极具扩展性的、著名的、Geek 的软件都拥有自己的脚本语言来扩展自己的功能(比如,Emacs/Emacs Lisp、Vim/VimScript)
ApkBundler 的 Android 客户端和 Web 客户端当然会支持 Java Class 文件插件和 JavaScript 插件,但是主打依然是 ABS(ApkBundler Scheme) 和 Kotlin/ES5 混合开发
ApkBundler Scheme
UpValue 由于 JVM 已有 GC 且闭包不需如此实现不需要使用
tailrec heredoc constarg-folding string-templating
exception square brackets call-by-need
BreakLexer
lex-features comment break binop(right left all) keyword
current(frame)
stack
.gotofast1
.gotofast2
.stop
.yield
.wait
.goto
.value
tailrec
.
varargs apend eval pure noreturn noarg onearg twoarg
string $templating
string $(.value 'templating)
'(string 's)org.apkbundler.scheme
text/
Lexer
BreakLexer
(SubSequence)Parser
HeapParser
Token
TokenType
TokenStream
SexpStream
Combinator
type/
Symbol
Reference
Chunk
Closure
Sexp
SexpList
SexpAtom
AbsStack
AbsFrame
port/
ListImpl
HashImpl
StringImpl
StringBuilderImpl
ReflectImpl
error/
Error
LexerError
ParserError
ReferenceError
TypeError
ArgumentError
Errno
ReflectError
ControlFlowTransfer
front/
Main
SchemeDebugger
SchemeServer
SchemeRepl
utils/
Coroutine
SchemeThread
Future
AbsClassLoader
(https://gitapk.popf.rip/OSS-Mirrors/BeanShell/src/branch/merge-fork-beanshell2/src/main/java/bsh/classpath/BshClassLoader.java)AbsClassPath
(https://gitapk.popf.rip/OSS-Mirrors/BeanShell/src/branch/merge-fork-beanshell2/src/main/java/bsh/classpath/BshClassPath.java)AbsClassManager
(https://gitapk.popf.rip/OSS-Mirrors/BeanShell/src/branch/merge-fork-beanshell2/src/main/java/bsh/classpath/ClassManagerImpl.java)AutoCloseable
SchemeJava
NumericOperations
AbsTyper
Stdlib
Scheme
基本数据类型
nil
()
bool #t #f
number 01 0x1 0b1001 0o122 2323N 32323D 2233.223F 66666L 6B
支持 Java 的 Byte Short Int Long Double BigInteger BigDecimal 类型list
(a b c)
string '' "" "\"" "\n" 'string
symbol dsdsd abc identifier
char 'c'
高等数据类型chunk / closure
ref
array
pair
vector
map
enum
promise
fiber
date
行注释
; comment
任何不可识别的都作为标识符p.s. 冰封波博客上那个字符串 escape 失败不报错作为标识符的真是奇妙
展开规则:
对任何宏:检查参数列表长度,对所有参数 sexp 列表递归展开并对标识符解引用,然后填充宏参数递归展开,如果是 varargs 宏就直接将求值后的列表填充到 varargs 参数里
对
^* 宏:检查参数列表长度,然后填充宏参数递归展开,如果是 varargs 宏就直接将求值后的列表填充到 varargs 参数里对
. 宏:检查对应 send handler 参数列表长度,将所有参数 sexp 列表递归展开并对标识符解引用,发送调用到处理 handler插件:
1. 取值 hook
2. 找不到变量 proc
3. SEND handler
4. 错误 hook
作用域:
全局变量
args 在每次递归展开时有效,它是惰性求值的全局变量
__stack 储存了所有作用域表不过它是惰性求值的
Lime 使用嵌套作用域
全局变量
__env 表示整个 Lime 全局表__lime 表示解释器对象"Lime 的「六个展开」"
1.
(symbol arglist)
2. (. handlerid arglist)
3. ((macro sexp) arglist)
4. ()
5. (macro-value arglist)
6. object
额外展开:^# 定义特殊的宏对象,它接受后面所有 S 表达式(1 args) 如果对象拥有 Macro toMacro() 方法,尝试使用 toMacro() 返回的宏否则,尝试全局的
(->macro 1) 返回的宏,如果没有定义直接失败,如果返回的不是宏也失败这所谓「六个展开」其实可以归纳为三类
1. 宏展开
Lime 基于宏和自省功能来实现类似 Scheme 的语法,宏最终被展开为原生调用执行
(symbol arglist)
((macro sexp) arglist)
(macro-value arglist)
(object arglist)「宏解析」允许解析「符号」、S 表达式列表、宏对象、可以转换为宏的对象
Apply(施用宏)过程中,S 表达式首项必须是一个能被解析为宏的对象
而其后皆为宏的参数,如果参数长度不对,抛出 Arity Mismatch,除非是 vararg 宏
2. 原生调用
Lime 使用原生调用赋予拥有反射能力的 JVM 方便执行动态动作的能力
(. handlerid arglist)
Lime 必须有一个手段把宏变为实际行动,这就是 Lime 如此做的途径,“原生”调用handlerid 其后皆为宏的参数,如果参数长度不对,抛出 Arity Mismatch,除非是 vararg 接收器
3. 无展开
不进行展开,直接返回原对象
()
object
Lime 不知道该如何展开这些对象,一般它认为这些对象已经被展开,所以直接返回他们GitApk: Android apps with a cup of tea
BeanShell
Beanshell scripting language
(显然地,我不会刻意抄 Lice 的模式... 比如将 S 表达式作为 AST 处理并且给 Token 加上过多的调试信息(元数据)
不过我要理解它,并刻意把优秀的实践添加上,当然我现在还是很菜,所以连手写计算器可能都不会,接下来怎么办看学习了
不过我要理解它,并刻意把优秀的实践添加上,当然我现在还是很菜,所以连手写计算器可能都不会,接下来怎么办看学习了
Lice 模式实现检查:
Strict syntax
Lisp-style comments
Variables
Basic functions
Compare
Literals
Casts
Functional Programming
Functions are first-class ✅
Call by value ✅
Call by name 可以使用前置宏实现
Call-by-name 宏打算实现
Call by need 可以使用宏前置和本地引用型参数实现
Call by need 宏打算支持
Strict syntax
Lisp-style comments
Variables
Basic functions
Compare
Literals
Casts
Functional Programming
Functions are first-class ✅
(# (a b) (+ a b))Call by value ✅
((# (a b) (+ a b)) 1 2) ; 3Call by name 可以使用前置宏实现
Call-by-name 宏打算实现
Call by need 可以使用宏前置和本地引用型参数实现
Call by need 宏打算支持
新语言就被称为 sexp
打算支持手动尾递归优化、Heredoc 文本、纯函数的折叠、字符串内联代码、异常系统(和解释器内部堆栈)、方括号、动态自定义语法(类似 R6RS 的特定字符序列自动结合,当然用 Trie 树实现比较)
支持 call-by-value(称为 direct)、call-by-name(称为 evaluated)、call-by-need(称为 lazy)
类似 R6RS 的 ' 语法
允许控制流异常
允许
允许
允许使用
函数叫做 Closure,支持 vararg(不定参) append(前置展开) eval(求值时自动展开) lazy(求值时自动展开一次,以后都使用第一次的值) pure(纯函数) noreturn(不会返回)
noarg(无参数) onearg(一个参数) twoarg(两个参数) threearg(三个参数) inline(强制内联) internal(代表内部原生展开器) void(无需返回) noexcept(不会抛出异常) nobind(不是闭包)
optimized(识别方法体所代表的操作,编译时虚拟机江创建优化指令,例如 add)
当然大部分都是没卵用的 flag(
Closure 还可以保存执行状态,可以作为 Fiber 随时挂起和恢复执行
sexp/
text/
Lexer
Parser
Token
Metadata
TokenType
ICharStream
ITokenStream
ISexpStream
type/
Symbol
Reference
Chunk
Binding
Closure
Pair
model/
Sexp
SexpList
SexpAtom
virtual/
SexpVM
Instruction
Compiler
Stack
Frame
port/
ListImpl
HashImpl
StringImpl
StringBufferImpl
ReflectImpl
ArrayImpl
VectorImpl
RealImpl
ComplexImpl
except/
LexError
ParseError
ReferenceError
TypeError
ArgumentError
ReflectError
ControlFlowException
front/
Main
SexpRepl
SexpServer
utils/
Promise
ClassHelper
JavaFFI
NumberOp
Stdlib
api/scripting/
SexpContext
ScriptEngine
EngineFactory
Sexp
执行模式和以前无异,不过这次更不 Functional 了一些(迫真),也不使用作用域优化,只是默认一般没人使用作用域,都是使用 apply
作用域还是函数调用作用域
还是支持 Locals、Globals 取值赋值 Hook、找不到变量 Hook、Send 操作 Hook、异常 Hook、公开作用域列表(也即调用帧)
1.
1. nil
4. list
打算支持手动尾递归优化、Heredoc 文本、纯函数的折叠、字符串内联代码、异常系统(和解释器内部堆栈)、方括号、动态自定义语法(类似 R6RS 的特定字符序列自动结合,当然用 Trie 树实现比较)
支持 call-by-value(称为 direct)、call-by-name(称为 evaluated)、call-by-need(称为 lazy)
类似 R6RS 的 ' 语法
允许控制流异常
.goback 和 .gonext 步进到语句允许
.stop 终止解释和 .yield 立刻执行权交回上层栈帧允许
.value 直接返回值和 tailrec 直接替换调用堆栈的函数调用允许使用
. 调用原生 Handler函数叫做 Closure,支持 vararg(不定参) append(前置展开) eval(求值时自动展开) lazy(求值时自动展开一次,以后都使用第一次的值) pure(纯函数) noreturn(不会返回)
noarg(无参数) onearg(一个参数) twoarg(两个参数) threearg(三个参数) inline(强制内联) internal(代表内部原生展开器) void(无需返回) noexcept(不会抛出异常) nobind(不是闭包)
optimized(识别方法体所代表的操作,编译时虚拟机江创建优化指令,例如 add)
当然大部分都是没卵用的 flag(
Closure 还可以保存执行状态,可以作为 Fiber 随时挂起和恢复执行
sexp/
text/
Lexer
Parser
Token
Metadata
TokenType
ICharStream
ITokenStream
ISexpStream
type/
Symbol
Reference
Chunk
Binding
Closure
Pair
model/
Sexp
SexpList
SexpAtom
virtual/
SexpVM
Instruction
Compiler
Stack
Frame
port/
ListImpl
HashImpl
StringImpl
StringBufferImpl
ReflectImpl
ArrayImpl
VectorImpl
RealImpl
ComplexImpl
except/
LexError
ParseError
ReferenceError
TypeError
ArgumentError
ReflectError
ControlFlowException
front/
Main
SexpRepl
SexpServer
utils/
Promise
ClassHelper
JavaFFI
NumberOp
Stdlib
api/scripting/
SexpContext
ScriptEngine
EngineFactory
Sexp
执行模式和以前无异,不过这次更不 Functional 了一些(迫真),也不使用作用域优化,只是默认一般没人使用作用域,都是使用 apply
作用域还是函数调用作用域
还是支持 Locals、Globals 取值赋值 Hook、找不到变量 Hook、Send 操作 Hook、异常 Hook、公开作用域列表(也即调用帧)
1.
(. handlerid arglist)
2. (symbol arglist)
3. (macro-value arglist)
4. ((macro sexp) arglist)
5. ()
6. object
7. .stop .yield
8. (.value obj)
9. (.goback) (.gonext)
10. (tailrec macro-repr args)
原生字面还是支持1. nil
()
2. bool #t #f
3. number 01 0x1 0b1001 0o122 2323N 32323D 2233.223F 66666L 6B
支持 Java 的 Byte Short Int Long Double BigInteger BigDecimal 类型4. list
(a b c)
5. string '' "" "\"" "\n" 'string
6. symbol dsdsd abc identifier
7. char 'c'
duangsues.is_a? SaltedFish
新语言就被称为 sexp 打算支持手动尾递归优化、Heredoc 文本、纯函数的折叠、字符串内联代码、异常系统(和解释器内部堆栈)、方括号、动态自定义语法(类似 R6RS 的特定字符序列自动结合,当然用 Trie 树实现比较) 支持 call-by-value(称为 direct)、call-by-name(称为 evaluated)、call-by-need(称为 lazy) 类似 R6RS 的 ' 语法 允许控制流异常 .goback 和 .gonext 步进到语句 允许 .stop 终止解释和…
接下来是分开的额外定义文档,包括文本语法、异常处理、执行流程、流程控制、内部函数、虚拟机流程、自动类型转换提升、闭包实现
R6RS 实现文档上有写的第三种实现方式比较有趣,但是友协无法参考,比如作用域优化中使用 box... 这里是没有必要的,因为它支持本地调用
准备定义一套新的字节码和执行方式
准备定义一套新的字节码和执行方式
因为有些优化是应该理解的,所以在实现前我要先翻译好 https://www.biwascheme.org/doc/internal/opecodes.html 这个...
补一个不想让人看的,毕竟现实骨感,打算拿 PHP 写一个类似 ApkBundler 的,设计类似 ApkBundler,不过小一些,包含 web 前端
暂时叫做 ApkBin,经典的 PHP Laravel + RDBMS + RESTFul 架构
而那个暂时代替 ABS 的解释器叫做 Sexp
并且这次是以抄酷安为主收集 GeekApk 的扩展特性为辅(就是说新概念不实现,简单的添加 Sexp 插件系统),而且提供安装包托管服务
补一个不想让人看的,毕竟现实骨感,打算拿 PHP 写一个类似 ApkBundler 的,设计类似 ApkBundler,不过小一些,包含 web 前端
暂时叫做 ApkBin,经典的 PHP Laravel + RDBMS + RESTFul 架构
而那个暂时代替 ABS 的解释器叫做 Sexp
并且这次是以抄酷安为主收集 GeekApk 的扩展特性为辅(就是说新概念不实现,简单的添加 Sexp 插件系统),而且提供安装包托管服务
解释一下什么是 HeapParser:
之前 Lime 的 Parser 是一个递归下降法解析器,伪代码看来就是(而且,那时候 Parsing 和 Lexer 不是同时进行的):
(所以,当时的非流模式还要给递归 parser 取子序列,麻烦很多,现在不需要了)
假设你写了一个分词器,它只会产生数字词条序列,而你也正确的定义了
优点是效果好、理论上能解析嵌套更深的表达式,缺点是因为堆分配太多可能增加 GC 压力
这个看不懂就算了,太长也懒得看..
之前 Lime 的 Parser 是一个递归下降法解析器,伪代码看来就是(而且,那时候 Parsing 和 Lexer 不是同时进行的):
(所以,当时的非流模式还要给递归 parser 取子序列,麻烦很多,现在不需要了)
def parse()乍一看的确不容易理解,因为递归一般比循环更加困难,我们来举例分析
sexp = []
while (tok = token()) != EOS
if tok.type == LPAREN
sexp << parse()
elseif tok.type == RPAREN
return sexp
sexp << objectize(tok)
return sexp
假设你写了一个分词器,它只会产生数字词条序列,而你也正确的定义了
objectize() 将数值字面解析为数字对象(1 323 3444 (23333 (1) () 666.666) (((1))))一个复杂的 S 表达式。
result = parse()最后的结果是
sexp = []
while (tok = token()) != EOS # Token is LPAREN (
sexp << parse() # recursive call self
sexp = []
while (tok = token()) != EOS
# tok = 1
sexp << objectize(tok) # [1]
sexp << objectize(tok) # [1 323]
sexp << objectize(tok) # [1 323 3444]
sexp << parse() # [1 323 3444 [23333 [1] [] 666.666]]
sexp << parse() # [1 323 3444 [23333 [1] [] 666.666] [[[1]]]]
... frame ommited ..
[[1 323 3444 [23333 [1] [] 666.666] [[[1]]]]]
而 HeapParser 则使用堆上的链表模拟这个解析栈,它完全不需要递归,所以被称为 HeapParser优点是效果好、理论上能解析嵌套更深的表达式,缺点是因为堆分配太多可能增加 GC 压力
这个看不懂就算了,太长也懒得看..
def heapParse()
emultedStack = []
while (tok = token()) != EOS
if tok.type == LPAREN
emulatedStack << []
elseif tok.type == RPAREN
emulatedStack[emulatedStack.lastIndex - 1] << emulatedStack.pop()
emulatedStack[emulatedStack.lastIndex] << objectize(tok)
return emultedStack
然后写完那篇 IL 文章后我打算结合 ABS 的设计再手写
+ Ruby 版本的解释器
+ Java 版本的解释器
+ Rust no_std 版本的解释器
+ Ruby 版本的解释器
+ Java 版本的解释器
+ Rust no_std 版本的解释器
duangsues.is_a? SaltedFish
解释一下什么是 HeapParser: 之前 Lime 的 Parser 是一个递归下降法解析器,伪代码看来就是(而且,那时候 Parsing 和 Lexer 不是同时进行的): (所以,当时的非流模式还要给递归 parser 取子序列,麻烦很多,现在不需要了) def parse() sexp = [] while (tok = token()) != EOS if tok.type == LPAREN sexp << parse() elseif tok.type…
当然不是没有区别的
普通的递归下降法解析器 把
HeapParser 则解析成
这样的话,就没法直接写
普通的递归下降法解析器 把
(() ()) 解析为 [[[] []]]HeapParser 则解析成
[[] []]这样的话,就没法直接写
1 2 3 这种,顶层必须是 S 表达式,但也符合真实还是支持 Locals、Globals 取值赋值 Hook、找不到变量 Hook、Send 操作 Hook、异常 Hook、公开作用域列表(也即调用帧)
『相逢有时,后会无期』 #life
这句话是在某本感情类小说《云养汉》里看到的
主角的好朋友 AI 曾经说过这句话,最后因为他们隐瞒她是 AI 的事实,她离开了他们,不知道何时才会回来
"音容宛在 永别难忘"
我只记得前面一个词了,后面一个是我上网补的
十月六日晚 12:30 左右,我妈 47 岁,她得上慢性肾功能衰竭 6 年了,开始持续血液透析治疗的第 5 年,陪伴着我的第 17 年(马上)
她突然停止了呼吸,或者说是心跳,这是她请的护工发现的,当时护工在上厕所,出来发现不对劲后就去找护士、打电话通知家属,可能,那时她还在睡眠中,但她知道自己的病情,已经时日无多了
然后抢救持续了大概 30 分钟,其实根本没有多做抢救,或许是发现时已经晚了(但我相信护工的确是尽可能的完成自己的工作了),或许她之前和医生沟通好了吧,我之前听她在腿很难受时跟朋友说如果受不就不要抢救了
真是好巧啊,我姥姥(或者外婆,但现在不是争啥普通话不普通话的问题了)也是和她一样,至少是看着一样死的,她曾经腿难受的时候经常说,妈把我带走吧,别人说了我才想起来,可能都要我相信灵魂的存在了
据说不安腿(一种慢性肾衰的并发症),在体内环境磷比较高时,她很怕有一天瘫痪在床不能动了,最后果然算是不能动,太疼了,但现在已经不存在这些问题了
我最后一次去看她的时候,还在欺骗自己说“和几天前一样嘛”,甚至无视上次 ECG(心电图)ST1 已经达到了可怕的
国庆前周她还好一点的时候,这大多是
我也不知道是什么时候去看的数值了,反正是第三次,一个早晨吧,是
那天上午,到抢救室找她,第一次没找到,床位铺好了,我以为她可能已经离我而去,然后默默在一楼座椅上想杂事,后来她回来了
我把暖贴给她,她不要,我扶着她躺下的时候,她说不用,后来我在那里逗留了一段时间,她说:“回去吧。” “好,我回去。”,然后我抱了她一下就回去了,我想她那时已经做好了准备,而我虽然也知道,但我肯定不愿意承认,我愿意承认的是她好起来一些了,但其实只是回光返照。
很杂很杂的事情,只是因为是最后一次见她,所以即使很普通也写出来,希望大家能理解。
我以为她「终于要熬过这一关了吗」,但就是那个晚上,没过多久,我爸就接到了通知电话,
后来他叫我来一下医院,即使是这时候,我想我还是没有完全接受这一切
如果说机器学习是学习人类整理统计数据的技能,那少量数据人类统计应该更有效,更准确
我们的直觉很准确,至少是我的,我从回家看到她已经和当年姥姥一样挂上氧气瓶,国庆这七天里每天我都去看她,应该说我对她的病情很清楚,她自己也很清楚,其实在那次的两三个星期,刚刚得上感冒时(当时是我打的送她去了医院),已经立下了口头遗嘱,那次她出院,可以自己站起来走路,她说想去北京做能让她重新回复正常的甲状旁腺切除手术,大家考虑到她的身体都不让去。后来她想我陪着去散步,可惜下雨了就没散成。下一次她还可以扶着我自己煮稀饭,喝半碗稀饭。再下一次国庆放假了,举国欢庆的时候却成了她的忌日,还好是最后一天
本来说好了 11 过了就去,或许就是新生,或许就可以多陪我几年,谁知道...
或者不如说早就应该有心理准备吧,她身体也是一会好一会坏的。她自己也想多陪我几年,我也 17 了,不需要她陪着了,虽然离别很痛苦,但我即使得到推迟她去见达尔文几天的机会,也不会使用的,如果当时不是要上学了,或许我还真希望有这一次机会,能再.... 再再再再 最后一次去看看还有意识的她,虽然我知道即使已经有几乎半个月的预警,大家还是会说时间过得太快,如果那一次不够,那多加几次怎么会足够呢?是我太强求妄想了。
我不想说如果,如果她当初没感冒... 如果她那时不出院而是继续疗养... 如果... 不存在如果。
我小时候被她(强迫)(可惜啊)写作业的时候玩手机忙中偷闲,被发现也会想,如果那时... 不存在如果。没有如果。“人生每一天都是现场直播”
如果... 如果... 听起来好像韩寒吐槽过那个“唉!如果那个球没打偏不就进了吗?”
“如果她那时少吹点空调,我们多给她买点不同厚度的被子,不就不会这样了吗?”
是啊,有什么意义呢,看起来就是个笑话,可我真的想说这个笑话,因为不这样我真的不知如何表达。
可当时我想的是,或许只是她想看我一下,没有什么大问题,即使我有一种不祥的预感,我相信我不管发生什么都能承受
抄袭某个小学语文书的课文啊,爸爸的花儿落了,不过我这也是真的
所以当我准备快速登上楼梯去六楼的肾内科时,那两套寿衣的主人,我想我已经知道了,我和送寿衣的人同时到六楼,那时候我什么感觉都没有。
比喻一下吧,就好像是去确认一下已经预测好故事的结局,不是听到噩耗,而是去确认一下大家都知道将要发生的事情
当时已经有亲戚来了,我居然表现得非常看得开,还去安慰那些亲戚,有些了解的人都在想本来应该不是今晚的... 医生都觉得还有几天,可是对我来说多几天又怎么样,就是让我在学校里、或者是回家后,知道最后那个已经确定的结局,反而更残酷,更令我难受,国庆第一天去医院争取最后的希望,到最后一天彻底失去希望,已经给了我足够的时间去接受这个事实 — 以后或许不会有人给我送饭了、以后不会有人和要我陪着一起散步了、以后没有人在我熬夜的时候端水过来提醒我注意身体了,晚上睡觉也不会被痛苦的叫声吵到了、也不会成天担心她猝死了(因为已经猝死了嘛,虽然是有计划的猝死)、也没有人会做好吃而且好看的饭菜给我了、没有人和我「你打我一下我打你一下」玩了、也没有人要我陪着看《布衣小童》了,第一医院 6 楼再也没有什么事情要去做了,只剩下回忆...
这七天我只记得她说过的两句话
第一次是入院第二天她去透析时,她说让我买套好看的衣服穿,不要攀比影响学习。我不知道她那时是否还觉得自己仍有希望
第二次是最后一天,她让我不要担心,让我离开,我不知道她真的想说什么,但我相信她明白,我回来的那个晚上说的“都好”“不要担心”是什么意思,我当时或许真的是认为一切都不会回来了,后来真的证明我是正确的,正确的感觉真好。
恐怕大家都是这么认为的吧,最后都不会好转起来,因为有太多不祥的先兆了,高级血液透析几乎无效,输血也收效甚微,饭几乎一口都吃不进,她离开的那天已经跟护工说了,自己时日不长,最后我终于还是承认了灵堂上那三个大字,是我妈的名字,也就是说我妈死了,我这个死妈玩意。
后来的事情自然就比较流水模板化了,我觉得做得不错,殡葬场的环境很好,相信如果人真的能有灵魂,当然我是不相信的,她会觉得那颗不知名的植物很好看,渐变色的花朵,像是往生树一样,当然我认为也是没有往生的
我一直是不相信迷信的,我只相信科学
我能接受,她过几天将被火化,最终大部分重新成为生态环境的一部分,小部分成为骨灰留下来给我们留念,当然也可能成为生态环境的一部分
或许就是应该这样,不知为何而生,然后释然仆死,来源于环境中,最后依然回到环境中,重新变成一部分,虽然可能不太一样,也是一种存在,死去的人没有消失,只是换一种方式来陪伴你
我当然无法理解死后是什么样的感觉,但应该没有感觉,我在一段“烧”(请允许我这里用直白的口气)了后以后有没有可能回来的思考里,最终选择了人脑不过是普通按照一定工作方式工作的机器而已,没有什么特殊的「意识子」啊,「感觉」都是大脑伪造给你的,既然有能力做这些物理上也不是没有可能,所谓主观又能有多主观呢?
安息了,最后化为异物,这对我来说可能很残酷,但我决定接受它而不是优先接受灵魂说。
或许,以后我会像
这本来就是大自然的规律,生老病死,人类已经很幸运了,或许现在的科技不应该再强求更多。
小到人类个体,大到人类种群、再大到生物圈、太阳系、整个宇宙,都最终向一个一反常态的方向发展,有热力学定律作保在一定环境下这是正确的,没人能逃过死亡,而你不需要考虑死后的事情,死后你可能会被当成植物的食物或者拿去构筑更多结构,但你不再是人类了,但这也很适合你,不是吗?本来材料就是找自然界借来的。
很可惜,不是所有东西都是可逆的,如果说人可以用量子 hashcode 表示,那就没有两个完全相同的人,很难,完全复活??? 不存在的,至少一万年。但那是我作为她儿子的视角看,如果死者是我,我不会考虑这些。
只是它不会再记得我们以前一起经历的事情、不会记得她对我的爱和我对她的爱、永远不会再有第二次,于我来说这很可惜、很伤感,失去方知拥有的珍贵,对她来说或许有点恐惧,但是或许更多的是放松
附上童话诗
这句话是在某本感情类小说《云养汉》里看到的
主角的好朋友 AI 曾经说过这句话,最后因为他们隐瞒她是 AI 的事实,她离开了他们,不知道何时才会回来
"音容宛在 永别难忘"
我只记得前面一个词了,后面一个是我上网补的
十月六日晚 12:30 左右,我妈 47 岁,她得上慢性肾功能衰竭 6 年了,开始持续血液透析治疗的第 5 年,陪伴着我的第 17 年(马上)
她突然停止了呼吸,或者说是心跳,这是她请的护工发现的,当时护工在上厕所,出来发现不对劲后就去找护士、打电话通知家属,可能,那时她还在睡眠中,但她知道自己的病情,已经时日无多了
然后抢救持续了大概 30 分钟,其实根本没有多做抢救,或许是发现时已经晚了(但我相信护工的确是尽可能的完成自己的工作了),或许她之前和医生沟通好了吧,我之前听她在腿很难受时跟朋友说如果受不就不要抢救了
真是好巧啊,我姥姥(或者外婆,但现在不是争啥普通话不普通话的问题了)也是和她一样,至少是看着一样死的,她曾经腿难受的时候经常说,妈把我带走吧,别人说了我才想起来,可能都要我相信灵魂的存在了
据说不安腿(一种慢性肾衰的并发症),在体内环境磷比较高时,她很怕有一天瘫痪在床不能动了,最后果然算是不能动,太疼了,但现在已经不存在这些问题了
我最后一次去看她的时候,还在欺骗自己说“和几天前一样嘛”,甚至无视上次 ECG(心电图)ST1 已经达到了可怕的
-0.76(正常人都是约等于 0)国庆前周她还好一点的时候,这大多是
-0.21
后来国庆一天下午我去看,是 -0.25 多我也不知道是什么时候去看的数值了,反正是第三次,一个早晨吧,是
-0.35
我看到她好像精神好一点后(当时因为她已经拔了心电监视,我没能知道那时 ST1 是多少)那天上午,到抢救室找她,第一次没找到,床位铺好了,我以为她可能已经离我而去,然后默默在一楼座椅上想杂事,后来她回来了
我把暖贴给她,她不要,我扶着她躺下的时候,她说不用,后来我在那里逗留了一段时间,她说:“回去吧。” “好,我回去。”,然后我抱了她一下就回去了,我想她那时已经做好了准备,而我虽然也知道,但我肯定不愿意承认,我愿意承认的是她好起来一些了,但其实只是回光返照。
很杂很杂的事情,只是因为是最后一次见她,所以即使很普通也写出来,希望大家能理解。
我以为她「终于要熬过这一关了吗」,但就是那个晚上,没过多久,我爸就接到了通知电话,
后来他叫我来一下医院,即使是这时候,我想我还是没有完全接受这一切
如果说机器学习是学习人类整理统计数据的技能,那少量数据人类统计应该更有效,更准确
我们的直觉很准确,至少是我的,我从回家看到她已经和当年姥姥一样挂上氧气瓶,国庆这七天里每天我都去看她,应该说我对她的病情很清楚,她自己也很清楚,其实在那次的两三个星期,刚刚得上感冒时(当时是我打的送她去了医院),已经立下了口头遗嘱,那次她出院,可以自己站起来走路,她说想去北京做能让她重新回复正常的甲状旁腺切除手术,大家考虑到她的身体都不让去。后来她想我陪着去散步,可惜下雨了就没散成。下一次她还可以扶着我自己煮稀饭,喝半碗稀饭。再下一次国庆放假了,举国欢庆的时候却成了她的忌日,还好是最后一天
本来说好了 11 过了就去,或许就是新生,或许就可以多陪我几年,谁知道...
或者不如说早就应该有心理准备吧,她身体也是一会好一会坏的。她自己也想多陪我几年,我也 17 了,不需要她陪着了,虽然离别很痛苦,但我即使得到推迟她去见达尔文几天的机会,也不会使用的,如果当时不是要上学了,或许我还真希望有这一次机会,能再.... 再再再再 最后一次去看看还有意识的她,虽然我知道即使已经有几乎半个月的预警,大家还是会说时间过得太快,如果那一次不够,那多加几次怎么会足够呢?是我太强求妄想了。
我不想说如果,如果她当初没感冒... 如果她那时不出院而是继续疗养... 如果... 不存在如果。
我小时候被她(强迫)(可惜啊)写作业的时候玩手机忙中偷闲,被发现也会想,如果那时... 不存在如果。没有如果。“人生每一天都是现场直播”
如果... 如果... 听起来好像韩寒吐槽过那个“唉!如果那个球没打偏不就进了吗?”
“如果她那时少吹点空调,我们多给她买点不同厚度的被子,不就不会这样了吗?”
是啊,有什么意义呢,看起来就是个笑话,可我真的想说这个笑话,因为不这样我真的不知如何表达。
可当时我想的是,或许只是她想看我一下,没有什么大问题,即使我有一种不祥的预感,我相信我不管发生什么都能承受
抄袭某个小学语文书的课文啊,爸爸的花儿落了,不过我这也是真的
所以当我准备快速登上楼梯去六楼的肾内科时,那两套寿衣的主人,我想我已经知道了,我和送寿衣的人同时到六楼,那时候我什么感觉都没有。
比喻一下吧,就好像是去确认一下已经预测好故事的结局,不是听到噩耗,而是去确认一下大家都知道将要发生的事情
当时已经有亲戚来了,我居然表现得非常看得开,还去安慰那些亲戚,有些了解的人都在想本来应该不是今晚的... 医生都觉得还有几天,可是对我来说多几天又怎么样,就是让我在学校里、或者是回家后,知道最后那个已经确定的结局,反而更残酷,更令我难受,国庆第一天去医院争取最后的希望,到最后一天彻底失去希望,已经给了我足够的时间去接受这个事实 — 以后或许不会有人给我送饭了、以后不会有人和要我陪着一起散步了、以后没有人在我熬夜的时候端水过来提醒我注意身体了,晚上睡觉也不会被痛苦的叫声吵到了、也不会成天担心她猝死了(因为已经猝死了嘛,虽然是有计划的猝死)、也没有人会做好吃而且好看的饭菜给我了、没有人和我「你打我一下我打你一下」玩了、也没有人要我陪着看《布衣小童》了,第一医院 6 楼再也没有什么事情要去做了,只剩下回忆...
这七天我只记得她说过的两句话
第一次是入院第二天她去透析时,她说让我买套好看的衣服穿,不要攀比影响学习。我不知道她那时是否还觉得自己仍有希望
第二次是最后一天,她让我不要担心,让我离开,我不知道她真的想说什么,但我相信她明白,我回来的那个晚上说的“都好”“不要担心”是什么意思,我当时或许真的是认为一切都不会回来了,后来真的证明我是正确的,正确的感觉真好。
恐怕大家都是这么认为的吧,最后都不会好转起来,因为有太多不祥的先兆了,高级血液透析几乎无效,输血也收效甚微,饭几乎一口都吃不进,她离开的那天已经跟护工说了,自己时日不长,最后我终于还是承认了灵堂上那三个大字,是我妈的名字,也就是说我妈死了,我这个死妈玩意。
后来的事情自然就比较流水模板化了,我觉得做得不错,殡葬场的环境很好,相信如果人真的能有灵魂,当然我是不相信的,她会觉得那颗不知名的植物很好看,渐变色的花朵,像是往生树一样,当然我认为也是没有往生的
我一直是不相信迷信的,我只相信科学
我能接受,她过几天将被火化,最终大部分重新成为生态环境的一部分,小部分成为骨灰留下来给我们留念,当然也可能成为生态环境的一部分
或许就是应该这样,不知为何而生,然后释然仆死,来源于环境中,最后依然回到环境中,重新变成一部分,虽然可能不太一样,也是一种存在,死去的人没有消失,只是换一种方式来陪伴你
我当然无法理解死后是什么样的感觉,但应该没有感觉,我在一段“烧”(请允许我这里用直白的口气)了后以后有没有可能回来的思考里,最终选择了人脑不过是普通按照一定工作方式工作的机器而已,没有什么特殊的「意识子」啊,「感觉」都是大脑伪造给你的,既然有能力做这些物理上也不是没有可能,所谓主观又能有多主观呢?
安息了,最后化为异物,这对我来说可能很残酷,但我决定接受它而不是优先接受灵魂说。
或许,以后我会像
execvp exec _Noreturn 一样看待死亡,死了,以后自己的事情就不需要考虑了,根本不存在什么别的安排计划之类的,也别考虑什么痛苦和再次苏醒,那是你作为人的时候该做的。这本来就是大自然的规律,生老病死,人类已经很幸运了,或许现在的科技不应该再强求更多。
小到人类个体,大到人类种群、再大到生物圈、太阳系、整个宇宙,都最终向一个一反常态的方向发展,有热力学定律作保在一定环境下这是正确的,没人能逃过死亡,而你不需要考虑死后的事情,死后你可能会被当成植物的食物或者拿去构筑更多结构,但你不再是人类了,但这也很适合你,不是吗?本来材料就是找自然界借来的。
很可惜,不是所有东西都是可逆的,如果说人可以用量子 hashcode 表示,那就没有两个完全相同的人,很难,完全复活??? 不存在的,至少一万年。但那是我作为她儿子的视角看,如果死者是我,我不会考虑这些。
只是它不会再记得我们以前一起经历的事情、不会记得她对我的爱和我对她的爱、永远不会再有第二次,于我来说这很可惜、很伤感,失去方知拥有的珍贵,对她来说或许有点恐惧,但是或许更多的是放松
附上童话诗
《獾的礼物》一首獾是一个让人信赖的朋友,他总是乐于助人。他已经很老了,老到几乎无所不知,老到知道自己快要死了。她就那么像故事里的獾,死得那么优雅。当然会有一天我彻底接受她的死,彻底适应没有她的生活,她最终会成为我的过去,也只能成为过去,因为她不在了。当然,我也会永远记住曾经快乐的回忆,或许是永远吧,一般人总是要说大话的是吧?比如小学时的没有相片就很难回忆了吧。
这天晚上,他对月亮说了声晚安,拉上窗帘。他慢慢地走进地下的洞穴,那里有炉火。吃完晚饭,他写了一封信,然后就坐在摇椅上睡着了。他梦见自己在跑,前面是一条长长的隧道。他愈跑愈快,最后觉得自己的脚离开了地面,觉得自由了,不再需要身体了。
第二天,狐狸给大家念了獾留下来的信:我到长长的隧道的另一头去了,再见!
下雪了,雪盖住了大地,但盖不住大家的悲伤。
春天渐渐临近,动物们开始串门,大家又聊起了獾还活着的日子。鼹鼠告诉大家獾是怎样教他剪纸的,青蛙告诉大家他是怎样跟獾学溜冰的,狐狸想起了獾教他系领带……这些技艺,都是獾留给他们的礼物,这些礼物让他们互相帮助。
最后的雪融化了,融化了他们的悲伤。在一个温暖的春日,鼹鼠爬上他最后一次看到獾的山坡,他要谢谢獾给他们的礼物。他轻轻地说:“獾,谢谢你。”
愿意明天献上自唱《虽然歌声无形》一首作为留念,可能还想发点以前的照片留念吧,但斯人已去,我所能做的就是尽可能完成她的心愿,我照顾好自己的身体,不要和她一样受罪、好好学习、穿得漂亮点,和保存着獾的礼物 — 曾经的 永远不会再有第二次经历的记忆,直到哪一天我也要和她一样优雅地死去,顺便还要把能捐的器官都捐了,我是不相信佛教、道教的,以现在我们的垃圾科技,人类器官还是不能人造的吧,比成为大气中悬浮的微粒有价值。
我最后选择不看她的遗容,真的很抱歉,我想我可能接受不了,而且,我想在记忆中留下最美时的她(当然得靠照片),和最后病重时的她,后者我现在当然还记得。
如果她现在还能像十天前,甚至就是 25 小时前,仅仅 25 个小时前(是啊,真快呢,但其实已经很慢了)一样做出反应的话,我想她会劝我好好读书,锻炼好身体,独立起来,考上一个真正的大学,多和同学玩,不要成天想着她
她把所有遗产都留给了我,这是当然的,虽然给我爸爸也基本等于给我。当时是微信语音发的遗嘱。大概中国现在开始稍微的越变越好了,可惜她是没有福气再去观察了。
或者说也是福气吧
真的很怀念她以前让我陪着出去,可惜我玩电脑不肯(早知如此... 算了)
当然最后我考虑她的病还是陪她了,原来我就有这么珍惜自己和电脑在一起的时间(现在也一样)(相信几天以后不会了)
现在看来这时间弥足珍贵,只不过是因为不可能再有一次陪她出去了
还有以前我还在三十六中(高一)时给我送饭,那时俨然还是什么病都没有一样,可惜啊,那个手术要是做早点就不会变成现在这样了(抱歉不该说如果的,是不是)
还有我送她去医院后,忘记带饭卡,借同学手机打给她的时候,后来她还笑我忘带饭卡。现在当然不能打给她了,不会有人接的。
最终还是要接受 她不会再醒来,而且不久以后人形都不会有了,我想我不敢在那时待在火化房旁边,药水味太刺鼻、黑烟让人感到伤心。但这就是最好的办法,怎么比这更为体面呢。
想必那时候还是不免要哭一下吧... 明明已经很努力的在治疗了,可惜现在她已经没有康复的身体资本了
第一次想到我 1 日送她下楼,她坐在轮椅上问护士还有没有“双棒”(一种昂贵但更有效的血液透析治疗)的时候我就想哭,想到曾经她看正是那个地方的花然后说很好看的时候也一样 要是我爸肯定舍不得花那些钱,其实她的确还想活 怎么不想活,可惜最后还是不得不接受完全可以大致预料的死亡。
最后第二次她没能坚持下 4 个小时,3.5 个小时,但已经说明存在严重的问题了。在这之后就只有一天时间,可惜。但也许是好事吧。
曾经有效的治疗手段如今都是那么脆弱,其实就是小小的感冒,或者说是命中注定,因为她体温失常已经有一段时间了,而且免疫系统也很薄弱。一部分原因自然是没有安排好而必定要做的手术。暑假时也是,谁能想到病情恶化得那么快,第一天还能自己骑车出去买饭,第二天就只能没精打采的走去了,但还是给了我们时间接受。多么可惜但是最后还是只能接受。
...
真的想在隧道的另一头、在世界的那一边,和自己选择离开的 Neko 说的一样有一个安静和谐的世界,她可以在那里吃很多很多好吃的东西和水果,想喝多少水就能喝多少,也有很多漂亮的花可以看,六年里她几乎没吃多少好东西。我相信自然科学,但是请允许我尽可能维持这个可能只是幻想的设定。
去看墓地的时候看到二十四孝,真是开倒车,鲁迅先生曾经批判过这种孝道,那是愚孝,老莱娱亲肉麻、郭巨埋儿残忍、尝粪优心恶心。传承传统文化,并选择性使用,这才真正应该作为孝道
她以前也经常说让我不要心疼钱
,我爸爸是非常扣的。她常说我们家有钱。也亏她运营,现在才即使是中产阶级也过得非常不错。光靠爱是不能漂亮地活下去的,她还留下了别的礼物。
“如果她没有这个病我们家会很幸福”这是之前我对某个好友说的话,可惜最后还是得了此病,曾经有一次单位体检,或许可以就没有这病吧。但是和周树人一样,庸医看到检查结果,说什么问题都没有。好医生和曾经的好臣子还真不常见啊。
我在这里发布这些完全是私人的信息,只是因为是私人的频道(我认为只有真的朋友会看这个频道的内容,因为它很冷),如果觉得想要来安慰我的人也欢迎来私信,网上凭吊就免了,不过肯定不会马上回,会很慢,但不会永远也等不到了
duangsuse 于 2018 年 10 月 7..8 日,母上大人千古