package xtc.lang.blink;
import java.util.Stack;
import xtc.lang.JavaEntities;
import xtc.tree.GNode;
import xtc.tree.Node;
import xtc.tree.Visitor;
import xtc.util.Runtime;
import xtc.lang.jeannie.Utilities;
public final class CommandAstAnalyzer extends Visitor {
enum Language { C, JAVA, DEBUGGER };
private static class MiniVisitor_allNodesHaveLanguage extends Visitor {
@SuppressWarnings("unused")
public final void visit(final Node n) {
assert null != CommandAstAnalyzer.getNodeLanguage(n) : n.toString();
for (int i=0; i<n.size(); i++)
if (n.get(i) instanceof Node)
dispatch(n.getNode(i));
}
}
public static void assertAllNodesHaveLanguage(final Node n) {
new MiniVisitor_allNodesHaveLanguage().dispatch(n);
}
public static Language getNodeLanguage(final Node n) {
return (Language) n.getProperty("language");
}
public static Object getNodeVariableRemap(final Node n) {
return (Object) n.getProperty("variableRemap");
}
private static Language setNodeLanguage(final Node n, final Language language) {
n.setProperty("language", language);
return language;
}
final Runtime _runtime;
private final Stack<Language> _stack;
public CommandAstAnalyzer(final Runtime runtime) {
assert null != runtime ;
_runtime = runtime;
_stack = new Stack<Language>();
_stack.push(Language.DEBUGGER);
}
private boolean assrt(final Node n, final boolean cond, final String msgFormat, final Object... msgArgs) {
return JavaEntities.runtimeAssrt(_runtime, n, cond, msgFormat, msgArgs);
}
private final Language currentLanguage() {
return _stack.peek();
}
private final Object dispatchInLanguage(final Node n, final Language language) {
enterLanguage(language);
final Object result = dispatch(n);
exitLanguage(language);
return result;
}
private final void enterLanguage(final Language language) {
_stack.push(language);
}
private final void exitLanguage(final Language language) {
assert currentLanguage() == language;
_stack.pop();
}
private boolean setAndAssrtLanguage(final Node n, final Language language) {
setNodeLanguage(n, language);
return assrt(n, language == currentLanguage(), "expected language %s, current %s", language, currentLanguage());
}
public final void visit(final GNode n) {
assrt(n, false, "the Jeannie debugger does not support the %s feature", n.getName());
}
/** Visit the AbstractDeclarator expression node. */
public void visitAbstractDeclarator(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit an AdditiveExpression = Expression ("+" / "-") Expression. */
public final void visitAdditiveExpression(final GNode n) {
final Language curr = currentLanguage();
if (assrt(n, curr == Language.C || curr == Language.JAVA, "expected language C or Java, current %s", curr)) {
setNodeLanguage(n, curr);
dispatch(n.getNode(0));
dispatch(n.getNode(2));
}
}
/** Visit an AddressExpression = Expression. */
public final void visitAddressExpression(final GNode n) {
if (setAndAssrtLanguage(n, Language.C))
dispatch(n.getNode(0));
}
/** Visit Arguments = Expression*. */
public final void visitArguments(final GNode n) {
if (setAndAssrtLanguage(n, Language.JAVA))
for (int i=0; i<n.size(); i++)
dispatch(n.getNode(i));
}
/** Visit the ArrayDeclarator expression node. */
public void visitArrayDeclarator(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the ArrayInitializer expression node. */
public void visitArrayInitializer(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit an AssignmentExpression = Expression ("=" / "+=" / "-=" / "*=" / "/=" / "%=" / "<<=" / ">>=" / "&=" / "^=" / "|=") Expression. */
public final void visitAssignmentExpression(final GNode n) {
if (setAndAssrtLanguage(n, Language.C)) {
dispatch(n.getNode(0));
dispatch(n.getNode(2));
}
}
/** Visit the AutoSpecifier expression node. */
public void visitAutoSpecifier(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the BasicCastExpression expression node. */
public void visitBasicCastExpression(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit the BitField expression node. */
public void visitBitField(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the BitwiseAndExpression expression node. */
public void visitBitwiseAndExpression(final GNode n) {
final Language curr = currentLanguage();
setAndAssrtLanguage(n, curr);
dispatch(n.getNode(0));
dispatch(n.getNode(2));
}
/** Visit the BitwiseNegationExpression expression node. */
public void visitBitwiseNegationExpression(final GNode n) {
final Language curr = currentLanguage();
setAndAssrtLanguage(n, curr);
}
/** Visit the BitwiseOrExpression expression node. */
public void visitBitwiseOrExpression(final GNode n) {
final Language curr = currentLanguage();
setAndAssrtLanguage(n, curr);
dispatch(n.getNode(0));
dispatch(n.getNode(2));
}
/** Visit the BitwiseXorExpression expression node. */
public void visitBitwiseXorExpression(final GNode n) {
final Language curr = currentLanguage();
setAndAssrtLanguage(n, curr);
dispatch(n.getNode(0));
dispatch(n.getNode(2));
}
/** Visit the Bool expression node. */
public void visitBool(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the BooleanLiteral expression node. */
public void visitBooleanLiteral(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit a BreakClassCommand = QualifiedIdentifier LineNumber. */
public final void visitBreakClassCommand(final GNode n) {
if (setAndAssrtLanguage(n, Language.DEBUGGER)) {
@SuppressWarnings("unused")
final String className = (String) dispatchInLanguage(n.getNode(0), Language.JAVA);
}
}
/** Visit a BreakClassCommand = QualifiedIdentifier. */
public final void visitBreakClassMethodCommand(final GNode n) {
if (setAndAssrtLanguage(n, Language.DEBUGGER)) {
@SuppressWarnings("unused")
final String className = (String) dispatchInLanguage(n.getNode(0), Language.JAVA);
}
}
/** Visit a BreakFileCommand = FileName LineNumber. */
public final void visitBreakFileCommand(final GNode n) {
setAndAssrtLanguage(n, Language.DEBUGGER);
}
/** Visit a BreakFileCommand = FileName LineNumber. */
public final void visitBreakFunctionCommand(final GNode n) {
setAndAssrtLanguage(n, Language.DEBUGGER);
}
/** Visit a C2jCommand = (no children). */
public final void visitC2jCommand(final GNode n) {
setAndAssrtLanguage(n, Language.DEBUGGER);
}
/** Visit a CallExpression = [Expression] null MethodName Arguments. */
public final void visitCallExpression(final GNode n) {
if (setAndAssrtLanguage(n, Language.JAVA)) {
if (null != n.get(0))
dispatch(n.getNode(0));
@SuppressWarnings("unused")
final String methodName = n.getString(2);
dispatch(n.getNode(3));
}
}
/** Visit the CastExpression expression node. */
public void visitCastExpression(final GNode n) {
final Language curr = currentLanguage();
setAndAssrtLanguage(n, curr);
}
/** Visit the Char expression node. */
public void visitChar(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the CharacterConstant expression node. */
public void visitCharacterConstant(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the CharacterLiteral expression node. */
public void visitCharacterLiteral(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit a CInJavaExpression = C.UnaryExpression. */
public final void visitCInJavaExpression(final GNode n) {
if (setAndAssrtLanguage(n, Language.JAVA))
dispatchInLanguage(n.getNode(0), Language.C);
}
/** Visit the ClassLiteralExpression expression node. */
public void visitClassLiteralExpression(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit the CommaExpression expression node. */
public void visitCommaExpression(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the CompoundLiteral expression node. */
public void visitCompoundLiteral(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the ConcreteDimensions expression node. */
public void visitConcreteDimensions(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit the ConditionalExpression expression node. */
public void visitConditionalExpression(final GNode n) {
final Language curr = currentLanguage();
setAndAssrtLanguage(n, curr);
dispatch(n.getNode(0));
dispatch(n.getNode(1));
dispatch(n.getNode(2));
}
/** Visit the ConstantQualifier expression node. */
public void visitConstantQualifier(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit a ContinueCommand = (no children). */
public final void visitContinueCommand(final GNode n) {
setAndAssrtLanguage(n, Language.DEBUGGER);
}
/** Visit the DeclarationSpecifiers expression node. */
public void visitDeclarationSpecifiers(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the Declarator expression node. */
public void visitDeclarator(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit the Declarators expression node. */
public void visitDeclarators(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit a DeleteCommand = IntegerLiteral. */
public final void visitDeleteCommand(final GNode n) {
if (setAndAssrtLanguage(n, Language.DEBUGGER))
dispatchInLanguage(n.getNode(0), Language.JAVA);
}
/** Visit the Dimensions expression node. */
public void visitDimensions(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit the DirectAbstractDeclarator expression node. */
public void visitDirectAbstractDeclarator(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit a DirectComponentSelection = Expression String. */
public final void visitDirectComponentSelection(final GNode n) {
if (setAndAssrtLanguage(n, Language.C))
dispatch(n.getNode(0));
}
/** Visit the Double expression node. */
public void visitDouble(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit a DownCommand = IntegerLiteral. */
public final void visitDownCommand(final GNode n) {
if (setAndAssrtLanguage(n, Language.DEBUGGER))
dispatchInLanguage(n.getNode(0), Language.JAVA);
}
/** Visit the EnumerationTypeReference expression node. */
public void visitEnumerationTypeReference(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the Enumerator expression node. */
public void visitEnumerator(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the EnumeratorList expression node. */
public void visitEnumeratorList(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit a EqualityExpression = Expression ("==" / "!=") Expression. */
public final void visitEqualityExpression(final GNode n) {
final Language curr = currentLanguage();
if (assrt(n, curr == Language.C || curr == Language.JAVA, "expected language C or Java, current %s", curr)) {
setNodeLanguage(n, curr);
dispatch(n.getNode(0));
dispatch(n.getNode(2));
}
}
/** Visit a ExitCommand = (no children). */
public final void visitExitCommand(final GNode n) {
setAndAssrtLanguage(n, Language.DEBUGGER);
}
/** Visit a Expression = Expression ("=" / "+=" / "-=" / "*=" / "/=" / "&=" / "|=" / "^=" / "%=" / "<<=" / ">>=" / ">>>=") Expression. */
public final void visitExpression(final GNode n) {
if (setAndAssrtLanguage(n, Language.JAVA)) {
dispatch(n.getNode(0));
dispatch(n.getNode(2));
}
}
/** Visit ExpressionList = Expression+. */
public final void visitExpressionList(final GNode n) {
if (setAndAssrtLanguage(n, Language.C))
for (int i=0; i<n.size(); i++)
dispatch(n.getNode(i));
}
/** Visit the ExternSpecifier expression node. */
public void visitExternSpecifier(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the Float expression node. */
public void visitFloat(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the FloatingConstant expression node. */
public void visitFloatingConstant(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the FloatingPointLiteral expression node. */
public void visitFloatingPointLiteral(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit a FunctionCall = Expression [ExpressionList]. */
public final void visitFunctionCall(final GNode n) {
if (setAndAssrtLanguage(n, Language.C)) {
dispatch(n.getNode(0));
if (null != n.get(1))
dispatch(n.getNode(1));
}
}
/** Visit the FunctionDeclarator expression node. */
public void visitFunctionDeclarator(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit a GdbCommand = RestOfLine. */
public final void visitGdbCommand(final GNode n) {
setAndAssrtLanguage(n, Language.DEBUGGER);
}
/** Visit a HelpCommand = (no children). */
public final void visitHelpCommand(final GNode n) {
setAndAssrtLanguage(n, Language.DEBUGGER);
}
/** Visit the IdentifierList expression node. */
public void visitIdentifierList(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit an IndirectComponentSelection = Expression -> ID */
public final void visitIndirectComponentSelection(final GNode n) {
if (setAndAssrtLanguage(n, Language.C)) {
dispatch(n.getNode(0));
}
}
/** Visit an IndirectionExpression = Expression. */
public final void visitIndirectionExpression(final GNode n) {
if (setAndAssrtLanguage(n, Language.C))
dispatch(n.getNode(0));
}
/** Visit a InfoBreakCommand = (no children). */
public final void visitInfoBreakCommand(final GNode n) {
setAndAssrtLanguage(n, Language.DEBUGGER);
}
/** Visit a InfoWatchCommand = (no children). */
public final void visitInfoWatchCommand(final GNode n) {
setAndAssrtLanguage(n, Language.DEBUGGER);
}
/** Visit an InitJCommand = (no children). */
public final void visitInitJCommand(final GNode n) {
setAndAssrtLanguage(n, Language.DEBUGGER);
}
/** Visit the InstanceOfExpression expression node. */
public void visitInstanceOfExpression(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit the InstantiatedType expression node. */
public void visitInstantiatedType(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit the Int expression node. */
public void visitInt(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit an IntegerConstant = String. */
public final void visitIntegerConstant(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit an IntegerLiteral = String. */
public final void visitIntegerLiteral(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit a J2cCommand = (no children). */
public final void visitJ2cCommand(final GNode n) {
setAndAssrtLanguage(n, Language.DEBUGGER);
}
/** Visit a JavaInCExpression = Java.UnaryExpression. */
public final void visitJavaInCExpression(final GNode n) {
if (setAndAssrtLanguage(n, Language.C))
dispatchInLanguage(n.getNode(0), Language.JAVA);
}
/** Visit a JdbCommand = RestOfLine. */
public final void visitJdbCommand(final GNode n) {
setAndAssrtLanguage(n, Language.DEBUGGER);
}
/** Visit a JRetCommand = (no children). */
public final void visitJRetCommand(final GNode n) {
setAndAssrtLanguage(n, Language.DEBUGGER);
}
/** Visit a ListCommand = (no children). */
public final void visitListCommand(final GNode n) {
setAndAssrtLanguage(n, Language.DEBUGGER);
}
/** Visit a LocalsCommand = (no children). */
public final void visitLocalsCommand(final GNode n) {
setAndAssrtLanguage(n, Language.DEBUGGER);
}
/** Visit the LogicalAndExpression expression node. */
public void visitLogicalAndExpression(final GNode n) {
final Language curr = currentLanguage();
setAndAssrtLanguage(n, curr);
}
/** Visit the LogicalNegationExpression expression node. */
public void visitLogicalNegationExpression(final GNode n) {
final Language curr = currentLanguage();
setAndAssrtLanguage(n, curr);
}
/** Visit the LogicalOrExpression expression node. */
public void visitLogicalOrExpression(final GNode n) {
final Language curr = currentLanguage();
setAndAssrtLanguage(n, curr);
}
/** Visit the Long expression node. */
public void visitLong(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit a MetaVariable = Identifier. */
public final void visitMetaVariable(final GNode n) {
setNodeLanguage(n, Language.DEBUGGER);
final Language curr = currentLanguage();
assrt(n, curr == Language.C || curr == Language.JAVA, "expected language C or Java, current %s", curr);
}
/** Visit the MultiplicativeExpression expression node. */
public void visitMultiplicativeExpression(final GNode n) {
final Language curr = currentLanguage();
setAndAssrtLanguage(n, curr);
}
/** Visit the NewArrayExpression expression node. */
public void visitNewArrayExpression(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit the NewClassExpression expression node. */
public void visitNewClassExpression(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit a NextCommand = (no children). */
public final void visitNextCommand(final GNode n) {
setAndAssrtLanguage(n, Language.DEBUGGER);
}
/** Visit an StringLiteral = (no children). */
public final void visitNullLiteral(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit the ParameterDeclaration expression node. */
public void visitParameterDeclaration(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the ParameterList expression node. */
public void visitParameterList(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the ParameterTypeList expression node. */
public void visitParameterTypeList(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the Pointer expression node. */
public void visitPointer(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the PointerDeclarator expression node. */
public void visitPointerDeclarator(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the PostdecrementExpression expression node. */
public void visitPostdecrementExpression(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the PostfixExpression expression node. */
public void visitPostfixExpression(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit the PostincrementExpression expression node. */
public void visitPostincrementExpression(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the PredecrementExpression expression node. */
public void visitPredecrementExpression(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the PreincrementExpression expression node. */
public void visitPreincrementExpression(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit a PrimaryIdentifier = String. */
public void visitPrimaryIdentifier(final GNode n) {
final Language curr = currentLanguage();
if (assrt(n, curr == Language.C || curr == Language.JAVA, "expected language C or Java, current %s", curr)) {
setNodeLanguage(n, curr);
}
}
/** Visit the PrimitiveType expression node. */
public void visitPrimitiveType(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit a PrintCExpressionCommand = C.Expression. */
public final void visitPrintCExpressionCommand(final GNode n) {
if (setAndAssrtLanguage(n, Language.DEBUGGER))
dispatchInLanguage(n.getNode(0), Language.C);
}
/** Visit a PrintJavaExpressionCommand = Java.Expression. */
public final void visitPrintJavaExpressionCommand(final GNode n) {
if (setAndAssrtLanguage(n, Language.DEBUGGER))
dispatchInLanguage(n.getNode(0), Language.JAVA);
}
/** Visit a QualifiedIdentifier = Identifier+. */
public final String visitQualifiedIdentifier(final GNode n) {
if (!setAndAssrtLanguage(n, Language.JAVA))
return null;
return Utilities.qualifiedIdentifierToString(n);
}
/** Visit the RelationalExpression expression node. */
public void visitRelationalExpression(final GNode n) {
final Language curr = currentLanguage();
setAndAssrtLanguage(n, curr);
}
/** Visit a RunCommand = (no children). */
public final void visitRunCommand(final GNode n) {
setAndAssrtLanguage(n, Language.DEBUGGER);
}
/** Visit a SelectionExpression = Expression Identifier. */
public final void visitSelectionExpression(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
dispatch(n.getNode(0));
//dispatch(n.getNode(1)); // BK - this is string.
}
/** Visit the ShiftExpression expression node. */
public void visitShiftExpression(final GNode n) {
final Language curr = currentLanguage();
setAndAssrtLanguage(n, curr);
}
/** Visit the Short expression node. */
public void visitShort(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the Signed expression node. */
public void visitSigned(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the SimpleDeclarator expression node. */
public void visitSimpleDeclarator(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the SizeofExpression expression node. */
public void visitSizeofExpression(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the SpecifierQualifierList expression node. */
public void visitSpecifierQualifierList(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit a StatCommand = (no children). */
public final void visitStatCommand(final GNode n) {
setAndAssrtLanguage(n, Language.DEBUGGER);
}
/** Visit the StaticSpecifier expression node. */
public void visitStaticSpecifier(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit a StepCommand = (no children). */
public final void visitStepCommand(final GNode n) {
setAndAssrtLanguage(n, Language.DEBUGGER);
}
/** Visit an StringConstant = String. */
public final void visitStringConstant(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit an StringLiteral = String. */
public final void visitStringLiteral(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit the StructureDeclaration expression node. */
public void visitStructureDeclaration(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the StructureDeclarationList expression node. */
public void visitStructureDeclarationList(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the StructureDeclaratorList expression node. */
public void visitStructureDeclaratorList(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the StructureTypeDefinition expression node. */
public void visitStructureTypeDefinition(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the StructureTypeReference expression node. */
public void visitStructureTypeReference(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit a SubscriptExpression = Expression Expression. */
public final void visitSubscriptExpression(final GNode n) {
final Language curr = currentLanguage();
if (assrt(n, curr == Language.C || curr == Language.JAVA, "expected language C or Java, current %s", curr)) {
setNodeLanguage(n, curr);
dispatch(n.getNode(0));
dispatch(n.getNode(1));
}
}
/** Visit the SuperExpression expression node. */
public void visitSuperExpression(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit a ThisExpression = [Expression]. */
public final void visitThisExpression(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
assrt(n, null == n.get(0), "the Jeannie debugger does not support qualified this in Java expressions");
}
/** Visit the Type expression node. */
public void visitType(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit the TypeArguments expression node. */
public void visitTypeArguments(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit the TypedefName expression node. */
public void visitTypedefName(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the TypedefSpecifier expression node. */
public void visitTypedefSpecifier(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the TypeInstantiation expression node. */
public void visitTypeInstantiation(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit the TypeName expression node. */
public void visitTypeName(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the TypeParameter expression node. */
public void visitTypeParameter(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit the TypeParameters expression node. */
public void visitTypeParameters(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit the TypeQualifierList expression node. */
public void visitTypeQualifierList(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the UnaryExpression expression node. */
public void visitUnaryExpression(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit the UnaryMinusExpression expression node. */
public void visitUnaryMinusExpression(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the UnaryPlusExpression expression node. */
public void visitUnaryPlusExpression(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the UnionTypeDefinition expression node. */
public void visitUnionTypeDefinition(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the UnionTypeReference expression node. */
public void visitUnionTypeReference(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the Unsigned expression node. */
public void visitUnsigned(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit an UpCommand = IntegerLiteral. */
public final void visitUpCommand(final GNode n) {
if (setAndAssrtLanguage(n, Language.DEBUGGER))
dispatchInLanguage(n.getNode(0), Language.JAVA);
}
/** Visit the VoidType expression node. */
public void visitVoidType(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit the VoidTypeSpecifier expression node. */
public void visitVoidTypeSpecifier(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit the VolatileQualifier expression node. */
public void visitVolatileQualifier(final GNode n) {
setAndAssrtLanguage(n, Language.C);
}
/** Visit a WatchCExpressionCommand = C.Expression. */
public final void visitWatchCExpressionCommand(final GNode n) {
if (setAndAssrtLanguage(n, Language.DEBUGGER))
dispatchInLanguage(n, Language.C);
}
/** Visit a WatchJavaFieldCommand = [WatchKind] QualifiedIdentifier. */
public final void visitWatchJavaFieldCommand(final GNode n) {
if (setAndAssrtLanguage(n, Language.DEBUGGER)) {
@SuppressWarnings("unused")
final String className = (String) dispatchInLanguage(n.getNode(1), Language.JAVA);
}
}
/** Visit a WhereCommand = (no children). */
public final void visitWhereCommand(final GNode n) {
setAndAssrtLanguage(n, Language.DEBUGGER);
}
/** Visit the Wildcard expression node. */
public void visitWildcard(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
/** Visit the WildcardBound expression node. */
public void visitWildcardBound(final GNode n) {
setAndAssrtLanguage(n, Language.JAVA);
}
}