本文整理汇总了C#中Tokens.SetLevel方法的典型用法代码示例。如果您正苦于以下问题:C# Tokens.SetLevel方法的具体用法?C# Tokens.SetLevel怎么用?C# Tokens.SetLevel使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Tokens
的用法示例。
在下文中一共展示了Tokens.SetLevel方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Analyze
public Level Analyze(Session ses, Tokens tokens)
{
Level lvl = new Level(this);
ses.Leaf = lvl;
tokens.SetLevel(lvl);
// Match parameters
for (int i = 0; i < Parameters.Count; i++)
{
Parameter p = Parameters[i];
p.Update(ses);
MatchResult res = p.Analyze(ses, tokens, lvl);
// if no tokens left, leave unmatched alone (to match previous params)
// else, update so that later ones would not go back before the param
// this also ensures auto completion even if the word is already completed
// TODO: unmatched might jump back (e.g. "task name -s")
if (tokens.Count == 0)
break;
if (res == MatchResult.Matched)
lvl.FirstUnmatchedParam = i + 1;
else if (res == MatchResult.Extensible)
lvl.FirstUnmatchedParam = i;
else if (p.Required) // implied "Failed"
{
// TODO: handle "required"
ses.Error(new ArgumentException($"{p} requires a valid value"));
break;
}
}
// Raise event
InputChanged?.Invoke(this, new ScriptEventArgs(ses, lvl.Arguments, lvl.Child));
return lvl;
}