Esempio n. 1
0
        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;
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
 public void CompileParentMethodCall(ParentMethodCall pmc)
 {
     textWriter.Write("super::{0}", SafeName(pmc.FunctionName));
     DumpExpressionsList(pmc.Arguments);
 }