雪湖小札@blogjava

          心情與技術文檔同行 http://hi.baidu.com/jingleq

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            24 Posts :: 2 Stories :: 4 Comments :: 0 Trackbacks
          有這么一個字符串:a1=1,a2=X2{b1=1,b2=X3{c1=1,c2=2}},a3=X4{b1=1}
          想寫一個正則表達式,讓下面code的執行結果是:
          result(以逗號為token來分割字符串,逗號在"{"和"}"里面的忽略其做為token):
          a1=1  
          a2
          =X2{b1=1,b2=X3{c1=1,c2=2}}   
          a3
          =X4{b1=1}
          以上問題來自 http://www.javaeye.com/post/265973

          使用antlr3規則處理
          grammar Spl;
          options {
            output
          =AST;
            ASTLabelType=CommonTree;
          }
          stat     :    spl
          [0];
          spl 
          [int step]     returns [String value]:    (expr[step]  
              {    
                  if ($value!
          =null)
                      $value +
          = $expr.value;
                  else
                      $value 
          = $expr.value;
              }) +
              
          ;
          expr 
          [int step]    returns [String value]:    a=ID '=' b=ID (| p=param[step]) c=','? 
              {
                  String str 
          = $a.text + "=" + $b.text;
                  if (p !=null)
                      str +
          = $param.value;
                  if ($step == 0) {
                      System.out.println(str)
          ;
                  } else {
                      $value 
          = str;
                      if (c!=null)
                          $value +
          =",";
                  } 
              }
              
          ;
          param [int step] returns [String value]:    '{' spl[1] '}'
              {
                  $value 
          = "{" + $spl.value + "}";
              }
              
          ;
          ID    :    ('a'..'z' | 'A'..'Z' | '
          0' .. '9')('a'..'z' | 'A'..'Z' | '0' .. '9') *;
          EQPARAM    :    '=';
          WS    :    (' '|'\t'|'\n'|'\r') + {skip();};
          posted on 2007-06-25 13:26 csnowfox 閱讀(861) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 永善县| 策勒县| 城固县| 镇赉县| 和平区| 英吉沙县| 东至县| 祥云县| 江川县| 乌拉特中旗| 奉新县| 呈贡县| 三穗县| 习水县| 句容市| 霍林郭勒市| 泸州市| 班戈县| 尼勒克县| 太保市| 精河县| 遵义县| 深圳市| 洪江市| 阿鲁科尔沁旗| 文昌市| 牡丹江市| 玉龙| 卫辉市| 汾阳市| 马尔康县| 门源| 乌拉特后旗| 贺州市| 大丰市| 巨野县| 探索| 辽宁省| 定远县| 太仓市| 肇州县|