• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C# ParserState类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C#中ParserState的典型用法代码示例。如果您正苦于以下问题:C# ParserState类的具体用法?C# ParserState怎么用?C# ParserState使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



ParserState类属于命名空间,在下文中一共展示了ParserState类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。

示例1: CreateAcceptAction

 private void CreateAcceptAction(ParserState initialState, NonTerminal augmentedRoot)
 {
     var root = augmentedRoot.Productions[0].RValues[0];
     var shiftAction = initialState.Actions[root] as ShiftParserAction;
     var shiftOverRootState = shiftAction.NewState;
     shiftOverRootState.Actions[_grammar.Eof] = new AcceptParserAction();
 }
开发者ID:HyperSharp,项目名称:Hyperspace.DotLua,代码行数:7,代码来源:ParserDataBuilder.cs


示例2: CParser

 public CParser(ParserState parserState, CLexer lexer)
 {
     this.ParserState = parserState;
     this.lexer = new LookAheadLexer(
         new CDirectiveLexer(parserState, lexer));
     this.grammar = new CGrammar();
 }
开发者ID:gh0std4ncer,项目名称:reko,代码行数:7,代码来源:CParser.cs


示例3: BuildIfStatement

        public void BuildIfStatement()
        {
            var grammer = new AndyStructuralGrammar();
            var p = new ParserState("if");

            Assert.That(grammer.if_keyword.Match(p), Is.True);

            p = new ParserState("if()");
            var rule = grammer.if_keyword + grammer.Delimiter("(") + grammer.Delimiter(")");
            Assert.That(rule.Match(p), Is.True);

            p = new ParserState("if (a == b)");
            Assert.That(grammer.if_condition.Match(p), Is.True);

            p = new ParserState("if(a == 10){a=20;}");
            var if_block = grammer.if_condition + grammer.block;
            Assert.That(if_block.Match(p), Is.True);

            p = new ParserState("if(a == 10){a=20;}");
            if_block = grammer.if_condition + new RecursiveRule(() => grammer.block);
            Assert.That(if_block.Match(p), Is.True);

            p = new ParserState("if(a == 10){a=20;}");
            Assert.That(grammer.control_statement.Match(p), Is.True);
        }
开发者ID:andy-uq,项目名称:TinyOS,代码行数:25,代码来源:ParserTests.cs


示例4: Parse

 public List<Node> Parse(string input)
 {
     var state = new ParserState() { input = input, pos = 0 };
     if (!Match(state))
         throw new Exception(String.Format("Rule {0} failed to match", Name));
     return state.nodes;
 }
开发者ID:IkeKeren,项目名称:jigsaw-library,代码行数:7,代码来源:Rule.cs


示例5: ActionRecord

 public ActionRecord(ParserActionType actionType, ParserState newState, NonTerminal nonTerminal, int popCount)
 {
   ActionType = actionType;
   NewState = newState;
   NonTerminal = nonTerminal;
   PopCount = popCount;
 }
开发者ID:eightrivers,项目名称:SSharp,代码行数:7,代码来源:ActionRecord.cs


示例6: Execute

        public bool Execute(ParserState state)
        {
            var builder = new StringBuilder();

            for (var i = 0; i < base.Children.Count; i++)
            {
                var action = base.Children[i];
                var subState = state.Clone();
                subState.CurrentItem = string.Empty;
                if (!action.Execute(subState))
                {
                    logger.LogDebug($"{state.Tracker} Http sub {i} action failed.");
                    return false;
                }
                else
                {
                    builder.Append(state.CurrentItem);
                }
            }

            var value = builder.ToString();
            logger.LogDebug($"{state.Tracker} Http setting {name} to {value}.");
            state.HTTPHeaders[name] = value;
            return true;
        }
开发者ID:Jackett,项目名称:Jackett2,代码行数:25,代码来源:Http.cs


示例7: Parse

        public ParseResult Parse(Lexer lexer, ParserState initialState)
        {
            var context = new ParserContext(this, Automaton.Grammar, lexer);
            context.CurrentState = initialState;
            context.ParserStack.Push(new ParserNode(context, new GrammarDefinition("init"))
            {
                State = initialState
            });

            ReadNextToken(context);
            context.CurrentNode = new ParserNode(context, Automaton.Grammar.ToElement(lexer.Current.GetTokenCode()), lexer.Current);

            while (lexer.Current != null && context.Root == null && context.CurrentState != null)
            {
                // If no input and no default action (e.g. a grammar reduction),
                // that means we have to read the next token.
                if (context.CurrentNode == null && context.CurrentState.DefaultAction == null)
                    ReadNextToken(context);

                var action = GetNextAction(context);
                action.Execute(context);
            }

            lexer.SpecialBag.InsertNodesIntoAstNode(context.Root.Result);

            return ParseResult.FromContext(context);
        }
开发者ID:JerreS,项目名称:AbstractCode,代码行数:27,代码来源:AutomatonSourceParser.cs


示例8: GrammarReductionConflict

 public GrammarReductionConflict(ParserState state, TokenGrammarElement lookahead, ParserAction action1, ParserAction action2)
 {
     State = state;
     Lookahead = lookahead;
     Action1 = action1;
     Action2 = action2;
 }
开发者ID:JerreS,项目名称:AbstractCode,代码行数:7,代码来源:GrammarReductionConflict.cs


示例9: IncludeBinary

        private bool IncludeBinary(List<string> tokens, ParserState state)
        {
            if (tokens.Count == 1)
                throw new Exception(string.Format("No file specified for .incbin pragma", tokens[1]));

            tokens[1] = tokens[1].Replace("\"", string.Empty);

            byte[] data = GetBytesFromFile(state.WorkingDirectory + @"\" + tokens[1]);
            if (data == null)
                throw new Exception($"Error loading file '{tokens[1]}'");

            int begin = 0, length = data.Length;
            if (tokens.Count >= 3)
                if (!Int32.TryParse(tokens[2], out begin))
                    throw new Exception("Third paramter for incbin must be numeric");

            if (tokens.Count == 3)
            {
                length = length - begin;
            }

            if (tokens.Count == 4)
                if (!Int32.TryParse(tokens[3], out length))
                    throw new Exception("Fourth paramter for incbin must be numeric");

            if ((begin >= length) || (begin + length > data.Length))
                throw new Exception("Out of bounds for incbin");

            for (int i = 0; i < length; i++)
                state.Code.Add(data[i + begin]);
            return true;
        }
开发者ID:ZaneDubya,项目名称:YCPU,代码行数:32,代码来源:Parser.Includes.cs


示例10: ShiftParserAction

    public ShiftParserAction(BnfTerm term, ParserState newState) {
      if (newState == null)
        throw new Exception("ParserShiftAction: newState may not be null. term: " + term.ToString());

      Term = term; 
      NewState = newState;
    }
开发者ID:androdev4u,项目名称:XLParser,代码行数:7,代码来源:ShiftParserAction.cs


示例11: Match

 /// <summary>
 /// Indicates if the current parser state matches the rule.
 /// </summary>
 /// <param name="state">The state.</param>
 /// <returns></returns>
 public override bool Match(ParserState state)
 {
     while (this.FirstSon.Match(state))
     {
     }
     return true;
 }
开发者ID:jseijas,项目名称:supido,代码行数:12,代码来源:RepeatRule.cs


示例12: PrecedenceBasedParserAction

 public PrecedenceBasedParserAction(BnfTerm shiftTerm, ParserState newShiftState, Production reduceProduction)
 {
     _reduceAction = new ReduceParserAction(reduceProduction);
     var reduceEntry = new ConditionalEntry(CheckMustReduce, _reduceAction, "(Precedence comparison)");
     ConditionalEntries.Add(reduceEntry);
     DefaultAction = _shiftAction = new ShiftParserAction(shiftTerm, newShiftState);
 }
开发者ID:HyperSharp,项目名称:Hyperspace.DotLua,代码行数:7,代码来源:PrecedenceBasedParserAction.cs


示例13: XmlConverter

  public XmlConverter(TextReader rdr, XmlWriter writer, IPlatform platform)
  {
      this.rdr = rdr;
      this.writer = writer;
      this.platform = platform;
      this.parserState = new ParserState();
 }
开发者ID:uxmal,项目名称:reko,代码行数:7,代码来源:XmlConverter.cs


示例14: InternalMatch

 protected override bool InternalMatch(ParserState state)
 {
     var old = state.Clone();
     bool result = Child.Match(state);
     state.Assign(old);
     return result;
 }
开发者ID:IkeKeren,项目名称:jigsaw-library,代码行数:7,代码来源:Rule.cs


示例15: Parse

        public static ParserState Parse(string source, IAbstractSyntaxTreePrinter printer = null, Rule rule = null)
        {
            if (rule == null)
                rule = _grammar.file;

            var state = new ParserState(source);
            try
            {
                if (rule.Match(state))
                {
                    if (state.AtEndOfInput())
                    {
                        if (printer != null)
                            printer.Print(state.GetRoot());

                        return state;
                    }

                    throw new ParsingException(state, rule, message: "Failed to read end of input");
                }

                throw new ParsingException(state, rule, message: "Failed to parse source");
            }
            catch (ParsingException e)
            {
                return state.Exception(e);
            }
        }
开发者ID:andy-uq,项目名称:TinyOS,代码行数:28,代码来源:CppSourceParser.cs


示例16: CppFileParser

        public CppFileParser(IAstPrinter printer, string file)
        {
            Rule parse_rule = grammar.file;

            string text = File.ReadAllText(file);
            printer.Clear();
            ParserState state = new ParserState(text);

            try
            {
                if (!parse_rule.Match(state))
                {
                    message = "Failed to parse file " + file;
                }
                else
                {
                    if (state.AtEndOfInput())
                    {
                        message = "Successfully parsed file";
                    }
                    else
                    {
                        message = "Failed to read end of input";
                    }
                }
                    
            }
            catch (ParsingException e)
            {
                state.ForceCompletion();
                message = e.Message;
            }

            printer.PrintNode(state.GetRoot(), 0);
        }
开发者ID:gtpk,项目名称:cpp-ripper,代码行数:35,代码来源:Parser.cs


示例17: ParseDocEscapedChar

        private static IParseResult ParseDocEscapedChar(ParserState state)
        {
            state.Advance();
              if (char.IsLetterOrDigit(state.Current))
            return FailedParse.Get;

              return new SuccessfulParse(state.Current.ToString());
        }
开发者ID:jmbucknall,项目名称:WLWInsertCode,代码行数:8,代码来源:RtfParser.cs


示例18: Match

 /// <summary>
 /// Indicates if the current parser state matches the rule.
 /// </summary>
 /// <param name="state">The state.</param>
 /// <returns></returns>
 public override bool Match(ParserState state)
 {
     if (this.Sons.Count == 0)
     {
         this.Sons.Add(ruleFunction());
     }
     return this.FirstSon.Match(state);
 }
开发者ID:jseijas,项目名称:supido,代码行数:13,代码来源:RecursiveRule.cs


示例19: Match

 /// <summary>
 /// Indicates if the current parser state matches the rule.
 /// </summary>
 /// <param name="state">The state.</param>
 /// <returns></returns>
 public override bool Match(ParserState state)
 {
     if (!state.CurrentInput.StartsWith(this.value))
     {
         return false;
     }
     state.CurrentPosition = state.CurrentPosition + this.value.Length;
     return true;
 }
开发者ID:jseijas,项目名称:supido,代码行数:14,代码来源:StringRule.cs


示例20: ParseLabel

        private int ParseLabel(string line, ParserState state)
        {
            int colonPos = line.IndexOf(':');
            string labelName = line.Substring(0, colonPos);

            if (!state.Scopes.AddLabel(labelName.Trim().ToLowerInvariant(), state.Code.Count))
                throw new Exception($"Error adding label '{labelName}'");
            return colonPos + 1;
        }
开发者ID:ZaneDubya,项目名称:YCPU,代码行数:9,代码来源:Parser.Labels.cs



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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# ParserTargetInfo类代码示例发布时间:2022-05-24
下一篇:
C# ParserRuleContext类代码示例发布时间:2022-05-24
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap