package bluej.parser.nodes;

import bluej.debugger.gentype.Reflective;
import bluej.parser.entity.JavaEntity;
import bluej.parser.entity.PackageOrClass;
import bluej.parser.entity.ParsedReflective;
import bluej.parser.entity.TypeEntity;
import bluej.parser.lexer.JavaTokenTypes;
import bluej.parser.nodes.NodeTree.NodeAndPosition;


| A node representing a method or constructor inner body (the part between, but not | including, the '{} and '}'). | | @author Davin McCall | public class MethodBodyNode extends IncrementalParsingNode{ public MethodBodyNode(JavaParentNode parent) { super(parent); complete = true; setInner(true); } @Override protected boolean isDelimitingNode(NodeAndPosition<ParsedNode> nap) { ParsedNode pn = nap.getNode(); return pn.isContainer() || pn.getNodeType() == ParsedNode.NODETYPE_FIELD; } @Override protected int doPartialParse(ParseParams params, int state) { last = params.tokenStream.nextToken(); if (last.getType() == JavaTokenTypes.RCURLY) { return PP_ENDS_NODE; } if (last.getType() == JavaTokenTypes.EOF) { return complete ? PP_OK : PP_INCOMPLETE; } if (checkBoundary(params, last)) { return PP_PULL_UP_CHILD; } last = params.parser.parseStatement(last, false); if (last == null) { last = params.tokenStream.LA(1); if (last.getType() == JavaTokenTypes.EOF) { return PP_INCOMPLETE; } } return PP_OK; } @Override protected boolean marksOwnEnd() { return false; } @Override public boolean growsForward() { return true; } @Override public JavaEntity getValueEntity(String name, Reflective querySource, int fromPosition) { return getPositionedValueEntity(name, querySource, fromPosition); } @Override public PackageOrClass resolvePackageOrClass(String name, Reflective querySource, int fromPosition) { ParsedNode cnode = classNodes.get(name); if (cnode != null && cnode.getOffsetFromParent() <= fromPosition) { return new TypeEntity(new ParsedReflective((ParsedTypeNode) cnode)); } PackageOrClass rval = null; if (parentNode != null) { rval = parentNode.resolvePackageOrClass(name, querySource); } return rval; } }
top, use, map, class MethodBodyNode

.   MethodBodyNode
.   isDelimitingNode
.   doPartialParse
.   marksOwnEnd
.   growsForward
.   getValueEntity
.   resolvePackageOrClass




114 neLoCode + 3 LoComm