1. //反復(...)(...)(削除)
DEF parseTail(sqlContext:文字列):文字列= { ヴァル事前= sqlContext.indexOf( "(") ヴァル端= sqlContext.indexOf( ")") であれば(前== -1 &&端== -1) を返すsqlContext parseTail (+ 1)sqlContext.substring(0)、プリ+ sqlContext.substring(エンド) } parseTail(SQL)
2.反復//(..(..)..)..(..)は、n-重量入れ子構造を削除
//迭代计算(个数 DEF parseIndexNum(S:文字列)のInt = { IF(s.indexOf( "(")> s.indexOf( ")")|| s.indexOf( "(")== - 1)戻り0 戻りparseIndexNum(s.substring(s.indexOf( "(")+ 1))+ 1 } //迭代删除()...()...() DEF parseTail(sqlContext:文字列):列= { ヴァル事前= sqlContext.indexOf( "(") VAR端= sqlContext.indexOf( ")") であれば(前== -1 ||端== -1) リターンsqlContext VAR sqlCopy = sqlContext ヴァルpre_count = parseIndexNum (sqlContext) IF(pre_count> 1){ (0 pre_countまで- 1).foreach(_ => { ヴァルインデックス= sqlCopy.indexOf( ")") sqlCopy = sqlCopy.substring(0、インデックス)+ "W" + sqlCopy.substring(インデックス+ 1) }) 端= sqlCopy。indexOf( ")") } parseTail()、プリsqlContext.substring(0 + sqlContext.substring(エンド+ 1)) }