Ejemplo n.º 1
0
 public override Node ExitPreElseif(Token node)
 {
     node.AddValue("#elif");
     return(node);
 }
Ejemplo n.º 2
0
 public override Node ExitInout(Token node)
 {
     node.AddValue("");
     return(node);
 }
Ejemplo n.º 3
0
 public override Node ExitPreElseif(Token node)
 {
     node.AddValue("#elif");
     return node;
 }
Ejemplo n.º 4
0
 /**
  * <summary>Called when exiting a parse tree node.</summary>
  *
  * <param name='node'>the node being exited</param>
  *
  * <returns>the node to add to the parse tree, or
  *          null if no parse tree should be created</returns>
  *
  * <exception cref='ParseException'>if the node analysis
  * discovered errors</exception>
  */
 public override Node ExitNumber(Token node)
 {
     node.AddValue(Int32.Parse(node.GetImage()));
     return(node);
 }
Ejemplo n.º 5
0
 public override Node ExitNullLiteral(Token node)
 {
     node.AddValue(new NullLiteralElement());
     return(node);
 }
Ejemplo n.º 6
0
        public override Node ExitNumber(Token node)
        {
            if (node.GetImage().Contains("f"))
            {
                string temp = node.GetImage();

                node.RemoveAllValues();
                node.AddValue(temp.Replace("f",""));
            }
            return base.ExitNumber(node);
        }
 public override Node ExitLt(Token node)
 {
     node.AddValue(LogicalCompareOperation.LessThan);
     return(node);
 }
Ejemplo n.º 8
0
 public override Node ExitFalse(Token node)
 {
     node.AddValue(new BooleanLiteralElement(false));
     return(node);
 }
 public override Node ExitPower(Token node)
 {
     node.AddValue(BinaryArithmeticOperation.Power);
     return(node);
 }
 public override Node ExitNe(Token node)
 {
     node.AddValue(LogicalCompareOperation.NotEqual);
     return(node);
 }
 public override Node ExitMod(Token node)
 {
     node.AddValue(BinaryArithmeticOperation.Mod);
     return(node);
 }
 public override Node ExitSub(Token node)
 {
     node.AddValue(BinaryArithmeticOperation.Subtract);
     return(node);
 }
Ejemplo n.º 13
0
 /**
  * <summary>Called when exiting a parse tree node.</summary>
  *
  * <param name='node'>the node being exited</param>
  *
  * <returns>the node to add to the parse tree, or
  *          null if no parse tree should be created</returns>
  *
  * <exception cref='ParseException'>if the node analysis
  * discovered errors</exception>
  */
 public override Node ExitString(Token node)
 {
     node.AddValue(node.GetImage());
     return(node);
 }
Ejemplo n.º 14
0
 public override Node ExitDigit(Token node)
 {
     node.AddValue(new Character(node.Image.Single()));
     return(node);
 }
 public override Node ExitGte(Token node)
 {
     node.AddValue(LogicalCompareOperation.GreaterThanOrEqual);
     return(node);
 }
Ejemplo n.º 16
0
 public override Node ExitOp(Token node)
 {
     node.AddValue(node.Image);
     return(node);
 }
 public override Node ExitOr(Token node)
 {
     node.AddValue(AndOrOperation.Or);
     return(node);
 }
Ejemplo n.º 18
0
 public override Node ExitIdentifier(Token node)
 {
     node.AddValue(node.Image);
     return(node);
 }
 public override Node ExitXor(Token node)
 {
     node.AddValue("Xor");
     return(node);
 }
Ejemplo n.º 20
0
 public override Node ExitArrayBraces(Token node)
 {
     node.AddValue("[]");
     return(node);
 }
 public override Node ExitNot(Token node)
 {
     node.AddValue(string.Empty);
     return(node);
 }
Ejemplo n.º 22
0
 public override Node ExitOut(Token node)
 {
     node.AddValue("");
     return node;
 }
 public override Node ExitRightShift(Token node)
 {
     node.AddValue(ShiftOperation.RightShift);
     return(node);
 }
Ejemplo n.º 24
0
 private bool CheckAndReplace(Token node, String strHLSL, String strGLSL)
 {
     if (node.GetImage().Equals(strHLSL)) {
         node.AddValue(strGLSL);
         return true;
     }
     return false;
 }
Ejemplo n.º 25
0
        public override Node ExitFunctionConstructorCallOrVariableDeclaration(Production node)
        {
            Token identifier = (Token)GrammaticaNodeUtils.FindChildOf(node, new string[2] {
                "Type", "IDENTIFIER"
            });

            if (identifier == null)
            {
                return(node);
            }

            replaceIntrinsicFunc(identifier);

            // mul(term, term) => term * term
            if (identifier.GetImage().Equals("mul"))
            {
                identifier.AddValue("");

                Node virgula = GrammaticaNodeUtils.FindChildOf(node, new string[2] {
                    "PartOf_Constructor_Call", "COMMA"
                });
                virgula.AddValue(" * ");
            }

            // cross(T,N) => cross(N,T).
            if (identifier.GetImage().Equals("cross"))
            {
                Production listOfParam = (Production)GrammaticaNodeUtils.FindChildOf(node, "PartOf_Constructor_Call");

                Node exp1 = GrammaticaNodeUtils.FindChildOf(listOfParam, "Expression", 1);
                Node exp2 = GrammaticaNodeUtils.FindChildOf(listOfParam, "Expression", 2);

                GrammaticaNodeUtils.SwapChildrenPosition(listOfParam, exp1, exp2);
            }

            // saturate(x) => clamp(x,0.0,1.0).
            if (identifier.GetImage().Equals("saturate"))
            {
                identifier.AddValue("clamp");

                var listOfParam = (Production)GrammaticaNodeUtils.FindChildOf(node, "PartOf_Constructor_Call");
                var children    = GrammaticaNodeUtils.GetChildren(listOfParam);
                children.Insert(2, GrammaticaNodeUtils.CreateCommaToken());
                children.Insert(3, GrammaticaNodeUtils.CreateNumberToken(0.0f));
                children.Insert(4, GrammaticaNodeUtils.CreateCommaToken());
                children.Insert(5, GrammaticaNodeUtils.CreateNumberToken(1.0f));
            }

            // add dependent function
            Node n = GrammaticaNodeUtils.FindChildOf(node, "PartOf_Constructor_Call");

            if (n != null && identifier != null && functionScope != null)
            {
                // function call or constructor call.

                dependencyGraph.SearchDependant(identifier.GetImage()).AddCallsBy(functionScope);
            }

            // Adds only globalVars.

            if (!scopeVars.Contains(identifier.GetImage()))
            {
                dependencyGraph.SearchDependant(identifier.GetImage()).AddCallsBy(functionScope);
            }


            return(node);
        }