正在加载图片...
但是,并不是说这里的开发是一帆风顺的,在本类文档的后续章节中也许会 对这里的类容进行修正,这只能说明我们对于C/C+的语法构成还是存在误区 而不是C/C+语法本身有问题 对我们熟悉的问题尚且如此 那么对于我们不 熟悉的问题更加如此了,所以后续的开发中对前述代码的修正也就难免了,这 就是重构,使得代码越来越合理,越来越高效。 3.第二步:由分类构成program 对于上一步已经做好了的分类,最终的目的就是要用这些分类来成功的构成 最终的C/C+源代码。通过前面的章节的学习,我们知道这里的progra表达的 就是C/C+源代码内容,当然你也可以用你自己喜欢的任何名字,例如 “source”,这个就看个人的喜好了,Lex和Yacc对这个没有特别的要求。 这里我们采用program代表C/C+源代码。上面的C/C+分类:关键字、预 处理宏、函数、变量、语句、结构体、类、联合体等等。在这一步里面就是考虑 如何利用这些分类来枸成完整的C/C+源代码。 这一步也充满了挑战,但是相对 于第一步来说就容易多了,因为有据可寻啊。我们可以遵循Lex和Yacc规范来 一步一步的将上面的分类组合起来构成C/C++源代码。 常见的问题包括: 1.如何用有限的分类来构成无限数量的文本(C/C++原代码) 如何避免移进和规约冲突 3. 如何设置标记(tokens 上面的概念暂时只需要初步的了解,所谓的标记就是能够直接表示文本文档 (C/C+源代码)其中内容的概念,例如关键字类可以通过int,long,char等等 直接表示,那么int,long,char就是标记的值,标记就是代表这些值的一个标 志而己,在Lex和Yacc中就是用C宏来表示标记的例如用INT宏表示int,LONG 宏表示1 ,CHAR宏表示char等等,但是INT宏,LOG宏和CHAR宏并不是直 为 对应的int,long,char的 而仅仅只是 个整数 另外 还需要强调 的是这里的1T宏,LOG宏和CHR宏是自己定义的,而不是Lex和Yacc内置 的,因此可以随心所欲的定义,你完全可以用INT表示char,LONG表示int, CHAR表示1og等,但是这样做并不好。关于这里的概念的详细内容会在后续 的开发中进行详细的解释。 4.第三步:将类分解为标记 在对文本(C/C+源代码)进行了分类之后能否直接用标记表达出来呢? 部分分类可以用标记直接表达出来了,还有一部分就不能或者不容易用标记表 达出来。对于这些不能或者不容易用标记表达出来的分类就还需要细分,这样 最终的目的就是将所有的类都能够用标记表达出来。但是,并不是说这里的开发是一帆风顺的,在本类文档的后续章节中也许会 对这里 的类容进行修正,这只能说明我们对于 C/C++的语法构成还是存在误区 而不是 C/C++ 语法本身有问题。对我们熟悉的问题尚且如此,那么对于我们不 熟悉的问题更加如 此了,所以后续的开发中对前述代码的修正也就难免了,这 就是重构,使得代码越 来越合理,越来越高效。 3. 第二步:由分类构成 program 对于上一步已经做好了的分类,最终的目的就是要用这些分类来成功的构成 最终的 C/C++源代码。通过前面的章节的学习,我们知道这里的 program 表达的 就是 C/C++ 源代码内容,当然你也可以用你自己喜欢的任何名字,例如 “source”,这个就看 个人的喜好了,Lex 和 Yacc 对这个没有特别的要求。 这里我们采用 program 代表 C/C++源代码。上面的 C/C++分类:关键字、预 处理宏、函数、变量、语句、结构体、类、联合体等等。在这一步里面就是考虑 如何利用这些分类来构成完整的 C/C++源代码。这一步也充满了挑战,但是相对 于第一步 来说就容易多了,因为有据可寻啊。我们可以遵循 Lex 和 Yacc 规范来 一步一步的 将上面的分类组合起来构成 C/C++源代码。 常见的问题包括: 1. 如何用有限的分类来构成无限数量的文本(C/C++源代码) 2. 如何避免移进和规约冲突 3. 如何设置标记(tokens) 上面的概念暂时只需要初步的了解,所谓的标记就是能够直接表示文本文档 (C/C++ 源代码)其中内容的概念,例如关键字类可以通过 int,long,char 等等 直接表示,那 么 int,long,char 就是标记的值,标记就是代表这些值的一个标 志而已,在 Lex 和 Yacc 中就是用 C 宏来表示标记的例如用 INT 宏表示 int,LONG 宏表示 long,CHAR 宏表示 char 等等,但是 INT 宏,LONG 宏和 CHAR 宏并不是直 接定义为对应的 int,long,char 的,而仅仅只是一个整数;另外还需要强调 的是这里的 INT 宏,LONG 宏和 CHAR 宏是自 己定义的,而不是 Lex 和 Yacc 内置 的,因此可以随心所欲的定义,你完全可以用 INT 表示 char,LONG 表示 int, CHAR 表示 long 等,但是这样做并不好。关于这里的概念的 详细内容会在后续 的开发中进行详细的解释。 4. 第三步:将类分解为标记 在对文本(C/C++源代码)进行了分类之后能否直接用标记表达出来呢?一 部分分类 可以用标记直接表达出来了,还有一部分就不能或者不容易用标记表 达出来。对于 这些不能或者不容易用标记表达出来的分类就还需要细分,这样 最终的目的就是将 所有的类都能够用标记表达出来
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有