mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Method to collect errors from AST
--HG-- branch : dev
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user