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);
     }
 }
Exemple #6
0
 /// <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)
 {
     // 自身没有编译逻辑,只是替换参数编译而已。
 }
Exemple #8
0
 /// <summary>
 /// 自身访问逻辑
 /// </summary>
 /// <param name="context"></param>
 /// <param name="writer"></param>
 protected abstract void Visit(ISyntaxContext context, BinaryWriter writer);
Exemple #9
0
 protected override void Visit(ISyntaxContext context, BinaryWriter writer)
 {
     writer.Write(_data);
 }
Exemple #10
0
 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);
 }