我正在为一个工作项目开发一个简单的脚本语言,我需要创建一个type name = value
形式的定义语句。我一直在关注SuperpowerSimpleSql example并创建了tokenizer,它正确地标记了输入。
问题来自为赋值语句创建TokenListParser。目前解析器定义如下:
public static TokenListParser<AumToken, ShmemWord> ShmemWord =
from keyword in Token.EqualToValueIgnoreCase(AumToken.Keyword, "ShmemWord")
from name in Token.EqualTo(AumToken.Keyword)
from equal in Token.EqualTo(AumToken.Assignment)
from value in Token>EqualTo(AumToken.Number).Apply(Numerics.HexDigitsUInt64)
select new ShmemWord(name, value);
和ShmemWord
是一个带有构造函数签名ShmemWord(string name, ulong value)
的简单类。
到目前为止我是否正确定义了这个,如何将名称转换为字符串?
Token<TKind>
为此提供ToStringValue()
:
select new ShmemWord(name.ToStringValue(), value);