自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zhangqi-lang开发中

everything i never told you

  • 博客(180)
  • 资源 (41)
  • 问答 (4)
  • 收藏
  • 关注

原创 【zhangqi-lang】【12】解析了函数

函数设计/* export function say(str:string,a,b,c,...) -> bool: print('hello,world') return false end let a = function(a:int,b,c:float) -> string: print('hello') if b : return 'true' 'end return 'demllie' end */ class Func_Node : public

2021-02-19 22:49:02 20 1

原创 再谈编程语言设计和实现

...

2021-02-13 15:31:48 1964 5

原创 【zhangqi-lang】【11】解决了数字状态机的BUG,设计了Range,解析了循环

Lexer错误数字状态机有错误,浮点数有小数点,但是操作符点点和点点点也有,当数后面有点点或点点点时,第一个点会被数字状态机吸收!修改后 /*------------------------------数字状态机----------------------------------*/ if (flag_syn == 0 || flag_syn == 2 || flag_syn == 4) { if (c <= '9' && c >= '0') {

2021-02-13 11:36:12 87

原创 【zhangqi-lang】【10】修改了Node类设计,解析了if,elif,else

前言Node设计修改的部分 typedef enum { BodyType_NORMAL, BodyType_BEGIN, BodyType_END, BodyType_ELSE }BodyType; class Body_Node : public Node{ protected: vector<Node*> body; BodyType t; public: Body_Node() { t = BodyType_NORMAL; } Body

2021-02-10 23:40:31 32

原创 【zhangqi-lang】【9】文法设计

zhangqi-lang文法program := chuck{,chuck}chuck := block|statmentstatement := ( vardef_stat | assign_expr | expression | funccall_stat | return_stat ) endstat

2021-02-05 22:55:08 101 1

原创 【zhangqi-lang】【8】添加优先级,允许多个not或者多个!相连

优先级(由低到高)orand xor xnor nand nornot< > <= >= == (值等于) ~=(值不等于) ===(类型和值都等于) ~ ==(类型和值都不等于) <=>(比较)+ -* / % %%^& | ! << >> <<< >>>factor函数声明 //1. Node* expr_logic_or(); Node* expr_

2021-02-04 11:30:20 51

原创 【zhangqi-lang】【7】运算符消除左递归写法,将关键字并入token,重新设计Node

之前项目中的Parser没用了,现在改了Node设计,之前关于Node的AST构造都变成垃圾了(其实本来就是,,,,就是因为太差所以好久没碰了)——修改后的Node简单多了,之前Add,Sub这种都分两个类,其实区别只有一个符号而已,差别太小、功能相似的应该放在一个类里!!!

2021-02-04 09:08:00 40

原创 【zhangqi-lang】【6】四则运算新的解析方法

原来如此比之前的解析方法好多了,之前还需要先用temp保存当前token判断一下temp是不是运算符next()右边迭代返回右值判断temp运算符类型,分类型进行计算移动temp到当前token,返回第二步  \;  \;下面的解析方法是先判断当前token,进入各情况next()用传入的参数——左值与迭代返回的右值进行计算并返回#include <iostream>#include <istream>using namespace std;

2021-01-29 21:53:29 35

原创 【zhangqi-lang】【5】变量定义let\var\const ——后面删掉了var,增加了static

Parser.cpp ... const char* keyW[] = { "import","from","as","if","elif","else","end","in", "function","def","while","do","until","return","break","next","exit", "redo","reloop","reboot","True","False","Nil","NaN","Inf","Undefined", "local","switch"

2021-01-27 21:48:45 47

原创 【zhangqi-lang】【4】扫描两遍,把AST构造从Lexer中分离出来 + 制作变量池

变量和变量池 /*---------------------------数据类型定义------------------------------*/ /* Id标识符,包括var变量,kw关键字 var变量包括num数,function函数\enum枚举,type原型等 */ //所有的数据类型 typedef enum { // _t在后表示类型 NONE_t, //基本数据类型 INT_t, //整数 NUM_t, //浮点数 COMP

2021-01-26 23:11:17 24

原创 【PyQT5】自定义信号——pyqt比qt更好用

前言先下载好sip,pyqt5,pyqt5-tools,准备好QT designer,PyUIC两个工具QT Designer新建项目后,建一个.py文件,打开外部工具QT Designer,创建为QWidget窗口,保存了另一个名称的.ui文件,名称不能与前面的.py文件一样。设计好窗口后,保存,使用外部工具PyUIC(点一下就可以),然后会生成一个.py文件。每次修改后都要使用PyUIC更新一下这个.py文件!自定义信号注意定义好信号后,connect时会显示pyqtSignal

2021-01-19 10:41:20 111 1

原创 github repository仓库提交,还是不熟悉

安装git就不说了Git下载、安装与环境配置进入git,cd进入自己想上传的文件的目录内。在github上新建一个仓库repository,然后在git内使用git init把空的仓库拿下来,如果你这么做了的话,后面就要进入空的仓库目录下,把文件又复制进去,所以下面这一步是不需要的!!!git clone https://github.com/Demllie/Zhangqi-lang添加所有文件git add .第一次提交到mastergit commit -m "first co

2021-01-17 10:56:35 16

原创 解决了pip安装到别的python版本上的问题

Scripts文件下有pip.,比如我装的python3.7下有pip.exepip3.exepip3.7.exe除了pip3.7其他两个pip都删除,然后把pip3.7.exe改成pip.exe为了避免后面可能的问题,我就加个后缀留着没删除。

2021-01-16 12:57:14 48

原创 【Demllie C++ Design Pattern】Visitor Pattern Learning

需求在传递不同类的时候,需要做不同的工作,一般我有以下几个方法1.枚举缺点就是要做一个很大的枚举,还写一个没什么用的函数! ////用来替代typeid,进行类类型判断 enum SuatinCmdClassType{ SuatinCmdClassType_Cmd, SuatinCmdClassType_SingleCmd, SuatinCmdClassType_BlockCmd, SuatinCmdClassType_CondCmd, SuatinCmdClassType_I

2021-01-16 08:57:17 29

原创 【Demllie C++ Design Pattern】Singleton Pattern Learning

需求用在多线程中,保证实例的唯一性。代码#include <iostream>#include<thread>using namespace std;class Singleton {public: //单例模式不允许拷贝构造函数 Singleton(Singleton& ) = delete; //不允许重载等号 void operator=(const Singleton& ) = delete; static Singleton

2021-01-16 08:11:19 25

原创 【Demllie C++ Design Pattern】Finite State Machine Learning

##### 需求状态机就是状态转换,如果只有简单的功能的话,用if-else或者switch就可以解决了,用类来做状态机就把问题弄复杂了!!!但是如果是十分复杂的状态转换的话,还是需要用状态机,把状态转换的隐藏起来,并且各个状态做各自该做的事,会减少混乱!!!

2021-01-15 15:39:57 26

原创 【Demllie Design Pattern】template method learning

需求游戏项目先确定一个框架,把基础的执行顺序写死,不允许也不需要改动,就可以把顺序写在抽象类里,后面添加怪物和物品只需要继承即可!!!代码#include <iostream>using namespace std;class Sprite {protected: void show() { cout << name<<"出现了!" << endl; } void dispear() { cout << name&l

2021-01-15 15:04:29 23

原创 【Demllie C++ Design Pattern】Observer pattern learning

用处多对一,比如多个用户查看一个网站,看up主更新了没有,一旦更新了,网站要给每个关注了的人发消息!!!分析所以主要就是两个方面,一方面的多个观察者(用户),另一方面是被观察者(网站)。。。就算不用面向对象,只要明白了原理和需求就能做。如果用面向对象的话,两边的类需要相互调用,相互传递抽象类的指针!!!类图代码#include <iostream>#include<list>using namespace std;class OOer {public: v

2021-01-15 13:18:05 23

原创 VisualStudio C++调试小技巧 Demllie

前言VSC不好调试于是我又用回VS了。下面分享几个调试技巧,都是面向菜鸟的SHIFT+F9选中变量后按shift+f9,就能查看变量的内容,不能查看指针自身的地址!SHIFT+F9 , + &在上面的基础上,在窗口里,前面加上&就能得到指针自身的地址!添加监视调试时只关注自己想要关注的变量!选中后右击添加监视!—— 全局变量在主函数里无法查看,无论使用 shift+f9 还是添加监视都不行,必须进入其他的函数才能查看。...

2021-01-14 07:49:29 34

原创 【zhangqi-lang】【3】简单抽象语法树,只有加减乘除取余取模和小括号

前言关于switch体的设计,迭代体的设计等,太让人头疼了。先把简单的写完,再去一个个基本的加上去。比如先针对变量和关键字的区分,然后设计动态可变的变量和变量池,要考虑全局和局部,考虑字符串转哈希。定义简单节点//Node.h#pragma once#ifndef _NODE_H_#define _NODE_H_#include"Utils.h"namespace zhangqi { //节点类型定义 typedef enum { //N_在开头 N_Node, N_Tre

2021-01-12 15:23:52 32

原创 【zhangqi-lang】【2】把Token放在一个容器里

前言因为之后会扫描几遍,所以放在一起比较方便!!!0宽数组在匹配标识符和字符串的时候,只设置了开始和结束标志,然后一个个字符打印到控制台,想要变成一个字符串的话就需要一个柔性可变的字符数组。对于文件名 g_file和一行的内容 g_lineContent这些,设置成定宽的就行了!为什么不用C++的string?因为之前项目suatin-lang用过,很方便,但是从std::string字符串到char字符或者char数组需要个转换,所以还是全用char比较清楚。自定义0宽数组这个算是Uti

2021-01-11 00:10:44 43

原创 【zhangqi-lang】【1】词法分析器

..........

2021-01-10 10:07:12 106

原创 【Demllie航天】火箭方程

齐奥尔科夫火箭方程设火箭当前质量为M0,释放一部分推力后质量为M,两个时间点速度分别为v0v_0v0​和vvv,火箭飞行方向为正方向,则燃料喷出的相对速度C为负数。总动量为零,则(m−dm)dv−Cdm=0(m-dm)dv - Cdm = 0(m−dm)dv−Cdm=0∫v0vdvC=∫M0Mdmm\int_{v_0}^v \frac{dv}{C} = \int_{M_0}^M\frac{dm}{m}∫v0​v​Cdv​=∫M0​M​mdm​v=v0+ClnMM0v = v_0 + Cln\fr

2021-01-05 21:06:33 59

原创 Demllie【5】>由AST抽象语法树到生成字节码

前言在没有AST抽象语法树的时候,直接迭代返回值就计算完了,有了AST抽象语法树后,值放在树节点里,在遍历的时候返回运算结果。再抽象一下,遍历的时候也不计算,而是生成字节码放入文件里,等后面用虚拟机处理字节码时运算!!!前面的文章Demllie>做一个Toy语言编译器,随便玩玩Demllie>小型词法分析器,其实就是循环判断Demllie>编译语言实现的核心问题,就是这里不明白让我白白写6000行垃圾Demllie>由迭代法next_term_factor_expr来构造AST抽象语法树修改v

2021-01-05 09:35:37 37

原创 Demllie【4】>由迭代法next_term_factor_expr来构造AST抽象语法树

命名规范去年做suatin-lang项目时,为了避免命名冲突和规范得让自己舒服点,结果各种标识符名称越来越长,越来越臭, //解释器运行的三个阶段 enum SuatinRunTimeType { SuatinRunTimeType_Lex, SuatinRunTimeType_Parse, SuatinRunTimeType_Interpret }; //cannot change the sequence enum SuatinTokenType { SuatinToke

2021-01-05 08:49:18 56

原创 Demllie【3】> 编译语言实现的核心问题,就是这里不明白让我白白写6000行垃圾

前言核心问题就是分析时的迭代,因为不懂怎么迭代,我白白写了好多垃圾。下面做一个计算器,弄明白这个东西。Token定义typedef enum { NIL, ADD, SUB, MUL, DIV, MOD, NUM, LB, RB}TokenType;typedef union { char c; double v;}Var;class Token {private: static int counter;//类变量,不能再此处初始化 int num;

2021-01-05 02:01:49 124 2

原创 Demllie【2】>小型词法分析器,其实就是循环判断

#include <iostream>using namespace std;int main() { FILE* file; int a = fopen_s(&file,"test.txt", "r"); if (a != 0) { cout << "文件打开失败!" << endl; return 1; } char c; int state, num = 0; while ((c=getc(file))!=EOF) {

2021-01-04 20:45:29 26

原创 Demllie【1】>做一个Toy语言编译器,随便玩玩

代码运行在VS2019中,命令行参数用下面方法添加在compiler.cpp旁建一个main.txt文件夹,写一段代码。#include <iostream>using namespace std;int main(void) { cout << "hello,demllie" << endl; return 0;}运行SB编译器//compiler.cpp#include <iostream>#include <string

2021-01-04 05:29:25 82

原创 【单片机】用蜂鸣器播放《小半》

note是音节,beat是节拍#include "reg52.h"sbit bell = P1 ^ 5;unsigned char note, beat;unsigned char code sheet[49][2] = { //0~48,49个音符各自的时间对应的初值 {0, 0}, {0xF8, 0x8B}, {0xF8, 0xF2}, {0xF9, 0x5B}, {0xF9, 0xB7}, {0xFA, 0x14}, {0xFA, 0x

2021-01-03 18:00:15 28

原创 【Demllie航天】重力转弯与闭环控制

前言一个绕轨飞行的航天器,降落期间是垂直于地表的,那么那这段区间内,航天器是怎么做到的呢?在旋转航天的角度为垂直期间,火箭喷口方向朝哪?朝向径向向外吗?只需要喷一会儿一开始降低轨道,需要火箭喷口朝速度方向,降低轨道为抛物线后,不需要再开火箭,当然开也行,由于重力转弯的作用,在降落的最后阶段开火箭,航天器也能垂直,并不需要朝横向或者径向喷,浪费燃料让它垂直。下面解释重力转弯是什么。降低轨道了,轨道变成抛物线,这时候火箭喷口朝速度方向,打开节流阀。重力加速度设为g,航天器速度为v,火箭输出的推重

2021-01-03 04:35:16 188

原创 【zhangqi-lang】制作新语言的需求

作者:Demllie时期:2021年1月1日回顾:去年花了三个月做的编程语言suatin-lang,仅仅实现了判断和循环就放弃了,主要的原因是本人水平太差,没有搞懂词法分析和语法分析中的核心问题——不会迭代生成AST,至于后面的代码优化、类型判断、虚拟机等需求就不需要提了。虽然suatin-lang只能算是个计算器,但是编译语言的相关特性还是实现了很多的,我想着这足够让我有自信去往下做了。但是,事实上,我没有一点成就感,这东西是个残次品,给别人吹自己做了个编程语言也没办法秀出来,因为的的确确没有实际用

2021-01-01 22:43:46 45

原创 [RISCV] risk5 蜂鸟E200流水线——2021年初学习

前言前面抄书抄得很烦躁,可能是很长时间没有学习过了脑子不灵,或者是我完全是个门外汉,还没进入过CPU的设计世界。这些概念很早就听过,希望这书之后写的能让我明白些。来自《教你设计CPU——RISC-V处理器》...

2021-01-01 21:54:46 75

原创 [RISC-V] risk5 指令集架构简介——2021年初学习

前言没钱没设备还是别学了,我还以为买了书会有用,看了作者的公众号才知道,买开发板送书,你可以去查查FPGA板子要多少钱。这个专栏的内容来自硅亚历山大的书《教你设计CPU——RISC-V处理器》。写博客的目的是自己弄懂一点,这件事如果不动手的话是无法实现的。但是,换句话说,就是抄书,为了避免**问题,扯淡的地方就写点关键句子好了。如果你查资料查到这个专栏,希望能帮助你吧(也许吧)risk5 指令集架构简介1.模块化的指令子集risk5的每个模块用一个字母表示,最基本的指令集模块是 I ——基本整

2021-01-01 19:03:25 181

原创 [shenzhen io]simplest and cheapest electronics engineering training just in the game

LookBefore solve the following electronics engineering problem, here have some point you should knowonly have few components could be given. For example, the game only have two type micro-controller MC400 and MC600 ,both of them had limit the assembly c

2020-12-15 00:32:22 896 3

原创 [Julia]野心是不是要更大一点……又制定新的编程语言计划

前言关于自制编程语言相关的话题,我年初做的“编程语言”被群友喷是计算器,因为没有函数,只有判断和循环——虽然我还实现了断言assert,模拟异常处理……所以,我之前一直计划下一个语言加一下功能,什么class, native ,coroutine,bignumber , typesystem ,namespace还要加上某种特性可以解决或者缓解命名冲突!直到我见到 julia 后,感觉自己的眼界有点小!人啊,就是应该多去看看世界超级 Julia动态类型的语言,应该也是生成字节

2020-11-16 01:58:33 32

原创 Ruby:基本语法研究,宝石一样的语言

前言博客这种东西,一是为了当做笔记,二是为了当做草稿!BEGIN和END和构造函数、析构函数一样,给整个程序提供这样的功能!puts "这是ruby主程序"#最后执行的END块END{ puts "停止ruby程序1" }#END块先执行末尾的,从下往上END{ puts "停止ruby程序2" }#程序会首先执行BEGIN块,然后从头开始执行BEGIN{ puts "初始化ruby程序1"}#BEGIN块按顺序执行,从上往下BEGIN{

2020-10-02 22:52:35 76

原创 [Suatin]不学编译原理做编程语言17——公布最后一个项目——用VSCode+mingw编译CPP项目(多文件

前言年初花了2个月做这个,期间把代码给群里view但是大多报错太多,那时我还是不知道什么原因。4月左右总结了最后一个项目后,就想这下不会再有错了吧!(都是VS2017害的)最近无聊,用VSCode下载了mingw运行了下代码,好多错…VSCode运行CPP项目安装Code RunnerC/C++GBKtoUTF8几个插件,下载安装mingw,将D:\Program Files\mingw64\bin加入环境变量,然后打开一个新的文件夹,写个简单的CPP或者C的文件,运行下F5或者右上角的三角

2020-10-02 13:15:50 410 1

原创 VHDL:在Quartus II里编写8位加法器(第一次由代码得到电路图)

前言最近一直没有时间,最想做的“设计一门完备又有效的ruby类语言”这种事也没时间做!由于这个EDA有课,所以就先练习下!VSCode编辑下载一个VHDL插件就好,VSCode的界面看着很舒服library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;--注释entity adder_8bits is port( A,B : in std_logic_vector(7 downt

2020-10-01 07:27:12 2390 2

原创 【QT5 C++】文本编辑器-----打开新建保存、剪切复制等、粗体字体等、更换背景

## 前言简单的文本编辑器,都是基本的功能。虽然基本,但是我也做了三天,算是很好复习了去年学的QT!

2020-06-26 18:27:56 1067 1

原创 2020年寒假?(不)认真学习《自制编程语言,基于C语言》第一个Demo,词法分析

前言这本书的sparrow(麻雀)语言,基于wren(鹪鹩)语言,是一门面向对象语言!——至于其他特点我忘了,还记得的就是Demo中部分函数命名很简单、简单到与其他库函数产生冲突了。。。。

2020-06-19 22:23:46 252 1

2021-2-19 iter_function.zip

函数解析

2021-02-19

2021-2-12 loop_range.zip

解析了循环,设计实现了range,解决了lexer的一些Bug

2021-02-12

2021-2-10 if.zip

改进了let,static,const语法树,解析了BEGIN和END块,解析了if,elif,else 修改了Node类设计。 但是出于BinOp_Node类上面的类都会被VS2019当做是BinOp_Node类,这是编译器的问题,不是我的

2021-02-10

2021-2-4 Statement.zip

把一条语句完整的构造成AST

2021-02-04

2021-1-27 let_var_const.zip

实现了变量定义,let a = 1 let a = b = c = 1 + 2 之类的

2021-01-27

2021-1-26 Pool_Lexer_Parser.zip

分离了lexer和语法树的构造,把AST构造放到了Parser内,这样第一遍扫描就把所有的token扫描出来

2021-01-26

2021-1-12 SimpleAST.zip

zhangqi-lang抽象语法树,这个里面只实现了表达式的抽象语法树,复杂的没写,或者说删除了

2021-01-12

2021-1-11 SaveInVector.zip

zhangqi-lang还是词法分析阶段,把token全部放入容器中,便于后面多次扫描

2021-01-11

2021-1-10 FSM_Lexer.zip

zhangqi-lang词法分析器,zhangqi-lang语言开放的第一个项目。用状态机实现,有5改状态机:注释、标识符、数字、操作符、字符串

2021-01-10

Suatin编程语言项目最后一个LAST

SUATIN不学编译原理制作编程语言的项目完整版!

2020-10-02

Suatinlang_version_2020_2_3.zip

自制编程语言的第一个项目,完成了识别分类Token,还有分割了简单语句!虽然后面的项目可能要大改,但是这第一个还是要好好纪念一下的!

2020-02-09

绘制哆啦A梦.zip

看小甲鱼的课程做的,GDI绘图乐呵乐呵就行,谁也别想通过这种方法做东西,太无聊了——知识这种东西,是学会了后肯定会忘记的

2019-12-01

Suatinlang_version_2020_4_5.zip

Suatin编程语言项目。这次设计了变量栈,scope=0放特殊变量,scope=1放常量,scope=2放全局变量,scope>2放局部变量——这么设计了,但是现在还没有识别local x;const x;del x;那部分下次做

2020-04-05

Suatinlang_version_2020_3_10.zip

suatin自制编程项目! 简单表达式现在可以看做有三个模式了:开头是BOOL类型的式子、五则计算式、字符串拼接式! 赋值节点的解释,现在也特别的清楚! (有个BUG,字符串拼接模式下,expTmp完成后不置空) 解决方法,增加expTmp = NULL; 到Parser.cpp,DealToken_Str函数中,return;之前,就行!

2020-03-10

Suatinlang_version_2020_3_19.zip(有bug,修正版3_19_v2)

suatin编程语言的项目,快结束了,做完function就结束了,这个项目里完成while,do-until,for三种循环 有一个BUG!!!uncompleted_tree在分支和循环中最后处理的不好

2020-03-19

Suatinlang_version_2020_3_19_v2.zip

Suatin编程语言项目,实现了分支,if-elif-elif...-else 实现了循环while,do-until,for

2020-03-19

Apollo-11-master.zip

AGC汇编代码,是阿波罗登月飞船的指令代码!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

2019-07-23

解压就能用的Processing.rar

processing编辑工具,processing3.3.7!!解压就能用!!

2019-10-12

File.rar OPENCV资源文件夹

一个File文件夹,装的是我专栏OPENCV4学习使用到的资源——图片、视频(CSDN下载时添加标签写不了中文)!!!!!!!!!

2019-09-05

DemllieText.zip

QT5 c++ 制作的文本编辑器。新建、保存、打开、保存为、全选、剪切、复制、粘贴、清空、粗体、斜体、下划线、字体、字体大小、关闭询问、最大化与恢复、最小化、更换背景、关于作者

2020-06-26

C实现控制台下的生命游戏

就是个简单的控制台黑界面下的生命游戏,还不完整,但是无所谓。你想玩玩可以改改!不完整是因为生命游戏的一些要求没完全实现

2019-04-17

UltimateTCS大一做的作业1000+

在VC6上运行,里面有预览、源码、素材,可以自己改成别的编译器上运行。里面涉及的知识有C链表、C文件、easyX图形库、C++原始多线程、PS(哈哈哈哈)等

2019-04-17

Suatinlang_version_2020_3_3.zip(有bug,修改版是2020_3_4)

Suatin编程语言项目 此次改进有,正确区分不同表达式!使字符串拼接模式不再严格,给字符串和数字一样的级别!修改了NotExpr\AndExpr\OrExpr\NeqExpr\EqEqExpr的解释方法,允许非数字的逻辑运算和判断运算!增加了5种节点解释时调用的孩子的解释方法信息,在构造语法树时将【该调用那种解释方法】这个信息留在了5种节点内!

2020-03-03

Suatinlang_version_2020_3_9_v2.zip

suatin编程语言的项目!!!3月9号晚上的第二个大更改!!! 去掉了之前的 exprType \ expr_compare_flag \ expr_logic_flag 改为了 m_statType \ m_exprType \ m_simpleExprType 虽然变量数目没变,但是含义可大大更改了,之前的三个变量都是指的一个关系,在那个关系中,计算表达式、字符串拼接表达式、逻辑表达式和判断表达式混为了一谈,但是他们的关系并不是并列的,所以项目中表达式式的区分乱七八糟,没法人脑检查出BUG来!!! 写了三个枚举,改变了语句、表达式、简单表达式之间的关系后,代码变得清爽多了——并不是代码少了,相反,比上一个项目还多2kB,而是关系变得简单了!!!!

2020-03-09

Suatinlang_version_2020_2_28.zip

Suatin自制编程语言5,一次较大的改动!为了引入bool返回值,增加了一个interpret_bool接口!解决了正则识别不了>=,&lt;=的BUG!改善了语言环境的显示!引入了特殊赋值!为了判断运算又增加了6个类!

2020-02-28

Suatinlang_version_2020_3_4.zip

Suatin编程语言项目 此次改进有,正确区分不同表达式!使字符串拼接模式不再严格,给字符串和数字一样的级别!修改了NotExpr\AndExpr\OrExpr\NeqExpr\EqEqExpr的解释方法,允许非数字的逻辑运算和判断运算!增加了5种节点解释时调用的孩子的解释方法信息,在构造语法树时将【该调用那种解释方法】这个信息留在了5种节点内!

2020-03-04

Suatinlang_version_2020_3_18.zip

这次的自制编程语言项目实行了if-elif-else,可以是嵌套的,总之功能强大! 还做了个简易的Qt的信号槽,可以实现全局信号->非成员函数,全局信号->成员函数!

2020-03-18

Suatinlang_version_2020_3_28.zip

suatin自制编程语言项目!精简了变量的内存结构!将单个分号不算做语句,提高了解释速度!10000个数的空循环一秒多就运行完了!一百万个数的空循环大概100秒左右运行完!

2020-03-28

Suatinlang_version_2020_3_1.zip

Suatin自制编程语言的第6个项目!完成了单个语句的逻辑运算,就是not,and,or.........但是项目本身遇到很大的问题,因为学习的不好,我采用的是最愚蠢的,每遇到一个Token就改变一下语法树,这实在是太麻烦了!啥时候去学习《编译原理》了!迷迷糊糊写了3000代码,完成的功能实在是太简陋了!

2020-03-01

Suatinlang_version_2020_3_8.zip

suatin自制编程语言的第N的项目!并没有多实现什么,之前单条语句已经解释完了,现在只是打个包,解释了多条语句而已!!!! 感觉很绝望!项目中有很多难以处理的结构,也可能出现未知的bug,所以没办法把解释器的架构给改变了!!!!毕竟是自己乱七八糟写的! suatin语言的项目做到实现函数为止吧!!!画了很多时间,没使用编译原理的知识,也要做到那个地步!!!

2020-03-08

Suatinlang_version_2020_3_13.zip

suatin自制编程语言的项目!!!在制作if-elif-else等架构之前,对项目进行了多次改进,打了很多补丁。。。。运行只有单个变量时,打印出数、字符串、布尔、nil 将bool类型的变量很好的融入了表达式中,对布尔进行计算和>,<,>=,<=四种判断运算都会报错!!! 解释时遇到nil类型的变量会报错!!!

2020-03-13

Calculator_version_2020_2_4.zip

计算机改进版,添加了默认函数,虽然只能有一个参数!添加了小数、指数,基本的计算都能完成了。仍然是中缀表达式转后缀表达式,后缀表达式求解

2020-02-09

Suatinlang_version_2020_2_21.zip

Suatin-lang项目的第二个版本,抛弃的第一个版本才用的中缀转后缀,而是直接由Token建立语法树!架构也重置了,之前的功能少,文件有三十多个,这次文件只有5个!

2020-02-21

Suatinlang_version_2020_2_23.zip

自制编程语言Suatin的第三个项目,之前的简单语法树只有Num,这次增加了对Id\Str的处理!给解释器模式增加了一个接口string interpret_str()!!!!

2020-02-24

Suatinlang_version_2020_2_25.zip

Suatin编程语言的第四个项目,添加了赋值,即允许 a = Expr 和 a= b = Expr 的存在!暂时把Int和number(double)合在了一起,现在就两个主要的类型,Number和String!

2020-02-25

Calculator_version_2020_2_3.zip

计算机的第一个版本,输入一个式子,1+2-3/5^6%3都能算出来。通过中缀表达式转后缀表达式,然后通过后缀表达式求解。缺点是数字只能是一个一个的,而且不支持数学函数

2020-02-09

Suatinlang_version_2020_3_9.zip

suatin编程语言的项目! 改进了异常,之前的异常机制只能告诉我有问题,到底问题在哪不知道,改进之后可以得到问题所在的语句了! 还重写了错误种类!

2020-03-09

Suatinlang_version_2020_3_26.zip

suatin编程语言的倒数第几个项目。做了一些变化,比如竟可能的把实现和声明分开了。把异常机制的模板给去掉了,这个异常以后再搞其他项目的时候要好好考虑清楚。现在6千行代码,每次都要大改异常机制,一改就是几百个函数 这次的项目最重要的就是完善了循环的功能,增加了break;和continue;还增加了打印语义树的方法

2020-03-26

Suatinlang_version_2020_3_19_v3.zip

Suatin编程语言第N个项目,增加了调试的功能!assert关键字,可以卡住解释器的解释过程,当卡住后输入exit,解释器会关闭,输入其他的会继续往下解释!

2020-03-19

高速缓存命中率探究系统

《企业级编程与控制理论》中的一个项目。缓存命中率是指,在查找前台缓存时,因为前台缓存是高速缓存,内存小,所以存在着找不到的情况!找不到某个项目的话,就要到后台查找,查找到并返回给用户,并在前台缓存中留一份!!! 这个系统探究的就是,高速缓存器大小与其命中率的关系,如果我要保持80%的命中率,我该设计多大的高速缓存!!!

2020-03-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除