自定义语言C--的词法系统1)类型系统:支持int、char、void基本类型,分别用词法记号表示为关键字int、char和void。
2)常量:字符常量(用单引号括起来)、字符串常量(用双引号括起来)、八/十/六进制整数常量(0开头表示八进制,0x开头表示十六进制)。
分别用词法记号表示为ch、str和num。
3)变量:与常量对应,使用标识符表示,词法记号表示为id。
4)表达式运算符:支持加减乘除、求余、取负、自增、自减算术运算,大于、大于等于、小于、小于等于、等于、不等于关系运算,与、或、非逻辑运算,表示为词法记号:‘+’,‘-’,‘*’,‘/’,‘%’,‘-’,‘++’,‘--’,‘>’,‘>=’,‘<’,‘<=’,‘==’,‘!=’,‘&&’,‘||’,‘!’。
注意:取负运算和减法运算在词法分析器里是被看做是同一个词法记号。
5)语句:支持赋值语句、do-while、while、for循环语句,if-else、switch-case条件分之语句、函数调用、函数返回、跳转等语句。
涉及的词法记号表示为赋值号‘=’,关键字do,while,for,if,else,switch,case,default,return,break,continue。
语句和函数体要求用大括号括起来,case和default后面需要跟冒号,因而需要包括各种分界符作为词法记号:‘{’,‘}’,‘;’,‘:’,‘(’,‘)’,‘,’。
2022/12/4 4:20:21 56KB 词法分析 编译原理 Lex实现
1
#include"iostream.h"#include"chess.h"#include"rule.h"#include"result.h"voidmain(){ charch; chessch1('x'); chessch2('o'); while(ch!='N'){ initboard(); qipan(); intk=1; while(1){ ch1.xiaqi();//'x'方先下 qipan(); if(ch1.judge()){ ch1.Wins(); ch2.Loses(); break; } if(k==5){//'x'方下了5次还未赢棋,即平手 ch1.Draws(); break; } ch2.xiaqi();//'o'后下 qipan(); if(ch2.judge()){ ch2.Wins(); ch1.Loses(); break; } k++; } ch1.show(); ch2.show(); cout<>ch; }}
2021/8/24 23:52:07 305KB C++ 三子棋代码
1
本文,广泛的类测试超过十年在加州大学伯克利分校,加州圣迭戈,说明在一个故事线,使材料的愉快和容易消化的算法基础。
重点放在了解每个算法背后的清晰的数学思想,一种是直观和严格的方式而不过分。
功能包括:盒来加强叙事的使用:件,提供历史背景,如何在实践中使用的算法描述,并为数学复杂的旅行。
仔细选择高级的主题,可以在一个标准的一个学期的课程,跳过,但可以覆盖在一个先进的算法课程或更悠闲的连续两个学期。
一个可访问的线性规划处理向学生介绍这一算法最大的成就。
一个可选的章在因子分解的量子算法提供了一个独特的窥视到这个令人兴奋的话题。
除了文字,Dasgupta还提供了一个解决方案手册,可以在网上学习中心。
2018/11/2 5:45:01 1.93MB computer science
1
程序名称:飞思卡尔智能车舵机调试工具v1.1程序作者:LinX时间:2009-03-07联系方式:QQ:408111919Email:linhaiwz@163.com"&vbCrLf&vbCrLf&_〖 本程序为方便舵机调试而编写,错误在所难免,如有建议欢迎和我联系!〗角度转换为高电平时间角度-45045(anger/度)高电平时间100015002000(t/us)计算公式为:T=1000+(anger+45)*(1000/90)该程序可以通过串口与单片机进行通讯,实时改变舵机的角度。
通讯协议为:0xfe0xMM0xNN(其中0xfe为包头,0xMM为PWMDTYx高8位,0xN为PWMDTYx低8位)在串口中缀中分三次接收,在第二次接收时保存数据到temp0中,在第三次接收到数据时将PWMDTY01=((unsignedint)temp0<<8)|RxData就可以完成PWM改变输出了。
下位机程序如下:#include/*commondefinesandmacros*/#include/*derivativeinformation*/#pragmaLINK_INFODERIVATIVE"mc9s12xs128"unsignedcharRX=0,temp0;voiduart_putchar(unsignedcharch){if(ch=='\n'){while(!(SCI0SR1&0x80));SCI0DRL=0x0d;return;}while(!(SCI0SR1&0x80));SCI0DRL=ch;}staticvoidPWM_Init(void){//SB,Bforch2367//SA,Aforch0145PWMCTL_CON01=1; //0和1联合成16位PWM;
PWMCAE_CAE1=0; //选择输出模式为左对齐输出模式PWMCNT01=0; //计数器清零;
PWMPOL_PPOL1=1; //先输出高电平,计数到DTY时,反转电平PWMPRCLK=0X40;//clockA不分频,clockA=busclock=16MHz;CLKB16分频:1MhzPWMSCLA=8;//对clockSA进行2*8=16分频;
pwmclock=clockA/16=1MHz;PWMCLK_PCLK1=1;//选择clockSA做时钟源PWMPER01=20000;//周期20ms;
50Hz;(可以使用的范围:50-200hz)PWMDTY01=1500;//高电平时间为1.5ms;PWME_PWME1=1;}voidsetbusclock(void)//PLLsetting{CLKSEL=0X00;//disengagePLLtosystemPLLCTL_PLLON=1;//turnonPLLSYNR=1;REFDV=1;//pllclock=2*osc*(1+SYNR)/(1+REFDV)=32MHz;_asm(nop);//BUSCLOCK=16M_asm(nop);while(!(CRGFLG_LOCK==1));//whenpllissteady,thenuseit;CLKSEL_PLLSEL=1;//engagePLLtosystem;}staticvoidSCI_Init(void)//SCI{SCI0CR1=0x00;SCI0CR2=0x2c;//enableReceiveFullInterrupt,RXenab
2017/9/26 2:39:53 273KB 飞思卡尔 智能车 舵机 调试工具
1
雅特力单片机keil装置包
2022/9/19 14:25:11 2.37MB keil 雅特力单片机
1
一、源码描述此开发框架为免费开源的开发框架,会不断更新版本,旨在征集开源爱好者的建议,为广大开发者提供一个有利于学习、快速开发高功能软件的框架,此框架对所有源码开放。
十分具有学习价值,值得推荐一下,感兴趣的朋友们不要错过哦。
二、功能介绍CH:代码生成层。
Common:公用代码层。
DBControl:数据库控制与操作层。
DBUtility:数据库访问层。
Model:数据实体层。
SystemExtend:类扩展。
Web:页面展现层。
该源码包含了很多的实用类库具体的可以参考说明文档。
三、源码特点采用了Html+JQuery+EasyUI+Ajax+ashx+ado.net的技术。
四、注意事项1、开发环境为VisualStudio2010,数据库为SQLServer2008R2,数据库文件在DB_51aspx文件夹中,使用.net4.0开发。
2、默认数据库连接字符串在webconfig配置文件中修改。
3、此版本完全开源,不收任何费用,可以任用于商业,但要保留版权信息。
2017/8/3 21:04:30 25.72MB 后台框架
1
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡