public int Match(MarkedString source) { MarkedString saved = source.ShallowCopy(); int last = source.AbsoluteAt; lastMatch = factory(source); if (lastMatch == null) { source.RevertToCopy(saved); LastError = "cannot parse " + name; return(-1); } int res = source.AbsoluteAt - last; source.RevertToCopy(saved); return(res); }
public void Append(IProgramElement first, params IProgramElement[] elements) { program.Add(first); program.AddRange(elements); }