以前に定義された別のリストから Haskell のようなリスト構築をサポートしたい例: [ 2*x+1 | 2*x+1 | x<-list1]; 同時に評価を行い、新しいリストを出力します。
私は次のことを試しました:
constructlist
: { ArrayList<Integer> myList= new ArrayList<Integer>();
ArrayList<Integer> newList = new ArrayList<Integer>();}
'[' op1= expression '|' op2= expression '<' '-' IDENT ']'
{ myList= lists.get($IDENT.text);
for(int i=0;i<myList.size();i++)
{
variables.put($IDENT.text,myList.get(i));
newList.add($op1.result);
}
{System.out.println(newList);}
;
しかし、これは絶対にうまくいきません。任意の式の結果を返す式があります (例: x*y + 2... 変数が以前に初期化されている場合)。
誰でもこれを行う方法を提案できますか?