public Binding(NodeArgs args, Identifier name, Pattern pattern, IEnumerable<Node> body, params Node[] children) : base(args, children) { Name = name; Pattern = pattern; Body = body; }
public Module(NodeArgs args, QualifiedIdentifier name, IEnumerable<Node> body, params Node[] children) : base(args, children) { qualId = name; Name = qualId.Identifier; Body = body; }
public Binding(NodeArgs args, Identifier name, Pattern pattern, IEnumerable <Node> body, params Node[] children) : base(args, children) { Name = name; Pattern = pattern; Body = body; }
public Module(NodeArgs args, QualifiedIdentifier name, IEnumerable <Node> body, params Node[] children) : base(args, children) { qualId = name; Name = qualId.Identifier; Body = body; }
public QualifiedIdentifier(NodeArgs args, params Node[] children) : base(args, children) { Qualifiers = children .Take(children.Length - 1) .OfType <Identifier>() .ToArray(); Identifier = (Identifier)children.Last(); }
public Node(NodeArgs args, params Node[] children) { this.SourceFile = args.SourceFile; this.Item = args.Item; this.Children = children; foreach (var child in this.Children) child.Parent = this; }
public QualifiedIdentifier(NodeArgs args, params Node[] children) : base(args, children) { Qualifiers = children .Take(children.Length - 1) .OfType<Identifier>() .ToArray(); Identifier = (Identifier)children.Last(); }
public Node(NodeArgs args, params Node[] children) { this.SourceFile = args.SourceFile; this.Item = args.Item; this.Children = children; foreach (var child in this.Children) { child.Parent = this; } }
public Whitespace(NodeArgs args) : base(args) { }
public InlineComment(NodeArgs args) : base(args) { }
public EndOfFile(NodeArgs args) : base(args) { }
protected Comment(NodeArgs args) : base(args) { }
public Source(NodeArgs args, params Node[] children) : base(args, children) { }
protected Token(NodeArgs args) : base(args) { }
public Punct(NodeArgs args) : base(args) { }
protected Comment(NodeArgs args) : base(args) { }
public Pattern(NodeArgs args, params Node[] children) : base(args, children) { }
public Leaf(NodeArgs args) : base(args) { }
public Leaf(NodeArgs args) : base(args) { }
public Pattern(NodeArgs args, params Node[] children) : base(args, children) { }
public Punct(NodeArgs args) : base(args) { }
public InlineComment(NodeArgs args) : base(args) { }
public Module(NodeArgs args, Identifier name, IEnumerable<Node> body, params Node[] children) : base(args, children) { Name = name; Body = body; }
protected T Make <T>(SyntaxItem item, object parms, params Syntax.Node[] children) where T : Syntax.Node { var nodeArgs = new Syntax.NodeArgs(); nodeArgs.SourceFile = this.SourceFile; nodeArgs.Item = item; var parmValues = parms != null ? parms.GetType().GetProperties().ToDictionary(pi => pi.Name, pi => pi.GetValue(parms)) : new Dictionary <string, object>(); var ctors = typeof(T) .GetConstructors() .OrderByDescending(ctor => ctor.GetParameters().Length); if (children == null || children.Length == 0) { children = item.Results.ToArray(); } var arguments = new List <object>(); foreach (var ctor in ctors) { bool failed = false; foreach (var parm in ctor.GetParameters()) { object parmValue; if (typeof(Syntax.NodeArgs).IsAssignableFrom(parm.ParameterType)) { if (parm.Name != "args") { throw new InternalException(ErrorMessages.E_0001_ParserImpl_MakeNodeArgs); } arguments.Add(nodeArgs); } else if (typeof(Syntax.Node[]).IsAssignableFrom(parm.ParameterType)) { if (parm.Name != "children") { throw new InternalException(ErrorMessages.E_0002_ParserImpl_MakeNodeChildren); } arguments.Add(children); } else if (parmValues.TryGetValue(parm.Name, out parmValue)) { arguments.Add(parmValue); } else { failed = true; break; } } if (failed) { continue; } return((T)ctor.Invoke(arguments.ToArray())); } throw new InternalException(string.Format(ErrorMessages.E_0003_ParserImpl_MakeNodeNoCtor, typeof(T).FullName)); }
public ErrorSection(NodeArgs args, params Node[] children) : base(args, children) { }
public Literal(NodeArgs args, object value, Type valueType) : base(args) { this.Value = value; this.ValueType = valueType; }
public EndOfFile(NodeArgs args) : base(args) { }
public Directive(NodeArgs args, params Node[] children) : base(args, children) { }
public Literal(NodeArgs args, object value, Type valueType) : base(args) { this.Value = value; this.ValueType = valueType; }
public EndComment(NodeArgs args) : base(args) { }
public Identifier(NodeArgs args) : base(args) { }
public EndOfLine(NodeArgs args) : base(args) { }
public EndOfLine(NodeArgs args) : base(args) { }
protected Space(NodeArgs args) : base(args) { }
public Source(NodeArgs args, params Node[] children) : base(args, children) { }
protected Token(NodeArgs args) : base(args) { }
public Whitespace(NodeArgs args) : base(args) { }
public Keyword(NodeArgs args) : base(args) { }
public EndComment(NodeArgs args) : base(args) { }
public Module(NodeArgs args, Identifier name, IEnumerable <Node> body, params Node[] children) : base(args, children) { Name = name; Body = body; }
public Identifier(NodeArgs args) : base(args) { }
public Directive(NodeArgs args, params Node[] children) : base(args, children) { }
public Keyword(NodeArgs args) : base(args) { }
public ErrorSection(NodeArgs args, params Node[] children) : base(args, children) { }
protected Space(NodeArgs args) : base(args) { }