extremely minimal AST layer

This commit is contained in:
Erik Krogh Kristensen
2021-05-26 13:47:39 +00:00
committed by GitHub
parent f2edd7724c
commit 344c19f049
3 changed files with 38 additions and 1 deletions

View File

@@ -0,0 +1,24 @@
import ql
private import codeql_ql.ast.internal.AstNodes
/** An AST node of a QL program */
class AstNode extends TAstNode {
string toString() { result = "ASTNode" }
Location getLocation() { result = toGenerated(this).getLocation() }
}
/**
* A classless predicate.
*/
class ClasslessPredicate extends TClasslessPredicate, AstNode {
Generated::ModuleMember member;
Generated::ClasslessPredicate pred;
ClasslessPredicate() { this = TClasslessPredicate(member, pred) }
predicate isPrivate() {
member.getAFieldOrChild().(Generated::Annotation).getName().getValue() = "private"
}
}

View File

@@ -0,0 +1,13 @@
import codeql_ql.ast.Ast as AST
import TreeSitter
cached
newtype TAstNode =
TClasslessPredicate(Generated::ModuleMember member, Generated::ClasslessPredicate pred) {
pred.getParent() = member
}
/**
* Gets the underlying TreeSitter entity for a given AST node.
*/
Generated::AstNode toGenerated(AST::AstNode n) { n = TClasslessPredicate(_, result) }

View File

@@ -1,3 +1,3 @@
import codeql.Locations
import codeql.files.FileSystem
import codeql_ql.ast.internal.TreeSitter::Generated
import codeql_ql.ast.Ast