<!DOCTYPE html>
<html>

  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  
    <title>Acceleo | Features</title>
  
    <meta name="description" content="The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 350 open source projects, including runtimes, tools and frameworks">
    <link rel="shortcut icon" type="image/png" href="/acceleo/common_assets/images/logos/favicon_acceleo.ico"/>

    <link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" integrity="sha384-9gVQ4dYFwwWSjIDZnLEWnxCjeSWFphJiwGPXr1jddIhOegiu1FwO5qRGvFXOdJZ4" crossorigin="anonymous">
    <link rel="stylesheet" href="/acceleo/common_assets/css/styles.css">
    <link rel="stylesheet" href="/acceleo/common_assets/css/animate.css">
    <link rel="stylesheet" href="/acceleo/common_assets/css/media.css"/>

    <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
    <script src="/acceleo/common_assets/js/magnific-popup.video.js"></script>
    <script src="/acceleo/common_assets/js/magnific-popup.min.js"></script>

    <!-- Eclipse Foundation Google Tag Manager -->
	<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
        new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
        j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
        'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
        })(window,document,'script','dataLayer','GTM-5WLCZXC');</script>
        <!-- End Google Tag Manager -->  
        
        <!-- Eclipse Foundation cookie consent: -->
        <link rel="stylesheet" type="text/css" href="//www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css" />
        <script src="//www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script>  
        
        <script src="/acceleo/assets/js/ga.js"></script>

    <!-- FontAwesome Latest version Kit (automatically updated) -->
    <script src="https://kit.fontawesome.com/16cf99803e.js" crossorigin="anonymous"></script>
    <!-- Bootstrap JS -->
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js" integrity="sha384-uefMccjFJAIv6A+rW+L4AHf99KvxDjWSu1z9VI8SKNVmz4sk7buKt/6v9KI65qnm" crossorigin="anonymous"></script>
    
    <script>
        jQuery(function($){ $(".hasTooltip").tooltip({"html": true,"container": "body"}); });
    </script>
    <!-- Triggers tooltips -->
    <script>
        jQuery(document).ready(function() {
            jQuery('.hasTooltip').tooltip();
        });
    </script>
</head>
  
  <body>

    <!-- Navigation -->
<header id="top-bar" class="navbar navbar-expand-lg fixed-top">
    <div class="container">
        <a class="navbar-brand" href="/acceleo">
            <img src="/acceleo/common_assets/images/logos/logo_acceleo.png" alt="Logo Acceleo">
        </a>
        
        <!-- /logo -->
        <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive"
            aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
            <i class="fa fa-bars"></i>
        </button>
        <nav class="collapse navbar-collapse" id="navbarResponsive">
            <div class="main-menu ml-auto">
                <ul class="nav navbar-nav">
                    <li>
                        <a href="/acceleo/overview.html">Overview</a>
                    </li>
                    <li>
                        <a href="/acceleo/features.html">Features</a>
                    </li>
                    <li>
                        <a href="/acceleo/resources.html">Resources</a>
                    </li>
                    <li>
                        <a href="/acceleo/support.html">Support</a>
                    </li>
                    <li id="dwnld">
                        <a href="/acceleo/download.html">Download</a>
                    </li>
                </ul>
            </div>
        </nav>
    </div>
</header>

    
    <section id="" class="text-center">
    <div class="container">
        <h2 class="title wow fadeInDown" data-wow-duration="500ms" data-wow-delay=".2s">The Acceleo Language</h2> 
<h3 class="wow fadeInDown" data-wow-duration="500ms" data-wow-delay=".3s"></h3>
<p class="wow fadeInDown" data-wow-duration="500ms" data-wow-delay=".4s"></p>



        <div class="row">
            <div class="col-md-12 wow fadeInLeft" data-wow-duration="500ms" data-wow-delay="300ms">            
                <p>Templates (Pre-conditions, Post-treatments, Variables, User-code) | Modules | Queries</p>
        
                <p><a class="btn btn-default wow fadeInUp" data-wow-delay=".6s" href="https://wiki.eclipse.org/Acceleo/User_Guide" target="_blank">Learn more</a></p>
            </div>
        </div>
    </div>
</section>

<section class="bg_lightest_grey text-center">
    <div class="container">
        <h2 class="title wow fadeInDown" data-wow-duration="500ms" data-wow-delay=".2s">The Acceleo Tooling</h2> 
<h3 class="wow fadeInDown" data-wow-duration="500ms" data-wow-delay=".3s"></h3>
<p class="wow fadeInDown" data-wow-duration="500ms" data-wow-delay=".4s"></p>



        <div class="row">
            <div class="col-md-12 wow fadeInLeft" data-wow-duration="500ms" data-wow-delay="300ms">            
               <p>Syntax highlighting | Smart completion | Navigation to definitions and references | Errors detection <br> Quick fixes | Warning and informations support | Dynamic outline | Quick outline | Code folding <br>
               Code templates | Customizable code templates | Documentation hover | Visible whitespace characters <br> Search of occurrences | Refactoring | Eclipse perspective | Profiler | Debugger

                <p><a class="btn btn-default wow fadeInUp" data-wow-delay=".6s" href="https://wiki.eclipse.org/Acceleo/User_Guide#The_Acceleo_Tooling" target="_blank">Learn more</a></p>
            </div>
        </div>
    </div>
</section>

<section class="text-center">
    <div class="container">
        <h2 class="title wow fadeInDown" data-wow-duration="500ms" data-wow-delay=".2s">The Acceleo Runtime</h2> 
<h3 class="wow fadeInDown" data-wow-duration="500ms" data-wow-delay=".3s"></h3>
<p class="wow fadeInDown" data-wow-duration="500ms" data-wow-delay=".4s"></p>



        <div class="row">
            <div class="col-md-12 wow fadeInLeft" data-wow-duration="500ms" data-wow-delay="300ms">            
               Compiler | Generation engine | Standalone mode | Integration (Ant, Maven or Java)
                <p><a class="btn btn-default wow fadeInUp" data-wow-delay=".6s" href="https://wiki.eclipse.org/Acceleo/User_Guide#Launching_an_Acceleo_generation" target="_blank">Learn more</a></p>
            </div>
        </div>
    </div>
</section>

<footer>
  <div class="container">
      <div class="row">    
        
<div class="col-md-3">
    <p><a href="http://www.eclipse.org/"  target="_blank"><img src="/acceleo/common_assets/images/logos/logo-eclipse-foundation.png" alt="Eclipse Foundation logo"></a></p>
    <p id="copyright">Copyright © 2021 Eclipse Foundation, Inc.<br>All Rights Reserved.</p>
</div>

<div class="col-md-3">
    <h6>Eclipse Foundation</h6>
    <ul>
        <li><a href="http://www.eclipse.org/legal/privacy.php" target="_blank">Privacy Policy</a></li>
        <li><a href="http://eclipse.org/" target="_blank">Eclipse</a></li>
        <li><a href="http://www.eclipse.org/legal/termsofuse.php" target="_blank">Terms of Use</a></li>
        <li><a href="http://www.eclipse.org/legal/copyright.php" target="_blank">Copyright Agent</a></li>
        <li><a href="http://www.eclipse.org/legal/" target="_blank">Legal</a></li>
        <li><a href="http://www.eclipse.org/org/foundation/contact.php" target="_blank"> Contact Us</a></li>
    </ul>
</div>

        
<div class="col-md-3">
    <h6>Project Links</h6>
    <ul>
        <li><a href="https://projects.eclipse.org/projects/modeling.m2t.acceleo" target="_blank">About this project</a></li>
        <li><a href="http://wiki.eclipse.org/Acceleo" target="_blank">Wiki</a></li>
        <li><a href="https://www.eclipse.org/forums/index.php?t=thread&frm_id=24&" target="_blank">Forum</a></li>
        <li><a href="https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=VERIFIED&list_id=9161179&product=Acceleo&query_format=advanced" target="_blank">Bugs</a></li>
        <li><a href="https://projects.eclipse.org/projects/modeling.m2t.acceleo/developer" target="_blank">Source Code</a></li>
    </ul>
</div>
    </div>
  </div>
</footer>

    
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js" integrity="sha384-cs/chFZiN24E4KMATLdqdvsezGxaGsi4hLGOzlXwp5UZB1LY//20VyM2taTB4QvJ" crossorigin="anonymous" defer></script>

<script src="/acceleo/common_assets/js/wow.min.js" defer></script>
<script src="/acceleo/common_assets/js/main.js" defer></script>
<script src="/acceleo/common_assets/js/magnific-popup.min.js" defer></script>
<script src="/acceleo/common_assets/js/magnific-popup.video.js" defer></script>
<!-- Call wow function -->
<script>
        jQuery(document).ready(function(){
            "use strict";
            new WOW().init();
            jQuery('.smooth-scroll').scrollingTo();

            var url = window.location;
            // Will only work if string in href matches with location
            jQuery('ul.nav a[href="'+ url +'"]').parent().addClass('active');

            // Will also work for relative and absolute hrefs
            jQuery('ul.nav a').filter(function() {
                return this.href == url;
            }).parent().addClass('active');

            jQuery(".nav a").on("click", function(){
                jQuery(".nav").find(".active").removeClass("active");
                jQuery(this).parent().addClass("active");
            });
        });
</script>
  
  </body>
</html>
