【javac pythonリスト機能追加7】List各種下書きアクセスを解決する翻訳


Python式のリストアクセスでは、下付きアクセスには多くの形式があります.詳細は、次のとおりです.
http://ez2learn.com/index.php/python-tutorials/python-tutorials/167-slice
これらのアクセスは必ずforループを使用しなければなりません.
List k=[1,2,3,4,5];
System.out.println(k[1:3:2]); //k[1:3:2]      for  
                              //          k[1:3:2]
だからk[1:3:2]を:_に置き換えるしかないlist_access(k,1,3,2);
では、これは私が__をlist_アクセスの定義は、各クラスのソースコードに追加されます.
この問題を解決するために、私はjavacParser.javaの中で、それが自分で提供したparserを呼び出して、私を自分で書いた_list_アクセスの定義parseが入り、構文ツリーに追加されました.
このようにtranslatorで変換を行うとk[1:3:2]ノードを__に変換できる.list_access(k,1,3,2);
なお、__についてはlist_accessの定義は、今晩は本当に半日も書いていましたね.简単だと思っていたのに..pythonのlistアクセスルールがこんなに面倒だとは思わなかった.最後に簡単なコードを書いて、問題がないことを望んでいます.
private static java.util.List __list_access(java.util.List list, int beg,
			int end, int step) {
		int len = list.size();
		java.util.List tmpList = new java.util.ArrayList();
                
                beg += (beg < 0) ? len : 0;
	        end += (end < 0) ? len : 0;
		if (step == Integer.MAX_VALUE)
			step = 1;
		if (step > 0) {
			if (beg == Integer.MAX_VALUE)
				beg = 0;
			if (end == Integer.MAX_VALUE)
				end = len;
			for (int i = beg; i < end; i += step) {
				tmpList.add(list.get(i));
			}
		} else {
			if (beg == Integer.MAX_VALUE)
				beg = len - 1;
			if (end == Integer.MAX_VALUE)
				end = -1;

			for (int i = beg; i > end; i += step) {
				tmpList.add(list.get(i));
			}
		}

		return tmpList;
}