- 博客(16)
- 资源 (1)
- 收藏
- 关注
原创 用rust写一个玩具解释器9(parser-中缀表达式)
复杂警告⚠重要的是操作符之间的优先级1.具体优先级大小,和支持的运算符pub enum Pri { LOWEST, ASSIGN , // 赋值 EQUALS , // ==, != LESSGREATER , // < ,> SUM , //+,- PRODUCT ,//*,/ PREFIX , // !,- ...
2020-02-25 21:02:14 279
原创 docx.opc.exceptions.PackageNotFoundError: Package not found at
docx.opc.exceptions.PackageNotFoundError: Package not found at 'C:\Users\13298\Desktop\structure\2020.doc'doc转为docx文件即可
2020-02-22 21:56:04 856 1
原创 用rust写一个玩具解释器8(parser-前缀表达式)
前一篇文章讲了如何解析let与return,那么今天就讲如何parse前缀表达式.1.前缀表达式都包含什么变量名数字"!"感叹号"-"减号逻辑值 true,false"("左小括号if关键字fn关键字字符串"{"左大括号"["左中括号 p.prefix_parser_fns.insert(token::IDENT, Parser::parse_ide...
2020-02-22 18:41:03 1117
原创 用rust写一个玩具解释器7(parser之let&return)
整个parser文件有550行, 但是大部分是有重复内容的.所以不用担心.对比于刚从SICP学的lisp, 相比来说lisp的parser是不是简单一些, 但是总的工作量是一定的, lisp把parser的心智负担给了代码编写者和阅读者.而其他大部分语言把parser的心智负担给了语言发布者.若代码规模稍稍增长, 那么lisp的方式就不够经济. 就比如写rust的时候,一天想代码怎么写,一天写...
2020-02-20 13:56:41 435
原创 python-wordcloud词云
pip下载所需库pip install repip install collectionspip install numpypip install jiebapip install wordcloudpip install PILpip install matplotlib但是pip默认下载很慢,超级慢,慢到死那种.所以用清华的国内镜像源(老大的带宽也超级nb).window...
2020-02-20 12:22:44 357
原创 看SICP读后感
SICP比大一直接学C语言好很多虽然很多例子都是计算方法里学过的,而且其他语言都可以完成, 但是最厉害的是eval与apply, lisp的不动点是最惊艳我的地方(工科生没学过拓扑), 比一个连C指针都讲不好的老师好多了lisp结构简单, 但前缀表达式不是人看的,那些吹单纯前缀表达式比中缀好的的可休矣, 但是前缀与eval&apply相结合, 就是lisp的太极阵了我...
2020-02-19 22:24:42 182
原创 用rust写一个玩具解释器5(ast-1)
ast介绍抽象语法树的节点#[derive(Debug,PartialEq,Clone,Eq,Hash)]pub enum ASTNode{ Program(Program), LetStatement(LetStatement), //let name = value BlockStatement(BlockStatement), // {} Boolea...
2020-02-16 20:59:25 528
原创 keras实例之猫狗大战
猫狗大战即使用keras库训练模型,然后识别猫狗图片/照片keras简介Keras 是一个用 Python 编写的高级神经网络 API,它能够以 TensorFlow, CNTK, 或者 Theano 作为后端运行。Keras 兼容的 Python 版本: Python 2.7-3.6。一定要下载兼容的版本Python中安装keras库先前准备在安装Keras之前,请安装以下后...
2020-02-15 21:36:41 2008
原创 教你五分钟学会快速排序
快排基本思想初始数组20为选定的关键字经过一次比较后转换为二叉树表示即快排是加了关键字交换的二叉树遍历想想快排的兄弟归并排序, 二者都是遍历二叉树.rust代码实现pub fn quicksort<T>( arr : &mut [T])where T:std::cmp::PartialOrd { quick_sorted(arr,0,ar...
2020-02-14 13:23:24 150
原创 用rust写一个玩具解释器5(parser&ast-0)
parser与ast先介绍parserparser干什么?将lexer的输出的token组织为ASTAST是啥?Abstract Syntax Tree(AST)-抽象语法树.那AST是二叉树吗? 大部分示例都画为二叉树.但是树其实就是嵌套的list,为啥一个节点不能有多个儿子.不过在我们组建AST过程中很少用到多叉树.然后parser如何工作呢?emmm…我们先区别介绍pa...
2020-02-11 13:46:58 481
原创 用rust写一个玩具解释器4(完整的lexer)
完整lexer介绍use crate::token::token; //导入tokenconst CHAR0: char = 0 as char;#[derive(Debug,Clone)]pub struct Lexer { input: String, position: usize,//当前读取的字符 read_position: usize,//下一个字...
2020-02-11 12:25:12 349
原创 用rust写一个玩具解释器3
项目目录项目地址画质有点渣其实不应该创建太多的包,因为里面其实只有一个有效文件(mod.rs和test.rs算是辅助) . 所以说目录可以更简单一些.token在上文中提到了把token看为字符串, 而其大致分为两种.我们预先定义的比如 +,-,*,/,if,return,fn和let等留给用户的比如: 变量名,整数//token/token.rs//不想下载第三方包,...
2020-02-06 10:00:51 346
原创 用rust写一个玩具解释器2(lexer)
词法分析器输入: 由字符(ASCII码)组成的字符串输出: token任务: 读取输入, 并且按规则输出tokentoken: 想简单点, 就是一个字符串和它的类型(比如说关键字, 变量名,非法字符串…)所以说我们现在需要, read_char, skip_whitespace和next_token函数以及当前字符ch和下标left(position),right(read_posi...
2020-02-05 21:20:18 484
原创 函数式编程思维
参考图书# 总结&感想在学校里学的一直是命令式和OOP编程, 从最开始教C,到后来的JAVA,然后自学的python和go, 不过java和python嵌入了函数式编程的部分, 但我并没有详细了解过.不同于命令式(基于状态)的处理问题的思维, 函数式基于映射,而且具有高度抽象的特征, 有内味(指数学)了. 作为一个工科生, 感觉程序是算法和架构的结合, 不过不同人侧重点不同罢了. 面...
2020-02-05 20:13:28 146
原创 用rust写一个玩具解释器1
1.开发环境搭建1. 安装rust-自行百度2. 代码编辑器 我用的是vscode+RLS+TabNine2.语言的定义暂时实现的let x =10;let x1 = 10+10;let x2 = x1-10;let x3 = x2*10;let x4 = x3/10;let t = true;let f = false;let bang = !f;let minus...
2020-02-05 11:18:32 457
原创 用rust写一个玩具解释器0
前言假期闲来无事, 看了Thorsten Ball的Writing An Interpreter In Go, 他还有一本写编译器的暂时没看, 跟着书上的代码写了一遍, 想着用rust重写一遍, 现在正在写eval部分.Writing An Interpreter In Gogo&rustgo我对go的感觉如它宣传的一般, 21世纪的c语言, 用go写了一个小web程序, 感觉比...
2020-02-04 20:38:53 300
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人