Python
文章平均质量分 59
申龙斌
70后老程序员一枚,精通C#,从事油田信息化,爱读书,5年多区块链经验,折腾过Basic, C/C++, Python, ObjectiveC, R, Python, Rust, 最近迷上了树莓派&Pico。
展开
-
使用Kaitai Struct解析二进制文件
如果经常与二进制文件结构打交道,则需要一些DSL(领域特定语言)和工具来解析二进制文件,以下是一些常用的选择:Kaitai Struct是一种领域特定语言(DSL)和工具集,用于描述和解析二进制格式的数据结构。它可以帮助您快速创建用于读取、解析和处理各种二进制文件格式的解析器代码。BinData:BinData是Ruby编程语言的DSL,用于解析二进制文件。它提供了一种简洁的方式来定义二进制文件的结构,并解析和访问其中的数据。原创 2023-05-26 07:25:33 · 1463 阅读 · 0 评论 -
强大的ANTLR4(7)--常用的语法和词法
大写字母开头的单词是词法规则(Lexer Rule),小写字母开头的单词是文法规则。原创 2023-01-05 14:56:07 · 334 阅读 · 0 评论 -
强大的ANTLR4(6)--设计语法
四种抽象的计算机语言模式:1)序列:一列元素,数组2)选择:在多个可选方案中做出选择3)词法符号依赖:例如左右括号匹配4)嵌套结构:一种自相似的语言结构。多个整数的语法规则:INT+原创 2023-01-04 16:19:07 · 347 阅读 · 0 评论 -
强大的ANTLR4(5)--在语法中嵌入动作
手里有一个文本文件,想从中提取出指定的列。列之间是用TAB分隔的,每行以一个换行符结尾。这个程序提取了第2列的内容。原创 2023-01-03 15:49:15 · 170 阅读 · 0 评论 -
强大的ANTLR(4)--提取一个JAVA程序的接口
在JavaListener.py中,进入类定义、退出类定义、进入方法定义、退出方法定义,需要在这些地方插入我们自己的监听器代码,提取出接口方法。有下面一段简单的JAVA程序(Demo.java),需要从这个JAVA类中提取所有的方法,并且保留空白字符和注释。利用JAVA的反射机制,可以得到所有方法的签名,但还要保留空白字符和注释,那就只能解析源代码了。成功运行后,可以生成Demo.java中类的接口定义。原创 2023-01-02 06:30:00 · 480 阅读 · 0 评论 -
强大的ANTLR4(3)--算术表达式
下面要构建一个简单的计算器,规则如下:1)可以由一系列语句构成,每条语句由换行符终止2)一条语句可以是表达式、赋值语句或空行3)可以有加减乘除、小括号以及变量出现可以看到ANTLR非常强大,可以出现递归定义,expr的定义里面又出现了expr。几个关键源代码:1)ExprLexer.py 词法分析器2)ExprLexer.tokens 词法符号3)ExprListener.py 语法监听器4)ExprParser.py 语法解析器该程序也可以用文本形式打印出语法分析树。原创 2023-01-01 15:47:57 · 727 阅读 · 0 评论 -
强大的ANTLR4(2)
输出的是词法分析结果。几个术语:token 词法符号tokenizing 词法符号化lexer 词法分析器lexical analysis 词法分析识别一门语言,需要经过二个阶段,第一个阶段就是词法分析,第二个阶段是语法分析,生成一棵语法分析树。语法分析器类,每一条规则都对应一个方法,还有一些辅助代码。词法分析器类每个词法符号对应于一个数字形式的类型。在遍历语法分析树的时候,遍历器能够触发一系列“事件”,可以称为“回调函数”,通知我们提供的监听器对象。原创 2022-12-30 14:23:43 · 662 阅读 · 3 评论 -
强大的ANTLR4(1)
以前对于《编译原理》这门课有一种恐惧,现在强大的工具越来越多,有些原理并不一定要非常清楚,也是可以设计一种编程语言的,那就是ANTLR4。Antlr4(全名:ANother Tool for Language Recognition) 是一款强大的语法分析器生成工具,可用于读取、处理、执行和翻译结构化的文本或二进制文件。ANTLR是用 Java 语言编写,作者是旧金山大学的 Terence Parr 博士,早在1989 年,他就开始创作ANTLR。原创 2022-12-29 22:05:17 · 610 阅读 · 0 评论 -
欧拉计划第265题:二进制圈
每一种排圈方式都可以按如下方式编码:以全为0的子串作为起点,将所有的二进制位连接起来。在第一种排圈方式中,按顺时针顺序得到的3位二进制子串分别是:000、001、010、101、011、111、110和100。遍历所有情况,需要遍历 2**32 = 4294967296种情况,我使用了带剪枝的回溯算法。记S(N)是所有排圈方式的编码之和,我们可以看到S(3) = 23 + 29 = 52。这里用了一个评估函数,不同子串的个数,如果出现了相同的子串,则返回-1,用于剪枝。原创 2022-11-02 08:55:09 · 168 阅读 · 0 评论 -
欧拉计划第191题:出勤奖励
某所学校给有出勤和守时表现良好的孩子发放现金奖励。如果孩子连续三天缺席,或是有多于一次迟到,则拿不到这份奖励。根据n天的实际出勤情况,我们可以生成L(迟到)、O(准时)和A(缺席)这三个字母组成的字符串。根据30天的出勤情况生成的字符串中,有多少个是可以获得奖励的串?原创 2022-10-22 20:26:13 · 431 阅读 · 0 评论 -
欧拉计划第68题:魔力五边形环
从最外侧结点所填的数最小的线开始,按顺时针方向,每个解都能被唯一表述。在“魔力”五边形环中,在其中填入1至10这10个数,根据不同的填写方式,可以组成16位或17位数字串。求最大的16位数字串是多少?原创 2022-09-12 16:40:37 · 157 阅读 · 0 评论 -
Pandas里的Series学习
python里有列表,很强大,pandas里的Series更强大,它是dataframe的基石。原创 2022-07-31 22:08:02 · 391 阅读 · 0 评论 -
欧拉计划Python解法(第11题-第15题)
欧拉计划提供了几百道由易到难的数学问题,你可以用任何办法去解决它,当然主要还得靠编程,但编程语言不限,已经有Java、C#、Python、Lisp、Haskell等各种解法。原创 2022-08-08 08:54:38 · 269 阅读 · 0 评论 -
欧拉计划Python解法(第6题-第10题)
欧拉计划提供了几百道由易到难的数学问题,你可以用任何办法去解决它,当然主要还得靠编程,但编程语言不限,已经有Java、C#、Python、Lisp、Haskell等各种解法。原创 2022-07-30 08:36:32 · 394 阅读 · 0 评论 -
欧拉计划Python解法(第1题-第5题)
欧拉计划提供了几百道由易到难的数学问题,你可以用任何办法去解决它,当然主要还得靠编程,但编程语言不限,已经有Java、C#、Python、Lisp、Haskell等各种解法。原创 2022-07-27 21:56:12 · 518 阅读 · 0 评论 -
Python3里使用matplotlib绘制饼状图
假设某单位的人员年龄构成是:小于30岁,4人,30-35岁,7人,36-40岁,16人,41-45岁,8人,46-50岁,7人,51岁以上,6人用饼图可以更清楚地表现出这种人员分布情况。原创 2022-04-28 20:41:53 · 1011 阅读 · 0 评论 -
在Python3里使用matplotlib绘折线图和散点图
网上关于Python使用matplotlib包进行绘图的文章不少,自己写一遍掌握得才更好。matplotlib是用于创建二维图表和图形的库,它不在标准python库之中,需要单独安装。原创 2022-04-21 21:23:18 · 2275 阅读 · 0 评论 -
一张图看懂Python3的字符串格式化
Python3里的字符串格式化功能很强大,新手看到下面的形式描述可能会比较害怕:format_spec ::= [[fill]align][sign][#][0][width][grouping_option][.precision][type]我精心制作了一张图,所有要点都在里面的了。...原创 2022-04-13 21:15:02 · 845 阅读 · 0 评论 -
最近要给单位里的员工培训Python,选哪本教材合适?
领导让我给没有编程基础的员工培训Python编程,我从网上搜了五本基础教材:(1)Python编程从入门到实践(2)零基础学Python(3)零基础入门学习Python(第2版)(4)Head First Python(5)Python程序设计基础对比了一番,最后选了一本作为教材。原创 2022-01-21 16:09:36 · 1010 阅读 · 0 评论