当前位置: 首页>>代码示例>>C#>>正文


C# Grammar.GetStart方法代码示例

本文整理汇总了C#中Grammar.GetStart方法的典型用法代码示例。如果您正苦于以下问题:C# Grammar.GetStart方法的具体用法?C# Grammar.GetStart怎么用?C# Grammar.GetStart使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Grammar的用法示例。


在下文中一共展示了Grammar.GetStart方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Parse

        public Node Parse(Grammar grammar, IEnumerable<Token> tokens)
        {
            _chart.Clear();
            _chart.Add(new State(grammar.GetStart().Earley(0)));

            using (var enumerator = tokens.GetEnumerator())
            {
                var token = enumerator.Current;
                for (int i = 0; enumerator.MoveNext(); i++)
                {
                    if (i >= _chart.Count) SyntaxError(token);
                    token = enumerator.Current;
                    var rules = _chart[i];
                    for (int j = 0; j < rules.Count; j++)
                    {
                        if (!rules[j].IsFinal)
                            if (rules[j].NextTerm.GetType() == typeof (NonTerminal))
                                Predict(grammar, i, j);
                            else
                                Scan(token, i, j);
                        else
                            Complete(i, j);
                    }
                }
            }

            int n = _chart.Count - 1;
            var complete = _chart[n].FinalRules(grammar.Start).FirstOrDefault();
            if (complete == null) SyntaxError();
            return BuildTree(complete, n);
        }
开发者ID:surenkov,项目名称:UCP,代码行数:31,代码来源:EarleyParser.cs


注:本文中的Grammar.GetStart方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。