public void CompileParentMethodCall(ParentMethodCall pmc) { XmlElement previousElement = currentElement; XmlElement tmpElement = document.CreateElement("ParentMethodCall"); tmpElement.SetAttribute("FunctionName", pmc.FunctionName); currentElement = document.CreateElement("Arguments"); foreach (Expression argument in pmc.Arguments) { argument.AcceptCompiler(this); } tmpElement.AppendChild(currentElement); previousElement.AppendChild(tmpElement); currentElement = previousElement; }
/// <summary> /// Recognizes expressions that start with the <b>super</b> keyword. /// </summary> /// <returns>A <see cref="ParentMethodCall"/></returns> protected Expression AtomStartingWithSuper() { Token first = Match(TokenID.KW_Super); if (CurrentFunction == null || !CurrentFunction.IsMethod) { throw new ParseException(FileName, first, Resources.SuperUsedOutOfMethod); } Match(TokenID.DoubleColon); string methodName = Match(TokenID.Identifier).ToString(); Match(TokenID.LeftParenthesis); Expression[] args = List <Expression>(Expression, false, null); Token last = Match(TokenID.RightParenthesis); var pmc = new ParentMethodCall(methodName, args); pmc.SetLocation(first.Start, last.End); return(pmc); }
public void CompileParentMethodCall(ParentMethodCall pmc) { textWriter.Write("super::{0}", SafeName(pmc.FunctionName)); DumpExpressionsList(pmc.Arguments); }