考虑下面的属性文法G(S)对于输入字符串abc进行自下而上的语法分析和属性计算,设S.u的初始值为5,属性计算完成后,S.v的值为
A.16
B.17
C.18
D.19
A.16
B.17
C.18
D.19
A、步骤 状态栈 符号栈 输入串 5 014 #aS #
B、步骤 状态栈 符号栈 输入串 5 0124 #aS #
C、步骤 状态栈 符号栈 输入串 5 015 #aS #
D、步骤 状态栈 符号栈 输入串 5 0125 #aS #
A、123
B、0124
C、5334
D、70
long fun(char S[])
{long n;int sign;
for(;isspace(*s)||islower(*s);s++);
sign=(*s=='-')?-1:1;
if(*s=='+'||*s=='-')s++;
for(n=0;isdigit(*s);s++)
n=10*n+(*S-'0');
return sign*n;
}
A、A public float getNum(){return 4.0f;}
B、B public void getNum(){}
C、C public void getNum(double d){}
D、D public double getNum(float d){return 4.0d; }
A、属性文法是对上下文无关文法的扩展。
B、属性文法只能描述语言的语法知识。
C、属性文法提供了描述语言的语义的机制。
D、所有属性文法都是良定义的。
A、G(S): 产 生 式 语 义 规 则 S→XYZ Z.h := S.a X.c := Z.g S.b := X.d -2 Y.e := S.b X→x X.d :=2*X.c Y→y Y.f := Y.e*3 Z→z Z.g :=Z.h+1
B、G(S): 产 生 式 语 义 规 则 S→B B.ps :=10 S.ht :=B.ht B→sub.ps :=B.ps.ps :=shrink(B.ps) B.ht :=disp(.ht,.ht) B→text B.ht :=text.h×B.ps
C、G(L): 产 生 式 语 义 规 则 L→E n print(E.val) E→+T E.val :=.val+T.val E→T E.val :=T.val T→*F T.val :=.val* F.val T→F T.val :=F.val F→ (E) F.val :=E.val F→digit F.val :=digit.lexval
D、G(D): 产 生 式 语 义 规 则 D→TL L.in := T.type T→int T.type := integer T→real T.type := real L→, id.in :=L.in addtype(id.entry, L.in) L→id addtype(id.entry, L.in)
为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!