编写yacc语法来解析这些语句

时间:2012-11-20 10:09:11

标签: yacc

我想编写yacc语法来解析语句,如下所示

START  
statement1
statement2  
END  
START
statement3
END
START
statement4
END

START
  statement1
  statement2
  XYZ               (2)
      START
      statement3
      statement4
      XYZ           (1)
      END
  statement5
  XYZ               (3)
END

依旧......

可以有任意数量的此类START-END集。

每个START应该有一个END.if XYZ出现在(1)然后它也应该出现在(2)和(3)。但是如果XYZ出现在(2)和(3),它可能会或可能不会出现在(1)。这意味着最里面的START-END集可能有也可能没有XYZ .. 我该如何为这种模式编写语法?

1 个答案:

答案 0 :(得分:1)

使用此:

  

计划 - >小号

     

S - > S START语句END | ;

     

陈述 - >声明声明| ;

     

声明 - > NormalStatement | XYZ;

现在只需使用计数器来确保语法中的XYZ存在模式。您可以在yacc文件中的END前面查看它,因为您可能知道如何。