1 public class 如果语法处理器 : ITokenHandler 2 { 3 private static readonly HashSet<string> _StatementEndTokens = new HashSet<string> { “则”, “否则” }; 4 5 public void Build(DefaultSyntaxAnalyzer analyzer, TokenAnalyzingArgs e) 6
16 17 var condition = analyzer.BuildOneStatement(e.BuildContext, e.ScriptContext, e.Options, e.TokenReader, e.Control, e.Ignore, endTokens: _StatementEndTokens); 18 analyzer.ValidateNextToken(e.TokenReader, “则”); 19 var createAllOptions = new BuildOptions(e.Options) { CreateFullTreeNode = true }; 20 var body = analyzer.BuildOneStatement(e.BuildContext, e.ScriptContext, createAllOptions, e.TokenReader, e.Control, e.Ignore, endTokens: _StatementEndTokens); 21 var node = new IfNode { Condition = condition, Body = body }; 22 var nextToken = e.TokenReader.Read(); 23 if (nextToken.HasValue && nextToken.Value.Value == “;”) 24 { 25 nextToken = e.TokenReader.Read(); 26 } 27 if (nextToken.HasValue) 28
33 else 34 { 35 e.TokenReader.Push(nextToken.Value); 36 } 37 } 38 e.TreeBuilder.Add(e.BuildContext, e.ScriptContext, e.Options, e.Control, node); 39 } 40 }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/258924.html