语义规则的属性

时间:2018-01-04 16:11:05

标签: semantics context-free-grammar rules

我有这些规则:

S -> I#A
I -> a
I -> b
A -> aA
A -> bA
A -> EPSILON

此语法生成a'sb's的序列。它们前面有一个a(或一个b)和一个#。我需要定义语义规则,它给出了#或#之后的a或b的数量(取决于我在#之前选择的那个)。 我不知道如何开始,因为A(在第一条规则中)的值取决于I的值。如何将'a'或'b'传递给A?

1 个答案:

答案 0 :(得分:0)

我不是100%确定问题是什么,但在评论中,语法用于读取字符串。您可以查看规则,就好像它们描述的是左侧是父级,右侧是子级的树。

所以在你的系统中似乎有一个由{a,b,EPSILON,#}组成的字母表。因此,如果你有一个#b的输入字符串,你将获得以下树

S ---  I -- a
  ---  #
  ---  A -- b
         -- A -- EPSILON

所以S的孩子是 A S - > I#A ),有一个 a 的孩子( I - > a )。 A 有两个孩子 b A(A - > b A),最后一个 A 有一个孩子 EPSILON

然后,您可以在语法中添加语义规则,例如条件,也称为属性语法。