Exemplo n.º 1
0
        public AstNamespace GetNamespace(string codeText)
        {
            if (InitializeCompiler("Namespace", codeText) == false)
            {
                return(null);
            }

            var progressTitle = CompileProgressTitle("Namespace");

            try
            {
                RootParseNode = RootParseNode.ChildNodes[0];

                var symbol =
                    GMacValueAccessGenerator.Translate_Direct(Context, RootParseNode, RoleNames.Namespace);

                this.ReportNormal(progressTitle, symbol.SymbolAccessName, ProgressEventArgsResult.Success);

                return(new AstNamespace(symbol as GMacNamespace));
            }
            catch (Exception e)
            {
                this.ReportError(progressTitle, e);

                return(null);
            }
        }
Exemplo n.º 2
0
        public AstDatastoreValueAccess GetMacroParameterValueAccess(AstMacro macroInfo, string codeText)
        {
            if (InitializeCompiler(macroInfo.AssociatedMacro.ChildScope, "Macro Parameter Value Access", codeText) == false)
            {
                return(null);
            }

            var progressTitle = CompileProgressTitle("Macro Parameter Value Access");

            try
            {
                RootParseNode = RootParseNode.ChildNodes[0];

                var valueAccess =
                    GMacValueAccessGenerator.Translate_LValue_MacroParameter(Context, RootParseNode, macroInfo.AssociatedMacro);


                this.ReportNormal(progressTitle, valueAccess.GetName(), ProgressEventArgsResult.Success);

                return(new AstDatastoreValueAccess(valueAccess));
            }
            catch (Exception e)
            {
                this.ReportError(progressTitle, e);

                return(null);
            }
        }
Exemplo n.º 3
0
        public AstDatastoreValueAccess GetDataStoreValueAccess(string codeText)
        {
            if (InitializeCompiler("Data-store Value Access", codeText) == false)
            {
                return(null);
            }

            var progressTitle = CompileProgressTitle("Data-store Value Access");

            try
            {
                RootParseNode = RootParseNode.ChildNodes[0];

                var valueAccess =
                    GMacValueAccessGenerator.Translate(Context, RootParseNode, false);

                if (valueAccess.RootSymbolAsDataStore == null)
                {
                    this.ReportNormal(progressTitle, codeText, ProgressEventArgsResult.Failure);

                    return(null);
                }


                this.ReportNormal(progressTitle, valueAccess.GetName(), ProgressEventArgsResult.Success);

                return(new AstDatastoreValueAccess(valueAccess));
            }
            catch (Exception e)
            {
                this.ReportError(progressTitle, e);

                return(null);
            }
        }
Exemplo n.º 4
0
        public AstSymbol GetSymbol(string codeText, IEnumerable <string> allowedRoleNames)
        {
            if (InitializeCompiler("Symbol", codeText) == false)
            {
                return(null);
            }

            var progressTitle = CompileProgressTitle("Symbol");

            try
            {
                RootParseNode = RootParseNode.ChildNodes[0];

                var symbol =
                    GMacValueAccessGenerator.Translate_Direct(Context, RootParseNode, allowedRoleNames);


                this.ReportNormal(progressTitle, symbol.SymbolAccessName, ProgressEventArgsResult.Success);

                return(symbol.ToAstSymbol());
            }
            catch (Exception e)
            {
                this.ReportError(progressTitle, e);

                return(null);
            }
        }
Exemplo n.º 5
0
        public AstType GetGMacType(string codeText)
        {
            if (InitializeCompiler("GMac Type", codeText) == false)
            {
                return(null);
            }

            var progressTitle = CompileProgressTitle("GMac Type");

            try
            {
                RootParseNode = RootParseNode.ChildNodes[0];

                var symbol =
                    GMacValueAccessGenerator.Translate_Direct_LanguageType(Context, RootParseNode);


                this.ReportNormal(progressTitle, symbol.TypeSignature, ProgressEventArgsResult.Success);

                return(new AstType(symbol));
            }
            catch (Exception e)
            {
                this.ReportError(progressTitle, e);

                return(null);
            }
        }
Exemplo n.º 6
0
        public AstDatastoreValueAccess GetMacroParameterValueAccess(string codeText)
        {
            var progressTitle = InitProgressTitle("Macro Parameter Value Access");

            var mainScope = RefResContext.MainScope as ScopeSymbolChild;

            if (mainScope == null)
            {
                this.ReportNormal(progressTitle, codeText, false);

                return(null);
            }

            var macro = mainScope.ParentLanguageSymbolWithScope as GMacMacro;

            if (macro == null)
            {
                this.ReportNormal(progressTitle, codeText, false);

                return(null);
            }

            if (InitializeCompiler(codeText, GMacSourceParser.ParseQualifiedItem, mainScope) == false)
            {
                this.ReportNormal(progressTitle, codeText, false);

                return(null);
            }

            progressTitle = CompileProgressTitle("Macro Parameter Value Access");

            try
            {
                RootParseNode = RootParseNode.ChildNodes[0];

                var valueAccess =
                    GMacValueAccessGenerator.Translate_LValue_MacroParameter(Context, RootParseNode, macro);


                this.ReportNormal(progressTitle, valueAccess.GetName(), ProgressEventArgsResult.Success);

                return(new AstDatastoreValueAccess(valueAccess));
            }
            catch (Exception e)
            {
                this.ReportError(progressTitle, e);

                return(null);
            }
        }