org.mozilla.javascript.ast.StringLiteral Java Examples
The following examples show how to use
org.mozilla.javascript.ast.StringLiteral.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: MapLiteralTerm.java From SJS with Apache License 2.0 | 6 votes |
public List<String> getPropertyNames(){ List<String> propNames = new ArrayList<String>(); ObjectLiteral ol = (ObjectLiteral)this.getNode(); for (ObjectProperty op : ol.getElements()){ AstNode left = op.getLeft(); if (left instanceof Name){ propNames.add(((Name)left).getIdentifier()); } else if (left instanceof StringLiteral){ String identifier = ConstraintGenUtil.removeQuotes(((StringLiteral)left).toSource()); propNames.add(identifier); } else { System.err.println(left.getClass().getName() + " " + left.toSource()); throw new Error("unsupported case in getPropertyNames()"); } } return propNames; }
Example #2
Source File: ObjectLiteralTerm.java From SJS with Apache License 2.0 | 6 votes |
public List<String> getPropertyNames(){ List<String> propNames = new ArrayList<String>(); ObjectLiteral ol = (ObjectLiteral)this.getNode(); for (ObjectProperty op : ol.getElements()){ AstNode left = op.getLeft(); if (left instanceof Name){ propNames.add(((Name)left).getIdentifier()); } else if (left instanceof StringLiteral){ String identifier = ConstraintGenUtil.removeQuotes(((StringLiteral)left).toSource()); propNames.add(identifier); } else { System.err.println(left.getClass().getName() + " " + left.toSource()); throw new Error("unsupported case in getPropertyNames()"); } } return propNames; }
Example #3
Source File: ConstraintGenUtil.java From SJS with Apache License 2.0 | 6 votes |
public static List<String> getPropertyNames(ObjectLiteral ol){ List<String> propNames = new ArrayList<String>(); for (ObjectProperty op : ol.getElements()){ AstNode left = op.getLeft(); if (left instanceof Name){ propNames.add(((Name)left).getIdentifier()); } else if (left instanceof StringLiteral){ String identifier = ConstraintGenUtil.removeQuotes(((StringLiteral)left).toSource()); propNames.add(identifier); } else { System.err.println(left.getClass().getName() + " " + left.toSource()); throw new Error("unsupported case in getPropertyNames()"); } } return propNames; }
Example #4
Source File: DirectionalConstraintSolver.java From SJS with Apache License 2.0 | 6 votes |
/** * conservative check that returns false only for terms that obviously do not represent methods * * TODO move this code inside ITypeTerm?? * @param t * @return */ private boolean possiblyAMethodTerm(ITypeTerm t) { if (ConstraintGenUtil.isNullUndefinedLitOrVoidOp(t)) { return false; } if (t instanceof ExpressionTerm) { ExpressionTerm et = (ExpressionTerm) t; AstNode node = et.getNode(); if (node != null) { return !(node instanceof NumberLiteral || node instanceof StringLiteral); } } return !(t instanceof ArrayLiteralTerm || t instanceof MapLiteralTerm || t instanceof ObjectLiteralTerm || t instanceof TypeConstantTerm); }
Example #5
Source File: IRFactory.java From JsDroidCmd with Mozilla Public License 2.0 | 5 votes |
void decompile(AstNode node) { switch (node.getType()) { case Token.ARRAYLIT: decompileArrayLiteral((ArrayLiteral)node); break; case Token.OBJECTLIT: decompileObjectLiteral((ObjectLiteral)node); break; case Token.STRING: decompiler.addString(((StringLiteral)node).getValue()); break; case Token.NAME: decompiler.addName(((Name)node).getIdentifier()); break; case Token.NUMBER: decompiler.addNumber(((NumberLiteral)node).getNumber()); break; case Token.GETPROP: decompilePropertyGet((PropertyGet)node); break; case Token.EMPTY: break; case Token.GETELEM: decompileElementGet((ElementGet) node); break; case Token.THIS: decompiler.addToken(node.getType()); break; default: Kit.codeBug("unexpected token: " + Token.typeToName(node.getType())); } }
Example #6
Source File: Parser.java From JsDroidCmd with Mozilla Public License 2.0 | 5 votes |
private String getDirective(AstNode n) { if (n instanceof ExpressionStatement) { AstNode e = ((ExpressionStatement) n).getExpression(); if (e instanceof StringLiteral) { return ((StringLiteral) e).getValue(); } } return null; }
Example #7
Source File: Parser.java From JsDroidCmd with Mozilla Public License 2.0 | 5 votes |
private StringLiteral createStringLiteral() { int pos = ts.tokenBeg, end = ts.tokenEnd; StringLiteral s = new StringLiteral(pos, end - pos); s.setLineno(ts.lineno); s.setValue(ts.getString()); s.setQuoteCharacter(ts.getQuoteChar()); return s; }
Example #8
Source File: ConstraintGenUtil.java From SJS with Apache License 2.0 | 5 votes |
/** * Tests if an object literal is a map by checking that * all properties are quoted. * In JavaScript, both double quotes and single quotes are * supported but for now we assume double quotes are used. * * Empty object literals are assumed to be maps. */ static boolean isMap(ObjectLiteral o){ boolean result = true; for (ObjectProperty prop : o.getElements()){ AstNode left = prop.getLeft(); result = result && (left instanceof StringLiteral); } return result; }
Example #9
Source File: ConstraintVisitor.java From SJS with Apache License 2.0 | 5 votes |
/** * Syntactically identify module imports */ private boolean isSyntacticModuleRequire(FunctionCall fc) { AstNode target = fc.getTarget(); if (target instanceof Name) { Name name = (Name)target; return name.getIdentifier().equals("require") && fc.getArguments().size() == 1 && fc.getArguments().get(0) instanceof StringLiteral; } else { return false; } }
Example #10
Source File: ConstraintVisitor.java From SJS with Apache License 2.0 | 5 votes |
/** * for string constants, returns an ITerm representing the expression. A separate * equality constraint is generated that equates that term to string */ private ITypeTerm processStringLiteral(StringLiteral n) { ITypeTerm expTerm = findOrCreateExpressionTerm(n); ITypeTerm stringConst = findOrCreateTypeTerm(StringType.make(), n.getLineno()); addTypeEqualityConstraint(expTerm, stringConst, n.getLineno(), null); return expTerm; }
Example #11
Source File: ClassDefScanner.java From nexus-public with Eclipse Public License 1.0 | 5 votes |
/** * Find the textual name of the given node. */ @Nullable private String nameOf(final AstNode node) { if (node instanceof Name) { return ((Name) node).getIdentifier(); } else if (node instanceof PropertyGet) { PropertyGet prop = (PropertyGet) node; return String.format("%s.%s", nameOf(prop.getTarget()), nameOf(prop.getProperty())); } else if (node instanceof StringLiteral) { return ((StringLiteral) node).getValue(); } return null; }
Example #12
Source File: ClassDefScanner.java From nexus-public with Eclipse Public License 1.0 | 5 votes |
/** * Return string literal value. */ private String stringLiteral(final AstNode node) { checkState(node instanceof StringLiteral, node, "Expected string literal only"); //noinspection ConstantConditions StringLiteral string = (StringLiteral) node; return string.getValue(); }
Example #13
Source File: ClassDefScanner.java From nexus-public with Eclipse Public License 1.0 | 5 votes |
/** * Returns string literal or array of string literals. * * @see #stringLiteral(AstNode) * @see #arrayStringLiteral(AstNode) */ private List<String> stringLiterals(final AstNode node) { // string literal or array of string literals if (node instanceof StringLiteral) { return Collections.singletonList(stringLiteral(node)); } else if (node instanceof ArrayLiteral) { return arrayStringLiteral(node); } else { throw reportError(node, "Expected string literal or array of string literal only"); } }
Example #14
Source File: IRFactory.java From JsDroidCmd with Mozilla Public License 2.0 | 4 votes |
private Node transformString(StringLiteral node) { decompiler.addString(node.getValue()); return Node.newString(node.getValue()); }
Example #15
Source File: ConstraintVisitor.java From SJS with Apache License 2.0 | 4 votes |
/** * This method generates constraints for all relevant AstNodes. It delegates its work to various * processXXX() methods that handle AstNodes of type XXX. */ @Override public boolean visit(AstNode node) { if (node instanceof VariableInitializer){ processVariableInitializer(node); } else if (node instanceof ReturnStatement){ processReturnStatement((ReturnStatement)node); } else if (node instanceof ExpressionStatement){ processExpressionStatement((ExpressionStatement)node); } else if (node instanceof ForLoop){ processForLoop((ForLoop)node); } else if (node instanceof ForInLoop){ processForInLoop((ForInLoop)node); }else if (node instanceof WhileLoop){ processWhileLoop((WhileLoop)node); } else if (node instanceof DoLoop){ processDoLoop((DoLoop)node); } else if (node instanceof NewExpression){ processNewExpression((NewExpression)node); } else if (node instanceof FunctionCall){ processFunctionCall((FunctionCall)node); } else if (node instanceof ElementGet){ processElementGet((ElementGet)node); } else if (node instanceof FunctionNode){ processFunctionNode((FunctionNode)node); } else if (node instanceof IfStatement){ processIfStatement((IfStatement)node); } else if (node instanceof KeywordLiteral){ processKeywordLiteral((KeywordLiteral)node); } else if (node instanceof SwitchStatement){ processSwitchStatement((SwitchStatement)node); } else if (node instanceof SwitchCase){ processSwitchCase((SwitchCase)node); } else if ((node instanceof AstRoot) || //AstRoot: no constraints need to be generated (node instanceof BreakStatement) || //BreakStatement: no constraints need to be generated (node instanceof VariableDeclaration) || //VariableDeclaration: we generate constraints for its constituent VariableInitializer nodes (node instanceof Name) || //Name: generate constraints for complex expressions that refer to names (node instanceof NumberLiteral) || //NumberLiteral: generate constraints for complex expressions that refer to names (node instanceof StringLiteral) || //StringLiteral: generate constraints for complex expressions that refer to names (node instanceof Assignment) || // Assignment is a special case of InfixExpression (node instanceof ArrayLiteral) || (node instanceof UnaryExpression) || (node instanceof InfixExpression) || (node instanceof ConditionalExpression) || (node instanceof ParenthesizedExpression) || (node instanceof EmptyExpression) || (node instanceof ObjectLiteral) || (node instanceof EmptyStatement) || (node instanceof ContinueStatement) || (node instanceof Scope) || (node instanceof Block)){ // // occurs in programs with for loops -- nothing to be done here? /* nothing */ } else { error("unsupported node " + node.toSource().trim() + " of type: " + node.getClass().getName(), node); } return true; }
Example #16
Source File: ConstraintVisitor.java From SJS with Apache License 2.0 | 4 votes |
/** * Creates constraints for the subtree rooted at a designated expression node, * and returns a constraint variable corresponding to the root of the tree. */ private ITypeTerm processExpression(AstNode n){ ITypeTerm cached = theMap.get(n); if (cached != null) return cached; if (n instanceof Name){ return processVariableReference((Name)n); } else if (n instanceof NumberLiteral){ return processNumericConstant((NumberLiteral)n); } else if (n instanceof StringLiteral){ return processStringLiteral((StringLiteral)n); } else if (ConstraintGenUtil.isBooleanConstant(n)){ return processBooleanConstant(n); } else if (n instanceof UnaryExpression){ return processUnaryExpression((UnaryExpression)n); } else if (n instanceof InfixExpression){ return processInfixExpression((InfixExpression)n); } else if (n instanceof FunctionCall){ return processFunctionCallExpression((FunctionCall)n); } else if (n instanceof ArrayLiteral){ return processArrayLiteral((ArrayLiteral)n); } else if (n instanceof ElementGet){ return processElementGet((ElementGet)n); } else if (n instanceof ParenthesizedExpression) { return processParenthesizedExpression((ParenthesizedExpression)n); } else if (n instanceof ConditionalExpression) { return processConditionalExpression((ConditionalExpression)n); } else if (n instanceof ObjectLiteral) { return processObjectLiteral((ObjectLiteral)n); } else if (n instanceof KeywordLiteral){ return processKeywordLiteral((KeywordLiteral)n); } else if (n instanceof FunctionNode){ return processFunctionNode((FunctionNode)n); } else if (n instanceof EmptyExpression){ return processEmptyExpression((EmptyExpression)n); } else { System.err.println(n.toSource()); return expError("unimplemented case in findOrCreateExpressionVariable: " + n.getClass().getName(), n); } }