热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

com.sonar.sslr.api.AstNode类的使用及代码示例

本文整理了Java中com.sonar.sslr.api.AstNode类的一些代码示例,展示了AstNode类的具体用法。这些代码示例主要来

本文整理了Java中com.sonar.sslr.api.AstNode类的一些代码示例,展示了AstNode类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。AstNode类的具体详情如下:
包路径:com.sonar.sslr.api.AstNode
类名称:AstNode

AstNode介绍

[英]the parser is in charge to construct an abstract syntax tree (AST) which is a tree representation of the abstract syntactic structure of source code. Each node of the tree is an AstNode and each node denotes a construct occurring in the source code which starts at a given Token.
[中]解析器负责构造抽象语法树(AST),它是源代码抽象语法结构的树表示。树的每个节点都是一个AstNode,每个节点表示源代码中的一个构造,该构造从给定的令牌开始。

代码示例

代码示例来源:origin: org.codehaus.sonar-plugins.erlang/erlang-squid

@Override
public SourceCode createSourceCode(SourceCode parentSourceCode, AstNode astNode) {
String className = astNode.getFirstDescendant(ErlangGrammarImpl.moduleAttr).getFirstChild(ErlangGrammarImpl.atom).getTokenValue();
SourceClass cls = new SourceClass(className + ":"
+ astNode.getToken().getLine());
cls.setStartAtLine(astNode.getTokenLine());
return cls;
}
}, ErlangGrammarImpl.module));

代码示例来源:origin: org.sonarsource.flex/flex-checks

public static List getDirectives(AstNode classDefNode) {
Preconditions.checkArgument(classDefNode.is(FlexGrammar.CLASS_DEF));
return classDefNode
.getFirstChild(FlexGrammar.BLOCK)
.getFirstChild(FlexGrammar.DIRECTIVES)
.getChildren(FlexGrammar.DIRECTIVE);
}

代码示例来源:origin: org.codehaus.sonar-plugins.dotnet.csharp/csharp-squid

private String extractPropertySignature(AstNode astNode) {
StringBuilder signature = new StringBuilder(astNode.getPreviousSibling().getLastToken().getValue());
signature.append("_");
AstNode delcaratiOnNode= astNode.getParent().getParent().getParent();
if (delcarationNode.is(CSharpGrammar.INDEXER_DECLARATION)) {
signature.append("Item");
} else {
signature.append(delcarationNode.getFirstChild(CSharpGrammar.MEMBER_NAME).getTokenValue());
}
signature.append(":");
signature.append(astNode.getTokenLine());
return signature.toString();
}

代码示例来源:origin: org.codehaus.sonar-plugins.dotnet.csharp/csharp-checks

private AstNode getFirstAncestor(AstNode node, AstNodeType t1, AstNodeType t2) {
AstNode result = node;
while (result != null && !result.is(t1, t2)) {
result = result.getParent();
}
return result;
}

代码示例来源:origin: org.codehaus.sonar-plugins.flex/flex-checks

public static int getNumberOfLine(AstNode functionNode) {
AstNode blockNode = functionNode.getFirstChild(FlexGrammar.FUNCTION_COMMON).getFirstChild(FlexGrammar.BLOCK);
// Is not an abstract method
if (blockNode != null) {
int firstLine = blockNode.getFirstChild(FlexPunctuator.LCURLYBRACE).getTokenLine();
int lastLine = blockNode.getFirstChild(FlexPunctuator.RCURLYBRACE).getTokenLine();
return lastLine - firstLine + 1;
}
return 0;
}
}

代码示例来源:origin: org.codehaus.sonar-plugins.php/php-checks

private static boolean isNotVariableVariables(AstNode compoundNode) {
AstNode compoundParentPreviousNode = compoundNode.getParent().getPreviousAstNode();
return compoundParentPreviousNode != null && compoundParentPreviousNode.isNot(PHPGrammar.SIMPLE_INDIRECT_REFERENCE);
}
}

代码示例来源:origin: org.codehaus.sonar-plugins.python/python-checks

private void addSimpleField(AstNode test) {
Token token = test.getToken();
if (test.getNumberOfChildren() == 1
&& test.getFirstChild().is(PythonGrammar.ATOM)
&& token.getType().equals(GenericTokenType.IDENTIFIER) && !CheckUtils.containsValue(symbols, token.getValue())) {
symbols.add(token);
}
}

代码示例来源:origin: org.codehaus.sonar-plugins.php/php-checks

private int getLineStartingColumn(AstNode node) {
int line = node.getTokenLine();
AstNode previousNode = node.getPreviousAstNode();
int column = node.getToken().getColumn();
while (previousNode != null && previousNode.getToken().getLine() == line) {
column = previousNode.getToken().getColumn();
previousNode = previousNode.getParent();
}
return column;
}

代码示例来源:origin: org.codehaus.sonar-plugins.php/php-checks

private boolean isFirstOnline(AstNode curlyBrace) {
Token previousToken = curlyBrace.getPreviousAstNode().getLastToken();
// In one case, clonsing parenthesis can be on the same line as the opening curly brace
if (previousToken.getType().equals(PHPPunctuator.RPARENTHESIS)) {
previousToken = curlyBrace.getPreviousAstNode().getPreviousAstNode().getLastToken();
}
return previousToken.getLine() != curlyBrace.getTokenLine();
}

代码示例来源:origin: org.codehaus.sonar-plugins.php/php-checks

/**
* Check that else, catch or finally keywords are on the same line as the previous closing curly brace.
*/
private void checkRCurlyBraceOnSameLine(FormattingStandardCheck formattingCheck, AstNode node) {
Token previsouToken = node.getPreviousAstNode().getLastToken();
String keyword = node.getFirstChild(PHPKeyword.ELSE, PHPKeyword.CATCH, PHPKeyword.FINALLY).getTokenOriginalValue();
if (previsouToken.getType().equals(PHPPunctuator.RCURLYBRACE) && previsouToken.getLine() != node.getTokenLine()) {
formattingCheck.reportIssue("Move this \"" + keyword + "\" to the same line as the previous closing curly brace.", node);
}
}

代码示例来源:origin: org.sonarsource.sslr/sslr-core

private void appendNodecontent(AstNode node) throws IOException {
writer.append(node.getName());
if (node.getTokenValue() != null) {
writer.append(" tokenValue=\"" + node.getTokenValue() + "\"");
}
if (node.hasToken()) {
writer.append(" tokenLine=\"" + node.getTokenLine() + "\" tokenColumn=\"" + node.getToken().getColumn() + "\"");
}
}

代码示例来源:origin: org.sonarsource.python/python-checks

private void addSelfField(AstNode test) {
if ("self".equals(test.getTokenValue())) {
AstNode trailer = test.getFirstDescendant(PythonGrammar.TRAILER);
if (trailer != null && trailer.getFirstChild(PythonGrammar.NAME) != null) {
Token token = trailer.getFirstChild(PythonGrammar.NAME).getToken();
if (!CheckUtils.containsValue(symbols, token.getValue())) {
symbols.add(token);
}
}
}
}

代码示例来源:origin: felipebz/sonar-plsql

@Override
public void visitNode(AstNode node) {
if (node.hasParent(PlSqlGrammar.VARIABLE_DECLARATION)) {
AstNode datatype = node.getParent().getFirstChild(PlSqlGrammar.DATATYPE);

AstNode expression = node.getLastChild();
if (expression.is(PlSqlGrammar.METHOD_CALL) && !datatype.getTokenValue().equals(expression.getTokenValue())) {
addLineIssue(getLocalizedMessage(CHECK_KEY), node.getTokenLine());
}
}
}

代码示例来源:origin: felipebz/sonar-plsql

@Override
public void visitNode(AstNode node) {
AstNode parent = node.getParent();
if (parentIsNotExpression(parent) &&
node.getNumberOfChildren() == 3) {

AstNode foundCandidate = node.getLastChild();
AstNode percentCandidate = foundCandidate.getPreviousAstNode();

if (percentCandidate.is(PlSqlPunctuator.MOD) && "FOUND".equals(foundCandidate.getTokenValue())) {
addLineIssue(getLocalizedMessage(CHECK_KEY), node.getTokenLine());
}
}
}

代码示例来源:origin: org.sonarsource.python/python-checks

private static boolean returnReturnNone(AstNode stmt) {
return stmt.is(PythonGrammar.RETURN_STMT)
&& (stmt.getFirstChild(PythonGrammar.TESTLIST) == null
|| stmt.getFirstChild(PythonGrammar.TESTLIST).getToken().getValue().equals(PythonKeyword.NONE.getValue()));
}

代码示例来源:origin: org.codehaus.sonar-plugins.php/php-checks

/**
* Check there is not space between a function's name and the opening parenthesis.
*/
private void checkSpaceAfterFunctionName(FormattingStandardCheck formattingCheck, AstNode node) {
Token lParenToken = node.getFirstChild(PHPPunctuator.LPARENTHESIS).getToken();
Token funcNameToken = node.is(PHPGrammar.FUNCTION_CALL_PARAMETER_LIST) ?
node.getPreviousAstNode().getLastToken() : node.getFirstChild(PHPGrammar.IDENTIFIER).getToken();
if (getNbSpaceBetween(funcNameToken, lParenToken) != 0) {
formattingCheck.reportIssue("Remove all space between the method name \"" + funcNameToken.getOriginalValue() + "\" and the opening parenthesis.", node);
}
}

代码示例来源:origin: SonarSource/sonar-python

public static boolean isOnASingleLine(AstNode parent) {
List statements = parent.getChildren(PythonGrammar.STATEMENT);
if (statements.isEmpty()) {
return true;
}
return statements.get(0).getTokenLine() == statements.get(statements.size() - 1).getLastToken().getLine();
}
}

代码示例来源:origin: org.codehaus.sonar-plugins.flex/flex-checks

private static boolean isOverridingParentFunction(AstNode attributesNode) {
if (attributesNode != null && attributesNode.is(FlexGrammar.ATTRIBUTES)) {
for (AstNode attribute : attributesNode.getChildren()) {
if (attribute.getFirstChild().is(FlexGrammar.ATTRIBUTE_EXPR)
&& attribute.getFirstChild().getNumberOfChildren() == 1
&& attribute.getFirstChild().getFirstChild(FlexGrammar.IDENTIFIER).getTokenValue().equals(FlexKeyword.OVERRIDE.getValue())) {
return true;
}
}
}
return false;
}

代码示例来源:origin: org.codehaus.sonar-plugins.flex/flex-checks

private void getCountersFromListExpression(Set counters, AstNode initialiserExpr) {
for (AstNode assignmentExpr : initialiserExpr.getChildren(FlexGrammar.ASSIGNMENT_EXPR_NO_IN)) {
AstNode exprFirstChild = assignmentExpr.getFirstChild();
if (assignmentExpr.hasDirectChildren(FlexGrammar.ASSIGNMENT_OPERATOR)) {
counters.add(Expression.exprToString(exprFirstChild));
} else if (exprFirstChild.is(FlexGrammar.UNARY_EXPR)) {
counters.add(Expression.exprToString(exprFirstChild.getLastChild()));
} else if (exprFirstChild.is(FlexGrammar.POSTFIX_EXPR)) {
counters.add(Expression.exprToString(exprFirstChild.getFirstChild()));
}
}
}

代码示例来源:origin: org.codehaus.sonar-plugins.flex/flex-checks

public static String exprToString(AstNode expression) {
StringBuilder builder = new StringBuilder();
for (Token t : expression.getTokens()) {
builder.append(t.getValue());
}
return builder.toString();
}

推荐阅读
  • 软件工程课堂测试2
    要做一个简单的保存网页界面,首先用jsp写出保存界面,本次界面比较简单,首先是三个提示语,后面是三个输入框,然 ... [详细]
  • 本文探讨了在 SQL Server 中使用 JDBC 插入数据时遇到的问题。通过详细分析代码和数据库配置,提供了解决方案并解释了潜在的原因。 ... [详细]
  • 本文深入探讨了UNIX/Linux系统中的进程间通信(IPC)机制,包括消息传递、同步和共享内存等。详细介绍了管道(Pipe)、有名管道(FIFO)、Posix和System V消息队列、互斥锁与条件变量、读写锁、信号量以及共享内存的使用方法和应用场景。 ... [详细]
  • springMVC JRS303验证 ... [详细]
  • 本文详细介绍了Java库XChart中的XYSeries类下的setLineColor()方法,并提供了多个实际应用场景的代码示例。 ... [详细]
  • java文本编辑器,java文本编辑器设计思路
    java文本编辑器,java文本编辑器设计思路 ... [详细]
  • 使用JS、HTML5和C3创建自定义弹出窗口
    本文介绍如何结合JavaScript、HTML5和C3.js来实现一个功能丰富的自定义弹出窗口。通过具体的代码示例,详细讲解了实现过程中的关键步骤和技术要点。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • 本文探讨了如何在Hive(基于Hadoop)环境中编写类似SQL的语句,以去除字段中的空格。特别是在处理邮政编码等数据时,去除特定位置的空格是常见的需求。 ... [详细]
  • CentOS 6.8 上安装 Oracle 10.2.0.1 的常见问题及解决方案
    本文记录了在 CentOS 6.8 系统上安装 Oracle 10.2.0.1 数据库时遇到的问题及解决方法,包括依赖库缺失、操作系统版本不兼容、用户权限不足等问题。 ... [详细]
  • 本文介绍如何在Java中实现一个罗马数字计算器,重点在于如何通过循环和字符验证确保用户输入合法。我们将探讨创建一个方法来检查字符串中的非法字符,并使用循环不断提示用户输入,直到输入符合要求。 ... [详细]
  • 本文详细探讨了Java中的ClassLoader类加载器的工作原理,包括其如何将class文件加载至JVM中,以及JVM启动时的动态加载策略。文章还介绍了JVM内置的三种类加载器及其工作方式,并解释了类加载器的继承关系和双亲委托机制。 ... [详细]
  • HDU 2871 内存管理问题(线段树优化)
    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2871。本题涉及内存管理操作,包括重置、申请、释放和查询内存块。通过使用线段树进行高效管理和维护。 ... [详细]
  • KMP算法是处理字符串匹配的一种高效算法它首先用O(m)的时间对模板进行预处理,然后用O(n)的时间完成匹配。从渐进的意义上说,这样时间复 ... [详细]
  • 本文介绍了如何使用JFreeChart库创建一个美观且功能丰富的环形图。通过设置主题、字体和颜色等属性,可以生成符合特定需求的图表。 ... [详细]
author-avatar
张珮娟7063
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有