Ignore some part of input when parsing with ANTLR

☆樱花仙子☆ 提交于 2019-12-04 15:58:55

Simply match the A2ML part as a single token in the lexer and skip() it:

grammar asap;

project
 : BEGIN_PROJECT name module* END_PROJECT EOF
 ;

module
 : BEGIN_MODULE name END_MODULE
 ;

name
 :   IDENT
 ;  

IDENT
 : ('a'..'z'|'A'..'Z') ('a'..'z'|'A'..'Z'|'0'..'9'|'_'|'.'|':'|'-')*
 ;

BEGIN_PROJECT
 : '/begin' S 'PROJECT'
 ;

END_PROJECT
 : '/end' S 'PROJECT'
 ;

BEGIN_MODULE
 : '/begin' S 'MODULE'
 ;

END_MODULE
 : '/end' S 'MODULE'
 ;

A2ML
 : '/begin' S 'A2ML' .* '/end' S 'A2ML' {skip();}
 ;

SPACES
 : S {skip();}
 ;

fragment S
 : (' ' | '\t' | '\r' | '\n')+
 ;
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!