头歌过关实验代码链接(粘贴可过关):链接
检查实验代码(过关代码):基于头歌实验修改。
http://generatelink.xam.ink/change/makeurl/changeurl/10660
任务描述
本关任务:加深对语法分析器工作过程的理解;加强对算符优先分析法实现语法分析程序的掌握;能够采用一种编程语言实现简单的语法分析程序;能够使用自己编写的分析程序对简单的程序段进行语法翻译。
相关知识
为了完成本关任务,你需要掌握:用算符优先法编制语法分析程序。
自下而上的语法分析器
语法分析在编译中是一个重要的环节,语法分析可以分为自上而下分析和自下而上分析两种方式。
自下而上分析法是一种“移进-归约”法。这种方法的大意是,用一个寄存符号的先进后出栈,把输入符号一个一个地移进到栈里,当栈顶形成某个产生式的一个候选式时,即把栈顶的这一部分替换成(归约为)该产生式的左部符号。
对于自下而上的分析法,边输入单词符号(移进符号栈),边归约。也就是在从左到右移进输入串的过程中,一旦发现栈顶呈现可归约串就立即进行归约。
在该类方法中有以下的几个处理:
-
移进:指把输入串的一个符号移进栈。
-
归约:指发现栈顶呈可归约串,并用适当的相应符号去替换这个串(这两个问题都还没有解决)。
-
接受:指宣布最终分析成功,这个操作可看作是“归约”的一种特殊形式。