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)); }
/// <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) { }
/// <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)); }