Exemplo n.º 1
0
        /// <summary>
        /// Executes the translation process.
        /// </summary>
        /// <param name="context">The compilation context.</param>
        public void Execute(CompilationContext context)
        {
            if (context == null || context.Model == null)
                return;

            if (context.OutputStream == null || !context.OutputStream.CanWrite)
                throw new CompilationException("The translation output stream is null or not writable.");

            var translationCtx = new TranslationContext();
            translationCtx.OutputStream = context.OutputStream;

            // write enum declarations
            var enumTranslator = new EnumTranslator();
            foreach (var item in context.Model.Enums)
                enumTranslator.Translate(item, translationCtx);

            // write class declarations
            var classTranslator = new ClassTranslator();
            foreach (var item in ClassSorter.Sort(context.Model.Classes))
                classTranslator.Translate(item, translationCtx);

            // write global statements
            if (context.Model.GlobalStatements.Any())
            {
                translationCtx.WriteLine();
                foreach (var item in context.Model.GlobalStatements)
                    translationCtx.WriteModel(item);
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Creates a new instance of the class.
 /// </summary>
 /// <param name="context">The translation context.</param>
 /// <param name="position">The writing position.</param>
 public PositionalWriter(TranslationContext context, int position)
 {
     _context = context;
     _position = position;
 }
Exemplo n.º 3
0
 public override void Translate(BaseExpression model, TranslationContext context)
 {
     context.Write("$base");
 }