38 lines
926 B
C#
38 lines
926 B
C#
|
using KumiScript.Interpreter;
|
||
|
|
||
|
namespace KumiScript.Reader
|
||
|
{
|
||
|
public class AtomToken : Token
|
||
|
{
|
||
|
readonly string _value;
|
||
|
public AtomToken(string value)
|
||
|
{
|
||
|
_value = value;
|
||
|
}
|
||
|
|
||
|
public override Expression Accept(ITokenVisitor tokenVisitor)
|
||
|
{
|
||
|
return tokenVisitor.VisitAtom(this);
|
||
|
}
|
||
|
|
||
|
public virtual Expression ToExpression()
|
||
|
{
|
||
|
decimal f;
|
||
|
if (decimal.TryParse(_value, out f))
|
||
|
return NumberFactory.NormalizeFloat(f);
|
||
|
|
||
|
if (_value == "null")
|
||
|
return NilExpression.GetInstance();
|
||
|
|
||
|
if (_value == "t")
|
||
|
return TrueExpression.GetInstance();
|
||
|
|
||
|
return new SymbolExpression(new Symbol(_value));
|
||
|
}
|
||
|
|
||
|
public override string GetValue()
|
||
|
{
|
||
|
return _value;
|
||
|
}
|
||
|
}
|
||
|
}
|