2013-07-05 52 views
1

我寫了語法來解析下面的代碼片段中的'接口'塊(一個塊由!\n定界)。跳過沒有語法寫入的輸入

! 
interface FastEthernet 1/0 
    no ip address 
    shutdown 
! 
ip route 0.0.0.0 
! 
router bgp 10 
    <skipped...> 
! 
router ospf 1 
    <skipped...> 
! 
interface Vlan 100 
    ip address 192.168.20.1 
    no shutdown 
! 

我還沒有爲「IP路由」或「BGP路由器」或「路由器OSPF」塊寫入語法,但它是(以及類似的塊)易於出現在輸入。我如何去跳過「不想要的」並只繼續使用「預期」的塊? ANTLR是新手,但是在過去的幾周裏已經學會了寫類似的語法。我已經開始使用ANTLRv3.5,而v4將會是新的。

回答

1

您可以像使用多行註釋一樣執行此操作。當你遇到一個你不感興趣的塊開始時,跳過任何下一個令牌,直到你看到一個新塊開始。做下一個檢查等等。爲了在解析器中使用此循環而不是詞法分析器,您仍然需要爲任何輸入令牌設置詞法分析符號,否則詞法分析器會發出抱怨。然而,多行註釋通常被編寫爲詞法分析規則,所以如果您想要這樣做,就會出現這樣的問題,您必須在詞法分析器級別定義「有趣」的塊,這對於此來說確實不合適。