コード例 #1
0
        public override void ExitFuncproc([NotNull] XSharpParser.FuncprocContext context)
        {
            if (context.InitExit != null)
            {
                if (!_options.HasRuntime)
                {
                    _parseErrors.Add(new ParseErrorData(context, ErrorCode.ERR_FeatureNotAvailableInDialect, "Init/Exit procedure", _options.Dialect.ToString()));
                }

                if (context.T.Type != XSharpParser.PROCEDURE)
                {
                    _parseErrors.Add(new ParseErrorData(context.InitExit, ErrorCode.ERR_FunctionsCannotHaveInitExit));
                }
                else
                {
                    if (context.Sig.ParamList?._Params.Count > 0)
                    {
                        _parseErrors.Add(new ParseErrorData(context, ErrorCode.ERR_InitProceduresCannotDefineParameters));
                    }
                }
            }

            if (context.T2 != null)
            {
                var endToken = context.T2 as XSharpToken;
                if (endToken != null && endToken.Type != context.T.Type)
                {
                    _parseErrors.Add(new ParseErrorData(endToken, ErrorCode.ERR_UnexpectedToken, endToken.Text));
                }
            }
        }
コード例 #2
0
 public override void EnterFuncproc([NotNull] XSharpParser.FuncprocContext context)
 => AddMethodInfo(GetMethodName(context.Sig), "", MethodInfoType.FuncProc, context.statementBlock());