如何写缓冲区编译器?(how to write buffer for compiler?)

2019-10-22 06:58发布

我想用C#编写编译器,第一次和我不知何故而丢失该怎么办了缓冲! 我引用编译器,原理,技术和工具,并说:

因为处理的字符所用的时间量和大量的必须大源程序的编译过程中被处理的字符的,专门缓冲技术已被开发,以减少开销的处理单个输入所需的量character.An重要方案涉及交替重载两个缓冲器,每个缓冲器具有相同的尺寸N中的,和N通常是磁盘块的大小,例如,4096个字节。 使用一个系统读取命令,我们能够读取N个字符到缓冲器,而不是每个字符使用一个系统调用。 如果少于N个字符保留在输入文件,然后一个特殊字符,通过EOF表示,标志着源文件的结束,是从源程序中的任何可能的字符不同。

它也是在这本书中,我们把EOF的每个缓冲器的最后认识到,我们在缓冲区达到终点buffer.and它有两个指针向前 lexemBegine指向语义说! 我的问题是,我不知道如何创建这个缓冲区? 我应该做阵列或在sourceBuffer类的大小N缓冲区,然后我怎么能读取的StreamReader文件,并把源文件的N个字符到数组? 是什么问题,如果我读的源文件,而不是字符?

Answer 1:

看来你参考“编译原理,技术和工具”的最后一版1986年从(但是,即使当时的报价部分是已经过时了)。

在如C#(或更精确地在其I / O库),这种缓冲的已实现(在一个强大的,经过测试,高性能的方式)现代编程语言。

只要使用StreamReader该做这一切为你工作。 然后字符后刚读字符,直到你找到一个完整的令牌,然后再处理您的令牌如本很好的书描述。



文章来源: how to write buffer for compiler?