@@ -0,0 +1,2393 @@
+/* Copyright %C2%A9 2016 Matthew Champion%0AAll rights reserved.%0A%0ARedistribution and use in source and binary forms, with or without%0Amodification, are permitted provided that the following conditions are met:%0A * Redistributions of source code must retain the above copyright%0A      notice, this list of conditions and the following disclaimer.%0A * Redistributions in binary form must reproduce the above copyright%0A      notice, this list of conditions and the following disclaimer in the%0A      documentation and/or other materials provided with the distribution.%0A * Neither the name of mattunderscore.com nor the%0A      names of its contributors may be used to endorse or promote products%0A      derived from this software without specific prior written permission.%0A%0ATHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS %22AS IS%22 AND%0AANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED%0AWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE%0ADISCLAIMED. IN NO EVENT SHALL MATTHEW CHAMPION BE LIABLE FOR ANY%0ADIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES%0A(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;%0ALOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND%0AON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT%0A(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS%0ASOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */%0A%0Apackage com.mattunderscore.specky;%0A%0Aimport com.mattunderscore.specky.model.generator.scope.SectionScopeResolver;%0Aimport com.mattunderscore.specky.parser.Specky;%0Aimport com.mattunderscore.specky.parser.SpeckyBaseListener;%0A%0A/**%0A * AST listener for section scopes.%0A *%0A * @author Matt Champion 25/12/2016%0A */%0Apublic final class SectionScopeListener extends SpeckyBaseListener %7B%0A    private final SectionScopeResolver sectionScopeResolver;%0A%0A    /**%0A     * Constructor.%0A     */%0A    public SectionScopeListener(SectionScopeResolver sectionScopeResolver) %7B%0A%0A        this.sectionScopeResolver = sectionScopeResolver;%0A    %7D%0A%0A    @Override%0A    public void enterSectionContent(Specky.SectionContentContext ctx) %7B%0A        sectionScopeResolver.beginNewScope(null);%0A    %7D%0A%0A    @Override%0A    public void exitSectionContent(Specky.SectionContentContext ctx) %7B%0A        sectionScopeResolver.completeScope();%0A    %7D%0A%7D%0A

Add section scope listener.