예제 #1
0
        public override Result VisitIndex_ref([NotNull] testParser.Index_refContext context)
        {
            var    dev = context.dev.Text.ToUpper();
            Device device;

            if (!Device.TryParse(dev, out device))
            {
                return(Result.CreateError("解析できなかったデバイス:" + dev));
            }

            var @ref = [email protected]();

            if (@ref.StartsWith("#") || @ref.StartsWith("k", System.StringComparison.InvariantCultureIgnoreCase))
            {
                int indexValue;
                if (!int.TryParse(@ref.TrimStart('#', 'k', 'K'), out indexValue))
                {
                    return(Result.CreateError("修飾部が解析できなかった:" + @ref));
                }
                device.Increment(indexValue);
                return(Result.CreateSuccess(device));
            }
            Device refDevice;

            if (!Device.TryParse(@ref, out refDevice))
            {
                return(Result.CreateError("解析できなかったデバイス:" + @ref));
            }
            var val = _plc.FindKey(refDevice);

            device.Increment(_plc.WordDevices[val]);
            return(Result.CreateSuccess(device));
        }
예제 #2
0
 /// <summary>
 /// Exit a parse tree produced by <see cref="testParser.index_ref"/>.
 /// <para>The default implementation does nothing.</para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 public virtual void ExitIndex_ref([NotNull] testParser.Index_refContext context)
 {
 }
예제 #3
0
 /// <summary>
 /// Visit a parse tree produced by <see cref="testParser.index_ref"/>.
 /// <para>
 /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
 /// on <paramref name="context"/>.
 /// </para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 /// <return>The visitor result.</return>
 public virtual Result VisitIndex_ref([NotNull] testParser.Index_refContext context)
 {
     return(VisitChildren(context));
 }