Method to collect errors from AST

--HG--
branch : dev
This commit is contained in:
Renaud Paquay
2010-11-28 00:20:27 -08:00
parent eb6762d11a
commit cacc8899a9

View File

@@ -1,5 +1,33 @@
namespace Orchard.Widgets.SimpleScripting.Ast {
using System;
using System.Collections.Generic;
using System.Linq;
namespace Orchard.Widgets.SimpleScripting.Ast {
public class AbstractSyntaxTree {
public AstNode Root { get; set; }
public IEnumerable<ErrorAstNode> GetErrors() {
return new ErrorNodeCollector().Collect(Root);
}
}
public class ErrorNodeCollector : AstVisitor {
private readonly List<ErrorAstNode> _errors = new List<ErrorAstNode>();
public IEnumerable<ErrorAstNode> Collect(AstNode root) {
this.Visit(root);
return _errors;
}
public override object Visit(AstNode node) {
var result = node.Accept(this);
VisitChildren(node);
return result;
}
public override object VisitError(ErrorAstNode node) {
_errors.Add(node);
return null;
}
}
}