真正开始编译器开发


由于周末连续奋战两天,在过去的一周自己基本完成了简单解释程序的编写,熟悉了AST的的建立和简单操作。新一周的第一天本打算马上着手做词法分析器,可是一周下来堆积了太多的作业,不得不花些时间去处理,所以直到22点才开始看miniJOOL语言的词法规则,这也算开了个好头吧。

一天下来也是够累的了,今天就先学到这吧。伴随着轻音乐,慢慢品读着CSDN网友靳雄飞的《十年总结》,他的十年历程极大的触动了我,“压力”、“自信”、“挫折”“失败”“能力”、“执着”、“痛苦”、“激情”这些词用来描述他的十年或许是最贴切不过了。想想现在的自己,我的十年可以说才刚刚开始,十年后的今天我又会用哪些词来概括自己好呢?我知道自己也一直在不断的努力,朝着自己既定的目标奋斗。但每每遇到“压力”、“挫折”、“失败”,还是不能勇敢的去面对,或是退缩又或是犹豫不决。读了前辈的《十年总结》,我不奢望自己能彻底的清醒过来,思考自己的未来和人生,但能够从中知道有很多人也都在为他们的梦想奋斗着,付出着,在路上,我要清楚自己并不孤独。在这条路,我现在还走得很慢,但总体还是前进的。我要坚信一步一个脚印的走下去,我也能尽情的描绘自己无悔的“十年”。

 

 

附:学习笔记(该语言的词法规则)

 

词法规则组成:

①、规定单词的构成规则(识别出供语法分析使用);

②、被分析过滤掉的符号串,包括注释和空白符号;

详细介绍:

注释:

单行注释以“//”开始并延伸到行末。多行注释由“/*”开始并以第一次遇到“*/”为结尾;

注意:多行注释不支持嵌套,如“/**…/*…***/…*/,倘若少略号中不包含“/*”和“*/”子串,则“/**…/*…***/”部分将被词法分析识别为多行注释,但是之后的“ …*/”部分则不属于注释中的内容。

 

空白符号:空格、制表符和换行符一般视为空白符,除非这些符号出现在字符串中。

 

标识符:该语言中的标识符是以字母(’A’~’Z’或‘a’~’z’)开始的,由字母、数字(‘0~9’)、下划线(‘_’)组成的长度不超过255的字符序列。

 

关键字:(保留字)

关键字包括以下(它们用作保留字使用):

class       satic       final       extends        void       int          boolean         String

if            else        while     break            continue              return     print       read

new              delete    this        super             instanceof     null        true        false

 

运算符和分隔符:        

                    {             }             [             ]

=            +=          -=           *=          /=           %=

>            <            ==          <=          >=          !=           !             &&        ||

+            -             *            /             %          ;             ,             .             ~

字面常量:

a、 型常量有十进制数、八进制数(以0开头,后跟‘0~7组成的数字序列)、十六进制数(以0x0X开头,后跟数字、‘A~F’、’a’~’f’组成的字符序列)几种形式。

b、布尔常量有truefalse.

c、 空引用常量为null.

d、  字符串常量由一对双引号括起来的、零个或多个字符组成的字符序列。如反斜杠后跟一个双引号、反斜杠、字母n、字母r或字母t.

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值