-->
当前位置:首页 > 题库

主观题:h0024. 为如下文法配上语义子程序

Luz4年前 (2022-05-27)题库700
有文法G2:
S→(L) | a
L→L , S | S
为此文法配上语义动作子程序(或者说为此文法写出一个语法制导的定义),使其输出配对括号的个数,如对于句子(a, (a, a))输出是2。









答案:为S,L引入属性h,用来记录配对的括号个数:
S'→S {printf(S.h)} -----------------2分

S→a {S.h:=0} -----------------2分


S→(L) {S.h:=S.h+1} -----------------2分


L→L(1),S {S.h:=L(1).h+S.h} -----------------2分


L→S {L.h:=S.h)} -----------------2分