本文整理汇总了Golang中github.com/hailiang/gombi/parse.Node.Is方法的典型用法代码示例。如果您正苦于以下问题:Golang Node.Is方法的具体用法?Golang Node.Is怎么用?Golang Node.Is使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/hailiang/gombi/parse.Node
的用法示例。
在下文中一共展示了Node.Is方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: parseForStmt
func (p *parser) parseForStmt(n *parse.Node) (r ast.Stmt) {
p.openScope()
forPos := token.Pos(n.Child(0).Pos())
n = n.Child(1)
if n.Is(block) {
return &ast.ForStmt{
For: forPos,
Body: p.parseBlock(n, p.topScope),
}
}
option := n.Child(0).Child(0)
body := p.parseBlock(n.Child(1), p.topScope)
switch option.Rule() {
case condition:
fmt.Println(option)
case forClause:
fmt.Println(option)
case rangeClause:
forStmt := p.parseRangeStmt(option)
forStmt.For, forStmt.Body = forPos, body
r = forStmt
}
p.closeScope()
return
}
示例2: parseElement
func (p *parser) parseElement(n *parse.Node) ast.Expr {
n = n.Child(0)
if n.Is(value) {
return p.parseValue(n)
}
return p.parseKeyValue(n)
}
示例3: parseArgs
func (p *parser) parseArgs(n *parse.Node) ([]ast.Expr, token.Pos) {
n = n.Child(0)
if n.Is(exprList) {
return p.parseExprList(n), 0
}
return p.parseExprList(n.Child(0)), token.Pos(n.Child(1).Pos())
}
示例4: parseInitCond
func (p *parser) parseInitCond(n *parse.Node) (ast.Stmt, ast.Expr) {
n = n.Child(0)
if n.Is(expr) {
return nil, p.parseCond(n)
} else {
return p.parseInit(n.Child(0)), p.parseCond(n.Child(2))
}
}
示例5: parseVarSpec
func (p *parser) parseVarSpec(n *parse.Node) *ast.ValueSpec {
if n.Is(valueSpec) {
return p.parseValueSpec(n)
}
return &ast.ValueSpec{
Names: p.parseIdentList(n.Child(0)),
Type: p.parseType(n.Child(1)),
}
}
示例6: parsePost
func (p *parser) parsePost(n *parse.Node) ast.Stmt {
if n == nil {
return nil
}
n = n.Child(0)
if !n.Is(forClause) {
return nil
}
fmt.Println(n)
return nil
}
示例7: parseValueSpec
func (p *parser) parseValueSpec(n *parse.Node) *ast.ValueSpec {
n = n.Child(0)
spec := ast.ValueSpec{}
if n.Is(identifierList) {
spec.Names = p.parseIdentList(n)
} else {
spec.Names = p.parseIdentList(n.Child(0))
if n.Child(1).Is(type_) {
spec.Type = p.parseType(n.Child(1))
}
spec.Values = p.parseExprList(n.LastChild())
}
return &spec
}
示例8: parseImportDecl
func (p *parser) parseImportDecl(n *parse.Node) (decl *ast.GenDecl, specs []*ast.ImportSpec) {
decl = &ast.GenDecl{
TokPos: token.Pos(n.Child(0).Pos()),
Tok: token.IMPORT,
}
n = n.Child(1)
if n.Is(importSpec) {
spec := p.parseImportSpec(n)
specs = append(specs, spec)
decl.Specs = append(decl.Specs, spec)
return
}
decl.Lparen = token.Pos(n.Child(0).Pos())
decl.Rparen = token.Pos(n.LastChild().Pos())
if n.ChildCount() == 3 {
eachListItem(importSpec, n.Child(1), func(item *parse.Node) {
spec := p.parseImportSpec(item)
specs = append(specs, spec)
decl.Specs = append(decl.Specs, spec)
})
}
return
}