Я пишу собственный анализатор и хотел бы отслеживать ошибки, с которыми сталкиваюсь.Как отслеживать ошибки во время синтаксического анализа без использования глобальной переменной при выполнении ast.Walk
?
type visitor struct {
err error
}
func (v visitor) Visit(n ast.Node) ast.Visitor {
switch d := n.(type) {
case *ast.BinaryExpr:
if d.Op != token.LAND {
v.err = fmt.Errorf("Illegal operator :%s", d.Op) // NOT WORKING
return v
}
}
return v
}
Я использую приведенный выше код как: -
var v visitor
ast.Walk(v, astTree)
Это, вероятно, не работает, так как в func (v visitor)
v не является указателем на struct.Какой рекомендуемый способ отслеживать это?