2013-07-17 5 views
0

현재 ANTLR/CommonTree를 사용하여 트리 문법을 수행하는 대신 수동으로 트리를 걷고 있습니다. 나는 몇 가지 변형을했으며 그 중 일부를 그 나무의 부모에게 옮기고 싶습니다. 또한 루트가 될 수도 있습니다.메인 트리에 서브 트리를 추가 하시겠습니까?

예 :

이 AST, 나는 트리의 루트에 BLOCK 내부의 모든 VARDECL 문을 이동하고 싶은 말. enter image description here

이렇게 : 나는 예외

Exception in thread "main" java.util.ConcurrentModificationException 
    at java.util.ArrayList$Itr.checkForComodification(Unknown Source) 
    at java.util.ArrayList$Itr.next(Unknown Source) 

나는이 문제를 해결 갈 수있는 방법에 대해 어떤 생각을 얻을? 미리 감사드립니다!

답변

1

오히려 Java 문제처럼 들립니다. 열거하는 동안 ArrayList (삽입/삭제)를 조작하는 것 같습니다. 노드를 제거하려면 먼저 후보 목록을 별도의 목록에 수집하십시오. 그런 다음 해당 후보 목록을 반복하고 원래 목록에서 후보를 제거하십시오.