package edu.ucsd.arcum.interpreter.parser; import static org.eclipse.jdt.core.IPackageFragment.DEFAULT_PACKAGE_NAME; import org.eclipse.core.resources.IProject; import org.eclipse.jdt.core.*; import org.eclipse.jdt.internal.core.CompilationUnit; import org.eclipse.jdt.internal.core.DefaultWorkingCopyOwner; import org.eclipse.jdt.internal.core.PackageFragment; // A .arcum source file. Uses a technique similar to AJCompilationUnit to // pretend that it has Java syntax. public class ArcumCompilationUnit extends CompilationUnit { public ArcumCompilationUnit(String name, IProject root) { super(defaultPackage(root), name, DefaultWorkingCopyOwner.PRIMARY); } private static PackageFragment defaultPackage(IProject proj) { IJavaProject jp = JavaCore.create(proj); try { IPackageFragment[] packageFragments = jp.getPackageFragments(); for (IPackageFragment frag: packageFragments) { if (frag.getElementName().equals(DEFAULT_PACKAGE_NAME)) return (PackageFragment)frag; } return null; } catch (JavaModelException e) { e.printStackTrace(); System.out.printf("Yikes!%n"); return null; } } }