2012-11-20 34 views
0

我想寫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

使用此:

程序 - >取值

的S - > S開頭的語句結尾| ;

statements - >語句聲明| ;

statement - > NormalStatement | XYZ;

現在只需使用一個計數器來確保語法中的XYZ存在模式。您可以在yacc文件中的END前查看它,因爲您可能知道如何。