lex

购物车小程序

筅森魡賤 提交于 2020-07-23 20:43:29
#!/usr/bin/env python #-*- coding:utf-8 _*- """ @author:cjs @file: shopping.py @time: 2020/05/27 需求: 1、启动程序后,让用户输入工资,然后打印商品列表 2、允许用户根据商品编号购买商品 3、用户选择商品后,检测余额是否足够,够就直接扣款,不够就提醒 4、可随时退出,退出时,打印已购买商品和余额 字符串所有操作: #!/usr/bin/env python #-*- coding:utf-8 _*- """ @author:cjs @file: string.py @time: 2020/05/28 """ name = "my name is {name} and my age is {age} years old" print(name.capitalize()) ###首字母大写 print(name.count("e")) ###计数,有多少个"e" print(name.center(100,"-")) ###打印100个字符,不够用"-"补齐 print(name.endswith("ex")) ###以ex结尾,如果是则打印True print(name.expandtabs(tabsize=30)) ###扩展tab健 print(name.find("n")) ##

Only part of matched string in flex in yytext

浪尽此生 提交于 2020-07-09 03:07:36
问题 I'm a newbie but I would like to know if I can, with flex, parse something with regex in a way yytext would only be part of the matched sequence. For example: @abcd{efgh, . I would like to match abcd once and use it then efgh, but I need to use the @ and the { to match them. Is this possible or do I have to process it entirely later in C? 回答1: You can use following context with the '/' operator. For eaxmple, abcd/efgh will match the string "abcd" only if its followed by "efgh", with the

Only part of matched string in flex in yytext

旧时模样 提交于 2020-07-09 03:07:26
问题 I'm a newbie but I would like to know if I can, with flex, parse something with regex in a way yytext would only be part of the matched sequence. For example: @abcd{efgh, . I would like to match abcd once and use it then efgh, but I need to use the @ and the { to match them. Is this possible or do I have to process it entirely later in C? 回答1: You can use following context with the '/' operator. For eaxmple, abcd/efgh will match the string "abcd" only if its followed by "efgh", with the

Copying entire input line in (f)lex (for better error messages)?

落爺英雄遲暮 提交于 2020-06-26 04:35:20
问题 As part of a typical parser using yacc (or bison) and lex (or flex), I'd like to copy entire input lines in the lexer so that, if there's an error later, the program can print out the offending line in its entirety and put a caret ^ under the offending token. To copy the line, I'm currently doing: char *line; // holds copy of entire line bool copied_line; %% ^.+ { if ( !copied_line ) { free( line ); line = strdup( yytext ); copied_line = true; } REJECT; } /* ... other tokens ... */ \n {

Bison : Line number included in the error messages

北慕城南 提交于 2020-05-22 07:11:44
问题 OK, so I suppose my question is quite self-explanatory. I'm currently building a parser in Bison, and I want to make error reporting somewhat better. Currently, I've set %define parse.error verbose (which actually gives messages like syntax error, unexpected ***********************, expecting ******************** . All I want is to add some more information in the error messages, e.g. line number (in input/file/etc) My current yyerror (well nothing... unusual... lol) : void yyerror(const char

第四章: 4.1 logging模块 | 正则表达式

倾然丶 夕夏残阳落幕 提交于 2020-05-04 03:26:53
修改json数据然后写入json文件中 f = open( ' 1234.json ' , ' r ' ,encoding= ' utf-8 ' ) data = f.read() data1 = json.loads(data) data1[ ' status ' ] = 1 f1 = open( ' 1234.json ' , ' w ' ,encoding= ' utf-8 ' ) json.dump(data1,f1) hashlib md5值的用法 # 加入下面这个就可以 password = input( ' 请输入密码: ' ) m = hashlib.md5() m.update(password.encode()) if m.hexdigest() == data1[ ' password ' ]: print ( ' 登录成功 ' ) configparser模块 增删该查 # 修改时区 default-time-zone = '+8:00' 为 校准的全球时间 +00:00 import configparser config = configparser.ConfigParser() config.read( ' my.cnf ' ) print (config[ ' mysqld ' ][ ' default-time-zone ' ] ) # 08:00

软件构造实验二-拷贝一个c文件 将其中的关键字int替换成float

落爺英雄遲暮 提交于 2020-05-03 22:47:03
1,新建 Parser Generator 点击project --> new 2,填写工程名字 随意取一个名字 点击OK 3,点击Project选项下的 parserwizard 分析器向导选项 这里需要填写 工程存放的目录,以及工程名字。 4,选择配置 这里选择 只lex文件,并创建main程序,单线程模式 点下一步 5,点击完成 6,程序会生成 mylexer.l 的lex空文件,我们需要建立一个简单的lex文件已作说明 将下列程序源代码覆盖生成的lex代码 1 % { 2 3 4 5 % } 6 7 8 9 %% 10 11 // 表示如果是在双引号(")中(即为字符串),则照常打印,编译时请删除此注释 12 13 \ " .*\" {printf( " %s " ,yytext);} 14 15 [^ \t\n]+ {printf( " %s " ,yytext);} 16 17 // 表示如果遇到float,且附加模式是后面跟有空白符,则将int替换为float,编译时请删除此注释 18 19 int /[ \t]+ {printf( " float " );} 20 21 \n|. {printf( " %s " ,yytext);} 22 23 %% 24 25 #pragma comment(lib,"y1.txt") 26 27 int main( void )

3星|拉姆·查兰《高潜》:管理常识汇编。理论和案例水平都一般

…衆ロ難τιáo~ 提交于 2020-05-03 21:10:52
高潜:个人加速成长与组织人才培养的大师智慧 书名中的“高潜”指的是高潜力人才。全书用“高潜”做线索,站在面向高潜人才、面向正在培养高潜人才的组织的角度,把一些管理常识穿起来,讲个人如何快速成长,组织如何稳定快速培养人才。 我认为同类书中,面向高潜人才与组织是不言而喻的。这个高潜的说法基本没有新意。 读后基本没看到有新意的管理学知识与观点。所举的案例也比较普通,一大半是公开资料可见的,作者亲历的案例也相对琐碎。 总体评价3星,有一定参考价值。 以下是书中一些内容的摘抄: 1:以下三项特质,是当今时代企业领导者必须具备的,因此也是真正的高潜必须具备的:1)敢于构想大格局;2)勇于捅破不可能;3)善于构建生态圈。P4 2:新时代的高潜领导者必须具备以下五大关键能力:·提高你的时间回报(第3章)。·激发他人及培养他人(第4章)。·成为创意及执行大师(第5章)。· 研究客户对手及环境(第6章)。·提高思考及判断能力(第7章)。P16 3:有人把电子邮件戏称为“工作中的AK-47”,稍不留神就会被其撂倒,打成筛子。在战场上,对AK-47必须谨慎小心;在工作中,电子邮件也必须严加防范,否则你就会哀叹“时间都去哪儿了”。P41 4:很多人认为布置完工作 讲清楚要求,自己要做的就干完了。世上哪有这样的好事呢?在此,你要铭记于心的是,高效执行的关键法则一一跟进确认。 P43 5:美国前国务卿科林

通过实例深入理解lec和yacc

佐手、 提交于 2020-03-29 19:04:51
本框架是一个lex/yacc完整的示例,包括详细的注释,用于学习lex/yacc程序基本的搭建方法,在linux/cygwin下敲入make就可以编译和执行。大部分框架已经搭好了,你只要稍加扩展就可以成为一个计算器之类的程序,用于《编译原理》的课程设计,或者对照理解其它lex/yacc项目的代码。 本例子虽小却演示了lex/yacc程序最重要和常用的特征: * lex/yacc程序组成结构、文件格式。 * 如何在lex/yacc中使用C++和STL库,用extern "C"声明那些lex/yacc生成的、要链接的C函数,如yylex(), yywrap(), yyerror()。 * 重定义YYSTYPE/yylval为复杂类型。 * lex里多状态的定义和使用,用BEGIN宏在初始态和其它状态间切换。 * lex里正则表达式的定义、识别方式。 * lex里用yylval向yacc返回数据。 * yacc里用%token<>方式声明yacc记号。 * yacc里用%type<>方式声明非终结符的类型。 * 在yacc嵌入的C代码动作里,对记号属性($1, $2等)、和非终结符属性($$)的正确引用方法。 * 对yyin/yyout重赋值,以改变yacc默认的输入/输出目标。 本例子功能是,对当前目录下的file.txt文件,解析出其中的标识符、数字、其它符号,显示在屏幕上

Windows下lex 与 yacc的使用(2)

两盒软妹~` 提交于 2020-03-20 03:09:49
Windows下lex 与 yacc的使用 之一个简单的小例子 题目要求:写一个小的程序。该程序复制一个文件,并将文件中的每个非空的空白字符序列替换为单个空格。 1.首先新建一个文本文档(在flex文件夹下),写好代码后将文件的扩展名改为“**.l”或者“**.lex”,如下所示: 2.然后运行“cmd”,进入DOS界面,过程如下: 3.这时在flex文件夹下就会生成一个“lex.yy.c”的文件,将它用VC 6.0 编译一下。 这时在flex文件夹下就变成了这个样子: 4,打开Debug文件夹,新建“q.txt”,内容如下: 5.然后DOS界面操作如下: 结果如下: 最后,要想得到正确结果,首先代码要正确,哈哈! 前期准备请点击这个链接:http://blog.csdn.net/tianqingdezhuanlan/article/details/44861759 来源: https://www.cnblogs.com/MouTou/p/5574844.html