正在加载图片...
106 编译原理及实践 China-pub.co 下载 相匹配的输入以及对其他过程的调用相对应,而选择与在代码中的替代情况(case语句和i语 句)相对应。 例如,考虑前一章的表达式文法: exp-exp addop termterm addop→+l- term-term mulop factor factor mlop→* factor一(ep)|number 及ac1or的文法规则,识别actor并用相同名称进行调用的递归下降程序过程可用伪代码编写 如下: procedure factor begin case token of (:match(); exp: match()) number match (number); else error end case; end factor; 在这段伪代码中,假设有一个在输入中保存当前下一个记号的token变量(以便这个例子使用 先行的一个符号)。另外还假设有一个mach过程,它用它的参数匹配当前的下一个记号。如果 成功则前移,如果失败就表明错误: procedure match expectedToken ) begin if token expectedToken then getToken else error end if; end match 现在脱离开在match和actor中被调用的未指定的eror过程。可以假设它会打印出一个出错信息 并退出。 请注意,在match()调用和factor中的match(number)调用中,我们知道expectedToken利 token是一样的。但是在match()调用中,不能将1oken假设为一个右括号,所以就需要有一个 测试。factort的代码也假设已将过程exp定义为可以调用。在表达式文法的递归下降分析中, exp过程将调用1em,erm过程将调用actor,而factori过程将调用exp,所以所有的这些过程都 必须能够互相调用。不幸的是,为表达式文法中的其余规则编写递归下降程序过程并不像为 factor编写一样简单,而且它需要使用EBNF,下面就介绍这一点。相匹配的输入以及对其他过程的调用相对应,而选择与在代码中的替代情况( c a s e语句和i f语 句)相对应。 例如,考虑前一章的表达式文法: exp → exp addop term | t e r m addop → + | - term → term mulop factor | f a c t o r mulop → * factor → ( exp ) | n u m b e r 及factor 的文法规则,识别factor 并用相同名称进行调用的递归下降程序过程可用伪代码编写 如下: p ro c e d u re factor ; b e g i n case token of ( : m a t c h( () ; exp ; m a t c h( ) ) ; number : match (n u m b e r) ; else e rro r ; end c a s e ; end f a c t o r ; 在这段伪代码中,假设有一个在输入中保存当前下一个记号的 t o k e n变量(以便这个例子使用 先行的一个符号)。另外还假设有一个m a t c h过程,它用它的参数匹配当前的下一个记号。如果 成功则前移,如果失败就表明错误: p ro c e d u re match ( e x p e c t e d Token ) ; b e g i n if token = e x p e c t e d Token t h e n g e t Token ; e l s e e rror ; end if ; end match ; 现在脱离开在m a t c h和f a c t o r中被调用的未指定的e rro r过程。可以假设它会打印出一个出错信息 并退出。 请注意,在match (()调用和f a c t o r中的match (n u m b e r) 调用中,我们知道e x p e c t e d To k e n和 t o k e n是一样的。但是在match ())调用中,不能将t o k e n假设为一个右括号,所以就需要有一个 测试。f a c t o r的代码也假设已将过程 e x p定义为可以调用。在表达式文法的递归下降分析中, e x p过程将调用t e r m,t e r m过程将调用f a c t o r,而f a c t o r过程将调用e x p,所以所有的这些过程都 必须能够互相调用。不幸的是,为表达式文法中的其余规则编写递归下降程序过程并不像为 f a c t o r编写一样简单,而且它需要使用E B N F,下面就介绍这一点。 1 0 6 编译原理及实践 下载
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有