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


C# NonTerminal.AddHintToAll方法代码示例

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


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

示例1: ConflictGrammarWithHintsOnTerms

        public ConflictGrammarWithHintsOnTerms()
          : base(true)
        {
            var name = new IdentifierTerminal("id");

            var stmt = new NonTerminal("Statement");
            var stmtList = new NonTerminal("StatementList");
            var fieldModifier = new NonTerminal("fieldModifier");
            var propModifier = new NonTerminal("propModifier");
            var methodModifier = new NonTerminal("methodModifier");
            var fieldModifierList = new NonTerminal("fieldModifierList");
            var propModifierList = new NonTerminal("propModifierList");
            var methodModifierList = new NonTerminal("methodModifierList");
            var fieldDef = new NonTerminal("fieldDef");
            var propDef = new NonTerminal("propDef");
            var methodDef = new NonTerminal("methodDef");

            //Rules
            this.Root = stmtList;
            stmtList.Rule = MakePlusRule(stmtList, stmt);
            stmt.Rule = fieldDef | propDef | methodDef;
            fieldDef.Rule = fieldModifierList + name + name + ";";
            propDef.Rule = propModifierList + name + name + "{" + "}";
            methodDef.Rule = methodModifierList + name + name + "(" + ")" + "{" + "}";
            fieldModifierList.Rule = MakeStarRule(fieldModifierList, fieldModifier);
            propModifierList.Rule = MakeStarRule(propModifierList, propModifier);
            methodModifierList.Rule = MakeStarRule(methodModifierList, methodModifier);

            fieldModifier.Rule = ToTerm("public") | "private" | "readonly" | "volatile";
            propModifier.Rule = ToTerm("public") | "private" | "readonly" | "override";
            methodModifier.Rule = ToTerm("public") | "private" | "override";

            // conflict resolution
            var fieldHint = new TokenPreviewHint(PreferredActionType.Reduce, thisSymbol: ";", comesBefore: new string[] { "(", "{" });
            fieldModifier.AddHintToAll(fieldHint);
            fieldModifierList.AddHintToAll(fieldHint);
            var propHint = new TokenPreviewHint(PreferredActionType.Reduce, thisSymbol: "{", comesBefore: new string[] { ";", "(" });
            propModifier.AddHintToAll(propHint);
            propModifierList.AddHintToAll(propHint);

            MarkReservedWords("public", "private", "readonly", "volatile", "override");
        }
开发者ID:HyperSharp,项目名称:Hyperspace.DotLua,代码行数:42,代码来源:ConflictGrammars.cs


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