编译原理中的算符文法,怎样才能用java代码实现求firstvt集和lastvt集,急急急
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编译原理中的算符文法,怎样才能用java代码实现求firstvt集和lastvt集,急急急相关的知识,希望对你有一定的参考价值。
参考技术A 1、FIRSTVT(T)=FIRSTVT(T*F)=*;2、FIRSTVT(T)=FIRSTVT(F)
(1)FIRSTVT(F)=FIRSTVT((E))=(;
(2)FIRSTVT(F)=FIRSTVT(id)=id;
如此,FIRSTVT(T)=*,(,id。追问
能具体实现一下吗
写一个方法,是利用递归吗?
比如求E—E+T|T
T—T*F|F
F—(E)|i得到E的firstvt是+*(i
谢谢了,搞半天了,求教
还有T的firstvt集,F的firstvt集
编译原理文法????啥表
。。。我不知道我之前整理的啥了,编译原理学完了忘了,这个在草稿里放了一年刚看到。。。
有用的自取,要是没用评论区说一下,我删了就
文法 | 说明 |
---|---|
<加法运算符> | +|- |
<乘法运算符> | *|/ |
<关系运算符> | <|<=|>|>=|!=|== |
<字母> | _|a|...|z|A|...|Z |
<数字> | 0|<非零数字> |
<非零数字> | 1|...|9 |
<字符> | ‘<加法运算符>’|’<乘法运算符>’|’<字母>’|’<数字>’ |
<字符串> | “{十进制编码为32,33,35-126的ASCII字符}” |
<程序> | [<常量说明>][<变量说明>]<有返回值函数定义> |
<常量定义> | int<标识符>=<整数>,<标识符>=<整数> |
<无符号整数> | <非零数字>{<数字>}|0 |
<整数> | [+|-]<无符号整数> |
<小数部分> | <数字>{<数字>} |
<实数> | <整数>.<小数部分> |
<标识符> | <字母>{<字母>|<数字>} |
<声明头部> | int<标识符> |
<变量说明> | <变量定义>;<变量定义>; |
<变量定义> | <类型标识符>(<标识符> |
<可枚举常量> | <整数> |
<类型标识符> | int |
<有返回值函数定义> | <声明头部>’(‘<参数表>’)’ ‘‘<复合语句>’’ |
<无返回值函数定义> | void<标识符>’(‘<参数表>’)‘’‘<复合语句>’’ |
<复合语句> | [<常量说明>][<变量说明>]<语句列> |
<参数表> | <参数>,<参数> |
<参数> | <类型标识符><标识符> |
<主函数> | void main’(‘’)’ ‘‘<复合语句>’’ |
<表达式> | [+|-]<项><加法运算符><项> //[+ |
<项> | <因子><乘法运算符><因子> |
<因子> | <标识符>|<标识符>’[‘<表达式>’]'|<整数> |
<语句> | <条件语句>|<循环语句> |
<无返回值函数调用语句>;|<赋值语句>;|<读语句>;|<写语句>;|<空>; | <情况语句>|<返回语句>; |
<赋值语句> | <标识符>=<表达式> |
<条件语句> | if '(‘<条件>’)'<语句>[else<语句>] |
<条件> | <表达式><关系运算符><表达式>|<表达式> //表达式为0条件为假,否则为真 |
<循环语句> | while '(‘<条件>’)'<语句> |
<情况语句> | switch ‘(‘<表达式>’)’ ‘‘<情况表>[<缺省>]’’ |
<情况表> | <情况子语句><情况子语句> |
<情况子语句> | case<可枚举常量>:<语句> |
<缺省> | default : <语句> |
<有返回值函数调用语句> | <标识符>’(‘<值参数表>’)’ |
<无返回值函数调用语句> | <标识符>’(‘<值参数表>’)’ |
<值参数表> | <表达式>,<表达式>|<空> |
<语句列> | {<语句>} |
<读语句> | scanf ‘(‘<标识符>,<标识符>’)’ |
<写语句> | printf ‘(’ <字符串>,<表达式> ‘)’ |
<返回语句> | return[‘(‘<表达式>’)’] |
以上是关于编译原理中的算符文法,怎样才能用java代码实现求firstvt集和lastvt集,急急急的主要内容,如果未能解决你的问题,请参考以下文章