예제 #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="LispVariant"/> class.
 /// </summary>
 /// <param name="type">The type.</param>
 /// <param name="value">The value.</param>
 /// <param name="unQuoted">The unquoted modus.</param>
 public LispVariant(LispType type = LispType.Undefined, object value = null, LispUnQuoteModus unQuoted = LispUnQuoteModus.None)
 {
     Type       = type;
     Value      = value;
     IsUnQuoted = unQuoted;
 }
예제 #2
0
        public bool Parse()
        {
            token = lexer.GetNextToken();
            if(delayinc) {
            depth++;
            delayinc = false;
            }
            if(token == Lexer.TokenType.EOF) {
            depth = 0;
            return false;
            }

            /*
            Console.WriteLine("Token: " + token.ToString() + " - " +
                lexer.TokenString);
            */
            switch(token) {
            case Lexer.TokenType.CLOSE_PAREN:
                if(depth == 0)
                    throw new Exception("Parse Error: unexpected )");
                depth--;
                type = LispType.END_LIST;
                break;
            case Lexer.TokenType.OPEN_PAREN:
                type = LispType.START_LIST;
                delayinc = true;
                break;
            case Lexer.TokenType.SYMBOL:
                type = LispType.SYMBOL;
                break;
            case Lexer.TokenType.STRING:
                type = LispType.STRING;
                break;
            case Lexer.TokenType.TRUE:
                type = LispType.BOOLEAN;
                break;
            case Lexer.TokenType.INTEGER:
                type = LispType.INTEGER;
                break;
            }
            return true;
        }
예제 #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="LispVariant"/> class.
 /// </summary>
 /// <param name="type">The type.</param>
 /// <param name="value">The value.</param>
 /// <remarks>Needed for compiler module and .NET 3.5</remarks>
 public LispVariant(LispType type, object value)
     : this(type, value, LispUnQuoteModus.None)
 {
 }