javacc如何处理token类型冲突问题

/***********************************************************************/
void range():
{
  String bf = "";
  Token t1 = null;
  Token t2 = null;
  Token lparen = null;
  Token rparen=null;
}
{
   (lparen = < LPAREN > |lparen=< LSHIT>)
    (t1 = <TERM_COMPLEX_R >|t1=<TERM >) 
    	< RANGE_TO >
    (t2= <TERM_COMPLEX_R >|t2=<TERM >)
    (rparen = < RPAREN > |rparen = < RSHIT>)
    bf = bf()
   {
       jjtThis.value=conj+tname+":"+lparen.toString().trim()+t1.toString().trim()+" TO "+t2.toString().trim()+rparen.toString().trim()+bf;
	   sb.append(conj+tname+":"+lparen.toString().trim()+t1.toString().trim()+" TO "+t2.toString().trim()+rparen.toString().trim()+bf);
       start();
   }
}

void test():{}{
           [(<TERM>|<SHIT>)]{System.out.println("xxxxx");//这两个表达式是可选的只要下一个字符不是<EOF>就行就不会报错}
}
/***********************************************************************/

/***********************************************************************/

//>说明

/***********************************************************************/
/**

//t1 = <TERM_COMPLEX_R >|t1=<TERM >
//这两个token有类型冲突有时候不知道怎么解决硬是硬着头皮该
//但是还有个更好的办法是让他有两次匹配的机会让他在其中任意选择一个
//就可以了
TOKEN:{ <#_W:("W"|"w") > 
|<#_F:("F"|"f") > 
|<SPACE:(" ")*(("S"|"s")("p"|"P")("a"|"A")("C"|"c")("e"|"E"))(" ")* >
 |<NEAR:(" ")*(("N"|"n")("e"|"E")("a"|"A")("r"|"R"))(" ")* > 
|<#_CMP:(" ")*(<_W >|<_F >|(<_W ><_F >))< NUMBER>(" ")* > 
|<COMPLEX:(" ")*< _CMP>(" ")*> |<TERM_COMPLEX:((" ")*< TERM>(<COMPLEX >|< SPACE>|< NEAR>))(" ")* >
|<TERM_COMPLEX_R:(" ")*< TERM>(" ")* >}
//如何配置单词多中形势的问题
//等效于
//<SPACE:(" ")*(("S"|"s")("p"|"P")("a"|"A")("C"|"c")("e"|"E"))(" ")* >
*/

/***********************************************************************/

/***********************************************************************/
TOKEN :
{
  < RANGE_TO :
    (
      (" ")*"to"(" ")*
    | (" ")*"TO"(" ")*
    | (" ")*"To"(" ")*
    | (" ")*"tO"(" ")*
    | (" ")*"~"(" ")*
    | (" ")*"-"(" ")*
    ) >
}

//等效于
//在rang_to这段代码完全可以改成
//<range_to:((" ")*(["T","t"])(["o","O"]))(" ")*
|(" ")*"-"(" ")*
|(" ")*"~"(" ")*
  >//形势大为缩减

/***********************************************************************/

 





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值