Package com.sonar.sslr.api

Examples of com.sonar.sslr.api.AstNode


    assertThat(p).matches("# define __glibcxx_assert(_Condition)");
  }

  @Test
  public void define_containing_argumentList() {
    AstNode define = p.parse("#define lala(a, b) a b");
    assert (define.findFirstChild(CppGrammar.parameterList) != null);
  }
View Full Code Here


    return s;
  }

  private void iterate(AstNode node, List<String> values) {
    while (node != null) {
      AstNode child = node.getFirstChild();
      if (child != null) {
        iterate(child, values);
      } else {
        if (node.getType() instanceof CxxGrammarImpl == false) {
          values.add(node.getTokenValue());
View Full Code Here

    List<AstNode> propertyAssignments = astNode.getChildren(EcmaScriptGrammar.PROPERTY_DEFINITION);

    for (AstNode propertyAssignment : propertyAssignments) {

      if (propertyAssignment.getFirstChild().isNot(EcmaScriptGrammar.METHOD_DEFINITION)) {
        AstNode propertyName = getPropertyName(propertyAssignment);
        String value = propertyName.getTokenValue();

        if (value.startsWith("\"") || value.startsWith("'")) {
          value = value.substring(1, value.length() - 1);
        }
        String unescaped = EscapeUtils.unescape(value);
View Full Code Here

      }
    }
  }

  private static AstNode getPropertyName(AstNode propertyAssignment) {
    AstNode objectProperty = propertyAssignment.getFirstChild();

    if (objectProperty.is(EcmaScriptGrammar.PAIR_PROPERTY)) {
      return objectProperty.getFirstChild(EcmaScriptGrammar.PROPERTY_NAME);

    } else /* COVER_INITIALIZED_NAME */ {
      return objectProperty.getFirstChild(EcmaScriptGrammar.IDENTIFIER_REFERENCE);
    }
  }
View Full Code Here

    subscribeTo(EcmaScriptGrammar.STATEMENT);
  }

  @Override
  public void visitNode(AstNode astNode) {
    AstNode statement = astNode.getFirstChild();
    if (statement.is(EcmaScriptGrammar.BLOCK) || statement.is(EcmaScriptGrammar.EMPTY_STATEMENT) || statement.is(EcmaScriptGrammar.LABELLED_STATEMENT)) {
      // skip
    } else {
      int line = statement.getTokenLine();
      if (!statementsPerLine.containsKey(line)) {
        statementsPerLine.put(line, 0);
      }
      statementsPerLine.put(line, statementsPerLine.get(line) + 1);
    }
View Full Code Here

    }
  }

  private List<AstNode> getCallArguments(AstNode callExpr) {
    List<AstNode> callArguments = Lists.newArrayList();
    AstNode simpleCallExpr = callExpr.getFirstChild(EcmaScriptGrammar.SIMPLE_CALL_EXPRESSION);

    if (simpleCallExpr != null) {
      callArguments.add(simpleCallExpr.getFirstChild(EcmaScriptGrammar.ARGUMENTS));
    }
    callArguments.addAll(callExpr.getChildren(EcmaScriptGrammar.ARGUMENTS));

    return callArguments;
  }
View Full Code Here

  }

  @Override
  public void visitNode(AstNode node) {
    if (isIfStatementWithoutElse(node)) {
      AstNode innerStatement = node.getFirstChild(EcmaScriptGrammar.STATEMENT).getFirstChild();
      if (isBlockAndContainsOnlyOneIfStatement(innerStatement) || isIfStatementWithoutElse(innerStatement)) {
        getContext().createLineViolation(this, "Merge this if statement with the nested one.", node);
      }
    }
  }
View Full Code Here

  private boolean isBlockAndContainsOnlyOneIfStatement(AstNode statement) {
    if (!statement.is(EcmaScriptGrammar.BLOCK)) {
      return false;
    }
    AstNode statementList = statement.getFirstChild(EcmaScriptGrammar.STATEMENT_LIST);
    if (statementList == null || statementList.getNumberOfChildren() != 1 || statementList.getFirstChild().isNot(EcmaScriptGrammar.STATEMENT)) {
      return false;
    }
    return isIfStatementWithoutElse(statementList.getFirstChild().getFirstChild());
  }
View Full Code Here

  public static boolean returnsBoolean(AstNode statement) {
    return isBlockReturningBooleanLiteral(statement) || isSimpleReturnBooleanLiteral(statement);
  }

  public static boolean isBlockReturningBooleanLiteral(AstNode statement) {
    AstNode block = statement.getFirstChild(EcmaScriptGrammar.BLOCK);
    if (block == null) {
      return false;
    }

    AstNode stmtList = block.getFirstChild(EcmaScriptGrammar.STATEMENT_LIST);
    return stmtList != null
      && stmtList.getChildren(EcmaScriptGrammar.STATEMENT).size() == 1
      && isSimpleReturnBooleanLiteral(stmtList.getFirstChild());
  }
View Full Code Here

      && stmtList.getChildren(EcmaScriptGrammar.STATEMENT).size() == 1
      && isSimpleReturnBooleanLiteral(stmtList.getFirstChild());
  }

  public static boolean isSimpleReturnBooleanLiteral(AstNode statement) {
    AstNode returnStmt = statement.getFirstChild(EcmaScriptGrammar.RETURN_STATEMENT);
    if (returnStmt == null) {
      return false;
    }

    AstNode expression = returnStmt.getFirstChild(EcmaScriptGrammar.EXPRESSION);

    return hasASingleToken(expression)
      && (EcmaScriptKeyword.TRUE.getValue().equals(expression.getTokenValue())
      || EcmaScriptKeyword.FALSE.getValue().equals(expression.getTokenValue()));
  }
View Full Code Here

TOP

Related Classes of com.sonar.sslr.api.AstNode

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.