コード例 #1
0
 /// <summary>
 /// Generates the node structure required to generate a default
 /// initialization
 /// </summary>
 /// <param name="p">
 /// Tools.Parser instance to use when instantiating nodes
 /// </param>
 /// <param name="constantType">String describing the datatype</param>
 /// <returns>
 /// A SYMBOL node conaining the appropriate structure for intializing a
 /// constantType
 /// </returns>
 private SYMBOL GetZeroConstant(Parser p, string constantType)
 {
     switch (constantType)
     {
         case "integer":
             return new Constant(p, constantType, "0");
         case "float":
             return new Constant(p, constantType, "0.0");
         case "string":
         case "key":
             return new Constant(p, constantType, "");
         case "list":
             ArgumentList al = new ArgumentList(p);
             return new ListConstant(p, al);
         case "vector":
             Constant vca = new Constant(p, "float", "0.0");
             Constant vcb = new Constant(p, "float", "0.0");
             Constant vcc = new Constant(p, "float", "0.0");
             ConstantExpression vcea = new ConstantExpression(p, vca);
             ConstantExpression vceb = new ConstantExpression(p, vcb);
             ConstantExpression vcec = new ConstantExpression(p, vcc);
             return new VectorConstant(p, vcea, vceb, vcec);
         case "rotation":
             Constant rca = new Constant(p, "float", "0.0");
             Constant rcb = new Constant(p, "float", "0.0");
             Constant rcc = new Constant(p, "float", "0.0");
             Constant rcd = new Constant(p, "float", "0.0");
             ConstantExpression rcea = new ConstantExpression(p, rca);
             ConstantExpression rceb = new ConstantExpression(p, rcb);
             ConstantExpression rcec = new ConstantExpression(p, rcc);
             ConstantExpression rced = new ConstantExpression(p, rcd);
             return new RotationConstant(p, rcea, rceb, rcec, rced);
         default:
             return null; // TODO: This will probably break things
     }
 }
コード例 #2
0
ファイル: lsl.parser.cs プロジェクト: osgrid/openmetaverse
 public ListConstant(Parser yyp, ArgumentList al)
     : base(((LSLSyntax
         )yyp), "list", null)
 {
     kids.Add(al);
 }
コード例 #3
0
ファイル: lsl.parser.cs プロジェクト: osgrid/openmetaverse
 public ArgumentList(Parser yyp, ArgumentList al, Argument a)
     : base(((LSLSyntax
         )yyp))
 {
     while (0 < al.kids.Count) kids.Add(al.kids.Pop());
     AddArgument(a);
 }
コード例 #4
0
ファイル: lsl.parser.cs プロジェクト: osgrid/openmetaverse
 public FunctionCall(Parser yyp, string id, ArgumentList al)
     : base(((LSLSyntax
         )yyp))
 {
     m_id = id;
     kids.Add(al);
 }
コード例 #5
0
        /// <summary>
        /// Generates the code for an ArgumentList node.
        /// </summary>
        /// <param name="al">The ArgumentList node.</param>
        /// <returns>String containing C# code for ArgumentList al.</returns>
        private string GenerateArgumentList(ArgumentList al)
        {
            string retstr = String.Empty;

            int comma = al.kids.Count - 1;  // tells us whether to print a comma

            foreach (SYMBOL s in al.kids)
            {
                retstr += GenerateNode(s);
                if (0 < comma--)
                    retstr += Generate(", ");
            }

            return retstr;
        }