自己写编程语言-m语言】的更多相关文章

一直对技术有很强的兴趣,终于,决定要写自己的语言(m语言).那就先从最简单的开始:解释执行器. 一套完整的语言包含的肯定不止解释执行器了,还要有编译器和IDE,也就还要有语法高亮.智能提示等,不过还没学会那些,先搞个最基本的解释执行器. 思路如下: 定义好希望的语法(基本语句有:顺序执行.if语句.for语句.while语句.系统自有函数定义.用户函数定义.函数调用) 找一款词法语法解析器工具,让字符串流变成语法书(AST) 编写解释执行器 元数据收集 变量作用域定义.查找 解释执行 先设想我们…
atitit.编程语言 程序语言 的 工具性 和 材料性 双重性 and 语言无关性 本质 #---语言的 工具和材料双重性 有的人说语言是个工具,有的人说语言是个材料..实际上语言同时属于两个属性..走跟个光的波粒二重性雅十.. #---语言的工具属性 走跟个对于开发效率最大的影响就是工具... 现今,使用比较广泛的语言主要的c语言系列的..   按照开发效率次序:: c++<java<groovy<php/c#<Gail框架 作者 老哇的爪子 Attilax 艾龙,  EMAI…
(Z语言基于.NET环境,源码中有很多高技术的代码,让更多的人知道对大家有会有很好的帮助,请管理员一点要批准放在首页) 本人实现的中文编程语言Z语言现在正式开源,采用LGPL协议. 编译器核心的网址为: https://github.com/TKT2016/ZCompileCore 以后还有把其它项目放上来. 编译生成的是.NET CLR文件. 这个语言完成需要的工作量很大,期待你的加入. 交流QQ群:362762284 我的邮箱:TKT2016@21cn.com 语言简单展示: 简略使用:控制…
学习如何构造一个 C 文件并编写一个 C main 函数来成功地处理命令行参数.   我知道,现在孩子们用 Python 和 JavaScript 编写他们的疯狂"应用程序".但是不要这么快就否定 C 语言 -- 它能够提供很多东西,并且简洁. 如果你需要速度,用 C 语言编写可能就是你的答案.如果你正在寻找稳定的职业或者想学习如何捕获空指针解引用,C 语言也可能是你的答案!在本文中,我将解释如何构造一个 C 文件并编写一个 C main 函数来成功地处理命令行参数. 我:一个顽固的 …
一 .函数 1.1. 函数的定义和调用 函数的定义以funckeyword作为前缀,接着是函数名字,接着跟着一个能够带有參数.也能够不带參数的圆括号.接着用-> 指示函数的返回类型. 函数运行体用一对大括号{}包围.例如以下定义了一个函数名为sayHello的函数.该函数包括一个名字为personName,类型为String的输入參数. func sayHello(personName:String) -> String { let greeting ="Hello, "…
首先声明啊,写这个是因为一些加我QQ的朋友问我学习经验,我才写的. 另外,如果是二级党,那么请用谭浩强老师的书.然后你就可以不用看了.倒不是有偏见,而是我写的这个东西,根本不是为了考试,而是为了和新手交流怎么学习C语言,怎样编写代码的. [如果要看,最后三条那是一定要看的.] 如果不是二级党,那么,开始: 一.      目的 我们做什么事情都是有目的的,比如说我,学习编程的最终目的就是从事软件行业.这个目的要十分明确,不能说想学编程,那么学编程的目的呢?当然如果仅仅是兴趣,我觉得这就是最光明正…
一 .实例的初始化          实例的初始化是准备一个类.结构或枚举的实例以便使用的过程.初始化包括设置一个实例的每一个存储属性为一个初始值,以及执行任何其它新的实例能够使用之前需要的设置或初始化. 一个类.结构或枚举能定义一个初始化方法来设置它的特性,用来确保它的实例的所有属性都有有效的初始值. 通过调用类.结构或枚举提供的初始化方法来执行实例的初始化过程. 类的实例也能实现一个析构,用来在类的实例释放之前执行任何特定的清除过程来释放分配的专有资源. 1 . 初始化方法的定义 初始化方法…
属性是特定类.结构或枚举的相关值,属性根据作用域不同分为实例属性与类型属性,还可以根据是否存储分为存储属性和计算属性. 1.1 实例属性 为一个类.结构或枚举定义的属性默认属于实例属性,即该属性属于为该类型创建的不同实例,不同实例具有属性的不同拷贝.每次当你创建了一个特定类型的新的实例,它总有一组自己的属性,即每个实例带有自己的一组属性. 实例属性可以是存储属性和计算属性,可以为类和结构的实例定义存储属性和计算属性,而枚举实例只能定义计算属性. 另外所有类型的实例都有一个称为self的隐含的属性…
如图是一段简单的文件操作代码,以为打开文件"test1221_1.py",若不存在此文件,则创建此文件.接下来并输出相关信息. 当少写了黄色方框圈起来的一行看似不经意的带有编码格式的注释码时,就会报如图所示的错误: 究其原因是:Python在默认状态下不支持源文件中的编码所致. 解决方案有如下三种: 一.在文件头部添加如下两行注释码: #!/usr/bin/python # -*- coding: <encoding name> -*- 例如,可添加# -*- coding…
Swift 语言支持C语言全部的控制语句.包含for  和while循环语句,if和switch条件语句,以及break和continue控制语句等. Swift 语言除了支持以上语句,还添加了一个for-in循环语句.来更方面地遍历数组.词典.范围.字符串和其他序列等. 1.for-in循环 for index in 1...5 { println("\(index) times 5 is \(index *5)") } 以上for-in循环用来遍历一个闭合的的范围. 为了语句的简洁…
选项链是使用选项来查询和调用其属性.方法或下标的一个过程,假设选项包括一个值,则属性.方法.下标的查询和调用成功,否则,调用返回nil. 选项链能用在不论什么类型的选项来检查对其一个属性.方法.下标的查询和调用是否成功. 选项链能够作为强制展开的替代方式使用,但选项链的使用更加安全,不会触发一个执行时错误. 在调用一个选项的属性.方法或下标方法时,通过在该选项值的后面放置一个(?)标记来规定一个选项链.这与在选项值后放置一个(!) 来强制展开选项的值很相似.基本的不同是在选项值为nil时选项链可…
一 基本操作运算 1. 赋值操作 在Swift 中,能够使用赋值操作为一个常量或一个变量赋值,也能够使用多元组一次为多个常量或变量赋值. Swift 的赋值操作与其他语言最大的不同是赋值操作除了可以为变量或常量赋值外本身不可以返回值. 这个特征能够避免某些条件下赋值操作错误地用于相等比較操作. 如在C语言中,if (x = =y) 非常easy误写作if (x = y) ,尽管逻辑结果不对,但C语言的编译器却无法检查出这样的情况,而Swift 语言却能够有效避免这样的情况发生.由于 在Swift…
泛型允许你定义一个宽松.可重用的函数或者类型,使用泛型能够避免代码的重复,也能以更清楚和抽象的方式来表达程序的意图. 泛型是Swift语言提供的强大功能之一,Swift提供的许多标准库都使用了泛型来创建,如Swift提供的数组和词典类型.通过使用泛型,你能使用一个数组和词典来包含和存储任何类型的元素. 1.1 泛型函数 使用Swift语言你能定义一个可以工作于任意类型的泛型函数,从而不必为每种类型都定义一个具有相同功能的函数,这样就可以大大减少代码的重复. 如对一个实现任意类型值交换(swap)…
协议定义了适合某个特定任务或功能需要的方法.属性和其它需求的一个蓝图.协议本身不提供这些需求的实现,它只是描述了一个任务或功能实现的蓝图. 协议与java 语言中的接口定义类似,都是描述了一个实现可以干什么,而本身却不包含任何实现.与接口不同的是swift语言定义的协议可以被一个类.结构.或者枚举采用,来提供协议规定需求的实际实现,而java 语言的接口只能被类实现. 满足一个协议需求的任何类型(即实现了该协议规定需求)被称为符合该协议. 协议中规定的需求可以是实例属性.实例方法.类型方法.操作…
扩展是为一个已经存在的类.结构.枚举类型添加新功能的一种方式,包括为不能存取源代码的那些已经存在的类型添加功能. 扩展类似于Objective-C语言中的类别,与类别不同的是Swift语言的扩展没有名字. 扩展能够为已存在类型: 1)增加计算属性和计算静态属性: 2)定义新的实例方法和类型方法: 3)提供新的初始化方法: 4)定义新的下标方法: 5)定义和使用新的嵌套类型: 6)使其符合某个协议 使用扩展为已存在类型添加的新功能,对于该类型的所有实例都可用,包括那些在扩展创建之前就已经创建的实例…
一.类的继承 类能够从其它类继承方法.属性以及其它特性,当一个类从另外的类继承时,继承的类称为子类,它继承的类称为超类.在Swift中,继承是类区别与其它类型(结构.枚举)的基础行为. 1.1 .类的继承 类的继承语法如下: class SomeClass: SomeSuperclass { // class definition goes here } 该例定义了一个新类SomeClass,它继承自SomeSuperclass类,SomeSuperclass类是SomeClass类的超类,So…
一.方法 方法是与特定类型相关的函数.与属性一样,方法也包括实例方法和类型方法. 类.结构.枚举都能定义实例方法,用来封装或实现给定类型的一个实例相关的功能或特定任务. 类.结构.枚举也能定义与类型本身相关的类型方法.类型方法与Objective-C语言中的类方法相似,类型方法只能在类型本身上调用. 1.1 实例方法的定义 实例方法是属于特定类.结构.枚举的实例的函数,它们用来支持那些实例的功能:提供存取和修改实例属性的方式,或者是提供与实例的功能相关的功能. 实例方法定义采用与函数相同的语法.…
Swift语言中,具有类特征的类型包括三种,即枚举类型.结构类型(包括基本类型,基本类型实际都是结构类型的特例).类.其中枚举类型.结构类型是属于值类型,类属于引用类型.三种类型都可以添加属性.方法.下标方法,能够使用扩展进行功能扩展,使用协议等. 一. 枚举 枚举定义了一种包含一组相关值的公共类型.枚举是Swift中的一种与类类似的类型,具有许多传统类才有的特征,例如计算属性.实例方法,能够通过扩展或协议增强功能等. 1.1 枚举定义 Swift 语言的枚举类型的定义语法如下: enum Co…
一.字符串( String  )和字符类型(Character) 字符串是一种字符的带次序的收集类型(相当于数组),字符是字符串中的元素. 在Swift 语言中,字符串是编码独立的Unicode字符的组合,并提供相应方法来获取以各种Unicode呈现方式包含的字符. 1. 字符串定义和初始化 Swift 语言使用var或let关键字来定义一个常量字符串(不可修改)或变量字符串(可以修改).  而不是像Object C语言一样定义两种不同的类型. Swift 语言允许使用一个双引号的字符串来初始化…
一  .   常量和变量 Swift语言 对常量和变量的声明进行了明确的区分 Swift语言的常量类型比C 语言的constants类型更加强大,语义更加明确. 常量和变量的区别是常量在设置或初始化后其值不允许改变,而变量允许,除此之外,Swift语言中变量类型能使用的地方,常量类型也同样能使用,如作为输入参数等. Swift语言中常量类型使用let 关键字进行声明,变量类型使用var 关键字进行声明,如 let maximumNumberOfLoginAttempts =10        …
Swift 是苹果开发和提供的供开发IOS 和OS X应用的一门新的语言.Swift语言基于C 和Objective-C语言,除了提供C 和Objective-C语言具有的所有语法功能外,为了编程方便和高效,Swift在语法上作了大量的优化和改进. Swift采用安全编程模式,具有许多先进的强大的功能 ,如动态运行时.编译动态进行类型检查.Closures.下标功能.自动引用计数.选项类型.通用类型和类型编译时推断.类型的扩展和嵌套.协议类型.功能和类型的通用化.操作符的定制和添加. Swift…
好了,言归正传,裸机程序没有操作系统的支持,想要用c语言,就只能先使用汇编语言手动配置c语言需要的环境,听起来很高大上,其实需要做的很简单:指定堆栈指针的值就好. 那么完成这个简单的事情之前,先要明白c语言的栈的以下几个概念: 1. 空栈和满栈:这两个概念不是说的栈是空的还是满的,空栈是指栈指针指向的是栈顶元素的下一个地址.满栈指的是栈顶指针指的是栈顶元素. 2. 升栈和降栈:升栈就是栈向上生长,降栈就是栈向下生长. 注:arm是满降栈. 3. 栈帧:这个有必要好好理解一下,C语言中,每个栈帧对…
目录 获取源码关注公众号<猿小龙> 1.用C语言实现内存写入(harib01a) C语言中如果使用了write_mem8函数,就会跳转到_write_mem8,此时参数指定的数字就存放在内存里,分别是:我们想要取得参数指定的数字0x1234或者0x56内容,只需要用MOV指令读入寄存器即可.naskfunc.nas代码 ; naskfunc ; TAB=4 [FORMAT "WCOFF"] ; 制作目标文件的模式 [INSTRSET "i486p"] ;…
版本更新 最近 GScript 更新了 v0.0.11 版本,重点更新了: Docker 运行环境 新增了 byte 原始类型 新增了一些字符串标准库 Strings/StringBuilder 数组切片语法:int[] b = a[1: len(a)]; 具体更新内容请看下文. 前言 前段时间发布了 GScript 的在线 playground, 这是一个可以在线运行 GScript 脚本的网站,其本质原理是接收用户的输入源码从而在服务器上运行的服务:这简直就是后门大开的 XSS 攻击,为保住…
一 类型检查 1. 类型检查操作符 类型检查用来检查或转换一个实例的类型到另外的类型的一种方式. 在Swift中,类型检查使用is和as操作符来实现. is操作符用来检查一个实例是否是某种特定类型,如果是返回true,否则返回false. as操作符用来把某个实例转型为另外的类型,由于实例转型可能失败,因此Swift为as操作符提供了两种形式:选项形式as?和强制形式as. 选项形式(as?)的操作执行转换并返回期望类型的一个选项值,如果转换成功则返回的选项包含有效值,否则选项值为 nil 强制…
从微软官网下载vs2017安装后,打开 文件>新建>项目>Visual C++空项目(选择名称,位置)确定>找到源文件 鼠标右击>添加>新建项>Visual C++ (C++文件)(修改名称 .c 或 .cpp)添加> #include<stdio.h> int main() { printf("hello world"); getchar();//避免运行一闪而过 return 0; } 调试:调试>开始调试(不执行)…
C++ 标准库没有提供日期类型,使用C预压的日期和事件操作. 使用时引入头文件  <ctime> . 四个和事件相关的函数: clock_t // 系统时间和日期表示为某种整数time_t // 系统时间和日期表示为某种整数size_t // 系统时间和日期表示为某种整数tm // 表示为结构体 struct tm{ int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; i…
C 作者:han1202012 发表于2013-11-1 19:53:29 原文链接 阅读:28 评论:0 查看评论…
好吧!我承认我想标题党了.大家对解释器的吸引,绝对没有自己动手写一个脚本语言更有吸引力.不过如果看到标题过来的,可能也是 我承认,之前收藏的减肥视频,我都是这样对待他们的. 不过我还是相信很多程序猿or程序媛不仅仅希望可以做出一个牛逼的产品,更想做出来一个牛逼闪闪的编程语言.而这里就是朝着开发一个脚本语言的方向去努力 恩!我就是xxoo语言之父. 前几篇文章已经实现一个简易的加减法计算器,想必看了文章之后可以很快的写出来一个乘除法计算器.那么如果加减乘除混合运算呢? 这节将实现类似6-1*2+4…
C语言的语法太枯燥了 换个写法   #include <stdio.h> #include<stdlib.h> #define end } #define if(x) if (x){ #define then #define while(x) while(x){ #define function(x) void function(x){ #define else }else{ #define sd scanf("%d",&x); #define s(a)…