Example #1
0
        private object CompileAssignment()
        {
            var node1 = CompileTernary();

            if (Runtime.Equals(Token, "="))
            {
                Accept();
                var node2 = CompileAssignment();
                return(Runtime.MakeList(Symbols.Setf, node1, node2));
            }
            else
            {
                return(node1);
            }
        }
Example #2
0
        private object CompileTernary()
        {
            var node1 = CompileOr();

            if (Runtime.Equals(Token, "?"))
            {
                Accept();
                var node2 = CompileTernary();
                if (!Runtime.Equals(Token, ":"))
                {
                    throw new LispException("Invalid ternary expression in: {0}", InfixStr);
                }
                Accept();
                var node3 = CompileTernary();
                return(Runtime.MakeList(Symbols.If, node1, node2, node3));
            }
            else
            {
                return(node1);
            }
        }