/// <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; }
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; }
/// <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) { }