public void Visit(ISyntaxContext context, IVisitRuler visitRuler, BinaryWriter writer) { foreach (var arg in _arguments) { arg.Visit(context, Keyword.VisitRuler, writer); } }
protected override void Visit(ISyntaxContext context, BinaryWriter writer) { foreach (Char ch in _data) { writer.Write(StringCodes.GetInstance().Encode(ch)); } }
public PScriptStatement(ISyntaxContext context, PScriptKeyword keyword, params PScriptToken[] arguments) { _context = context ?? throw new ArgumentNullException("context"); _tokens = new List <PScriptToken>(); _tokens.Add(keyword ?? throw new ArgumentNullException("keyword")); _tokens.AddRange(arguments); _arguments = new List <PScriptToken>(arguments); }
public override void Visit(ISyntaxContext context, IVisitRuler visitRuler, BinaryWriter writer) { if (_index < 0 || _index >= context.Current.Arguments.Count) { throw new SyntaxCheckException(String.Format(SyntaxErrorMessages.CheckParameterIndexInvalid, _index), SyntaxErrorType.SYNTAX_ERROR_ARGUMENTS, context.Document, context.CheckingOffset, context.CheckingLength); } var argument = context.Current.Arguments[_index]; argument.Visit(context, visitRuler, writer); }
protected override void Visit(ISyntaxContext context, BinaryWriter writer) { if (context.Current.Arguments.Count != _parameters.Count) { throw new SyntaxCheckException(String.Format(SyntaxErrorMessages.CheckArgumentCountNotMatch, context.Current.Arguments.Count, _parameters.Count), SyntaxErrorType.SYNTAX_ERROR_ARGUMENTS, context.Document, context.CheckingOffset, context.CheckingLength); } foreach (var statement in _statements) { statement.Visit(context, new EmptyVisitRuler(), writer); } }
/// <summary> /// 通用访问逻辑 /// </summary> /// <param name="context"></param> /// <param name="visitRuler"></param> /// <param name="writer"></param> public virtual void Visit(ISyntaxContext context, IVisitRuler visitRuler, BinaryWriter writer) { visitRuler.Previsit(context, writer); if (visitRuler.Override) { visitRuler.Visit(context, writer); } else { Visit(context, writer); } visitRuler.Postvisit(context, writer); }
protected override void Visit(ISyntaxContext context, BinaryWriter writer) { // 自身没有编译逻辑,只是替换参数编译而已。 }
/// <summary> /// 自身访问逻辑 /// </summary> /// <param name="context"></param> /// <param name="writer"></param> protected abstract void Visit(ISyntaxContext context, BinaryWriter writer);
protected override void Visit(ISyntaxContext context, BinaryWriter writer) { writer.Write(_data); }
public void Previsit(ISyntaxContext context, BinaryWriter writer) { }
public override void Visit(ISyntaxContext context, IVisitRuler visitRuler, BinaryWriter writer) { _innerToken.Visit(context, visitRuler, writer); }
protected override void Visit(ISyntaxContext context, BinaryWriter writer) { throw new SyntaxCheckException(SyntaxErrorMessages.CheckNotCompileable, SyntaxErrorType.SYNTAX_ERROR_NOT_COMPILEABLE, context.Document, context.CheckingOffset, context.CheckingLength); }