Beispiel #1
0
 private void VisitEmpty(empty_statement stmt)
 {
     
 }
        internal statement_node convert_strong(SyntaxTree.statement st)
        {
#if (DEBUG)
            if (st == null)
            {
                throw new CompilerInternalError("This syntax tree node can not be null.");
            }
#endif

            #region MikhailoMMX, обработка критических секций OpenMP
            bool isCritical = false;
            SyntaxTree.statement st_orig = st;
            if (OpenMP.LocksFound)
                if (DirectivesToNodesLinks.ContainsKey(st) && OpenMP.IsCriticalDirective(DirectivesToNodesLinks[st]))
                {
                    //если перед узлом есть директива omp critical
                    isCritical = true;
                    OpenMP.TryConvertCritical(ref st, this, DirectivesToNodesLinks[st]);
                    OpenMP.DisableDirective(st_orig, DirectivesToNodesLinks);
                }
            #endregion

            convertion_data_and_alghoritms.check_node_parser_error(st);

            //st = prepare_statement(st);
            statement_node sn = null;
            //try
            {
                sn = ret.visit(st);
                if (sn == null)
                    sn = new empty_statement(null);
            }
            /*catch (PascalABCCompiler.Errors.Error e)
            {
                if (ThrowCompilationError)
                    throw e;
                else
                {
                    ErrorsList.Add(e);
                    return new empty_statement(null);
                }
            }
            catch (Exception e)
            {
                if (ThrowCompilationError)
                    throw e;
                else
                    return new empty_statement(null);
            }*/
            //sn.loc=get_location(st);

            #region MikhailoMMX, обработка критических секций OpenMP
            if (isCritical)
                OpenMP.EnableDirective(st_orig, DirectivesToNodesLinks);
            #endregion

            return sn;
        }