2 using System.Collections.Generic;
5 using System.Globalization;
15 public string DateTimeFormat =
"d";
16 public int IntRadix = 10;
24 var textValue = ReadBody(context, source);
25 if (textValue == null)
return null;
26 var value = ConvertValue(context, textValue);
27 return source.CreateToken(this.OutputTerminal, value);
30 return source.CreateErrorToken(ex.Message);
41 case TypeCode.String:
return textValue;
42 case TypeCode.DateTime:
return DateTime.ParseExact(textValue, DateTimeFormat, context.Culture);
45 var dValue = Convert.ToDouble(textValue, context.Culture);
46 if (DataType == TypeCode.Double)
return dValue;
47 return Convert.ChangeType(dValue, DataType, context.Culture);
50 var iValue = (IntRadix == 10)?
Convert.ToInt64(textValue, context.
Culture) : Convert.ToInt64(textValue, IntRadix);
51 if (DataType == TypeCode.Int64)
return iValue;
52 return Convert.ChangeType(iValue, DataType, context.Culture);
Interface for Terminals to access the source stream and produce tokens.
DataLiteralBase(string name, TypeCode dataType)
override Token TryMatch(ParsingContext context, ISourceStream source)
HRESULT Convert(_In_ const Image &srcImage, _In_ DXGI_FORMAT format, _In_ DWORD filter, _In_ float threshold, _Out_ ScratchImage &image)
virtual string ReadBody(ParsingContext context, ISourceStream source)
Tokens are produced by scanner and fed to parser, optionally passing through Token filters in between...
virtual object ConvertValue(ParsingContext context, string textValue)