小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

使用ANTLR構(gòu)建PowerScript語法分析器(2) | OutOfMemory

 quasiceo 2014-02-03

使用ANTLR構(gòu)建PowerScript語法分析器(2)

在前篇文中寫的詞法分析文件存在有兩個小問題:
1. 處理換行符和回車符的詞法定義有重復(fù),在WS和EndOfLine中都有出現(xiàn)
2. 像/* comments /* nested comments */ */這種嵌套注釋會被輸出成

antlr comments

第一個問題比較容易解決,只要將EndOfLine前的fragment去掉,再將WS改成下面這樣就可以了。

WS
    :   (' '|'\t'|'\u000C') {$channel=HIDDEN;}
    ;

第二個問題則可以通過計數(shù)器來處理。先初始化一個計數(shù)器變量depthOfComments來標(biāo)記塊注釋的深度,當(dāng)遇到’/*’時就加一,遇到’*/’時則減一。輸出時只要判斷depthOfComments是否等于0就行了。

BLOCK_COMMENT
@init {
    int depthOfComments = 0;
}
    :   '/*' {depthOfComments++;}
        ( options {greedy=false;}
        : ('/' '*')=> BLOCK_COMMENT {depthOfComments++;}
        | '/' ~('*')
        | ~('/')
        )*
        '*/' {depthOfComments--;}
        {
            if (depthOfComments == 0) {
                System.out.println("bc>" + getText());
            }
        }
    ;

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多