lisp专题

《计算机程序的构造和解释》阅读笔记:准备(3)【python3简单实现lisp解释器(3)】

下面是我在原基础上添加了一些功能的解释器代码(超详细的注释) ################ python3 实现 lisp 解释器'''语言的语法是指组成正确的语句或表达式的顺序,语义指那些表达式或语句的内在含义。解释器流程程序 => 解析 => 抽象语法树 => 执行(语义) => 结果1:解析语法2:添加环境3:执行4:添加交互式5: 将Env重定义为Class6:添加符

《计算机程序的构造和解释》阅读笔记:准备(2)【python3简单实现lisp解释器(2)】

四:交互式 可以在终端输入代码并显示执行结果 '''语言的语法是指组成正确的语句或表达式的顺序,语义指那些表达式或语句的内在含义。解释器流程程序 => 解析 => 抽象语法树 => 执行(语义) => 结果1:解析语法2:添加环境3:执行4:添加交互式'''import math import operator as opSymbol = str # 字符串List =

《计算机程序的构造和解释》阅读笔记:准备(1)【python3简单实现lisp解释器(1)】

打算深入阅读一下《计算机程序的构造和解释》,这应该会是一个比较漫长的过程,虽然这本书章节不多,但信息量挺大的,书的最后还会编写一个简单的解释器,也可以当作编译原理的简单入门。 这是对于《计算机程序的构造和解释》这本书阅读的准备,因为书用lisp语言,所以我先看了一下(How to Write a (Lisp) Interpreter (in Python))(如何用python实现一个lisp解

Lisp解析器技术文档

Lisp解析器技术文档 目录  Lisp解析器技术文档  一、引言 二、Lisp语言简介 三、Lisp解析器实现

【栈】736. Lisp 语法解析

本文涉及知识点 栈 LeetCode736. Lisp 语法解析 给你一个类似 Lisp 语句的字符串表达式 expression,求出其计算结果。 表达式语法如下所示: 表达式可以为整数,let 表达式,add 表达式,mult 表达式,或赋值的变量。表达式的结果总是一个整数。 (整数可以是正整数、负整数、0) let 表达式采用 “(let v1 e1 v2 e2 … vn en exp

用Python实现一个Lisp解析器

一、模块代码 Talk is cheap, show the code: # lisp.pyimport rescanner = re.Scanner([(r'\s+', None),(r'[^"()\s]+|"[^"]*"', lambda scanner, token: ('NAME', token)),(r'\(', lambda scanner, token: (token, toke

Common Lisp笔记

在计划学习函数式编程的时候,我一开始打算学习的是 F#。因为我朋友就是在 DTU 上的学,F# 就是 DTU(丹麦理工)开发的。但是由于 F# 和微软的 .NET 绑定,而在 macOS 上,目前版本的 .NET 的是有些问题的,开发非常繁琐,而且某些错误会导致整个解决方案出错,需要重建整个项目。最后就还是选择了 Common Lisp 这个非常古早的函数式编程语言作为开始,后续如果再需要学习 F

Emacs lisp函数调用defun(五)

1.无参函数调用(defun ADD ()"add print test"(interactive "add func")(message "xxx--------------add" ))(defun SUB ()"sub print test"(interactive "sub func:")(message "xxx--------------sub" ))(defun SUM ()"ad

【简单介绍下Lisp的学习历程】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 目录 🏆前言🏆初识 Lisp:基础概念🏆进阶 Lisp:核心原理🏆Lisp 方言专研:Common Lisp 和 Scheme🏆实践和项目🏆掌握工具和资源�

我的 Lisp 学习历程:从新手到熟练掌握

Lisp,作为一种功能强大且具有独特思维方式的编程语言,一直以来都吸引着我。在我的编程之旅中,我决定深入学习 Lisp,并在这个过程中经历了许多挑战和成长。本文将分享我在 Lisp 学习过程中的心路历程。 第一次接触 Lisp,我被它的括号表达式语法所吸引。起初,我觉得这种语法有些不习惯,但随着时间的推移,我逐渐理解了这种表达方式的优势。Lisp 的简洁性和表达能力使其成为一种非常灵活的语言。通

231_emacs lisp cl-lib初探

完整的common lisp的学习集合整理如下:     https://github.com/GreyZhang/g_lisp     继续spacemacs的学习,确切来说,现在的学习扩展到了emacs的实现了。上一次,我们的分析到了如下代码:     接着,算是又一次不顺利。因为,这里又遇到了好几个不熟悉的东西。也是逐个击破吧!首先,探索一下cl-lib。为了了解相应的功能,先去看

初识LISP(3)——谓词、字符及数组

一、LISP—谓词          谓词的作用是做一些条件判断,从而筛选出需要的结果(比如一组数中选出偶数)。 谓词 描述atom它接受一个参数,并返回t如果参数是一个原子或,否则nil。equal它有两个参数,并返回t,如果他们在结构上相同或否则nileq它有两个参数,并返回t,如果它们是相同的相同的对象,共享相同的内存位置或否则nileql它有两个参数,并返回t如果参数相等,或者

初识LISP(2)——结构、循环与函数

一、LISP—决策 Construct 描述 cond 这个结构是用于用于检查多个测试行动作条件。它可以嵌套if或其他编程语言语句。 if if结构有多种形式。在最简单的形式,它后面跟着一个测试条,测试操作和一些其它相应措施(次)。如果测试子句的值为true,那么测试的动作被执行,否则,由此产生的子句求值。 when 在最简单的形式,它后面跟着一个测试条和测试操作。如果测试子句的值为t

初识LISP(1)——基本的结构、语法与数据类型

既然下定决心学习LISP,我计划学习LISP的过程都以博客的形式做总结。当然是需要参考学习网上的教程,网上的教程讲解的比较详细。而我打算以自己的理解来做尽可能简洁的总结,一方面将自己的学习过程做一个回顾,另一方面,如果日后忘记了什么知识点,也方便查询。 一、LISP—程序结构       首先lisp很独特的一点就是圆括号,程序自始至终都是圆括号,例如函数、表达式……这一特色的

(转)Lisp的本质

因为这学期学习《人工智能》课程的原因,无意中接触到了LISP语言,本着了解的态度在网上搜了搜关于LISP的文章,于是看到我转载的文章《LISP的本质》。对于我这样对于java、xml、C,乃至LISP都一般的人来说,看这篇文章至少可以将散碎的知识分个类,对,就是这样。 重新审视XML 千里之行始于足下。让我们的第一步从XML开始。可是XML已经说得更多的了,还能有什么新意思

Lisp之根源 --- 保罗格雷厄姆

Lisp之根源 --- 保罗格雷厄姆 来源 http://daiyuwen.freeshell.org/gb/rol/roots_of_lisp.html   约翰麦卡锡于1960年发表了一篇非凡的论文,他在这篇论文中对编程的贡献有如 欧几里德对几何的贡献.1 他向我们展示了,在只给定几个简单的操作符和一个 表示函数的记号的基础上, 如何构造出一个完整的编程语言. 麦卡锡称这种语 言为Lis

visual lisp/autolisp dcl对话框开发 --列表框(list_box)

本文演示dcl list_box控件 效果图: listbox.lsp ;by 鸟哥 qq1833183060;功能:演示 1、 list_box控件的使用。;所需文件包括: listbox.lsp listbox.dcl;;加载步骤:;1、加载lsp;2、命令行输入 test(defun c:test( /

visual lisp/autolisp dcl对话框开发 --复选框(toggle)

先上效果图: toggle.lsp: ;by 鸟哥 qq1833183060;功能:演示 1、 toggle控件的使用。2、通过toggle修改text控件的值。3、通过控件设置系统变量;所需文件包括: toggle.lsp toggle.dcl;;加载步骤:;1、加载lsp;2、命令行输入 test(defun c:

visual lisp dcl对话框开发 --滑动条(slider)

演示dcl滑动条用法 slider.lsp: ;by 鸟哥 qq1833183060;功能:演示 1、 slider;所需文件包括: slider.lsp slider.dcl;;加载步骤:;1、加载lsp;2、命令行输入 test(defun c:test( / continue curBtn dlgId ) (</

visual lisp dcl对话框开发 --下拉列表(popup_list)

popup_list.lsp ;by 鸟哥 qq1833183060;功能:演示 1、 popup_list;所需文件包括: popup_list.lsp popup_list.dcl;;加载步骤:;1、加载lsp;2、命令行输入 test(defun c:test( / continue curBtn dlgId )(setq lists '

visual lisp dcl对话框开发 --单选按钮(radio)

radio.lsp: ;by 鸟哥 qq1833183060;功能:演示 1、 radio按钮;所需文件包括: radio.lsp radio.dcl;;加载步骤:;1、加载lsp;2、命令行输入 test(defun c:test( / continue curBtn dlgId )(setq dlgId (<

visual lisp dcl对话框开发 --为按钮添加事件处理,通过按钮修改文本值

演示位按钮定义事件处理程序,在事件处理程序里修改文本的值 button.lsp: ;by 鸟哥 qq1833183060;功能:演示 1、 在对话框中显示文本;所需文件包括: button.lsp button.dcl;;加载步骤:;1、加载lsp;2、命令行输入 test(defun c:test( / continue curBtn dlgId )(d

visual lisp dcl对话框开发 --显示多行文本

text2.lsp ;by 鸟哥 qq1833183060;功能:演示 1、 在对话框中显示多行文本;所需文件包括: text2.lsp text2.dcl;;加载步骤:;1、加载lsp;2、命令行输入 test(defun c:test( / continue curBtn dlgId )(setq dlgId (

visual lisp/autolisp dcl对话框开发 --显示文本

演示如何在对话框中显示文本 text.lsp ;by 鸟哥 qq1833183060;功能:演示 1、 在对话框中显示文本;所需文件包括: text.lsp text.dcl;;加载步骤:;1、加载lsp;2、命令行输入 test(defun c:test( / continue curBtn dlgId )(setq dlgId

visual lisp dcl对话框开发 --控件右对齐

演示按钮右对齐 alignment.lsp ;by 鸟哥 qq1833183060;功能:演示 1、alignment属性;所需文件包括:alignment.lsp alignment.dcl;;加载步骤:;1、加载lsp;2、命令行输入 test(defun c:test( / continue curBtn dlgId )(setq dlgId (load_dialog "a

visual lisp dcl对话框开发 -- image(图像)控件

lsp文件 ;by 鸟哥 qq1833183060;功能:演示 1、dcl image 控件的使用;所需文件包括:dcl_image.lsp dcl_image.dcl b.sld;;加载步骤:;1、(defun c:imgtest( / dlgId )(setq dlgId (load_dialog "dcl_image.dcl")