# HG changeset patch # User Andrea Lucarelli # Date 1282513031 -7200 # Node ID d2820c029d3ac2b9e9ae6bd806c56f471d1c623e # Parent 2f191c83a5c472c697a75dbb2d4c55be963e5702 Add JVM compiler support. diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/build.xml --- a/ada.editor/build.xml Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.editor/build.xml Sun Aug 22 23:37:11 2010 +0200 @@ -6,12 +6,14 @@ - - + classpath="c:/jflex/jflex-1.4.3/lib/JFlex.jar" /> +--> - + + + + - + classpath="${netbeans.dest.dir}/php1/modules/ext/java-cup-11a.jar" /> + @@ -49,7 +54,7 @@ - + - + diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/history.txt --- a/ada.editor/history.txt Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.editor/history.txt Sun Aug 22 23:37:11 2010 +0200 @@ -1,5 +1,12 @@ -0.1.9: dd-mm-2009 +0.2.1: 12-08-2010 +- Update modules dependencies version. + +0.2.0: 13-10-2009 +- Add the signing of the nbm file. + +0.1.9: 01-10-2009 - Migrates from GSF to CSL for new Parsing & Indexing API +- Add improvements on ast parser. 0.1.8: 13-09-2009 - Add improvements on ast parser, navigator, instant renamer. diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/manifest.mf --- a/ada.editor/manifest.mf Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.editor/manifest.mf Sun Aug 22 23:37:11 2010 +0200 @@ -3,5 +3,5 @@ OpenIDE-Module: org.netbeans.modules.ada.editor OpenIDE-Module-Layer: org/netbeans/modules/ada/editor/resources/layer.xml OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/ada/editor/Bundle.properties -OpenIDE-Module-Specification-Version: 0.1.10 +OpenIDE-Module-Specification-Version: 0.2.1 diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/nbproject/project.properties --- a/ada.editor/nbproject/project.properties Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.editor/nbproject/project.properties Sun Aug 22 23:37:11 2010 +0200 @@ -8,3 +8,6 @@ nbm.homepage=http://wiki.netbeans.org/Ada nbm.module.author=Andrea Lucarelli nbm.needs.restart=true + +keystore=nbproject/private/keystore +nbm_alias=nbada \ No newline at end of file diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/nbproject/project.xml --- a/ada.editor/nbproject/project.xml Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.editor/nbproject/project.xml Sun Aug 22 23:37:11 2010 +0200 @@ -11,7 +11,7 @@ 1 - 1.6.1 + 1.10.1 @@ -20,7 +20,7 @@ 1 - 1.0.1 + 1.3.1 @@ -29,7 +29,7 @@ 1 - 1.1 + 1.5.1 @@ -37,7 +37,7 @@ - 0.1.7 + 0.1.9 @@ -46,7 +46,7 @@ 1 - 1.9.2 + 1.14.1 @@ -55,7 +55,7 @@ 2 - 1.9 + 1.15.1 @@ -64,7 +64,7 @@ 1 - 1.29.1 + 1.44.1 @@ -73,7 +73,7 @@ 1 - 1.10.1 + 1.14.1 @@ -82,7 +82,7 @@ 1 - 1.22.1 + 1.27.1 @@ -91,7 +91,7 @@ 1 - 1.25.1 + 1.32.1 @@ -100,7 +100,7 @@ 2 - 1.29 + 1.33.1 @@ -109,7 +109,7 @@ 1 - 1.10.1 + 1.16.2 @@ -118,7 +118,7 @@ 1 - 1.26 + 1.26.3 @@ -127,7 +127,15 @@ 1 - 1.19 + 1.28.1 + + + + org.openide.actions + + + + 6.12.1 @@ -135,7 +143,7 @@ - 7.3.1 + 7.19.1 @@ -143,7 +151,7 @@ - 7.11 + 7.32.1 @@ -151,7 +159,7 @@ - 7.2 + 7.10.1 @@ -159,7 +167,7 @@ - 7.7.1 + 7.13.1 @@ -167,7 +175,7 @@ - 7.7 + 7.12.1 @@ -175,7 +183,7 @@ - 6.21 + 6.27.1 @@ -183,7 +191,7 @@ - 7.18.1 + 7.31.2 @@ -191,7 +199,7 @@ - 6.24 + 6.30.1 diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/AdaDataNode.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ada.editor/src/org/netbeans/modules/ada/editor/AdaDataNode.java Sun Aug 22 23:37:11 2010 +0200 @@ -0,0 +1,168 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common + * Development and Distribution License("CDDL") (collectively, the + * "License"). You may not use this file except in compliance with the + * License. You can obtain a copy of the License at + * http://www.netbeans.org/cddl-gplv2.html + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the + * specific language governing permissions and limitations under the + * License. When distributing the software, include this License Header + * Notice in each file and include the License file at + * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the GPL Version 2 section of the License file that + * accompanied this code. If applicable, add the following below the + * License Header, with the fields enclosed by brackets [] replaced by + * your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + * If you wish your version of this file to be governed by only the CDDL + * or only the GPL Version 2, indicate your decision by adding + * "[Contributor] elects to include this software in this distribution + * under the [CDDL or GPL Version 2] license." If you do not indicate a + * single choice of license, a recipient has the option to distribute + * your version of this file under either the CDDL, the GPL Version 2 or + * to extend the choice of license to its licensees as provided above. + * However, if you add GPL Version 2 code and therefore, elected the GPL + * Version 2 license, then the option applies only if the new code is + * made subject to such option by the copyright holder. + * + * Contributor(s): + * + * Portions Copyrighted 2009 Sun Microsystems, Inc. + */ +package org.netbeans.modules.ada.editor; + +import java.awt.Image; +import java.text.DateFormat; +import org.openide.filesystems.FileAttributeEvent; +import org.openide.filesystems.FileChangeListener; +import org.openide.filesystems.FileEvent; +import org.openide.filesystems.FileRenameEvent; +import org.openide.loaders.DataNode; +import org.openide.loaders.DataObject; +import org.openide.nodes.FilterNode.Children; +import org.openide.util.ImageUtilities; +import org.openide.util.Lookup; + +/** + * + * @author Andrea Lucarelli + */ +public class AdaDataNode extends DataNode implements FileChangeListener { + + private static final String ADS_ICON = "/org/netbeans/modules/ada/editor/resources/icons/ads-16.png"; + private static final String ADB_ICON = "/org/netbeans/modules/ada/editor/resources/icons/adb-16.png"; + private static final String ADA_SPEC_ICON = "/org/netbeans/modules/ada/editor/resources/icons/ada-spec-16.png"; + private static final String ADA_BODY_ICON = "/org/netbeans/modules/ada/editor/resources/icons/ada-body-16.png"; + private AdaDataObject obj; + private String displayName; + private String tooltip; + private Image icon; + + public AdaDataNode(AdaDataObject obj) { + super(obj, Children.LEAF); + this.obj = obj; + } + + public AdaDataNode(DataObject obj, Lookup lookup) { + super(obj, Children.LEAF, lookup); + //Add file change listener to the FileObject: + //obj.getPrimaryFile().addFileChangeListener(this); + //Set default icon: + if (obj.getPrimaryFile().getExt().equalsIgnoreCase("ads")) { + setIconBaseWithExtension(ADS_ICON); + icon = ImageUtilities.loadImage(ADS_ICON); + } else if (obj.getPrimaryFile().getExt().equalsIgnoreCase("adb")) { + setIconBaseWithExtension(ADB_ICON); + icon = ImageUtilities.loadImage(ADB_ICON); + } else { + // TODO: manage the contents for set the icon + setIconBaseWithExtension(ADA_SPEC_ICON); + icon = ImageUtilities.loadImage(ADA_SPEC_ICON); + } + + //Set default tooltip: + tooltip = obj.getPrimaryFile().getNameExt(); + setShortDescription (tooltip); + } + + @Override + public String getDisplayName() { + if (null != displayName) { + return displayName; + } + return super.getDisplayName(); + } + + @Override + public String getShortDescription() { + if (null != tooltip) { + return tooltip; + } + return super.getShortDescription(); + } + + @Override + public Image getIcon(int arg0) { + if (null != icon) { + return icon; + } + return super.getIcon(arg0); + } + + //When the file changes... + @Override + public void fileChanged(FileEvent arg0) { + + //Get the milliseconds and format it: + long mills = System.currentTimeMillis(); + DateFormat dateFormatter = DateFormat.getDateTimeInstance( + DateFormat.LONG, + DateFormat.LONG); + String formatted = dateFormatter.format(mills); + + //Save the current display name: + String oldDisplayName = displayName; + + //Save the current tooltip: + String oldShortDescription = tooltip; + + //Set the new display name: + displayName = "Change (" + formatted + ")"; + + //Set the new tooltip: + tooltip = formatted; + + //Fire change events on the node, + //which will immediately refresh it with the new values: + fireDisplayNameChange(oldDisplayName, displayName); + fireShortDescriptionChange(oldShortDescription, tooltip); + fireIconChange(); + } + + @Override + public void fileFolderCreated(FileEvent arg0) { + } + + @Override + public void fileDataCreated(FileEvent arg0) { + } + + @Override + public void fileDeleted(FileEvent arg0) { + } + + @Override + public void fileRenamed(FileRenameEvent arg0) { + } + + @Override + public void fileAttributeChanged(FileAttributeEvent arg0) { + } +} diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/AdaDataObject.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ada.editor/src/org/netbeans/modules/ada/editor/AdaDataObject.java Sun Aug 22 23:37:11 2010 +0200 @@ -0,0 +1,75 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common + * Development and Distribution License("CDDL") (collectively, the + * "License"). You may not use this file except in compliance with the + * License. You can obtain a copy of the License at + * http://www.netbeans.org/cddl-gplv2.html + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the + * specific language governing permissions and limitations under the + * License. When distributing the software, include this License Header + * Notice in each file and include the License file at + * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the GPL Version 2 section of the License file that + * accompanied this code. If applicable, add the following below the + * License Header, with the fields enclosed by brackets [] replaced by + * your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + * If you wish your version of this file to be governed by only the CDDL + * or only the GPL Version 2, indicate your decision by adding + * "[Contributor] elects to include this software in this distribution + * under the [CDDL or GPL Version 2] license." If you do not indicate a + * single choice of license, a recipient has the option to distribute + * your version of this file under either the CDDL, the GPL Version 2 or + * to extend the choice of license to its licensees as provided above. + * However, if you add GPL Version 2 code and therefore, elected the GPL + * Version 2 license, then the option applies only if the new code is + * made subject to such option by the copyright holder. + * + * Contributor(s): + * + * Portions Copyrighted 2009 Sun Microsystems, Inc. + */ +package org.netbeans.modules.ada.editor; + +import java.io.IOException; +import org.openide.filesystems.FileObject; +import org.openide.loaders.DataObjectExistsException; +import org.openide.loaders.MultiDataObject; +import org.openide.loaders.MultiFileLoader; +import org.openide.nodes.CookieSet; +import org.openide.nodes.Node; +import org.openide.util.Lookup; +import org.openide.text.DataEditorSupport; + +/** + * + * @author Andrea Lucarelli + */ +public class AdaDataObject extends MultiDataObject { + + private FileObject pf; + + public AdaDataObject(FileObject pf, MultiFileLoader loader) throws DataObjectExistsException, IOException { + super(pf, loader); + this.pf = pf; + CookieSet cookies = getCookieSet(); + cookies.add((Node.Cookie) DataEditorSupport.create(this, getPrimaryEntry(), cookies)); + } + + @Override + protected Node createNodeDelegate() { + return new AdaDataNode(this, getLookup()); + } + + @Override + public Lookup getLookup() { + return getCookieSet().getLookup(); + } +} diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/AdaLanguage.java --- a/ada.editor/src/org/netbeans/modules/ada/editor/AdaLanguage.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.editor/src/org/netbeans/modules/ada/editor/AdaLanguage.java Sun Aug 22 23:37:11 2010 +0200 @@ -51,8 +51,6 @@ import org.netbeans.modules.ada.editor.parser.AdaParser; import org.netbeans.modules.ada.editor.parser.AdaSemanticAnalyzer; import org.netbeans.modules.csl.api.CodeCompletionHandler; -import org.netbeans.modules.csl.api.CodeCompletionHandler; -import org.netbeans.modules.csl.api.CodeCompletionHandler; import org.netbeans.modules.csl.api.DeclarationFinder; import org.netbeans.modules.csl.api.Formatter; import org.netbeans.modules.csl.api.HintsProvider; diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/CodeUtils.java --- a/ada.editor/src/org/netbeans/modules/ada/editor/CodeUtils.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.editor/src/org/netbeans/modules/ada/editor/CodeUtils.java Sun Aug 22 23:37:11 2010 +0200 @@ -43,14 +43,16 @@ import org.netbeans.modules.ada.editor.ast.nodes.FormalParameter; import org.netbeans.modules.ada.editor.ast.nodes.Identifier; import org.netbeans.modules.ada.editor.ast.nodes.MethodDeclaration; +import org.netbeans.modules.ada.editor.ast.nodes.MethodInvocation; +import org.netbeans.modules.ada.editor.ast.nodes.NameBase; import org.netbeans.modules.ada.editor.ast.nodes.PackageBody; import org.netbeans.modules.ada.editor.ast.nodes.PackageName; import org.netbeans.modules.ada.editor.ast.nodes.PackageSpecification; -import org.netbeans.modules.ada.editor.ast.nodes.Reference; -import org.netbeans.modules.ada.editor.ast.nodes.Statement; import org.netbeans.modules.ada.editor.ast.nodes.SubprogramBody; import org.netbeans.modules.ada.editor.ast.nodes.SubprogramSpecification; +import org.netbeans.modules.ada.editor.ast.nodes.TypeAccess; import org.netbeans.modules.ada.editor.ast.nodes.TypeDeclaration; +import org.netbeans.modules.ada.editor.ast.nodes.TypeName; import org.netbeans.modules.ada.editor.ast.nodes.Variable; /** @@ -96,7 +98,7 @@ return methodDeclaration.getMethodName(); } - @CheckForNull // null for RelectionVariable + @CheckForNull public static String extractVariableName(Variable var) { if (var.getName() instanceof Identifier) { Identifier id = (Identifier) var.getName(); @@ -109,7 +111,7 @@ return null; } - @CheckForNull // null for RelectionVariable + @CheckForNull public static String extractTypeName(TypeDeclaration var) { if (var.getTypeName() instanceof Identifier) { Identifier id = (Identifier) var.getTypeName(); @@ -122,6 +124,33 @@ return null; } + @CheckForNull + public static String extractTypeName(NameBase type) { + if (type instanceof TypeName) { + Identifier id = ((TypeName)type).getTypeName(); + StringBuilder typeName = new StringBuilder(); + typeName.append(id.getName()); + return typeName.toString(); + } else if (type instanceof TypeAccess) { + NameBase name = ((TypeAccess) type).getMember(); + return extractTypeName(name); + } + + return null; + } + + @CheckForNull + public static TypeName extractType(NameBase type) { + if (type instanceof TypeName) { + return (TypeName)type; + } else if (type instanceof TypeAccess) { + NameBase name = ((TypeAccess) type).getMember(); + return extractType(name); + } + + return null; + } + public static String getParamDisplayName(FormalParameter param) { Variable var = param.getParameterName(); StringBuilder paramName = new StringBuilder(); diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/Assignment.java --- a/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/Assignment.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/Assignment.java Sun Aug 22 23:37:11 2010 +0200 @@ -48,10 +48,10 @@ */ public class Assignment extends Statement { - private VariableBase leftHandSide; + private NameBase leftHandSide; private Expression rightHandSide; - public Assignment(int start, int end, VariableBase leftHandSide, Expression rightHandSide) { + public Assignment(int start, int end, NameBase leftHandSide, Expression rightHandSide) { super(start, end); if (leftHandSide == null ) {//|| rightHandSide == null) { TODO: must be correct throw new IllegalArgumentException @@ -67,7 +67,7 @@ * * @return the left hand side node */ - public VariableBase getLeftHandSide() { + public NameBase getLeftHandSide() { return this.leftHandSide; } diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/BlockStatement.java --- a/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/BlockStatement.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/BlockStatement.java Sun Aug 22 23:37:11 2010 +0200 @@ -38,8 +38,6 @@ */ package org.netbeans.modules.ada.editor.ast.nodes; -import java.util.ArrayList; -import java.util.List; import org.netbeans.modules.ada.editor.ast.nodes.visitors.Visitor; /** @@ -59,42 +57,41 @@ */ public class BlockStatement extends Statement { - private Identifier label; + private Identifier label; private Block declarations; private Block body; public BlockStatement(int start, int end, Identifier label, Block declarations, Block body) { super(start, end); - this.label = label; + this.label = label; this.declarations = declarations; this.body = body; } - public Identifier getLabel () { - return this.label; - } + public Identifier getLabel() { + return this.label; + } /** * Retrieves the declaration statements parts of this block * @return declaration statements parts of this block */ public Block getDeclarations() { - return this.body; + return this.declarations; } - /** + /** * Retrieves the body statements parts of this block * @return body statements parts of this block */ public Block getBody() { return this.body; } - + @Override public void accept(Visitor visitor) { visitor.visit(this); } - } diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/BodyDeclaration.java --- a/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/BodyDeclaration.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/BodyDeclaration.java Sun Aug 22 23:37:11 2010 +0200 @@ -42,6 +42,8 @@ * Based on org.netbeans.modules.php.editor.parser.astnodes.BodyDeclaration * * Base class for package member declarations + * + * @author Andrea Lucarelli */ public abstract class BodyDeclaration extends Statement { diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/Dispatch.java --- a/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/Dispatch.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/Dispatch.java Sun Aug 22 23:37:11 2010 +0200 @@ -45,11 +45,11 @@ * MyPackage.foo, * MyPackage.foo(bar : in bar_type) */ -public abstract class Dispatch extends VariableBase { +public abstract class Dispatch extends NameBase { - private VariableBase dispatcher; + private NameBase dispatcher; - public Dispatch(int start, int end, VariableBase dispatcher) { + public Dispatch(int start, int end, NameBase dispatcher) { super(start, end); this.dispatcher = dispatcher; } @@ -59,7 +59,7 @@ * * @return dispatcher component of this dispatch expression */ - public VariableBase getDispatcher() { + public NameBase getDispatcher() { return dispatcher; } } diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/ExitStatement.java --- a/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/ExitStatement.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/ExitStatement.java Sun Aug 22 23:37:11 2010 +0200 @@ -48,10 +48,10 @@ */ public class ExitStatement extends Statement { - private String loopName; + private Expression loopName; private Expression whenCondition; - public ExitStatement(int start, int end, String loopName, Expression whenCondition) { + public ExitStatement(int start, int end, Expression loopName, Expression whenCondition) { super(start, end); this.loopName = loopName; this.whenCondition = whenCondition; @@ -62,7 +62,7 @@ * * @return the loopName node */ - public String getLoopName() { + public Expression getLoopName() { return loopName; } diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/FieldAccess.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/FieldAccess.java Sun Aug 22 23:37:11 2010 +0200 @@ -0,0 +1,78 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common + * Development and Distribution License("CDDL") (collectively, the + * "License"). You may not use this file except in compliance with the + * License. You can obtain a copy of the License at + * http://www.netbeans.org/cddl-gplv2.html + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the + * specific language governing permissions and limitations under the + * License. When distributing the software, include this License Header + * Notice in each file and include the License file at + * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the GPL Version 2 section of the License file that + * accompanied this code. If applicable, add the following below the + * License Header, with the fields enclosed by brackets [] replaced by + * your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + * If you wish your version of this file to be governed by only the CDDL + * or only the GPL Version 2, indicate your decision by adding + * "[Contributor] elects to include this software in this distribution + * under the [CDDL or GPL Version 2] license." If you do not indicate a + * single choice of license, a recipient has the option to distribute + * your version of this file under either the CDDL, the GPL Version 2 or + * to extend the choice of license to its licensees as provided above. + * However, if you add GPL Version 2 code and therefore, elected the GPL + * Version 2 license, then the option applies only if the new code is + * made subject to such option by the copyright holder. + * + * Contributor(s): + * + * Portions Copyrighted 2008 Sun Microsystems, Inc. + */ +package org.netbeans.modules.ada.editor.ast.nodes; + +import org.netbeans.modules.ada.editor.ast.nodes.visitors.Visitor; + +/** + * Represents a field access + *
e.g.
+ *
+ * MyPackage.Foo
+ */
+public class FieldAccess extends Dispatch {
+
+    private Variable field;
+
+    public FieldAccess(int start, int end, NameBase dispatcher, Variable field) {
+        super(start, end, dispatcher);
+        this.field = field;
+    }
+
+    /**
+     * Return the field component of this field access
+     * 
+     * @return the field component of this field access
+     */
+    public Variable getField() {
+        return field;
+    }
+
+    /**
+     * see {@link #getField()}
+     */
+    public NameBase getMember() {
+        return getField();
+    }
+    
+    @Override
+    public void accept(Visitor visitor) {
+        visitor.visit(this);
+    }
+}
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/FormalParameter.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/FormalParameter.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/FormalParameter.java	Sun Aug 22 23:37:11 2010 +0200
@@ -52,13 +52,12 @@
     public enum Mode {
         IN, OUT, IN_OUT, ACCESS;
     }
-
     private Variable parameterName;
     private Mode parameterMode;
-	private TypeName parameterType;
+    private NameBase parameterType;
     private Expression defaultValue;
 
-    public FormalParameter(int start, int end, final Variable parameterName, Mode parameterMode, TypeName type, Expression defaultValue) {
+    public FormalParameter(int start, int end, final Variable parameterName, Mode parameterMode, NameBase type, Expression defaultValue) {
         super(start, end);
 
         this.parameterName = parameterName;
@@ -67,7 +66,7 @@
         this.defaultValue = defaultValue;
     }
 
-    public FormalParameter(int start, int end, final Variable parameterName, Mode parameterMode, TypeName type) {
+    public FormalParameter(int start, int end, final Variable parameterName, Mode parameterMode, NameBase type) {
         this(start, end, parameterName, parameterMode, type, null);
     }
 
@@ -85,7 +84,7 @@
         return parameterName;
     }
 
-	/**
+    /**
      * @return the mode of this parameter
      */
     public Mode getParameterMode() {
@@ -95,10 +94,10 @@
     /**
      * @return the type of this parameter
      */
-    public TypeName getParameterType() {
+    public NameBase getParameterType() {
         return parameterType;
     }
-    
+
     @Override
     public void accept(Visitor visitor) {
         visitor.visit(this);
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/GotoStatement.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/GotoStatement.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/GotoStatement.java	Sun Aug 22 23:37:11 2010 +0200
@@ -47,9 +47,9 @@
  */
 public class GotoStatement extends Statement {
 
-    private String labelName;
+    private Expression labelName;
 
-    public GotoStatement(int start, int end, String labelName) {
+    public GotoStatement(int start, int end, Expression labelName) {
         super(start, end);
         this.labelName = labelName;
     }
@@ -59,7 +59,7 @@
      * 
      * @return the loopName node
      */
-    public String getLabelName() {
+    public Expression getLabelName() {
         return labelName;
     }
 
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/Identifier.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/Identifier.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/Identifier.java	Sun Aug 22 23:37:11 2010 +0200
@@ -36,7 +36,6 @@
  *
  * Portions Copyrighted 2008 Sun Microsystems, Inc.
  */
-
 package org.netbeans.modules.ada.editor.ast.nodes;
 
 import org.netbeans.modules.ada.editor.ast.nodes.visitors.Visitor;
@@ -47,9 +46,8 @@
  * Holds an identifier.
  * Uses for variable name, function name, procedure name and package name.
  * 
e.g.
  
- * Foo : Integer; -- Foo is the identifier,
- * Foo (Foo => Bar) -- Foo is the identifier,
- * Foo.Bar; -- Foo and Bar are identifiers
+ * Count X Get_Symbol Ethelyn Marion
+ * Snobol_4 X1 Page_Count Store_Next_Item
  *
  * @author Andrea Lucarelli
  */
@@ -59,7 +57,7 @@
 
     public Identifier(int start, int end, String name) {
         super(start, end);
-		this.name = name;
+        this.name = name;
     }
 
     public String getName() {
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/InfixExpression.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/InfixExpression.java	Sun Aug 22 23:37:11 2010 +0200
@@ -0,0 +1,126 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common
+ * Development and Distribution License("CDDL") (collectively, the
+ * "License"). You may not use this file except in compliance with the
+ * License. You can obtain a copy of the License at
+ * http://www.netbeans.org/cddl-gplv2.html
+ * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+ * specific language governing permissions and limitations under the
+ * License.  When distributing the software, include this License Header
+ * Notice in each file and include the License file at
+ * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the GPL Version 2 section of the License file that
+ * accompanied this code. If applicable, add the following below the
+ * License Header, with the fields enclosed by brackets [] replaced by
+ * your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ * 
+ * If you wish your version of this file to be governed by only the CDDL
+ * or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution
+ * under the [CDDL or GPL Version 2] license." If you do not indicate a
+ * single choice of license, a recipient has the option to distribute
+ * your version of this file under either the CDDL, the GPL Version 2 or
+ * to extend the choice of license to its licensees as provided above.
+ * However, if you add GPL Version 2 code and therefore, elected the GPL
+ * Version 2 license, then the option applies only if the new code is
+ * made subject to such option by the copyright holder.
+ * 
+ * Contributor(s):
+ * 
+ * Portions Copyrighted 2008 Sun Microsystems, Inc.
+ */
+package org.netbeans.modules.ada.editor.ast.nodes;
+
+import org.netbeans.modules.ada.editor.ast.nodes.visitors.Visitor;
+
+/**
+ * Based on org.netbeans.modules.php.editor.parser.astnodes.InfixExpression
+ * 
+ * Represents an infix expression
+ * 
e.g.
 $a + 1,
+ * 3 - 2,
+ * foo() * $a->bar(),
+ * 'string'.$c
+ */
+public class InfixExpression extends Expression {
+
+    public enum OperatorType {
+        IS_EQUAL, // '='
+    	IS_NOT_EQUAL, // '/='
+        RGREATER, // '<'
+        IS_SMALLER_OR_EQUAL, // '<='
+        LGREATER, // '>'
+    	IS_GREATER_OR_EQUAL, // '>='
+        BOOL_OR, // 'or'
+        BOOL_AND, // 'and'
+        BOOL_XOR, // 'xor'
+    	STRING_AND, // '&'
+        OR, // '|'
+    	EXPON, // '**'
+        PLUS, // '+'
+        MINUS, // '-'
+    	MUL, // '*'
+        DIV, // '/'
+        MOD, // 'mod'
+        REM, // 'rem'
+        IN, // 'in'
+    	NOT_IN // 'not in'
+    }
+    
+    private Expression left;
+    private InfixExpression.OperatorType operator;
+    private Expression right;
+
+    public InfixExpression(int start, int end, Expression left, InfixExpression.OperatorType operator, Expression right) {
+        super(start, end);
+
+        if (right == null || left == null ) {
+            throw new IllegalArgumentException();
+        }
+
+        this.left = left;
+        this.right = right;
+        this.operator = operator;
+    }
+
+    
+
+    /**
+     * Returns the operator of this infix expression.
+     * 
+     * @return the infix operator
+     */
+    public InfixExpression.OperatorType getOperator() {
+        return this.operator;
+    }
+
+    /**
+     * Returns the left operand of this infix expression.
+     * 
+     * @return the left operand node
+     */
+    public Expression getLeft() {
+        return this.left;
+    }
+
+    /**
+     * Returns the right operand of this infix expression.
+     * 
+     * @return the right operand node
+     */
+    public Expression getRight() {
+        return this.right;
+    }
+    
+    @Override
+    public void accept(Visitor visitor) {
+        visitor.visit(this);
+    }
+}
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/MethodInvocation.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/MethodInvocation.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/MethodInvocation.java	Sun Aug 22 23:37:11 2010 +0200
@@ -53,7 +53,7 @@
     private MethodName name;
     private final ArrayList parameters = new ArrayList();
 
-    private MethodInvocation(int start, int end, VariableBase dispatcher, MethodName methodName, Expression[] parameters) {
+    private MethodInvocation(int start, int end, NameBase dispatcher, MethodName methodName, Expression[] parameters) {
         super(start, end, dispatcher);
         this.name = methodName;
         for (Expression expression : parameters) {
@@ -61,7 +61,7 @@
         }
     }
 
-    public MethodInvocation(int start, int end, VariableBase dispatcher, MethodName methodName, List parameters) {
+    public MethodInvocation(int start, int end, NameBase dispatcher, MethodName methodName, List parameters) {
         this(start, end, dispatcher, methodName, parameters == null ? null : (Expression[]) parameters.toArray(new Expression[parameters.size()]));
     }
 
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/NameBase.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/NameBase.java	Sun Aug 22 23:37:11 2010 +0200
@@ -0,0 +1,57 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common
+ * Development and Distribution License("CDDL") (collectively, the
+ * "License"). You may not use this file except in compliance with the
+ * License. You can obtain a copy of the License at
+ * http://www.netbeans.org/cddl-gplv2.html
+ * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+ * specific language governing permissions and limitations under the
+ * License.  When distributing the software, include this License Header
+ * Notice in each file and include the License file at
+ * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the GPL Version 2 section of the License file that
+ * accompanied this code. If applicable, add the following below the
+ * License Header, with the fields enclosed by brackets [] replaced by
+ * your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ * 
+ * If you wish your version of this file to be governed by only the CDDL
+ * or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution
+ * under the [CDDL or GPL Version 2] license." If you do not indicate a
+ * single choice of license, a recipient has the option to distribute
+ * your version of this file under either the CDDL, the GPL Version 2 or
+ * to extend the choice of license to its licensees as provided above.
+ * However, if you add GPL Version 2 code and therefore, elected the GPL
+ * Version 2 license, then the option applies only if the new code is
+ * made subject to such option by the copyright holder.
+ * 
+ * Contributor(s):
+ * 
+ * Portions Copyrighted 2008 Sun Microsystems, Inc.
+ */
+package org.netbeans.modules.ada.editor.ast.nodes;
+
+import org.netbeans.modules.ada.editor.ast.nodes.visitors.Visitor;
+
+/**
+ * This interface is base for all the Ada variables
+ * including simple variable, function invocation, list, dispatch, etc.
+ */
+public class NameBase extends Expression {
+
+    public NameBase(int start, int end) {
+        super(start, end);
+    }
+
+    @Override
+    public void accept(Visitor visitor) {
+        visitor.visit(this);
+    }
+}
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/PackageName.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/PackageName.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/PackageName.java	Sun Aug 22 23:37:11 2010 +0200
@@ -40,7 +40,6 @@
 package org.netbeans.modules.ada.editor.ast.nodes;
 
 import org.netbeans.modules.ada.editor.ast.nodes.visitors.Visitor;
-import org.netbeans.modules.ada.editor.ast.ASTNode;
 
 /**
  * Holds a package name. 
@@ -49,7 +48,7 @@
  *
  * @author Andrea Lucarelli
  */
-public class PackageName extends ASTNode {
+public class PackageName extends NameBase {
 
     private Identifier packageName;
 
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/RaiseStatement.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/RaiseStatement.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/RaiseStatement.java	Sun Aug 22 23:37:11 2010 +0200
@@ -48,9 +48,9 @@
  */
 public class RaiseStatement extends Statement {
 
-    private String exceptionName;
+    private Expression exceptionName;
 
-    public RaiseStatement(int start, int end, String exceptionName) {
+    public RaiseStatement(int start, int end, Expression exceptionName) {
         super(start, end);
         this.exceptionName = exceptionName;
     }
@@ -60,7 +60,7 @@
      * 
      * @return the exceptionName node
      */
-    public String getExceptionName() {
+    public Expression getExceptionName() {
         return exceptionName;
     }
 
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/Range.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/Range.java	Sun Aug 22 23:37:11 2010 +0200
@@ -0,0 +1,86 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common
+ * Development and Distribution License("CDDL") (collectively, the
+ * "License"). You may not use this file except in compliance with the
+ * License. You can obtain a copy of the License at
+ * http://www.netbeans.org/cddl-gplv2.html
+ * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+ * specific language governing permissions and limitations under the
+ * License.  When distributing the software, include this License Header
+ * Notice in each file and include the License file at
+ * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the GPL Version 2 section of the License file that
+ * accompanied this code. If applicable, add the following below the
+ * License Header, with the fields enclosed by brackets [] replaced by
+ * your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ * 
+ * If you wish your version of this file to be governed by only the CDDL
+ * or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution
+ * under the [CDDL or GPL Version 2] license." If you do not indicate a
+ * single choice of license, a recipient has the option to distribute
+ * your version of this file under either the CDDL, the GPL Version 2 or
+ * to extend the choice of license to its licensees as provided above.
+ * However, if you add GPL Version 2 code and therefore, elected the GPL
+ * Version 2 license, then the option applies only if the new code is
+ * made subject to such option by the copyright holder.
+ * 
+ * Contributor(s):
+ * 
+ * Portions Copyrighted 2008 Sun Microsystems, Inc.
+ */
+package org.netbeans.modules.ada.editor.ast.nodes;
+
+import org.netbeans.modules.ada.editor.ast.nodes.visitors.Visitor;
+
+/**
+ * 
+ * Represents an range expression
+ * 
e.g.
+ */
+public class Range extends Expression {
+
+    private Expression left;
+    private Expression right;
+
+    public Range(int start, int end, Expression left, Expression right) {
+        super(start, end);
+
+        if (right == null || left == null ) {
+            throw new IllegalArgumentException();
+        }
+
+        this.left = left;
+        this.right = right;
+    }
+
+    /**
+     * Returns the left operand of this range expression.
+     * 
+     * @return the left operand node
+     */
+    public Expression getLeft() {
+        return this.left;
+    }
+
+    /**
+     * Returns the right operand of this range expression.
+     * 
+     * @return the right operand node
+     */
+    public Expression getRight() {
+        return this.right;
+    }
+    
+    @Override
+    public void accept(Visitor visitor) {
+        visitor.visit(this);
+    }
+}
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/Reference.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/Reference.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/Reference.java	Sun Aug 22 23:37:11 2010 +0200
@@ -59,7 +59,7 @@
         this.expression = expression;
     }
 
-    public Reference(int start, int end, VariableBase variable) {
+    public Reference(int start, int end, NameBase variable) {
         this(start, end, (Expression)variable);
     }
 
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/Scalar.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/Scalar.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/Scalar.java	Sun Aug 22 23:37:11 2010 +0200
@@ -54,20 +54,9 @@
         REAL, // 'real'
         STRING, // 'string'
         UNKNOWN, // unknown scalar in quote expression
-        SYSTEM // system scalars (__CLASS__ / ...)
-                
+        SYSTEM // (NULL, etc.)
     }
-    // 'int'
-    //public static final int TYPE_INT = 0;
-    // 'real'
-    //public static final int TYPE_REAL = 1;
-    // 'string'
-    //public static final int TYPE_STRING = 2;
-    // unknown scalar in quote expression
-    //public static final int TYPE_UNKNOWN = 3;
-    // system scalars (__CLASS__ / ...)
-    //public static final int TYPE_SYSTEM = 4;
-    
+
     private String stringValue;
     private Type scalarType;
 
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/SubprogramBody.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/SubprogramBody.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/SubprogramBody.java	Sun Aug 22 23:37:11 2010 +0200
@@ -67,14 +67,14 @@
  */
 public class SubprogramBody extends Statement {
 
-	private SubprogramSpecification subprogramSpecification;
-	private Identifier subprogramNameEnd;
+    private SubprogramSpecification subprogramSpecification;
+    private Identifier subprogramNameEnd;
     private Block declarations;
     private Block body;
 
     public SubprogramBody(int start, int end, SubprogramSpecification subprogramSpecification, Block declarations, Block body, Identifier subprogramNameEnd) {
         super(start, end);
-		this.subprogramSpecification = subprogramSpecification;
+        this.subprogramSpecification = subprogramSpecification;
         this.declarations = declarations;
         this.body = body;
         this.subprogramNameEnd = subprogramNameEnd;
@@ -98,11 +98,11 @@
         return body;
     }
 
-	public SubprogramSpecification getSubprogramSpecification() {
-		return subprogramSpecification;
-	}
+    public SubprogramSpecification getSubprogramSpecification() {
+        return subprogramSpecification;
+    }
 
-	public Identifier getSubprogramNameEnd() {
+    public Identifier getSubprogramNameEnd() {
         return subprogramNameEnd;
     }
 
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/TypeAccess.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/TypeAccess.java	Sun Aug 22 23:37:11 2010 +0200
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common
+ * Development and Distribution License("CDDL") (collectively, the
+ * "License"). You may not use this file except in compliance with the
+ * License. You can obtain a copy of the License at
+ * http://www.netbeans.org/cddl-gplv2.html
+ * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+ * specific language governing permissions and limitations under the
+ * License.  When distributing the software, include this License Header
+ * Notice in each file and include the License file at
+ * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the GPL Version 2 section of the License file that
+ * accompanied this code. If applicable, add the following below the
+ * License Header, with the fields enclosed by brackets [] replaced by
+ * your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ * 
+ * If you wish your version of this file to be governed by only the CDDL
+ * or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution
+ * under the [CDDL or GPL Version 2] license." If you do not indicate a
+ * single choice of license, a recipient has the option to distribute
+ * your version of this file under either the CDDL, the GPL Version 2 or
+ * to extend the choice of license to its licensees as provided above.
+ * However, if you add GPL Version 2 code and therefore, elected the GPL
+ * Version 2 license, then the option applies only if the new code is
+ * made subject to such option by the copyright holder.
+ * 
+ * Contributor(s):
+ * 
+ * Portions Copyrighted 2008 Sun Microsystems, Inc.
+ */
+package org.netbeans.modules.ada.editor.ast.nodes;
+
+import org.netbeans.modules.ada.editor.ast.nodes.visitors.Visitor;
+
+/**
+ * Represents a field access
+ * 
e.g.
+ *
+ * MyPackage.Foo
+ */
+public class TypeAccess extends Dispatch {
+
+    private TypeName field;
+
+    public TypeAccess(int start, int end, NameBase dispatcher, TypeName field) {
+        super(start, end, dispatcher);
+        this.field = field;
+    }
+
+    /**
+     * Return the field component of this field access
+     * 
+     * @return the field component of this field access
+     */
+    public TypeName getField() {
+        return field;
+    }
+
+    /**
+     * see {@link #getField()}
+     */
+    public NameBase getMember() {
+        return getField();
+    }
+    
+    @Override
+    public void accept(Visitor visitor) {
+        visitor.visit(this);
+    }
+}
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/TypeName.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/TypeName.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/TypeName.java	Sun Aug 22 23:37:11 2010 +0200
@@ -40,7 +40,6 @@
 package org.netbeans.modules.ada.editor.ast.nodes;
 
 import org.netbeans.modules.ada.editor.ast.nodes.visitors.Visitor;
-import org.netbeans.modules.ada.editor.ast.ASTNode;
 
 /**
  * Holds a type name. 
@@ -49,14 +48,24 @@
  *
  * @author Andrea Lucarelli
  */
-public class TypeName extends ASTNode {
+public class TypeName extends NameBase {
 
     private Identifier typeName;
+    private String attributeId;
+    private boolean isBaseType = false;
 
     public TypeName(int start, int end, Identifier typeName) {
         super(start, end);
         assert (typeName != null);
         this.typeName = typeName;
+
+        if (typeName.getName().equalsIgnoreCase("boolean") ||
+            typeName.getName().equalsIgnoreCase("character") ||
+            typeName.getName().equalsIgnoreCase("float") ||
+            typeName.getName().equalsIgnoreCase("integer") ||
+            typeName.getName().equalsIgnoreCase("wide_character")) {
+            this.isBaseType = true;
+        }
     }
 
     /**
@@ -67,6 +76,18 @@
     public Identifier getTypeName() {
         return this.typeName;
     }
+
+    public boolean isIsBaseType() {
+        return isBaseType;
+    }
+
+    public String getAttributeId() {
+        return attributeId;
+    }
+
+    public void setAttributeId(String attributeId) {
+        this.attributeId = attributeId;
+    }
     
     @Override
     public void accept(Visitor visitor) {
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/UnaryOperation.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/UnaryOperation.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/UnaryOperation.java	Sun Aug 22 23:37:11 2010 +0200
@@ -52,7 +52,9 @@
     public enum Operator {
         PLUS, // '+'
         MINUS, // '-'
-        AMP // '&'
+        AMP, // '&'
+        NOT, // 'not'
+        ABS // 'abs'
     }
     
     private Expression expression;
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/Variable.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/Variable.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/Variable.java	Sun Aug 22 23:37:11 2010 +0200
@@ -36,7 +36,6 @@
  *
  * Portions Copyrighted 2008 Sun Microsystems, Inc.
  */
-
 package org.netbeans.modules.ada.editor.ast.nodes;
 
 import org.netbeans.modules.ada.editor.ast.nodes.visitors.Visitor;
@@ -55,7 +54,7 @@
  *
  * @author Andrea Lucarelli
  */
-public class Variable extends VariableBase {
+public class Variable extends NameBase {
 
     public enum Kind {
         DEFAULT,
@@ -63,10 +62,9 @@
         ALIASED,
         ALIASED_CONSTANT,
     }
-
     private Identifier name;
     private Kind variableKind;
-	private TypeName variableType;
+    private TypeName variableType;
 
     public Variable(int start, int end, Identifier variableName, Variable.Kind kind, TypeName type) {
         super(start, end);
@@ -75,13 +73,13 @@
         this.variableType = type;
     }
 
-	public Variable(int start, int end, Identifier variableName, Variable.Kind kind) {
-		this(start, end, variableName, kind, null);
-	}
+    public Variable(int start, int end, Identifier variableName, Variable.Kind kind) {
+        this(start, end, variableName, kind, null);
+    }
 
-	public Variable(int start, int end, Identifier variableName) {
-		this(start, end, variableName, Kind.DEFAULT, null);
-	}
+    public Variable(int start, int end, Identifier variableName) {
+        this(start, end, variableName, Kind.DEFAULT, null);
+    }
 
     /**
      * Returns the name (Identifier) of this variable
@@ -92,7 +90,7 @@
         return this.name;
     }
 
-	/**
+    /**
      * Returns the type of this variable
      * 
      * @return the type node
@@ -101,6 +99,16 @@
         return this.variableType;
     }
 
+    /**
+     * Returns the kind of this variable
+     *
+     * @return the kind node
+     */
+    public Kind getVariableKind() {
+        return variableKind;
+    }
+    
+
     @Override
     public void accept(Visitor visitor) {
         visitor.visit(this);
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/visitors/DefaultTreePathVisitor.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/visitors/DefaultTreePathVisitor.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/visitors/DefaultTreePathVisitor.java	Sun Aug 22 23:37:11 2010 +0200
@@ -59,6 +59,7 @@
 import org.netbeans.modules.ada.editor.ast.nodes.GotoStatement;
 import org.netbeans.modules.ada.editor.ast.nodes.Identifier;
 import org.netbeans.modules.ada.editor.ast.nodes.IfStatement;
+import org.netbeans.modules.ada.editor.ast.nodes.InfixExpression;
 import org.netbeans.modules.ada.editor.ast.nodes.LoopStatement;
 import org.netbeans.modules.ada.editor.ast.nodes.MethodDeclaration;
 import org.netbeans.modules.ada.editor.ast.nodes.NullStatement;
@@ -70,6 +71,7 @@
 import org.netbeans.modules.ada.editor.ast.nodes.Program;
 import org.netbeans.modules.ada.editor.ast.nodes.QualifiedExpression;
 import org.netbeans.modules.ada.editor.ast.nodes.RaiseStatement;
+import org.netbeans.modules.ada.editor.ast.nodes.Range;
 import org.netbeans.modules.ada.editor.ast.nodes.Reference;
 import org.netbeans.modules.ada.editor.ast.nodes.ReturnStatement;
 import org.netbeans.modules.ada.editor.ast.nodes.Scalar;
@@ -115,6 +117,13 @@
     }
 
     @Override
+    public void visit(ASTNode node) {
+        path.addFirst(node);
+        super.visit(node);
+        path.removeFirst();
+    }
+
+    @Override
     public void visit(AbortStatement node) {
         path.addFirst(node);
         super.visit(node);
@@ -143,6 +152,27 @@
     }
 
     @Override
+    public void visit(BlockStatement node) {
+        path.addFirst(node);
+        super.visit(node);
+        path.removeFirst();
+    }
+
+    @Override
+    public void visit(CaseStatement node) {
+        path.addFirst(node);
+        super.visit(node);
+        path.removeFirst();
+    }
+
+    @Override
+    public void visit(CaseWhen node) {
+        path.addFirst(node);
+        super.visit(node);
+        path.removeFirst();
+    }
+
+    @Override
     public void visit(CodeStatement node) {
         path.addFirst(node);
         super.visit(node);
@@ -199,6 +229,20 @@
     }
 
     @Override
+    public void visit(IfStatement node) {
+        path.addFirst(node);
+        super.visit(node);
+        path.removeFirst();
+    }
+
+    @Override
+    public void visit(InfixExpression node) {
+        path.addFirst(node);
+        super.visit(node);
+        path.removeFirst();
+    }
+
+    @Override
     public void visit(LoopStatement node) {
         path.addFirst(node);
         super.visit(node);
@@ -241,6 +285,13 @@
     }
 
     @Override
+    public void visit(PackageRenames node) {
+        path.addFirst(node);
+        super.visit(node);
+        path.removeFirst();
+    }
+
+    @Override
     public void visit(PackageSpecification node) {
         path.addFirst(node);
         super.visit(node);
@@ -262,6 +313,13 @@
     }
 
     @Override
+    public void visit(Range node) {
+        path.addFirst(node);
+        super.visit(node);
+        path.removeFirst();
+    }
+
+    @Override
     public void visit(RaiseStatement node) {
         path.addFirst(node);
         super.visit(node);
@@ -360,48 +418,6 @@
     }
 
     @Override
-    public void visit(BlockStatement node) {
-        path.addFirst(node);
-        super.visit(node);
-        path.removeFirst();
-    }
-
-    @Override
-    public void visit(CaseStatement node) {
-        path.addFirst(node);
-        super.visit(node);
-        path.removeFirst();
-    }
-
-    @Override
-    public void visit(CaseWhen node) {
-        path.addFirst(node);
-        super.visit(node);
-        path.removeFirst();
-    }
-
-    @Override
-    public void visit(IfStatement node) {
-        path.addFirst(node);
-        super.visit(node);
-        path.removeFirst();
-    }
-
-    @Override
-    public void visit(PackageRenames node) {
-        path.addFirst(node);
-        super.visit(node);
-        path.removeFirst();
-    }
-
-    @Override
-    public void visit(ASTNode node) {
-        path.addFirst(node);
-        super.visit(node);
-        path.removeFirst();
-    }
-
-    @Override
     public void visit(UnaryOperation node) {
         path.addFirst(node);
         super.visit(node);
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/visitors/DefaultVisitor.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/visitors/DefaultVisitor.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/visitors/DefaultVisitor.java	Sun Aug 22 23:37:11 2010 +0200
@@ -56,6 +56,7 @@
 import org.netbeans.modules.ada.editor.ast.nodes.GotoStatement;
 import org.netbeans.modules.ada.editor.ast.nodes.Identifier;
 import org.netbeans.modules.ada.editor.ast.nodes.IfStatement;
+import org.netbeans.modules.ada.editor.ast.nodes.InfixExpression;
 import org.netbeans.modules.ada.editor.ast.nodes.LoopStatement;
 import org.netbeans.modules.ada.editor.ast.nodes.MethodDeclaration;
 import org.netbeans.modules.ada.editor.ast.nodes.NullStatement;
@@ -67,6 +68,7 @@
 import org.netbeans.modules.ada.editor.ast.nodes.Program;
 import org.netbeans.modules.ada.editor.ast.nodes.QualifiedExpression;
 import org.netbeans.modules.ada.editor.ast.nodes.RaiseStatement;
+import org.netbeans.modules.ada.editor.ast.nodes.Range;
 import org.netbeans.modules.ada.editor.ast.nodes.Reference;
 import org.netbeans.modules.ada.editor.ast.nodes.ReturnStatement;
 import org.netbeans.modules.ada.editor.ast.nodes.Scalar;
@@ -127,6 +129,22 @@
         scan(node.getStatements());
     }
 
+    public void visit(BlockStatement node) {
+        scan(node.getLabel());
+        scan(node.getDeclarations());
+        scan(node.getBody());
+    }
+
+    public void visit(CaseStatement node) {
+        scan(node.getExpression());
+        scan(node.getBody());
+    }
+
+    public void visit(CaseWhen node) {
+        scan(node.getValue());
+        scan(node.getActions());
+    }
+
     public void visit(CodeStatement node) {
         scan(node.getExpression());
     }
@@ -158,6 +176,17 @@
     public void visit(Identifier node) {
     }
 
+    public void visit(IfStatement node) {
+        scan(node.getCondition());
+        scan(node.getTrueStatement());
+        scan(node.getFalseStatement());
+    }
+
+    public void visit(InfixExpression node) {
+        scan(node.getLeft());
+        scan(node.getRight());
+    }
+
     public void visit(LoopStatement node) {
         scan(node.getCondition());
         scan(node.getBody());
@@ -193,6 +222,11 @@
         scan(node.getBody());
     }
 
+    public void visit(PackageRenames node) {
+        scan(node.getName());
+        scan(node.getPackageRenames());
+    }
+
     public void visit(Program node) {
         scan(node.getStatements());
     }
@@ -202,6 +236,11 @@
         scan(node.getExpression());
     }
 
+    public void visit(Range node) {
+        scan(node.getLeft());
+        scan(node.getRight());
+    }
+
     public void visit(Reference node) {
         scan(node.getExpression());
     }
@@ -223,7 +262,7 @@
         scan(node.getParentType());
     }
 
-	public void visit(TaskName node) {
+    public void visit(TaskName node) {
         scan(node.getTaskName());
     }
 
@@ -263,33 +302,6 @@
         scan(node.getPackages());
     }
 
-    public void visit(BlockStatement node) {
-        scan(node.getLabel());
-        scan(node.getDeclarations());
-        scan(node.getBody());
-    }
-
-    public void visit(CaseStatement node) {
-        scan(node.getExpression());
-        scan(node.getBody());
-    }
-
-    public void visit(CaseWhen node) {
-        scan(node.getValue());
-        scan(node.getActions());
-    }
-
-    public void visit(IfStatement node) {
-        scan(node.getCondition());
-        scan(node.getTrueStatement());
-        scan(node.getFalseStatement());
-    }
-
-    public void visit(PackageRenames node) {
-        scan(node.getName());
-        scan(node.getPackageRenames());
-    }
-
     public void visit(UnaryOperation node) {
         scan(node.getExpression());
     }
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/visitors/Visitor.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/visitors/Visitor.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/ast/nodes/visitors/Visitor.java	Sun Aug 22 23:37:11 2010 +0200
@@ -62,6 +62,7 @@
 import org.netbeans.modules.ada.editor.ast.nodes.FormalParameter;
 import org.netbeans.modules.ada.editor.ast.nodes.GotoStatement;
 import org.netbeans.modules.ada.editor.ast.nodes.IfStatement;
+import org.netbeans.modules.ada.editor.ast.nodes.InfixExpression;
 import org.netbeans.modules.ada.editor.ast.nodes.LoopStatement;
 import org.netbeans.modules.ada.editor.ast.nodes.MethodDeclaration;
 import org.netbeans.modules.ada.editor.ast.nodes.NullStatement;
@@ -70,6 +71,7 @@
 import org.netbeans.modules.ada.editor.ast.nodes.PackageRenames;
 import org.netbeans.modules.ada.editor.ast.nodes.QualifiedExpression;
 import org.netbeans.modules.ada.editor.ast.nodes.RaiseStatement;
+import org.netbeans.modules.ada.editor.ast.nodes.Range;
 import org.netbeans.modules.ada.editor.ast.nodes.ReturnStatement;
 import org.netbeans.modules.ada.editor.ast.nodes.Scalar;
 import org.netbeans.modules.ada.editor.ast.nodes.SingleFieldDeclaration;
@@ -94,10 +96,12 @@
 
     public void visit(AbortStatement node);
 
-	public void visit(ArrayAccess arrayAccess);
+    public void visit(ArrayAccess arrayAccess);
 
     public void visit(Assignment node);
 
+    public void visit(Block node);
+
     public void visit(BlockStatement node);
 
     public void visit(CaseStatement node);
@@ -114,17 +118,19 @@
 
     public void visit(FieldsDeclaration node);
 
-	public void visit(FormalParameter node);
+    public void visit(FormalParameter node);
 
     public void visit(GotoStatement node);
 
     public void visit(Identifier node);
 
+    public void visit(InfixExpression infixExpression);
+
     public void visit(IfStatement node);
 
     public void visit(LoopStatement node);
 
-	public void visit(MethodDeclaration node);
+    public void visit(MethodDeclaration node);
 
     public void visit(NullStatement node);
 
@@ -132,7 +138,7 @@
 
     public void visit(PackageBody node);
 
-	public void visit(PackageInstanceCreation node);
+    public void visit(PackageInstanceCreation node);
 
     public void visit(PackageName node);
 
@@ -142,19 +148,21 @@
 
     public void visit(QualifiedExpression node);
 
-	public void visit(Scalar node);
+    public void visit(Scalar node);
 
-	public void visit(SubprogramBody node);
+    public void visit(SubprogramBody node);
 
-	public void visit(SubprogramSpecification node);
+    public void visit(SubprogramSpecification node);
 
     public void visit(RaiseStatement node);
 
+    public void visit(Range node);
+
     public void visit(ReturnStatement node);
 
     public void visit(SingleFieldDeclaration node);
 
-	public void visit(SubtypeDeclaration node);
+    public void visit(SubtypeDeclaration node);
 
     public void visit(TaskName node);
 
@@ -169,6 +177,4 @@
     public void visit(Use node);
 
     public void visit(UnaryOperation node);
-
-    public void visit(Block node);
 }
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/indexer/AdaElement.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/indexer/AdaElement.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/indexer/AdaElement.java	Sun Aug 22 23:37:11 2010 +0200
@@ -48,8 +48,9 @@
 import org.openide.filesystems.FileObject;
 
 /**
+ * Based on org.netbeans.modules.php.editor.index (Tor Norbye)
  *
- * @author Tor Norbye
+ * @author Andrea Lucarelli
  */
 public abstract class AdaElement implements Element {
     public abstract String getName();
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/indexer/Element.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/indexer/Element.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/indexer/Element.java	Sun Aug 22 23:37:11 2010 +0200
@@ -43,7 +43,6 @@
 
 import java.util.Set;
 import org.netbeans.modules.csl.api.ElementHandle;
-import org.netbeans.modules.csl.api.ElementKind;
 import org.netbeans.modules.csl.api.Modifier;
 
 /**
@@ -53,6 +52,5 @@
 public interface Element extends ElementHandle {
     String getName();
     String getIn();
-    ElementKind getKind();
     Set getModifiers();
 }
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/lexer/Ada95ASTLexer.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/lexer/Ada95ASTLexer.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/lexer/Ada95ASTLexer.java	Sun Aug 22 23:37:11 2010 +0200
@@ -1,4 +1,4 @@
-/* The following code was generated by JFlex 1.4.2 on 08/02/09 0.16 */
+/* The following code was generated by JFlex 1.4.3 on 07/10/09 11.49 */
 
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
@@ -50,9 +50,9 @@
 
 /**
  * This class is a scanner generated by 
- * JFlex 1.4.2
- * on 08/02/09 0.16 from the specification file
- * C:/hg-repo/release65/contrib/ada.editor/src/org/netbeans/modules/ada/editor/lexer/resources/Ada95ASTLexer.flex
+ * JFlex 1.4.3
+ * on 07/10/09 11.49 from the specification file
+ * C:/hg-repo/release67_fixes/contrib/ada.editor/src/org/netbeans/modules/ada/editor/lexer/resources/Ada95ASTLexer.flex
  */
 public class Ada95ASTLexer implements Scanner {
 
@@ -828,6 +828,7 @@
     zzReader = reader;
     zzAtBOL  = true;
     zzAtEOF  = false;
+    zzEOFDone  = false;
     zzEndRead = zzStartRead = 0;
     zzCurrentPos = zzMarkedPos = zzPushbackPos = 0;
     yyline = yychar = yycolumn = 0;
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/lexer/Ada95SyntaxLexer.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/lexer/Ada95SyntaxLexer.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/lexer/Ada95SyntaxLexer.java	Sun Aug 22 23:37:11 2010 +0200
@@ -1,4 +1,4 @@
-/* The following code was generated by JFlex 1.4.2 on 08/02/09 10.47 */
+/* The following code was generated by JFlex 1.4.3 on 07/10/09 11.44 */
 
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
@@ -45,9 +45,9 @@
 
 /**
  * This class is a scanner generated by 
- * JFlex 1.4.2
- * on 08/02/09 10.47 from the specification file
- * C:/hg-repo/release65/contrib/ada.editor/src/org/netbeans/modules/ada/editor/lexer/resources/Ada95SyntaxLexer.flex
+ * JFlex 1.4.3
+ * on 07/10/09 11.44 from the specification file
+ * C:/hg-repo/release67_fixes/contrib/ada.editor/src/org/netbeans/modules/ada/editor/lexer/resources/Ada95SyntaxLexer.flex
  */
 public class Ada95SyntaxLexer {
 
@@ -1239,331 +1239,331 @@
           { return AdaTokenId.WITH;
           }
         case 126: break;
+        case 121: 
+          { return AdaTokenId.WIDE_CHARACTER;
+          }
+        case 127: break;
         case 13: 
           { return AdaTokenId.STAR;
           }
-        case 127: break;
+        case 128: break;
         case 79: 
           { return AdaTokenId.ABORT;
           }
-        case 128: break;
+        case 129: break;
         case 110: 
           { return AdaTokenId.FUNCTION;
           }
-        case 129: break;
+        case 130: break;
         case 72: 
           { return AdaTokenId.GOTO;
           }
-        case 130: break;
+        case 131: break;
         case 68: 
           { return AdaTokenId.THEN;
           }
-        case 131: break;
+        case 132: break;
         case 47: 
           { return AdaTokenId.FOR;
           }
-        case 132: break;
+        case 133: break;
         case 8: 
           { return  AdaTokenId.WHITESPACE;
           }
-        case 133: break;
+        case 134: break;
         case 14: 
           { return AdaTokenId.COMMA;
           }
-        case 134: break;
+        case 135: break;
         case 69: 
           { return AdaTokenId.CASE;
           }
-        case 135: break;
+        case 136: break;
         case 70: 
           { return AdaTokenId.LOOP;
           }
-        case 136: break;
+        case 137: break;
         case 118: 
           { return AdaTokenId.CHARACTER;
           }
-        case 137: break;
+        case 138: break;
         case 88: 
           { return AdaTokenId.END_IF;
           }
-        case 138: break;
+        case 139: break;
         case 120: 
           { return AdaTokenId.PROCEDURE;
           }
-        case 139: break;
+        case 140: break;
         case 82: 
           { return AdaTokenId.RAISE;
           }
-        case 140: break;
+        case 141: break;
         case 100: 
           { return AdaTokenId.RENAMES;
           }
-        case 141: break;
+        case 142: break;
         case 90: 
           { return AdaTokenId.ACCEPT;
           }
-        case 142: break;
+        case 143: break;
         case 115: 
           { return AdaTokenId.CONSTANT;
           }
-        case 143: break;
+        case 144: break;
         case 113: 
           { return AdaTokenId.ABSTRACT;
           }
-        case 144: break;
+        case 145: break;
         case 50: 
           { return AdaTokenId.ABS;
           }
-        case 145: break;
+        case 146: break;
         case 104: 
           { return AdaTokenId.PACKAGE;
           }
-        case 146: break;
+        case 147: break;
         case 116: 
           { return AdaTokenId.EXCEPTION;
           }
-        case 147: break;
+        case 148: break;
         case 62: 
           { return AdaTokenId.EXIT;
           }
-        case 148: break;
+        case 149: break;
         case 12: 
           { return AdaTokenId.RPAREN;
           }
-        case 149: break;
+        case 150: break;
         case 1: 
           { yypushback(1);
     pushState(ST_HIGHLIGHTING_ERROR);
           }
-        case 150: break;
+        case 151: break;
         case 11: 
           { return AdaTokenId.LPAREN;
           }
-        case 151: break;
+        case 152: break;
         case 89: 
           { return AdaTokenId.ACCESS;
           }
-        case 152: break;
+        case 153: break;
         case 52: 
           { return AdaTokenId.AND;
           }
-        case 153: break;
+        case 154: break;
         case 93: 
           { return AdaTokenId.RECORD;
           }
-        case 154: break;
+        case 155: break;
         case 6: 
           { pushState(ST_LOOKING_FOR_PROPERTY);
                       return AdaTokenId.DOT;
           }
-        case 155: break;
+        case 156: break;
         case 66: 
           { return AdaTokenId.TRUE;
           }
-        case 156: break;
+        case 157: break;
         case 18: 
           { return AdaTokenId.EQ;
           }
-        case 157: break;
+        case 158: break;
         case 60: 
           { return AdaTokenId.BASED_LITERAL;
           }
-        case 158: break;
+        case 159: break;
         case 10: 
           { return AdaTokenId.AMP;
           }
-        case 159: break;
+        case 160: break;
         case 108: 
           { return AdaTokenId.DECLARE;
           }
-        case 160: break;
+        case 161: break;
         case 44: 
           { return AdaTokenId.GTEQ;
           }
-        case 161: break;
+        case 162: break;
         case 75: 
           { return AdaTokenId.FALSE;
           }
-        case 162: break;
+        case 163: break;
         case 48: 
           { return AdaTokenId.END;
           }
-        case 163: break;
+        case 164: break;
         case 96: 
           { return AdaTokenId.PRAGMA;
           }
-        case 164: break;
+        case 165: break;
         case 41: 
           { return AdaTokenId.LTEQ;
           }
-        case 165: break;
+        case 166: break;
         case 28: 
           { return AdaTokenId.DOT_DOT;
           }
-        case 166: break;
+        case 167: break;
         case 20: 
           { return AdaTokenId.BAR;
           }
-        case 167: break;
+        case 168: break;
         case 102: 
           { return AdaTokenId.REQUEUE;
           }
-        case 168: break;
+        case 169: break;
         case 58: 
           { return AdaTokenId.USE;
           }
-        case 169: break;
+        case 170: break;
         case 30: 
           { return AdaTokenId.STRING_LITERAL;
           }
-        case 170: break;
+        case 171: break;
         case 77: 
           { return AdaTokenId.ELSIF;
           }
-        case 171: break;
+        case 172: break;
         case 114: 
           { return AdaTokenId.SEPARATE;
           }
-        case 172: break;
+        case 173: break;
         case 91: 
           { return AdaTokenId.OTHERS;
           }
-        case 173: break;
+        case 174: break;
         case 2: 
           { return AdaTokenId.DECIMAL_LITERAL;
           }
-        case 174: break;
+        case 175: break;
         case 76: 
           { return AdaTokenId.FLOAT;
           }
-        case 175: break;
+        case 176: break;
         case 107: 
           { return AdaTokenId.INTEGER;
           }
-        case 176: break;
+        case 177: break;
         case 27: 
           { pushState(ST_LINE_COMMENT);
     return AdaTokenId.COMMENT;
           }
-        case 177: break;
+        case 178: break;
         case 74: 
           { return AdaTokenId.WHEN;
           }
-        case 178: break;
+        case 179: break;
         case 54: 
           { return AdaTokenId.REM;
           }
-        case 179: break;
+        case 180: break;
         case 26: 
           { popState();
         return AdaTokenId.WHITESPACE;
           }
-        case 180: break;
+        case 181: break;
         case 25: 
           { return AdaTokenId.UNKNOWN_TOKEN;
           }
-        case 181: break;
+        case 182: break;
         case 59: 
           { return AdaTokenId.MOD;
           }
-        case 182: break;
+        case 183: break;
         case 3: 
           { return  AdaTokenId.IDENTIFIER;
           }
-        case 183: break;
+        case 184: break;
         case 15: 
           { return AdaTokenId.SLASH;
           }
-        case 184: break;
+        case 185: break;
         case 57: 
           { return AdaTokenId.XOR;
           }
-        case 185: break;
+        case 186: break;
         case 19: 
           { return AdaTokenId.LT;
           }
-        case 186: break;
+        case 187: break;
         case 106: 
           { return AdaTokenId.LIMITED;
           }
-        case 187: break;
+        case 188: break;
         case 92: 
           { return AdaTokenId.RETURN;
           }
-        case 188: break;
+        case 189: break;
         case 16: 
           { return AdaTokenId.SEMICOLON;
           }
-        case 189: break;
+        case 190: break;
         case 84: 
           { return AdaTokenId.DELAY;
           }
-        case 190: break;
+        case 191: break;
         case 103: 
           { return AdaTokenId.SUBTYPE;
           }
-        case 191: break;
+        case 192: break;
         case 4: 
           { return AdaTokenId.PLUS;
           }
-        case 192: break;
+        case 193: break;
         case 67: 
           { return AdaTokenId.TYPE;
           }
-        case 193: break;
+        case 194: break;
         case 38: 
           { return AdaTokenId.EXPON;
           }
-        case 194: break;
+        case 195: break;
         case 105: 
           { return AdaTokenId.PRIVATE;
           }
-        case 195: break;
+        case 196: break;
         case 21: 
           { yypushback(1);
     popState();
           }
-        case 196: break;
+        case 197: break;
         case 101: 
           { return AdaTokenId.REVERSE;
           }
-        case 197: break;
+        case 198: break;
         case 86: 
           { return AdaTokenId.UNTIL;
           }
-        case 198: break;
+        case 199: break;
         case 9: 
           { return AdaTokenId.TICK;
           }
-        case 199: break;
+        case 200: break;
         case 24: 
           { popState();
     return AdaTokenId.COMMENT;
           }
-        case 200: break;
+        case 201: break;
         case 71: 
           { return AdaTokenId.NULL;
           }
-        case 201: break;
+        case 202: break;
         case 37: 
           { return AdaTokenId.DO;
           }
-        case 202: break;
+        case 203: break;
         case 36: 
           { return AdaTokenId.IN;
           }
-        case 203: break;
+        case 204: break;
         case 5: 
           { return AdaTokenId.MINUS;
           }
-        case 204: break;
+        case 205: break;
         case 83: 
           { return AdaTokenId.RANGE;
           }
-        case 205: break;
-        case 121: 
-          { return AdaTokenId.WIDE_CHARECTER;
-          }
         case 206: break;
         case 22: 
           { popState();
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/lexer/AdaLexUtilities.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/lexer/AdaLexUtilities.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/lexer/AdaLexUtilities.java	Sun Aug 22 23:37:11 2010 +0200
@@ -86,6 +86,7 @@
     static {
         END_PAIRS.add(AdaTokenId.PROCEDURE);
         END_PAIRS.add(AdaTokenId.FUNCTION);
+        END_PAIRS.add(AdaTokenId.DECLARE);
         END_PAIRS.add(AdaTokenId.FOR);
         END_PAIRS.add(AdaTokenId.WHILE);
         END_PAIRS.add(AdaTokenId.IF);
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/lexer/AdaTokenId.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/lexer/AdaTokenId.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/lexer/AdaTokenId.java	Sun Aug 22 23:37:11 2010 +0200
@@ -131,11 +131,11 @@
     WITH("with", "keyword"), //NOI18N
     XOR("xor", "keyword"), //NOI18N
 
-    BOOLEAN("true", "literal"), //NOI18N
-    CHARACTER("true", "literal"), //NOI18N
-    FLOAT("true", "literal"), //NOI18N
-    INTEGER("true", "literal"), //NOI18N
-    WIDE_CHARECTER("true", "literal"), //NOI18N
+    BOOLEAN("boolean", "literal"), //NOI18N
+    CHARACTER("character", "literal"), //NOI18N
+    FLOAT("float", "literal"), //NOI18N
+    INTEGER("integer", "literal"), //NOI18N
+    WIDE_CHARACTER("wide_character", "literal"), //NOI18N
     TRUE("true", "literal"), //NOI18N
     FALSE("false", "literal"), //NOI18N
 
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/lexer/resources/ASTLexer.skeleton
--- a/ada.editor/src/org/netbeans/modules/ada/editor/lexer/resources/ASTLexer.skeleton	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/lexer/resources/ASTLexer.skeleton	Sun Aug 22 23:37:11 2010 +0200
@@ -70,6 +70,9 @@
   /** zzAtEOF == true <=> the scanner is at the EOF */
   private boolean zzAtEOF;
 
+  /** denotes if the user-EOF-code has already been executed */
+  private boolean zzEOFDone;
+
 --- user class code
 
   /**
@@ -152,6 +155,7 @@
     zzReader = reader;
     zzAtBOL  = true;
     zzAtEOF  = false;
+    zzEOFDone  = false;
     zzEndRead = zzStartRead = 0;
     zzCurrentPos = zzMarkedPos = zzPushbackPos = 0;
     yyline = yychar = yycolumn = 0;
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/lexer/resources/Ada95SyntaxLexer.flex
--- a/ada.editor/src/org/netbeans/modules/ada/editor/lexer/resources/Ada95SyntaxLexer.flex	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/lexer/resources/Ada95SyntaxLexer.flex	Sun Aug 22 23:37:11 2010 +0200
@@ -440,7 +440,7 @@
     "character"         { return AdaTokenId.CHARACTER; }
     "float"             { return AdaTokenId.FLOAT; }
     "integer"           { return AdaTokenId.INTEGER; }
-    "wide_character"    { return AdaTokenId.WIDE_CHARECTER; }
+    "wide_character"    { return AdaTokenId.WIDE_CHARACTER; }
     "true"              { return AdaTokenId.TRUE; }
     "false"             { return AdaTokenId.FALSE; }
 
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/navigator/AdaDeclarationFinder.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/navigator/AdaDeclarationFinder.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/navigator/AdaDeclarationFinder.java	Sun Aug 22 23:37:11 2010 +0200
@@ -38,7 +38,6 @@
  */
 package org.netbeans.modules.ada.editor.navigator;
 
-import java.io.IOException;
 import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
@@ -180,7 +179,8 @@
 
         public String getDisplayHtml(HtmlFormatter formatter) {
             formatter.reset();
-            ElementKind ek = null;
+            ElementKind ek = el.getKind();
+
             switch (k) {
                 case SUBPROG_SPEC:
                 case SUBPROG_BODY:
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/navigator/AdaInstantRenamer.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/navigator/AdaInstantRenamer.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/navigator/AdaInstantRenamer.java	Sun Aug 22 23:37:11 2010 +0200
@@ -51,7 +51,7 @@
 public class AdaInstantRenamer implements InstantRenamer {
 
     public boolean isRenameAllowed(ParserResult info, int caretOffset, String[] explanationRetValue) {
-		// TODO: to implement.
+        // TODO: to implement.
         return true;
     }
 
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/navigator/AdaOccurrencesFinder.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/navigator/AdaOccurrencesFinder.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/navigator/AdaOccurrencesFinder.java	Sun Aug 22 23:37:11 2010 +0200
@@ -156,15 +156,12 @@
 
             @Override
             public void visit(TypeDeclaration node) {
-                LOGGER.fine("called visist(TypeDeclaration): " + node.getTypeName().getName());
                 boolean found = false;
                 if (element instanceof SemiAttribute.PackageMemberElement) {
-                    LOGGER.fine("package element: " + node.getTypeName().getName());
                     SemiAttribute.PackageMemberElement pkgEl = (SemiAttribute.PackageMemberElement) element;
                     Identifier type = node.getTypeName();
                     String typeName = type.getName();
                     if (pkgName != null && pkgEl.getPackageName().equals(pkgName) && pkgEl.getName().equals(typeName)) {
-                        LOGGER.fine("if: " + node.getTypeName().getName());
                         memberDeclaration.add(type);
                         usages.add(type);
                         found = true;
@@ -177,15 +174,12 @@
 
             @Override
             public void visit(SingleFieldDeclaration node) {
-                LOGGER.fine("called visist(SingleFieldDeclaration): " + CodeUtils.extractVariableName(node.getName()));
                 boolean found = false;
                 if (element instanceof SemiAttribute.PackageMemberElement) {
-                    LOGGER.fine("package element: " + CodeUtils.extractVariableName(node.getName()));
                     SemiAttribute.PackageMemberElement pkgEl = (SemiAttribute.PackageMemberElement) element;
                     Variable variable = node.getName();
                     String varName = CodeUtils.extractVariableName(variable);
                     if (pkgName != null && pkgEl.getPackageName().equals(pkgName) && pkgEl.getName().equals(varName)) {
-                        LOGGER.fine("if: " + CodeUtils.extractVariableName(node.getName()));
                         memberDeclaration.add(variable);
                         usages.add(variable);
                         found = true;
@@ -266,7 +260,7 @@
                         usages.add(parameterName);
                     }
                 }
-                TypeName parameterType = node.getParameterType();
+                TypeName parameterType = CodeUtils.extractType(node.getParameterType());
                 if (parameterType != null) {
                     String name = parameterType.getTypeName().getName();
                     if (name != null && element == attribute.getElement(parameterType)) {
@@ -301,10 +295,15 @@
             }
         }.scan(ASTUtils.getRoot(parameter));
 
+        int occur = 0;
         for (ASTNode n : usages) {
             OffsetRange forNode = forNode(n, element.getKind());
+            if (n instanceof Identifier) {
+                LOGGER.fine("result " + occur + ": " + ((Identifier)n).getName());
+                LOGGER.fine("result " + occur + ": " + forNode);
+                occur++;
+            }
             if (forNode != null) {
-                LOGGER.fine("usage item: " + forNode);
                 result.add(forNode);
             }
         }
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/navigator/NavUtils.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/navigator/NavUtils.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/navigator/NavUtils.java	Sun Aug 22 23:37:11 2010 +0200
@@ -46,7 +46,6 @@
 import org.netbeans.modules.ada.editor.ast.ASTNode;
 import org.netbeans.modules.ada.editor.ast.ASTUtils;
 import org.netbeans.modules.ada.editor.ast.nodes.FormalParameter;
-import org.netbeans.modules.ada.editor.ast.nodes.Identifier;
 import org.netbeans.modules.ada.editor.ast.nodes.PackageBody;
 import org.netbeans.modules.ada.editor.ast.nodes.PackageName;
 import org.netbeans.modules.ada.editor.ast.nodes.PackageSpecification;
@@ -54,6 +53,7 @@
 import org.netbeans.modules.ada.editor.ast.nodes.SubprogramBody;
 import org.netbeans.modules.ada.editor.ast.nodes.SubprogramSpecification;
 import org.netbeans.modules.ada.editor.ast.nodes.TypeDeclaration;
+import org.netbeans.modules.ada.editor.ast.nodes.TypeName;
 import org.netbeans.modules.ada.editor.ast.nodes.Variable;
 import org.netbeans.modules.ada.editor.ast.nodes.With;
 import org.netbeans.modules.ada.editor.ast.nodes.visitors.DefaultVisitor;
@@ -142,6 +142,12 @@
                 continue;
             }
 
+            if (leaf instanceof TypeName) {
+                result = a.getElement(leaf);
+                previous = leaf;
+                continue;
+            }
+
             if (leaf instanceof Scalar) {
                 AttributedElement e = a.getElement(leaf);
 
@@ -160,13 +166,13 @@
 
             if (leaf instanceof PackageSpecification) {
                 PackageSpecification cDeclaration = (PackageSpecification) leaf;
-                //class declaration
+                //package specification declaration
                 if (cDeclaration.getName() == previous) {
                     return a.getElement(leaf);
                 }
             } else if (leaf instanceof PackageBody) {
                 PackageBody iDeclaration = (PackageBody) leaf;
-                //class declaration
+                //package body declaration
                 if (iDeclaration.getName() == previous) {
                     return a.getElement(leaf);
                 }
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/navigator/SemiAttribute.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/navigator/SemiAttribute.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/navigator/SemiAttribute.java	Sun Aug 22 23:37:11 2010 +0200
@@ -73,7 +73,8 @@
 import org.netbeans.modules.ada.editor.ast.nodes.TypeDeclaration;
 import org.netbeans.modules.ada.editor.ast.nodes.TypeName;
 import org.netbeans.modules.ada.editor.ast.nodes.Variable;
-import org.netbeans.modules.ada.editor.ast.nodes.VariableBase;
+import org.netbeans.modules.ada.editor.ast.nodes.NameBase;
+import org.netbeans.modules.ada.editor.ast.nodes.TypeAccess;
 import org.netbeans.modules.ada.editor.ast.nodes.visitors.DefaultVisitor;
 import org.netbeans.modules.ada.editor.indexer.AdaIndex;
 import org.netbeans.modules.ada.editor.indexer.IndexedElement;
@@ -144,7 +145,7 @@
 
     @Override
     public void visit(Assignment node) {
-        final VariableBase vb = node.getLeftHandSide();
+        final NameBase vb = node.getLeftHandSide();
 
         if (vb instanceof Variable) {
             AttributedType at = null;
@@ -255,7 +256,14 @@
                 scopes.peek().enterWrite(name, Kind.VARIABLE, var);
             }
         }
-        TypeName parameterType = node.getParameterType();
+
+        TypeName parameterType;
+        if (node.getParameterType() instanceof TypeAccess) {
+            parameterType = ((TypeAccess)node.getParameterType()).getField();
+        } else {
+            parameterType = (TypeName)node.getParameterType();
+        }
+
         if (parameterType != null) {
             String name = parameterType.getTypeName().getName();
             if (name != null) {
@@ -539,8 +547,8 @@
 
     @CheckForNull
     //TODO converge this method with CodeUtils.extractTypeName()
-    public static String extractTypeName(TypeDeclaration var) {
-        String typeName = CodeUtils.extractTypeName(var);
+    public static String extractTypeName(TypeDeclaration type) {
+        String typeName = CodeUtils.extractTypeName(type);
 
         return typeName;
     }
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/parser/Ada95ASTParser.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/parser/Ada95ASTParser.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/parser/Ada95ASTParser.java	Sun Aug 22 23:37:11 2010 +0200
@@ -1,7 +1,7 @@
 
 //----------------------------------------------------
 // The following code was generated by CUP v0.11a beta 20060608
-// Tue Sep 22 18:19:43 CEST 2009
+// Thu Oct 01 15:49:41 CEST 2009
 //----------------------------------------------------
 
 package org.netbeans.modules.ada.editor.parser;
@@ -12,7 +12,7 @@
 import org.netbeans.modules.ada.editor.ast.nodes.*;
 
 /** CUP v0.11a beta 20060608 generated parser.
-  * @version Tue Sep 22 18:19:43 CEST 2009
+  * @version Thu Oct 01 15:49:41 CEST 2009
   */
 public class Ada95ASTParser extends java_cup.runtime.lr_parser {
 
@@ -28,9 +28,9 @@
   /** Production table. */
   protected static final short _production_table[][] = 
     unpackFromStrings(new String[] {
-    "\000\u0204\000\002\002\004\000\002\170\005\000\002\170" +
-    "\010\000\002\171\003\000\002\171\005\000\002\172\003" +
-    "\000\002\172\005\000\002\173\002\000\002\173\004\000" +
+    "\000\u0204\000\002\002\004\000\002\173\005\000\002\173" +
+    "\010\000\002\174\003\000\002\174\005\000\002\175\003" +
+    "\000\002\175\005\000\002\176\002\000\002\176\004\000" +
     "\002\003\003\000\002\003\003\000\002\004\003\000\002" +
     "\004\003\000\002\002\003\000\002\002\003\000\002\002" +
     "\003\000\002\002\003\000\002\002\003\000\002\002\003" +
@@ -38,43 +38,43 @@
     "\002\023\003\000\002\023\005\000\002\024\002\000\002" +
     "\024\003\000\002\024\003\000\002\024\004\000\002\142" +
     "\003\000\002\142\003\000\002\143\002\000\002\143\004" +
-    "\000\002\025\010\000\002\144\007\000\002\177\002\000" +
-    "\002\177\003\000\002\177\005\000\002\145\002\000\002" +
+    "\000\002\025\010\000\002\144\007\000\002\202\002\000" +
+    "\002\202\003\000\002\202\005\000\002\145\002\000\002" +
     "\145\004\000\002\017\003\000\002\017\003\000\002\017" +
     "\003\000\002\017\003\000\002\017\003\000\002\017\003" +
     "\000\002\017\003\000\002\017\003\000\002\020\007\000" +
-    "\002\021\004\000\002\021\003\000\002\210\003\000\002" +
-    "\210\003\000\002\212\005\000\002\207\004\000\002\207" +
-    "\006\000\002\207\006\000\002\207\007\000\002\207\007" +
-    "\000\002\211\004\000\002\167\005\000\002\167\005\000" +
-    "\002\167\010\000\002\201\005\000\002\215\003\000\002" +
-    "\215\005\000\002\216\003\000\002\216\003\000\002\202" +
-    "\003\000\002\202\004\000\002\217\003\000\002\220\002" +
-    "\000\002\220\003\000\002\203\003\000\002\203\003\000" +
-    "\002\221\005\000\002\222\005\000\002\222\007\000\002" +
-    "\204\003\000\002\204\003\000\002\223\010\000\002\224" +
-    "\006\000\002\227\004\000\002\230\002\000\002\230\003" +
-    "\000\002\225\003\000\002\225\005\000\002\226\005\000" +
-    "\002\231\005\000\002\232\003\000\002\232\005\000\002" +
-    "\166\004\000\002\166\003\000\002\213\002\000\002\213" +
-    "\003\000\002\205\005\000\002\214\007\000\002\214\004" +
+    "\002\021\004\000\002\021\003\000\002\213\003\000\002" +
+    "\213\003\000\002\215\005\000\002\212\004\000\002\212" +
+    "\006\000\002\212\006\000\002\212\007\000\002\212\007" +
+    "\000\002\214\004\000\002\167\005\000\002\167\005\000" +
+    "\002\167\010\000\002\204\005\000\002\220\003\000\002" +
+    "\220\005\000\002\221\003\000\002\221\003\000\002\205" +
+    "\003\000\002\205\004\000\002\222\003\000\002\223\002" +
+    "\000\002\223\003\000\002\206\003\000\002\206\003\000" +
+    "\002\224\005\000\002\225\005\000\002\225\007\000\002" +
+    "\207\003\000\002\207\003\000\002\226\010\000\002\227" +
+    "\006\000\002\232\004\000\002\233\002\000\002\233\003" +
+    "\000\002\230\003\000\002\230\005\000\002\231\005\000" +
+    "\002\234\005\000\002\235\003\000\002\235\005\000\002" +
+    "\166\004\000\002\166\003\000\002\216\002\000\002\216" +
+    "\003\000\002\210\005\000\002\217\007\000\002\217\004" +
     "\000\002\112\002\000\002\112\003\000\002\112\004\000" +
-    "\002\233\004\000\002\233\004\000\002\233\005\000\002" +
-    "\234\003\000\002\234\005\000\002\236\003\000\002\236" +
-    "\005\000\002\235\007\000\002\235\004\000\002\200\005" +
-    "\000\002\240\003\000\002\240\005\000\002\241\007\000" +
-    "\002\241\003\000\002\242\002\000\002\242\003\000\002" +
-    "\237\012\000\002\243\003\000\002\243\004\000\002\244" +
-    "\007\000\002\161\003\000\002\161\005\000\002\245\003" +
-    "\000\002\245\003\000\002\245\003\000\002\246\004\000" +
-    "\002\246\003\000\002\206\004\000\002\206\005\000\002" +
-    "\206\005\000\002\206\006\000\002\206\010\000\002\247" +
-    "\002\000\002\247\003\000\002\012\002\000\002\012\003" +
+    "\002\236\004\000\002\236\004\000\002\236\005\000\002" +
+    "\237\003\000\002\237\005\000\002\241\003\000\002\241" +
+    "\005\000\002\240\007\000\002\240\004\000\002\203\005" +
+    "\000\002\243\003\000\002\243\005\000\002\244\007\000" +
+    "\002\244\003\000\002\245\002\000\002\245\003\000\002" +
+    "\242\012\000\002\246\003\000\002\246\004\000\002\247" +
+    "\007\000\002\161\003\000\002\161\005\000\002\250\003" +
+    "\000\002\250\003\000\002\250\003\000\002\251\004\000" +
+    "\002\251\003\000\002\211\004\000\002\211\005\000\002" +
+    "\211\005\000\002\211\006\000\002\211\010\000\002\252" +
+    "\002\000\002\252\003\000\002\012\002\000\002\012\003" +
     "\000\002\007\002\000\002\007\003\000\002\010\003\000" +
     "\002\010\004\000\002\011\003\000\002\011\003\000\002" +
     "\011\003\000\002\011\003\000\002\011\003\000\002\011" +
     "\003\000\002\011\003\000\002\011\003\000\002\013\003" +
-    "\000\002\013\004\000\002\251\003\000\002\251\003\000" +
+    "\000\002\013\004\000\002\254\003\000\002\254\003\000" +
     "\002\110\003\000\002\110\003\000\002\110\003\000\002" +
     "\110\003\000\002\015\003\000\002\015\003\000\002\015" +
     "\003\000\002\015\003\000\002\026\003\000\002\026\003" +
@@ -82,19 +82,19 @@
     "\002\146\003\000\002\146\005\000\002\146\005\000\002" +
     "\027\003\000\002\140\003\000\002\140\005\000\002\133" +
     "\003\000\002\133\005\000\002\160\003\000\002\164\006" +
-    "\000\002\165\003\000\002\165\005\000\002\253\003\000" +
-    "\002\253\003\000\002\253\003\000\002\253\003\000\002" +
+    "\000\002\165\003\000\002\165\005\000\002\255\003\000" +
+    "\002\255\003\000\002\255\003\000\002\255\003\000\002" +
     "\030\005\000\002\030\005\000\002\030\005\000\002\030" +
-    "\005\000\002\163\005\000\002\252\003\000\002\252\003" +
-    "\000\002\252\003\000\002\252\003\000\002\154\003\000" +
+    "\005\000\002\163\005\000\002\172\003\000\002\172\003" +
+    "\000\002\172\003\000\002\172\003\000\002\154\003\000" +
     "\002\154\003\000\002\154\003\000\002\154\003\000\002" +
-    "\255\005\000\002\255\005\000\002\255\007\000\002\255" +
-    "\010\000\002\255\006\000\002\256\005\000\002\256\005" +
-    "\000\002\254\005\000\002\037\003\000\002\037\003\000" +
-    "\002\037\003\000\002\257\004\000\002\257\004\000\002" +
+    "\257\005\000\002\257\005\000\002\257\007\000\002\257" +
+    "\010\000\002\257\006\000\002\260\005\000\002\260\005" +
+    "\000\002\256\005\000\002\037\003\000\002\037\003\000" +
+    "\002\037\003\000\002\170\004\000\002\170\004\000\002" +
     "\040\003\000\002\040\003\000\002\040\003\000\002\040" +
-    "\003\000\002\040\003\000\002\040\003\000\002\260\003" +
-    "\000\002\260\004\000\002\042\003\000\002\042\003\000" +
+    "\003\000\002\040\003\000\002\040\003\000\002\171\003" +
+    "\000\002\171\004\000\002\042\003\000\002\042\003\000" +
     "\002\041\003\000\002\041\003\000\002\041\003\000\002" +
     "\043\003\000\002\043\003\000\002\043\003\000\002\043" +
     "\003\000\002\031\003\000\002\031\005\000\002\031\005" +
@@ -140,9 +140,9 @@
     "\003\000\002\115\005\000\002\116\003\000\002\116\005" +
     "\000\002\117\011\000\002\117\010\000\002\117\003\000" +
     "\002\120\007\000\002\120\006\000\002\120\010\000\002" +
-    "\120\007\000\002\174\004\000\002\275\005\000\002\275" +
+    "\120\007\000\002\177\004\000\002\275\005\000\002\275" +
     "\007\000\002\276\002\000\002\276\010\000\002\301\002" +
-    "\000\002\301\005\000\002\016\013\000\002\175\004\000" +
+    "\000\002\301\005\000\002\016\013\000\002\200\004\000" +
     "\002\302\005\000\002\302\007\000\002\303\007\000\002" +
     "\305\002\000\002\305\004\000\002\304\002\000\002\304" +
     "\004\000\002\307\003\000\002\307\004\000\002\307\003" +
@@ -169,7 +169,7 @@
     "\000\002\130\003\000\002\131\003\000\002\131\003\000" +
     "\002\131\004\000\002\131\004\000\002\131\004\000\002" +
     "\132\005\000\002\151\007\000\002\134\010\000\002\134" +
-    "\010\000\002\134\006\000\002\134\010\000\002\176\006" +
+    "\010\000\002\134\006\000\002\134\010\000\002\201\006" +
     "\000\002\271\004\000\002\271\004\000\002\333\006\000" +
     "\002\333\010\000\002\334\003\000\002\334\005\000\002" +
     "\335\003\000\002\335\003\000\002\135\005\000\002\263" +
@@ -183,8 +183,8 @@
     "\340\006\000\002\340\004\000\002\340\003\000\002\340" +
     "\003\000\002\340\003\000\002\340\003\000\002\342\004" +
     "\000\002\342\006\000\002\342\007\000\002\073\005\000" +
-    "\002\272\006\000\002\343\004\000\002\250\003\000\002" +
-    "\250\003\000\002\250\003\000\002\344\007\000\002\345" +
+    "\002\272\006\000\002\343\004\000\002\253\003\000\002" +
+    "\253\003\000\002\253\003\000\002\344\007\000\002\345" +
     "\013\000\002\347\002\000\002\347\006\000\002\350\002" +
     "\000\002\350\011\000\002\346\010\000\002\137\004" });
 
@@ -367,7 +367,7 @@
     "\000\014\112\165\114\uffe3\121\166\124\uffe3\134\164\001" +
     "\002\000\006\114\uff91\124\uff91\001\002\000\032\005\213" +
     "\047\224\050\200\051\227\113\204\116\175\120\217\143" +
-    "\215\144\045\145\176\146\231\147\205\001\002\000\012" +
+    "\215\144\045\145\177\146\231\147\205\001\002\000\012" +
     "\007\173\024\174\025\171\144\172\001\002\000\004\144" +
     "\045\001\002\000\020\015\uff5a\104\uff5a\112\uff5a\114\uff5a" +
     "\121\uff5a\124\uff5a\134\uff5a\001\002\000\020\015\uff5b\104" +
@@ -399,19 +399,19 @@
     "\131\uff45\132\uff45\133\uff45\134\uff45\135\uff45\136\uff45\137" +
     "\uff45\001\002\000\026\005\uff2a\047\uff2a\050\uff2a\051\uff2a" +
     "\113\uff2a\143\uff2a\144\uff2a\145\uff2a\146\uff2a\147\uff2a\001" +
+    "\002\000\114\013\uff5f\025\uff5f\042\uff5f\043\uff5f\045\uff5f" +
+    "\046\uff5f\050\uff5f\053\uff5f\066\uff5f\070\uff5f\071\uff5f\101" +
+    "\uff5f\105\uff5f\107\uff5f\110\uff5f\111\uff5f\112\uff5f\113\uff5f" +
+    "\114\uff5f\115\uff5f\116\uff5f\117\uff5f\120\uff5f\121\uff5f\122" +
+    "\uff5f\124\uff5f\125\uff5f\126\uff5f\127\uff5f\130\uff5f\131\uff5f" +
+    "\132\uff5f\133\uff5f\134\uff5f\135\uff5f\136\uff5f\137\uff5f\001" +
     "\002\000\104\013\uff43\025\uff43\042\uff43\043\uff43\045\uff43" +
     "\046\uff43\050\uff43\053\uff43\066\uff43\070\uff43\071\uff43\101" +
     "\uff43\107\uff43\110\uff43\111\uff43\114\uff43\115\uff43\116\uff43" +
     "\117\uff43\120\uff43\122\uff43\124\uff43\125\uff43\126\uff43\127" +
     "\uff43\130\uff43\131\uff43\132\uff43\133\uff43\134\uff43\135\uff43" +
-    "\136\uff43\137\uff43\001\002\000\114\013\uff60\025\uff60\042" +
-    "\uff60\043\uff60\045\uff60\046\uff60\050\uff60\053\uff60\066\uff60" +
-    "\070\uff60\071\uff60\101\uff60\105\uff60\107\uff60\110\uff60\111" +
-    "\uff60\112\uff60\113\uff60\114\uff60\115\uff60\116\uff60\117\uff60" +
-    "\120\uff60\121\uff60\122\uff60\124\uff60\125\uff60\126\uff60\127" +
-    "\uff60\130\uff60\131\uff60\132\uff60\133\uff60\134\uff60\135\uff60" +
-    "\136\uff60\137\uff60\001\002\000\022\047\224\051\227\113" +
-    "\204\143\215\144\045\145\176\146\231\147\205\001\002" +
+    "\136\uff43\137\uff43\001\002\000\022\047\224\051\227\113" +
+    "\204\143\215\144\045\145\177\146\231\147\205\001\002" +
     "\000\104\013\uff0f\025\uff0f\042\uff0f\043\uff0f\045\uff0f\046" +
     "\uff0f\050\uff0f\053\uff0f\066\uff0f\070\uff0f\071\uff0f\101\uff0f" +
     "\107\uff0f\110\uff0f\111\uff0f\114\uff0f\115\uff0f\116\uff0f\117" +
@@ -428,19 +428,19 @@
     "\uff61\132\uff61\133\uff61\134\uff61\135\uff61\136\uff61\137\uff61" +
     "\001\002\000\036\003\251\005\213\047\224\050\200\051" +
     "\357\054\253\113\204\116\175\120\217\143\215\144\045" +
-    "\145\176\146\231\147\205\001\002\000\116\013\ufeb2\025" +
+    "\145\177\146\231\147\205\001\002\000\116\013\ufeb2\025" +
     "\ufeb2\042\ufeb2\043\ufeb2\045\ufeb2\046\ufeb2\050\ufeb2\053\ufeb2" +
     "\063\ufeb2\066\ufeb2\070\ufeb2\071\ufeb2\101\ufeb2\105\ufeb2\107" +
     "\ufeb2\110\ufeb2\111\ufeb2\112\ufeb2\113\ufeb2\114\ufeb2\115\ufeb2" +
     "\116\ufeb2\117\ufeb2\120\ufeb2\121\ufeb2\122\ufeb2\124\ufeb2\125" +
     "\ufeb2\126\ufeb2\127\ufeb2\130\ufeb2\131\ufeb2\132\ufeb2\133\ufeb2" +
     "\134\ufeb2\135\ufeb2\136\ufeb2\137\ufeb2\001\002\000\114\013" +
-    "\uff5e\025\uff5e\042\uff5e\043\uff5e\045\uff5e\046\uff5e\050\uff5e" +
-    "\053\uff5e\066\uff5e\070\uff5e\071\uff5e\101\uff5e\105\uff5e\107" +
-    "\uff5e\110\uff5e\111\uff5e\112\uff5e\113\uff5e\114\uff5e\115\uff5e" +
-    "\116\uff5e\117\uff5e\120\uff5e\121\uff5e\122\uff5e\124\uff5e\125" +
-    "\uff5e\126\uff5e\127\uff5e\130\uff5e\131\uff5e\132\uff5e\133\uff5e" +
-    "\134\uff5e\135\uff5e\136\uff5e\137\uff5e\001\002\000\014\013" +
+    "\uff5d\025\uff5d\042\uff5d\043\uff5d\045\uff5d\046\uff5d\050\uff5d" +
+    "\053\uff5d\066\uff5d\070\uff5d\071\uff5d\101\uff5d\105\uff5d\107" +
+    "\uff5d\110\uff5d\111\uff5d\112\uff5d\113\uff5d\114\uff5d\115\uff5d" +
+    "\116\uff5d\117\uff5d\120\uff5d\121\uff5d\122\uff5d\124\uff5d\125" +
+    "\uff5d\126\uff5d\127\uff5d\130\uff5d\131\uff5d\132\uff5d\133\uff5d" +
+    "\134\uff5d\135\uff5d\136\uff5d\137\uff5d\001\002\000\014\013" +
     "\321\053\324\110\322\114\uffe2\124\uffe2\001\002\000\104" +
     "\013\uff0c\025\uff0c\042\uff0c\043\uff0c\045\uff0c\046\uff0c\050" +
     "\uff0c\053\uff0c\066\uff0c\070\uff0c\071\uff0c\101\uff0c\107\uff0c" +
@@ -458,7 +458,7 @@
     "\uff19\115\302\116\uff19\117\uff19\120\uff19\122\305\124\uff19" +
     "\125\uff19\126\uff19\127\uff19\130\uff19\131\uff19\132\uff19\134" +
     "\uff19\135\uff19\136\uff19\137\uff19\001\002\000\022\047\224" +
-    "\051\227\113\204\143\215\144\045\145\176\146\231\147" +
+    "\051\227\113\204\143\215\144\045\145\177\146\231\147" +
     "\205\001\002\000\070\013\uff1e\025\uff1e\042\261\043\uff1e" +
     "\045\uff1e\050\273\053\uff1e\066\uff1e\071\uff1e\101\uff1e\107" +
     "\uff1e\110\uff1e\111\274\114\uff1e\116\267\117\uff1e\120\260" +
@@ -482,32 +482,32 @@
     "\uff15\110\uff15\111\uff15\114\uff15\115\uff15\116\uff15\117\uff15" +
     "\120\uff15\122\uff15\124\uff15\125\uff15\126\uff15\127\uff15\130" +
     "\uff15\131\uff15\132\uff15\133\352\134\uff15\135\uff15\136\uff15" +
-    "\137\uff15\001\002\000\104\013\uff11\025\uff11\042\uff11\043" +
+    "\137\uff15\001\002\000\114\013\uff60\025\uff60\042\uff60\043" +
+    "\uff60\045\uff60\046\uff60\050\uff60\053\uff60\066\uff60\070\uff60" +
+    "\071\uff60\101\uff60\105\uff60\107\uff60\110\uff60\111\uff60\112" +
+    "\uff60\113\uff60\114\uff60\115\uff60\116\uff60\117\uff60\120\uff60" +
+    "\121\uff60\122\uff60\124\uff60\125\uff60\126\uff60\127\uff60\130" +
+    "\uff60\131\uff60\132\uff60\133\uff60\134\uff60\135\uff60\136\uff60" +
+    "\137\uff60\001\002\000\104\013\uff11\025\uff11\042\uff11\043" +
     "\uff11\045\uff11\046\uff11\050\uff11\053\uff11\066\uff11\070\uff11" +
     "\071\uff11\101\uff11\107\uff11\110\uff11\111\uff11\114\uff11\115" +
     "\uff11\116\uff11\117\uff11\120\uff11\122\uff11\124\uff11\125\uff11" +
     "\126\uff11\127\uff11\130\uff11\131\uff11\132\uff11\133\uff11\134" +
-    "\uff11\135\uff11\136\uff11\137\uff11\001\002\000\114\013\uff5d" +
-    "\025\uff5d\042\uff5d\043\uff5d\045\uff5d\046\uff5d\050\uff5d\053" +
-    "\uff5d\066\uff5d\070\uff5d\071\uff5d\101\uff5d\105\uff5d\107\uff5d" +
-    "\110\uff5d\111\uff5d\112\uff5d\113\uff5d\114\uff5d\115\uff5d\116" +
-    "\uff5d\117\uff5d\120\uff5d\121\uff5d\122\uff5d\124\uff5d\125\uff5d" +
-    "\126\uff5d\127\uff5d\130\uff5d\131\uff5d\132\uff5d\133\uff5d\134" +
-    "\uff5d\135\uff5d\136\uff5d\137\uff5d\001\002\000\026\005\213" +
+    "\uff11\135\uff11\136\uff11\137\uff11\001\002\000\026\005\213" +
     "\047\224\050\200\051\227\113\204\143\215\144\045\145" +
-    "\176\146\231\147\205\001\002\000\006\144\045\147\205" +
-    "\001\002\000\114\013\uff5f\025\uff5f\042\uff5f\043\uff5f\045" +
-    "\uff5f\046\uff5f\050\uff5f\053\uff5f\066\uff5f\070\uff5f\071\uff5f" +
-    "\101\uff5f\105\uff5f\107\uff5f\110\uff5f\111\uff5f\112\uff5f\113" +
-    "\uff5f\114\uff5f\115\uff5f\116\uff5f\117\uff5f\120\uff5f\121\uff5f" +
-    "\122\uff5f\124\uff5f\125\uff5f\126\uff5f\127\uff5f\130\uff5f\131" +
-    "\uff5f\132\uff5f\133\uff5f\134\uff5f\135\uff5f\136\uff5f\137\uff5f" +
+    "\177\146\231\147\205\001\002\000\006\144\045\147\205" +
     "\001\002\000\104\013\uff0e\025\uff0e\042\uff0e\043\uff0e\045" +
     "\uff0e\046\uff0e\050\uff0e\053\uff0e\066\uff0e\070\uff0e\071\uff0e" +
     "\101\uff0e\107\uff0e\110\uff0e\111\uff0e\114\uff0e\115\uff0e\116" +
     "\uff0e\117\uff0e\120\uff0e\122\uff0e\124\uff0e\125\uff0e\126\uff0e" +
     "\127\uff0e\130\uff0e\131\uff0e\132\uff0e\133\uff0e\134\uff0e\135" +
-    "\uff0e\136\uff0e\137\uff0e\001\002\000\104\013\uff40\025\uff40" +
+    "\uff0e\136\uff0e\137\uff0e\001\002\000\114\013\uff5e\025\uff5e" +
+    "\042\uff5e\043\uff5e\045\uff5e\046\uff5e\050\uff5e\053\uff5e\066" +
+    "\uff5e\070\uff5e\071\uff5e\101\uff5e\105\uff5e\107\uff5e\110\uff5e" +
+    "\111\uff5e\112\uff5e\113\uff5e\114\uff5e\115\uff5e\116\uff5e\117" +
+    "\uff5e\120\uff5e\121\uff5e\122\uff5e\124\uff5e\125\uff5e\126\uff5e" +
+    "\127\uff5e\130\uff5e\131\uff5e\132\uff5e\133\uff5e\134\uff5e\135" +
+    "\uff5e\136\uff5e\137\uff5e\001\002\000\104\013\uff40\025\uff40" +
     "\042\uff40\043\uff40\045\uff40\046\uff40\050\uff40\053\uff40\066" +
     "\uff40\070\uff40\071\uff40\101\uff40\107\uff40\110\uff40\111\uff40" +
     "\114\uff40\115\uff40\116\uff40\117\uff40\120\uff40\122\uff40\124" +
@@ -531,7 +531,7 @@
     "\127\uff10\130\uff10\131\uff10\132\uff10\133\uff10\134\uff10\135" +
     "\uff10\136\uff10\137\uff10\001\002\000\036\003\251\005\213" +
     "\047\224\050\200\051\227\054\253\113\204\116\175\120" +
-    "\217\143\215\144\045\145\176\146\231\147\205\001\002" +
+    "\217\143\215\144\045\145\177\146\231\147\205\001\002" +
     "\000\014\007\173\024\174\025\171\113\204\144\172\001" +
     "\002\000\012\012\236\143\215\144\045\147\205\001\002" +
     "\000\114\013\uff49\025\uff49\042\uff49\043\uff49\045\uff49\046" +
@@ -592,22 +592,22 @@
     "\002\000\032\005\uff2d\047\uff2d\050\uff2d\051\uff2d\113\uff2d" +
     "\116\uff2d\120\uff2d\143\uff2d\144\uff2d\145\uff2d\146\uff2d\147" +
     "\uff2d\001\002\000\032\005\213\047\224\050\200\051\227" +
-    "\113\204\116\175\120\217\143\215\144\045\145\176\146" +
+    "\113\204\116\175\120\217\143\215\144\045\145\177\146" +
     "\231\147\205\001\002\000\032\005\uff31\047\uff31\050\uff31" +
     "\051\uff31\113\uff31\116\uff31\120\uff31\143\uff31\144\uff31\145" +
     "\uff31\146\uff31\147\uff31\001\002\000\032\005\213\047\224" +
     "\050\200\051\227\113\204\116\175\120\217\143\215\144" +
-    "\045\145\176\146\231\147\205\001\002\000\032\005\uff32" +
+    "\045\145\177\146\231\147\205\001\002\000\032\005\uff32" +
     "\047\uff32\050\uff32\051\uff32\113\uff32\116\uff32\120\uff32\143" +
     "\uff32\144\uff32\145\uff32\146\uff32\147\uff32\001\002\000\026" +
     "\005\uff28\047\uff28\050\uff28\051\uff28\113\uff28\143\uff28\144" +
     "\uff28\145\uff28\146\uff28\147\uff28\001\002\000\026\005\213" +
     "\047\224\050\200\051\227\113\204\143\215\144\045\145" +
-    "\176\146\231\147\205\001\002\000\032\005\uff30\047\uff30" +
+    "\177\146\231\147\205\001\002\000\032\005\uff30\047\uff30" +
     "\050\uff30\051\uff30\113\uff30\116\uff30\120\uff30\143\uff30\144" +
     "\uff30\145\uff30\146\uff30\147\uff30\001\002\000\032\005\213" +
     "\047\224\050\200\051\227\113\204\116\175\120\217\143" +
-    "\215\144\045\145\176\146\231\147\205\001\002\000\004" +
+    "\215\144\045\145\177\146\231\147\205\001\002\000\004" +
     "\042\277\001\002\000\026\005\uff26\047\uff26\050\uff26\051" +
     "\uff26\113\uff26\143\uff26\144\uff26\145\uff26\146\uff26\147\uff26" +
     "\001\002\000\032\005\uff2f\047\uff2f\050\uff2f\051\uff2f\113" +
@@ -630,7 +630,7 @@
     "\026\005\uff23\047\uff23\050\uff23\051\uff23\113\uff23\143\uff23" +
     "\144\uff23\145\uff23\146\uff23\147\uff23\001\002\000\026\005" +
     "\213\047\224\050\200\051\227\113\204\143\215\144\045" +
-    "\145\176\146\231\147\205\001\002\000\026\005\uff24\047" +
+    "\145\177\146\231\147\205\001\002\000\026\005\uff24\047" +
     "\uff24\050\uff24\051\uff24\113\uff24\143\uff24\144\uff24\145\uff24" +
     "\146\uff24\147\uff24\001\002\000\026\005\uff22\047\uff22\050" +
     "\uff22\051\uff22\113\uff22\143\uff22\144\uff22\145\uff22\146\uff22" +
@@ -653,10 +653,10 @@
     "\066\uffc5\071\uffc5\101\uffc5\107\uffc5\110\uffc5\113\315\114" +
     "\uffc5\117\uffc5\124\uffc5\130\uffc5\131\uffc5\134\uffc5\001\002" +
     "\000\032\005\213\047\224\050\200\051\227\113\204\116" +
-    "\175\120\217\143\215\144\045\145\176\146\231\147\205" +
+    "\175\120\217\143\215\144\045\145\177\146\231\147\205" +
     "\001\002\000\012\013\321\053\324\110\322\114\320\001" +
     "\002\000\032\005\213\047\224\050\200\051\227\113\204" +
-    "\116\175\120\217\143\215\144\045\145\176\146\231\147" +
+    "\116\175\120\217\143\215\144\045\145\177\146\231\147" +
     "\205\001\002\000\042\013\uffc4\025\uffc4\043\uffc4\045\uffc4" +
     "\053\uffc4\066\uffc4\071\uffc4\101\uffc4\107\uffc4\110\uffc4\114" +
     "\uffc4\117\uffc4\124\uffc4\130\uffc4\131\uffc4\134\uffc4\001\002" +
@@ -666,7 +666,7 @@
     "\uff35\113\uff35\116\uff35\120\uff35\143\uff35\144\uff35\145\uff35" +
     "\146\uff35\147\uff35\001\002\000\032\005\213\047\224\050" +
     "\200\051\227\113\204\116\175\120\217\143\215\144\045" +
-    "\145\176\146\231\147\205\001\002\000\034\005\uff36\027" +
+    "\145\177\146\231\147\205\001\002\000\034\005\uff36\027" +
     "\325\047\uff36\050\uff36\051\uff36\113\uff36\116\uff36\120\uff36" +
     "\143\uff36\144\uff36\145\uff36\146\uff36\147\uff36\001\002\000" +
     "\032\005\uff33\047\uff33\050\uff33\051\uff33\113\uff33\116\uff33" +
@@ -683,7 +683,7 @@
     "\101\uff1d\107\uff1d\110\uff1d\111\274\114\uff1d\116\267\117" +
     "\uff1d\120\260\124\uff1d\130\uff1d\131\uff1d\134\uff1d\001\002" +
     "\000\036\003\251\005\213\047\224\050\200\051\227\054" +
-    "\253\113\204\116\175\120\217\143\215\144\045\145\176" +
+    "\253\113\204\116\175\120\217\143\215\144\045\145\177" +
     "\146\231\147\205\001\002\000\114\013\uff53\025\uff53\042" +
     "\uff53\043\uff53\045\uff53\046\uff53\050\uff53\053\uff53\066\uff53" +
     "\070\uff53\071\uff53\101\uff53\105\uff53\107\uff53\110\uff53\111" +
@@ -692,16 +692,16 @@
     "\uff53\130\uff53\131\uff53\132\uff53\133\uff53\134\uff53\135\uff53" +
     "\136\uff53\137\uff53\001\002\000\006\114\uff51\117\uff51\001" +
     "\002\000\032\005\213\047\224\050\200\051\227\113\204" +
-    "\116\175\120\217\143\215\144\045\145\176\146\231\147" +
+    "\116\175\120\217\143\215\144\045\145\177\146\231\147" +
     "\205\001\002\000\012\114\uff84\117\uff84\130\uff84\131\uff84" +
     "\001\002\000\024\045\uffc7\071\uffc7\107\uffc7\114\uffc7\117" +
     "\uffc7\124\uffc7\130\uffc7\131\uffc7\134\uffc7\001\002\000\032" +
     "\046\uff10\070\uff10\111\uff10\112\313\113\233\115\uff10\116" +
     "\uff10\120\uff10\121\235\122\uff10\132\uff10\133\uff10\001\002" +
     "\000\034\005\213\047\224\050\200\051\227\054\253\113" +
-    "\204\116\175\120\217\143\215\144\045\145\176\146\231" +
+    "\204\116\175\120\217\143\215\144\045\145\177\146\231" +
     "\147\205\001\002\000\032\005\213\047\224\050\200\051" +
-    "\227\113\204\116\175\120\217\143\215\144\045\145\176" +
+    "\227\113\204\116\175\120\217\143\215\144\045\145\177" +
     "\146\231\147\205\001\002\000\014\013\321\053\324\110" +
     "\322\114\uff38\117\uff38\001\002\000\006\130\uff86\131\uff86" +
     "\001\002\000\006\130\uff88\131\uff88\001\002\000\014\013" +
@@ -723,7 +723,7 @@
     "\117\uff1a\120\uff1a\122\305\124\uff1a\125\uff1a\126\uff1a\127" +
     "\uff1a\130\uff1a\131\uff1a\132\uff1a\134\uff1a\135\uff1a\136\uff1a" +
     "\137\uff1a\001\002\000\022\047\224\051\227\113\204\143" +
-    "\215\144\045\145\176\146\231\147\205\001\002\000\102" +
+    "\215\144\045\145\177\146\231\147\205\001\002\000\102" +
     "\013\uff12\025\uff12\042\uff12\043\uff12\045\uff12\046\uff12\050" +
     "\uff12\053\uff12\066\uff12\070\uff12\071\uff12\101\uff12\107\uff12" +
     "\110\uff12\111\uff12\114\uff12\115\uff12\116\uff12\117\uff12\120" +
@@ -743,7 +743,7 @@
     "\133\uff40\135\uff40\136\uff40\137\uff40\001\002\000\006\114" +
     "\364\117\uff4f\001\002\000\004\117\362\001\002\000\036" +
     "\003\251\005\213\047\224\050\200\051\227\054\253\113" +
-    "\204\116\175\120\217\143\215\144\045\145\176\146\231" +
+    "\204\116\175\120\217\143\215\144\045\145\177\146\231" +
     "\147\205\001\002\000\006\114\uff3a\117\uff3a\001\002\000" +
     "\104\013\uff3f\025\uff3f\042\uff3f\043\uff3f\045\uff3f\046\uff3f" +
     "\050\uff3f\053\uff3f\066\uff3f\070\uff3f\071\uff3f\101\uff3f\107" +
@@ -763,7 +763,7 @@
     "\127\uff0b\130\uff0b\131\uff0b\132\uff0b\133\uff0b\134\uff0b\135" +
     "\uff0b\136\uff0b\137\uff0b\001\002\000\036\003\251\005\213" +
     "\047\224\050\200\051\371\054\253\113\204\116\175\120" +
-    "\217\143\215\144\045\145\176\146\231\147\205\001\002" +
+    "\217\143\215\144\045\145\177\146\231\147\205\001\002" +
     "\000\064\013\uff40\042\uff40\046\uff40\050\uff40\053\uff40\067" +
     "\374\070\uff40\110\uff40\111\uff40\114\uff40\115\uff40\116\uff40" +
     "\117\uff40\120\uff40\122\uff40\125\uff40\126\uff40\127\uff40\130" +
@@ -781,7 +781,7 @@
     "\124\uff3c\125\uff3c\126\uff3c\127\uff3c\130\uff3c\131\uff3c\132" +
     "\uff3c\133\uff3c\134\uff3c\135\uff3c\136\uff3c\137\uff3c\001\002" +
     "\000\036\003\251\005\213\047\224\050\200\051\227\054" +
-    "\253\113\204\116\175\120\217\143\215\144\045\145\176" +
+    "\253\113\204\116\175\120\217\143\215\144\045\145\177" +
     "\146\231\147\205\001\002\000\104\013\uff3e\025\uff3e\042" +
     "\uff3e\043\uff3e\045\uff3e\046\uff3e\050\uff3e\053\uff3e\066\uff3e" +
     "\070\uff3e\071\uff3e\101\uff3e\107\uff3e\110\uff3e\111\uff3e\114" +
@@ -826,7 +826,7 @@
     "\335\071\uffd0\107\uffd0\112\u0122\113\233\121\235\124\uffd0" +
     "\134\uffd0\001\002\000\006\124\uffb0\134\uffb0\001\002\000" +
     "\032\005\213\047\224\050\200\051\227\113\204\116\175" +
-    "\120\217\143\215\144\045\145\176\146\231\147\205\001" +
+    "\120\217\143\215\144\045\145\177\146\231\147\205\001" +
     "\002\000\012\071\uffce\107\uffce\124\uffce\134\uffce\001\002" +
     "\000\012\071\uffcf\107\uffcf\124\uffcf\134\uffcf\001\002\000" +
     "\012\071\uffd1\107\uffd1\124\uffd1\134\uffd1\001\002\000\012" +
@@ -838,7 +838,7 @@
     "\ufebe\001\002\000\004\124\u0143\001\002\000\016\026\ufebd" +
     "\043\ufebd\063\ufebd\071\ufebd\105\ufebd\124\ufebd\001\002\000" +
     "\034\003\u012f\005\213\047\224\050\200\051\227\113\204" +
-    "\116\175\120\217\143\215\144\u0131\145\176\146\231\147" +
+    "\116\175\120\217\143\215\144\u0131\145\177\146\231\147" +
     "\205\001\002\000\006\114\u0141\124\u0140\001\002\000\006" +
     "\114\ufebb\124\ufebb\001\002\000\006\117\155\123\u0138\001" +
     "\002\000\010\045\uffa6\114\uffa6\117\uffa6\001\002\000\042" +
@@ -925,7 +925,7 @@
     "\063\ufef6\065\ufef6\072\ufef6\073\ufef6\101\ufef6\105\ufef6\106" +
     "\ufef6\140\ufef6\144\ufef6\147\ufef6\001\002\000\032\005\213" +
     "\047\224\050\200\051\227\113\204\116\175\120\217\143" +
-    "\215\144\045\145\176\146\231\147\205\001\002\000\074" +
+    "\215\144\045\145\177\146\231\147\205\001\002\000\074" +
     "\003\ufef7\004\ufef7\010\ufef7\016\ufef7\021\ufef7\022\ufef7\023" +
     "\ufef7\027\ufef7\030\ufef7\031\ufef7\033\ufef7\034\ufef7\035\ufef7" +
     "\040\ufef7\041\ufef7\045\ufef7\051\ufef7\053\ufef7\057\ufef7\063" +
@@ -978,7 +978,7 @@
     "\u0185\100\u01fa\105\u01fb\144\045\147\205\001\002\000\012" +
     "\105\ufecd\124\ufecd\144\045\147\205\001\002\000\032\005" +
     "\213\047\224\050\200\051\227\113\204\116\175\120\217" +
-    "\143\215\144\045\145\176\146\231\147\205\001\002\000" +
+    "\143\215\144\045\145\177\146\231\147\205\001\002\000" +
     "\074\003\ufef3\004\ufef3\010\ufef3\016\ufef3\021\ufef3\022\ufef3" +
     "\023\ufef3\027\ufef3\030\ufef3\031\ufef3\033\ufef3\034\ufef3\035" +
     "\ufef3\040\ufef3\041\ufef3\045\ufef3\051\ufef3\053\ufef3\057\ufef3" +
@@ -995,7 +995,7 @@
     "\073\ufef2\101\ufef2\105\ufef2\106\ufef2\140\ufef2\144\ufef2\147" +
     "\ufef2\001\002\000\006\026\u01dc\124\u01dd\001\002\000\034" +
     "\005\213\047\224\050\200\051\227\113\204\116\175\120" +
-    "\217\124\u01d9\143\215\144\045\145\176\146\231\147\205" +
+    "\217\124\u01d9\143\215\144\045\145\177\146\231\147\205" +
     "\001\002\000\006\144\045\147\205\001\002\000\004\124" +
     "\u01d3\001\002\000\062\003\u017e\004\u017d\010\u0183\016\ufee0" +
     "\021\u0169\022\ufee0\023\u0185\031\ufed0\033\u01c1\034\u0176\035" +
@@ -1014,7 +1014,7 @@
     "\ufe62\001\002\000\004\144\045\001\002\000\006\144\045" +
     "\147\205\001\002\000\034\005\213\047\224\050\200\051" +
     "\227\103\u01b3\113\204\116\175\120\217\143\215\144\045" +
-    "\145\176\146\231\147\205\001\002\000\074\003\ufef1\004" +
+    "\145\177\146\231\147\205\001\002\000\074\003\ufef1\004" +
     "\ufef1\010\ufef1\016\ufef1\021\ufef1\022\ufef1\023\ufef1\027\ufef1" +
     "\030\ufef1\031\ufef1\033\ufef1\034\ufef1\035\ufef1\040\ufef1\041" +
     "\ufef1\045\ufef1\051\ufef1\053\ufef1\057\ufef1\063\ufef1\065\ufef1" +
@@ -1070,7 +1070,7 @@
     "\ufeda\116\ufeda\120\ufeda\143\ufeda\144\ufeda\145\ufeda\146\ufeda" +
     "\147\ufeda\001\002\000\004\045\u019f\001\002\000\032\005" +
     "\213\047\224\050\200\051\227\113\204\116\175\120\217" +
-    "\143\215\144\045\145\176\146\231\147\205\001\002\000" +
+    "\143\215\144\045\145\177\146\231\147\205\001\002\000" +
     "\022\013\321\043\ufee8\045\ufee8\053\324\101\ufee8\110\322" +
     "\124\ufee8\131\ufee8\001\002\000\004\045\ufedd\001\002\000" +
     "\010\124\ufed7\144\045\147\205\001\002\000\056\003\u017e" +
@@ -1094,7 +1094,7 @@
     "\ufee1\072\ufee1\073\ufee1\101\ufee1\105\ufee1\106\ufee1\140\ufee1" +
     "\144\ufee1\147\ufee1\001\002\000\032\005\213\047\224\050" +
     "\200\051\227\113\204\116\175\120\217\143\215\144\045" +
-    "\145\176\146\231\147\205\001\002\000\032\005\ufed9\047" +
+    "\145\177\146\231\147\205\001\002\000\032\005\ufed9\047" +
     "\ufed9\050\ufed9\051\ufed9\113\ufed9\116\ufed9\120\ufed9\143\ufed9" +
     "\144\ufed9\145\ufed9\146\ufed9\147\ufed9\001\002\000\004\045" +
     "\ufedc\001\002\000\004\042\u01aa\001\002\000\034\005\ufedb" +
@@ -1113,7 +1113,7 @@
     "\072\ufeee\073\ufeee\106\ufeee\140\ufeee\144\ufeee\147\ufeee\001" +
     "\002\000\012\013\321\053\324\110\322\124\u01b6\001\002" +
     "\000\032\005\213\047\224\050\200\051\227\113\204\116" +
-    "\175\120\217\143\215\144\045\145\176\146\231\147\205" +
+    "\175\120\217\143\215\144\045\145\177\146\231\147\205" +
     "\001\002\000\012\013\321\053\324\110\322\124\u01b5\001" +
     "\002\000\074\003\ufe66\004\ufe66\010\ufe66\016\ufe66\021\ufe66" +
     "\022\ufe66\023\ufe66\027\ufe66\030\ufe66\031\ufe66\033\ufe66\034" +
@@ -1134,7 +1134,7 @@
     "\002\000\010\026\ufe69\113\ufe69\124\ufe69\001\002\000\006" +
     "\026\ufe6a\124\ufe6a\001\002\000\034\003\u012f\005\213\047" +
     "\224\050\200\051\227\113\204\116\175\120\217\143\215" +
-    "\144\u0131\145\176\146\231\147\205\001\002\000\012\013" +
+    "\144\u0131\145\177\146\231\147\205\001\002\000\012\013" +
     "\321\053\324\110\322\114\u01be\001\002\000\010\026\ufe68" +
     "\113\ufe68\124\ufe68\001\002\000\074\003\ufeed\004\ufeed\010" +
     "\ufeed\016\ufeed\021\ufeed\022\ufeed\023\ufeed\027\ufeed\030\ufeed" +
@@ -1219,7 +1219,7 @@
     "\040\u0184\041\u0177\045\ufee0\051\u0180\057\004\063\u017c\065" +
     "\u018f\072\u0164\073\u0175\106\ufee0\140\u0187\144\u0190\147\205" +
     "\001\002\000\032\005\213\047\224\050\200\051\227\113" +
-    "\204\116\175\120\217\143\215\144\045\145\176\146\231" +
+    "\204\116\175\120\217\143\215\144\045\145\177\146\231" +
     "\147\205\001\002\000\004\031\u01e9\001\002\000\004\041" +
     "\u01ea\001\002\000\004\124\u01eb\001\002\000\074\003\ufeeb" +
     "\004\ufeeb\010\ufeeb\016\ufeeb\021\ufeeb\022\ufeeb\023\ufeeb\027" +
@@ -1241,7 +1241,7 @@
     "\140\u0187\144\u0190\147\205\001\002\000\006\105\u01f2\124" +
     "\ufecb\001\002\000\004\124\u01f4\001\002\000\032\005\213" +
     "\047\224\050\200\051\227\113\204\116\175\120\217\143" +
-    "\215\144\045\145\176\146\231\147\205\001\002\000\004" +
+    "\215\144\045\145\177\146\231\147\205\001\002\000\004" +
     "\124\ufeca\001\002\000\074\003\ufece\004\ufece\010\ufece\016" +
     "\ufece\021\ufece\022\ufece\023\ufece\027\ufece\030\ufece\031\ufece" +
     "\033\ufece\034\ufece\035\ufece\040\ufece\041\ufece\045\ufece\051" +
@@ -1263,7 +1263,7 @@
     "\101\ufe6d\106\ufe6d\140\ufe6d\144\ufe6d\147\ufe6d\001\002\000" +
     "\004\124\u020e\001\002\000\032\005\213\047\224\050\200" +
     "\051\227\113\204\116\175\120\217\143\215\144\045\145" +
-    "\176\146\231\147\205\001\002\000\064\003\u017e\004\u017d" +
+    "\177\146\231\147\205\001\002\000\064\003\u017e\004\u017d" +
     "\010\u0183\016\ufee0\021\u0169\022\ufee0\023\u0185\027\ufe54\031" +
     "\ufe54\034\u0176\035\ufee0\040\u0184\041\u0177\045\ufee0\051\u0180" +
     "\053\ufe54\057\004\063\u017c\065\u018f\072\u0164\073\u0175\106" +
@@ -1336,7 +1336,7 @@
     "\ufe55\140\ufe55\144\ufe55\147\ufe55\001\002\000\012\027\ufe5b" +
     "\031\ufe5b\053\ufe5b\101\ufe59\001\002\000\032\005\213\047" +
     "\224\050\200\051\227\113\204\116\175\120\217\143\215" +
-    "\144\045\145\176\146\231\147\205\001\002\000\012\013" +
+    "\144\045\145\177\146\231\147\205\001\002\000\012\013" +
     "\321\053\324\110\322\124\u0224\001\002\000\074\003\ufeec" +
     "\004\ufeec\010\ufeec\016\ufeec\021\ufeec\022\ufeec\023\ufeec\027" +
     "\ufeec\030\ufeec\031\ufeec\033\ufeec\034\ufeec\035\ufeec\040\ufeec" +
@@ -1347,7 +1347,7 @@
     "\001\002\000\010\031\ufee4\057\004\105\ufee4\001\002\000" +
     "\006\031\u022b\105\u022a\001\002\000\006\031\ufee3\105\ufee3" +
     "\001\002\000\034\005\213\047\224\050\200\051\227\054" +
-    "\253\113\204\116\175\120\217\143\215\144\045\145\176" +
+    "\253\113\204\116\175\120\217\143\215\144\045\145\177" +
     "\146\231\147\205\001\002\000\004\021\u022c\001\002\000" +
     "\004\124\u022d\001\002\000\074\003\ufee5\004\ufee5\010\ufee5" +
     "\016\ufee5\021\ufee5\022\ufee5\023\ufee5\027\ufee5\030\ufee5\031" +
@@ -1382,10 +1382,10 @@
     "\ufebe\113\u0239\001\002\000\004\105\u0248\001\002\000\010" +
     "\003\u012f\035\u0198\144\126\001\002\000\032\005\213\047" +
     "\224\050\200\051\227\113\204\116\175\120\217\143\215" +
-    "\144\045\145\176\146\231\147\205\001\002\000\004\114" +
+    "\144\045\145\177\146\231\147\205\001\002\000\004\114" +
     "\u023c\001\002\000\006\105\ufebe\113\u0134\001\002\000\004" +
     "\105\u023e\001\002\000\032\005\213\047\224\050\200\051" +
-    "\227\113\204\116\175\120\217\143\215\144\045\145\176" +
+    "\227\113\204\116\175\120\217\143\215\144\045\145\177" +
     "\146\231\147\205\001\002\000\006\043\u0241\124\u0240\001" +
     "\002\000\014\031\ufe71\032\ufe71\036\ufe71\057\ufe71\061\ufe71" +
     "\001\002\000\036\003\105\016\uff7b\035\070\036\027\037" +
@@ -1396,7 +1396,7 @@
     "\045\147\205\001\002\000\004\124\u0247\001\002\000\014" +
     "\031\ufe70\032\ufe70\036\ufe70\057\ufe70\061\ufe70\001\002\000" +
     "\032\005\213\047\224\050\200\051\227\113\204\116\175" +
-    "\120\217\143\215\144\045\145\176\146\231\147\205\001" +
+    "\120\217\143\215\144\045\145\177\146\231\147\205\001" +
     "\002\000\006\043\u0241\124\u0240\001\002\000\014\031\ufe73" +
     "\032\ufe73\036\ufe73\057\ufe73\061\ufe73\001\002\000\042\003" +
     "\ufe36\016\ufe36\031\ufe36\035\ufe36\036\ufe36\037\ufe36\056\ufe36" +
@@ -1440,7 +1440,7 @@
     "\u0275\044\uffa0\046\u0267\047\u027a\051\uffa0\060\uffa0\066\335" +
     "\067\uffa0\076\u026a\113\u026f\001\002\000\032\005\213\047" +
     "\224\050\200\051\227\113\204\116\175\120\217\143\215" +
-    "\144\045\145\176\146\231\147\205\001\002\000\004\124" +
+    "\144\045\145\177\146\231\147\205\001\002\000\004\124" +
     "\uffda\001\002\000\012\044\u02dd\051\ufea4\060\ufea4\067\ufea4" +
     "\001\002\000\012\044\uff9f\051\uff9f\060\uff9f\067\uff9f\001" +
     "\002\000\020\012\u02d2\020\u02d0\036\uff7d\061\uff7d\062\u02d3" +
@@ -1449,17 +1449,17 @@
     "\143\u02c9\144\u02ca\001\002\000\004\124\uffd6\001\002\000" +
     "\004\124\uffb9\001\002\000\004\124\uffd9\001\002\000\004" +
     "\124\uffd3\001\002\000\032\005\213\047\224\050\200\051" +
-    "\227\113\204\116\175\120\217\143\215\144\045\145\176" +
+    "\227\113\204\116\175\120\217\143\215\144\045\145\177" +
     "\146\231\147\205\001\002\000\032\005\213\047\224\050" +
     "\200\051\227\113\204\116\175\120\217\143\215\144\045" +
-    "\145\176\146\231\147\205\001\002\000\004\124\uffd8\001" +
+    "\145\177\146\231\147\205\001\002\000\004\124\uffd8\001" +
     "\002\000\004\124\uffb8\001\002\000\004\124\uffd4\001\002" +
     "\000\006\047\u02bc\076\u02bb\001\002\000\006\144\045\147" +
     "\205\001\002\000\004\124\uffbc\001\002\000\004\124\uffd7" +
     "\001\002\000\004\113\u0281\001\002\000\006\124\uffb4\134" +
     "\uffb4\001\002\000\006\124\uffb3\134\uffb3\001\002\000\004" +
     "\052\u0293\001\002\000\032\005\213\047\224\050\200\051" +
-    "\227\113\204\116\175\120\217\143\215\144\045\145\176" +
+    "\227\113\204\116\175\120\217\143\215\144\045\145\177" +
     "\146\231\147\205\001\002\000\006\114\u028d\117\u028c\001" +
     "\002\000\006\114\uffad\117\uffad\001\002\000\006\114\u028a" +
     "\117\u0289\001\002\000\006\114\uffa9\117\uffa9\001\002\000" +
@@ -1467,10 +1467,10 @@
     "\114\uffa5\115\uff10\116\uff10\117\uffa5\120\uff10\121\235\122" +
     "\uff10\132\uff10\133\uff10\001\002\000\034\005\213\047\224" +
     "\050\200\051\227\113\204\116\175\120\217\142\u0288\143" +
-    "\215\144\045\145\176\146\231\147\205\001\002\000\006" +
+    "\215\144\045\145\177\146\231\147\205\001\002\000\006" +
     "\114\uffab\117\uffab\001\002\000\032\005\213\047\224\050" +
     "\200\051\227\113\204\116\175\120\217\143\215\144\045" +
-    "\145\176\146\231\147\205\001\002\000\004\052\uffaa\001" +
+    "\145\177\146\231\147\205\001\002\000\004\052\uffaa\001" +
     "\002\000\006\114\uffa8\117\uffa8\001\002\000\006\144\045" +
     "\147\205\001\002\000\004\052\u028e\001\002\000\010\011" +
     "\u0117\144\uffaf\147\uffaf\001\002\000\006\124\uffb2\134\uffb2" +
@@ -1492,7 +1492,7 @@
     "\ufffa\105\ufffa\001\002\000\006\057\004\105\u02a8\001\002" +
     "\000\006\031\uff8c\105\uff8c\001\002\000\034\005\213\047" +
     "\224\050\200\051\227\054\253\113\204\116\175\120\217" +
-    "\143\215\144\045\145\176\146\231\147\205\001\002\000" +
+    "\143\215\144\045\145\177\146\231\147\205\001\002\000" +
     "\006\031\u02ab\105\u02a8\001\002\000\006\031\uff8b\105\uff8b" +
     "\001\002\000\004\021\u02ac\001\002\000\004\124\u02ad\001" +
     "\002\000\010\031\uff8d\057\uff8d\105\uff8d\001\002\000\006" +
@@ -1515,7 +1515,7 @@
     "\000\014\013\321\025\u02c6\053\324\066\335\110\322\001" +
     "\002\000\004\124\uffb6\001\002\000\032\005\213\047\224" +
     "\050\200\051\227\113\204\116\175\120\217\143\215\144" +
-    "\045\145\176\146\231\147\205\001\002\000\014\013\321" +
+    "\045\145\177\146\231\147\205\001\002\000\014\013\321" +
     "\053\324\066\335\110\322\124\uffbb\001\002\000\004\124" +
     "\uffb5\001\002\000\006\114\uffbf\117\uffbf\001\002\000\006" +
     "\114\uffc0\117\uffc0\001\002\000\006\114\uffc2\117\uffc2\001" +
@@ -1537,26 +1537,26 @@
     "\077\uffe0\102\uffe0\104\uffe0\144\uffe0\001\002\000\010\104" +
     "\u02e4\112\165\121\166\001\002\000\036\005\213\015\u02e5" +
     "\047\224\050\200\051\227\067\u02e7\113\204\116\175\120" +
-    "\217\143\215\144\045\145\176\146\231\147\205\001\002" +
+    "\217\143\215\144\045\145\177\146\231\147\205\001\002" +
     "\000\032\005\213\047\224\050\200\051\227\113\204\116" +
-    "\175\120\217\143\215\144\045\145\176\146\231\147\205" +
+    "\175\120\217\143\215\144\045\145\177\146\231\147\205" +
     "\001\002\000\012\013\321\053\324\110\322\124\u02f7\001" +
     "\002\000\010\015\u02e8\031\ufe03\144\ufe03\001\002\000\004" +
     "\046\u02f4\001\002\000\006\031\ufe01\144\ufe01\001\002\000" +
     "\006\031\u02eb\144\045\001\002\000\004\067\u02f2\001\002" +
     "\000\010\015\u02ed\112\165\121\166\001\002\000\032\005" +
     "\213\047\224\050\200\051\227\113\204\116\175\120\217" +
-    "\143\215\144\045\145\176\146\231\147\205\001\002\000" +
+    "\143\215\144\045\145\177\146\231\147\205\001\002\000" +
     "\012\013\321\053\324\066\u02ef\110\322\001\002\000\032" +
     "\005\213\047\224\050\200\051\227\113\204\116\175\120" +
-    "\217\143\215\144\045\145\176\146\231\147\205\001\002" +
+    "\217\143\215\144\045\145\177\146\231\147\205\001\002" +
     "\000\004\124\u02f1\001\002\000\006\031\ufe00\144\ufe00\001" +
     "\002\000\004\124\u02f3\001\002\000\044\003\ufe04\016\ufe04" +
     "\031\ufe04\032\ufe04\035\ufe04\036\ufe04\037\ufe04\056\ufe04\057" +
     "\ufe04\060\ufe04\061\ufe04\062\ufe04\075\ufe04\077\ufe04\102\ufe04" +
     "\104\ufe04\144\ufe04\001\002\000\032\005\213\047\224\050" +
     "\200\051\227\113\204\116\175\120\217\143\215\144\045" +
-    "\145\176\146\231\147\205\001\002\000\012\013\321\053" +
+    "\145\177\146\231\147\205\001\002\000\012\013\321\053" +
     "\324\110\322\124\u02f6\001\002\000\006\031\ufe02\144\ufe02" +
     "\001\002\000\044\003\ufe05\016\ufe05\031\ufe05\032\ufe05\035" +
     "\ufe05\036\ufe05\037\ufe05\056\ufe05\057\ufe05\060\ufe05\061\ufe05" +
@@ -1583,7 +1583,7 @@
     "\057\uffec\060\uffec\061\uffec\062\uffec\075\uffec\077\uffec\102" +
     "\uffec\104\uffec\144\uffec\001\002\000\032\005\213\047\224" +
     "\050\200\051\227\113\204\116\175\120\217\143\215\144" +
-    "\045\145\176\146\231\147\205\001\002\000\012\013\321" +
+    "\045\145\177\146\231\147\205\001\002\000\012\013\321" +
     "\053\324\110\322\124\u030a\001\002\000\042\003\uffe1\016" +
     "\uffe1\031\uffe1\035\uffe1\036\uffe1\037\uffe1\056\uffe1\057\uffe1" +
     "\060\uffe1\061\uffe1\062\uffe1\075\uffe1\077\uffe1\102\uffe1\104" +
@@ -1718,7 +1718,7 @@
     "\ufe20\061\ufe20\102\ufe20\104\ufe20\107\ufe20\144\ufe20\001\002" +
     "\000\040\003\251\005\213\047\224\050\200\051\227\054" +
     "\253\113\204\116\175\120\217\142\u0385\143\215\144\045" +
-    "\145\176\146\231\147\205\001\002\000\004\114\u0386\001" +
+    "\145\177\146\231\147\205\001\002\000\004\114\u0386\001" +
     "\002\000\004\124\u0387\001\002\000\022\003\ufe21\036\ufe21" +
     "\056\ufe21\061\ufe21\102\ufe21\104\ufe21\107\ufe21\144\ufe21\001" +
     "\002\000\010\043\ufebe\113\u0134\124\ufebe\001\002\000\006" +
@@ -1791,7 +1791,7 @@
     "\001\002\000\004\002\001\001\002\000\006\113\uff59\124" +
     "\u03dd\001\002\000\004\113\u03d2\001\002\000\032\005\213" +
     "\047\224\050\200\051\227\113\204\116\175\120\217\143" +
-    "\215\144\045\145\176\146\231\147\205\001\002\000\006" +
+    "\215\144\045\145\177\146\231\147\205\001\002\000\006" +
     "\114\ufffe\117\ufffe\001\002\000\006\114\u03da\117\u03d9\001" +
     "\002\000\064\013\uff61\042\uff61\046\uff61\050\uff61\053\uff61" +
     "\070\uff61\110\uff61\111\uff61\112\uff61\113\uff61\114\uff61\115" +
@@ -1799,11 +1799,11 @@
     "\126\uff61\127\uff61\131\u03d7\133\uff61\135\uff61\136\uff61\137" +
     "\uff61\001\002\000\014\013\321\053\324\110\322\114\ufffc" +
     "\117\ufffc\001\002\000\032\005\213\047\224\050\200\051" +
-    "\227\113\204\116\175\120\217\143\215\144\045\145\176" +
+    "\227\113\204\116\175\120\217\143\215\144\045\145\177" +
     "\146\231\147\205\001\002\000\014\013\321\053\324\110" +
     "\322\114\ufffb\117\ufffb\001\002\000\032\005\213\047\224" +
     "\050\200\051\227\113\204\116\175\120\217\143\215\144" +
-    "\045\145\176\146\231\147\205\001\002\000\004\124\u03db" +
+    "\045\145\177\146\231\147\205\001\002\000\004\124\u03db" +
     "\001\002\000\130\002\uffff\003\uffff\004\uffff\010\uffff\016" +
     "\uffff\021\uffff\022\uffff\023\uffff\027\uffff\030\uffff\031\uffff" +
     "\032\uffff\033\uffff\034\uffff\035\uffff\036\uffff\037\uffff\040" +
@@ -1826,14 +1826,14 @@
   /** reduce_goto table. */
   protected static final short[][] _reduce_table = 
     unpackFromStrings(new String[] {
-    "\000\u03db\000\010\125\004\126\006\170\005\001\001\000" +
-    "\004\027\u03d0\001\001\000\002\001\001\000\004\173\u03cd" +
+    "\000\u03db\000\010\125\004\126\006\173\005\001\001\000" +
+    "\004\027\u03d0\001\001\000\002\001\001\000\004\176\u03cd" +
     "\001\001\000\014\114\011\127\013\131\007\132\010\332" +
-    "\015\001\001\000\012\114\u03c9\132\u03c8\170\u03c7\332\u03ca" +
+    "\015\001\001\000\012\114\u03c9\132\u03c8\173\u03c7\332\u03ca" +
     "\001\001\000\002\001\001\000\002\001\001\000\010\027" +
     "\045\133\u03c3\140\u03c2\001\001\000\002\001\001\000\020" +
-    "\026\u03b7\027\202\030\224\103\221\115\u03b8\163\205\164" +
-    "\176\001\001\000\034\005\025\072\034\073\023\074\037" +
+    "\026\u03b7\027\202\030\225\103\220\115\u03b8\163\205\164" +
+    "\175\001\001\000\034\005\025\072\034\073\023\074\037" +
     "\105\030\106\036\107\022\120\032\130\033\136\031\151" +
     "\040\272\024\274\017\001\001\000\002\001\001\000\020" +
     "\006\102\023\u012b\072\u036d\100\u0369\106\u036b\114\u0366\336" +
@@ -1841,7 +1841,7 @@
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\012\027\045\102\u034c\103\u0146" +
     "\140\u0145\001\001\000\002\001\001\000\002\001\001\000" +
-    "\002\001\001\000\002\001\001\000\004\173\u034b\001\001" +
+    "\002\001\001\000\002\001\001\000\004\176\u034b\001\001" +
     "\000\002\001\001\000\006\027\045\140\042\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\006\027\045\140\046\001" +
@@ -1850,8 +1850,8 @@
     "\105\012\074\013\066\016\052\020\123\022\060\023\061" +
     "\025\117\072\076\073\023\074\072\105\070\106\036\107" +
     "\071\110\103\114\107\117\115\120\077\121\106\134\113" +
-    "\136\064\144\065\170\122\174\100\175\111\176\056\250" +
-    "\063\251\110\272\024\274\017\275\121\302\053\344\112" +
+    "\136\064\144\065\173\122\177\100\200\111\201\056\253" +
+    "\063\254\110\272\024\274\017\275\121\302\053\344\112" +
     "\345\114\346\055\001\001\000\004\027\051\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\004\027" +
@@ -1861,7 +1861,7 @@
     "\011\105\016\052\020\123\022\060\023\061\025\117\072" +
     "\076\073\023\074\072\105\070\106\036\107\071\110\103" +
     "\114\107\117\115\120\077\121\106\134\113\136\064\144" +
-    "\065\170\122\174\100\175\111\176\056\250\063\251\u02f9" +
+    "\065\173\122\177\100\200\111\201\056\253\063\254\u02f9" +
     "\272\024\274\017\275\121\302\053\344\112\345\114\346" +
     "\055\001\001\000\006\027\160\146\u02e2\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\004\006" +
@@ -1879,162 +1879,162 @@
     "\006\102\011\105\012\074\013\066\016\052\020\123\022" +
     "\060\023\061\025\117\072\076\073\023\074\072\105\070" +
     "\106\036\107\071\110\103\114\107\117\115\120\077\121" +
-    "\106\134\113\136\064\144\065\170\122\174\100\175\111" +
-    "\176\056\250\063\251\110\272\024\274\017\275\121\302" +
+    "\106\134\113\136\064\144\065\173\122\177\100\200\111" +
+    "\201\056\253\063\254\110\272\024\274\017\275\121\302" +
     "\053\344\112\345\114\346\055\001\001\000\002\001\001" +
     "\000\002\001\001\000\004\027\u0149\001\001\000\004\303" +
-    "\u0148\001\001\000\004\027\137\001\001\000\006\177\141" +
-    "\200\140\001\001\000\002\001\001\000\004\303\u0102\001" +
-    "\001\000\012\006\102\023\143\240\146\241\147\001\001" +
+    "\u0148\001\001\000\004\027\137\001\001\000\006\202\141" +
+    "\203\140\001\001\000\002\001\001\000\004\303\u0102\001" +
+    "\001\000\012\006\102\023\143\243\146\244\147\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\010\006\102\023\143" +
-    "\241\152\001\001\000\002\001\001\000\002\001\001\000" +
-    "\002\001\001\000\004\006\u0101\001\001\000\004\242\156" +
+    "\244\152\001\001\000\002\001\001\000\002\001\001\000" +
+    "\002\001\001\000\004\006\u0101\001\001\000\004\245\156" +
     "\001\001\000\006\027\160\146\161\001\001\000\002\001" +
     "\001\000\002\001\001\000\004\143\162\001\001\000\002" +
-    "\001\001\000\050\026\231\027\202\030\224\031\206\032" +
-    "\201\033\213\034\211\035\210\036\217\042\222\044\225" +
-    "\103\221\154\220\155\215\160\227\163\205\164\176\255" +
-    "\207\261\200\001\001\000\004\252\167\001\001\000\004" +
+    "\001\001\000\050\026\231\027\202\030\225\031\206\032" +
+    "\201\033\213\034\211\035\210\036\217\042\222\044\224" +
+    "\103\220\154\221\155\215\160\227\163\205\164\175\257" +
+    "\207\261\200\001\001\000\004\172\167\001\001\000\004" +
     "\027\166\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
-    "\001\000\034\026\231\027\202\030\224\036\u0100\044\225" +
-    "\103\221\154\220\155\215\160\227\163\205\164\176\255" +
+    "\001\000\034\026\231\027\202\030\225\036\u0100\044\224" +
+    "\103\220\154\221\155\215\160\227\163\205\164\175\257" +
     "\207\261\200\001\001\000\002\001\001\000\002\001\001" +
-    "\000\002\001\001\000\066\026\246\027\202\030\224\031" +
+    "\000\002\001\001\000\066\026\246\027\202\030\225\031" +
     "\355\032\201\033\256\034\211\035\210\036\217\042\222" +
-    "\044\225\103\221\154\220\155\215\160\227\161\245\163" +
-    "\205\164\176\167\244\245\251\246\243\253\360\254\357" +
-    "\255\207\256\354\261\200\001\001\000\002\001\001\000" +
-    "\002\001\001\000\006\037\322\257\316\001\001\000\002" +
+    "\044\224\103\220\154\221\155\215\160\227\161\245\163" +
+    "\205\164\175\167\244\250\251\251\243\255\360\256\357" +
+    "\257\207\260\354\261\200\001\001\000\002\001\001\000" +
+    "\002\001\001\000\006\037\322\170\316\001\001\000\002" +
     "\001\001\000\002\001\001\000\004\043\303\001\001\000" +
-    "\034\026\231\027\202\030\224\036\353\044\225\103\221" +
-    "\154\220\155\215\160\227\163\205\164\176\255\207\261" +
-    "\200\001\001\000\010\040\262\041\267\260\264\001\001" +
+    "\034\026\231\027\202\030\225\036\353\044\224\103\220" +
+    "\154\221\155\215\160\227\163\205\164\175\257\207\261" +
+    "\200\001\001\000\010\040\262\041\267\171\264\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\040" +
-    "\026\231\027\202\030\224\034\350\035\210\036\217\044" +
-    "\225\103\221\154\220\155\215\160\227\163\205\164\176" +
-    "\255\207\261\200\001\001\000\020\026\346\027\202\030" +
-    "\224\044\347\103\221\163\205\164\176\001\001\000\002" +
+    "\026\231\027\202\030\225\034\350\035\210\036\217\044" +
+    "\224\103\220\154\221\155\215\160\227\163\205\164\175" +
+    "\257\207\261\200\001\001\000\020\026\346\027\202\030" +
+    "\225\044\347\103\220\163\205\164\175\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\066\026\246" +
-    "\027\202\030\224\031\247\032\201\033\256\034\211\035" +
-    "\210\036\217\042\222\044\225\103\221\154\220\155\215" +
-    "\160\227\161\245\163\205\164\176\165\255\167\244\245" +
-    "\251\246\243\253\254\254\253\255\207\261\200\001\001" +
-    "\000\010\155\242\252\241\255\207\001\001\000\010\027" +
+    "\027\202\030\225\031\247\032\201\033\256\034\211\035" +
+    "\210\036\217\042\222\044\224\103\220\154\221\155\215" +
+    "\160\227\161\245\163\205\164\175\165\255\167\244\250" +
+    "\251\251\243\255\254\256\253\257\207\261\200\001\001" +
+    "\000\010\155\242\172\241\257\207\001\001\000\010\027" +
     "\237\103\236\160\240\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
-    "\000\002\001\001\000\004\211\335\001\001\000\006\037" +
-    "\322\257\316\001\001\000\002\001\001\000\002\001\001" +
+    "\000\002\001\001\000\004\214\335\001\001\000\006\037" +
+    "\322\170\316\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\002\001\001\000\010\040\262\041\267\260\264\001\001" +
+    "\002\001\001\000\010\040\262\041\267\171\264\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\044\026\231\027\202\030\224\033\330\034\211\035\210" +
-    "\036\217\042\222\044\225\103\221\154\220\155\215\160" +
-    "\227\163\205\164\176\255\207\261\200\001\001\000\002" +
-    "\001\001\000\046\026\311\027\202\030\224\033\310\034" +
-    "\211\035\210\036\217\042\222\044\225\103\221\154\220" +
-    "\155\215\160\227\163\205\164\176\167\307\255\207\261" +
+    "\044\026\231\027\202\030\225\033\330\034\211\035\210" +
+    "\036\217\042\222\044\224\103\220\154\221\155\215\160" +
+    "\227\163\205\164\175\257\207\261\200\001\001\000\002" +
+    "\001\001\000\046\026\311\027\202\030\225\033\310\034" +
+    "\211\035\210\036\217\042\222\044\224\103\220\154\221" +
+    "\155\215\160\227\163\205\164\175\167\307\257\207\261" +
     "\200\001\001\000\002\001\001\000\002\001\001\000\040" +
-    "\026\231\027\202\030\224\034\300\035\210\036\217\044" +
-    "\225\103\221\154\220\155\215\160\227\163\205\164\176" +
-    "\255\207\261\200\001\001\000\002\001\001\000\044\026" +
-    "\231\027\202\030\224\033\277\034\211\035\210\036\217" +
-    "\042\222\044\225\103\221\154\220\155\215\160\227\163" +
-    "\205\164\176\255\207\261\200\001\001\000\002\001\001" +
+    "\026\231\027\202\030\225\034\300\035\210\036\217\044" +
+    "\224\103\220\154\221\155\215\160\227\163\205\164\175" +
+    "\257\207\261\200\001\001\000\002\001\001\000\044\026" +
+    "\231\027\202\030\225\033\277\034\211\035\210\036\217" +
+    "\042\222\044\224\103\220\154\221\155\215\160\227\163" +
+    "\205\164\175\257\207\261\200\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\004\041\267\001\001\000\004\043\303" +
     "\001\001\000\002\001\001\000\002\001\001\000\036\026" +
-    "\231\027\202\030\224\035\306\036\217\044\225\103\221" +
-    "\154\220\155\215\160\227\163\205\164\176\255\207\261" +
+    "\231\027\202\030\225\035\306\036\217\044\224\103\220" +
+    "\154\221\155\215\160\227\163\205\164\175\257\207\261" +
     "\200\001\001\000\002\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\004\041\267\001\001\000" +
-    "\002\001\001\000\010\155\242\252\241\255\207\001\001" +
-    "\000\002\001\001\000\050\026\231\027\202\030\224\031" +
+    "\002\001\001\000\010\155\242\172\241\257\207\001\001" +
+    "\000\002\001\001\000\050\026\231\027\202\030\225\031" +
     "\315\032\201\033\213\034\211\035\210\036\217\042\222" +
-    "\044\225\103\221\154\220\155\215\160\227\163\205\164" +
-    "\176\255\207\261\200\001\001\000\006\037\322\257\316" +
-    "\001\001\000\046\026\231\027\202\030\224\032\327\033" +
-    "\213\034\211\035\210\036\217\042\222\044\225\103\221" +
-    "\154\220\155\215\160\227\163\205\164\176\255\207\261" +
+    "\044\224\103\220\154\221\155\215\160\227\163\205\164" +
+    "\175\257\207\261\200\001\001\000\006\037\322\170\316" +
+    "\001\001\000\046\026\231\027\202\030\225\032\327\033" +
+    "\213\034\211\035\210\036\217\042\222\044\224\103\220" +
+    "\154\221\155\215\160\227\163\205\164\175\257\207\261" +
     "\200\001\001\000\002\001\001\000\002\001\001\000\002" +
-    "\001\001\000\046\026\231\027\202\030\224\032\325\033" +
-    "\213\034\211\035\210\036\217\042\222\044\225\103\221" +
-    "\154\220\155\215\160\227\163\205\164\176\255\207\261" +
+    "\001\001\000\046\026\231\027\202\030\225\032\325\033" +
+    "\213\034\211\035\210\036\217\042\222\044\224\103\220" +
+    "\154\221\155\215\160\227\163\205\164\175\257\207\261" +
     "\200\001\001\000\002\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\004\041" +
-    "\267\001\001\000\064\026\246\027\202\030\224\031\247" +
+    "\267\001\001\000\064\026\246\027\202\030\225\031\247" +
     "\032\201\033\256\034\211\035\210\036\217\042\222\044" +
-    "\225\103\221\154\220\155\215\160\227\161\245\163\205" +
-    "\164\176\167\244\245\251\246\243\253\333\254\253\255" +
+    "\224\103\220\154\221\155\215\160\227\161\245\163\205" +
+    "\164\175\167\244\250\251\251\243\255\333\256\253\257" +
     "\207\261\200\001\001\000\002\001\001\000\002\001\001" +
-    "\000\046\026\337\027\202\030\224\033\310\034\211\035" +
-    "\210\036\217\042\222\044\225\103\221\154\220\155\215" +
-    "\160\227\163\205\164\176\167\336\255\207\261\200\001" +
+    "\000\046\026\337\027\202\030\225\033\310\034\211\035" +
+    "\210\036\217\042\222\044\224\103\220\154\221\155\215" +
+    "\160\227\163\205\164\175\167\336\257\207\261\200\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
-    "\000\056\026\246\027\202\030\224\031\345\032\201\033" +
-    "\256\034\211\035\210\036\217\042\222\044\225\103\221" +
-    "\154\220\155\215\160\227\163\205\164\176\167\244\245" +
-    "\344\246\343\255\207\261\200\001\001\000\050\026\231" +
-    "\027\202\030\224\031\342\032\201\033\213\034\211\035" +
-    "\210\036\217\042\222\044\225\103\221\154\220\155\215" +
-    "\160\227\163\205\164\176\255\207\261\200\001\001\000" +
-    "\006\037\322\257\316\001\001\000\002\001\001\000\002" +
-    "\001\001\000\006\037\322\257\316\001\001\000\002\001" +
+    "\000\056\026\246\027\202\030\225\031\345\032\201\033" +
+    "\256\034\211\035\210\036\217\042\222\044\224\103\220" +
+    "\154\221\155\215\160\227\163\205\164\175\167\244\250" +
+    "\344\251\343\257\207\261\200\001\001\000\050\026\231" +
+    "\027\202\030\225\031\342\032\201\033\213\034\211\035" +
+    "\210\036\217\042\222\044\224\103\220\154\221\155\215" +
+    "\160\227\163\205\164\175\257\207\261\200\001\001\000" +
+    "\006\037\322\170\316\001\001\000\002\001\001\000\002" +
+    "\001\001\000\006\037\322\170\316\001\001\000\002\001" +
     "\001\000\002\001\001\000\004\043\303\001\001\000\034" +
-    "\026\231\027\202\030\224\036\352\044\225\103\221\154" +
-    "\220\155\215\160\227\163\205\164\176\255\207\261\200" +
+    "\026\231\027\202\030\225\036\352\044\224\103\220\154" +
+    "\221\155\215\160\227\163\205\164\175\257\207\261\200" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
-    "\001\000\006\037\322\257\316\001\001\000\002\001\001" +
+    "\001\000\006\037\322\170\316\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\064\026\246\027" +
-    "\202\030\224\031\247\032\201\033\256\034\211\035\210" +
-    "\036\217\042\222\044\225\103\221\154\220\155\215\160" +
-    "\227\161\245\163\205\164\176\167\244\245\251\246\243" +
-    "\253\362\254\253\255\207\261\200\001\001\000\002\001" +
+    "\202\030\225\031\247\032\201\033\256\034\211\035\210" +
+    "\036\217\042\222\044\224\103\220\154\221\155\215\160" +
+    "\227\161\245\163\205\164\175\167\244\250\251\251\243" +
+    "\255\362\256\253\257\207\261\200\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
-    "\000\002\001\001\000\066\026\246\027\202\030\224\031" +
+    "\000\002\001\001\000\066\026\246\027\202\030\225\031" +
     "\247\032\201\033\256\034\211\035\210\036\217\042\222" +
-    "\044\225\103\221\154\220\155\215\160\227\161\245\163" +
-    "\205\164\176\165\371\167\244\245\251\246\243\253\254" +
-    "\254\253\255\207\261\200\001\001\000\002\001\001\000" +
+    "\044\224\103\220\154\221\155\215\160\227\161\245\163" +
+    "\205\164\175\165\371\167\244\250\251\251\243\255\254" +
+    "\256\253\257\207\261\200\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
-    "\001\001\000\064\026\246\027\202\030\224\031\247\032" +
-    "\201\033\256\034\211\035\210\036\217\042\222\044\225" +
-    "\103\221\154\220\155\215\160\227\161\245\163\205\164" +
-    "\176\167\244\245\251\246\243\253\377\254\253\255\207" +
+    "\001\001\000\064\026\246\027\202\030\225\031\247\032" +
+    "\201\033\256\034\211\035\210\036\217\042\222\044\224" +
+    "\103\220\154\221\155\215\160\227\161\245\163\205\164" +
+    "\175\167\244\250\251\251\243\255\377\256\253\257\207" +
     "\261\200\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\004" +
-    "\304\u0104\001\001\000\024\072\u010c\170\u0107\250\u0106\305" +
+    "\304\u0104\001\001\000\024\072\u010c\173\u0107\253\u0106\305" +
     "\u0108\307\u0105\310\u010b\344\112\345\114\346\055\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\004\306\u010e\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\032\006\102\023\u0110\072\u010c\170\u0107\235\u0111\250\u0106" +
+    "\032\006\102\023\u0110\072\u010c\173\u0107\240\u0111\253\u0106" +
     "\307\u0112\310\u010b\311\u010f\344\112\345\114\346\055\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\006\227\u0118\230\u0117\001\001\000\002\001\001\000\020" +
-    "\021\u011c\026\u011b\027\202\030\224\103\221\163\205\164" +
-    "\176\001\001\000\004\143\u0119\001\001\000\002\001\001" +
-    "\000\002\001\001\000\010\210\u0120\211\u011f\212\u011e\001" +
-    "\001\000\002\001\001\000\050\026\231\027\202\030\224" +
+    "\006\232\u0118\233\u0117\001\001\000\002\001\001\000\020" +
+    "\021\u011c\026\u011b\027\202\030\225\103\220\163\205\164" +
+    "\175\001\001\000\004\143\u0119\001\001\000\002\001\001" +
+    "\000\002\001\001\000\010\213\u0120\214\u011f\215\u011e\001" +
+    "\001\000\002\001\001\000\050\026\231\027\202\030\225" +
     "\031\u0122\032\201\033\213\034\211\035\210\036\217\042" +
-    "\222\044\225\103\221\154\220\155\215\160\227\163\205" +
-    "\164\176\255\207\261\200\001\001\000\002\001\001\000" +
-    "\002\001\001\000\002\001\001\000\004\252\241\001\001" +
-    "\000\012\037\322\211\u0124\213\u0123\257\316\001\001\000" +
+    "\222\044\224\103\220\154\221\155\215\160\227\163\205" +
+    "\164\175\257\207\261\200\001\001\000\002\001\001\000" +
+    "\002\001\001\000\002\001\001\000\004\172\241\001\001" +
+    "\000\012\037\322\170\316\214\u0124\216\u0123\001\001\000" +
     "\002\001\001\000\002\001\001\000\006\076\u0126\077\u0127" +
     "\001\001\000\002\001\001\000\002\001\001\000\060\006" +
-    "\102\023\u012b\026\u012d\027\202\030\224\033\310\034\211" +
-    "\035\210\036\217\042\222\044\225\075\u0129\100\u012a\103" +
-    "\221\154\220\155\215\160\227\163\205\164\176\166\u012f" +
-    "\167\u012c\255\207\261\200\001\001\000\002\001\001\000" +
+    "\102\023\u012b\026\u012d\027\202\030\225\033\310\034\211" +
+    "\035\210\036\217\042\222\044\224\075\u0129\100\u012a\103" +
+    "\220\154\221\155\215\160\227\163\205\164\175\166\u012f" +
+    "\167\u012c\257\207\261\200\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\006" +
-    "\211\u0124\213\u0136\001\001\000\002\001\001\000\002\001" +
+    "\214\u0124\216\u0136\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\006\076\u0132\077\u0127\001\001" +
     "\000\002\001\001\000\012\006\102\023\u012b\075\u0129\100" +
     "\u012a\001\001\000\002\001\001\000\002\001\001\000\002" +
@@ -2046,512 +2046,512 @@
     "\014\027\045\102\u0144\103\u0146\140\u0145\152\u0147\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\006" +
-    "\173\u014d\312\u014c\001\001\000\002\001\001\000\012\072" +
-    "\u0151\074\u0153\313\u0152\314\u014f\001\001\000\004\170\u014e" +
+    "\176\u014d\312\u014c\001\001\000\002\001\001\000\012\072" +
+    "\u0151\074\u0153\313\u0152\314\u014f\001\001\000\004\173\u014e" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
-    "\001\000\002\001\001\000\004\173\u0157\001\001\000\002" +
+    "\001\000\002\001\001\000\004\176\u0157\001\001\000\002" +
     "\001\001\000\014\027\045\102\u0144\103\u0146\140\u0145\152" +
     "\u0155\001\001\000\002\001\001\000\002\001\001\000\004" +
-    "\170\u014e\001\001\000\002\001\001\000\122\002\124\003" +
+    "\173\u014e\001\001\000\002\001\001\000\122\002\124\003" +
     "\062\004\054\005\101\006\102\011\105\012\u015a\013\066" +
     "\016\052\020\123\022\060\023\061\025\117\072\076\073" +
     "\023\074\072\105\070\106\036\107\071\110\103\114\107" +
-    "\117\115\120\077\121\106\134\113\136\064\144\065\170" +
-    "\122\174\100\175\111\176\056\250\063\251\110\272\024" +
+    "\117\115\120\077\121\106\134\113\136\064\144\065\173" +
+    "\122\177\100\200\111\201\056\253\063\254\110\272\024" +
     "\274\017\275\121\302\053\344\112\345\114\346\055\001" +
     "\001\000\004\066\u015c\001\001\000\116\026\u016e\027\202" +
-    "\030\224\044\u0162\045\u017e\046\u016c\047\u016a\050\u0188\051" +
+    "\030\225\044\u0162\045\u017e\046\u016c\047\u016a\050\u0188\051" +
     "\u0173\052\u0170\056\u0177\061\u0179\064\u0185\067\u016b\071\u0165" +
-    "\103\221\104\u0180\122\u018a\123\u018b\135\u0171\137\u0169\147" +
-    "\u0160\150\u0178\153\u018c\157\u0164\162\u0187\163\205\164\176" +
-    "\170\u018d\262\u0189\263\u0167\264\u0166\265\u016d\316\u017a\321" +
+    "\103\220\104\u0180\122\u018a\123\u018b\135\u0171\137\u0169\147" +
+    "\u0160\150\u0178\153\u018c\157\u0164\162\u0187\163\205\164\175" +
+    "\173\u018d\262\u0189\263\u0167\264\u0166\265\u016d\316\u017a\321" +
     "\u0172\322\u016f\323\u0161\324\u0181\001\001\000\002\001\001" +
     "\000\014\027\045\102\u0144\103\u0146\140\u0145\152\u015e\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\016\026\u0230\027" +
-    "\202\030\224\103\221\163\205\164\176\001\001\000\002" +
+    "\202\030\225\103\220\163\205\164\175\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
-    "\001\000\050\026\231\027\202\030\224\031\u0224\032\201" +
-    "\033\213\034\211\035\210\036\217\042\222\044\225\103" +
-    "\221\154\220\155\215\160\227\163\205\164\176\255\207" +
+    "\001\000\050\026\231\027\202\030\225\031\u0224\032\201" +
+    "\033\213\034\211\035\210\036\217\042\222\044\224\103" +
+    "\220\154\221\155\215\160\227\163\205\164\175\257\207" +
     "\261\200\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\036\026\u01fd" +
-    "\027\202\030\224\103\221\122\u01f4\157\u01f8\163\205\164" +
-    "\176\264\u01fb\316\u017a\317\u01f5\325\u01fc\327\u01f6\331\u01f7" +
-    "\001\001\000\020\026\u0191\027\202\030\224\070\u01ef\103" +
-    "\221\163\205\164\176\001\001\000\054\026\231\027\202" +
-    "\030\224\031\u019b\032\201\033\213\034\211\035\210\036" +
-    "\217\042\222\044\225\053\u01e1\054\u01e2\103\221\154\220" +
-    "\155\215\160\227\163\205\164\176\255\207\261\200\001" +
+    "\027\202\030\225\103\220\122\u01f4\157\u01f8\163\205\164" +
+    "\175\264\u01fb\316\u017a\317\u01f5\325\u01fc\327\u01f6\331\u01f7" +
+    "\001\001\000\020\026\u0191\027\202\030\225\070\u01ef\103" +
+    "\220\163\205\164\175\001\001\000\054\026\231\027\202" +
+    "\030\225\031\u019b\032\201\033\213\034\211\035\210\036" +
+    "\217\042\222\044\224\053\u01e1\054\u01e2\103\220\154\221" +
+    "\155\215\160\227\163\205\164\175\257\207\261\200\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
-    "\000\002\001\001\000\050\026\231\027\202\030\224\031" +
+    "\000\002\001\001\000\050\026\231\027\202\030\225\031" +
     "\u01d9\032\201\033\213\034\211\035\210\036\217\042\222" +
-    "\044\225\103\221\154\220\155\215\160\227\163\205\164" +
-    "\176\255\207\261\200\001\001\000\020\026\u01d3\027\202" +
-    "\030\224\103\221\124\u01d4\163\205\164\176\001\001\000" +
-    "\002\001\001\000\116\026\u016e\027\202\030\224\044\u0162" +
+    "\044\224\103\220\154\221\155\215\160\227\163\205\164" +
+    "\175\257\207\261\200\001\001\000\020\026\u01d3\027\202" +
+    "\030\225\103\220\124\u01d4\163\205\164\175\001\001\000" +
+    "\002\001\001\000\116\026\u016e\027\202\030\225\044\u0162" +
     "\046\u016c\047\u016a\050\u0188\051\u0173\052\u0170\056\u0177\061" +
-    "\u0179\064\u0185\067\u016b\071\u0165\103\221\104\u0180\122\u018a" +
+    "\u0179\064\u0185\067\u016b\071\u0165\103\220\104\u0180\122\u018a" +
     "\123\u018b\135\u0171\137\u0169\150\u01a0\153\u018c\157\u0164\162" +
-    "\u0187\163\205\164\176\170\u018d\262\u0189\263\u0167\264\u0166" +
+    "\u0187\163\205\164\175\173\u018d\262\u0189\263\u0167\264\u0166" +
     "\265\u016d\270\u01c1\271\u01bf\316\u017a\321\u0172\322\u016f\323" +
     "\u0161\324\u0181\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\006\027\u01b9\320\u01b8\001\001\000" +
-    "\016\026\u01b6\027\202\030\224\103\221\163\205\164\176" +
-    "\001\001\000\050\026\231\027\202\030\224\031\u01b1\032" +
-    "\201\033\213\034\211\035\210\036\217\042\222\044\225" +
-    "\103\221\154\220\155\215\160\227\163\205\164\176\255" +
+    "\016\026\u01b6\027\202\030\225\103\220\163\205\164\175" +
+    "\001\001\000\050\026\231\027\202\030\225\031\u01b1\032" +
+    "\201\033\213\034\211\035\210\036\217\042\222\044\224" +
+    "\103\220\154\221\155\215\160\227\163\205\164\175\257" +
     "\207\261\200\001\001\000\002\001\001\000\002\001\001" +
     "\000\010\063\u0199\065\u0196\266\u0198\001\001\000\002\001" +
-    "\001\000\112\026\u016e\027\202\030\224\044\u0162\046\u016c" +
+    "\001\000\112\026\u016e\027\202\030\225\044\u0162\046\u016c" +
     "\047\u016a\050\u0188\051\u0173\052\u0170\056\u0177\061\u0179\064" +
-    "\u0185\067\u016b\071\u0165\103\221\104\u0180\122\u018a\123\u018b" +
+    "\u0185\067\u016b\071\u0165\103\220\104\u0180\122\u018a\123\u018b" +
     "\135\u0171\137\u0169\150\u0194\153\u018c\157\u0164\162\u0187\163" +
-    "\205\164\176\170\u018d\262\u0189\263\u0167\264\u0166\265\u016d" +
+    "\205\164\175\173\u018d\262\u0189\263\u0167\264\u0166\265\u016d" +
     "\316\u017a\321\u0172\322\u016f\323\u0161\324\u0181\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
-    "\001\001\000\020\026\u0191\027\202\030\224\070\u0192\103" +
-    "\221\163\205\164\176\001\001\000\002\001\001\000\002" +
+    "\001\001\000\020\026\u0191\027\202\030\225\070\u0192\103" +
+    "\220\163\205\164\175\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\122\002\124\003\062\004\054" +
     "\005\101\006\102\011\105\012\u01ae\013\066\016\052\020" +
     "\123\022\060\023\061\025\117\072\076\073\023\074\072" +
     "\105\070\106\036\107\071\110\103\114\107\117\115\120" +
-    "\077\121\106\134\113\136\064\144\065\170\122\174\100" +
-    "\175\111\176\056\250\063\251\110\272\024\274\017\275" +
+    "\077\121\106\134\113\136\064\144\065\173\122\177\100" +
+    "\200\111\201\056\253\063\254\110\272\024\274\017\275" +
     "\121\302\053\344\112\345\114\346\055\001\001\000\004" +
     "\066\u01aa\001\001\000\002\001\001\000\004\267\u01a5\001" +
     "\001\000\004\062\u019d\001\001\000\052\026\231\027\202" +
-    "\030\224\031\u019b\032\201\033\213\034\211\035\210\036" +
-    "\217\042\222\044\225\054\u019c\103\221\154\220\155\215" +
-    "\160\227\163\205\164\176\255\207\261\200\001\001\000" +
-    "\006\037\322\257\316\001\001\000\002\001\001\000\014" +
+    "\030\225\031\u019b\032\201\033\213\034\211\035\210\036" +
+    "\217\042\222\044\224\054\u019c\103\220\154\221\155\215" +
+    "\160\227\163\205\164\175\257\207\261\200\001\001\000" +
+    "\006\037\322\170\316\001\001\000\002\001\001\000\014" +
     "\027\045\102\u0144\103\u0146\140\u0145\152\u01a3\001\001\000" +
-    "\114\026\u016e\027\202\030\224\044\u0162\045\u019f\046\u016c" +
+    "\114\026\u016e\027\202\030\225\044\u0162\045\u019f\046\u016c" +
     "\047\u016a\050\u0188\051\u0173\052\u0170\056\u0177\061\u0179\064" +
-    "\u0185\067\u016b\071\u0165\103\221\104\u0180\122\u018a\123\u018b" +
+    "\u0185\067\u016b\071\u0165\103\220\104\u0180\122\u018a\123\u018b" +
     "\135\u0171\137\u0169\150\u0178\153\u018c\157\u0164\162\u0187\163" +
-    "\205\164\176\170\u018d\262\u0189\263\u0167\264\u0166\265\u016d" +
+    "\205\164\175\173\u018d\262\u0189\263\u0167\264\u0166\265\u016d" +
     "\316\u017a\321\u0172\322\u016f\323\u0161\324\u0181\001\001\000" +
-    "\112\026\u016e\027\202\030\224\044\u0162\046\u016c\047\u016a" +
+    "\112\026\u016e\027\202\030\225\044\u0162\046\u016c\047\u016a" +
     "\050\u0188\051\u0173\052\u0170\056\u0177\061\u0179\064\u0185\067" +
-    "\u016b\071\u0165\103\221\104\u0180\122\u018a\123\u018b\135\u0171" +
+    "\u016b\071\u0165\103\220\104\u0180\122\u018a\123\u018b\135\u0171" +
     "\137\u0169\150\u01a0\153\u018c\157\u0164\162\u0187\163\205\164" +
-    "\176\170\u018d\262\u0189\263\u0167\264\u0166\265\u016d\316\u017a" +
+    "\175\173\u018d\262\u0189\263\u0167\264\u0166\265\u016d\316\u017a" +
     "\321\u0172\322\u016f\323\u0161\324\u0181\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
-    "\000\002\001\001\000\050\026\u012d\027\202\030\224\033" +
-    "\310\034\211\035\210\036\217\042\222\044\225\103\221" +
-    "\154\220\155\215\160\227\163\205\164\176\166\u01a7\167" +
-    "\u012c\255\207\261\200\001\001\000\002\001\001\000\002" +
+    "\000\002\001\001\000\050\026\u012d\027\202\030\225\033" +
+    "\310\034\211\035\210\036\217\042\222\044\224\103\220" +
+    "\154\221\155\215\160\227\163\205\164\175\166\u01a7\167" +
+    "\u012c\257\207\261\200\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\014\027\045\102\u0144\103\u0146\140\u0145\152\u01ac" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\006\037\322" +
-    "\257\316\001\001\000\050\026\231\027\202\030\224\031" +
+    "\170\316\001\001\000\050\026\231\027\202\030\225\031" +
     "\u01b3\032\201\033\213\034\211\035\210\036\217\042\222" +
-    "\044\225\103\221\154\220\155\215\160\227\163\205\164" +
-    "\176\255\207\261\200\001\001\000\006\037\322\257\316" +
+    "\044\224\103\220\154\221\155\215\160\227\163\205\164" +
+    "\175\257\207\261\200\001\001\000\006\037\322\170\316" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\006\076\u01ba\077\u0127\001\001" +
     "\000\002\001\001\000\002\001\001\000\060\006\102\023" +
-    "\u012b\026\231\027\202\030\224\031\u01bc\032\201\033\213" +
-    "\034\211\035\210\036\217\042\222\044\225\075\u0129\100" +
-    "\u012a\103\221\154\220\155\215\160\227\163\205\164\176" +
-    "\255\207\261\200\001\001\000\006\037\322\257\316\001" +
+    "\u012b\026\231\027\202\030\225\031\u01bc\032\201\033\213" +
+    "\034\211\035\210\036\217\042\222\044\224\075\u0129\100" +
+    "\u012a\103\220\154\221\155\215\160\227\163\205\164\175" +
+    "\257\207\261\200\001\001\000\006\037\322\170\316\001" +
     "\001\000\002\001\001\000\002\001\001\000\004\333\u01d1" +
     "\001\001\000\004\333\u01c3\001\001\000\002\001\001\000" +
-    "\022\026\u01c5\027\202\030\224\103\221\163\205\164\176" +
+    "\022\026\u01c5\027\202\030\225\103\220\163\205\164\175" +
     "\334\u01c7\335\u01c8\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
-    "\000\002\001\001\000\020\026\u01c5\027\202\030\224\103" +
-    "\221\163\205\164\176\335\u01cc\001\001\000\114\026\u016e" +
-    "\027\202\030\224\044\u0162\045\u01cb\046\u016c\047\u016a\050" +
+    "\000\002\001\001\000\020\026\u01c5\027\202\030\225\103" +
+    "\220\163\205\164\175\335\u01cc\001\001\000\114\026\u016e" +
+    "\027\202\030\225\044\u0162\045\u01cb\046\u016c\047\u016a\050" +
     "\u0188\051\u0173\052\u0170\056\u0177\061\u0179\064\u0185\067\u016b" +
-    "\071\u0165\103\221\104\u0180\122\u018a\123\u018b\135\u0171\137" +
-    "\u0169\150\u0178\153\u018c\157\u0164\162\u0187\163\205\164\176" +
-    "\170\u018d\262\u0189\263\u0167\264\u0166\265\u016d\316\u017a\321" +
+    "\071\u0165\103\220\104\u0180\122\u018a\123\u018b\135\u0171\137" +
+    "\u0169\150\u0178\153\u018c\157\u0164\162\u0187\163\205\164\175" +
+    "\173\u018d\262\u0189\263\u0167\264\u0166\265\u016d\316\u017a\321" +
     "\u0172\322\u016f\323\u0161\324\u0181\001\001\000\112\026\u016e" +
-    "\027\202\030\224\044\u0162\046\u016c\047\u016a\050\u0188\051" +
+    "\027\202\030\225\044\u0162\046\u016c\047\u016a\050\u0188\051" +
     "\u0173\052\u0170\056\u0177\061\u0179\064\u0185\067\u016b\071\u0165" +
-    "\103\221\104\u0180\122\u018a\123\u018b\135\u0171\137\u0169\150" +
-    "\u01a0\153\u018c\157\u0164\162\u0187\163\205\164\176\170\u018d" +
+    "\103\220\104\u0180\122\u018a\123\u018b\135\u0171\137\u0169\150" +
+    "\u01a0\153\u018c\157\u0164\162\u0187\163\205\164\175\173\u018d" +
     "\262\u0189\263\u0167\264\u0166\265\u016d\316\u017a\321\u0172\322" +
     "\u016f\323\u0161\324\u0181\001\001\000\002\001\001\000\022" +
-    "\026\u01c5\027\202\030\224\103\221\163\205\164\176\334" +
+    "\026\u01c5\027\202\030\225\103\220\163\205\164\175\334" +
     "\u01ce\335\u01c8\001\001\000\002\001\001\000\114\026\u016e" +
-    "\027\202\030\224\044\u0162\045\u01d0\046\u016c\047\u016a\050" +
+    "\027\202\030\225\044\u0162\045\u01d0\046\u016c\047\u016a\050" +
     "\u0188\051\u0173\052\u0170\056\u0177\061\u0179\064\u0185\067\u016b" +
-    "\071\u0165\103\221\104\u0180\122\u018a\123\u018b\135\u0171\137" +
-    "\u0169\150\u0178\153\u018c\157\u0164\162\u0187\163\205\164\176" +
-    "\170\u018d\262\u0189\263\u0167\264\u0166\265\u016d\316\u017a\321" +
+    "\071\u0165\103\220\104\u0180\122\u018a\123\u018b\135\u0171\137" +
+    "\u0169\150\u0178\153\u018c\157\u0164\162\u0187\163\205\164\175" +
+    "\173\u018d\262\u0189\263\u0167\264\u0166\265\u016d\316\u017a\321" +
     "\u0172\322\u016f\323\u0161\324\u0181\001\001\000\112\026\u016e" +
-    "\027\202\030\224\044\u0162\046\u016c\047\u016a\050\u0188\051" +
+    "\027\202\030\225\044\u0162\046\u016c\047\u016a\050\u0188\051" +
     "\u0173\052\u0170\056\u0177\061\u0179\064\u0185\067\u016b\071\u0165" +
-    "\103\221\104\u0180\122\u018a\123\u018b\135\u0171\137\u0169\150" +
-    "\u01a0\153\u018c\157\u0164\162\u0187\163\205\164\176\170\u018d" +
+    "\103\220\104\u0180\122\u018a\123\u018b\135\u0171\137\u0169\150" +
+    "\u01a0\153\u018c\157\u0164\162\u0187\163\205\164\175\173\u018d" +
     "\262\u0189\263\u0167\264\u0166\265\u016d\316\u017a\321\u0172\322" +
     "\u016f\323\u0161\324\u0181\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\016\026" +
-    "\u01d7\027\202\030\224\103\221\163\205\164\176\001\001" +
+    "\u01d7\027\202\030\225\103\220\163\205\164\175\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\006\037\322\257\316\001\001\000\002\001\001\000\116" +
-    "\026\u016e\027\202\030\224\044\u0162\045\u017e\046\u016c\047" +
+    "\006\037\322\170\316\001\001\000\002\001\001\000\116" +
+    "\026\u016e\027\202\030\225\044\u0162\045\u017e\046\u016c\047" +
     "\u016a\050\u0188\051\u0173\052\u0170\056\u0177\061\u0179\064\u0185" +
-    "\067\u016b\071\u0165\103\221\104\u0180\122\u018a\123\u018b\135" +
+    "\067\u016b\071\u0165\103\220\104\u0180\122\u018a\123\u018b\135" +
     "\u0171\137\u0169\147\u01dd\150\u0178\153\u018c\157\u0164\162\u0187" +
-    "\163\205\164\176\170\u018d\262\u0189\263\u0167\264\u0166\265" +
+    "\163\205\164\175\173\u018d\262\u0189\263\u0167\264\u0166\265" +
     "\u016d\316\u017a\321\u0172\322\u016f\323\u0161\324\u0181\001\001" +
     "\000\002\001\001\000\002\001\001\000\014\027\045\102" +
     "\u0144\103\u0146\140\u0145\152\u01df\001\001\000\002\001\001" +
     "\000\002\001\001\000\004\055\u01e7\001\001\000\002\001" +
-    "\001\000\114\026\u016e\027\202\030\224\044\u0162\045\u01e4" +
+    "\001\000\114\026\u016e\027\202\030\225\044\u0162\045\u01e4" +
     "\046\u016c\047\u016a\050\u0188\051\u0173\052\u0170\056\u0177\061" +
-    "\u0179\064\u0185\067\u016b\071\u0165\103\221\104\u0180\122\u018a" +
+    "\u0179\064\u0185\067\u016b\071\u0165\103\220\104\u0180\122\u018a" +
     "\123\u018b\135\u0171\137\u0169\150\u0178\153\u018c\157\u0164\162" +
-    "\u0187\163\205\164\176\170\u018d\262\u0189\263\u0167\264\u0166" +
+    "\u0187\163\205\164\175\173\u018d\262\u0189\263\u0167\264\u0166" +
     "\265\u016d\316\u017a\321\u0172\322\u016f\323\u0161\324\u0181\001" +
-    "\001\000\112\026\u016e\027\202\030\224\044\u0162\046\u016c" +
+    "\001\000\112\026\u016e\027\202\030\225\044\u0162\046\u016c" +
     "\047\u016a\050\u0188\051\u0173\052\u0170\056\u0177\061\u0179\064" +
-    "\u0185\067\u016b\071\u0165\103\221\104\u0180\122\u018a\123\u018b" +
+    "\u0185\067\u016b\071\u0165\103\220\104\u0180\122\u018a\123\u018b" +
     "\135\u0171\137\u0169\150\u01a0\153\u018c\157\u0164\162\u0187\163" +
-    "\205\164\176\170\u018d\262\u0189\263\u0167\264\u0166\265\u016d" +
+    "\205\164\175\173\u018d\262\u0189\263\u0167\264\u0166\265\u016d" +
     "\316\u017a\321\u0172\322\u016f\323\u0161\324\u0181\001\001\000" +
-    "\114\026\u016e\027\202\030\224\044\u0162\045\u01ee\046\u016c" +
+    "\114\026\u016e\027\202\030\225\044\u0162\045\u01ee\046\u016c" +
     "\047\u016a\050\u0188\051\u0173\052\u0170\056\u0177\061\u0179\064" +
-    "\u0185\067\u016b\071\u0165\103\221\104\u0180\122\u018a\123\u018b" +
+    "\u0185\067\u016b\071\u0165\103\220\104\u0180\122\u018a\123\u018b" +
     "\135\u0171\137\u0169\150\u0178\153\u018c\157\u0164\162\u0187\163" +
-    "\205\164\176\170\u018d\262\u0189\263\u0167\264\u0166\265\u016d" +
+    "\205\164\175\173\u018d\262\u0189\263\u0167\264\u0166\265\u016d" +
     "\316\u017a\321\u0172\322\u016f\323\u0161\324\u0181\001\001\000" +
-    "\052\026\231\027\202\030\224\031\u019b\032\201\033\213" +
-    "\034\211\035\210\036\217\042\222\044\225\054\u01eb\103" +
-    "\221\154\220\155\215\160\227\163\205\164\176\255\207" +
+    "\052\026\231\027\202\030\225\031\u019b\032\201\033\213" +
+    "\034\211\035\210\036\217\042\222\044\224\054\u01eb\103" +
+    "\220\154\221\155\215\160\227\163\205\164\175\257\207" +
     "\261\200\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\114" +
-    "\026\u016e\027\202\030\224\044\u0162\045\u01ed\046\u016c\047" +
+    "\026\u016e\027\202\030\225\044\u0162\045\u01ed\046\u016c\047" +
     "\u016a\050\u0188\051\u0173\052\u0170\056\u0177\061\u0179\064\u0185" +
-    "\067\u016b\071\u0165\103\221\104\u0180\122\u018a\123\u018b\135" +
+    "\067\u016b\071\u0165\103\220\104\u0180\122\u018a\123\u018b\135" +
     "\u0171\137\u0169\150\u0178\153\u018c\157\u0164\162\u0187\163\205" +
-    "\164\176\170\u018d\262\u0189\263\u0167\264\u0166\265\u016d\316" +
+    "\164\175\173\u018d\262\u0189\263\u0167\264\u0166\265\u016d\316" +
     "\u017a\321\u0172\322\u016f\323\u0161\324\u0181\001\001\000\112" +
-    "\026\u016e\027\202\030\224\044\u0162\046\u016c\047\u016a\050" +
+    "\026\u016e\027\202\030\225\044\u0162\046\u016c\047\u016a\050" +
     "\u0188\051\u0173\052\u0170\056\u0177\061\u0179\064\u0185\067\u016b" +
-    "\071\u0165\103\221\104\u0180\122\u018a\123\u018b\135\u0171\137" +
-    "\u0169\150\u01a0\153\u018c\157\u0164\162\u0187\163\205\164\176" +
-    "\170\u018d\262\u0189\263\u0167\264\u0166\265\u016d\316\u017a\321" +
+    "\071\u0165\103\220\104\u0180\122\u018a\123\u018b\135\u0171\137" +
+    "\u0169\150\u01a0\153\u018c\157\u0164\162\u0187\163\205\164\175" +
+    "\173\u018d\262\u0189\263\u0167\264\u0166\265\u016d\316\u017a\321" +
     "\u0172\322\u016f\323\u0161\324\u0181\001\001\000\112\026\u016e" +
-    "\027\202\030\224\044\u0162\046\u016c\047\u016a\050\u0188\051" +
+    "\027\202\030\225\044\u0162\046\u016c\047\u016a\050\u0188\051" +
     "\u0173\052\u0170\056\u0177\061\u0179\064\u0185\067\u016b\071\u0165" +
-    "\103\221\104\u0180\122\u018a\123\u018b\135\u0171\137\u0169\150" +
-    "\u01a0\153\u018c\157\u0164\162\u0187\163\205\164\176\170\u018d" +
+    "\103\220\104\u0180\122\u018a\123\u018b\135\u0171\137\u0169\150" +
+    "\u01a0\153\u018c\157\u0164\162\u0187\163\205\164\175\173\u018d" +
     "\262\u0189\263\u0167\264\u0166\265\u016d\316\u017a\321\u0172\322" +
     "\u016f\323\u0161\324\u0181\001\001\000\004\156\u01f0\001\001" +
-    "\000\002\001\001\000\052\026\231\027\202\030\224\031" +
+    "\000\002\001\001\000\052\026\231\027\202\030\225\031" +
     "\u019b\032\201\033\213\034\211\035\210\036\217\042\222" +
-    "\044\225\054\u01f2\103\221\154\220\155\215\160\227\163" +
-    "\205\164\176\255\207\261\200\001\001\000\002\001\001" +
-    "\000\002\001\001\000\116\026\u016e\027\202\030\224\044" +
+    "\044\224\054\u01f2\103\220\154\221\155\215\160\227\163" +
+    "\205\164\175\257\207\261\200\001\001\000\002\001\001" +
+    "\000\002\001\001\000\116\026\u016e\027\202\030\225\044" +
     "\u0162\045\u0205\046\u016c\047\u016a\050\u0188\051\u0173\052\u0170" +
-    "\056\u0177\061\u0179\064\u0185\067\u016b\071\u0165\103\221\104" +
+    "\056\u0177\061\u0179\064\u0185\067\u016b\071\u0165\103\220\104" +
     "\u0180\122\u018a\123\u018b\135\u0171\137\u0169\150\u0178\153\u018c" +
-    "\157\u0164\162\u0187\163\205\164\176\170\u018d\262\u0189\263" +
+    "\157\u0164\162\u0187\163\205\164\175\173\u018d\262\u0189\263" +
     "\u0167\264\u0166\265\u016d\316\u017a\321\u0172\322\u016f\323\u0161" +
     "\324\u0181\330\u0220\001\001\000\116\026\u016e\027\202\030" +
-    "\224\044\u0162\045\u0205\046\u016c\047\u016a\050\u0188\051\u0173" +
+    "\225\044\u0162\045\u0205\046\u016c\047\u016a\050\u0188\051\u0173" +
     "\052\u0170\056\u0177\061\u0179\064\u0185\067\u016b\071\u0165\103" +
-    "\221\104\u0180\122\u018a\123\u018b\135\u0171\137\u0169\150\u0178" +
-    "\153\u018c\157\u0164\162\u0187\163\205\164\176\170\u018d\262" +
+    "\220\104\u0180\122\u018a\123\u018b\135\u0171\137\u0169\150\u0178" +
+    "\153\u018c\157\u0164\162\u0187\163\205\164\175\173\u018d\262" +
     "\u0189\263\u0167\264\u0166\265\u016d\316\u017a\321\u0172\322\u016f" +
     "\323\u0161\324\u0181\330\u0214\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\052" +
-    "\026\231\027\202\030\224\031\u019b\032\201\033\213\034" +
-    "\211\035\210\036\217\042\222\044\225\054\u020a\103\221" +
-    "\154\220\155\215\160\227\163\205\164\176\255\207\261" +
-    "\200\001\001\000\116\026\u016e\027\202\030\224\044\u0162" +
+    "\026\231\027\202\030\225\031\u019b\032\201\033\213\034" +
+    "\211\035\210\036\217\042\222\044\224\054\u020a\103\220" +
+    "\154\221\155\215\160\227\163\205\164\175\257\207\261" +
+    "\200\001\001\000\116\026\u016e\027\202\030\225\044\u0162" +
     "\045\u0205\046\u016c\047\u016a\050\u0188\051\u0173\052\u0170\056" +
-    "\u0177\061\u0179\064\u0185\067\u016b\071\u0165\103\221\104\u0180" +
+    "\u0177\061\u0179\064\u0185\067\u016b\071\u0165\103\220\104\u0180" +
     "\122\u018a\123\u018b\135\u0171\137\u0169\150\u0178\153\u018c\157" +
-    "\u0164\162\u0187\163\205\164\176\170\u018d\262\u0189\263\u0167" +
+    "\u0164\162\u0187\163\205\164\175\173\u018d\262\u0189\263\u0167" +
     "\264\u0166\265\u016d\316\u017a\321\u0172\322\u016f\323\u0161\324" +
     "\u0181\330\u0209\001\001\000\004\326\u01ff\001\001\000\002" +
     "\001\001\000\002\001\001\000\004\055\u0200\001\001\000" +
     "\002\001\001\000\014\122\u0202\264\u01fb\316\u017a\325\u0203" +
-    "\327\u01f6\001\001\000\116\026\u016e\027\202\030\224\044" +
+    "\327\u01f6\001\001\000\116\026\u016e\027\202\030\225\044" +
     "\u0162\045\u0205\046\u016c\047\u016a\050\u0188\051\u0173\052\u0170" +
-    "\056\u0177\061\u0179\064\u0185\067\u016b\071\u0165\103\221\104" +
+    "\056\u0177\061\u0179\064\u0185\067\u016b\071\u0165\103\220\104" +
     "\u0180\122\u018a\123\u018b\135\u0171\137\u0169\150\u0178\153\u018c" +
-    "\157\u0164\162\u0187\163\205\164\176\170\u018d\262\u0189\263" +
+    "\157\u0164\162\u0187\163\205\164\175\173\u018d\262\u0189\263" +
     "\u0167\264\u0166\265\u016d\316\u017a\321\u0172\322\u016f\323\u0161" +
     "\324\u0181\330\u0204\001\001\000\002\001\001\000\002\001" +
-    "\001\000\112\026\u016e\027\202\030\224\044\u0162\046\u016c" +
+    "\001\000\112\026\u016e\027\202\030\225\044\u0162\046\u016c" +
     "\047\u016a\050\u0188\051\u0173\052\u0170\056\u0177\061\u0179\064" +
-    "\u0185\067\u016b\071\u0165\103\221\104\u0180\122\u018a\123\u018b" +
+    "\u0185\067\u016b\071\u0165\103\220\104\u0180\122\u018a\123\u018b" +
     "\135\u0171\137\u0169\150\u01a0\153\u018c\157\u0164\162\u0187\163" +
-    "\205\164\176\170\u018d\262\u0189\263\u0167\264\u0166\265\u016d" +
+    "\205\164\175\173\u018d\262\u0189\263\u0167\264\u0166\265\u016d" +
     "\316\u017a\321\u0172\322\u016f\323\u0161\324\u0181\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\012\122\u0202\264\u01fb\316" +
     "\u017a\327\u020c\001\001\000\002\001\001\000\002\001\001" +
-    "\000\002\001\001\000\114\026\u016e\027\202\030\224\044" +
+    "\000\002\001\001\000\114\026\u016e\027\202\030\225\044" +
     "\u0162\045\u0210\046\u016c\047\u016a\050\u0188\051\u0173\052\u0170" +
-    "\056\u0177\061\u0179\064\u0185\067\u016b\071\u0165\103\221\104" +
+    "\056\u0177\061\u0179\064\u0185\067\u016b\071\u0165\103\220\104" +
     "\u0180\122\u018a\123\u018b\135\u0171\137\u0169\150\u0178\153\u018c" +
-    "\157\u0164\162\u0187\163\205\164\176\170\u018d\262\u0189\263" +
+    "\157\u0164\162\u0187\163\205\164\175\173\u018d\262\u0189\263" +
     "\u0167\264\u0166\265\u016d\316\u017a\321\u0172\322\u016f\323\u0161" +
-    "\324\u0181\001\001\000\112\026\u016e\027\202\030\224\044" +
+    "\324\u0181\001\001\000\112\026\u016e\027\202\030\225\044" +
     "\u0162\046\u016c\047\u016a\050\u0188\051\u0173\052\u0170\056\u0177" +
-    "\061\u0179\064\u0185\067\u016b\071\u0165\103\221\104\u0180\122" +
+    "\061\u0179\064\u0185\067\u016b\071\u0165\103\220\104\u0180\122" +
     "\u018a\123\u018b\135\u0171\137\u0169\150\u01a0\153\u018c\157\u0164" +
-    "\162\u0187\163\205\164\176\170\u018d\262\u0189\263\u0167\264" +
+    "\162\u0187\163\205\164\175\173\u018d\262\u0189\263\u0167\264" +
     "\u0166\265\u016d\316\u017a\321\u0172\322\u016f\323\u0161\324\u0181" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
-    "\001\000\002\001\001\000\114\026\u016e\027\202\030\224" +
+    "\001\000\002\001\001\000\114\026\u016e\027\202\030\225" +
     "\044\u0162\045\u021c\046\u016c\047\u016a\050\u0188\051\u0173\052" +
-    "\u0170\056\u0177\061\u0179\064\u0185\067\u016b\071\u0165\103\221" +
+    "\u0170\056\u0177\061\u0179\064\u0185\067\u016b\071\u0165\103\220" +
     "\104\u0180\122\u018a\123\u018b\135\u0171\137\u0169\150\u0178\153" +
-    "\u018c\157\u0164\162\u0187\163\205\164\176\170\u018d\262\u0189" +
+    "\u018c\157\u0164\162\u0187\163\205\164\175\173\u018d\262\u0189" +
     "\263\u0167\264\u0166\265\u016d\316\u017a\321\u0172\322\u016f\323" +
     "\u0161\324\u0181\001\001\000\004\122\u0217\001\001\000\116" +
-    "\026\u016e\027\202\030\224\044\u0162\045\u0205\046\u016c\047" +
+    "\026\u016e\027\202\030\225\044\u0162\045\u0205\046\u016c\047" +
     "\u016a\050\u0188\051\u0173\052\u0170\056\u0177\061\u0179\064\u0185" +
-    "\067\u016b\071\u0165\103\221\104\u0180\122\u018a\123\u018b\135" +
+    "\067\u016b\071\u0165\103\220\104\u0180\122\u018a\123\u018b\135" +
     "\u0171\137\u0169\150\u0178\153\u018c\157\u0164\162\u0187\163\205" +
-    "\164\176\170\u018d\262\u0189\263\u0167\264\u0166\265\u016d\316" +
+    "\164\175\173\u018d\262\u0189\263\u0167\264\u0166\265\u016d\316" +
     "\u017a\321\u0172\322\u016f\323\u0161\324\u0181\330\u0218\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\002\001\001\000\112\026\u016e\027\202\030\224\044\u0162" +
+    "\002\001\001\000\112\026\u016e\027\202\030\225\044\u0162" +
     "\046\u016c\047\u016a\050\u0188\051\u0173\052\u0170\056\u0177\061" +
-    "\u0179\064\u0185\067\u016b\071\u0165\103\221\104\u0180\122\u018a" +
+    "\u0179\064\u0185\067\u016b\071\u0165\103\220\104\u0180\122\u018a" +
     "\123\u018b\135\u0171\137\u0169\150\u01a0\153\u018c\157\u0164\162" +
-    "\u0187\163\205\164\176\170\u018d\262\u0189\263\u0167\264\u0166" +
+    "\u0187\163\205\164\175\173\u018d\262\u0189\263\u0167\264\u0166" +
     "\265\u016d\316\u017a\321\u0172\322\u016f\323\u0161\324\u0181\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
-    "\000\002\001\001\000\050\026\231\027\202\030\224\031" +
+    "\000\002\001\001\000\050\026\231\027\202\030\225\031" +
     "\u0222\032\201\033\213\034\211\035\210\036\217\042\222" +
-    "\044\225\103\221\154\220\155\215\160\227\163\205\164" +
-    "\176\255\207\261\200\001\001\000\006\037\322\257\316" +
-    "\001\001\000\002\001\001\000\006\037\322\257\316\001" +
-    "\001\000\004\173\u0226\001\001\000\006\057\u0227\170\u014e" +
+    "\044\224\103\220\154\221\155\215\160\227\163\205\164" +
+    "\175\257\207\261\200\001\001\000\006\037\322\170\316" +
+    "\001\001\000\002\001\001\000\006\037\322\170\316\001" +
+    "\001\000\004\176\u0226\001\001\000\006\057\u0227\173\u014e" +
     "\001\001\000\004\060\u0228\001\001\000\002\001\001\000" +
-    "\060\026\246\027\202\030\224\031\345\032\201\033\256" +
-    "\034\211\035\210\036\217\042\222\044\225\103\221\154" +
-    "\220\155\215\160\227\161\u022d\163\205\164\176\167\244" +
-    "\245\251\246\343\255\207\261\200\001\001\000\002\001" +
+    "\060\026\246\027\202\030\225\031\345\032\201\033\256" +
+    "\034\211\035\210\036\217\042\222\044\224\103\220\154" +
+    "\221\155\215\160\227\161\u022d\163\205\164\175\167\244" +
+    "\250\251\251\343\257\207\261\200\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
-    "\000\114\026\u016e\027\202\030\224\044\u0162\045\u022f\046" +
+    "\000\114\026\u016e\027\202\030\225\044\u0162\045\u022f\046" +
     "\u016c\047\u016a\050\u0188\051\u0173\052\u0170\056\u0177\061\u0179" +
-    "\064\u0185\067\u016b\071\u0165\103\221\104\u0180\122\u018a\123" +
+    "\064\u0185\067\u016b\071\u0165\103\220\104\u0180\122\u018a\123" +
     "\u018b\135\u0171\137\u0169\150\u0178\153\u018c\157\u0164\162\u0187" +
-    "\163\205\164\176\170\u018d\262\u0189\263\u0167\264\u0166\265" +
+    "\163\205\164\175\173\u018d\262\u0189\263\u0167\264\u0166\265" +
     "\u016d\316\u017a\321\u0172\322\u016f\323\u0161\324\u0181\001\001" +
-    "\000\112\026\u016e\027\202\030\224\044\u0162\046\u016c\047" +
+    "\000\112\026\u016e\027\202\030\225\044\u0162\046\u016c\047" +
     "\u016a\050\u0188\051\u0173\052\u0170\056\u0177\061\u0179\064\u0185" +
-    "\067\u016b\071\u0165\103\221\104\u0180\122\u018a\123\u018b\135" +
+    "\067\u016b\071\u0165\103\220\104\u0180\122\u018a\123\u018b\135" +
     "\u0171\137\u0169\150\u01a0\153\u018c\157\u0164\162\u0187\163\205" +
-    "\164\176\170\u018d\262\u0189\263\u0167\264\u0166\265\u016d\316" +
+    "\164\175\173\u018d\262\u0189\263\u0167\264\u0166\265\u016d\316" +
     "\u017a\321\u0172\322\u016f\323\u0161\324\u0181\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\006\076\u0237" +
     "\077\u0127\001\001\000\002\001\001\000\014\006\102\023" +
     "\u012b\075\u0129\100\u012a\266\u0239\001\001\000\050\026\u012d" +
-    "\027\202\030\224\033\310\034\211\035\210\036\217\042" +
-    "\222\044\225\103\221\154\220\155\215\160\227\163\205" +
-    "\164\176\166\u023a\167\u012c\255\207\261\200\001\001\000" +
+    "\027\202\030\225\033\310\034\211\035\210\036\217\042" +
+    "\222\044\224\103\220\154\221\155\215\160\227\163\205" +
+    "\164\175\166\u023a\167\u012c\257\207\261\200\001\001\000" +
     "\002\001\001\000\006\076\u023c\077\u0127\001\001\000\002" +
-    "\001\001\000\052\026\231\027\202\030\224\031\u019b\032" +
-    "\201\033\213\034\211\035\210\036\217\042\222\044\225" +
-    "\054\u023e\103\221\154\220\155\215\160\227\163\205\164" +
-    "\176\255\207\261\200\001\001\000\004\315\u0241\001\001" +
+    "\001\001\000\052\026\231\027\202\030\225\031\u019b\032" +
+    "\201\033\213\034\211\035\210\036\217\042\222\044\224" +
+    "\054\u023e\103\220\154\221\155\215\160\227\163\205\164" +
+    "\175\257\207\261\200\001\001\000\004\315\u0241\001\001" +
     "\000\002\001\001\000\122\002\124\003\062\004\054\005" +
     "\101\006\102\011\105\012\u0242\013\066\016\052\020\123" +
     "\022\060\023\061\025\117\072\076\073\023\074\072\105" +
     "\070\106\036\107\071\110\103\114\107\117\115\120\077" +
-    "\121\106\134\113\136\064\144\065\170\122\174\100\175" +
-    "\111\176\056\250\063\251\110\272\024\274\017\275\121" +
+    "\121\106\134\113\136\064\144\065\173\122\177\100\200" +
+    "\111\201\056\253\063\254\110\272\024\274\017\275\121" +
     "\302\053\344\112\345\114\346\055\001\001\000\002\001" +
     "\001\000\004\066\u0243\001\001\000\002\001\001\000\014" +
     "\027\045\102\u0144\103\u0146\140\u0145\152\u0245\001\001\000" +
     "\002\001\001\000\002\001\001\000\052\026\231\027\202" +
-    "\030\224\031\u019b\032\201\033\213\034\211\035\210\036" +
-    "\217\042\222\044\225\054\u0248\103\221\154\220\155\215" +
-    "\160\227\163\205\164\176\255\207\261\200\001\001\000" +
+    "\030\225\031\u019b\032\201\033\213\034\211\035\210\036" +
+    "\217\042\222\044\224\054\u0248\103\220\154\221\155\215" +
+    "\160\227\163\205\164\175\257\207\261\200\001\001\000" +
     "\004\315\u0249\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\016\026\u0256\027" +
-    "\202\030\224\103\221\163\205\164\176\001\001\000\124" +
+    "\202\030\225\103\220\163\205\164\175\001\001\000\124" +
     "\002\124\003\062\004\054\005\101\006\102\011\105\012" +
     "\u015a\013\066\016\052\020\123\022\060\023\061\025\117" +
     "\072\076\073\023\074\072\105\070\106\036\107\071\110" +
     "\103\114\107\117\115\120\077\121\106\134\113\136\064" +
-    "\144\065\170\122\174\100\175\111\176\056\250\063\251" +
+    "\144\065\173\122\177\100\200\111\201\056\253\063\254" +
     "\110\272\024\274\017\275\121\302\053\343\u0250\344\112" +
     "\345\114\346\055\001\001\000\002\001\001\000\002\001" +
-    "\001\000\002\001\001\000\016\026\u0253\027\202\030\224" +
-    "\103\221\163\205\164\176\001\001\000\002\001\001\000" +
+    "\001\000\002\001\001\000\016\026\u0253\027\202\030\225" +
+    "\103\220\163\205\164\175\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\020\021\u025a\026\u011b\027" +
-    "\202\030\224\103\221\163\205\164\176\001\001\000\002" +
+    "\202\030\225\103\220\163\205\164\175\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\010\027\045\140\u025f\141\u0260\001\001\000\002" +
-    "\001\001\000\002\001\001\000\002\001\001\000\006\177" +
-    "\u0263\200\140\001\001\000\004\145\u0264\001\001\000\002" +
-    "\001\001\000\042\017\u026c\111\u0272\112\u0268\201\u0267\202" +
-    "\u0271\203\u0275\204\u027b\205\u026f\206\u026b\207\u0277\211\u027a" +
-    "\217\u026d\221\u0270\222\u0276\223\u027d\224\u027e\001\001\000" +
-    "\050\026\231\027\202\030\224\031\u02e0\032\201\033\213" +
-    "\034\211\035\210\036\217\042\222\044\225\103\221\154" +
-    "\220\155\215\160\227\163\205\164\176\255\207\261\200" +
+    "\001\001\000\002\001\001\000\002\001\001\000\006\202" +
+    "\u0263\203\140\001\001\000\004\145\u0264\001\001\000\002" +
+    "\001\001\000\042\017\u026c\111\u0272\112\u0268\204\u0267\205" +
+    "\u0271\206\u0275\207\u027b\210\u026f\211\u026b\212\u0277\214\u027a" +
+    "\222\u026d\224\u0270\225\u0276\226\u027d\227\u027e\001\001\000" +
+    "\050\026\231\027\202\030\225\031\u02e0\032\201\033\213" +
+    "\034\211\035\210\036\217\042\222\044\224\103\220\154" +
+    "\221\155\215\160\227\163\205\164\175\257\207\261\200" +
     "\001\001\000\002\001\001\000\004\113\u02dd\001\001\000" +
-    "\002\001\001\000\022\021\u02d3\026\u011b\027\202\030\224" +
-    "\103\221\163\205\164\176\247\u02d0\001\001\000\002\001" +
-    "\001\000\002\001\001\000\002\001\001\000\006\215\u02cb" +
-    "\216\u02ca\001\001\000\002\001\001\000\002\001\001\000" +
+    "\002\001\001\000\022\021\u02d3\026\u011b\027\202\030\225" +
+    "\103\220\163\205\164\175\252\u02d0\001\001\000\002\001" +
+    "\001\000\002\001\001\000\002\001\001\000\006\220\u02cb" +
+    "\221\u02ca\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\050\026\231\027\202" +
-    "\030\224\031\u02c3\032\201\033\213\034\211\035\210\036" +
-    "\217\042\222\044\225\103\221\154\220\155\215\160\227" +
-    "\163\205\164\176\255\207\261\200\001\001\000\050\026" +
-    "\231\027\202\030\224\031\u02c0\032\201\033\213\034\211" +
-    "\035\210\036\217\042\222\044\225\103\221\154\220\155" +
-    "\215\160\227\163\205\164\176\255\207\261\200\001\001" +
+    "\030\225\031\u02c3\032\201\033\213\034\211\035\210\036" +
+    "\217\042\222\044\224\103\220\154\221\155\215\160\227" +
+    "\163\205\164\175\257\207\261\200\001\001\000\050\026" +
+    "\231\027\202\030\225\031\u02c0\032\201\033\213\034\211" +
+    "\035\210\036\217\042\222\044\224\103\220\154\221\155" +
+    "\215\160\227\163\205\164\175\257\207\261\200\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\002\001\001\000\020\021\u0294\026\u011b\027\202\030\224" +
-    "\103\221\163\205\164\176\001\001\000\002\001\001\000" +
-    "\002\001\001\000\004\231\u027f\001\001\000\002\001\001" +
+    "\002\001\001\000\020\021\u0294\026\u011b\027\202\030\225" +
+    "\103\220\163\205\164\175\001\001\000\002\001\001\000" +
+    "\002\001\001\000\004\234\u027f\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\056\026\u0285\027" +
-    "\202\030\224\033\310\034\211\035\210\036\217\042\222" +
-    "\044\225\103\221\154\220\155\215\160\227\163\205\164" +
-    "\176\166\u0284\167\u012c\225\u0281\226\u0282\232\u0283\255\207" +
+    "\202\030\225\033\310\034\211\035\210\036\217\042\222" +
+    "\044\224\103\220\154\221\155\215\160\227\163\205\164" +
+    "\175\166\u0284\167\u012c\230\u0281\231\u0282\235\u0283\257\207" +
     "\261\200\001\001\000\002\001\001\000\002\001\001\000" +
-    "\002\001\001\000\002\001\001\000\006\211\u0124\213\u0136" +
-    "\001\001\000\046\026\337\027\202\030\224\033\310\034" +
-    "\211\035\210\036\217\042\222\044\225\103\221\154\220" +
-    "\155\215\160\227\163\205\164\176\167\336\255\207\261" +
+    "\002\001\001\000\002\001\001\000\006\214\u0124\216\u0136" +
+    "\001\001\000\046\026\337\027\202\030\225\033\310\034" +
+    "\211\035\210\036\217\042\222\044\224\103\220\154\221" +
+    "\155\215\160\227\163\205\164\175\167\336\257\207\261" +
     "\200\001\001\000\002\001\001\000\050\026\u012d\027\202" +
-    "\030\224\033\310\034\211\035\210\036\217\042\222\044" +
-    "\225\103\221\154\220\155\215\160\227\163\205\164\176" +
-    "\166\u028a\167\u012c\255\207\261\200\001\001\000\002\001" +
-    "\001\000\002\001\001\000\020\026\u028f\027\202\030\224" +
-    "\103\221\163\205\164\176\226\u0290\001\001\000\002\001" +
-    "\001\000\006\227\u028e\230\u0117\001\001\000\002\001\001" +
+    "\030\225\033\310\034\211\035\210\036\217\042\222\044" +
+    "\224\103\220\154\221\155\215\160\227\163\205\164\175" +
+    "\166\u028a\167\u012c\257\207\261\200\001\001\000\002\001" +
+    "\001\000\002\001\001\000\020\026\u028f\027\202\030\225" +
+    "\103\220\163\205\164\175\231\u0290\001\001\000\002\001" +
+    "\001\000\006\232\u028e\233\u0117\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\006\227\u0293\230\u0117\001\001\000\002\001\001\000\002" +
-    "\001\001\000\004\214\u0297\001\001\000\004\173\u029b\001" +
+    "\006\232\u0293\233\u0117\001\001\000\002\001\001\000\002" +
+    "\001\001\000\004\217\u0297\001\001\000\004\176\u029b\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
-    "\000\002\001\001\000\020\006\102\023\u0110\170\u014e\233" +
-    "\u029e\234\u029d\235\u02a0\237\u02a1\001\001\000\002\001\001" +
-    "\000\006\173\u02b4\236\u02b3\001\001\000\002\001\001\000" +
-    "\004\027\u02a3\001\001\000\002\001\001\000\004\173\u02a2" +
-    "\001\001\000\004\170\u014e\001\001\000\002\001\001\000" +
-    "\004\173\u02a5\001\001\000\010\170\u014e\243\u02a8\244\u02a6" +
+    "\000\002\001\001\000\020\006\102\023\u0110\173\u014e\236" +
+    "\u029e\237\u029d\240\u02a0\242\u02a1\001\001\000\002\001\001" +
+    "\000\006\176\u02b4\241\u02b3\001\001\000\002\001\001\000" +
+    "\004\027\u02a3\001\001\000\002\001\001\000\004\176\u02a2" +
+    "\001\001\000\004\173\u014e\001\001\000\002\001\001\000" +
+    "\004\176\u02a5\001\001\000\010\173\u014e\246\u02a8\247\u02a6" +
     "\001\001\000\002\001\001\000\060\026\246\027\202\030" +
-    "\224\031\345\032\201\033\256\034\211\035\210\036\217" +
-    "\042\222\044\225\103\221\154\220\155\215\160\227\161" +
-    "\u02ad\163\205\164\176\167\244\245\251\246\343\255\207" +
-    "\261\200\001\001\000\004\244\u02a9\001\001\000\002\001" +
+    "\225\031\345\032\201\033\256\034\211\035\210\036\217" +
+    "\042\222\044\224\103\220\154\221\155\215\160\227\161" +
+    "\u02ad\163\205\164\175\167\244\250\251\251\343\257\207" +
+    "\261\200\001\001\000\004\247\u02a9\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
-    "\000\002\001\001\000\004\173\u02af\001\001\000\020\006" +
-    "\102\023\u0110\170\u014e\233\u02b0\234\u029d\235\u02a0\237\u02a1" +
+    "\000\002\001\001\000\004\176\u02af\001\001\000\020\006" +
+    "\102\023\u0110\173\u014e\236\u02b0\237\u029d\240\u02a0\242\u02a1" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
-    "\001\000\002\001\001\000\014\006\102\023\u0110\170\u014e" +
-    "\235\u02b5\237\u02b6\001\001\000\002\001\001\000\004\173" +
-    "\u02b7\001\001\000\004\170\u014e\001\001\000\004\173\u02b9" +
-    "\001\001\000\004\170\u014e\001\001\000\002\001\001\000" +
-    "\020\021\u02bc\026\u011b\027\202\030\224\103\221\163\205" +
-    "\164\176\001\001\000\002\001\001\000\004\214\u02be\001" +
+    "\001\000\002\001\001\000\014\006\102\023\u0110\173\u014e" +
+    "\240\u02b5\242\u02b6\001\001\000\002\001\001\000\004\176" +
+    "\u02b7\001\001\000\004\173\u014e\001\001\000\004\176\u02b9" +
+    "\001\001\000\004\173\u014e\001\001\000\002\001\001\000" +
+    "\020\021\u02bc\026\u011b\027\202\030\225\103\220\163\205" +
+    "\164\175\001\001\000\002\001\001\000\004\217\u02be\001" +
     "\001\000\002\001\001\000\002\001\001\000\014\037\322" +
-    "\211\u027a\217\u02c2\220\u02c1\257\316\001\001\000\002\001" +
-    "\001\000\002\001\001\000\012\037\322\211\u027a\217\u02c4" +
-    "\257\316\001\001\000\002\001\001\000\050\026\231\027" +
-    "\202\030\224\031\u02c6\032\201\033\213\034\211\035\210" +
-    "\036\217\042\222\044\225\103\221\154\220\155\215\160" +
-    "\227\163\205\164\176\255\207\261\200\001\001\000\014" +
-    "\037\322\211\u027a\217\u02c2\220\u02c7\257\316\001\001\000" +
+    "\170\316\214\u027a\222\u02c2\223\u02c1\001\001\000\002\001" +
+    "\001\000\002\001\001\000\012\037\322\170\316\214\u027a" +
+    "\222\u02c4\001\001\000\002\001\001\000\050\026\231\027" +
+    "\202\030\225\031\u02c6\032\201\033\213\034\211\035\210" +
+    "\036\217\042\222\044\224\103\220\154\221\155\215\160" +
+    "\227\163\205\164\175\257\207\261\200\001\001\000\014" +
+    "\037\322\170\316\214\u027a\222\u02c2\223\u02c7\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
-    "\001\001\000\002\001\001\000\004\216\u02ce\001\001\000" +
+    "\001\001\000\002\001\001\000\004\221\u02ce\001\001\000" +
     "\002\001\001\000\002\001\001\000\020\021\u02db\026\u011b" +
-    "\027\202\030\224\103\221\163\205\164\176\001\001\000" +
-    "\002\001\001\000\020\021\u02d4\026\u011b\027\202\030\224" +
-    "\103\221\163\205\164\176\001\001\000\002\001\001\000" +
+    "\027\202\030\225\103\220\163\205\164\175\001\001\000" +
+    "\002\001\001\000\020\021\u02d4\026\u011b\027\202\030\225" +
+    "\103\220\163\205\164\175\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\006\076\u02da\077\u0127" +
     "\001\001\000\006\076\u02d7\077\u0127\001\001\000\002\001" +
     "\001\000\006\027\160\146\u02d9\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\004\214\u02de\001\001\000\002\001\001\000\002\001\001" +
-    "\000\006\037\322\257\316\001\001\000\002\001\001\000" +
-    "\002\001\001\000\050\026\231\027\202\030\224\031\u02e5" +
+    "\004\217\u02de\001\001\000\002\001\001\000\002\001\001" +
+    "\000\006\037\322\170\316\001\001\000\002\001\001\000" +
+    "\002\001\001\000\050\026\231\027\202\030\225\031\u02e5" +
     "\032\201\033\213\034\211\035\210\036\217\042\222\044" +
-    "\225\103\221\154\220\155\215\160\227\163\205\164\176" +
-    "\255\207\261\200\001\001\000\050\026\231\027\202\030" +
-    "\224\031\u02f7\032\201\033\213\034\211\035\210\036\217" +
-    "\042\222\044\225\103\221\154\220\155\215\160\227\163" +
-    "\205\164\176\255\207\261\200\001\001\000\006\037\322" +
-    "\257\316\001\001\000\004\347\u02e8\001\001\000\002\001" +
+    "\224\103\220\154\221\155\215\160\227\163\205\164\175" +
+    "\257\207\261\200\001\001\000\050\026\231\027\202\030" +
+    "\225\031\u02f7\032\201\033\213\034\211\035\210\036\217" +
+    "\042\222\044\224\103\220\154\221\155\215\160\227\163" +
+    "\205\164\175\257\207\261\200\001\001\000\006\037\322" +
+    "\170\316\001\001\000\004\347\u02e8\001\001\000\002\001" +
     "\001\000\004\350\u02e9\001\001\000\006\027\160\146\u02eb" +
     "\001\001\000\002\001\001\000\002\001\001\000\050\026" +
-    "\231\027\202\030\224\031\u02ed\032\201\033\213\034\211" +
-    "\035\210\036\217\042\222\044\225\103\221\154\220\155" +
-    "\215\160\227\163\205\164\176\255\207\261\200\001\001" +
-    "\000\006\037\322\257\316\001\001\000\046\026\337\027" +
-    "\202\030\224\033\310\034\211\035\210\036\217\042\222" +
-    "\044\225\103\221\154\220\155\215\160\227\163\205\164" +
-    "\176\167\u02ef\255\207\261\200\001\001\000\002\001\001" +
+    "\231\027\202\030\225\031\u02ed\032\201\033\213\034\211" +
+    "\035\210\036\217\042\222\044\224\103\220\154\221\155" +
+    "\215\160\227\163\205\164\175\257\207\261\200\001\001" +
+    "\000\006\037\322\170\316\001\001\000\046\026\337\027" +
+    "\202\030\225\033\310\034\211\035\210\036\217\042\222" +
+    "\044\224\103\220\154\221\155\215\160\227\163\205\164" +
+    "\175\167\u02ef\257\207\261\200\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\050\026\231\027\202\030\224\031\u02f4\032\201\033\213" +
-    "\034\211\035\210\036\217\042\222\044\225\103\221\154" +
-    "\220\155\215\160\227\163\205\164\176\255\207\261\200" +
-    "\001\001\000\006\037\322\257\316\001\001\000\002\001" +
-    "\001\000\002\001\001\000\006\037\322\257\316\001\001" +
+    "\050\026\231\027\202\030\225\031\u02f4\032\201\033\213" +
+    "\034\211\035\210\036\217\042\222\044\224\103\220\154" +
+    "\221\155\215\160\227\163\205\164\175\257\207\261\200" +
+    "\001\001\000\006\037\322\170\316\001\001\000\002\001" +
+    "\001\000\002\001\001\000\006\037\322\170\316\001\001" +
     "\000\002\001\001\000\002\001\001\000\004\024\u02fe\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
-    "\000\030\021\u0300\026\u011b\027\202\030\224\103\221\142" +
-    "\u02ff\163\205\164\176\204\u0301\223\u027d\224\u027e\001\001" +
+    "\000\030\021\u0300\026\u011b\027\202\030\225\103\220\142" +
+    "\u02ff\163\205\164\175\207\u0301\226\u027d\227\u027e\001\001" +
     "\000\004\143\u0305\001\001\000\002\001\001\000\002\001" +
-    "\001\000\016\026\u0303\027\202\030\224\103\221\163\205" +
-    "\164\176\001\001\000\002\001\001\000\002\001\001\000" +
+    "\001\000\016\026\u0303\027\202\030\225\103\220\163\205" +
+    "\164\175\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\050\026\231\027\202" +
-    "\030\224\031\u0308\032\201\033\213\034\211\035\210\036" +
-    "\217\042\222\044\225\103\221\154\220\155\215\160\227" +
-    "\163\205\164\176\255\207\261\200\001\001\000\006\037" +
-    "\322\257\316\001\001\000\002\001\001\000\002\001\001" +
-    "\000\002\001\001\000\016\026\u030d\027\202\030\224\103" +
-    "\221\163\205\164\176\001\001\000\002\001\001\000\002" +
+    "\030\225\031\u0308\032\201\033\213\034\211\035\210\036" +
+    "\217\042\222\044\224\103\220\154\221\155\215\160\227" +
+    "\163\205\164\175\257\207\261\200\001\001\000\006\037" +
+    "\322\170\316\001\001\000\002\001\001\000\002\001\001" +
+    "\000\002\001\001\000\016\026\u030d\027\202\030\225\103" +
+    "\220\163\205\164\175\001\001\000\002\001\001\000\002" +
     "\001\001\000\004\027\u0324\001\001\000\004\276\u0323\001" +
-    "\001\000\004\027\u0312\001\001\000\006\177\u0313\200\140" +
-    "\001\001\000\004\276\u0315\001\001\000\006\173\u0317\277" +
+    "\001\000\004\027\u0312\001\001\000\006\202\u0313\203\140" +
+    "\001\001\000\004\276\u0315\001\001\000\006\176\u0317\277" +
     "\u0316\001\001\000\002\001\001\000\006\300\u0319\310\u0318" +
-    "\001\001\000\004\170\u014e\001\001\000\004\173\u0322\001" +
-    "\001\000\014\250\u031a\301\u031b\344\112\345\114\346\055" +
-    "\001\001\000\004\173\u0321\001\001\000\002\001\001\000" +
-    "\006\173\u0317\277\u031d\001\001\000\006\300\u031e\310\u0318" +
-    "\001\001\000\012\250\u031a\344\112\345\114\346\055\001" +
+    "\001\001\000\004\173\u014e\001\001\000\004\176\u0322\001" +
+    "\001\000\014\253\u031a\301\u031b\344\112\345\114\346\055" +
+    "\001\001\000\004\176\u0321\001\001\000\002\001\001\000" +
+    "\006\176\u0317\277\u031d\001\001\000\006\300\u031e\310\u0318" +
+    "\001\001\000\012\253\u031a\344\112\345\114\346\055\001" +
     "\001\000\014\027\045\102\u0144\103\u0146\140\u0145\152\u0320" +
-    "\001\001\000\002\001\001\000\004\170\u014e\001\001\000" +
-    "\004\170\u014e\001\001\000\002\001\001\000\002\001\001" +
+    "\001\001\000\002\001\001\000\004\173\u014e\001\001\000" +
+    "\004\173\u014e\001\001\000\002\001\001\000\002\001\001" +
     "\000\122\002\124\003\062\004\054\005\101\006\102\011" +
     "\105\012\u0327\013\066\016\052\020\123\022\060\023\061" +
     "\025\117\072\076\073\023\074\072\105\070\106\036\107" +
     "\071\110\103\114\107\117\115\120\077\121\106\134\113" +
-    "\136\064\144\065\170\122\174\100\175\111\176\056\250" +
-    "\063\251\110\272\024\274\017\275\121\302\053\344\112" +
+    "\136\064\144\065\173\122\177\100\200\111\201\056\253" +
+    "\063\254\110\272\024\274\017\275\121\302\053\344\112" +
     "\345\114\346\055\001\001\000\002\001\001\000\004\066" +
     "\u0328\001\001\000\002\001\001\000\014\027\045\102\u0144" +
     "\103\u0146\140\u0145\152\u032a\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\016" +
-    "\026\u0348\027\202\030\224\103\221\163\205\164\176\001" +
+    "\026\u0348\027\202\030\225\103\220\163\205\164\175\001" +
     "\001\000\110\002\124\003\062\004\054\005\101\006\102" +
     "\007\u0333\010\u0337\011\u0334\020\123\022\060\023\061\025" +
     "\117\072\u0332\073\023\105\070\106\036\114\107\117\115" +
-    "\120\077\134\113\136\064\144\065\170\122\174\100\175" +
-    "\111\176\056\250\063\272\024\274\017\275\121\302\053" +
+    "\120\077\134\113\136\064\144\065\173\122\177\100\200" +
+    "\111\201\056\253\063\272\024\274\017\275\121\302\053" +
     "\343\u0331\344\112\345\114\346\055\001\001\000\004\027" +
     "\u0310\001\001\000\002\001\001\000\002\001\001\000\004" +
     "\014\u033f\001\001\000\002\001\001\000\002\001\001\000" +
     "\006\027\045\140\042\001\001\000\102\002\124\003\062" +
     "\004\054\005\101\006\102\011\u0338\020\123\022\060\023" +
     "\061\025\117\072\u0332\073\023\105\070\106\036\114\107" +
-    "\117\115\120\077\134\113\136\064\144\065\170\122\174" +
-    "\100\175\111\176\056\250\063\272\024\274\017\275\121" +
+    "\117\115\120\077\134\113\136\064\144\065\173\122\177" +
+    "\100\200\111\201\056\253\063\272\024\274\017\275\121" +
     "\302\053\344\112\345\114\346\055\001\001\000\002\001" +
     "\001\000\006\027\045\140\u033a\001\001\000\002\001\001" +
     "\000\002\001\001\000\004\027\u033d\001\001\000\002\001" +
@@ -2559,7 +2559,7 @@
     "\003\062\004\054\005\101\006\102\007\u0341\010\u0337\011" +
     "\u0334\020\123\022\060\023\061\025\117\072\u0332\073\023" +
     "\105\070\106\036\114\107\117\115\120\077\134\113\136" +
-    "\064\144\065\170\122\174\100\175\111\176\056\250\063" +
+    "\064\144\065\173\122\177\100\200\111\201\056\253\063" +
     "\272\024\274\017\275\121\302\053\344\112\345\114\346" +
     "\055\001\001\000\002\001\001\000\010\027\045\140\u025f" +
     "\141\u0343\001\001\000\002\001\001\000\004\343\u0250\001" +
@@ -2569,98 +2569,98 @@
     "\013\066\016\052\020\123\022\060\023\061\025\117\072" +
     "\076\073\023\074\072\105\070\106\036\107\071\110\103" +
     "\114\107\117\115\120\077\121\106\134\113\136\064\144" +
-    "\065\170\122\174\100\175\111\176\056\250\063\251\110" +
+    "\065\173\122\177\100\200\111\201\056\253\063\254\110" +
     "\272\024\274\017\275\121\302\053\343\u0250\344\112\345" +
-    "\114\346\055\001\001\000\004\170\u014e\001\001\000\006" +
+    "\114\346\055\001\001\000\004\173\u014e\001\001\000\006" +
     "\076\u034d\077\u0127\001\001\000\002\001\001\000\016\026" +
-    "\u034f\027\202\030\224\103\221\163\205\164\176\001\001" +
+    "\u034f\027\202\030\225\103\220\163\205\164\175\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
     "\006\027\045\140\u0353\001\001\000\002\001\001\000\016" +
     "\015\u035b\016\u0358\072\u035d\074\u0356\107\u035c\121\u0359\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\004" +
-    "\027\u035f\001\001\000\002\001\001\000\006\173\u014d\312" +
+    "\027\u035f\001\001\000\002\001\001\000\006\176\u014d\312" +
     "\u014c\001\001\000\004\027\u0362\001\001\000\002\001\001" +
     "\000\122\002\124\003\062\004\054\005\101\006\102\011" +
     "\105\012\u0327\013\066\016\052\020\123\022\060\023\061" +
     "\025\117\072\076\073\023\074\072\105\070\106\036\107" +
     "\071\110\103\114\107\117\115\120\077\121\106\134\113" +
-    "\136\064\144\065\170\122\174\100\175\111\176\056\250" +
-    "\063\251\110\272\024\274\017\275\121\302\053\344\112" +
+    "\136\064\144\065\173\122\177\100\200\111\201\056\253" +
+    "\063\254\110\272\024\274\017\275\121\302\053\344\112" +
     "\345\114\346\055\001\001\000\006\076\u0365\077\u0127\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
     "\000\006\027\045\140\u03b2\001\001\000\002\001\001\000" +
     "\004\027\u038c\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\016\026\u0370\027" +
-    "\202\030\224\103\221\163\205\164\176\001\001\000\002" +
+    "\202\030\225\103\220\163\205\164\175\001\001\000\002" +
     "\001\001\000\002\001\001\000\004\027\u0387\001\001\000" +
     "\004\027\u037e\001\001\000\012\027\045\102\u0375\103\u0146" +
     "\140\u0145\001\001\000\006\076\u0376\077\u0127\001\001\000" +
-    "\002\001\001\000\016\026\u0378\027\202\030\224\103\221" +
-    "\163\205\164\176\001\001\000\004\341\u037a\001\001\000" +
-    "\016\026\u037d\027\202\030\224\103\221\163\205\164\176" +
+    "\002\001\001\000\016\026\u0378\027\202\030\225\103\220" +
+    "\163\205\164\175\001\001\000\004\341\u037a\001\001\000" +
+    "\016\026\u037d\027\202\030\225\103\220\163\205\164\175" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
-    "\000\016\026\u0381\027\202\030\224\103\221\163\205\164" +
-    "\176\001\001\000\002\001\001\000\002\001\001\000\066" +
-    "\026\246\027\202\030\224\031\247\032\201\033\256\034" +
-    "\211\035\210\036\217\042\222\044\225\103\221\154\220" +
-    "\155\215\160\227\161\245\163\205\164\176\165\255\167" +
-    "\244\245\251\246\243\253\254\254\253\255\207\261\200" +
+    "\000\016\026\u0381\027\202\030\225\103\220\163\205\164" +
+    "\175\001\001\000\002\001\001\000\002\001\001\000\066" +
+    "\026\246\027\202\030\225\031\247\032\201\033\256\034" +
+    "\211\035\210\036\217\042\222\044\224\103\220\154\221" +
+    "\155\215\160\227\161\245\163\205\164\175\165\255\167" +
+    "\244\250\251\251\243\255\254\256\253\257\207\261\200" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\006\076\u0388\077\u0127\001\001\000\004\341\u0389" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
-    "\001\000\006\200\u038d\337\u038f\001\001\000\002\001\001" +
-    "\000\012\006\102\023\143\240\146\241\147\001\001\000" +
-    "\002\001\001\000\022\111\u0397\112\u0393\204\u039d\206\u0395" +
-    "\223\u027d\224\u027e\340\u0394\342\u039a\001\001\000\002\001" +
+    "\001\000\006\203\u038d\337\u038f\001\001\000\002\001\001" +
+    "\000\012\006\102\023\143\243\146\244\147\001\001\000" +
+    "\002\001\001\000\022\111\u0397\112\u0393\207\u039d\211\u0395" +
+    "\226\u027d\227\u027e\340\u0394\342\u039a\001\001\000\002\001" +
     "\001\000\002\001\001\000\004\113\u03ac\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\020\021\u039e\026\u011b\027\202\030" +
-    "\224\103\221\163\205\164\176\001\001\000\002\001\001" +
+    "\225\103\220\163\205\164\175\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\020\021\u03a2\026\u011b\027\202\030\224\103\221\163\205" +
-    "\164\176\001\001\000\002\001\001\000\002\001\001\000" +
+    "\020\021\u03a2\026\u011b\027\202\030\225\103\220\163\205" +
+    "\164\175\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\016\026\u03b5\027\202" +
-    "\030\224\103\221\163\205\164\176\001\001\000\106\002" +
+    "\030\225\103\220\163\205\164\175\001\001\000\106\002" +
     "\124\003\062\004\054\005\101\006\102\007\u0333\010\u0337" +
     "\011\u0334\020\123\022\060\023\061\025\117\072\u0332\073" +
     "\023\105\070\106\036\114\107\117\115\120\077\134\113" +
-    "\136\064\144\065\170\122\174\100\175\111\176\056\250" +
+    "\136\064\144\065\173\122\177\100\200\111\201\056\253" +
     "\063\272\024\274\017\275\121\302\053\344\112\345\114" +
     "\346\055\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\020\026\u03ba\027\202" +
-    "\030\224\103\221\116\u03bb\163\205\164\176\001\001\000" +
+    "\030\225\103\220\116\u03bb\163\205\164\175\001\001\000" +
     "\002\001\001\000\002\001\001\000\016\026\u03be\027\202" +
-    "\030\224\103\221\163\205\164\176\001\001\000\002\001" +
-    "\001\000\002\001\001\000\016\026\u03c1\027\202\030\224" +
-    "\103\221\163\205\164\176\001\001\000\002\001\001\000" +
+    "\030\225\103\220\163\205\164\175\001\001\000\002\001" +
+    "\001\000\002\001\001\000\016\026\u03c1\027\202\030\225" +
+    "\103\220\163\205\164\175\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\006" +
     "\027\045\140\u03c6\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
     "\000\034\005\025\072\034\073\023\074\037\105\030\106" +
     "\036\107\022\120\032\130\u03cb\136\031\151\040\272\024" +
-    "\274\017\001\001\000\004\173\u03cc\001\001\000\004\170" +
-    "\u014e\001\001\000\004\170\u014e\001\001\000\002\001\001" +
+    "\274\017\001\001\000\004\176\u03cc\001\001\000\004\173" +
+    "\u014e\001\001\000\004\173\u014e\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\054\026\231\027" +
-    "\u03d4\030\224\031\u03d5\032\201\033\213\034\211\035\210" +
-    "\036\217\042\222\044\225\103\221\154\220\155\215\160" +
-    "\227\163\205\164\176\171\u03d3\172\u03d2\255\207\261\200" +
+    "\u03d4\030\225\031\u03d5\032\201\033\213\034\211\035\210" +
+    "\036\217\042\222\044\224\103\220\154\221\155\215\160" +
+    "\227\163\205\164\175\174\u03d3\175\u03d2\257\207\261\200" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
-    "\001\000\006\037\322\257\316\001\001\000\050\026\231" +
-    "\027\202\030\224\031\u03d7\032\201\033\213\034\211\035" +
-    "\210\036\217\042\222\044\225\103\221\154\220\155\215" +
-    "\160\227\163\205\164\176\255\207\261\200\001\001\000" +
-    "\006\037\322\257\316\001\001\000\052\026\231\027\u03d4" +
-    "\030\224\031\u03d5\032\201\033\213\034\211\035\210\036" +
-    "\217\042\222\044\225\103\221\154\220\155\215\160\227" +
-    "\163\205\164\176\172\u03db\255\207\261\200\001\001\000" +
+    "\001\000\006\037\322\170\316\001\001\000\050\026\231" +
+    "\027\202\030\225\031\u03d7\032\201\033\213\034\211\035" +
+    "\210\036\217\042\222\044\224\103\220\154\221\155\215" +
+    "\160\227\163\205\164\175\257\207\261\200\001\001\000" +
+    "\006\037\322\170\316\001\001\000\052\026\231\027\u03d4" +
+    "\030\225\031\u03d5\032\201\033\213\034\211\035\210\036" +
+    "\217\042\222\044\224\103\220\154\221\155\215\160\227" +
+    "\163\205\164\175\175\u03db\257\207\261\200\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
     "\001\001" });
 
@@ -2720,21 +2720,19 @@
         return this.errorHandler;
     }
 
-/*
-    public Dispatch createDispatch(VariableBase dispatcher, VariableBase property) {
+
+    public Dispatch createDispatch(NameBase dispatcher, NameBase property) {
         Dispatch dispatch = null;
 	if (property instanceof Variable) {
 	   dispatch = new FieldAccess(dispatcher.getStartOffset(), property.getEndOffset(), dispatcher, (Variable)property);
-	} else if (property instanceof FunctionInvocation) {
-	   dispatch = new MethodInvocation(dispatcher.getStartOffset(), property.getEndOffset(), dispatcher, (FunctionInvocation)property);
-	} else if (property instanceof ProcedureInvocation) {
-	   dispatch = new MethodInvocation(dispatcher.getStartOffset(), property.getEndOffset(), dispatcher, (ProcedureInvocation)property);
+	} else if (property instanceof TypeName) {
+	   dispatch = new TypeAccess(dispatcher.getStartOffset(), property.getEndOffset(), dispatcher, (TypeName)property);
 	} else {
 	   throw new IllegalArgumentException();
 	}
         return dispatch;
     }
-*/
+
 
     public List setModifier(List items, int modifier) {
         List list = new LinkedList();
@@ -2945,7 +2943,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("rep_spec",166, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("rep_spec",169, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -2954,7 +2952,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("rep_spec",166, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("rep_spec",169, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -2963,7 +2961,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("rep_spec",166, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("rep_spec",169, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -3301,7 +3299,7 @@
 		Object token = (Object)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
 		int exceptionNameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
 		int exceptionNameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
-		String exceptionName = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
+		Expression exceptionName = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
 		int endleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
 		int endright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
 		Object end = (Object)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
@@ -3389,7 +3387,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("exception_decl",124, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("exception_decl",127, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -3740,10 +3738,9 @@
 		List idList = (List)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
 		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
 		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String name = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    Identifier id = new Identifier(nameleft, nameright, name);
-    TaskName taskName = new TaskName(nameleft, nameright, id);
+		Identifier name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    TaskName taskName = new TaskName(nameleft, nameright, name);
     idList.add(taskName);
     RESULT = idList;
 
@@ -3757,11 +3754,10 @@
               List RESULT =null;
 		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
 		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String name = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		Identifier name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
 		
     List idList = new LinkedList();
-    Identifier id = new Identifier(nameleft, nameright, name);
-    TaskName taskName = new TaskName(nameleft, nameright, id);
+    TaskName taskName = new TaskName(nameleft, nameright, name);
     idList.add(taskName);
     RESULT = idList;
 
@@ -4200,7 +4196,7 @@
               Statement RESULT =null;
 		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)).left;
 		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)).right;
-		String name = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)).value;
+		Identifier name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)).value;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("protected_body",79, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-7)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -4346,7 +4342,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("prot_decl",123, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("prot_decl",126, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -4418,7 +4414,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("task_decl",122, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("task_decl",125, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -4461,17 +4457,15 @@
 		Object token = (Object)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)).value;
 		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)).left;
 		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)).right;
-		String name = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)).value;
+		Identifier name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)).value;
 		int renamesleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
 		int renamesright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
-		String renames = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
+		Identifier renames = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
 		int endleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
 		int endright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
 		Object end = (Object)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
 		
-    Identifier packageNameId = new Identifier(nameleft, nameright, name);
-    Identifier packageRenamesId = new Identifier(renamesleft, renamesright, renames);
-    PackageRenames packageRenames = new PackageRenames(tokenleft, endright, packageNameId, packageRenamesId);
+    PackageRenames packageRenames = new PackageRenames(tokenleft, endright, name, renames);
     RESULT = packageRenames;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("rename_unit",78, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
@@ -4519,10 +4513,9 @@
 		List idList = (List)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
 		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
 		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String name = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    Identifier id = new Identifier(nameleft, nameright, name);
-    TypeName typeName = new TypeName(nameleft, nameright, id);
+		Identifier name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    TypeName typeName = new TypeName(nameleft, nameright, name);
     idList.add(typeName);
     RESULT = idList;
 
@@ -4536,11 +4529,10 @@
               List RESULT =null;
 		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
 		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String name = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		Identifier name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
 		
     List idList = new LinkedList();
-    Identifier id = new Identifier(nameleft, nameright, name);
-    TypeName typeName = new TypeName(nameleft, nameright, id);
+    TypeName typeName = new TypeName(nameleft, nameright, name);
     idList.add(typeName);
     RESULT = idList;
 
@@ -4557,10 +4549,9 @@
 		List idList = (List)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
 		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
 		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String name = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    Identifier id = new Identifier(nameleft, nameright, name);
-    PackageName packageName = new PackageName(nameleft, nameright, id);
+		Identifier name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    PackageName packageName = new PackageName(nameleft, nameright, name);
     idList.add(packageName);
     RESULT = idList;
 
@@ -4574,11 +4565,10 @@
               List RESULT =null;
 		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
 		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String name = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		Identifier name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
 		
     List idList = new LinkedList();
-    Identifier id = new Identifier(nameleft, nameright, name);
-    PackageName packageName = new PackageName(nameleft, nameright, id);
+    PackageName packageName = new PackageName(nameleft, nameright, name);
     idList.add(packageName);
     RESULT = idList;
 
@@ -4694,33 +4684,31 @@
 		int declarationStartleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-8)).left;
 		int declarationStartright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-8)).right;
 		Object declarationStart = (Object)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-8)).value;
-		int packageNameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-6)).left;
-		int packageNameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-6)).right;
-		String packageName = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-6)).value;
+		int package_nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-6)).left;
+		int package_nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-6)).right;
+		Identifier package_name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-6)).value;
 		int blockStartleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)).left;
 		int blockStartright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)).right;
 		Object blockStart = (Object)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)).value;
 		int declarativePartleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)).left;
 		int declarativePartright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)).right;
 		List declarativePart = (List)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)).value;
-		int packageNameEndleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
-		int packageNameEndright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
-		String packageNameEnd = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
+		int package_name_endleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
+		int package_name_endright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
+		Identifier package_name_end = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
 		int declarationEndleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
 		int declarationEndright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
 		Object declarationEnd = (Object)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
 		
-    if (packageNameEnd != null && !packageNameEnd.equalsIgnoreCase (packageName)) {
-        this.parser.message_error("mispelling of " + packageName);
+    if (package_name_end != null && !package_name_end.getName().equalsIgnoreCase (package_name.getName())) {
+        this.parser.message_error("mispelling of " + package_name);
     }
     else {
-        Identifier packageId = new Identifier(packageNameleft, packageNameright, packageName);
-        Identifier packageIdEnd = new Identifier(packageNameEndleft, packageNameEndright, packageNameEnd);
 
         List list = this.parser.setModifier (declarativePart, Ada95ASTParser.PRIVATE);
         Block block = new Block(blockStartleft, declarationEndright, list);
 
-        PackageBody packageBody = new PackageBody(declarationStartleft, declarationEndright, packageId, packageIdEnd, block);
+        PackageBody packageBody = new PackageBody(declarationStartleft, declarationEndright, package_name, package_name_end, block);
         RESULT = packageBody;
     }
 
@@ -4731,12 +4719,12 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 344: // compound_name_opt ::= compound_name 
             {
-              String RESULT =null;
-		int compoundNameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int compoundNameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String compoundName = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    RESULT = compoundName;
+              Identifier RESULT =null;
+		int compound_nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int compound_nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Identifier compound_name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    RESULT = compound_name;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("compound_name_opt",95, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -4745,7 +4733,7 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 343: // compound_name_opt ::= 
             {
-              String RESULT =null;
+              Identifier RESULT =null;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("compound_name_opt",95, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -4783,9 +4771,9 @@
 		int declarationStartleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-6)).left;
 		int declarationStartright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-6)).right;
 		Object declarationStart = (Object)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-6)).value;
-		int packageNameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)).left;
-		int packageNameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)).right;
-		String packageName = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)).value;
+		int package_nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)).left;
+		int package_nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)).right;
+		Identifier package_name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)).value;
 		int blockStartleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)).left;
 		int blockStartright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)).right;
 		Object blockStart = (Object)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)).value;
@@ -4798,20 +4786,18 @@
 		int declarationEndleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
 		int declarationEndright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
 		Object declarationEnd = (Object)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
-		int packageNameEndleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int packageNameEndright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String packageNameEnd = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    if (packageNameEnd != null && !packageNameEnd.equalsIgnoreCase (packageName)) {
-        this.parser.message_error("mispelling of " + packageName);
+		int package_name_endleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int package_name_endright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Identifier package_name_end = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    if (package_name_end != null && !package_name_end.getName().equalsIgnoreCase (package_name.getName())) {
+        this.parser.message_error("mispelling of " + package_name);
     }
     else {
-        Identifier packageId = new Identifier(packageNameleft, packageNameright, packageName);
-        Identifier packageIdEnd = new Identifier(packageNameEndleft, packageNameEndright, packageNameEnd);
         declarativeItems.addAll (privateDeclarativeItems);
         // Add private part on block statements
         Block block = new Block(blockStartleft, declarationEndright, declarativeItems);
-        PackageSpecification packageSpecification = new PackageSpecification(declarationStartleft, declarationEndright, packageId, packageIdEnd, block);
+        PackageSpecification packageSpecification = new PackageSpecification(declarationStartleft, declarationEndright, package_name, package_name_end, block);
         RESULT = packageSpecification;
     }
 
@@ -4864,20 +4850,19 @@
 		int bodyleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)).left;
 		int bodyright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)).right;
 		Block body = (Block)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)).value;
-		int idOptleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
-		int idOptright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
-		String idOpt = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
+		int id_optleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
+		int id_optright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
+		Identifier id_opt = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
 		int endleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
 		int endright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
 		Object end = (Object)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
 		
-    if (idOpt != null && !idOpt.equalsIgnoreCase (subprog.getSubprogramName().getName())) {
+    if (id_opt != null && !id_opt.getName().equalsIgnoreCase (subprog.getSubprogramName().getName())) {
         this.parser.message_error("mispelling of " + subprog.getSubprogramName().getName());
     } else {
         Block declarations = new Block(subprogright, bodyleft, declarativePart);
         body.setEndOffset(endright);
-        Identifier nameEnd = new Identifier(idOptleft, idOptright, idOpt);
-        SubprogramBody subprogramBody = new SubprogramBody(subprogleft, endright, subprog, declarations, body, nameEnd);
+        SubprogramBody subprogramBody = new SubprogramBody(subprogleft, endright, subprog, declarations, body, id_opt);
         MethodDeclaration methodDeclaration = new MethodDeclaration(subprogleft, endright, 0/*modifier*/, subprogramBody);
         RESULT = methodDeclaration;
     }
@@ -4889,12 +4874,13 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 335: // operator_symbol ::= STRING_LITERAL 
             {
-              String RESULT =null;
-		int stringLiteralleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int stringLiteralright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String stringLiteral = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    RESULT = stringLiteral;
+              Identifier RESULT =null;
+		int string_literalleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int string_literalright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		String string_literal = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    Identifier identifier = new Identifier (string_literalleft, string_literalright, string_literal);
+    RESULT = identifier;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("operator_symbol",65, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -4984,19 +4970,18 @@
 		FormalParameter.Mode mode = (FormalParameter.Mode)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
 		int subtypeleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
 		int subtyperight = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
-		String subtype = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
+		NameBase subtype = (NameBase)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
 		int initleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
 		int initright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
 		Expression init = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
 		
     List list = new LinkedList();
-    Identifier subtypeId = new Identifier(subtypeleft, subtyperight, subtype);
-    TypeName typeName = new TypeName(subtypeleft, subtyperight, subtypeId);
+//    TypeName typeName = new TypeName(subtypeleft, subtyperight, subtype);
     for (Object item : identifierList) {
         Identifier identifier = (Identifier)item;
         Variable variable = new Variable (identifier.getStartOffset(), identifier.getEndOffset(), identifier);
 	    int end = init == null ? subtyperight : initright;
-        FormalParameter parameter = new FormalParameter(identifierListleft, end, variable, mode, typeName, init);
+        FormalParameter parameter = new FormalParameter(identifierListleft, end, variable, mode, subtype, init);
     	list.add(parameter);
     }
     RESULT = list;
@@ -5082,10 +5067,10 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 322: // designator ::= operator_symbol 
             {
-              String RESULT =null;
+              Identifier RESULT =null;
 		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
 		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String name = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		Identifier name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
 		
     RESULT = name;
 
@@ -5096,10 +5081,10 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 321: // designator ::= compound_name 
             {
-              String RESULT =null;
+              Identifier RESULT =null;
 		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
 		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String name = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		Identifier name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
 		
     RESULT = name;
 
@@ -5114,12 +5099,11 @@
 		int functionleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
 		int functionright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
 		Object function = (Object)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
-		int functionNameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int functionNameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String functionName = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    Identifier functionId = new Identifier(functionNameleft, functionNameright, functionName);
-    SubprogramSpecification subprogramSpecification = new SubprogramSpecification(functionleft, functionNameright, functionId);
+		int designatorleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int designatorright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Identifier designator = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    SubprogramSpecification subprogramSpecification = new SubprogramSpecification(functionleft, designatorright, designator);
     RESULT = subprogramSpecification;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("subprogram_specification",56, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
@@ -5133,19 +5117,17 @@
 		int functionleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)).left;
 		int functionright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)).right;
 		Object function = (Object)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)).value;
-		int functionNameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)).left;
-		int functionNameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)).right;
-		String functionName = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)).value;
-		int formalPartleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
-		int formalPartright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
-		List formalPart = (List)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
-		int subtypeMarkleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int subtypeMarkright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String subtypeMark = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    Identifier functionId = new Identifier(functionNameleft, functionNameright, functionName);
-    Identifier subtypeReturn = new Identifier(subtypeMarkleft, subtypeMarkright, subtypeMark);
-    SubprogramSpecification subprogramSpecification = new SubprogramSpecification(functionleft, subtypeMarkright, functionId, formalPart, subtypeReturn);
+		int designatorleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)).left;
+		int designatorright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)).right;
+		Identifier designator = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)).value;
+		int formal_partleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
+		int formal_partright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
+		List formal_part = (List)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
+		int subtype_markleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int subtype_markright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Identifier subtype_mark = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    SubprogramSpecification subprogramSpecification = new SubprogramSpecification(functionleft, subtype_markright, designator, formal_part, subtype_mark);
     RESULT = subprogramSpecification;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("subprogram_specification",56, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
@@ -5159,15 +5141,14 @@
 		int procedureleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
 		int procedureright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
 		Object procedure = (Object)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
-		int procedureNameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
-		int procedureNameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
-		String procedureName = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
-		int formalPartleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int formalPartright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		List formalPart = (List)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    Identifier procedureId = new Identifier(procedureNameleft, procedureNameright, procedureName);
-    SubprogramSpecification subprogramSpecification = new SubprogramSpecification(procedureleft, formalPartright, procedureId, formalPart);
+		int compound_nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
+		int compound_nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
+		Identifier compound_name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
+		int formal_partleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int formal_partright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		List formal_part = (List)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    SubprogramSpecification subprogramSpecification = new SubprogramSpecification(procedureleft, formal_partright, compound_name, formal_part);
     RESULT = subprogramSpecification;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("subprogram_specification",56, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
@@ -5234,7 +5215,7 @@
 		Object token = (Object)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
 		int labelNameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
 		int labelNameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
-		String labelName = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
+		Identifier labelName = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
 		int endleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
 		int endright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
 		Object end = (Object)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
@@ -5310,10 +5291,10 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 309: // name_opt ::= name 
             {
-              String RESULT =null;
+              Expression RESULT =null;
 		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
 		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String name = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		Identifier name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
 		
     RESULT = name;
 
@@ -5324,7 +5305,7 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 308: // name_opt ::= 
             {
-              String RESULT =null;
+              Expression RESULT =null;
 		
     RESULT = null;
 
@@ -5341,7 +5322,7 @@
 		Object token = (Object)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)).value;
 		int loopNameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
 		int loopNameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
-		String loopName = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
+		Expression loopName = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
 		int whenConditionleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
 		int whenConditionright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
 		Expression whenCondition = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
@@ -5440,7 +5421,7 @@
               BlockStatement RESULT =null;
 		int labelleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)).left;
 		int labelright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)).right;
-		String label = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)).value;
+		Identifier label = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)).value;
 		int declarationsleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)).left;
 		int declarationsright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)).right;
 		Block declarations = (Block)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)).value;
@@ -5452,8 +5433,7 @@
 		Object end = (Object)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
 		
     int start = (label == null) ? declarationsleft : labelleft;
-    Identifier identifier = new Identifier(labelleft, labelright, label);
-    BlockStatement blockStatement = new BlockStatement (start, endleft, identifier, declarations, body);
+    BlockStatement blockStatement = new BlockStatement (start, endleft, label, declarations, body);
     RESULT = blockStatement;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("block_statement",50, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
@@ -5463,12 +5443,12 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 299: // id_opt ::= designator 
             {
-              String RESULT =null;
-		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String name = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    RESULT = name;
+              Identifier RESULT =null;
+		int designatorleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int designatorright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Identifier designator = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    RESULT = designator;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("id_opt",104, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -5477,7 +5457,7 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 298: // id_opt ::= 
             {
-              String RESULT =null;
+              Identifier RESULT =null;
 		
     RESULT = null;
 
@@ -5569,12 +5549,13 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 290: // label_opt ::= IDENTIFIER COLON 
             {
-              String RESULT =null;
+              Identifier RESULT =null;
 		int idleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
 		int idright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
 		String id = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
 		
-    RESULT = id;
+    Identifier identifier = new Identifier (idleft, idright, id);
+    RESULT = identifier;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("label_opt",112, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -5583,7 +5564,7 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 289: // label_opt ::= 
             {
-              String RESULT =null;
+              Identifier RESULT =null;
 		
     RESULT = null;
 
@@ -5597,7 +5578,7 @@
               LoopStatement RESULT =null;
 		int labelleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)).left;
 		int labelright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)).right;
-		String label = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)).value;
+		Identifier label = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)).value;
 		int iterationleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)).left;
 		int iterationright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)).right;
 		Expression iteration = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)).value;
@@ -5609,8 +5590,7 @@
 		Object end = (Object)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
 		
     int start = (label == null) ? iterationleft : labelleft;
-    Identifier identifier = new Identifier(labelleft, labelright, label);
-    LoopStatement loopStatement = new LoopStatement(start, endright, identifier, iteration, statement);
+    LoopStatement loopStatement = new LoopStatement(start, endright, label, iteration, statement);
     RESULT = loopStatement;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("loop_statement",47, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
@@ -5722,11 +5702,11 @@
           case 281: // condition ::= expression 
             {
               Expression RESULT =null;
-		int exprleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int exprright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		Expression expr = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    RESULT = expr;
+		int expressionleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int expressionright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Expression expression = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    RESULT = expression;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("condition",42, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -5812,19 +5792,19 @@
     Expression firstCondition = null;
     Statement trueStatement = null;
     Statement falseStatement = iffalse;
-		
+
     for (int i=1 ; i < condList[0].size() ; i++) {
         innerCondition = (Expression)condList[0].get(i);
         trueStatement = (Statement)condList[1].get(i);
         int start = ((Integer)condList[2].get(i)).intValue();
         falseStatement = new IfStatement(start, endright, innerCondition, trueStatement, falseStatement);
     }
-    
+
     firstCondition = (Expression)condList[0].get(0);
     trueStatement = (Statement)condList[1].get(0);
     int start = ((Integer)condList[2].get(0)).intValue();
     IfStatement ifStatement = new IfStatement(tokenleft, endright, firstCondition, trueStatement, falseStatement);		
-	
+
     RESULT = ifStatement;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("if_statement",40, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
@@ -5835,18 +5815,15 @@
           case 277: // assignment_statement ::= name ASSIGNMENT expression SEMICOLON 
             {
               Statement RESULT =null;
-		int varleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)).left;
-		int varright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)).right;
-		String var = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)).value;
-		int exprleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
-		int exprright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
-		Expression expr = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
-		
-    System.out.println ("assignment_statement ::= var => " + var);
-    System.out.println ("assignment_statement ::= expr => " + expr);
-    Identifier id = new Identifier(varleft, varright, var);
-    Variable variable = new Variable (varleft, varright, (Identifier)id);
-    Assignment assignment = new Assignment(varleft, exprright, variable, expr);
+		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)).left;
+		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)).right;
+		Identifier name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)).value;
+		int expressionleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
+		int expressionright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
+		Expression expression = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
+		
+    Variable variable = new Variable (nameleft, nameright, name);
+    Assignment assignment = new Assignment(nameleft, expressionright, variable, expression);
     RESULT = assignment;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("assignment_statement",39, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
@@ -6240,13 +6217,12 @@
               Expression RESULT =null;
 		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
 		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
-		String name = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
+		Identifier name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
 		int exprleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
 		int exprright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
 		Expression expr = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
 		
-    Identifier subtypeMark = new Identifier (nameleft, nameright, name);
-    RESULT = new QualifiedExpression (nameleft, exprright, subtypeMark, expr);
+    RESULT = new QualifiedExpression (nameleft, exprright, name, expr);
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("qualified_expression",34, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6256,11 +6232,11 @@
           case 246: // parenthesized_primary ::= LPAREN expression RPAREN 
             {
               Expression RESULT =null;
-		int exprleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
-		int exprright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
-		Expression expr = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
-		
-    RESULT = expr;
+		int expressionleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
+		int expressionright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
+		Expression expression = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
+		
+    RESULT = expression;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("parenthesized_primary",107, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6279,12 +6255,11 @@
           case 244: // primary ::= parenthesized_primary 
             {
               Expression RESULT =null;
-		int exprleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int exprright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		Expression expr = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    System.out.println ("primary ::= parenthesized_primary => " + expr);
-    RESULT = expr;
+		int parenthesized_primaryleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int parenthesized_primaryright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Expression parenthesized_primary = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    RESULT = parenthesized_primary;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("primary",28, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6294,12 +6269,11 @@
           case 243: // primary ::= qualified_expression 
             {
               Expression RESULT =null;
-		int exprleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int exprright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		Expression expr = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    System.out.println ("primary ::= qualified_expression => " + expr);
-    RESULT = expr;
+		int qualified_expressionleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int qualified_expressionright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Expression qualified_expression = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    RESULT = qualified_expression;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("primary",28, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6320,11 +6294,11 @@
               Expression RESULT =null;
 		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
 		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String name = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    System.out.println ("primary ::= name => " + name);
-    Scalar scalar = new Scalar(nameleft, nameright, name, Scalar.Type.STRING);
-    RESULT = scalar;
+		Identifier name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+// TODO: must be modified for manage all primery types
+    Variable variable = new Variable (nameleft, nameright, name);
+    RESULT = variable;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("primary",28, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6338,7 +6312,6 @@
 		int literalright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
 		Expression literal = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
 		
-    System.out.println ("primary ::= literal => " + literal);
     RESULT = literal;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("primary",28, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
@@ -6349,60 +6322,93 @@
           case 239: // factor ::= primary EXPON primary 
             {
               Expression RESULT =null;
+		int primary1left = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
+		int primary1right = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
+		Expression primary1 = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
+		int primary2left = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int primary2right = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Expression primary2 = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    InfixExpression infixExpression = new InfixExpression(primary1left, primary2right, primary1, InfixExpression.OperatorType.EXPON, primary2);
+    RESULT = infixExpression;
+
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("factor",27, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+            }
+          return CUP$Ada95ASTParser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 238: // factor ::= ABS primary 
+            {
+              Expression RESULT =null;
+		int tokenleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
+		int tokenright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
+		Object token = (Object)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
+		int primaryleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int primaryright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Expression primary = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    UnaryOperation unaryOperation = new UnaryOperation(tokenleft, primaryright, primary, UnaryOperation.Operator.ABS);
+    RESULT = unaryOperation;
+
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("factor",27, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+            }
+          return CUP$Ada95ASTParser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 237: // factor ::= NOT primary 
+            {
+              Expression RESULT =null;
+		int tokenleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
+		int tokenright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
+		Object token = (Object)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
+		int primaryleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int primaryright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Expression primary = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    UnaryOperation unaryOperation = new UnaryOperation(tokenleft, primaryright, primary, UnaryOperation.Operator.NOT);
+    RESULT = unaryOperation;
+
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("factor",27, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+            }
+          return CUP$Ada95ASTParser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 236: // factor ::= primary 
+            {
+              Expression RESULT =null;
 		int primaryleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
 		int primaryright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
 		Expression primary = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
 		
     RESULT = primary;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("factor",27, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
-            }
-          return CUP$Ada95ASTParser$result;
-
-          /*. . . . . . . . . . . . . . . . . . . .*/
-          case 238: // factor ::= ABS primary 
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("factor",27, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+            }
+          return CUP$Ada95ASTParser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 235: // term ::= term multiplying_operator factor 
             {
               Expression RESULT =null;
-		int primaryleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int primaryright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		Expression primary = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    RESULT = primary;
-
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("factor",27, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
-            }
-          return CUP$Ada95ASTParser$result;
-
-          /*. . . . . . . . . . . . . . . . . . . .*/
-          case 237: // factor ::= NOT primary 
-            {
-              Expression RESULT =null;
-		int primaryleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int primaryright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		Expression primary = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    RESULT = primary;
-
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("factor",27, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
-            }
-          return CUP$Ada95ASTParser$result;
-
-          /*. . . . . . . . . . . . . . . . . . . .*/
-          case 236: // factor ::= primary 
-            {
-              Expression RESULT =null;
-		int primaryleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int primaryright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		Expression primary = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    RESULT = primary;
-
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("factor",27, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
-            }
-          return CUP$Ada95ASTParser$result;
-
-          /*. . . . . . . . . . . . . . . . . . . .*/
-          case 235: // term ::= term multiplying_operator factor 
+		int termleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
+		int termright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
+		Expression term = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
+		int multiplying_operatorleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
+		int multiplying_operatorright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
+		InfixExpression.OperatorType multiplying_operator = (InfixExpression.OperatorType)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
+		int factorleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int factorright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Expression factor = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    InfixExpression infixExpression = new InfixExpression(termleft, factorright, term, multiplying_operator, factor);
+    RESULT = infixExpression;
+
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("term",26, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+            }
+          return CUP$Ada95ASTParser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 234: // term ::= factor 
             {
               Expression RESULT =null;
 		int factorleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
@@ -6411,39 +6417,26 @@
 		
     RESULT = factor;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("term",26, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
-            }
-          return CUP$Ada95ASTParser$result;
-
-          /*. . . . . . . . . . . . . . . . . . . .*/
-          case 234: // term ::= factor 
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("term",26, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+            }
+          return CUP$Ada95ASTParser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 233: // simple_expression ::= simple_expression binary_adding_operator term 
             {
               Expression RESULT =null;
-		int factorleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int factorright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		Expression factor = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    RESULT = factor;
-
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("term",26, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
-            }
-          return CUP$Ada95ASTParser$result;
-
-          /*. . . . . . . . . . . . . . . . . . . .*/
-          case 233: // simple_expression ::= simple_expression binary_adding_operator term 
-            {
-              Expression RESULT =null;
-		int exprleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
-		int exprright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
-		Expression expr = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
-		int opleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
-		int opright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
-		UnaryOperation.Operator op = (UnaryOperation.Operator)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
+		int simple_expressionleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
+		int simple_expressionright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
+		Expression simple_expression = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
+		int binary_adding_operatorleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
+		int binary_adding_operatorright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
+		InfixExpression.OperatorType binary_adding_operator = (InfixExpression.OperatorType)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
 		int termleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
 		int termright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
 		Expression term = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
 		
-	RESULT = new UnaryOperation(exprleft, termright, term, op);
+    InfixExpression infixExpression = new InfixExpression(simple_expressionleft, termright, simple_expression, binary_adding_operator, term);
+    RESULT = infixExpression;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("simple_expression",25, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6467,14 +6460,15 @@
           case 231: // simple_expression ::= unary_adding_operator term 
             {
               Expression RESULT =null;
-		int opleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
-		int opright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
-		UnaryOperation.Operator op = (UnaryOperation.Operator)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
+		int unary_adding_operatorleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
+		int unary_adding_operatorright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
+		UnaryOperation.Operator unary_adding_operator = (UnaryOperation.Operator)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
 		int termleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
 		int termright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
 		Expression term = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
 		
-	RESULT = new UnaryOperation(opleft, termright, term, op);
+    UnaryOperation unaryOperation = new UnaryOperation(unary_adding_operatorleft, termright, term, unary_adding_operator);
+    RESULT = unaryOperation;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("simple_expression",25, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6484,11 +6478,18 @@
           case 230: // relation ::= simple_expression membership name 
             {
               Expression RESULT =null;
-		int simple_exprleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
-		int simple_exprright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
-		Expression simple_expr = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
-		
-    RESULT = simple_expr;
+		int simple_expressionleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
+		int simple_expressionright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
+		Expression simple_expression = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
+		int membershipleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
+		int membershipright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
+		InfixExpression.OperatorType membership = (InfixExpression.OperatorType)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
+		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Identifier name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    InfixExpression infixExpression = new InfixExpression(simple_expressionleft, nameright, simple_expression, membership, name);
+    RESULT = infixExpression;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("relation",24, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6498,11 +6499,18 @@
           case 229: // relation ::= simple_expression membership range 
             {
               Expression RESULT =null;
-		int simple_exprleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
-		int simple_exprright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
-		Expression simple_expr = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
-		
-    RESULT = simple_expr;
+		int simple_expressionleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
+		int simple_expressionright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
+		Expression simple_expression = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
+		int membershipleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
+		int membershipright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
+		InfixExpression.OperatorType membership = (InfixExpression.OperatorType)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
+		int rangeleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int rangeright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Expression range = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    InfixExpression infixExpression = new InfixExpression(simple_expressionleft, rangeright, simple_expression, membership, range);
+    RESULT = infixExpression;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("relation",24, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6512,11 +6520,18 @@
           case 228: // relation ::= simple_expression relational_operator simple_expression 
             {
               Expression RESULT =null;
-		int simple_exprleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
-		int simple_exprright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
-		Expression simple_expr = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
-		
-    RESULT = simple_expr;
+		int simple_expression1left = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
+		int simple_expression1right = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
+		Expression simple_expression1 = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
+		int relational_operatorleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
+		int relational_operatorright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
+		InfixExpression.OperatorType relational_operator = (InfixExpression.OperatorType)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
+		int simple_expression2left = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int simple_expression2right = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Expression simple_expression2 = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    InfixExpression infixExpression = new InfixExpression(simple_expression1left, simple_expression2right, simple_expression1, relational_operator, simple_expression2);
+    RESULT = infixExpression;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("relation",24, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6526,11 +6541,11 @@
           case 227: // relation ::= simple_expression 
             {
               Expression RESULT =null;
-		int simple_exprleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int simple_exprright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		Expression simple_expr = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    RESULT = simple_expr;
+		int simple_expressionleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int simple_expressionright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Expression simple_expression = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    RESULT = simple_expression;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("relation",24, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6540,16 +6555,18 @@
           case 226: // expression ::= expression short_circuit relation 
             {
               Expression RESULT =null;
-		int exprleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
-		int exprright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
-		Expression expr = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
-		int relleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int relright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		Expression rel = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    System.out.println ("expression ::= expression => " + expr);
-    System.out.println ("expression ::= relation => " + rel);
-	RESULT = expr;
+		int expressionleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
+		int expressionright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
+		Expression expression = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
+		int short_circuitleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
+		int short_circuitright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
+		InfixExpression.OperatorType short_circuit = (InfixExpression.OperatorType)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
+		int relationleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int relationright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Expression relation = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    InfixExpression infixExpression = new InfixExpression(expressionleft, relationright, expression, short_circuit, relation);
+    RESULT = infixExpression;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("expression",23, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6559,16 +6576,18 @@
           case 225: // expression ::= expression logical_operator relation 
             {
               Expression RESULT =null;
-		int exprleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
-		int exprright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
-		Expression expr = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
-		int relleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int relright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		Expression rel = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    System.out.println ("expression ::= expression => " + expr);
-    System.out.println ("expression ::= relation => " + rel);
-	RESULT = expr;
+		int expressionleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
+		int expressionright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
+		Expression expression = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
+		int logical_operatorleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
+		int logical_operatorright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
+		InfixExpression.OperatorType logical_operator = (InfixExpression.OperatorType)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
+		int relationleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int relationright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Expression relation = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    InfixExpression infixExpression = new InfixExpression(expressionleft, relationright, expression, logical_operator, relation);
+    RESULT = infixExpression;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("expression",23, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6578,12 +6597,11 @@
           case 224: // expression ::= relation 
             {
               Expression RESULT =null;
-		int relleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int relright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		Expression rel = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    System.out.println ("expression ::= relation => " + rel);
-	RESULT = rel;
+		int relationleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int relationright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Expression relation = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    RESULT = relation;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("expression",23, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6592,7 +6610,9 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 223: // multiplying_operator ::= REM 
             {
-              String RESULT =null;
+              InfixExpression.OperatorType RESULT =null;
+		
+    RESULT = InfixExpression.OperatorType.REM;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("multiplying_operator",33, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6601,7 +6621,9 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 222: // multiplying_operator ::= MOD 
             {
-              String RESULT =null;
+              InfixExpression.OperatorType RESULT =null;
+		
+    RESULT = InfixExpression.OperatorType.MOD;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("multiplying_operator",33, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6610,7 +6632,9 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 221: // multiplying_operator ::= SLASH 
             {
-              String RESULT =null;
+              InfixExpression.OperatorType RESULT =null;
+		
+    RESULT = InfixExpression.OperatorType.DIV;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("multiplying_operator",33, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6619,7 +6643,9 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 220: // multiplying_operator ::= STAR 
             {
-              String RESULT =null;
+              InfixExpression.OperatorType RESULT =null;
+		
+    RESULT = InfixExpression.OperatorType.MUL;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("multiplying_operator",33, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6628,80 +6654,86 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 219: // binary_adding_operator ::= AMP 
             {
+              InfixExpression.OperatorType RESULT =null;
+		
+    RESULT = InfixExpression.OperatorType.STRING_AND;
+
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("binary_adding_operator",31, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+            }
+          return CUP$Ada95ASTParser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 218: // binary_adding_operator ::= MINUS 
+            {
+              InfixExpression.OperatorType RESULT =null;
+		
+    RESULT = InfixExpression.OperatorType.MINUS;
+
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("binary_adding_operator",31, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+            }
+          return CUP$Ada95ASTParser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 217: // binary_adding_operator ::= PLUS 
+            {
+              InfixExpression.OperatorType RESULT =null;
+		
+    RESULT = InfixExpression.OperatorType.PLUS;
+
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("binary_adding_operator",31, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+            }
+          return CUP$Ada95ASTParser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 216: // unary_adding_operator ::= MINUS 
+            {
               UnaryOperation.Operator RESULT =null;
 		
-    RESULT = UnaryOperation.Operator.AMP;
-
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("binary_adding_operator",31, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
-            }
-          return CUP$Ada95ASTParser$result;
-
-          /*. . . . . . . . . . . . . . . . . . . .*/
-          case 218: // binary_adding_operator ::= MINUS 
+    RESULT = UnaryOperation.Operator.MINUS;
+
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("unary_adding_operator",32, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+            }
+          return CUP$Ada95ASTParser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 215: // unary_adding_operator ::= PLUS 
             {
               UnaryOperation.Operator RESULT =null;
 		
-    RESULT = UnaryOperation.Operator.MINUS;
-
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("binary_adding_operator",31, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
-            }
-          return CUP$Ada95ASTParser$result;
-
-          /*. . . . . . . . . . . . . . . . . . . .*/
-          case 217: // binary_adding_operator ::= PLUS 
-            {
-              UnaryOperation.Operator RESULT =null;
-		
     RESULT = UnaryOperation.Operator.PLUS;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("binary_adding_operator",31, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
-            }
-          return CUP$Ada95ASTParser$result;
-
-          /*. . . . . . . . . . . . . . . . . . . .*/
-          case 216: // unary_adding_operator ::= MINUS 
-            {
-              UnaryOperation.Operator RESULT =null;
-		
-    RESULT = UnaryOperation.Operator.MINUS;
-
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("unary_adding_operator",32, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 215: // unary_adding_operator ::= PLUS 
-            {
-              UnaryOperation.Operator RESULT =null;
-		
-    RESULT = UnaryOperation.Operator.PLUS;
-
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("unary_adding_operator",32, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
-            }
-          return CUP$Ada95ASTParser$result;
-
-          /*. . . . . . . . . . . . . . . . . . . .*/
           case 214: // membership ::= NOT IN 
             {
-              Object RESULT =null;
-
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("membership",174, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              InfixExpression.OperatorType RESULT =null;
+		
+    RESULT = InfixExpression.OperatorType.NOT_IN;
+
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("membership",119, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 213: // membership ::= IN 
             {
-              Object RESULT =null;
-
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("membership",174, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              InfixExpression.OperatorType RESULT =null;
+		
+    RESULT = InfixExpression.OperatorType.IN;
+
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("membership",119, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 212: // relational_operator ::= GTEQ 
             {
-              String RESULT =null;
+              InfixExpression.OperatorType RESULT =null;
+		
+    RESULT = InfixExpression.OperatorType.IS_GREATER_OR_EQUAL;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("relational_operator",30, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6710,7 +6742,9 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 211: // relational_operator ::= LT 
             {
-              String RESULT =null;
+              InfixExpression.OperatorType RESULT =null;
+		
+    RESULT = InfixExpression.OperatorType.LGREATER;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("relational_operator",30, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6719,7 +6753,9 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 210: // relational_operator ::= LTEQ 
             {
-              String RESULT =null;
+              InfixExpression.OperatorType RESULT =null;
+		
+    RESULT = InfixExpression.OperatorType.IS_SMALLER_OR_EQUAL;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("relational_operator",30, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6728,7 +6764,9 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 209: // relational_operator ::= GT 
             {
-              String RESULT =null;
+              InfixExpression.OperatorType RESULT =null;
+		
+    RESULT = InfixExpression.OperatorType.RGREATER;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("relational_operator",30, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6737,7 +6775,9 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 208: // relational_operator ::= INEQ 
             {
-              String RESULT =null;
+              InfixExpression.OperatorType RESULT =null;
+		
+    RESULT = InfixExpression.OperatorType.IS_NOT_EQUAL;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("relational_operator",30, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6746,7 +6786,9 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 207: // relational_operator ::= EQ 
             {
-              String RESULT =null;
+              InfixExpression.OperatorType RESULT =null;
+		
+    RESULT = InfixExpression.OperatorType.IS_EQUAL;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("relational_operator",30, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6755,25 +6797,31 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 206: // short_circuit ::= OR ELSE 
             {
-              Object RESULT =null;
-
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("short_circuit",173, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              InfixExpression.OperatorType RESULT =null;
+		
+    RESULT = InfixExpression.OperatorType.BOOL_AND;
+
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("short_circuit",118, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 205: // short_circuit ::= AND THEN 
             {
-              Object RESULT =null;
-
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("short_circuit",173, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              InfixExpression.OperatorType RESULT =null;
+		
+    RESULT = InfixExpression.OperatorType.BOOL_OR;
+
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("short_circuit",118, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 204: // logical_operator ::= XOR 
             {
-              String RESULT =null;
+              InfixExpression.OperatorType RESULT =null;
+		
+    RESULT = InfixExpression.OperatorType.BOOL_XOR;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("logical_operator",29, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6782,7 +6830,9 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 203: // logical_operator ::= OR 
             {
-              String RESULT =null;
+              InfixExpression.OperatorType RESULT =null;
+		
+    RESULT = InfixExpression.OperatorType.BOOL_OR;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("logical_operator",29, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6791,7 +6841,9 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 202: // logical_operator ::= AND 
             {
-              String RESULT =null;
+              InfixExpression.OperatorType RESULT =null;
+		
+    RESULT = InfixExpression.OperatorType.BOOL_AND;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("logical_operator",29, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6802,7 +6854,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("comp_assoc",170, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("comp_assoc",172, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -6811,7 +6863,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("value_s_2",172, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("value_s_2",174, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -6820,7 +6872,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("value_s_2",172, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("value_s_2",174, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -6829,7 +6881,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("aggregate",171, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("aggregate",173, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -6838,7 +6890,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("aggregate",171, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("aggregate",173, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -6847,7 +6899,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("aggregate",171, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("aggregate",173, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -6856,7 +6908,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("aggregate",171, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("aggregate",173, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -6865,7 +6917,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("aggregate",171, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("aggregate",173, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -6873,6 +6925,12 @@
           case 193: // literal ::= NULL 
             {
               Expression RESULT =null;
+		int tokenleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int tokenright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Object token = (Object)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    Scalar scalar = new Scalar(tokenleft, tokenright, "null", Scalar.Type.SYSTEM);
+    RESULT = scalar;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("literal",106, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6886,8 +6944,8 @@
 		int usedCharright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
 		String usedChar = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
 		
-	Scalar scalar = new Scalar(usedCharleft, usedCharright, usedChar, Scalar.Type.STRING);
-	RESULT = scalar;
+    Scalar scalar = new Scalar(usedCharleft, usedCharright, usedChar, Scalar.Type.STRING);
+    RESULT = scalar;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("literal",106, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6901,8 +6959,8 @@
 		int decright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
 		String dec = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
 		
-	Scalar scalar = new Scalar(decleft, decright, dec, Scalar.Type.INT);
-	RESULT = scalar;
+    Scalar scalar = new Scalar(decleft, decright, dec, Scalar.Type.INT);
+    RESULT = scalar;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("literal",106, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6916,8 +6974,8 @@
 		int decright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
 		String dec = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
 		
-	Scalar scalar = new Scalar(decleft, decright, dec, Scalar.Type.INT);
-	RESULT = scalar;
+    Scalar scalar = new Scalar(decleft, decright, dec, Scalar.Type.INT);
+    RESULT = scalar;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("literal",106, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6926,46 +6984,46 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 189: // attribute_id ::= ACCESS 
             {
-              Object RESULT =null;
-
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("attribute_id",168, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              String RESULT =null;
+
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("attribute_id",120, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 188: // attribute_id ::= DELTA 
             {
-              Object RESULT =null;
-
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("attribute_id",168, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              String RESULT =null;
+
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("attribute_id",120, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 187: // attribute_id ::= DIGITS 
             {
-              Object RESULT =null;
-
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("attribute_id",168, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              String RESULT =null;
+
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("attribute_id",120, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 186: // attribute_id ::= IDENTIFIER 
             {
-              Object RESULT =null;
-
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("attribute_id",168, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              String RESULT =null;
+
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("attribute_id",120, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 185: // attribute ::= name TICK attribute_id 
             {
-              String RESULT =null;
+              Identifier RESULT =null;
 		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
 		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
-		String name = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
+		Identifier name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
 		
     RESULT = name;
 
@@ -6976,15 +7034,16 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 184: // selected_component ::= name DOT ALL 
             {
-              String RESULT =null;
+              Identifier RESULT =null;
 		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
 		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
-		String name = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
+		Identifier name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
 		int allleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
 		int allright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
 		Object all = (Object)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
 		
-    RESULT = name + "." + all;
+    Identifier identifier = new Identifier (nameleft, allright, name.getName() + "." + "all");
+    RESULT = identifier;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("selected_component",22, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -6993,15 +7052,16 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 183: // selected_component ::= name DOT operator_symbol 
             {
-              String RESULT =null;
+              Identifier RESULT =null;
 		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
 		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
-		String name = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
+		Identifier name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
 		int operatorleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
 		int operatorright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String operator = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    RESULT = name + "." + operator;
+		Identifier operator = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    Identifier identifier = new Identifier (nameleft, operatorright, name.getName() + "." + operator.getName());
+    RESULT = identifier;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("selected_component",22, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -7010,15 +7070,16 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 182: // selected_component ::= name DOT used_char 
             {
-              String RESULT =null;
+              Identifier RESULT =null;
 		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
 		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
-		String name = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
-		int usedCharleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int usedCharright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String usedChar = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    RESULT = name + "." + usedChar;
+		Identifier name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
+		int used_charleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int used_charright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		String used_char = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    Identifier identifier = new Identifier (nameleft, used_charright, name.getName() + "." + used_char);
+    RESULT = identifier;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("selected_component",22, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -7027,15 +7088,16 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 181: // selected_component ::= name DOT simple_name 
             {
-              String RESULT =null;
+              Identifier RESULT =null;
 		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
 		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
-		String name = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
-		int simpleNameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int simpleNameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String simpleName = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    RESULT = name + "." + simpleName;
+		Identifier name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
+		int simple_nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int simple_nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Identifier simple_name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    Identifier identifier = new Identifier (nameleft, simple_nameright, name.getName() + "." + simple_name.getName());
+    RESULT = identifier;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("selected_component",22, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -7052,7 +7114,7 @@
     ASTError error = new ASTError(theErrorleft, theErrorright);
     RESULT = error;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("value",169, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("value",171, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7061,7 +7123,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("value",169, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("value",171, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7070,7 +7132,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("value",169, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("value",171, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7079,7 +7141,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("value",169, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("value",171, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7102,12 +7164,12 @@
           return CUP$Ada95ASTParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 174: // indexed_comp ::= name LPAREN value_s RPAREN 
-            {
-              String RESULT =null;
+          case 174: // indexed_component ::= name LPAREN value_s RPAREN 
+            {
+              Identifier RESULT =null;
 		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)).left;
 		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)).right;
-		String name = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)).value;
+		Identifier name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)).value;
 		int indexleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
 		int indexright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
 		Expression index = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
@@ -7115,14 +7177,9 @@
 		int endright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
 		Object end = (Object)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
 		
-    System.out.println ("indexed_comp ::= name => " + name);
-    Identifier identifier = new Identifier(nameleft, nameright, name);
-    //Variable variable = new Variable (nameleft, nameright, name);
-	Variable indexedVar = new ArrayAccess(nameleft, endright, identifier, index, ArrayAccess.Type.VARIABLE_ARRAY);
-    //RESULT = indexedVar;
     RESULT = name;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("indexed_comp",114, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("indexed_component",114, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7149,7 +7206,7 @@
 		List nameList = (List)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
 		int compoundNameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
 		int compoundNameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String compoundName = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		Identifier compoundName = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
 		
     nameList.add(compoundName);
     RESULT = nameList;
@@ -7162,13 +7219,12 @@
           case 171: // library_unit_name_list ::= compound_name 
             {
               List RESULT =null;
-		int compoundNameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int compoundNameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String compoundName = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		int compound_nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int compound_nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Identifier compound_name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
 		
     List nameList = new LinkedList();
-    Identifier id = new Identifier(compoundNameleft, compoundNameright, (String)compoundName);
-    PackageName packageName = new PackageName(compoundNameleft, compoundNameright, id);
+    PackageName packageName = new PackageName(compound_nameleft, compound_nameright, compound_name);
     nameList.add(packageName);
     RESULT = nameList;
 
@@ -7179,15 +7235,15 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 170: // compound_name ::= compound_name DOT simple_name 
             {
-              String RESULT =null;
-		int compoundNameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
-		int compoundNameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
-		String compoundName = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
-		int simpleNameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int simpleNameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String simpleName = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    RESULT = compoundName + "." + simpleName;
+              Identifier RESULT =null;
+		int compound_nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
+		int compound_nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
+		Identifier compound_name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
+		int simple_nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int simple_nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Identifier simple_name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    RESULT = simple_name;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("compound_name",94, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -7196,12 +7252,12 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 169: // compound_name ::= simple_name 
             {
-              String RESULT =null;
-		int simpleNameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int simpleNameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String simpleName = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    RESULT = simpleName;
+              Identifier RESULT =null;
+		int simple_nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int simple_nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Identifier simple_name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    RESULT = simple_name;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("compound_name",94, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -7210,11 +7266,12 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 168: // simple_name ::= IDENTIFIER 
             {
-              String RESULT =null;
-		int identifierleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int identifierright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String identifier = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
+              Identifier RESULT =null;
+		int idleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int idright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		String id = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    Identifier identifier = new Identifier (idleft, idright, id);
     RESULT = identifier;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("simple_name",21, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
@@ -7224,100 +7281,107 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 167: // subtype_mark ::= subtype_mark DOT simple_name 
             {
-              String RESULT =null;
+              NameBase RESULT =null;
+		int subtype_markleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
+		int subtype_markright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
+		NameBase subtype_mark = (NameBase)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
+		int simple_nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int simple_nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Identifier simple_name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    TypeName typeName = new TypeName (simple_nameleft, simple_nameright, simple_name);
+    Dispatch dispatch = parser.createDispatch(subtype_mark, typeName);
+    RESULT = dispatch;
+
+
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("subtype_mark",100, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+            }
+          return CUP$Ada95ASTParser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 166: // subtype_mark ::= subtype_mark TICK attribute_id 
+            {
+              NameBase RESULT =null;
 		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
 		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
-		String name = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
-		int simpleNameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int simpleNameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String simpleName = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    RESULT = name + "." + simpleName;
+		NameBase name = (NameBase)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
+		int idleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int idright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		String id = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    ((TypeName)name).setAttributeId(id);
+    RESULT = name;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("subtype_mark",100, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 166: // subtype_mark ::= subtype_mark TICK attribute_id 
-            {
-              String RESULT =null;
-		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
-		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
-		String name = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
-		
-    // TODO: manage the attribute
-    RESULT = name;
-
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("subtype_mark",100, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
-            }
-          return CUP$Ada95ASTParser$result;
-
-          /*. . . . . . . . . . . . . . . . . . . .*/
           case 165: // subtype_mark ::= simple_name 
             {
-              String RESULT =null;
+              NameBase RESULT =null;
 		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
 		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String name = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    RESULT = name;
+		Identifier name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    TypeName typeName = new TypeName (nameleft, nameright, name);
+    RESULT = typeName;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("subtype_mark",100, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 164: // name ::= operator_symbol 
-            {
-              String RESULT =null;
-		int opleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int opright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String op = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    RESULT = op;
+          case 164: // name ::= attribute 
+            {
+              Identifier RESULT =null;
+		int attributeleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int attributeright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Identifier attribute = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    RESULT = attribute;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("name",20, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 163: // name ::= attribute 
-            {
-              String RESULT =null;
-		int attrleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int attrright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String attr = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    RESULT = attr;
+          case 163: // name ::= selected_component 
+            {
+              Identifier RESULT =null;
+		int selected_componentleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int selected_componentright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Identifier selected_component = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    RESULT = selected_component;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("name",20, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 162: // name ::= selected_component 
-            {
-              String RESULT =null;
-		int compleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int compright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String comp = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    RESULT = comp;
+          case 162: // name ::= indexed_component 
+            {
+              Identifier RESULT =null;
+		int indexed_componentleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int indexed_componentright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Identifier indexed_component = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    RESULT = indexed_component;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("name",20, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 161: // name ::= indexed_comp 
-            {
-              String RESULT =null;
-		int compleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int compright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String comp = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    RESULT = comp;
+          case 161: // name ::= operator_symbol 
+            {
+              Identifier RESULT =null;
+		int operator_symbolleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int operator_symbolright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Identifier operator_symbol = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    RESULT = operator_symbol;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("name",20, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -7326,12 +7390,12 @@
           /*. . . . . . . . . . . . . . . . . . . .*/
           case 160: // name ::= simple_name 
             {
-              String RESULT =null;
-		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
-		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String name = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
-		
-    RESULT = name;
+              Identifier RESULT =null;
+		int simple_nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int simple_nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Identifier simple_name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    RESULT = simple_name;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("name",20, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -7459,7 +7523,7 @@
 		
     RESULT = statement;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("declarative_item_or_body",167, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("declarative_item_or_body",170, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7473,7 +7537,7 @@
 		
     RESULT = statement;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("declarative_item_or_body",167, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("declarative_item_or_body",170, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7703,7 +7767,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("prot_opt",165, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("prot_opt",168, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7712,7 +7776,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("prot_opt",165, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("prot_opt",168, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7721,7 +7785,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("access_type",132, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("access_type",135, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7730,7 +7794,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("access_type",132, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("access_type",135, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7739,7 +7803,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("access_type",132, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("access_type",135, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7748,7 +7812,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("access_type",132, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("access_type",135, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7757,7 +7821,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("access_type",132, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("access_type",135, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7766,7 +7830,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("discrete_with_range",164, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("discrete_with_range",167, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7775,7 +7839,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("discrete_with_range",164, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("discrete_with_range",167, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7784,7 +7848,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("choice",163, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("choice",166, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7793,7 +7857,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("choice",163, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("choice",166, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7802,7 +7866,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("choice",163, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("choice",166, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7829,7 +7893,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("variant",162, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("variant",165, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7838,7 +7902,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("variant_s",161, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("variant_s",164, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7847,7 +7911,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("variant_s",161, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("variant_s",164, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7856,7 +7920,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("variant_part",157, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-7)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("variant_part",160, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-7)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7865,7 +7929,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("access_opt",160, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("access_opt",163, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7874,7 +7938,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("access_opt",160, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("access_opt",163, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7889,7 +7953,7 @@
     ASTError error = new ASTError(theErrorleft, theErrorright);
     RESULT = error;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("discrim_spec",159, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("discrim_spec",162, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7898,7 +7962,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("discrim_spec",159, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("discrim_spec",162, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7907,7 +7971,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("discrim_spec_s",158, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("discrim_spec_s",161, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7916,7 +7980,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("discrim_spec_s",158, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("discrim_spec_s",161, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7925,7 +7989,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("discrim_part",126, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("discrim_part",129, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7940,7 +8004,7 @@
     ASTError error = new ASTError(theErrorleft, theErrorright);
     RESULT = error;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("comp_decl",155, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("comp_decl",158, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7949,7 +8013,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("comp_decl",155, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("comp_decl",158, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7958,7 +8022,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("variant_part_opt",156, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("variant_part_opt",159, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7967,7 +8031,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("variant_part_opt",156, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("variant_part_opt",159, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7976,7 +8040,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("comp_decl_s",154, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("comp_decl_s",157, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7985,7 +8049,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("comp_decl_s",154, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("comp_decl_s",157, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -7994,7 +8058,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("comp_list",153, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("comp_list",156, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8003,7 +8067,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("comp_list",153, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("comp_list",156, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8012,7 +8076,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("comp_list",153, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("comp_list",156, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8054,7 +8118,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("record_def",138, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("record_def",141, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8063,7 +8127,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("record_def",138, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("record_def",141, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8072,7 +8136,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("record_type",131, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("record_type",134, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8081,7 +8145,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("range_constr_opt",137, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("range_constr_opt",140, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8090,7 +8154,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("range_constr_opt",137, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("range_constr_opt",140, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8122,7 +8186,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("iter_discrete_range_s",152, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("iter_discrete_range_s",155, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8131,7 +8195,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("iter_discrete_range_s",152, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("iter_discrete_range_s",155, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8140,7 +8204,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("iter_index_constraint",151, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("iter_index_constraint",154, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8149,7 +8213,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("index",148, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("index",151, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8158,7 +8222,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("index_s",147, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("index_s",150, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8167,7 +8231,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("index_s",147, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("index_s",150, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8176,7 +8240,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("aliased_opt",150, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("aliased_opt",153, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8185,7 +8249,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("aliased_opt",150, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("aliased_opt",153, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8194,7 +8258,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("component_subtype_def",149, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("component_subtype_def",152, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8203,7 +8267,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("constr_array_type",146, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("constr_array_type",149, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8212,7 +8276,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("unconstr_array_type",145, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("unconstr_array_type",148, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8221,7 +8285,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("array_type",130, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("array_type",133, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8230,7 +8294,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("array_type",130, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("array_type",133, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8239,7 +8303,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("fixed_type",144, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("fixed_type",147, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8248,7 +8312,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("fixed_type",144, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("fixed_type",147, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8257,7 +8321,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("float_type",143, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("float_type",146, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8266,7 +8330,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("real_type",129, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("real_type",132, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8275,7 +8339,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("real_type",129, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("real_type",132, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8284,7 +8348,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("range_spec_opt",142, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("range_spec_opt",145, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8293,7 +8357,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("range_spec_opt",142, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("range_spec_opt",145, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8302,7 +8366,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("range_spec",141, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("range_spec",144, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8311,7 +8375,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("integer_type",128, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("integer_type",131, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8320,7 +8384,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("integer_type",128, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("integer_type",131, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8329,7 +8393,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("enum_id",140, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("enum_id",143, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8338,7 +8402,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("enum_id",140, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("enum_id",143, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8347,7 +8411,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("enum_id_s",139, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("enum_id_s",142, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8356,7 +8420,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("enum_id_s",139, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("enum_id_s",142, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8365,7 +8429,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("enumeration_type",127, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("enumeration_type",130, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8375,12 +8439,16 @@
               Expression RESULT =null;
 		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)).left;
 		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)).right;
-		String name = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)).value;
-		int exprleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
-		int exprright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
-		Expression expr = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
-		
-    RESULT = expr;
+		Identifier name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)).value;
+		int expressionleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
+		int expressionright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
+		Expression expression = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
+		int endleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int endright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Object end = (Object)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    Range range = new Range (nameleft, endright, name, expression);
+    RESULT = range;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("range",117, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -8390,6 +8458,15 @@
           case 60: // range ::= name TICK RANGE 
             {
               Expression RESULT =null;
+		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
+		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
+		Identifier name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
+		int endleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int endright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Object end = (Object)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    Range range = new Range (nameleft, endright, name, name);
+    RESULT = range;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("range",117, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -8399,11 +8476,15 @@
           case 59: // range ::= simple_expression DOT_DOT simple_expression 
             {
               Expression RESULT =null;
-		int simple_exprleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
-		int simple_exprright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
-		Expression simple_expr = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
-		
-    RESULT = simple_expr;
+		int simple_expression1left = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).left;
+		int simple_expression1right = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).right;
+		Expression simple_expression1 = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)).value;
+		int simple_expression2left = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
+		int simple_expression2right = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
+		Expression simple_expression2 = (Expression)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		
+    Range range = new Range (simple_expression1left, simple_expression2right, simple_expression1, simple_expression2);
+    RESULT = range;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("range",117, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
@@ -8414,7 +8495,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("range_constraint",135, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("range_constraint",138, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8423,7 +8504,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("derived_type",133, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("derived_type",136, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8432,7 +8513,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("derived_type",133, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("derived_type",136, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-4)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8441,7 +8522,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("derived_type",133, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("derived_type",136, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8450,7 +8531,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("derived_type",133, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("derived_type",136, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-3)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8459,7 +8540,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("derived_type",133, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("derived_type",136, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8468,7 +8549,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("decimal_digits_constraint",136, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("decimal_digits_constraint",139, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8477,7 +8558,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("constraint",134, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("constraint",137, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8486,7 +8567,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("constraint",134, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("constraint",137, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8496,10 +8577,9 @@
               TypeName RESULT =null;
 		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).left;
 		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()).right;
-		String name = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
+		Identifier name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.peek()).value;
 		    
-    Identifier identifier = new Identifier(nameleft, nameright, name);
-    TypeName type = new TypeName (nameleft, nameright, identifier);
+    TypeName type = new TypeName (nameleft, nameright, name);
     RESULT = type;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("subtype_indication",15, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
@@ -8512,10 +8592,9 @@
               TypeName RESULT =null;
 		int nameleft = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).left;
 		int nameright = ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).right;
-		String name = (String)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
-		    
-    Identifier identifier = new Identifier(nameleft, nameright, name);
-    TypeName type = new TypeName (nameleft, nameright, identifier);
+		Identifier name = (Identifier)((java_cup.runtime.Symbol) CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)).value;
+		
+    TypeName type = new TypeName (nameleft, nameright, name);
     RESULT = type;
 
               CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("subtype_indication",15, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
@@ -8653,7 +8732,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("discrim_part_opt",125, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("discrim_part_opt",128, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8662,7 +8741,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("discrim_part_opt",125, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("discrim_part_opt",128, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -8671,7 +8750,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("discrim_part_opt",125, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("discrim_part_opt",128, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -9038,7 +9117,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("pragma_s",121, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("pragma_s",124, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-1)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -9047,7 +9126,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("pragma_s",121, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("pragma_s",124, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -9056,7 +9135,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("pragma_arg",120, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("pragma_arg",123, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -9065,7 +9144,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("pragma_arg",120, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("pragma_arg",123, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -9074,7 +9153,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("pragma_arg_s",119, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("pragma_arg_s",122, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -9083,7 +9162,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("pragma_arg_s",119, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("pragma_arg_s",122, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -9092,7 +9171,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("pragma",118, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("pragma",121, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-5)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
@@ -9101,7 +9180,7 @@
             {
               Object RESULT =null;
 
-              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("pragma",118, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
+              CUP$Ada95ASTParser$result = parser.getSymbolFactory().newSymbol("pragma",121, ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.elementAt(CUP$Ada95ASTParser$top-2)), ((java_cup.runtime.Symbol)CUP$Ada95ASTParser$stack.peek()), RESULT);
             }
           return CUP$Ada95ASTParser$result;
 
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/parser/Ada95ASTSymbols.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/parser/Ada95ASTSymbols.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/parser/Ada95ASTSymbols.java	Sun Aug 22 23:37:11 2010 +0200
@@ -1,7 +1,7 @@
 
 //----------------------------------------------------
 // The following code was generated by CUP v0.11a beta 20060608
-// Tue Sep 22 18:19:43 CEST 2009
+// Thu Oct 01 15:49:41 CEST 2009
 //----------------------------------------------------
 
 package org.netbeans.modules.ada.editor.parser;
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/parser/Ada95ErrorHandler.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/parser/Ada95ErrorHandler.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/parser/Ada95ErrorHandler.java	Sun Aug 22 23:37:11 2010 +0200
@@ -96,23 +96,23 @@
         this.outer = outer;
         this.context = context;
         syntaxErrors = new ArrayList();
-        //LOGGER.setLevel(Level.FINEST);
+        //LOGGER.setLevel(Level.FINE);
     }
 
     public void handleError(Type type, short[] expectedtokens, Symbol current, Symbol previous) {
         Error error;
         if (type == ParserErrorHandler.Type.SYNTAX_ERROR) {
             // logging syntax error
-            if (LOGGER.isLoggable(Level.FINEST)) {
-                LOGGER.finest("Syntax error:"); //NOI18N
-                LOGGER.finest("Current [" + current.left + ", " + current.right + "](" + Utils.getASTScannerTokenName(current.sym) + "): " + current.value); //NOI18N
-                LOGGER.finest("Previous [" + previous.left + ", " + previous.right + "] (" + Utils.getASTScannerTokenName(previous.sym) + "):" + previous.value); //NOI18N
+            if (LOGGER.isLoggable(Level.FINE)) {
+                LOGGER.fine("Syntax error:"); //NOI18N
+                LOGGER.fine("Current [" + current.left + ", " + current.right + "](" + Utils.getASTScannerTokenName(current.sym) + "): " + current.value); //NOI18N
+                LOGGER.fine("Previous [" + previous.left + ", " + previous.right + "] (" + Utils.getASTScannerTokenName(previous.sym) + "):" + previous.value); //NOI18N
                 StringBuffer message = new StringBuffer();
                 message.append("Expected tokens:"); //NOI18N
                 for (int i = 0; i < expectedtokens.length; i += 2) {
                     message.append(" ").append( Utils.getASTScannerTokenName(expectedtokens[i])); //NOI18N
                 }
-                LOGGER.finest(message.toString());
+                LOGGER.fine(message.toString());
             }
             syntaxErrors.add(new SyntaxError(expectedtokens, current, previous));
         } else {
@@ -163,9 +163,9 @@
                     }
                 }
                 if (astError != null) {
-                    LOGGER.finest("ASTError [" + astError.getStartOffset() + ", " + astError.getEndOffset() + "]"); //NOI18N
+                    LOGGER.fine("ASTError [" + astError.getStartOffset() + ", " + astError.getEndOffset() + "]"); //NOI18N
                 } else {
-                    LOGGER.finest("ASTError was not found");  //NOI18N
+                    LOGGER.fine("ASTError was not found");  //NOI18N
                 }
             }
             Error error = defaultSyntaxErrorHandling(syntaxError, astError);
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/parser/AdaSemanticAnalyzer.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/parser/AdaSemanticAnalyzer.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/parser/AdaSemanticAnalyzer.java	Sun Aug 22 23:37:11 2010 +0200
@@ -44,6 +44,8 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 import org.netbeans.modules.ada.editor.ast.ASTNode;
 import org.netbeans.modules.ada.editor.ast.nodes.Block;
 import org.netbeans.modules.ada.editor.ast.nodes.BodyDeclaration.Modifier;
@@ -53,6 +55,7 @@
 import org.netbeans.modules.ada.editor.ast.nodes.PackageBody;
 import org.netbeans.modules.ada.editor.ast.nodes.PackageSpecification;
 import org.netbeans.modules.ada.editor.ast.nodes.TypeDeclaration;
+import org.netbeans.modules.ada.editor.ast.nodes.TypeName;
 import org.netbeans.modules.ada.editor.ast.nodes.Variable;
 import org.netbeans.modules.ada.editor.ast.nodes.visitors.DefaultVisitor;
 import org.netbeans.modules.csl.api.ColoringAttributes;
@@ -71,6 +74,8 @@
  */
 public class AdaSemanticAnalyzer extends SemanticAnalyzer {
 
+    private static final Logger LOGGER = Logger.getLogger(AdaSemanticAnalyzer.class.getName());
+
     public static final EnumSet UNUSED_FIELD_SET = EnumSet.of(ColoringAttributes.UNUSED, ColoringAttributes.FIELD);
     public static final EnumSet UNUSED_METHOD_SET = EnumSet.of(ColoringAttributes.UNUSED, ColoringAttributes.METHOD);
     private boolean cancelled;
@@ -78,6 +83,7 @@
 
     public AdaSemanticAnalyzer() {
         semanticHighlights = null;
+        LOGGER.setLevel(Level.FINE);
     }
 
     public Map> getHighlights() {
@@ -202,32 +208,6 @@
         }
 
         @Override
-        public void visit(MethodDeclaration method) {
-            boolean isPrivate = Modifier.isPrivate(method.getModifier());
-            EnumSet coloring = ColoringAttributes.METHOD_SET;
-
-            Identifier identifier = method.getSubrogramName();
-            addOffsetRange(identifier, coloring);
-            if (!method.isSpefication()) {
-                Identifier nameEnd = method.getSubrogramNameEnd();
-                addOffsetRange(nameEnd, coloring);
-            }
-
-            if (method.getSubprogramBody() != null) {
-                // don't scan the body now. It should be scanned after all declarations
-                // are known
-                Block declarations = method.getSubprogramBody().getDeclarations();
-                if (declarations != null) {
-                    needToScan.add(declarations);
-                }
-                Block body = method.getSubprogramBody().getBody();
-                if (body != null) {
-                    needToScan.add(body);
-                }
-            }
-        }
-
-        @Override
         public void visit(PackageBody node) {
             if (isCancelled()) {
                 return;
@@ -260,6 +240,59 @@
         }
 
         @Override
+        public void visit(MethodDeclaration method) {
+            if (isCancelled()) {
+                return;
+            }
+
+            boolean isPrivate = Modifier.isPrivate(method.getModifier());
+            EnumSet coloring = ColoringAttributes.METHOD_SET;
+
+            Identifier identifier = method.getSubrogramName();
+            addOffsetRange(identifier, coloring);
+            if (!method.isSpefication()) {
+                Identifier nameEnd = method.getSubrogramNameEnd();
+                if (nameEnd != null) {
+                    addOffsetRange(nameEnd, coloring);
+                }
+            }
+
+            if (method.getSubprogramBody() != null) {
+                // don't scan the body now. It should be scanned after all declarations
+                // are known
+                Block declarations = method.getSubprogramBody().getDeclarations();
+                if (declarations != null) {
+                    declarations.accept(this);
+                }
+                Block body = method.getSubprogramBody().getBody();
+                if (body != null) {
+                    body.accept(this);
+                }
+            }
+        }
+
+//        @Override
+//        public void visit(BlockStatement block) {
+//            System.out.println("BlockStatement");
+//            if (block.getLabel() != null) {
+//                EnumSet coloring = ColoringAttributes.METHOD_SET;
+//                Identifier identifier = block.getLabel();
+//                addOffsetRange(identifier, coloring);
+//            }
+//
+//            // don't scan the body now. It should be scanned after all declarations
+//            // are known
+//            Block declarations = block.getDeclarations();
+//            if (declarations != null) {
+//                needToScan.add(declarations);
+//            }
+//            Block body = block.getBody();
+//            if (body != null) {
+//                needToScan.add(body);
+//            }
+//        }
+
+        @Override
         public void visit(FieldsDeclaration node) {
             if (isCancelled()) {
                 return;
@@ -279,6 +312,10 @@
                         privateFieldsUsed.put(identifier.getName(), new IdentifierColoring(identifier, coloring));
                     }
                 }
+                if (variable.getVariableType() != null) {
+                    TypeName typeName = variable.getVariableType();
+                    typeName.accept(this);
+                }
             }
         }
 
@@ -298,5 +335,27 @@
                 privateFieldsUsed.put(id.getName(), new IdentifierColoring(id, coloring));
             }
         }
+
+        @Override
+        public void visit(Variable node) {
+            if (isCancelled()) {
+                return;
+            }
+
+            Identifier id = node.getName();
+            addOffsetRange(id, ColoringAttributes.FIELD_SET);
+        }
+
+        @Override
+        public void visit(TypeName node) {
+            if (isCancelled()) {
+                return;
+            }
+
+            if (node.isIsBaseType() == false) {
+                Identifier id = node.getTypeName();
+                addOffsetRange(id, ColoringAttributes.FIELD_SET);
+            }
+        }
     }
 }
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/parser/AdaStructureScanner.java
--- a/ada.editor/src/org/netbeans/modules/ada/editor/parser/AdaStructureScanner.java	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/parser/AdaStructureScanner.java	Sun Aug 22 23:37:11 2010 +0200
@@ -50,9 +50,11 @@
 import java.util.logging.Logger;
 import javax.swing.ImageIcon;
 import javax.swing.text.Document;
+import org.netbeans.modules.ada.editor.CodeUtils;
 import org.netbeans.modules.ada.editor.ast.ASTError;
 import org.netbeans.modules.ada.editor.ast.ASTUtils;
 import org.netbeans.modules.ada.editor.ast.nodes.Block;
+import org.netbeans.modules.ada.editor.ast.nodes.BlockStatement;
 import org.netbeans.modules.ada.editor.ast.nodes.Comment;
 import org.netbeans.modules.ada.editor.ast.nodes.Expression;
 import org.netbeans.modules.ada.editor.ast.nodes.FieldsDeclaration;
@@ -62,7 +64,9 @@
 import org.netbeans.modules.ada.editor.ast.nodes.PackageSpecification;
 import org.netbeans.modules.ada.editor.ast.nodes.SubprogramBody;
 import org.netbeans.modules.ada.editor.ast.nodes.SubprogramSpecification;
+import org.netbeans.modules.ada.editor.ast.nodes.TypeAccess;
 import org.netbeans.modules.ada.editor.ast.nodes.TypeDeclaration;
+import org.netbeans.modules.ada.editor.ast.nodes.TypeName;
 import org.netbeans.modules.ada.editor.ast.nodes.Variable;
 import org.netbeans.modules.ada.editor.ast.nodes.visitors.DefaultVisitor;
 import org.netbeans.modules.ada.editor.parser.AdaElementHandle.SubprogramSpecificationHandle;
@@ -402,7 +406,7 @@
                     }
                     String type = null;
                     if (formalParameter.getParameterType() != null) {
-                        type = formalParameter.getParameterType().getTypeName().getName();
+                        type = CodeUtils.extractTypeName(formalParameter.getParameterType());
                     }
                     if (name != null) {
                         if (!first) {
@@ -469,7 +473,7 @@
                     }
                     String type = null;
                     if (formalParameter.getParameterType() != null) {
-                        type = formalParameter.getParameterType().getTypeName().getName();
+                        type = CodeUtils.extractTypeName(formalParameter.getParameterType());
                     }
                     if (name != null) {
                         if (!first) {
@@ -690,6 +694,20 @@
         }
 
         @Override
+        public void visit(BlockStatement block) {
+            if (foldType != null) {
+                getRanges(folds, foldType).add(createOffsetRange(block));
+                foldType = null;
+            }
+            if (block.getDeclarations() != null) {
+                scan(block.getDeclarations());
+            }
+            if (block.getBody() != null) {
+                scan(block.getBody());
+            }
+        }
+
+        @Override
         public void visit(SubprogramBody subprog) {
             foldType = FOLD_CODE_BLOCKS;
             if (subprog.getDeclarations() != null) {
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/parser/resources/Ada95ASTParser.cup
--- a/ada.editor/src/org/netbeans/modules/ada/editor/parser/resources/Ada95ASTParser.cup	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/parser/resources/Ada95ASTParser.cup	Sun Aug 22 23:37:11 2010 +0200
@@ -22,7 +22,7 @@
  * "Portions Copyrighted [year] [name of copyright owner]"
  *
  * If you wish your version of this file to be governed by only the CDDL
- * or only the GPL Version 2, indicate your decision by binary_adding_operator
+ * or only the GPL Version 2, indicate your decision by adding
  * "[Contributor] elects to include this software in this distribution
  * under the [CDDL or GPL Version 2] license." If you do not indicate a
  * single choice of license, a recipient has the option to distribute
@@ -63,21 +63,19 @@
         return this.errorHandler;
     }
 
-/*
-    public Dispatch createDispatch(VariableBase dispatcher, VariableBase property) {
+
+    public Dispatch createDispatch(NameBase dispatcher, NameBase property) {
         Dispatch dispatch = null;
 	if (property instanceof Variable) {
 	   dispatch = new FieldAccess(dispatcher.getStartOffset(), property.getEndOffset(), dispatcher, (Variable)property);
-	} else if (property instanceof FunctionInvocation) {
-	   dispatch = new MethodInvocation(dispatcher.getStartOffset(), property.getEndOffset(), dispatcher, (FunctionInvocation)property);
-	} else if (property instanceof ProcedureInvocation) {
-	   dispatch = new MethodInvocation(dispatcher.getStartOffset(), property.getEndOffset(), dispatcher, (ProcedureInvocation)property);
+	} else if (property instanceof TypeName) {
+	   dispatch = new TypeAccess(dispatcher.getStartOffset(), property.getEndOffset(), dispatcher, (TypeName)property);
 	} else {
 	   throw new IllegalArgumentException();
 	}
         return dispatch;
     }
-*/
+
 
     public List setModifier(List items, int modifier) {
         List list = new LinkedList();
@@ -358,11 +356,11 @@
 non terminal List                    number_declaration;
 
 // 4.1 Names
-non terminal String                  name;
-non terminal String                  simple_name;
+non terminal Identifier              name;
+non terminal Identifier              simple_name;
 
 // 4.1.3 Selected Components
-non terminal String                  selected_component;
+non terminal Identifier              selected_component;
 
 // 4.4 Expressions
 non terminal Expression              expression;
@@ -373,11 +371,11 @@
 non terminal Expression              primary;
 
 // 4.5 Operators and Expression Evaluation
-non terminal String                  logical_operator;
-non terminal String                  relational_operator;
-non terminal UnaryOperation.Operator binary_adding_operator;
-non terminal UnaryOperation.Operator unary_adding_operator;
-non terminal String                  multiplying_operator;
+non terminal InfixExpression.OperatorType logical_operator;
+non terminal InfixExpression.OperatorType relational_operator;
+non terminal InfixExpression.OperatorType binary_adding_operator;
+non terminal UnaryOperation.Operator      unary_adding_operator;
+non terminal InfixExpression.OperatorType multiplying_operator;
 
 // 4.7 Qualified Expressions
 non terminal Expression              qualified_expression;
@@ -414,7 +412,7 @@
 
 // 5.7 Exit Statements
 non terminal Statement               exit_statement;
-non terminal String                  name_opt;
+non terminal Expression              name_opt;
 
 // 5.8 Goto Statements
 non terminal Statement               goto_statement;
@@ -428,8 +426,8 @@
 non terminal List                    formal_part;
 non terminal List                    param;
 non terminal FormalParameter.Mode    mode;
-non terminal String                  designator;
-non terminal String                  operator_symbol;
+non terminal Identifier              designator;
+non terminal Identifier              operator_symbol;
 
 // 6.5 Return Statements
 non terminal Statement               return_statement;
@@ -491,30 +489,33 @@
 
 
 // TBD sections
-non terminal String                  compound_name;
-non terminal String                  compound_name_opt;
-non terminal TypeName                object_subtype_def;
-non terminal Expression              init_opt;
-non terminal Statement               type_decl;
-non terminal Expression              type_completion;
-non terminal String                  subtype_mark;
-non terminal List                    handled_stmt_s;
-non terminal Statement               statement;
-non terminal Statement               subunit;
-non terminal String                  id_opt;
-non terminal Statement               unlabeled;
-non terminal Expression              literal;
-non terminal Expression              parenthesized_primary;
-non terminal Expression              when_opt;
-non terminal Statement               procedure_call_statement;
-non terminal String                  used_char;
-non terminal Expression              choice_s;
-non terminal String                  label_opt;
-non terminal String                  attribute;
-non terminal String                  indexed_comp; // TODO: must be change it
-non terminal Expression              value_s;
-non terminal Expression              discrete_range;
-non terminal Expression              range;
+non terminal Identifier                   compound_name;
+non terminal Identifier                   compound_name_opt;
+non terminal TypeName                     object_subtype_def;
+non terminal Expression                   init_opt;
+non terminal Statement                    type_decl;
+non terminal Expression                   type_completion;
+non terminal NameBase                     subtype_mark;
+non terminal List                         handled_stmt_s;
+non terminal Statement                    statement;
+non terminal Statement                    subunit;
+non terminal Identifier                   id_opt;
+non terminal Statement                    unlabeled;
+non terminal Expression                   literal;
+non terminal Expression                   parenthesized_primary;
+non terminal Expression                   when_opt;
+non terminal Statement                    procedure_call_statement;
+non terminal String                       used_char;
+non terminal Expression                   choice_s;
+non terminal Identifier                   label_opt;
+non terminal Identifier                   attribute;
+non terminal Identifier                   indexed_component; // TODO: must be change it
+non terminal Expression                   value_s;
+non terminal Expression                   discrete_range;
+non terminal Expression                   range;
+non terminal InfixExpression.OperatorType short_circuit;
+non terminal InfixExpression.OperatorType membership;
+non terminal String                       attribute_id;
 
 // TBD RM sections and types
 non terminal     pragma;
@@ -567,13 +568,10 @@
 non terminal     prot_opt;
 non terminal     rep_spec;
 non terminal     declarative_item_or_body;
-non terminal     attribute_id;
 non terminal     value;
 non terminal     comp_assoc;
 non terminal     aggregate;
 non terminal     value_s_2;
-non terminal     short_circuit;
-non terminal     membership;
 non terminal     allocator;
 non terminal     label;
 non terminal     requeue_stmt;
@@ -635,15 +633,21 @@
  * JavaCup precedence    *
  *************************/
 
-//precedence left OR;
-//precedence left XOR;
-//precedence left AND;
+// TODO: must be complete
+precedence left OR;
+precedence left XOR;
+precedence left AND;
 
-//precedence left SEMICOLON;
+precedence left SEMICOLON;
 
-//precedence left ELSIF;
-//precedence left ELSE;
-//precedence left END IF;
+precedence left ELSIF;
+precedence left ELSE;
+precedence left END;
+
+precedence right NOT;
+
+precedence nonassoc ASSIGNMENT;
+
 
 ///////////////////////////////////////////////////////////////////////////////
 // start with root symbol 
@@ -862,15 +866,13 @@
 
 subtype_indication ::= 
 name:name constraint
-{:    
-    Identifier identifier = new Identifier(nameleft, nameright, name);
-    TypeName type = new TypeName (nameleft, nameright, identifier);
+{:
+    TypeName type = new TypeName (nameleft, nameright, name);
     RESULT = type;
 :}
 | name:name
 {:    
-    Identifier identifier = new Identifier(nameleft, nameright, name);
-    TypeName type = new TypeName (nameleft, nameright, identifier);
+    TypeName type = new TypeName (nameleft, nameright, name);
     RESULT = type;
 :}
 ;
@@ -893,14 +895,20 @@
 	;
 
 range ::=
-simple_expression:simple_expr DOT_DOT simple_expression
+simple_expression:simple_expression1 DOT_DOT simple_expression:simple_expression2
 {:
-    RESULT = simple_expr;
+    Range range = new Range (simple_expression1left, simple_expression2right, simple_expression1, simple_expression2);
+    RESULT = range;
 :}
-| name TICK RANGE
-| name:name TICK RANGE LPAREN expression:expr RPAREN
+| name:name TICK RANGE:end
 {:
-    RESULT = expr;
+    Range range = new Range (nameleft, endright, name, name);
+    RESULT = range;
+:}
+| name:name TICK RANGE LPAREN expression:expression RPAREN:end
+{:
+    Range range = new Range (nameleft, endright, name, expression);
+    RESULT = range;
 :}
 ;
 
@@ -1209,70 +1217,80 @@
 :}
 ;
 
-
 name ::=
-simple_name:name
+simple_name:simple_name // direct_name
 {:
-    RESULT = name;
+    RESULT = simple_name;
 :}
-| indexed_comp:comp
+| operator_symbol:operator_symbol // direct_name
 {:
-    RESULT = comp;
+    RESULT = operator_symbol;
 :}
-| selected_component:comp
+| indexed_component:indexed_component
 {:
-    RESULT = comp;
+    RESULT = indexed_component;
 :}
-| attribute:attr
+| selected_component:selected_component
 {:
-    RESULT = attr;
+    RESULT = selected_component;
 :}
-| operator_symbol:op
+| attribute:attribute
 {:
-    RESULT = op;
+    RESULT = attribute;
 :}
 ;
 
 subtype_mark ::=
 simple_name:name
 {:
+    TypeName typeName = new TypeName (nameleft, nameright, name);
+    RESULT = typeName;
+:}
+| subtype_mark:name TICK attribute_id:id
+{:
+    ((TypeName)name).setAttributeId(id);
     RESULT = name;
 :}
-| subtype_mark:name TICK attribute_id
+| subtype_mark:subtype_mark DOT simple_name:simple_name
 {:
-    // TODO: manage the attribute
-    RESULT = name;
-:}
-| subtype_mark:name DOT simple_name:simpleName
-{:
-    RESULT = name + "." + simpleName;
+    Dispatch dispatch;
+    TypeName typeName = new TypeName (simple_nameleft, simple_nameright, simple_name);
+    if (subtype_mark instanceof TypeName) {
+        PackageName packageName = new PackageName (subtype_markleft, subtype_markright, ((TypeName)subtype_mark).getTypeName());
+        dispatch = parser.createDispatch(packageName, typeName);
+    } else {
+        dispatch = parser.createDispatch(subtype_mark, typeName);
+    }
+
+    RESULT = dispatch;
 :}
 ;
 
 simple_name ::=
-IDENTIFIER:identifier
+IDENTIFIER:id
 {:
+    Identifier identifier = new Identifier (idleft, idright, id);
     RESULT = identifier;
 :}
 ;
 
+// TODO: must be create a list of identifiers
 compound_name ::=
-simple_name:simpleName
+simple_name:simple_name
 {:
-    RESULT = simpleName;
+    RESULT = simple_name;
 :}
-| compound_name:compoundName DOT simple_name:simpleName
+| compound_name:compound_name DOT simple_name:simple_name
 {:
-    RESULT = compoundName + "." + simpleName;
+    RESULT = simple_name;
 :}
 ;
 
 library_unit_name_list ::=
-compound_name:compoundName
+compound_name:compound_name
 {:
     List nameList = new LinkedList();
-    Identifier id = new Identifier(compoundNameleft, compoundNameright, (String)compoundName);
-    PackageName packageName = new PackageName(compoundNameleft, compoundNameright, id);
+    PackageName packageName = new PackageName(compound_nameleft, compound_nameright, compound_name);
     nameList.add(packageName);
     RESULT = nameList;
 :}
@@ -1290,14 +1308,9 @@
 :}
 ;
 
-indexed_comp ::=
+indexed_component ::=
 name:name LPAREN value_s:index RPAREN:end
 {:
-    System.out.println ("indexed_comp ::= name => " + name);
-    Identifier identifier = new Identifier(nameleft, nameright, name);
-    //Variable variable = new Variable (nameleft, nameright, name);
-	Variable indexedVar = new ArrayAccess(nameleft, endright, identifier, index, ArrayAccess.Type.VARIABLE_ARRAY);
-    //RESULT = indexedVar;
     RESULT = name;
 :}
 ;
@@ -1320,21 +1333,25 @@
 // 4.1.3 Selected Components
 //
 selected_component ::=
-name:name DOT simple_name:simpleName
+name:name DOT simple_name:simple_name
 {:
-    RESULT = name + "." + simpleName;
+    Identifier identifier = new Identifier (nameleft, simple_nameright, name.getName() + "." + simple_name.getName());
+    RESULT = identifier;
 :}
-| name:name DOT used_char:usedChar
+| name:name DOT used_char:used_char
 {:
-    RESULT = name + "." + usedChar;
+    Identifier identifier = new Identifier (nameleft, used_charright, name.getName() + "." + used_char);
+    RESULT = identifier;
 :}
 | name:name DOT operator_symbol:operator
 {:
-    RESULT = name + "." + operator;
+    Identifier identifier = new Identifier (nameleft, operatorright, name.getName() + "." + operator.getName());
+    RESULT = identifier;
 :}
 | name:name DOT ALL:all
 {:
-    RESULT = name + "." + all;
+    Identifier identifier = new Identifier (nameleft, allright, name.getName() + "." + "all");
+    RESULT = identifier;
 :}
 ;
 
@@ -1345,29 +1362,34 @@
 :}
 ;
 
-attribute_id ::= IDENTIFIER
-	| DIGITS
-	| DELTA
-	| ACCESS
-	;
+attribute_id ::=
+IDENTIFIER
+| DIGITS
+| DELTA
+| ACCESS
+;
 
 literal ::=
 DECIMAL_LITERAL:dec
 {:
-	Scalar scalar = new Scalar(decleft, decright, dec, Scalar.Type.INT);
-	RESULT = scalar;
+    Scalar scalar = new Scalar(decleft, decright, dec, Scalar.Type.INT);
+    RESULT = scalar;
 :}
 | BASED_LITERAL:dec
 {:
-	Scalar scalar = new Scalar(decleft, decright, dec, Scalar.Type.INT);
-	RESULT = scalar;
+    Scalar scalar = new Scalar(decleft, decright, dec, Scalar.Type.INT);
+    RESULT = scalar;
 :}
 | used_char:usedChar
 {:
-	Scalar scalar = new Scalar(usedCharleft, usedCharright, usedChar, Scalar.Type.STRING);
-	RESULT = scalar;
+    Scalar scalar = new Scalar(usedCharleft, usedCharright, usedChar, Scalar.Type.STRING);
+    RESULT = scalar;
 :}
-| NULL
+| NULL:token
+{:
+    Scalar scalar = new Scalar(tokenleft, tokenright, "null", Scalar.Type.SYSTEM);
+    RESULT = scalar;
+:}
 ;
 
 aggregate ::= LPAREN comp_assoc RPAREN
@@ -1390,27 +1412,67 @@
 //
 logical_operator ::=
 AND
+{:
+    RESULT = InfixExpression.OperatorType.BOOL_AND;
+:}
 | OR
+{:
+    RESULT = InfixExpression.OperatorType.BOOL_OR;
+:}
 | XOR
+{:
+    RESULT = InfixExpression.OperatorType.BOOL_XOR;
+:}
 ;
 
-short_circuit ::= AND THEN
-	| OR ELSE
-	;
-
+short_circuit ::=
+AND THEN
+{:
+    RESULT = InfixExpression.OperatorType.BOOL_OR;
+:}
+| OR ELSE
+{:
+    RESULT = InfixExpression.OperatorType.BOOL_AND;
+:}
+;
 
 relational_operator ::=
 EQ
+{:
+    RESULT = InfixExpression.OperatorType.IS_EQUAL;
+:}
 | INEQ
+{:
+    RESULT = InfixExpression.OperatorType.IS_NOT_EQUAL;
+:}
 | GT
+{:
+    RESULT = InfixExpression.OperatorType.RGREATER;
+:}
 | LTEQ
+{:
+    RESULT = InfixExpression.OperatorType.IS_SMALLER_OR_EQUAL;
+:}
 | LT
+{:
+    RESULT = InfixExpression.OperatorType.LGREATER;
+:}
 | GTEQ
+{:
+    RESULT = InfixExpression.OperatorType.IS_GREATER_OR_EQUAL;
+:}
 ;
 
-membership ::= IN
-	| NOT IN
-	;
+membership ::=
+IN
+{:
+    RESULT = InfixExpression.OperatorType.IN;
+:}
+| NOT IN
+{:
+    RESULT = InfixExpression.OperatorType.NOT_IN;
+:}
+;
 
 unary_adding_operator ::=
 PLUS
@@ -1426,79 +1488,93 @@
 binary_adding_operator ::= 
 PLUS
 {:
-    RESULT = UnaryOperation.Operator.PLUS;
+    RESULT = InfixExpression.OperatorType.PLUS;
 :}
 | MINUS
 {:
-    RESULT = UnaryOperation.Operator.MINUS;
+    RESULT = InfixExpression.OperatorType.MINUS;
 :}
 | AMP
 {:
-    RESULT = UnaryOperation.Operator.AMP;
+    RESULT = InfixExpression.OperatorType.STRING_AND;
 :}
 ;
 
 multiplying_operator ::=
 STAR
+{:
+    RESULT = InfixExpression.OperatorType.MUL;
+:}
 | SLASH
+{:
+    RESULT = InfixExpression.OperatorType.DIV;
+:}
 | MOD
+{:
+    RESULT = InfixExpression.OperatorType.MOD;
+:}
 | REM
+{:
+    RESULT = InfixExpression.OperatorType.REM;
+:}
 ;
 
 ///////////////////////////////////////////////////////////////////////////////
 // 4.4 Expressions
 //
 expression ::=
-relation:rel
+relation:relation
 {:
-    System.out.println ("expression ::= relation => " + rel);
-	RESULT = rel;
+    RESULT = relation;
 :}
-| expression:expr logical_operator relation:rel
+| expression:expression logical_operator:logical_operator relation:relation
 {:
-    System.out.println ("expression ::= expression => " + expr);
-    System.out.println ("expression ::= relation => " + rel);
-	RESULT = expr;
+    InfixExpression infixExpression = new InfixExpression(expressionleft, relationright, expression, logical_operator, relation);
+    RESULT = infixExpression;
 :}
-| expression:expr short_circuit relation:rel
+| expression:expression short_circuit:short_circuit relation:relation
 {:
-    System.out.println ("expression ::= expression => " + expr);
-    System.out.println ("expression ::= relation => " + rel);
-	RESULT = expr;
+    InfixExpression infixExpression = new InfixExpression(expressionleft, relationright, expression, short_circuit, relation);
+    RESULT = infixExpression;
 :}
 ;
 
 relation ::=
-simple_expression:simple_expr
+simple_expression:simple_expression
 {:
-    RESULT = simple_expr;
+    RESULT = simple_expression;
 :}
-| simple_expression:simple_expr relational_operator simple_expression
+| simple_expression:simple_expression1 relational_operator:relational_operator simple_expression:simple_expression2
 {:
-    RESULT = simple_expr;
+    InfixExpression infixExpression = new InfixExpression(simple_expression1left, simple_expression2right, simple_expression1, relational_operator, simple_expression2);
+    RESULT = infixExpression;
 :}
-| simple_expression:simple_expr membership range
+| simple_expression:simple_expression membership:membership range:range
 {:
-    RESULT = simple_expr;
+    InfixExpression infixExpression = new InfixExpression(simple_expressionleft, rangeright, simple_expression, membership, range);
+    RESULT = infixExpression;
 :}
-| simple_expression:simple_expr membership name
+| simple_expression:simple_expression membership:membership name:name
 {:
-    RESULT = simple_expr;
+    InfixExpression infixExpression = new InfixExpression(simple_expressionleft, nameright, simple_expression, membership, name);
+    RESULT = infixExpression;
 :}
 ;
 
 simple_expression ::=
-unary_adding_operator:op term:term
+unary_adding_operator:unary_adding_operator term:term
 {:
-	RESULT = new UnaryOperation(opleft, termright, term, op);
+    UnaryOperation unaryOperation = new UnaryOperation(unary_adding_operatorleft, termright, term, unary_adding_operator);
+    RESULT = unaryOperation;
 :}
 | term:term
 {:
     RESULT = term;
 :}
-| simple_expression:expr binary_adding_operator:op term:term
+| simple_expression:simple_expression binary_adding_operator:binary_adding_operator term:term
 {:
-	RESULT = new UnaryOperation(exprleft, termright, term, op);
+    InfixExpression infixExpression = new InfixExpression(simple_expressionleft, termright, simple_expression, binary_adding_operator, term);
+    RESULT = infixExpression;
 :}
 ;
 
@@ -1507,9 +1583,10 @@
 {:
     RESULT = factor;
 :}
-| term multiplying_operator factor:factor
+| term:term multiplying_operator:multiplying_operator factor:factor
 {:
-    RESULT = factor;
+    InfixExpression infixExpression = new InfixExpression(termleft, factorright, term, multiplying_operator, factor);
+    RESULT = infixExpression;
 :}
 ;
 
@@ -1518,58 +1595,57 @@
 {:
     RESULT = primary;
 :}
-| NOT primary:primary
+| NOT:token primary:primary
 {:
-    RESULT = primary;
+    UnaryOperation unaryOperation = new UnaryOperation(tokenleft, primaryright, primary, UnaryOperation.Operator.NOT);
+    RESULT = unaryOperation;
 :}
-| ABS primary:primary
+| ABS:token primary:primary
 {:
-    RESULT = primary;
+    UnaryOperation unaryOperation = new UnaryOperation(tokenleft, primaryright, primary, UnaryOperation.Operator.ABS);
+    RESULT = unaryOperation;
 :}
-| primary EXPON primary:primary
+| primary:primary1 EXPON primary:primary2
 {:
-    RESULT = primary;
+    InfixExpression infixExpression = new InfixExpression(primary1left, primary2right, primary1, InfixExpression.OperatorType.EXPON, primary2);
+    RESULT = infixExpression;
 :}
 ;
 
 primary ::=
 literal:literal
 {:
-    System.out.println ("primary ::= literal => " + literal);
     RESULT = literal;
 :}
 | name:name
 {:
-    System.out.println ("primary ::= name => " + name);
-    Scalar scalar = new Scalar(nameleft, nameright, name, Scalar.Type.STRING);
-    RESULT = scalar;
+// TODO: must be modified for manage all primery types
+    Variable variable = new Variable (nameleft, nameright, name);
+    RESULT = variable;
 :}
 | allocator
-| qualified_expression:expr
+| qualified_expression:qualified_expression
 {:
-    System.out.println ("primary ::= qualified_expression => " + expr);
-    RESULT = expr;
+    RESULT = qualified_expression;
 :}
-| parenthesized_primary:expr
+| parenthesized_primary:parenthesized_primary
 {:
-    System.out.println ("primary ::= parenthesized_primary => " + expr);
-    RESULT = expr;
+    RESULT = parenthesized_primary;
 :}
 ;
 
 parenthesized_primary ::=
 aggregate
-| LPAREN expression:expr RPAREN
+| LPAREN expression:expression RPAREN
 {:
-    RESULT = expr;
+    RESULT = expression;
 :}
 ;
 
 qualified_expression ::=
 name:name TICK parenthesized_primary:expr
 {:
-    Identifier subtypeMark = new Identifier (nameleft, nameright, name);
-    RESULT = new QualifiedExpression (nameleft, exprright, subtypeMark, expr);
+    RESULT = new QualifiedExpression (nameleft, exprright, name, expr);
 :}
 ;
 
@@ -1701,13 +1777,10 @@
 // 5.2 Assignment Statements
 //
 assignment_statement ::=
-name:var ASSIGNMENT expression:expr SEMICOLON
+name:name ASSIGNMENT expression:expression SEMICOLON
 {:
-    System.out.println ("assignment_statement ::= var => " + var);
-    System.out.println ("assignment_statement ::= expr => " + expr);
-    Identifier id = new Identifier(varleft, varright, var);
-    Variable variable = new Variable (varleft, varright, (Identifier)id);
-    Assignment assignment = new Assignment(varleft, exprright, variable, expr);
+    Variable variable = new Variable (nameleft, nameright, name);
+    Assignment assignment = new Assignment(nameleft, expressionright, variable, expression);
     RESULT = assignment;
 :}
 ;
@@ -1722,19 +1795,19 @@
     Expression firstCondition = null;
     Statement trueStatement = null;
     Statement falseStatement = iffalse;
-		
+
     for (int i=1 ; i < condList[0].size() ; i++) {
         innerCondition = (Expression)condList[0].get(i);
         trueStatement = (Statement)condList[1].get(i);
         int start = ((Integer)condList[2].get(i)).intValue();
         falseStatement = new IfStatement(start, endright, innerCondition, trueStatement, falseStatement);
     }
-    
+
     firstCondition = (Expression)condList[0].get(0);
     trueStatement = (Statement)condList[1].get(0);
     int start = ((Integer)condList[2].get(0)).intValue();
     IfStatement ifStatement = new IfStatement(tokenleft, endright, firstCondition, trueStatement, falseStatement);		
-	
+
     RESULT = ifStatement;
 :}
 ;
@@ -1767,9 +1840,9 @@
 ;
 
 condition ::=
-expression:expr
+expression:expression
 {:
-    RESULT = expr;
+    RESULT = expression;
 :}
 ;
 
@@ -1824,8 +1897,7 @@
 label_opt:label iteration:iteration basic_loop:statement id_opt SEMICOLON:end
 {:
     int start = (label == null) ? iterationleft : labelleft;
-    Identifier identifier = new Identifier(labelleft, labelright, label);
-    LoopStatement loopStatement = new LoopStatement(start, endright, identifier, iteration, statement);
+    LoopStatement loopStatement = new LoopStatement(start, endright, label, iteration, statement);
     RESULT = loopStatement;
 :}
 ;
@@ -1837,7 +1909,8 @@
 :}
 | IDENTIFIER:id COLON
 {:
-    RESULT = id;
+    Identifier identifier = new Identifier (idleft, idright, id);
+    RESULT = identifier;
 :}
 ;
 
@@ -1880,9 +1953,9 @@
 {:
     RESULT = null;
 :}
-| designator:name
+| designator:designator
 {:
-    RESULT = name;
+    RESULT = designator;
 :}
 ;
 
@@ -1893,8 +1966,7 @@
 label_opt:label block_declarative:declarations block_body:body END id_opt SEMICOLON:end
 {:
     int start = (label == null) ? declarationsleft : labelleft;
-    Identifier identifier = new Identifier(labelleft, labelright, label);
-    BlockStatement blockStatement = new BlockStatement (start, endleft, identifier, declarations, body);
+    BlockStatement blockStatement = new BlockStatement (start, endleft, label, declarations, body);
     RESULT = blockStatement;
 :}
 ;
@@ -2002,23 +2074,19 @@
 ;
 
 subprogram_specification ::=
-PROCEDURE:procedure compound_name:procedureName formal_part_opt:formalPart
+PROCEDURE:procedure compound_name:compound_name formal_part_opt:formal_part
 {:
-    Identifier procedureId = new Identifier(procedureNameleft, procedureNameright, procedureName);
-    SubprogramSpecification subprogramSpecification = new SubprogramSpecification(procedureleft, formalPartright, procedureId, formalPart);
+    SubprogramSpecification subprogramSpecification = new SubprogramSpecification(procedureleft, formal_partright, compound_name, formal_part);
     RESULT = subprogramSpecification;
 :}
-| FUNCTION:function designator:functionName formal_part_opt:formalPart RETURN name:subtypeMark
+| FUNCTION:function designator:designator formal_part_opt:formal_part RETURN name:subtype_mark
 {:
-    Identifier functionId = new Identifier(functionNameleft, functionNameright, functionName);
-    Identifier subtypeReturn = new Identifier(subtypeMarkleft, subtypeMarkright, subtypeMark);
-    SubprogramSpecification subprogramSpecification = new SubprogramSpecification(functionleft, subtypeMarkright, functionId, formalPart, subtypeReturn);
+    SubprogramSpecification subprogramSpecification = new SubprogramSpecification(functionleft, subtype_markright, designator, formal_part, subtype_mark);
     RESULT = subprogramSpecification;
 :}
-| FUNCTION:function designator:functionName  /* for generic inst and generic rename */
+| FUNCTION:function designator:designator  /* for generic inst and generic rename */
 {:
-    Identifier functionId = new Identifier(functionNameleft, functionNameright, functionName);
-    SubprogramSpecification subprogramSpecification = new SubprogramSpecification(functionleft, functionNameright, functionId);
+    SubprogramSpecification subprogramSpecification = new SubprogramSpecification(functionleft, designatorright, designator);
     RESULT = subprogramSpecification;
 :}
 ;
@@ -2071,13 +2139,11 @@
 defining_identifier_list:identifierList COLON mode:mode subtype_mark:subtype init_opt:init
 {:
     List list = new LinkedList();
-    Identifier subtypeId = new Identifier(subtypeleft, subtyperight, subtype);
-    TypeName typeName = new TypeName(subtypeleft, subtyperight, subtypeId);
     for (Object item : identifierList) {
         Identifier identifier = (Identifier)item;
         Variable variable = new Variable (identifier.getStartOffset(), identifier.getEndOffset(), identifier);
 	    int end = init == null ? subtyperight : initright;
-        FormalParameter parameter = new FormalParameter(identifierListleft, end, variable, mode, typeName, init);
+        FormalParameter parameter = new FormalParameter(identifierListleft, end, variable, mode, subtype, init);
     	list.add(parameter);
     }
     RESULT = list;
@@ -2116,23 +2182,23 @@
 
 // TODO: manage the overload operators ex: "+" "and" ecc.
 operator_symbol ::=
-STRING_LITERAL:stringLiteral
+STRING_LITERAL:string_literal
 {:
-    RESULT = stringLiteral;
+    Identifier identifier = new Identifier (string_literalleft, string_literalright, string_literal);
+    RESULT = identifier;
 :}
 ;
 
 subprogram_body ::=
 subprogram_specification:subprog IS
-declarative_part:declarativePart block_body:body END id_opt:idOpt SEMICOLON:end
+declarative_part:declarativePart block_body:body END id_opt:id_opt SEMICOLON:end
 {:
-    if (idOpt != null && !idOpt.equalsIgnoreCase (subprog.getSubprogramName().getName())) {
+    if (id_opt != null && !id_opt.getName().equalsIgnoreCase (subprog.getSubprogramName().getName())) {
         this.parser.message_error("mispelling of " + subprog.getSubprogramName().getName());
     } else {
         Block declarations = new Block(subprogright, bodyleft, declarativePart);
         body.setEndOffset(endright);
-        Identifier nameEnd = new Identifier(idOptleft, idOptright, idOpt);
-        SubprogramBody subprogramBody = new SubprogramBody(subprogleft, endright, subprog, declarations, body, nameEnd);
+        SubprogramBody subprogramBody = new SubprogramBody(subprogleft, endright, subprog, declarations, body, id_opt);
         MethodDeclaration methodDeclaration = new MethodDeclaration(subprogleft, endright, 0/*modifier*/, subprogramBody);
         RESULT = methodDeclaration;
     }
@@ -2159,20 +2225,18 @@
 ;
 
 package_specification ::= 
-PACKAGE:declarationStart compound_name:packageName IS:blockStart
+PACKAGE:declarationStart compound_name:package_name IS:blockStart
   declarative_items_opt:declarativeItems private_part:privateDeclarativeItems
-END:declarationEnd compound_name_opt:packageNameEnd
+END:declarationEnd compound_name_opt:package_name_end
 {:
-    if (packageNameEnd != null && !packageNameEnd.equalsIgnoreCase (packageName)) {
-        this.parser.message_error("mispelling of " + packageName);
+    if (package_name_end != null && !package_name_end.getName().equalsIgnoreCase (package_name.getName())) {
+        this.parser.message_error("mispelling of " + package_name);
     }
     else {
-        Identifier packageId = new Identifier(packageNameleft, packageNameright, packageName);
-        Identifier packageIdEnd = new Identifier(packageNameEndleft, packageNameEndright, packageNameEnd);
         declarativeItems.addAll (privateDeclarativeItems);
         // Add private part on block statements
         Block block = new Block(blockStartleft, declarationEndright, declarativeItems);
-        PackageSpecification packageSpecification = new PackageSpecification(declarationStartleft, declarationEndright, packageId, packageIdEnd, block);
+        PackageSpecification packageSpecification = new PackageSpecification(declarationStartleft, declarationEndright, package_name, package_name_end, block);
         RESULT = packageSpecification;
     }
 :}
@@ -2190,9 +2254,9 @@
 
 compound_name_opt ::=
 // empty
-| compound_name:compoundName
+| compound_name:compound_name
 {:
-    RESULT = compoundName;
+    RESULT = compound_name;
 :}
 ;
 
@@ -2200,20 +2264,18 @@
 // 7.2 Package Bodies
 //
 package_body ::=
-PACKAGE:declarationStart BODY compound_name:packageName IS:blockStart
-  declarative_part:declarativePart body_opt END compound_name_opt:packageNameEnd SEMICOLON:declarationEnd
+PACKAGE:declarationStart BODY compound_name:package_name IS:blockStart
+  declarative_part:declarativePart body_opt END compound_name_opt:package_name_end SEMICOLON:declarationEnd
 {:
-    if (packageNameEnd != null && !packageNameEnd.equalsIgnoreCase (packageName)) {
-        this.parser.message_error("mispelling of " + packageName);
+    if (package_name_end != null && !package_name_end.getName().equalsIgnoreCase (package_name.getName())) {
+        this.parser.message_error("mispelling of " + package_name);
     }
     else {
-        Identifier packageId = new Identifier(packageNameleft, packageNameright, packageName);
-        Identifier packageIdEnd = new Identifier(packageNameEndleft, packageNameEndright, packageNameEnd);
 
         List list = this.parser.setModifier (declarativePart, Ada95ASTParser.PRIVATE);
         Block block = new Block(blockStartleft, declarationEndright, list);
 
-        PackageBody packageBody = new PackageBody(declarationStartleft, declarationEndright, packageId, packageIdEnd, block);
+        PackageBody packageBody = new PackageBody(declarationStartleft, declarationEndright, package_name, package_name_end, block);
         RESULT = packageBody;
     }
 :}
@@ -2262,15 +2324,13 @@
 name:name
 {:
     List idList = new LinkedList();
-    Identifier id = new Identifier(nameleft, nameright, name);
-    PackageName packageName = new PackageName(nameleft, nameright, id);
+    PackageName packageName = new PackageName(nameleft, nameright, name);
     idList.add(packageName);
     RESULT = idList;
 :}
 | package_name_list:idList COMMA name:name
 {:
-    Identifier id = new Identifier(nameleft, nameright, name);
-    PackageName packageName = new PackageName(nameleft, nameright, id);
+    PackageName packageName = new PackageName(nameleft, nameright, name);
     idList.add(packageName);
     RESULT = idList;
 :}
@@ -2280,15 +2340,13 @@
 name:name
 {:
     List idList = new LinkedList();
-    Identifier id = new Identifier(nameleft, nameright, name);
-    TypeName typeName = new TypeName(nameleft, nameright, id);
+    TypeName typeName = new TypeName(nameleft, nameright, name);
     idList.add(typeName);
     RESULT = idList;
 :}
 | subtype_mark_list:idList COMMA name:name
 {:
-    Identifier id = new Identifier(nameleft, nameright, name);
-    TypeName typeName = new TypeName(nameleft, nameright, id);
+    TypeName typeName = new TypeName(nameleft, nameright, name);
     idList.add(typeName);
     RESULT = idList;
 :}
@@ -2310,9 +2368,7 @@
 rename_unit ::= 
 PACKAGE:token compound_name:name RENAMES name:renames SEMICOLON:end
 {:
-    Identifier packageNameId = new Identifier(nameleft, nameright, name);
-    Identifier packageRenamesId = new Identifier(renamesleft, renamesright, renames);
-    PackageRenames packageRenames = new PackageRenames(tokenleft, endright, packageNameId, packageRenamesId);
+    PackageRenames packageRenames = new PackageRenames(tokenleft, endright, name, renames);
     RESULT = packageRenames;
 :}
 | subprogram_specification RENAMES name SEMICOLON:end
@@ -2499,15 +2555,13 @@
 name:name
 {:
     List idList = new LinkedList();
-    Identifier id = new Identifier(nameleft, nameright, name);
-    TaskName taskName = new TaskName(nameleft, nameright, id);
+    TaskName taskName = new TaskName(nameleft, nameright, name);
     idList.add(taskName);
     RESULT = idList;
 :}
 | task_name_list:idList COMMA name:name
 {:
-    Identifier id = new Identifier(nameleft, nameright, name);
-    TaskName taskName = new TaskName(nameleft, nameright, id);
+    TaskName taskName = new TaskName(nameleft, nameright, name);
     idList.add(taskName);
     RESULT = idList;
 :}
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/parser/resources/Ada95Parser.cup
--- a/ada.editor/src/org/netbeans/modules/ada/editor/parser/resources/Ada95Parser.cup	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/parser/resources/Ada95Parser.cup	Sun Aug 22 23:37:11 2010 +0200
@@ -144,8 +144,8 @@
  *    ISO/IEC 8652:1995(E)                               *
  *    with Technical Corrigendum 1                       *
  *    Language and Standard Libraries                    *
- *    Copyright � 1992,1993,1994,1995 Intermetrics, Inc. *
- *    Copyright � 2000 The MITRE Corporation, Inc.       *
+ *    Copyright © 1992,1993,1994,1995 Intermetrics, Inc. *
+ *    Copyright © 2000 The MITRE Corporation, Inc.       *
  * 2. http://www.adaic.com/standards/95lrm/grammar9x.y   *
  *                                                       *
  * Author: Andrea Lucarelli                              *
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/resources/Bundle.properties
--- a/ada.editor/src/org/netbeans/modules/ada/editor/resources/Bundle.properties	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/resources/Bundle.properties	Sun Aug 22 23:37:11 2010 +0200
@@ -35,6 +35,10 @@
 #
 # Portions Copyrighted 2008 Sun Microsystems, Inc.
 
+Services/MIMEResolver/AdaResolver.xml=Ada Files
+Services/MIMEResolver/AdsResolver.xml=Ada Specification Files
+Services/MIMEResolver/AdbResolver.xml=Ada Body Files
+
 # Used in fonts and colors options
 text/x-ada=Ada
 
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/resources/icons/adb-16.png
Binary file ada.editor/src/org/netbeans/modules/ada/editor/resources/icons/adb-16.png has changed
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/resources/icons/ads-16.png
Binary file ada.editor/src/org/netbeans/modules/ada/editor/resources/icons/ads-16.png has changed
diff -r 2f191c83a5c4 -r d2820c029d3a ada.editor/src/org/netbeans/modules/ada/editor/resources/layer.xml
--- a/ada.editor/src/org/netbeans/modules/ada/editor/resources/layer.xml	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.editor/src/org/netbeans/modules/ada/editor/resources/layer.xml	Sun Aug 22 23:37:11 2010 +0200
@@ -44,8 +44,82 @@
     
         
             
-                
+                
+                    
+                        
+                        
+                    
+                    
+                        
+                        
+                    
+                    
+                        
+                        
+                    
+                    
+                        
+                        
+                    
+                    
+                        
+                        
+                    
+                    
+                        
+                        
+                    
+                    
+                        
+                        
+                    
+                    
+                        
+                        
+                    
+                    
+                        
+                        
+                    
+                    
+                        
+                        
+                    
+                    
+                        
+                        
+                    
+                    
+                        
+                        
+                    
+                    
+                        
+                        
+                    
+                    
+                        
+                        
+                    
+                    
+                        
+                        
+                    
+                    
+                        
+                        
+                    
+                
+                
+                    
+                        
+                        
+                        
+                    
+                
             
         
     
@@ -64,21 +138,6 @@
         
     
 
-    
-    
     
     
         
diff -r 2f191c83a5c4 -r d2820c029d3a ada.help/history.txt
--- a/ada.help/history.txt	Wed Feb 24 15:52:30 2010 -0500
+++ b/ada.help/history.txt	Sun Aug 22 23:37:11 2010 +0200
@@ -1,2 +1,9 @@
+0.1.2: dd-mm-2010
+- Uodate the help files for manage JVM.
+
+0.1.1: 13-10-2009
+- Add the signing of the nbm file.
+- Add the new help files.
+
 0.1.0: 01-11-2008
 - Initial release.
\ No newline at end of file
diff -r 2f191c83a5c4 -r d2820c029d3a ada.help/javahelp/org/netbeans/modules/ada/help/docs/ada-platform-manager.html
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ada.help/javahelp/org/netbeans/modules/ada/help/docs/ada-platform-manager.html	Sun Aug 22 23:37:11 2010 +0200
@@ -0,0 +1,37 @@
+
+
+
+
+
+Ada Platform Manager Dialog Box
+	
+
+
+

Ada Platform Manager Dialog Box

+

See Also  +

The Ada Platform Manager is a tool for registering different versions of + the Ada Development Kit and other Ada tools that your programs depend + on. The dialog box lists all of your registered Ada Develepment Kit + in the left pane and lists the Ada Tools that the IDE is running on as the Default + Platform. The Ada Platform Manager is able to recognize the GNAT Java Byte code compiler. +

You can open the dialog box by choosing Tools > Ada Platforms. +

Once you have registered an Ada Tool, you can configure a standard project to use + that Ada Tool for compilation, execution, and debugging. Go to the project's Project + Properties dialog box, select the Build node, and choose the appropriate + Ada Tool in the Ada Platform combo box. +

+
See Also
+
New Ada Application
+
New Ada Application with Existing Sources
+
Customizing the Project Settings: Build
+
+
+Legal Notices + + +
 
+ + diff -r 2f191c83a5c4 -r d2820c029d3a ada.help/javahelp/org/netbeans/modules/ada/help/docs/customize-project-build.html --- a/ada.help/javahelp/org/netbeans/modules/ada/help/docs/customize-project-build.html Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.help/javahelp/org/netbeans/modules/ada/help/docs/customize-project-build.html Sun Aug 22 23:37:11 2010 +0200 @@ -63,36 +63,29 @@ } --> - Customizing the Project Settings: Run Configuration + Customizing the Ada Project Settings: Build

- Customizing the Project Settings: Build

+ Customizing the Ada Project Settings: Build

See Also

The Build panel of the Project Properties dialog box lets you lets you set the build tool for your projects:

    -
  • Ada Platform. Specifies the Ada platform for building the project.
  • -
  • Main Module. Specifies the Ada main procedure.
  • +
  • Ada Platform. Specifies the Ada platform for building the project.
  • +
  • Main Module. Specifies the Ada main procedure.
  • +
  • Build Formal. Specifies the build output format. The formats for the executable are the native format of your system or java byte code format.
See Also
-
New Ada Application
-
New Ada Application with Existing Sources
-
Customizing the Project Settings: Sources
-
Customizing the Project Settings: Libraries
-
-
Customizing the Project Settings: Run
+
New Ada Application
+
New Ada Application with Existing Sources
+
Customizing the Project Settings: Sources Folders
+
Customizing the Project Settings: Sources Standards and Naming
+
Customizing the Project Settings: Libraries
+
Customizing the Project Settings: Run
 
diff -r 2f191c83a5c4 -r d2820c029d3a ada.help/javahelp/org/netbeans/modules/ada/help/docs/customize-project-libraries.html --- a/ada.help/javahelp/org/netbeans/modules/ada/help/docs/customize-project-libraries.html Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.help/javahelp/org/netbeans/modules/ada/help/docs/customize-project-libraries.html Sun Aug 22 23:37:11 2010 +0200 @@ -63,31 +63,24 @@ } --> - Customizing the Project Settings: Include Path + Customizing the Ada Project Settings: Libraries

- Customizing the Project Settings: Libraries

+ Customizing the Ada Project Settings: Libraries

See Also

-

THIS FEATURE IS NOT DEVELOPED

+

THIS FEATURE IS NOT IMPLEMENTED

See Also
-
New Ada Application
-
New Ada Application with Existing Sources
-
Customizing the Project Settings: Sources
-
Customizing the Project Settings: Build
-
-
Customizing the Project Settings: Run
+
New Ada Application
+
New Ada Application with Existing Sources
+
Customizing the Project Settings: Sources Folders
+
Customizing the Project Settings: Sources Standards and Naming
+
Customizing the Project Settings: Build
+
Customizing the Project Settings: Run
 
 
diff -r 2f191c83a5c4 -r d2820c029d3a ada.help/javahelp/org/netbeans/modules/ada/help/docs/customize-project-run.html --- a/ada.help/javahelp/org/netbeans/modules/ada/help/docs/customize-project-run.html Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.help/javahelp/org/netbeans/modules/ada/help/docs/customize-project-run.html Sun Aug 22 23:37:11 2010 +0200 @@ -63,11 +63,11 @@ } --> - Customizing the Project Settings: Run Configuration + Customizing the Ada Project Settings: Run

- Customizing the Project Settings: Run

+ Customizing the Ada Project Settings: Run

See Also

@@ -76,20 +76,12 @@
See Also
-
New Ada Application
-
New Ada Application with Existing Sources
-
Customizing the Project Settings: Sources
-
Customizing the Project Settings: Libraries
-
-
Customizing the Project Settings: Build
+
New Ada Application
+
New Ada Application with Existing Sources
+
Customizing the Project Settings: Sources Folders
+
Customizing the Project Settings: Sources Standards and Naming
+
Customizing the Project Settings: Libraries
+
Customizing the Project Settings: Build
 

diff -r 2f191c83a5c4 -r d2820c029d3a ada.help/javahelp/org/netbeans/modules/ada/help/docs/customize-project-sources-folders.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ada.help/javahelp/org/netbeans/modules/ada/help/docs/customize-project-sources-folders.html Sun Aug 22 23:37:11 2010 +0200 @@ -0,0 +1,130 @@ + + + + + + + + + Customizing the Ada Project Settings: Sources Folders + + +

+ Customizing the Ada Project Settings: Sources Folders

+

+ See Also

+

The Sources panel enables you to view the location of the project folder, + manage source and test package folders, as well as set the source level of + the packages which the IDE will use. +You open the Ada Project Properties dialog box by right-clicking + any and choosing Properties. + +

+

Use the buttons on the right side of the panel to add, remove, and change + the order of classpath elements. +

    +
  • The source root cannot already exist in another IDE project. +
  • The source root cannot already be added to another compilation unit of the same project. For example, a source root that is registered under Test Packages cannot be added to the list of Source Packages. +
  • If you have a source root that needs to be used by several projects, you should create a separate project for the source root and set up compilation dependencies between the projects. +
+

Test Packages Folders

+

THIS FEATURE IS NOT IMPLEMENTED

+

You can use this pane to specify the folder that the IDE uses when creating Ada Unit tests. + By default, when you create a project the IDE creates a test packages folder called test with the label Test Packages. + Use the buttons to the right of the list to remove the selected folder or to specify the folder that the IDE uses when creating tests. + You can also modify the Label field to change how the folder is displayed in the Projects window.

+

To create Ada Unit tests with the IDE, a project must have a test packages folder. + If the test packages folder for your project is missing or unavailable, you can create a new folder in your project and + then use this pane to designate the new folder as the test packages folder.

+
+
+ See Also
+
 
+
New Ada Application
+
New Ada Application with Existing Sources
+
Customizing the Project Settings: Sources Standards and Naming
+
Customizing the Project Settings: Libraries
+
Customizing the Project Settings: Build
+
Customizing the Project Settings: Run
+
+
+

+ Legal Notices +

+ + + + + + + + + + +
  + +
  + +
  + +
+ + diff -r 2f191c83a5c4 -r d2820c029d3a ada.help/javahelp/org/netbeans/modules/ada/help/docs/customize-project-sources-naming.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ada.help/javahelp/org/netbeans/modules/ada/help/docs/customize-project-sources-naming.html Sun Aug 22 23:37:11 2010 +0200 @@ -0,0 +1,121 @@ + + + + + + + + + Customizing the Ada Project Settings: Sources Standards and Naming + + +

+ Customizing the Ada Project Settings: Sources Standards and Naming

+

+ See Also

+

The Build panel of the Project Properties dialog box lets you lets you set the Standards and Naming for your projects:

+

Standards:

+
    +
  • Ada Dialects. Specifies the Ada dialects used for your project (ONLY ADA95 IS IMPLEMENTED).
  • +
  • Ada restrictions. Specifies the Ada restrictions used for your project (THIS FEATURE IS NOT IMPLEMENTED).
  • +
+

File Naming:

+
    +
  • Package specification. Specifies the rules for file naming for package specification.
  • +
  • Package body. Specifies the rules for file naming for package body.
  • +
  • Separate. Specifies the rules for file naming for separates.
  • +
+
+
+ See Also
+
 
+
New Ada Application
+
New Ada Application with Existing Sources
+
Customizing the Project Settings: Sources Folders
+
Customizing the Project Settings: Libraries
+
Customizing the Project Settings: Build
+
Customizing the Project Settings: Run
+
+
 
+
+
+

+ Legal Notices +

+ + + + + + + + + + +
  + +
  + +
  + +
+ + diff -r 2f191c83a5c4 -r d2820c029d3a ada.help/javahelp/org/netbeans/modules/ada/help/docs/customize-project-sources.html --- a/ada.help/javahelp/org/netbeans/modules/ada/help/docs/customize-project-sources.html Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.help/javahelp/org/netbeans/modules/ada/help/docs/customize-project-sources.html Sun Aug 22 23:37:11 2010 +0200 @@ -64,11 +64,11 @@ } --> - Customizing the Project Settings: Source Files Location + Customizing the Ada Project Settings: Source Files Location

- Customizing the Project Settings: Sources

+ Customizing the Ada Project Settings: Sources

See Also

The Sources panel enables you to view the location of the project folder, diff -r 2f191c83a5c4 -r d2820c029d3a ada.help/javahelp/org/netbeans/modules/ada/help/docs/help-hs.xml --- a/ada.help/javahelp/org/netbeans/modules/ada/help/docs/help-hs.xml Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.help/javahelp/org/netbeans/modules/ada/help/docs/help-hs.xml Sun Aug 22 23:37:11 2010 +0200 @@ -40,22 +40,22 @@ - Help for NetBeans IDE for Ada - - org.netbeans.modules.ada.help.about - - - - TOC - - javax.help.TOCView - help-toc.xml - + Help for NetBeans IDE for Ada + + org.netbeans.modules.ada.help.about + + + + TOC + + javax.help.TOCView + help-toc.xml + - - Search - - javax.help.SearchView - JavaHelpSearch - + + Search + + javax.help.SearchView + JavaHelpSearch + diff -r 2f191c83a5c4 -r d2820c029d3a ada.help/javahelp/org/netbeans/modules/ada/help/docs/help-map.xml --- a/ada.help/javahelp/org/netbeans/modules/ada/help/docs/help-map.xml Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.help/javahelp/org/netbeans/modules/ada/help/docs/help-map.xml Sun Aug 22 23:37:11 2010 +0200 @@ -40,11 +40,13 @@ - - - - - - - + + + + + + + + + diff -r 2f191c83a5c4 -r d2820c029d3a ada.help/javahelp/org/netbeans/modules/ada/help/docs/help-toc.xml --- a/ada.help/javahelp/org/netbeans/modules/ada/help/docs/help-toc.xml Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.help/javahelp/org/netbeans/modules/ada/help/docs/help-toc.xml Sun Aug 22 23:37:11 2010 +0200 @@ -40,13 +40,15 @@ - - - - - - - - - + + + + + + + + + + + diff -r 2f191c83a5c4 -r d2820c029d3a ada.help/javahelp/org/netbeans/modules/ada/help/docs/new-ada-application.html --- a/ada.help/javahelp/org/netbeans/modules/ada/help/docs/new-ada-application.html Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.help/javahelp/org/netbeans/modules/ada/help/docs/new-ada-application.html Sun Aug 22 23:37:11 2010 +0200 @@ -60,10 +60,10 @@ } --> - New PHP Project without Previously Developed Sources: Configure + New Ada Application -

New Ada Application

+

New Ada Application

See Also

The New Ada Application wizard enables you to create a new with a main class. diff -r 2f191c83a5c4 -r d2820c029d3a ada.help/javahelp/org/netbeans/modules/ada/help/docs/new-from-existing-ada-sources.html --- a/ada.help/javahelp/org/netbeans/modules/ada/help/docs/new-from-existing-ada-sources.html Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.help/javahelp/org/netbeans/modules/ada/help/docs/new-from-existing-ada-sources.html Sun Aug 22 23:37:11 2010 +0200 @@ -60,18 +60,18 @@ } --> - New PHP Project without Previously Developed Sources: Run Configurations + New Ada Application with Existing Sources

New Ada Application with Existing Sources

See Also

-

The New Java Project with Existing Sources wizard enables you to create a new from an existing Java SE source folder. You open the wizard by - opening the New Project wizard and selecting the Java Application with Existing Sources template from the General category.

+

The New Ada Project with Existing Sources wizard enables you to create a new from an existing Ada source folder. You open the wizard by + opening the New Project wizard and selecting the Ada Application with Existing Sources template from the General category.

In the Name and Location page, you have to set the following properties:

  • Project Name. Specifies the display name of the project.
  • -
  • Project Location. Specifies the folder where you want to store the +
  • Project Folder. Specifies the folder where you want to store the project metadata and source code. You can place the project folder in the source folder or keep it in a separate location.
  • Set as Main Project. Sets the newly created project as the main diff -r 2f191c83a5c4 -r d2820c029d3a ada.help/manifest.mf --- a/ada.help/manifest.mf Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.help/manifest.mf Sun Aug 22 23:37:11 2010 +0200 @@ -3,5 +3,5 @@ OpenIDE-Module-Layer: org/netbeans/modules/ada/help/layer.xml OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/ada/help/Bundle.properties OpenIDE-Module-Requires: org.netbeans.api.javahelp.Help -OpenIDE-Module-Specification-Version: 0.1.0 +OpenIDE-Module-Specification-Version: 0.1.2 AutoUpdate-Show-In-Client: false diff -r 2f191c83a5c4 -r d2820c029d3a ada.help/nbproject/project.properties --- a/ada.help/nbproject/project.properties Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.help/nbproject/project.properties Sun Aug 22 23:37:11 2010 +0200 @@ -3,3 +3,5 @@ javahelp.hs=adahelp.hs nbm.homepage=http://wiki.netbeans.org/Ada nbm.module.author=Andrea Lucarelli +keystore=nbproject/private/keystore +nbm_alias=nbada \ No newline at end of file diff -r 2f191c83a5c4 -r d2820c029d3a ada.kit/build.xml --- a/ada.kit/build.xml Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.kit/build.xml Sun Aug 22 23:37:11 2010 +0200 @@ -34,12 +34,12 @@ - - - - - - + + + + + + diff -r 2f191c83a5c4 -r d2820c029d3a ada.kit/history.txt --- a/ada.kit/history.txt Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.kit/history.txt Sun Aug 22 23:37:11 2010 +0200 @@ -1,5 +1,20 @@ -0.1.9: dd-mm-2009 -- Migrating GSF framework to CSL (Parsing & Indexing API) +0.2.1: 12-08-2010 +- Add JVM compiler support. +- Migrate to NB6.8 + +0.2.0: 13-10-2009 +- Add the signing of the nbm files. +- Add the new help files. +- Fix the issue http://sourceforge.net/tracker/?func=detail&aid=2872967&group_id=248853&atid=1126624. + +0.1.9: 01-10-2009 +- Migrates from GSF to CSL for new Parsing & Indexing API. +- Add improvements on ast parser. +- Improvements on the GPR file management. +- Sends of the arguments when the action RUN is invoked +- Ada files naming management (options and project properties). +- Fix https://sourceforge.net/tracker/?func=detail&aid=2868718&group_id=248853&atid=1126624. +- Fix https://sourceforge.net/tracker/?func=detail&aid=2863317&group_id=248853&atid=1126624. 0.1.8: 13-09-2009 - Add improvements on ast parser, navigator, instant renamer. diff -r 2f191c83a5c4 -r d2820c029d3a ada.kit/manifest.mf --- a/ada.kit/manifest.mf Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.kit/manifest.mf Sun Aug 22 23:37:11 2010 +0200 @@ -2,5 +2,5 @@ AutoUpdate-Show-In-Client: true OpenIDE-Module: org.netbeans.modules.ada.kit OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/ada/kit/Bundle.properties -OpenIDE-Module-Specification-Version: 0.1.9 +OpenIDE-Module-Specification-Version: 0.2.1 diff -r 2f191c83a5c4 -r d2820c029d3a ada.kit/nbproject/project.properties --- a/ada.kit/nbproject/project.properties Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.kit/nbproject/project.properties Sun Aug 22 23:37:11 2010 +0200 @@ -5,3 +5,5 @@ javac.source=1.5 nbm.homepage=http://wiki.netbeans.org/Ada nbm.module.author=Andrea Lucarelli +keystore=nbproject/private/keystore +nbm_alias=nbada diff -r 2f191c83a5c4 -r d2820c029d3a ada.kit/nbproject/project.xml --- a/ada.kit/nbproject/project.xml Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.kit/nbproject/project.xml Sun Aug 22 23:37:11 2010 +0200 @@ -8,31 +8,31 @@ org.netbeans.modules.ada.editor - 0.1.9 + 0.2.1 org.netbeans.modules.ada.help - 0.1.0 + 0.1.2 org.netbeans.modules.ada.options - 0.1.4 + 0.1.7 org.netbeans.modules.ada.platform - 0.1.5 + 0.1.8 org.netbeans.modules.ada.project - 0.1.7 + 0.1.9 diff -r 2f191c83a5c4 -r d2820c029d3a ada.options/history.txt --- a/ada.options/history.txt Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.options/history.txt Sun Aug 22 23:37:11 2010 +0200 @@ -1,5 +1,11 @@ -0.1.5: dd-mm-2009 -- TBD +0.1.7: 12-08-2010 +- Update modules dependencies version. + +0.1.6: 13-10-2009 +- Add the signing of the nbm files. + +0.1.5: 01-10-2009 +- Move Ada Options Panel on Ada Project module. 0.1.4: 13-09-2009 - Update spec version. diff -r 2f191c83a5c4 -r d2820c029d3a ada.options/manifest.mf --- a/ada.options/manifest.mf Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.options/manifest.mf Sun Aug 22 23:37:11 2010 +0200 @@ -3,5 +3,5 @@ OpenIDE-Module: org.netbeans.modules.ada.options OpenIDE-Module-Layer: org/netbeans/modules/ada/options/resources/layer.xml OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/ada/options/Bundle.properties -OpenIDE-Module-Specification-Version: 0.1.4 +OpenIDE-Module-Specification-Version: 0.1.7 diff -r 2f191c83a5c4 -r d2820c029d3a ada.options/nbproject/project.properties --- a/ada.options/nbproject/project.properties Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.options/nbproject/project.properties Sun Aug 22 23:37:11 2010 +0200 @@ -2,3 +2,5 @@ javac.compilerargs=-Xlint -Xlint:-serial nbm.homepage=http://wiki.netbeans.org/Ada nbm.module.author=Andrea Lucarelli +keystore=nbproject/private/keystore +nbm_alias=nbada \ No newline at end of file diff -r 2f191c83a5c4 -r d2820c029d3a ada.options/nbproject/project.xml --- a/ada.options/nbproject/project.xml Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.options/nbproject/project.xml Sun Aug 22 23:37:11 2010 +0200 @@ -11,7 +11,7 @@ 1 - 1.6.1 + 1.10.1 @@ -19,7 +19,7 @@ - 0.1.9 + 0.2.1 @@ -27,7 +27,7 @@ - 0.1.7 + 0.1.9 @@ -36,7 +36,7 @@ 1 - 1.10.1 + 1.16.2 @@ -44,7 +44,7 @@ - 7.3.1 + 7.19.1 @@ -52,7 +52,7 @@ - 7.18.1 + 7.31.2 diff -r 2f191c83a5c4 -r d2820c029d3a ada.options/src/org/netbeans/modules/ada/options/AdaOptionsPanelController.java --- a/ada.options/src/org/netbeans/modules/ada/options/AdaOptionsPanelController.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.options/src/org/netbeans/modules/ada/options/AdaOptionsPanelController.java Sun Aug 22 23:37:11 2010 +0200 @@ -39,7 +39,6 @@ package org.netbeans.modules.ada.options; -import org.netbeans.modules.ada.project.options.AdaGeneralOptionsPanel; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.util.Collection; @@ -52,6 +51,7 @@ import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.netbeans.modules.ada.project.options.AdaOptions; +import org.netbeans.modules.ada.project.options.ui.AdaGeneralOptionsPanel; import org.netbeans.modules.ada.editor.formatter.ui.FormattingOptionsPanel; import org.netbeans.spi.options.AdvancedOption; import org.netbeans.spi.options.OptionsPanelController; @@ -63,7 +63,7 @@ /** * @author Andrea Lucarelli */ -public class AdaOptionsPanelController extends OptionsPanelController implements ChangeListener { +public class AdaOptionsPanelController extends OptionsPanelController implements ChangeListener, HelpCtx.Provider { private static final String TAB_FOLDER = "org.netbeans.modules.ada/options/"; // NOI18N private final AdaGeneralOptionsPanel generalOptionsPanel = new AdaGeneralOptionsPanel(null); @@ -184,7 +184,7 @@ @Override public HelpCtx getHelpCtx() { - return null; + return new HelpCtx(AdaGeneralOptionsPanel.class); } @Override @@ -207,6 +207,17 @@ private boolean validateComponent() { // errors + String postfixSpec = generalOptionsPanel.getPkgSpecPostfix(); + String postfixBody = generalOptionsPanel.getPkgBodyPostfix(); + String specExt = generalOptionsPanel.getPkgSpecExt(); + String bodyExt = generalOptionsPanel.getPkgBodyExt(); + + if (specExt.equalsIgnoreCase(bodyExt)) { + if (postfixSpec.equalsIgnoreCase(postfixBody)) { + generalOptionsPanel.setError(NbBundle.getMessage(AdaOptionsPanelController.class, "MSG_ExtetionsError")); + return false; + } + } // everything ok generalOptionsPanel.setError(" "); // NOI18N diff -r 2f191c83a5c4 -r d2820c029d3a ada.options/src/org/netbeans/modules/ada/options/Bundle.properties --- a/ada.options/src/org/netbeans/modules/ada/options/Bundle.properties Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.options/src/org/netbeans/modules/ada/options/Bundle.properties Sun Aug 22 23:37:11 2010 +0200 @@ -47,4 +47,5 @@ # AdaOptionsPanelController LBL_GeneralOPtions=General -LBL_FormattingPtions=Formatting \ No newline at end of file +LBL_FormattingPtions=Formatting +MSG_ExtetionsError= Body Postfix (".ada") cannot be the same as Spec Postfix. diff -r 2f191c83a5c4 -r d2820c029d3a ada.platform/history.txt --- a/ada.platform/history.txt Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.platform/history.txt Sun Aug 22 23:37:11 2010 +0200 @@ -1,3 +1,15 @@ +0.1.8: 12-08-2010 +- Add JVM compiler support. + +0.1.7: 13-10-2009 +- Add the signing of the nbm files. +- Fix the issue http://sourceforge.net/tracker/?func=detail&aid=2872967&group_id=248853&atid=1126624. + +0.1.6: 01-10-2009 +- Fix https://sourceforge.net/tracker/?func=detail&aid=2868718&group_id=248853&atid=1126624. +- Improvements on the GPR file management. +- Sends of the arguments when the action RUN is invoked + 0.1.5: 13-09-2009 - Add improvements for gpr handling. diff -r 2f191c83a5c4 -r d2820c029d3a ada.platform/manifest.mf --- a/ada.platform/manifest.mf Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.platform/manifest.mf Sun Aug 22 23:37:11 2010 +0200 @@ -3,5 +3,5 @@ OpenIDE-Module: org.netbeans.modules.ada.platform OpenIDE-Module-Layer: org/netbeans/modules/ada/platform/resources/layer.xml OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/ada/platform/Bundle.properties -OpenIDE-Module-Specification-Version: 0.1.5 +OpenIDE-Module-Specification-Version: 0.1.8 diff -r 2f191c83a5c4 -r d2820c029d3a ada.platform/nbproject/project.properties --- a/ada.platform/nbproject/project.properties Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.platform/nbproject/project.properties Sun Aug 22 23:37:11 2010 +0200 @@ -2,3 +2,5 @@ javac.compilerargs=-Xlint -Xlint:-serial nbm.homepage=http://wiki.netbeans.org/Ada nbm.module.author=Andrea Lucarelli +keystore=nbproject/private/keystore +nbm_alias=nbada \ No newline at end of file diff -r 2f191c83a5c4 -r d2820c029d3a ada.platform/nbproject/project.xml --- a/ada.platform/nbproject/project.xml Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.platform/nbproject/project.xml Sun Aug 22 23:37:11 2010 +0200 @@ -11,7 +11,7 @@ 1 - 1.6 + 1.10.1 @@ -20,7 +20,7 @@ 1 - 1.12 + 1.16.1 @@ -29,7 +29,7 @@ 2 - 1.13 + 1.18.1 @@ -38,7 +38,7 @@ 1 - 1.26.1 + 1.35.1 @@ -47,7 +47,7 @@ 1 - 1.19 + 1.28.1 @@ -56,7 +56,7 @@ 1 - 1.31 + 1.40.1 @@ -64,7 +64,7 @@ - 7.3 + 7.19.1 @@ -72,7 +72,7 @@ - 7.8 + 7.13.1 @@ -80,7 +80,7 @@ - 7.13 + 7.32.1 @@ -88,7 +88,7 @@ - 7.7 + 7.13.1 @@ -96,7 +96,7 @@ - 7.18.1 + 7.31.2 @@ -105,6 +105,8 @@ org.netbeans.api.ada.platform org.netbeans.modules.ada.platform.compiler.gnat org.netbeans.modules.ada.platform.compiler.gnat.commands + org.netbeans.modules.ada.platform.compiler.jgnat + org.netbeans.modules.ada.platform.compiler.jgnat.commands org.netbeans.modules.ada.platform.ui org.netbeans.spi.ada.platform diff -r 2f191c83a5c4 -r d2820c029d3a ada.platform/src/org/netbeans/api/ada/platform/AdaAutoDetector.java --- a/ada.platform/src/org/netbeans/api/ada/platform/AdaAutoDetector.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.platform/src/org/netbeans/api/ada/platform/AdaAutoDetector.java Sun Aug 22 23:37:11 2010 +0200 @@ -40,7 +40,6 @@ import java.io.File; import java.util.ArrayList; -import java.util.logging.Level; import java.util.logging.Logger; import org.openide.util.Utilities; @@ -82,7 +81,11 @@ (dir.getName().toLowerCase().contains("bin") && dir.getPath().toLowerCase().contains("gnat")) || (dir.getName().toLowerCase().contains("gnat")) || (dir.getName().toLowerCase().contains("2008") && dir.getPath().toLowerCase().contains("gnat")) || - (dir.getName().toLowerCase().contains("bin") && dir.getPath().toLowerCase().contains("gnat"))) { + (dir.getName().toLowerCase().contains("bin") && dir.getPath().toLowerCase().contains("gnat")) || + (dir.getName().toLowerCase().contains("gnat")) || + (dir.getName().toLowerCase().contains("2009") && dir.getPath().toLowerCase().contains("gnat")) || + (dir.getName().toLowerCase().contains("bin") && dir.getPath().toLowerCase().contains("gnat")) + ) { String[] children = dir.list(); if (children != null) { for (int i = 0; i < children.length; i++) { diff -r 2f191c83a5c4 -r d2820c029d3a ada.platform/src/org/netbeans/api/ada/platform/AdaExecution.java --- a/ada.platform/src/org/netbeans/api/ada/platform/AdaExecution.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.platform/src/org/netbeans/api/ada/platform/AdaExecution.java Sun Aug 22 23:37:11 2010 +0200 @@ -64,6 +64,7 @@ private String commandArgs; private String displayName; private boolean redirect; + private ExecutionDescriptor descriptor = new ExecutionDescriptor().frontWindow(true).controllable(true).inputVisible(true).showProgress(true).showSuspended(true); /** diff -r 2f191c83a5c4 -r d2820c029d3a ada.platform/src/org/netbeans/api/ada/platform/AdaOutputProcessor.java --- a/ada.platform/src/org/netbeans/api/ada/platform/AdaOutputProcessor.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.platform/src/org/netbeans/api/ada/platform/AdaOutputProcessor.java Sun Aug 22 23:37:11 2010 +0200 @@ -48,12 +48,14 @@ */ public class AdaOutputProcessor implements InputProcessor { StringBuilder builder = new StringBuilder(); + + @Override public void processInput(char[] input) throws IOException { builder.append(input); } public void reset() throws IOException { - //builder = new StringBuilder(); + builder.setLength(0); } public void close() throws IOException { diff -r 2f191c83a5c4 -r d2820c029d3a ada.platform/src/org/netbeans/api/ada/platform/AdaPlatform.java --- a/ada.platform/src/org/netbeans/api/ada/platform/AdaPlatform.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.platform/src/org/netbeans/api/ada/platform/AdaPlatform.java Sun Aug 22 23:37:11 2010 +0200 @@ -53,36 +53,44 @@ private String info; private String compilerPath; - private String compilerCommand; - private String compilerArgs; - private boolean dirty; + private String gnatCompilerCommand; + private String gnatCompilerArgs; + private String jvmGnatCompilerCommand; + private String jvmGnatCompilerArgs; + + public String getJvmGnatCompilerArgs() { + return jvmGnatCompilerArgs; + } + + public void setJvmGnatCompilerArgs(String jvmGnatCompilerArgs) { + this.jvmGnatCompilerArgs = jvmGnatCompilerArgs; + } + + public String getJvmGnatCompilerCommand() { + return jvmGnatCompilerCommand; + } + + public void setJvmGnatCompilerCommand(String jvmGnatCompilerCommand) { + this.jvmGnatCompilerCommand = jvmGnatCompilerCommand; + } public AdaPlatform() { } - public String getCompilerArgs() { - return compilerArgs; + public String getGnatCompilerArgs() { + return gnatCompilerArgs; } - public void setCompilerArgs(String compilerArgs) { - this.compilerArgs = compilerArgs; + public void setGnatCompilerArgs(String gnatCompilerArgs) { + this.gnatCompilerArgs = gnatCompilerArgs; } - public String getInterpreterCommand() { - return compilerCommand; + public String getGnatCompilerCommand() { + return gnatCompilerCommand; } - public void setCompilerCommand(String compilerCommand) { - this.compilerCommand = compilerCommand; - } - - public String getCompilerCommand() { - return compilerCommand; - } - - /** Has this platform been changed since the last load? */ - public boolean isDirty() { - return dirty; + public void setGnatCompilerCommand(String gnatCompilerCommand) { + this.gnatCompilerCommand = gnatCompilerCommand; } public String getName() { @@ -108,22 +116,4 @@ public void setCompilerPath(String compilerPath) { this.compilerPath = compilerPath; } - - /** - * Build a path string from arraylist - * @param path - * @return - */ - public static String buildPath(ArrayList path){ - StringBuilder pathString = new StringBuilder(); - int count = 0; - for(String pathEle: path){ - pathString.append(pathEle); - if (count++ < path.size()){ - pathString.append(File.pathSeparator); - } - } - return pathString.toString(); - } - } diff -r 2f191c83a5c4 -r d2820c029d3a ada.platform/src/org/netbeans/api/ada/platform/AdaPlatformManager.java --- a/ada.platform/src/org/netbeans/api/ada/platform/AdaPlatformManager.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.platform/src/org/netbeans/api/ada/platform/AdaPlatformManager.java Sun Aug 22 23:37:11 2010 +0200 @@ -69,9 +69,14 @@ public class AdaPlatformManager implements Serializable { private static final Logger LOGGER = Logger.getLogger(AdaPlatformManager.class.getName()); + + // Ada platforms properties private static final String PLATFORM_FILE = System.getProperty("netbeans.user") + "/config/ada-platforms.xml"; private static final String GNAT_EXECUTABLE_NAME = "gnat"; // NOI18N + private static final String JVM_GNAT_EXECUTABLE_NAME = "jvm-gnat"; // NOI18N private static final String GNAT_PLATFORM_NAME = "GNAT"; + + // Ada platforms hash table private HashMap platforms; private String defaultPlatform; @@ -211,8 +216,12 @@ public AdaPlatform findPlatformProperties(FileObject folder) throws AdaException { AdaPlatform platform = null; - String id = null; - + File tool = null; + AdaExecution adaExec = null; + ReaderInputStream is = null; + BufferedReader reader = null; + String line = null; + // Find GNAT Tool // ??? Now only GNAT platform is supported FileObject gnat = findTool(GNAT_EXECUTABLE_NAME, folder); @@ -220,8 +229,8 @@ if (gnat != null) { try { - File tool = FileUtil.toFile(gnat); - AdaExecution adaExec = new AdaExecution(); + tool = FileUtil.toFile(gnat); + adaExec = new AdaExecution(); adaExec.setCommand(tool.getPath()); adaExec.setDisplayName("Ada Platform Properties"); adaExec.setShowControls(false); @@ -234,9 +243,9 @@ Future result = adaExec.run(); Integer value = result.get(); if (value.intValue() == 0) { - ReaderInputStream is = new ReaderInputStream(adaExec.getOutput()); - BufferedReader reader = new BufferedReader(new InputStreamReader(is)); - String line = null; + is = new ReaderInputStream(adaExec.getOutput()); + reader = new BufferedReader(new InputStreamReader(is)); + line = null; try { while ((line = reader.readLine()) != null) { if (line.contains(GNAT_PLATFORM_NAME)) { @@ -245,16 +254,12 @@ int endIndex2 = line.indexOf(")") < 0 ? line.length() : line.indexOf(")"); platform = new AdaPlatform(); - platform.setName(GNAT_PLATFORM_NAME + line.substring(startIndex, endIndex)); + platform.setName((GNAT_PLATFORM_NAME + line.substring(startIndex, endIndex)).trim()); if (endIndex < endIndex2) { platform.setInfo(line.substring(endIndex + 1, endIndex2)); } - platform.setCompilerCommand(GNAT_EXECUTABLE_NAME); + platform.setGnatCompilerCommand(GNAT_EXECUTABLE_NAME); platform.setCompilerPath(tool.getPath().substring(0, tool.getPath().lastIndexOf(tool.getName()))); - if (platforms.size() == 0) { - setDefaultPlatform(platform.getName()); - } - platforms.put(platform.getName(), platform); break; } } @@ -277,6 +282,64 @@ Exceptions.printStackTrace(ex); } } + + FileObject jvmgnat = findTool(JVM_GNAT_EXECUTABLE_NAME, folder); + + if (jvmgnat != null) { + + try { + tool = FileUtil.toFile(jvmgnat); + adaExec = new AdaExecution(); + adaExec.setCommand(tool.getPath()); + adaExec.setDisplayName("Ada Platform Properties"); + adaExec.setShowControls(false); + adaExec.setShowInput(false); + adaExec.setShowWindow(false); + adaExec.setShowProgress(false); + adaExec.setShowSuspended(false); + adaExec.attachOutputProcessor(); + adaExec.setWorkingDirectory(tool.getPath().substring(0, tool.getPath().lastIndexOf(tool.getName()))); + Future result = adaExec.run(); + Integer value = result.get(); + if (value.intValue() == 0) { + is = new ReaderInputStream(adaExec.getOutput()); + reader = new BufferedReader(new InputStreamReader(is)); + line = null; + try { + while ((line = reader.readLine()) != null) { + if (line.contains(GNAT_PLATFORM_NAME)) { + platform.setJvmGnatCompilerCommand(JVM_GNAT_EXECUTABLE_NAME); + platform.setName(platform.getName() + "+JVM"); + break; + } + } + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + is.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } else { + throw new AdaException("Could not discover Ada properties"); + } + } catch (AdaException ex) { + Exceptions.printStackTrace(ex); + throw ex; + } catch (Exception ex) { + Exceptions.printStackTrace(ex); + } + } + + if (platform != null) { + if (platforms.size() == 0) { + setDefaultPlatform(platform.getName()); + } + platforms.put(platform.getName(), platform); + } + return platform; } diff -r 2f191c83a5c4 -r d2820c029d3a ada.platform/src/org/netbeans/modules/ada/platform/compiler/gnat/GnatProject.java --- a/ada.platform/src/org/netbeans/modules/ada/platform/compiler/gnat/GnatProject.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.platform/src/org/netbeans/modules/ada/platform/compiler/gnat/GnatProject.java Sun Aug 22 23:37:11 2010 +0200 @@ -50,6 +50,7 @@ import java.io.OutputStreamWriter; import java.net.URL; import java.util.ArrayList; +import java.util.StringTokenizer; import org.netbeans.modules.ada.platform.compiler.gnat.commands.GnatCommand; import org.openide.filesystems.FileUtil; @@ -80,6 +81,15 @@ } } + public String removeSpaces(String s) { + StringTokenizer st = new StringTokenizer(s, " ", false); + String t = ""; + while (st.hasMoreElements()) { + t += st.nextElement(); + } + return t; + } + private void writeGprfileImpl() { String resource = "/org/netbeans/modules/ada/platform/resources/GprFileTemplate.gpr"; // NOI18N InputStream is = null; @@ -91,7 +101,12 @@ is = GnatCommand.class.getResourceAsStream(resource); } - gprFilePath = gnat.getProjectPath() + '/' + "nbproject" + '/' + gnat.getProjectName() + ".gpr"; // UNIX path // NOI18N + String projectName = removeSpaces(gnat.getProjectName()); + String mainFile = gnat.getMainFile(); + String execFile = gnat.getExecutableFile(); + ArrayList sources = gnat.getSourceFolders(); + + gprFilePath = gnat.getProjectPath() + '/' + "nbproject" + '/' + projectName + ".gpr"; // UNIX path // NOI18N try { os = new FileOutputStream(gprFilePath); } catch (IOException ioe) { @@ -106,15 +121,6 @@ BufferedReader br = new BufferedReader(new InputStreamReader(is)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os)); - String projectName = gnat.getProjectName(); - String mainFile = gnat.getMainFile(); - String execFile = gnat.getExecutableFile(); - ArrayList sources = gnat.getSourceFolders(); - - //if (src.equalsIgnoreCase("src")) { - // src = "../src/**"; - //} - try { while (true) { String line = br.readLine(); @@ -128,7 +134,9 @@ String srcDirs = new String(); for (int index = 0; index < sources.size(); index++) { srcDirs = srcDirs + "\"" + FileUtil.toFileObject(new File(sources.get(index))).getPath() + "/**\""; - if (index < sources.size()-1) srcDirs = srcDirs + ","; + if (index < sources.size() - 1) { + srcDirs = srcDirs + ","; + } } line = line.replaceFirst("\"\"", srcDirs); // NOI18N } diff -r 2f191c83a5c4 -r d2820c029d3a ada.platform/src/org/netbeans/modules/ada/platform/compiler/gnat/commands/GnatClean.java --- a/ada.platform/src/org/netbeans/modules/ada/platform/compiler/gnat/commands/GnatClean.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.platform/src/org/netbeans/modules/ada/platform/compiler/gnat/commands/GnatClean.java Sun Aug 22 23:37:11 2010 +0200 @@ -72,7 +72,7 @@ try { AdaExecution adaExec = new AdaExecution(); adaExec.setCommand(this.getGnatCompiler().getPlatform().getCompilerPath() + "/" + GNAT_CLEAN); - adaExec.setCommandArgs(" -P" + gpr.getGprFilePath()); + adaExec.setCommandArgs(" -P\"" + gpr.getGprFilePath() + "\""); adaExec.setWorkingDirectory(this.getGnatCompiler().getProjectPath()); adaExec.setDisplayName(displayTitle); adaExec.setShowControls(true); diff -r 2f191c83a5c4 -r d2820c029d3a ada.platform/src/org/netbeans/modules/ada/platform/compiler/gnat/commands/GnatMake.java --- a/ada.platform/src/org/netbeans/modules/ada/platform/compiler/gnat/commands/GnatMake.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.platform/src/org/netbeans/modules/ada/platform/compiler/gnat/commands/GnatMake.java Sun Aug 22 23:37:11 2010 +0200 @@ -72,7 +72,7 @@ try { AdaExecution adaExec = new AdaExecution(); adaExec.setCommand(this.getGnatCompiler().getPlatform().getCompilerPath() + "/" + GNAT_MAKE); - adaExec.setCommandArgs(" -P" + gpr.getGprFilePath()); + adaExec.setCommandArgs(" -P\"" + gpr.getGprFilePath() +"\""); adaExec.setWorkingDirectory(this.getGnatCompiler().getProjectPath()); adaExec.setDisplayName(displayTitle); adaExec.setShowControls(true); diff -r 2f191c83a5c4 -r d2820c029d3a ada.platform/src/org/netbeans/modules/ada/platform/compiler/jgnat/JGnatCompiler.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ada.platform/src/org/netbeans/modules/ada/platform/compiler/jgnat/JGnatCompiler.java Sun Aug 22 23:37:11 2010 +0200 @@ -0,0 +1,220 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common + * Development and Distribution License("CDDL") (collectively, the + * "License"). You may not use this file except in compliance with the + * License. You can obtain a copy of the License at + * http://www.netbeans.org/cddl-gplv2.html + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the + * specific language governing permissions and limitations under the + * License. When distributing the software, include this License Header + * Notice in each file and include the License file at + * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the GPL Version 2 section of the License file that + * accompanied this code. If applicable, add the following below the + * License Header, with the fields enclosed by brackets [] replaced by + * your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + * If you wish your version of this file to be governed by only the CDDL + * or only the GPL Version 2, indicate your decision by adding + * "[Contributor] elects to include this software in this distribution + * under the [CDDL or GPL Version 2] license." If you do not indicate a + * single choice of license, a recipient has the option to distribute + * your version of this file under either the CDDL, the GPL Version 2 or + * to extend the choice of license to its licensees as provided above. + * However, if you add GPL Version 2 code and therefore, elected the GPL + * Version 2 license, then the option applies only if the new code is + * made subject to such option by the copyright holder. + * + * Contributor(s): + * + * Portions Copyrighted 2008 Sun Microsystems, Inc. + */ +package org.netbeans.modules.ada.platform.compiler.jgnat; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.Map; +import org.netbeans.api.ada.platform.AdaException; +import org.netbeans.api.ada.platform.AdaPlatform; +import org.netbeans.spi.ada.platform.Compiler; +import org.netbeans.modules.ada.platform.compiler.jgnat.commands.JGnatCommand; +import org.netbeans.modules.ada.platform.compiler.jgnat.commands.JGnatClean; +import org.netbeans.modules.ada.platform.compiler.jgnat.commands.JGnatMake; +import org.netbeans.modules.ada.platform.compiler.jgnat.commands.JRun; +import org.openide.util.Exceptions; + +/** + * + * @author Andrea Lucarelli + */ +public class JGnatCompiler implements Compiler { + + private final Map jgnatCommands; + private final AdaPlatform platform; + private final String projectName; + private final String projectPath; + private final ArrayList sourceFolders; + private final String mainFile; + private final String outputFile; + private final String commandName; + private final String spcPostfix; + private final String bdyPostfix; + private final String sepPostfix; + private final String spcExt; + private final String bdyExt; + private final String sepExt; + + /** + * + * @param project + */ + public JGnatCompiler(AdaPlatform platform, String projectName, String projectPath, ArrayList sourceFolders, String mainFile, String outputFile, String commandName, + String spcPostfix, String bdyPostfix, String sepPostfix, String spcExt, String bdyExt, String sepExt) { + + assert platform != null; + + this.platform = platform; + this.projectName = projectName; + this.projectPath = projectPath; + this.sourceFolders = sourceFolders; + this.mainFile = mainFile; + this.outputFile = outputFile; + this.commandName = commandName; + + jgnatCommands = new LinkedHashMap(); + JGnatCommand[] gnatCommandArray = new JGnatCommand[]{ + new JGnatMake(this), + new JGnatClean(this), + new JRun(this) + }; + for (JGnatCommand gnatCommand : gnatCommandArray) { + jgnatCommands.put(gnatCommand.getCommandId(), gnatCommand); + } + this.spcExt = spcExt; + this.bdyExt = bdyExt; + this.sepExt = sepExt; + this.spcPostfix = spcPostfix; + this.bdyPostfix = bdyPostfix; + this.sepPostfix = sepPostfix; + } + + /** + * + * @param commandName + * @throws IllegalArgumentException + */ + private void invokeCommand(final String commandName, final String displayTitle, final String args) throws IllegalArgumentException, AdaException { + final JGnatCommand jgnatCommand = findCommand(commandName); + assert jgnatCommand != null; + jgnatCommand.invokeCommand(displayTitle, args); + } + + /** + * + * @param commandName + * @return + */ + private JGnatCommand findCommand(final String commandName) { + assert commandName != null; + return jgnatCommands.get(commandName); + } + + public void Build() { + try { + invokeCommand(JGnatCommand.JVM_GNAT_MAKE, this.getProjectName() + "(" + this.getCommandName() + ")", null); + } catch (IllegalArgumentException ex) { + Exceptions.printStackTrace(ex); + } catch (AdaException ex) { + Exceptions.printStackTrace(ex); + } + } + + public void Run(String args) { + try { + invokeCommand(JGnatCommand.RUN, this.getProjectName() + "(" + this.getCommandName() + ")", args); + } catch (IllegalArgumentException ex) { + Exceptions.printStackTrace(ex); + } catch (AdaException ex) { + Exceptions.printStackTrace(ex); + } + } + + public void Compile() { + try { + invokeCommand(JGnatCommand.JVM_GNAT_COMPILE, this.getProjectName() + "(" + this.getCommandName() + ")", null); + } catch (IllegalArgumentException ex) { + Exceptions.printStackTrace(ex); + } catch (AdaException ex) { + Exceptions.printStackTrace(ex); + } + } + + public void Clean() { + try { + invokeCommand(JGnatCommand.JVM_GNAT_CLEAN, this.getProjectName() + "(" + this.getCommandName() + ")", null); + } catch (IllegalArgumentException ex) { + Exceptions.printStackTrace(ex); + } catch (AdaException ex) { + Exceptions.printStackTrace(ex); + } + } + + public AdaPlatform getPlatform() { + return platform; + } + + public String getExecutableFile() { + return outputFile; + } + + public String getCommandName() { + return commandName; + } + + public String getMainFile() { + return mainFile; + } + + public String getProjectPath() { + return projectPath; + } + + public String getProjectName() { + return projectName; + } + + public ArrayList getSourceFolders() { + return sourceFolders; + } + + public String getBdyExt() { + return bdyExt; + } + + public String getSepExt() { + return sepExt; + } + + public String getSpcExt() { + return spcExt; + } + + public String getBdyPostfix() { + return bdyPostfix; + } + + public String getSepPostfix() { + return sepPostfix; + } + + public String getSpcPostfix() { + return spcPostfix; + } +} diff -r 2f191c83a5c4 -r d2820c029d3a ada.platform/src/org/netbeans/modules/ada/platform/compiler/jgnat/JGnatProject.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ada.platform/src/org/netbeans/modules/ada/platform/compiler/jgnat/JGnatProject.java Sun Aug 22 23:37:11 2010 +0200 @@ -0,0 +1,177 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common + * Development and Distribution License("CDDL") (collectively, the + * "License"). You may not use this file except in compliance with the + * License. You can obtain a copy of the License at + * http://www.netbeans.org/cddl-gplv2.html + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the + * specific language governing permissions and limitations under the + * License. When distributing the software, include this License Header + * Notice in each file and include the License file at + * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the GPL Version 2 section of the License file that + * accompanied this code. If applicable, add the following below the + * License Header, with the fields enclosed by brackets [] replaced by + * your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + * Contributor(s): + * + * The Original Software is NetBeans. The Initial Developer of the Original + * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun + * Microsystems, Inc. All Rights Reserved. + * + * If you wish your version of this file to be governed by only the CDDL + * or only the GPL Version 2, indicate your decision by adding + * "[Contributor] elects to include this software in this distribution + * under the [CDDL or GPL Version 2] license." If you do not indicate a + * single choice of license, a recipient has the option to distribute + * your version of this file under either the CDDL, the GPL Version 2 or + * to extend the choice of license to its licensees as provided above. + * However, if you add GPL Version 2 code and therefore, elected the GPL + * Version 2 license, then the option applies only if the new code is + * made subject to such option by the copyright holder. + */ +package org.netbeans.modules.ada.platform.compiler.jgnat; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.net.URL; +import java.util.ArrayList; +import java.util.StringTokenizer; +import org.netbeans.modules.ada.platform.compiler.jgnat.commands.JGnatCommand; +import org.openide.filesystems.FileUtil; + +public class JGnatProject { + + private final JGnatCompiler jgnat; + private String gprFilePath; + + public JGnatProject(final JGnatCompiler jgnat) { + this.jgnat = jgnat; + } + + public void write() { + cleanup(); + writeGprfileImpl(); + } + + private void cleanup() { + // Remove all *.gpr files + File folder = new File(jgnat.getProjectPath() + '/' + "nbproject"); // UNIX path // NOI18N + File[] children = folder.listFiles(); + if (children != null) { + for (int i = 0; i < children.length; i++) { + if (children[i].getName().endsWith("gpr")) { // NOI18N + children[i].delete(); + } + } + } + } + + public String removeSpaces(String s) { + StringTokenizer st = new StringTokenizer(s, " ", false); + String t = ""; + while (st.hasMoreElements()) { + t += st.nextElement(); + } + return t; + } + + private void writeGprfileImpl() { + String resource = "/org/netbeans/modules/ada/platform/resources/GprFileTemplate.gpr"; // NOI18N + InputStream is = null; + FileOutputStream os = null; + try { + URL url = new URL("nbresloc:" + resource); // NOI18N + is = url.openStream(); + } catch (Exception e) { + is = JGnatCommand.class.getResourceAsStream(resource); + } + + String projectName = removeSpaces(jgnat.getProjectName()); + String mainFile = jgnat.getMainFile(); + String execFile = jgnat.getExecutableFile(); + ArrayList sources = jgnat.getSourceFolders(); + + gprFilePath = jgnat.getProjectPath() + '/' + "nbproject" + '/' + projectName + ".gpr"; // UNIX path // NOI18N + try { + os = new FileOutputStream(gprFilePath); + } catch (IOException ioe) { + ioe.printStackTrace(); + } + + if (is == null || os == null) { + // FIXUP: ERROR + return; + } + + BufferedReader br = new BufferedReader(new InputStreamReader(is)); + BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os)); + + try { + while (true) { + String line = br.readLine(); + if (line == null) { + break; + } + if (line.indexOf("") >= 0) { // NOI18N + line = line.replaceFirst("", projectName); // NOI18N + } + if (line.indexOf("") >= 0) { // NOI18N + String srcDirs = new String(); + for (int index = 0; index < sources.size(); index++) { + srcDirs = srcDirs + "\"" + FileUtil.toFileObject(new File(sources.get(index))).getPath() + "/**\""; + if (index < sources.size() - 1) { + srcDirs = srcDirs + ","; + } + } + line = line.replaceFirst("\"\"", srcDirs); // NOI18N + } + if (line.indexOf("") >= 0) { // NOI18N + line = line.replaceFirst("", mainFile); // NOI18N + } + if (line.indexOf("") >= 0) { // NOI18N + line = line.replaceFirst("", execFile); // NOI18N + } + if (line.indexOf("") >= 0) { // NOI18N + line = line.replaceFirst("", jgnat.getSpcExt()); // NOI18N + } + if (line.indexOf("") >= 0) { // NOI18N + line = line.replaceFirst("", jgnat.getBdyExt()); // NOI18N + } + if (line.indexOf("") >= 0) { // NOI18N + line = line.replaceFirst("", jgnat.getSepExt()); // NOI18N + } + if (line.indexOf("") >= 0) { // NOI18N + line = line.replaceFirst("", jgnat.getSpcPostfix()); // NOI18N + } + if (line.indexOf("") >= 0) { // NOI18N + line = line.replaceFirst("", jgnat.getBdyPostfix()); // NOI18N + } + bw.write(line + "\n"); // NOI18N + } + br.close(); + bw.flush(); + bw.close(); + } catch (Exception e) { + } + + } + + public String getGprFilePath() { + return this.gprFilePath; + } +} diff -r 2f191c83a5c4 -r d2820c029d3a ada.platform/src/org/netbeans/modules/ada/platform/compiler/jgnat/commands/JGnatClean.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ada.platform/src/org/netbeans/modules/ada/platform/compiler/jgnat/commands/JGnatClean.java Sun Aug 22 23:37:11 2010 +0200 @@ -0,0 +1,95 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common + * Development and Distribution License("CDDL") (collectively, the + * "License"). You may not use this file except in compliance with the + * License. You can obtain a copy of the License at + * http://www.netbeans.org/cddl-gplv2.html + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the + * specific language governing permissions and limitations under the + * License. When distributing the software, include this License Header + * Notice in each file and include the License file at + * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the GPL Version 2 section of the License file that + * accompanied this code. If applicable, add the following below the + * License Header, with the fields enclosed by brackets [] replaced by + * your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + * If you wish your version of this file to be governed by only the CDDL + * or only the GPL Version 2, indicate your decision by adding + * "[Contributor] elects to include this software in this distribution + * under the [CDDL or GPL Version 2] license." If you do not indicate a + * single choice of license, a recipient has the option to distribute + * your version of this file under either the CDDL, the GPL Version 2 or + * to extend the choice of license to its licensees as provided above. + * However, if you add GPL Version 2 code and therefore, elected the GPL + * Version 2 license, then the option applies only if the new code is + * made subject to such option by the copyright holder. + * + * Contributor(s): + * + * Portions Copyrighted 2008 Sun Microsystems, Inc. + */ +package org.netbeans.modules.ada.platform.compiler.jgnat.commands; + +import java.util.concurrent.Future; +import org.netbeans.api.ada.platform.AdaException; +import org.netbeans.api.ada.platform.AdaExecution; +import org.netbeans.modules.ada.platform.compiler.jgnat.JGnatCompiler; +import org.netbeans.modules.ada.platform.compiler.jgnat.JGnatProject; +import org.openide.util.Exceptions; + +/** + * + * @author Andrea Lucarelli + */ +public class JGnatClean extends JGnatCommand { + + private static final String COMMAND = JVM_GNAT_CLEAN; + + public JGnatClean(JGnatCompiler jgnatCompiler) { + super(jgnatCompiler); + } + + @Override + public String getCommandId() { + return COMMAND; + } + + @Override + public void invokeCommand(String displayTitle, String args) throws IllegalArgumentException, AdaException { + + // Make the GPR file + JGnatProject gpr = new JGnatProject(this.getJGnatCompiler()); + gpr.write(); + + try { + AdaExecution adaExec = new AdaExecution(); + adaExec.setCommand(this.getJGnatCompiler().getPlatform().getCompilerPath() + "/" + COMMAND); + adaExec.setCommandArgs(" -P\"" + gpr.getGprFilePath() + "\""); + adaExec.setWorkingDirectory(this.getJGnatCompiler().getProjectPath()); + adaExec.setDisplayName(displayTitle); + adaExec.setShowControls(true); + adaExec.setShowInput(false); + adaExec.setShowWindow(true); + adaExec.setShowProgress(true); + adaExec.setShowSuspended(true); + //adaExec.attachOutputProcessor(); + adaExec.setRedirectError(true); + Future result = adaExec.run(); + Integer value = result.get(); + if (value.intValue() == 0) { + } else { + } + } catch (Exception ex) { + Exceptions.printStackTrace(ex); + } + + } +} diff -r 2f191c83a5c4 -r d2820c029d3a ada.platform/src/org/netbeans/modules/ada/platform/compiler/jgnat/commands/JGnatCommand.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ada.platform/src/org/netbeans/modules/ada/platform/compiler/jgnat/commands/JGnatCommand.java Sun Aug 22 23:37:11 2010 +0200 @@ -0,0 +1,82 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common + * Development and Distribution License("CDDL") (collectively, the + * "License"). You may not use this file except in compliance with the + * License. You can obtain a copy of the License at + * http://www.netbeans.org/cddl-gplv2.html + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the + * specific language governing permissions and limitations under the + * License. When distributing the software, include this License Header + * Notice in each file and include the License file at + * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the GPL Version 2 section of the License file that + * accompanied this code. If applicable, add the following below the + * License Header, with the fields enclosed by brackets [] replaced by + * your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + * If you wish your version of this file to be governed by only the CDDL + * or only the GPL Version 2, indicate your decision by adding + * "[Contributor] elects to include this software in this distribution + * under the [CDDL or GPL Version 2] license." If you do not indicate a + * single choice of license, a recipient has the option to distribute + * your version of this file under either the CDDL, the GPL Version 2 or + * to extend the choice of license to its licensees as provided above. + * However, if you add GPL Version 2 code and therefore, elected the GPL + * Version 2 license, then the option applies only if the new code is + * made subject to such option by the copyright holder. + * + * Contributor(s): + * + * Portions Copyrighted 2008 Sun Microsystems, Inc. + */ +package org.netbeans.modules.ada.platform.compiler.jgnat.commands; + +import org.netbeans.api.ada.platform.AdaException; +import org.netbeans.modules.ada.platform.compiler.jgnat.JGnatCompiler; + +/** + * + * @author Andrea Lucarelli + */ +public abstract class JGnatCommand { + + public static final String RUN = "run"; // NOI18N + + // List of GNAT available commands + public static final String JVM_GNAT_BIND = "jvm-gnatbind"; // NOI18N + public static final String JVM_GNAT_CHOP = "jvm-gnatchop"; // NOI18N + public static final String JVM_GNAT_CLEAN = "jvm-gnatclean"; // NOI18N + public static final String JVM_GNAT_COMPILE = "jvm-gnatmake -f -u -c"; // NOI18N + public static final String JVM_GNAT_ELIM = "jvm-gnatelim"; // NOI18N + public static final String JVM_GNAT_FIND = "jvm-gnatfind"; // NOI18N + public static final String JVM_GNAT_KRUNCH = "jvm-gnatkr"; // NOI18N + public static final String JVM_GNAT_LINK = "jvm-gnatlink"; // NOI18N + public static final String JVM_GNAT_LIST = "jvm-gnatls"; // NOI18N + public static final String JVM_GNAT_MAKE = "jvm-gnatmake"; // NOI18N + public static final String JVM_GNAT_NAME = "jvm-gnatname"; // NOI18N + public static final String JVM_GNAT_PREPROCESS = "jvm-gnatprep"; // NOI18N + public static final String JVM_GNAT_PRETTY = "jvm-gnatpp"; // NOI18N + public static final String JVM_GNAT_STUB = "jvm-gnatstub"; // NOI18N + public static final String JVM_GNAT_XREF = "jvm-gnatxref"; // NOI18N + + private final JGnatCompiler jgnatCompiler; + + public JGnatCommand(JGnatCompiler jgnatCompiler) { + this.jgnatCompiler = jgnatCompiler; + } + + public abstract String getCommandId(); + + public abstract void invokeCommand(String displayTitle, String args) throws IllegalArgumentException, AdaException; + + public JGnatCompiler getJGnatCompiler() { + return jgnatCompiler; + } +} diff -r 2f191c83a5c4 -r d2820c029d3a ada.platform/src/org/netbeans/modules/ada/platform/compiler/jgnat/commands/JGnatMake.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ada.platform/src/org/netbeans/modules/ada/platform/compiler/jgnat/commands/JGnatMake.java Sun Aug 22 23:37:11 2010 +0200 @@ -0,0 +1,95 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common + * Development and Distribution License("CDDL") (collectively, the + * "License"). You may not use this file except in compliance with the + * License. You can obtain a copy of the License at + * http://www.netbeans.org/cddl-gplv2.html + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the + * specific language governing permissions and limitations under the + * License. When distributing the software, include this License Header + * Notice in each file and include the License file at + * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the GPL Version 2 section of the License file that + * accompanied this code. If applicable, add the following below the + * License Header, with the fields enclosed by brackets [] replaced by + * your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + * If you wish your version of this file to be governed by only the CDDL + * or only the GPL Version 2, indicate your decision by adding + * "[Contributor] elects to include this software in this distribution + * under the [CDDL or GPL Version 2] license." If you do not indicate a + * single choice of license, a recipient has the option to distribute + * your version of this file under either the CDDL, the GPL Version 2 or + * to extend the choice of license to its licensees as provided above. + * However, if you add GPL Version 2 code and therefore, elected the GPL + * Version 2 license, then the option applies only if the new code is + * made subject to such option by the copyright holder. + * + * Contributor(s): + * + * Portions Copyrighted 2008 Sun Microsystems, Inc. + */ +package org.netbeans.modules.ada.platform.compiler.jgnat.commands; + +import java.util.concurrent.Future; +import org.netbeans.api.ada.platform.AdaException; +import org.netbeans.api.ada.platform.AdaExecution; +import org.netbeans.modules.ada.platform.compiler.jgnat.JGnatCompiler; +import org.netbeans.modules.ada.platform.compiler.jgnat.JGnatProject; +import org.openide.util.Exceptions; + +/** + * + * @author Andrea Lucarelli + */ +public class JGnatMake extends JGnatCommand { + + private static final String COMMAND = JVM_GNAT_MAKE; + + public JGnatMake(JGnatCompiler jgnatCompiler) { + super(jgnatCompiler); + } + + @Override + public String getCommandId() { + return COMMAND; + } + + @Override + public void invokeCommand(String displayTitle, String args) throws IllegalArgumentException, AdaException { + + // Make the GPR file + JGnatProject gpr = new JGnatProject(this.getJGnatCompiler()); + gpr.write(); + + try { + AdaExecution adaExec = new AdaExecution(); + adaExec.setCommand(this.getJGnatCompiler().getPlatform().getCompilerPath() + "/" + COMMAND); + adaExec.setCommandArgs(" -P\"" + gpr.getGprFilePath() +"\""); + adaExec.setWorkingDirectory(this.getJGnatCompiler().getProjectPath()); + adaExec.setDisplayName(displayTitle); + adaExec.setShowControls(true); + adaExec.setShowInput(false); + adaExec.setShowWindow(true); + adaExec.setShowProgress(true); + adaExec.setShowSuspended(true); + //adaExec.attachOutputProcessor(); + adaExec.setRedirectError(true); + Future result = adaExec.run(); + Integer value = result.get(); + if (value.intValue() == 0) { + } else { + } + } catch (Exception ex) { + Exceptions.printStackTrace(ex); + } + + } +} diff -r 2f191c83a5c4 -r d2820c029d3a ada.platform/src/org/netbeans/modules/ada/platform/compiler/jgnat/commands/JRun.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ada.platform/src/org/netbeans/modules/ada/platform/compiler/jgnat/commands/JRun.java Sun Aug 22 23:37:11 2010 +0200 @@ -0,0 +1,95 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common + * Development and Distribution License("CDDL") (collectively, the + * "License"). You may not use this file except in compliance with the + * License. You can obtain a copy of the License at + * http://www.netbeans.org/cddl-gplv2.html + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the + * specific language governing permissions and limitations under the + * License. When distributing the software, include this License Header + * Notice in each file and include the License file at + * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the GPL Version 2 section of the License file that + * accompanied this code. If applicable, add the following below the + * License Header, with the fields enclosed by brackets [] replaced by + * your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + * If you wish your version of this file to be governed by only the CDDL + * or only the GPL Version 2, indicate your decision by adding + * "[Contributor] elects to include this software in this distribution + * under the [CDDL or GPL Version 2] license." If you do not indicate a + * single choice of license, a recipient has the option to distribute + * your version of this file under either the CDDL, the GPL Version 2 or + * to extend the choice of license to its licensees as provided above. + * However, if you add GPL Version 2 code and therefore, elected the GPL + * Version 2 license, then the option applies only if the new code is + * made subject to such option by the copyright holder. + * + * Contributor(s): + * + * Portions Copyrighted 2008 Sun Microsystems, Inc. + */ +package org.netbeans.modules.ada.platform.compiler.jgnat.commands; + +import java.util.concurrent.Future; +import org.netbeans.api.ada.platform.AdaException; +import org.netbeans.api.ada.platform.AdaExecution; +import org.netbeans.modules.ada.platform.compiler.jgnat.JGnatProject; +import org.netbeans.modules.ada.platform.compiler.jgnat.JGnatCompiler; +import org.openide.util.Exceptions; + +/** + * + * @author Andrea Lucarelli + */ +public class JRun extends JGnatCommand { + + private static final String COMMAND_ID = RUN; + + public JRun(JGnatCompiler jgnatCompiler) { + super(jgnatCompiler); + } + + @Override + public String getCommandId() { + return COMMAND_ID; + } + + @Override + public void invokeCommand(String displayTitle, String args) throws IllegalArgumentException, AdaException { + + // Make the GPR file + JGnatProject gpr = new JGnatProject(this.getJGnatCompiler()); + gpr.write(); + + try { + AdaExecution adaExec = new AdaExecution(); + adaExec.setCommand(this.getJGnatCompiler().getProjectPath() + "/dist/" + this.getJGnatCompiler().getExecutableFile()); + adaExec.setCommandArgs(args); + adaExec.setWorkingDirectory(this.getJGnatCompiler().getProjectPath()); + adaExec.setDisplayName(displayTitle); + adaExec.setShowControls(true); + adaExec.setShowInput(false); + adaExec.setShowWindow(true); + adaExec.setShowProgress(true); + adaExec.setShowSuspended(true); + //adaExec.attachOutputProcessor(); + adaExec.setRedirectError(true); + Future result = adaExec.run(); + Integer value = result.get(); + if (value.intValue() == 0) { + } else { + } + } catch (Exception ex) { + Exceptions.printStackTrace(ex); + } + + } +} diff -r 2f191c83a5c4 -r d2820c029d3a ada.platform/src/org/netbeans/modules/ada/platform/ui/Bundle.properties --- a/ada.platform/src/org/netbeans/modules/ada/platform/ui/Bundle.properties Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.platform/src/org/netbeans/modules/ada/platform/ui/Bundle.properties Sun Aug 22 23:37:11 2010 +0200 @@ -78,10 +78,12 @@ PlatformsCustomizer.moveUpPath.text=Move Up PlatformsCustomizer.addPath.text=Add... PlatformsCustomizer.removePath.text=Remove -PlatformsCustomizer.compilerCommandLabel.text=Compiler Command +PlatformsCustomizer.compilerCommandLabel.text=GNAT Compiler Command PlatformsCustomizer.platformName.text_1= PlatformsCustomizer.otherInfoLabel.text=Platform info PlatformsCustomizer.compilerCommand.text= PlatformsCustomizer.adaPathPanel.TabConstraints.tabTitle_1=Ada Path PlatformsCustomizer.platformInfoTextField.text= PlatformsCustomizer.autoDetectLabel.text=Detecting Ada Platforms +PlatformsCustomizer.jvmCompilerCommandLabel.text=JVM Compiler Command +PlatformsCustomizer.jvmCompilerCommand.text= diff -r 2f191c83a5c4 -r d2820c029d3a ada.platform/src/org/netbeans/modules/ada/platform/ui/PlatformsCustomizer.form --- a/ada.platform/src/org/netbeans/modules/ada/platform/ui/PlatformsCustomizer.form Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.platform/src/org/netbeans/modules/ada/platform/ui/PlatformsCustomizer.form Sun Aug 22 23:37:11 2010 +0200 @@ -28,18 +28,18 @@ - - + + - + - + - + - + @@ -52,9 +52,9 @@ - + - + @@ -148,44 +148,38 @@ - + - - - - + + + + + + + + - - - + + + + + - + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - @@ -207,7 +201,12 @@ - + + + + + + @@ -277,6 +276,22 @@ + + + + + + + + + + + + + + + + @@ -297,7 +312,7 @@ - + diff -r 2f191c83a5c4 -r d2820c029d3a ada.platform/src/org/netbeans/modules/ada/platform/ui/PlatformsCustomizer.java --- a/ada.platform/src/org/netbeans/modules/ada/platform/ui/PlatformsCustomizer.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.platform/src/org/netbeans/modules/ada/platform/ui/PlatformsCustomizer.java Sun Aug 22 23:37:11 2010 +0200 @@ -98,6 +98,8 @@ platformInfoTextField = new javax.swing.JTextField(); autoDetectLabel = new javax.swing.JLabel(); autoDetectProgress = new javax.swing.JProgressBar(); + jvmCompilerCommand = new javax.swing.JTextField(); + jvmCompilerCommandLabel = new javax.swing.JLabel(); adaPathPanel = new javax.swing.JPanel(); jLabel5 = new javax.swing.JLabel(); jScrollPane2 = new javax.swing.JScrollPane(); @@ -164,37 +166,44 @@ autoDetectProgress.setIndeterminate(true); + jvmCompilerCommand.setEditable(false); + jvmCompilerCommand.setText(org.openide.util.NbBundle.getMessage(PlatformsCustomizer.class, "PlatformsCustomizer.jvmCompilerCommand.text")); // NOI18N + + jvmCompilerCommandLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); + jvmCompilerCommandLabel.setText(org.openide.util.NbBundle.getMessage(PlatformsCustomizer.class, "PlatformsCustomizer.jvmCompilerCommandLabel.text")); // NOI18N + org.jdesktop.layout.GroupLayout mainPanelLayout = new org.jdesktop.layout.GroupLayout(mainPanel); mainPanel.setLayout(mainPanelLayout); mainPanelLayout.setHorizontalGroup( mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(mainPanelLayout.createSequentialGroup() .add(mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) - .add(mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) - .add(mainPanelLayout.createSequentialGroup() - .addContainerGap() - .add(compilerCommandLabel)) - .add(org.jdesktop.layout.GroupLayout.TRAILING, mainPanelLayout.createSequentialGroup() - .addContainerGap() - .add(platfromNameLabel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 91, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) .add(mainPanelLayout.createSequentialGroup() - .addContainerGap() - .add(otherInfoLabel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 91, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) - .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) - .add(mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) - .add(mainPanelLayout.createSequentialGroup() - .add(compilerCommand, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 392, Short.MAX_VALUE) - .addContainerGap()) + .add(10, 10, 10) + .add(mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) + .add(otherInfoLabel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 91, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(mainPanelLayout.createSequentialGroup() + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(compilerCommandLabel)) + .add(org.jdesktop.layout.GroupLayout.TRAILING, mainPanelLayout.createSequentialGroup() + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(platfromNameLabel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 91, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(compilerCommand, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 324, Short.MAX_VALUE) + .add(platformName, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 324, Short.MAX_VALUE) + .add(org.jdesktop.layout.GroupLayout.TRAILING, platformInfoTextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 324, Short.MAX_VALUE))) .add(org.jdesktop.layout.GroupLayout.TRAILING, mainPanelLayout.createSequentialGroup() - .add(mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) - .add(org.jdesktop.layout.GroupLayout.LEADING, platformName, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 392, Short.MAX_VALUE) - .add(platformInfoTextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 392, Short.MAX_VALUE)) - .addContainerGap()))) - .add(org.jdesktop.layout.GroupLayout.TRAILING, mainPanelLayout.createSequentialGroup() - .addContainerGap(230, Short.MAX_VALUE) - .add(autoDetectLabel) - .add(5, 5, 5) - .add(autoDetectProgress, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addContainerGap(192, Short.MAX_VALUE) + .add(autoDetectLabel) + .add(5, 5, 5) + .add(autoDetectProgress, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(org.jdesktop.layout.GroupLayout.TRAILING, mainPanelLayout.createSequentialGroup() + .add(19, 19, 19) + .add(jvmCompilerCommandLabel) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(jvmCompilerCommand, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 323, Short.MAX_VALUE))) .addContainerGap()) ); mainPanelLayout.setVerticalGroup( @@ -212,7 +221,11 @@ .add(mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(compilerCommandLabel) .add(compilerCommand, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 175, Short.MAX_VALUE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) + .add(mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jvmCompilerCommand, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(jvmCompilerCommandLabel)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 144, Short.MAX_VALUE) .add(mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(autoDetectLabel) .add(autoDetectProgress, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) @@ -263,7 +276,7 @@ .addContainerGap() .add(adaPathPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(adaPathPanelLayout.createSequentialGroup() - .add(jScrollPane2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 392, Short.MAX_VALUE) + .add(jScrollPane2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 354, Short.MAX_VALUE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(adaPathPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(moveDownPath, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) @@ -307,16 +320,16 @@ .add(layout.createSequentialGroup() .addContainerGap() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) - .add(org.jdesktop.layout.GroupLayout.LEADING, makeDefaultButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 130, Short.MAX_VALUE) - .add(org.jdesktop.layout.GroupLayout.LEADING, autoDetectButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 130, Short.MAX_VALUE) + .add(org.jdesktop.layout.GroupLayout.LEADING, makeDefaultButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 168, Short.MAX_VALUE) + .add(org.jdesktop.layout.GroupLayout.LEADING, autoDetectButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 168, Short.MAX_VALUE) .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup() - .add(newButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(newButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 73, Short.MAX_VALUE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) - .add(removeButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .add(removeButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 89, Short.MAX_VALUE)) .add(org.jdesktop.layout.GroupLayout.LEADING, paltformsListTitleLabel) - .add(org.jdesktop.layout.GroupLayout.LEADING, platformsListScrollPanel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 130, Short.MAX_VALUE)) + .add(org.jdesktop.layout.GroupLayout.LEADING, platformsListScrollPanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 168, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) - .add(tabbedPane, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 512, Short.MAX_VALUE) + .add(tabbedPane, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 474, Short.MAX_VALUE) .addContainerGap()) ); layout.setVerticalGroup( @@ -350,8 +363,9 @@ private void loadPlatform() { platformName.setText(adaPlatform.getName()); platformInfoTextField.setText(adaPlatform.getInfo()); - compilerCommand.setText(adaPlatform.getInterpreterCommand()); - // TODO: add in main tab the commands list for ada platform + compilerCommand.setText(adaPlatform.getGnatCompilerCommand()); + jvmCompilerCommand.setText(adaPlatform.getJvmGnatCompilerCommand()); + // TODO: add in main tab the commands list for ada platform // adaPathModel.setModel(adaPlatform.getCompilerPath()); } @@ -410,9 +424,11 @@ if (fo != null) { try { adaPlatform = adaPlatformManager.findPlatformProperties(fo); - loadPlatform(); - platformListModel.refresh(); - platformName.setEditable(true); + if (adaPlatform != null) { + loadPlatform(); + platformListModel.refresh(); + platformName.setEditable(true); + } } catch (AdaException ex) { Exceptions.printStackTrace(ex); } @@ -434,14 +450,15 @@ }//GEN-LAST:event_PlatformListValueChanged private void removeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeButtonActionPerformed - int selectedIndex = PlatformList.getSelectedIndex(); - if (selectedIndex != -1) { - adaPlatformManager.removePlatform( - (String) platformListModel.getElementAt( - PlatformList.getSelectedIndex())); - platformListModel.refresh(); - adaPlatform = null; - clearPlatform(); + if (platformListModel.getSize() > 0) { + int selectedIndex = PlatformList.getSelectedIndex(); + if (selectedIndex != -1) { + adaPlatformManager.removePlatform( + (String) platformListModel.getElementAt(selectedIndex)); + platformListModel.refresh(); + adaPlatform = null; + clearPlatform(); + } } }//GEN-LAST:event_removeButtonActionPerformed @@ -479,9 +496,11 @@ private void autoDetectButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_autoDetectButtonActionPerformed setAutoDetecting(true); RequestProcessor.getDefault().post(new Runnable() { + public void run() { adaPlatformManager.autoDetect(); EventQueue.invokeLater(new Runnable() { + public void run() { platformListModel.refresh(); setAutoDetecting(false); @@ -490,7 +509,6 @@ } }); }//GEN-LAST:event_autoDetectButtonActionPerformed - // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JList PlatformList; private javax.swing.JList adaPath; @@ -504,6 +522,8 @@ private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JScrollPane jScrollPane2; + private javax.swing.JTextField jvmCompilerCommand; + private javax.swing.JLabel jvmCompilerCommandLabel; private javax.swing.JPanel mainPanel; private javax.swing.JButton makeDefaultButton; private javax.swing.JButton moveDownPath; @@ -556,7 +576,7 @@ } adaPlatform.setInfo(platformInfoTextField.getText()); - adaPlatform.setCompilerCommand(compilerCommand.getText()); + adaPlatform.setGnatCompilerCommand(compilerCommand.getText()); // TODO: add in main tab the commands list for ada platform // adaPlatform.setCompilerPath(adaPathModel.getModel()); adaPlatformManager.addPlatform(adaPlatform); @@ -566,5 +586,4 @@ String defaultPlatform = adaPlatformManager.getDefaultPlatform(); return defaultPlatform != null && !defaultPlatform.equals(platform); } - } diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/history.txt --- a/ada.project/history.txt Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.project/history.txt Sun Aug 22 23:37:11 2010 +0200 @@ -1,5 +1,13 @@ -0.1.7: dd-mm-2009 -- TBD +0.1.9: 12-08-2010 +- Add JVM compiler support. + +0.1.8: 13-10-2009 +- Add the signing of the nbm files. +- Fix the issue http://sourceforge.net/tracker/?func=detail&aid=2872967&group_id=248853&atid=1126624. + +0.1.7: 01-10-2009 +- Fix https://sourceforge.net/tracker/?func=detail&aid=2863317&group_id=248853&atid=1126624. +- Ada files naming management (options and project properties). 0.1.6: 13-11-2009 - Minor changes. diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/manifest.mf --- a/ada.project/manifest.mf Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.project/manifest.mf Sun Aug 22 23:37:11 2010 +0200 @@ -3,5 +3,5 @@ OpenIDE-Module: org.netbeans.modules.ada.project OpenIDE-Module-Layer: org/netbeans/modules/ada/project/resources/layer.xml OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/ada/project/Bundle.properties -OpenIDE-Module-Specification-Version: 0.1.7 +OpenIDE-Module-Specification-Version: 0.1.9 diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/nbproject/project.properties --- a/ada.project/nbproject/project.properties Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.project/nbproject/project.properties Sun Aug 22 23:37:11 2010 +0200 @@ -2,3 +2,5 @@ javac.compilerargs=-Xlint -Xlint:-serial nbm.homepage=http://wiki.netbeans.org/Ada nbm.module.author=Andrea Lucarelli +keystore=nbproject/private/keystore +nbm_alias=nbada \ No newline at end of file diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/nbproject/project.xml --- a/ada.project/nbproject/project.xml Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.project/nbproject/project.xml Sun Aug 22 23:37:11 2010 +0200 @@ -11,7 +11,7 @@ 1 - 1.6 + 1.10.1 @@ -20,7 +20,7 @@ 1 - 1.19.1 + 1.22.1 @@ -29,7 +29,7 @@ 1 - 1.12 + 1.16.1 @@ -37,7 +37,7 @@ - 0.1.5 + 0.1.8 @@ -46,7 +46,7 @@ 1 - 1.10 + 1.16.2 @@ -55,7 +55,7 @@ 1 - 1.25 + 1.35.1 @@ -64,7 +64,7 @@ 1 - 1.19 + 1.28.1 @@ -73,7 +73,7 @@ 1 - 1.31 + 1.40.1 @@ -82,7 +82,7 @@ 1 - 1.13 + 1.17.1 @@ -98,7 +98,7 @@ - 7.3 + 7.19.1 @@ -106,7 +106,7 @@ - 7.8 + 7.13.1 @@ -114,7 +114,7 @@ - 7.19 + 7.32.1 @@ -122,7 +122,7 @@ - 7.2 + 7.10.1 @@ -130,7 +130,7 @@ - 7.7 + 7.12.1 @@ -138,7 +138,7 @@ - 7.18.1 + 7.31.2 @@ -146,7 +146,7 @@ - 6.24 + 6.30.1 @@ -155,6 +155,7 @@ org.netbeans.modules.ada.options org.netbeans.modules.ada.project.api org.netbeans.modules.ada.project.options + org.netbeans.modules.ada.project.options.ui org.netbeans.modules.ada.project.ui.properties diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/src/org/netbeans/modules/ada/project/AdaProject.java --- a/ada.project/src/org/netbeans/modules/ada/project/AdaProject.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.project/src/org/netbeans/modules/ada/project/AdaProject.java Sun Aug 22 23:37:11 2010 +0200 @@ -343,9 +343,9 @@ // List of primarily supported templates private static final String[] PRIVILEGED_NAMES = new String[]{ - "Templates/Ada/NewAdaMain", //NOI18N - "Templates/Ada/NewAdaPackageSpec", // NOI18N - "Templates/Ada/NewAdaPackageBody", // NOI18N + "Templates/Ada/NewMain", //NOI18N + "Templates/Ada/NewPackageSpec", // NOI18N + "Templates/Ada/NewPackageBody", // NOI18N "Templates/Other/Folder" }; diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/src/org/netbeans/modules/ada/project/AdaSources.java --- a/ada.project/src/org/netbeans/modules/ada/project/AdaSources.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.project/src/org/netbeans/modules/ada/project/AdaSources.java Sun Aug 22 23:37:11 2010 +0200 @@ -136,8 +136,12 @@ String prop = propNames[i]; String displayName = roots.getRootDisplayName(rootNames[i], prop); String loc = "${" + prop + "}"; // NOI18N - sourcesHelper.addPrincipalSourceRoot(loc, displayName, null, null); // NOI18N - sourcesHelper.addTypedSourceRoot(loc, SOURCES_TYPE_ADA, displayName, null, null); +// sourcesHelper.addPrincipalSourceRoot(loc, displayName, null, null); // NOI18N +// sourcesHelper.addTypedSourceRoot(loc, SOURCES_TYPE_ADA, displayName, null, null); + sourcesHelper.sourceRoot(loc).displayName(displayName) + .add() // principal root + .type(SOURCES_TYPE_ADA).add(); // typed root + } } diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/src/org/netbeans/modules/ada/project/options/AdaOptions.java --- a/ada.project/src/org/netbeans/modules/ada/project/options/AdaOptions.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.project/src/org/netbeans/modules/ada/project/options/AdaOptions.java Sun Aug 22 23:37:11 2010 +0200 @@ -57,8 +57,8 @@ public static final String DEFAULT_PKG_SPEC_PREFIX = ""; // NOI18N public static final String DEFAULT_PKG_BODY_PREFIX = ""; // NOI18N public static final String DEFAULT_SEPARATE_PREFIX = ""; // NOI18N - public static final String DEFAULT_PKG_SPEC_POSTFIX = ""; // NOI18N - public static final String DEFAULT_PKG_BODY_POSTFIX = ""; // NOI18N + public static final String DEFAULT_PKG_SPEC_POSTFIX = ""; // NOI18N + public static final String DEFAULT_PKG_BODY_POSTFIX = ""; // NOI18N public static final String DEFAULT_SEPARATE_POSTFIX = ""; // NOI18N public static final String DEFAULT_PKG_SPEC_EXT = "ads"; // NOI18N public static final String DEFAULT_PKG_BODY_EXT = "adb"; // NOI18N diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/src/org/netbeans/modules/ada/project/options/ui/AdaGeneralOptionsPanel.form --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ada.project/src/org/netbeans/modules/ada/project/options/ui/AdaGeneralOptionsPanel.form Sun Aug 22 23:37:11 2010 +0200 @@ -0,0 +1,410 @@ + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/src/org/netbeans/modules/ada/project/options/ui/AdaGeneralOptionsPanel.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ada.project/src/org/netbeans/modules/ada/project/options/ui/AdaGeneralOptionsPanel.java Sun Aug 22 23:37:11 2010 +0200 @@ -0,0 +1,606 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common + * Development and Distribution License("CDDL") (collectively, the + * "License"). You may not use this file except in compliance with the + * License. You can obtain a copy of the License at + * http://www.netbeans.org/cddl-gplv2.html + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the + * specific language governing permissions and limitations under the + * License. When distributing the software, include this License Header + * Notice in each file and include the License file at + * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the GPL Version 2 section of the License file that + * accompanied this code. If applicable, add the following below the + * License Header, with the fields enclosed by brackets [] replaced by + * your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + * If you wish your version of this file to be governed by only the CDDL + * or only the GPL Version 2, indicate your decision by adding + * "[Contributor] elects to include this software in this distribution + * under the [CDDL or GPL Version 2] license." If you do not indicate a + * single choice of license, a recipient has the option to distribute + * your version of this file under either the CDDL, the GPL Version 2 or + * to extend the choice of license to its licensees as provided above. + * However, if you add GPL Version 2 code and therefore, elected the GPL + * Version 2 license, then the option applies only if the new code is + * made subject to such option by the copyright holder. + * + * Contributor(s): + * + * Portions Copyrighted 2008 Sun Microsystems, Inc. + */ +package org.netbeans.modules.ada.project.options.ui; + +import java.awt.Component; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import javax.swing.DefaultComboBoxModel; +import javax.swing.JComboBox; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JSeparator; +import javax.swing.JTextField; +import javax.swing.UIManager; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import org.jdesktop.layout.GroupLayout; +import org.jdesktop.layout.LayoutStyle; +import org.netbeans.modules.ada.project.ui.properties.AdaProjectProperties; +import org.openide.awt.Mnemonics; +import org.openide.util.ChangeSupport; +import org.openide.util.HelpCtx; +import org.openide.util.NbBundle; + +/** + * @author Andrea Lucarelli + */ +public class AdaGeneralOptionsPanel extends JPanel implements ChangeListener, HelpCtx.Provider { + + private final ChangeSupport changeSupport = new ChangeSupport(this); + private final AdaProjectProperties uiProperties; + private static final String UI_NONE = ""; // NOI18N + private static final String OPT_NONE = ""; // NOI18N + private static final String UI_PACKAGE_NAME = ""; // NOI18N + private static final String UI_PROCEDURE_NAME = ""; // NOI18N + + public AdaGeneralOptionsPanel(final AdaProjectProperties uiProperties) { + this.uiProperties = uiProperties; + initComponents(); + errorLabel.setText(" "); // NOI18N + + if (uiProperties != null) { + setAdaDialects(uiProperties.getAdaDialects()); + setAdaRestrictions(uiProperties.getAdaRestrictions()); + setPkgSpecPrefix(uiProperties.getPkgSpecPrefix()); + setPkgBodyPrefix(uiProperties.getPkgBodyPrefix()); + setSeparatePrefix(uiProperties.getSeparatePrefix()); + setPkgSpecPostfix(uiProperties.getPkgSpecPostfix()); + setPkgBodyPostfix(uiProperties.getPkgBodyPostfix()); + setSeparatePostfix(uiProperties.getSeparatePostfix()); + setPkgSpecExt(uiProperties.getPkgSpecExt()); + setPkgBodyExt(uiProperties.getPkgBodyExt()); + setSeparateExt(uiProperties.getSeparateExt()); + + this.addChangeListener(this); + } + } + + public String getAdaDialects() { + if (adaDialectsComboBox.getSelectedItem() != null) { + return adaDialectsComboBox.getSelectedItem().toString(); + } + return OPT_NONE; + } + + public void setAdaDialects(String adaDialects) { + adaDialectsComboBox.setSelectedItem(adaDialects); + } + + public String getAdaRestrictions() { + if (adaRestrictionsComboBox.getSelectedItem() != null) { + return adaRestrictionsComboBox.getSelectedItem().toString(); + } + return OPT_NONE; + } + + public void setAdaRestrictions(String adaRestrictions) { + adaRestrictionsComboBox.setSelectedItem(adaRestrictions); + } + + public String getPkgSpecPrefix() { + return pkgSpecPrefixComboBox.getSelectedItem().toString(); + } + + public void setPkgSpecPrefix(String pkgSpecPrefix) { + pkgSpecPrefixComboBox.setSelectedItem(pkgSpecPrefix); + } + + public String getPkgBodyPrefix() { + return pkgBodyPrefixComboBox.getSelectedItem().toString(); + } + + public void setPkgBodyPrefix(String pkgBodyPrefix) { + pkgBodyPrefixComboBox.setSelectedItem(pkgBodyPrefix); + } + + public String getSeparatePrefix() { + return separatePrefixComboBox.getSelectedItem().toString(); + } + + public void setSeparatePrefix(String separatePrefix) { + separatePrefixComboBox.setSelectedItem(separatePrefix); + } + + public String getPkgSpecPostfix() { + String pkgSpecPostfix = pkgSpecPostfixComboBox.getSelectedItem().toString(); + if (pkgSpecPostfix.equalsIgnoreCase(UI_NONE)) { + pkgSpecPostfix = OPT_NONE; + } + return pkgSpecPostfix; + } + + public void setPkgSpecPostfix(String pkgSpecPostfix) { + if (pkgSpecPostfix.equalsIgnoreCase(OPT_NONE)) { + pkgSpecPostfixComboBox.setSelectedItem(UI_NONE); + } else { + pkgSpecPostfixComboBox.setEditable(true); + pkgSpecPostfixComboBox.addItem(pkgSpecPostfix); + pkgSpecPostfixComboBox.setSelectedItem(pkgSpecPostfix); + } + } + + public String getPkgBodyPostfix() { + String pkgBodyPostfix = pkgBodyPostfixComboBox.getSelectedItem().toString(); + if (pkgBodyPostfix.equalsIgnoreCase(UI_NONE)) { + pkgBodyPostfix = OPT_NONE; + } + return pkgBodyPostfix; + } + + public void setPkgBodyPostfix(String pkgBodyPostfix) { + if (pkgBodyPostfix.equalsIgnoreCase(OPT_NONE)) { + pkgBodyPostfixComboBox.setSelectedItem(UI_NONE); + } else { + pkgBodyPostfixComboBox.setEditable(true); + pkgBodyPostfixComboBox.addItem(pkgBodyPostfix); + pkgBodyPostfixComboBox.setSelectedItem(pkgBodyPostfix); + } + } + + public String getSeparatePostfix() { + return separatePostfixComboBox.getSelectedItem().toString(); + } + + public void setSeparatePostfix(String separatePostfix) { + separatePostfixComboBox.setSelectedItem(separatePostfix); + } + + public String getPkgSpecExt() { + return pkgSpecExtComboBox.getSelectedItem().toString(); + } + + public void setPkgSpecExt(String pkgSpecExt) { + pkgSpecExtComboBox.setSelectedItem(pkgSpecExt); + } + + public String getPkgBodyExt() { + return pkgBodyExtComboBox.getSelectedItem().toString(); + } + + public void setPkgBodyExt(String pkgBodyExt) { + pkgBodyExtComboBox.setSelectedItem(pkgBodyExt); + } + + public String getSeparateExt() { + return separateExtComboBox.getSelectedItem().toString(); + } + + public void setSeparateExt(String separateExt) { + separateExtComboBox.setSelectedItem(separateExt); + } + + public void setError(String message) { + errorLabel.setText(" "); // NOI18N + errorLabel.setForeground(UIManager.getColor("nb.errorForeground")); // NOI18N + errorLabel.setText(message); + } + + public void setWarning(String message) { + errorLabel.setText(" "); // NOI18N + errorLabel.setForeground(UIManager.getColor("nb.warningForeground")); // NOI18N + errorLabel.setText(message); + } + + public void addChangeListener(ChangeListener listener) { + changeSupport.addChangeListener(listener); + } + + public void removeChangeListener(ChangeListener listener) { + changeSupport.removeChangeListener(listener); + } + + void fireChange() { + changeSupport.fireChange(); + } + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + + + + + + + + + standardsLabel = new JLabel(); + standardsLineSeparator = new JSeparator(); + adaDialectsLabel = new JLabel(); + namingLabel = new JLabel(); + namingLineSeparator = new JSeparator(); + errorLabel = new JLabel(); + adaRestrictionsLabel = new JLabel(); + adaDialectsComboBox = new JComboBox(); + adaRestrictionsComboBox = new JComboBox(); + pkgSpecMaskLabel = new JLabel(); + pkgBodyMaskLabel = new JLabel(); + separatorMaskLabel = new JLabel(); + pkgSpecSepTextField = new JTextField(); + separateSepTextField = new JTextField(); + pkgBodySepTextField = new JTextField(); + extTitleLabel = new JLabel(); + pkgSpecPrefixComboBox = new JComboBox(); + prefixTitleLabel = new JLabel(); + pkgBodyPrefixComboBox = new JComboBox(); + postfixTitleLabel = new JLabel(); + pkgSpecPostfixComboBox = new JComboBox(); + separatePrefixComboBox = new JComboBox(); + pkgBodyPostfixComboBox = new JComboBox(); + separatePostfixComboBox = new JComboBox(); + pkgSpecExtComboBox = new JComboBox(); + pkgBodyExtComboBox = new JComboBox(); + separateExtComboBox = new JComboBox(); + separatorTitleLabel = new JLabel(); + Mnemonics.setLocalizedText(standardsLabel, NbBundle.getMessage(AdaGeneralOptionsPanel.class, "LBL_Standards")); + Mnemonics.setLocalizedText(adaDialectsLabel, NbBundle.getMessage(AdaGeneralOptionsPanel.class, "LBL_AdaDialects")); + Mnemonics.setLocalizedText(namingLabel, NbBundle.getMessage(AdaGeneralOptionsPanel.class, "LBL_Naming")); + Mnemonics.setLocalizedText(errorLabel, "ERROR"); + Mnemonics.setLocalizedText(adaRestrictionsLabel, NbBundle.getMessage(AdaGeneralOptionsPanel.class, "LBL_adaRestrictions")); + adaDialectsComboBox.setModel(new DefaultComboBoxModel(new String[] { "Ada 83", "Ada 95", "Ada 2005" })); + adaDialectsComboBox.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + adaDialectsComboBoxActionPerformed(evt); + } + }); + + adaRestrictionsComboBox.setModel(new DefaultComboBoxModel(new String[] { "None", "Spark", "MIL-STD-498" })); + adaRestrictionsComboBox.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + adaRestrictionsComboBoxActionPerformed(evt); + } + }); + Mnemonics.setLocalizedText(pkgSpecMaskLabel, NbBundle.getMessage(AdaGeneralOptionsPanel.class, "LBL_pkgSpecMask")); + Mnemonics.setLocalizedText(pkgBodyMaskLabel, NbBundle.getMessage(AdaGeneralOptionsPanel.class, "LBL_pkgBodyMask")); + Mnemonics.setLocalizedText(separatorMaskLabel, NbBundle.getMessage(AdaGeneralOptionsPanel.class, "LBL_separatorMask")); + pkgSpecSepTextField.setHorizontalAlignment(JTextField.CENTER); + + separateSepTextField.setHorizontalAlignment(JTextField.CENTER); + + pkgBodySepTextField.setHorizontalAlignment(JTextField.CENTER); + Mnemonics.setLocalizedText(extTitleLabel, NbBundle.getMessage(AdaGeneralOptionsPanel.class, "LBL_extTitle")); + pkgSpecPrefixComboBox.setModel(new DefaultComboBoxModel(new String[] { "", "" })); + pkgSpecPrefixComboBox.setEnabled(false); + + Mnemonics.setLocalizedText(prefixTitleLabel, NbBundle.getMessage(AdaGeneralOptionsPanel.class, "LBL_prefixTitle")); + pkgBodyPrefixComboBox.setModel(new DefaultComboBoxModel(new String[] { "", "" })); + pkgBodyPrefixComboBox.setEnabled(false); + + + Mnemonics.setLocalizedText(postfixTitleLabel, NbBundle.getMessage(AdaGeneralOptionsPanel.class, "LBL_postfixTitle")); + pkgSpecPostfixComboBox.setModel(new DefaultComboBoxModel(new String[] { "", "" })); + pkgSpecPostfixComboBox.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + pkgSpecPostfixComboBoxActionPerformed(evt); + } + }); + + separatePrefixComboBox.setModel(new DefaultComboBoxModel(new String[] { "", "" })); + separatePrefixComboBox.setEnabled(false); + + pkgBodyPostfixComboBox.setModel(new DefaultComboBoxModel(new String[] { "", "" })); + pkgBodyPostfixComboBox.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + pkgBodyPostfixComboBoxActionPerformed(evt); + } + }); + + separatePostfixComboBox.setModel(new DefaultComboBoxModel(new String[] { "", "", "" })); + separatePostfixComboBox.setEnabled(false); + + separatePostfixComboBox.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + separatePostfixComboBoxActionPerformed(evt); + } + }); + + pkgSpecExtComboBox.setModel(new DefaultComboBoxModel(new String[] { "ads", "ada" })); + pkgSpecExtComboBox.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + pkgSpecExtComboBoxActionPerformed(evt); + } + }); + + pkgBodyExtComboBox.setModel(new DefaultComboBoxModel(new String[] { "adb", "ada" })); + pkgBodyExtComboBox.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + pkgBodyExtComboBoxActionPerformed(evt); + } + }); + + separateExtComboBox.setModel(new DefaultComboBoxModel(new String[] { "adb", "ada" })); + separateExtComboBox.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + separateExtComboBoxActionPerformed(evt); + } + }); + Mnemonics.setLocalizedText(separatorTitleLabel, NbBundle.getMessage(AdaGeneralOptionsPanel.class, "AdaGeneralOptionsPanel.separatorTitleLabel.text")); + GroupLayout layout = new GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(GroupLayout.LEADING) + .add(layout.createSequentialGroup() + .add(layout.createParallelGroup(GroupLayout.LEADING) + .add(layout.createSequentialGroup() + .addContainerGap() + .add(layout.createParallelGroup(GroupLayout.LEADING) + .add(layout.createSequentialGroup() + .add(standardsLabel) + .addPreferredGap(LayoutStyle.RELATED) + .add(standardsLineSeparator, GroupLayout.DEFAULT_SIZE, 572, Short.MAX_VALUE)) + .add(errorLabel) + .add(layout.createSequentialGroup() + .add(12, 12, 12) + .add(layout.createParallelGroup(GroupLayout.LEADING) + .add(adaRestrictionsLabel) + .add(adaDialectsLabel, GroupLayout.PREFERRED_SIZE, 63, GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.UNRELATED) + .add(layout.createParallelGroup(GroupLayout.LEADING) + .add(adaRestrictionsComboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .add(adaDialectsComboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .add(373, 373, 373)))) + .add(layout.createSequentialGroup() + .add(20, 20, 20) + .add(layout.createParallelGroup(GroupLayout.TRAILING, false) + .add(GroupLayout.LEADING, pkgBodyMaskLabel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(GroupLayout.LEADING, pkgSpecMaskLabel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(GroupLayout.LEADING, separatorMaskLabel, GroupLayout.PREFERRED_SIZE, 107, GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.UNRELATED) + .add(layout.createParallelGroup(GroupLayout.LEADING) + .add(layout.createParallelGroup(GroupLayout.TRAILING) + .add(layout.createParallelGroup(GroupLayout.LEADING) + .add(pkgSpecPrefixComboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .add(pkgBodyPrefixComboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .add(prefixTitleLabel)) + .add(separatePrefixComboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.RELATED) + .add(layout.createParallelGroup(GroupLayout.TRAILING) + .add(separatorTitleLabel) + .add(pkgSpecSepTextField, GroupLayout.PREFERRED_SIZE, 38, GroupLayout.PREFERRED_SIZE) + .add(pkgBodySepTextField, GroupLayout.PREFERRED_SIZE, 38, GroupLayout.PREFERRED_SIZE) + .add(separateSepTextField, GroupLayout.PREFERRED_SIZE, 38, GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.RELATED) + .add(layout.createParallelGroup(GroupLayout.LEADING, false) + .add(pkgBodyPostfixComboBox, 0, 110, Short.MAX_VALUE) + .add(separatePostfixComboBox, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(pkgSpecPostfixComboBox, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(GroupLayout.TRAILING, postfixTitleLabel)) + .addPreferredGap(LayoutStyle.RELATED) + .add(layout.createParallelGroup(GroupLayout.LEADING, false) + .add(separateExtComboBox, 0, 0, Short.MAX_VALUE) + .add(pkgBodyExtComboBox, 0, 0, Short.MAX_VALUE) + .add(pkgSpecExtComboBox, 0, 0, Short.MAX_VALUE) + .add(layout.createSequentialGroup() + .add(41, 41, 41) + .add(extTitleLabel)))) + .add(layout.createSequentialGroup() + .addContainerGap() + .add(namingLabel) + .addPreferredGap(LayoutStyle.RELATED) + .add(namingLineSeparator, GroupLayout.DEFAULT_SIZE, 586, Short.MAX_VALUE))) + .addContainerGap()) + ); + + layout.linkSize(new Component[] {adaDialectsLabel, adaRestrictionsLabel}, GroupLayout.HORIZONTAL); + + layout.linkSize(new Component[] {adaDialectsComboBox, adaRestrictionsComboBox}, GroupLayout.HORIZONTAL); + + layout.linkSize(new Component[] {pkgBodyMaskLabel, pkgSpecMaskLabel, separatorMaskLabel}, GroupLayout.HORIZONTAL); + + layout.linkSize(new Component[] {pkgBodySepTextField, pkgSpecSepTextField, separateSepTextField}, GroupLayout.HORIZONTAL); + + layout.linkSize(new Component[] {pkgBodyPostfixComboBox, pkgBodyPrefixComboBox, pkgSpecPostfixComboBox, pkgSpecPrefixComboBox, separatePostfixComboBox, separatePrefixComboBox}, GroupLayout.HORIZONTAL); + + layout.setVerticalGroup( + layout.createParallelGroup(GroupLayout.LEADING) + .add(layout.createSequentialGroup() + .addContainerGap() + .add(layout.createParallelGroup(GroupLayout.CENTER) + .add(standardsLineSeparator, GroupLayout.PREFERRED_SIZE, 12, GroupLayout.PREFERRED_SIZE) + .add(standardsLabel)) + .addPreferredGap(LayoutStyle.RELATED) + .add(layout.createParallelGroup(GroupLayout.CENTER) + .add(adaDialectsComboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .add(adaDialectsLabel)) + .addPreferredGap(LayoutStyle.RELATED) + .add(layout.createParallelGroup(GroupLayout.CENTER) + .add(adaRestrictionsComboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .add(adaRestrictionsLabel)) + .add(18, 18, 18) + .add(layout.createParallelGroup(GroupLayout.CENTER) + .add(namingLineSeparator, GroupLayout.PREFERRED_SIZE, 10, GroupLayout.PREFERRED_SIZE) + .add(namingLabel)) + .add(1, 1, 1) + .add(layout.createParallelGroup(GroupLayout.LEADING) + .add(layout.createParallelGroup(GroupLayout.BASELINE) + .add(prefixTitleLabel) + .add(separatorTitleLabel)) + .add(extTitleLabel) + .add(postfixTitleLabel)) + .add(4, 4, 4) + .add(layout.createParallelGroup(GroupLayout.CENTER) + .add(pkgSpecMaskLabel) + .add(pkgSpecPrefixComboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .add(pkgSpecSepTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .add(pkgSpecPostfixComboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .add(pkgSpecExtComboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.RELATED) + .add(layout.createParallelGroup(GroupLayout.LEADING) + .add(layout.createParallelGroup(GroupLayout.CENTER) + .add(pkgBodyPrefixComboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .add(pkgBodyMaskLabel)) + .add(pkgBodyExtComboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .add(layout.createParallelGroup(GroupLayout.BASELINE) + .add(pkgBodyPostfixComboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .add(pkgBodySepTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))) + .addPreferredGap(LayoutStyle.RELATED) + .add(layout.createParallelGroup(GroupLayout.CENTER) + .add(separatorMaskLabel) + .add(separatePrefixComboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .add(separateSepTextField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .add(separatePostfixComboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .add(separateExtComboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.RELATED, 150, Short.MAX_VALUE) + .add(errorLabel) + .addContainerGap()) + ); + }// //GEN-END:initComponents + + private void adaDialectsComboBoxActionPerformed(ActionEvent evt) {//GEN-FIRST:event_adaDialectsComboBoxActionPerformed + if (this.uiProperties != null) { + this.uiProperties.setAdaDialects(getAdaDialects()); + } + }//GEN-LAST:event_adaDialectsComboBoxActionPerformed + + private void adaRestrictionsComboBoxActionPerformed(ActionEvent evt) {//GEN-FIRST:event_adaRestrictionsComboBoxActionPerformed + if (this.uiProperties != null) { + this.uiProperties.setAdaRestrictions(getAdaRestrictions()); + } + }//GEN-LAST:event_adaRestrictionsComboBoxActionPerformed + + private void pkgSpecPostfixComboBoxActionPerformed(ActionEvent evt) {//GEN-FIRST:event_pkgSpecPostfixComboBoxActionPerformed + fireChange(); + if (pkgSpecPostfixComboBox.getSelectedIndex() != 0) { + pkgSpecPostfixComboBox.setEditable(true); + pkgSpecPostfixComboBox.getEditor().selectAll(); + } else { + pkgSpecPostfixComboBox.setEditable(false); + } + if (this.uiProperties != null) { + this.uiProperties.setPkgSpecPostfix(getPkgSpecPostfix()); + } + }//GEN-LAST:event_pkgSpecPostfixComboBoxActionPerformed + + private void pkgBodyPostfixComboBoxActionPerformed(ActionEvent evt) {//GEN-FIRST:event_pkgBodyPostfixComboBoxActionPerformed + fireChange(); + if (pkgBodyPostfixComboBox.getSelectedIndex() != 0) { + pkgBodyPostfixComboBox.setEditable(true); + pkgBodyPostfixComboBox.getEditor().selectAll(); + } else { + pkgBodyPostfixComboBox.setEditable(false); + } + if (this.uiProperties != null) { + this.uiProperties.setPkgBodyPostfix(getPkgBodyPostfix()); + } + }//GEN-LAST:event_pkgBodyPostfixComboBoxActionPerformed + + private void separatePostfixComboBoxActionPerformed(ActionEvent evt) {//GEN-FIRST:event_separatePostfixComboBoxActionPerformed + if (this.uiProperties != null) { + this.uiProperties.setSeparatePostfix(getSeparatePostfix()); + } + }//GEN-LAST:event_separatePostfixComboBoxActionPerformed + + private void pkgSpecExtComboBoxActionPerformed(ActionEvent evt) {//GEN-FIRST:event_pkgSpecExtComboBoxActionPerformed + if (this.uiProperties != null) { + this.uiProperties.setPkgSpecExt(getPkgSpecExt()); + } + fireChange(); + }//GEN-LAST:event_pkgSpecExtComboBoxActionPerformed + + private void pkgBodyExtComboBoxActionPerformed(ActionEvent evt) {//GEN-FIRST:event_pkgBodyExtComboBoxActionPerformed + if (this.uiProperties != null) { + this.uiProperties.setPkgBodyExt(getPkgBodyExt()); + } + fireChange(); + }//GEN-LAST:event_pkgBodyExtComboBoxActionPerformed + + private void separateExtComboBoxActionPerformed(ActionEvent evt) {//GEN-FIRST:event_separateExtComboBoxActionPerformed + if (this.uiProperties != null) { + this.uiProperties.setSeparateExt(getSeparateExt()); + } + }//GEN-LAST:event_separateExtComboBoxActionPerformed + // Variables declaration - do not modify//GEN-BEGIN:variables + private JComboBox adaDialectsComboBox; + private JLabel adaDialectsLabel; + private JComboBox adaRestrictionsComboBox; + private JLabel adaRestrictionsLabel; + private JLabel errorLabel; + private JLabel extTitleLabel; + private JLabel namingLabel; + private JSeparator namingLineSeparator; + private JComboBox pkgBodyExtComboBox; + private JLabel pkgBodyMaskLabel; + private JComboBox pkgBodyPostfixComboBox; + private JComboBox pkgBodyPrefixComboBox; + private JTextField pkgBodySepTextField; + private JComboBox pkgSpecExtComboBox; + private JLabel pkgSpecMaskLabel; + private JComboBox pkgSpecPostfixComboBox; + private JComboBox pkgSpecPrefixComboBox; + private JTextField pkgSpecSepTextField; + private JLabel postfixTitleLabel; + private JLabel prefixTitleLabel; + private JComboBox separateExtComboBox; + private JComboBox separatePostfixComboBox; + private JComboBox separatePrefixComboBox; + private JTextField separateSepTextField; + private JLabel separatorMaskLabel; + private JLabel separatorTitleLabel; + private JLabel standardsLabel; + private JSeparator standardsLineSeparator; + // End of variables declaration//GEN-END:variables + + public void stateChanged(ChangeEvent e) { + // errors + String postfixSpec = this.getPkgSpecPostfix(); + String postfixBody = this.getPkgBodyPostfix(); + String specExt = this.getPkgSpecExt(); + String bodyExt = this.getPkgBodyExt(); + + // everything ok + this.setError(" "); // NOI18N + + if (specExt.equalsIgnoreCase(bodyExt)) { + if (postfixSpec.equalsIgnoreCase(postfixBody)) { + this.setError(NbBundle.getMessage(AdaGeneralOptionsPanel.class, "MSG_ExtetionsError")); + } + } + } + + public HelpCtx getHelpCtx() { + return new HelpCtx(this.getClass()); + } +} diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/src/org/netbeans/modules/ada/project/options/ui/Bundle.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ada.project/src/org/netbeans/modules/ada/project/options/ui/Bundle.properties Sun Aug 22 23:37:11 2010 +0200 @@ -0,0 +1,87 @@ +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# +# Copyright 2009 Sun Microsystems, Inc. All rights reserved. +# +# The contents of this file are subject to the terms of either the GNU +# General Public License Version 2 only ("GPL") or the Common +# Development and Distribution License("CDDL") (collectively, the +# "License"). You may not use this file except in compliance with the +# License. You can obtain a copy of the License at +# http://www.netbeans.org/cddl-gplv2.html +# or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the +# specific language governing permissions and limitations under the +# License. When distributing the software, include this License Header +# Notice in each file and include the License file at +# nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this +# particular file as subject to the "Classpath" exception as provided +# by Sun in the GPL Version 2 section of the License file that +# accompanied this code. If applicable, add the following below the +# License Header, with the fields enclosed by brackets [] replaced by +# your own identifying information: +# "Portions Copyrighted [year] [name of copyright owner]" +# +# If you wish your version of this file to be governed by only the CDDL +# or only the GPL Version 2, indicate your decision by adding +# "[Contributor] elects to include this software in this distribution +# under the [CDDL or GPL Version 2] license." If you do not indicate a +# single choice of license, a recipient has the option to distribute +# your version of this file under either the CDDL, the GPL Version 2 or +# to extend the choice of license to its licensees as provided above. +# However, if you add GPL Version 2 code and therefore, elected the GPL +# Version 2 license, then the option applies only if the new code is +# made subject to such option by the copyright holder. +# +# Contributor(s): +# +# Portions Copyrighted 2009 Sun Microsystems, Inc. + +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + +# Copyright 2009 Sun Microsystems, Inc. All rights reserved. + +# The contents of this file are subject to the terms of either the GNU +# General Public License Version 2 only ("GPL") or the Common +# Development and Distribution License("CDDL") (collectively, the +# "License"). You may not use this file except in compliance with the +# License. You can obtain a copy of the License at +# http://www.netbeans.org/cddl-gplv2.html +# or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the +# specific language governing permissions and limitations under the +# License. When distributing the software, include this License Header +# Notice in each file and include the License file at +# nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this +# particular file as subject to the "Classpath" exception as provided +# by Sun in the GPL Version 2 section of the License file that +# accompanied this code. If applicable, add the following below the +# License Header, with the fields enclosed by brackets [] replaced by +# your own identifying information: +# "Portions Copyrighted [year] [name of copyright owner]" + +# If you wish your version of this file to be governed by only the CDDL +# or only the GPL Version 2, indicate your decision by adding +# "[Contributor] elects to include this software in this distribution +# under the [CDDL or GPL Version 2] license." If you do not indicate a +# single choice of license, a recipient has the option to distribute +# your version of this file under either the CDDL, the GPL Version 2 or +# to extend the choice of license to its licensees as provided above. +# However, if you add GPL Version 2 code and therefore, elected the GPL +# Version 2 license, then the option applies only if the new code is +# made subject to such option by the copyright holder. + +# Contributor(s): + +# Portions Copyrighted 2009 Sun Microsystems, Inc. + +# AdaGeneralOptionsPanel +LBL_Naming=File Naming +LBL_AdaDialects=Ada Dialects +LBL_pkgSpecMask=Package &Specification: +LBL_pkgBodyMask=Package &Body: +LBL_separatorMask=Separa&te: +LBL_prefixTitle=prefix +LBL_postfixTitle=postfix +LBL_extTitle=ext. +LBL_adaRestrictions=Ada &restrictions: +LBL_Standards=Standards +AdaGeneralOptionsPanel.separatorTitleLabel.text=separ. +MSG_ExtetionsError= Body Postfix (".ada") cannot be the same as Spec Postfix. \ No newline at end of file diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/src/org/netbeans/modules/ada/project/resources/Bundle.properties --- a/ada.project/src/org/netbeans/modules/ada/project/resources/Bundle.properties Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.project/src/org/netbeans/modules/ada/project/resources/Bundle.properties Sun Aug 22 23:37:11 2010 +0200 @@ -35,9 +35,9 @@ # # Portions Copyrighted 2008 Sun Microsystems, Inc. -Templates/Ada/NewAdaMain=Ada Application Main -Templates/Ada/NewAdaPackageSpec=Ada Specification Package -Templates/Ada/NewAdaPackageBody=Ada Body Package +Templates/Ada/NewMain=Ada Application Main +Templates/Ada/NewPackageSpec=Ada Specification Package +Templates/Ada/NewPackageBody=Ada Body Package Templates/Project/Ada/AdaProject.xml=Ada Application Templates/Project/Ada/ExistingAdaProject.xml=Ada Application with Existing Sources diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/src/org/netbeans/modules/ada/project/resources/layer.xml --- a/ada.project/src/org/netbeans/modules/ada/project/resources/layer.xml Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.project/src/org/netbeans/modules/ada/project/resources/layer.xml Sun Aug 22 23:37:11 2010 +0200 @@ -97,30 +97,30 @@ - + - + - + - + - + - + @@ -129,76 +129,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/src/org/netbeans/modules/ada/project/ui/MainModuleChooser.java --- a/ada.project/src/org/netbeans/modules/ada/project/ui/MainModuleChooser.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.project/src/org/netbeans/modules/ada/project/ui/MainModuleChooser.java Sun Aug 22 23:37:11 2010 +0200 @@ -44,6 +44,7 @@ import java.util.List; import javax.swing.DefaultListModel; import javax.swing.JButton; +import javax.swing.JPanel; import javax.swing.SwingUtilities; import org.netbeans.modules.ada.project.AdaMimeResolver; import org.openide.filesystems.FileObject; @@ -55,7 +56,7 @@ * * @author Andrea Lucarelli */ -final class MainModuleChooser extends javax.swing.JPanel { +final class MainModuleChooser extends JPanel { private final FileObject[] roots; private final JButton okButton; diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/src/org/netbeans/modules/ada/project/ui/actions/ActionsUtil.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ada.project/src/org/netbeans/modules/ada/project/ui/actions/ActionsUtil.java Sun Aug 22 23:37:11 2010 +0200 @@ -0,0 +1,112 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common + * Development and Distribution License("CDDL") (collectively, the + * "License"). You may not use this file except in compliance with the + * License. You can obtain a copy of the License at + * http://www.netbeans.org/cddl-gplv2.html + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the + * specific language governing permissions and limitations under the + * License. When distributing the software, include this License Header + * Notice in each file and include the License file at + * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the GPL Version 2 section of the License file that + * accompanied this code. If applicable, add the following below the + * License Header, with the fields enclosed by brackets [] replaced by + * your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + * If you wish your version of this file to be governed by only the CDDL + * or only the GPL Version 2, indicate your decision by adding + * "[Contributor] elects to include this software in this distribution + * under the [CDDL or GPL Version 2] license." If you do not indicate a + * single choice of license, a recipient has the option to distribute + * your version of this file under either the CDDL, the GPL Version 2 or + * to extend the choice of license to its licensees as provided above. + * However, if you add GPL Version 2 code and therefore, elected the GPL + * Version 2 license, then the option applies only if the new code is + * made subject to such option by the copyright holder. + * + * Contributor(s): + * + * Portions Copyrighted 2009 Sun Microsystems, Inc. + */ +package org.netbeans.modules.ada.project.ui.actions; + +import java.util.ArrayList; +import org.netbeans.api.ada.platform.AdaPlatform; +import org.netbeans.modules.ada.platform.compiler.gnat.GnatCompiler; +import org.netbeans.modules.ada.platform.compiler.jgnat.JGnatCompiler; +import org.netbeans.modules.ada.project.AdaProject; +import org.netbeans.modules.ada.project.AdaProjectUtil; +import org.netbeans.modules.ada.project.options.AdaOptions; +import org.netbeans.modules.ada.project.ui.properties.AdaProjectProperties; +import org.openide.filesystems.FileObject; +import org.openide.filesystems.FileUtil; + +/** + * + * @author alucarelli + */ +public class ActionsUtil { + + public static org.netbeans.spi.ada.platform.Compiler getCompilerFactory(AdaProject project, String displayTitle) { + org.netbeans.spi.ada.platform.Compiler compiler = null; + + // Retrieve project and platform + AdaPlatform platform = AdaProjectUtil.getActivePlatform(project); + assert platform != null; + + ArrayList sources = new ArrayList(); + FileObject[] files; + + // Retrieve main file + String mainFile = project.getEvaluator().getProperty(AdaProjectProperties.MAIN_FILE); + assert mainFile != null; + + files = project.getSourcesDirectory(); + for (int index = 0; index < files.length; index++) { + sources.add(FileUtil.toFile(files[index]).getAbsolutePath()); + } + + // Init compiler factory + if (project.getEvaluator().getProperty(AdaProjectProperties.OUTPUT_BUILD_FORMAT).equalsIgnoreCase(AdaProjectProperties.NATIVE_FORMAT)) { + compiler = new GnatCompiler( + platform, + project.getName(), // project name + FileUtil.toFile(project.getProjectDirectory()).getAbsolutePath(), // project location + sources, // sources location + mainFile, // main file + project.getName(), // executable file + displayTitle, // display name + project.getEvaluator().getProperty(AdaOptions.PKG_SPEC_POSTFIX), + project.getEvaluator().getProperty(AdaOptions.PKG_BODY_POSTFIX), + project.getEvaluator().getProperty(AdaOptions.SEPARATE_POSTFIX), + project.getEvaluator().getProperty(AdaOptions.PKG_SPEC_EXT), + project.getEvaluator().getProperty(AdaOptions.PKG_BODY_EXT), + project.getEvaluator().getProperty(AdaOptions.SEPARATE_EXT)); + } else if (project.getEvaluator().getProperty(AdaProjectProperties.OUTPUT_BUILD_FORMAT).equalsIgnoreCase(AdaProjectProperties.JVM_FORMAT)) { + compiler = new JGnatCompiler( + platform, + project.getName(), // project name + FileUtil.toFile(project.getProjectDirectory()).getAbsolutePath(), // project location + sources, // sources location + mainFile, // main file + project.getName(), // executable file + displayTitle, // display name + project.getEvaluator().getProperty(AdaOptions.PKG_SPEC_POSTFIX), + project.getEvaluator().getProperty(AdaOptions.PKG_BODY_POSTFIX), + project.getEvaluator().getProperty(AdaOptions.SEPARATE_POSTFIX), + project.getEvaluator().getProperty(AdaOptions.PKG_SPEC_EXT), + project.getEvaluator().getProperty(AdaOptions.PKG_BODY_EXT), + project.getEvaluator().getProperty(AdaOptions.SEPARATE_EXT)); + } + + return compiler; + } +} diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/src/org/netbeans/modules/ada/project/ui/actions/BuildCommand.java --- a/ada.project/src/org/netbeans/modules/ada/project/ui/actions/BuildCommand.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.project/src/org/netbeans/modules/ada/project/ui/actions/BuildCommand.java Sun Aug 22 23:37:11 2010 +0200 @@ -74,15 +74,6 @@ public void invokeAction(Lookup context) throws IllegalArgumentException { // Retrieve project and platform final AdaProject project = getProject(); - AdaPlatform platform = AdaProjectUtil.getActivePlatform(project); - assert platform != null; - - ArrayList sources = new ArrayList(); - FileObject[] files; - - // Retrieve main file - String mainFile = project.getEvaluator().getProperty(AdaProjectProperties.MAIN_FILE); - assert mainFile != null; // Create Build/Dist folders try { @@ -92,29 +83,8 @@ Exceptions.printStackTrace(ex); } - files = project.getSourcesDirectory(); - for (int index = 0; index < files.length; index++) { - sources.add(FileUtil.toFile(files[index]).getAbsolutePath()); - } - - // Init compiler factory - GnatCompiler comp = new GnatCompiler( - platform, - project.getName(), // project name - FileUtil.toFile(project.getProjectDirectory()).getAbsolutePath(), // project location - sources, // sources location - mainFile, // main file - project.getName(), // executable file - COMMAND_ID, // display name - project.getEvaluator().getProperty(AdaOptions.PKG_SPEC_POSTFIX), - project.getEvaluator().getProperty(AdaOptions.PKG_BODY_POSTFIX), - project.getEvaluator().getProperty(AdaOptions.SEPARATE_POSTFIX), - project.getEvaluator().getProperty(AdaOptions.PKG_SPEC_EXT), - project.getEvaluator().getProperty(AdaOptions.PKG_BODY_EXT), - project.getEvaluator().getProperty(AdaOptions.SEPARATE_EXT)); - // Start build - comp.Build(); + ActionsUtil.getCompilerFactory(project, COMMAND_ID).Build(); } @Override @@ -124,6 +94,10 @@ if (platform == null) { return false; } + String mainFile = project.getEvaluator().getProperty(AdaProjectProperties.MAIN_FILE); + if (mainFile == null) { + return false; + } return true; } @@ -145,14 +119,16 @@ private void createBuildRoot(final AdaProject project) throws IOException { // Retrieve build path - String buildPath = project.getEvaluator().getProperty(AdaProjectProperties.BUILD_DIR); + final File projectDirectory = FileUtil.toFile(project.getProjectDirectory()); + String buildPath = projectDirectory + File.separator + project.getEvaluator().getProperty(AdaProjectProperties.BUILD_DIR); assert buildPath != null; FileUtil.createFolder(new File(buildPath)); } private void createDistRoot(final AdaProject project) throws IOException { // Retrieve dist path - String distPath = project.getEvaluator().getProperty(AdaProjectProperties.DIST_DIR); + final File projectDirectory = FileUtil.toFile(project.getProjectDirectory()); + String distPath = projectDirectory + File.separator + project.getEvaluator().getProperty(AdaProjectProperties.DIST_DIR); assert distPath != null; FileUtil.createFolder(new File(distPath)); } diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/src/org/netbeans/modules/ada/project/ui/actions/CleanCommand.java --- a/ada.project/src/org/netbeans/modules/ada/project/ui/actions/CleanCommand.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.project/src/org/netbeans/modules/ada/project/ui/actions/CleanCommand.java Sun Aug 22 23:37:11 2010 +0200 @@ -71,38 +71,9 @@ @Override public void invokeAction(Lookup context) throws IllegalArgumentException { final AdaProject project = getProject(); - AdaPlatform platform = AdaProjectUtil.getActivePlatform(project); - assert platform != null; - ArrayList sources = new ArrayList(); - FileObject[] files; - - // Retrieve main file - String mainFile = project.getEvaluator().getProperty(AdaProjectProperties.MAIN_FILE); - assert mainFile != null; - - files = project.getSourcesDirectory(); - for (int index = 0; index < files.length; index++) { - sources.add(FileUtil.toFile(files[index]).getAbsolutePath()); - } - - // Init compiler factory - GnatCompiler comp = new GnatCompiler( - platform, - project.getName(), // project name - FileUtil.toFile(project.getProjectDirectory()).getAbsolutePath(), // project location - sources, // sources location - mainFile, // main file - project.getName(), // executable file - COMMAND_ID, // display name - project.getEvaluator().getProperty(AdaOptions.PKG_SPEC_POSTFIX), - project.getEvaluator().getProperty(AdaOptions.PKG_BODY_POSTFIX), - project.getEvaluator().getProperty(AdaOptions.SEPARATE_POSTFIX), - project.getEvaluator().getProperty(AdaOptions.PKG_SPEC_EXT), - project.getEvaluator().getProperty(AdaOptions.PKG_BODY_EXT), - project.getEvaluator().getProperty(AdaOptions.SEPARATE_EXT)); // Start clean - comp.Clean(); + ActionsUtil.getCompilerFactory(project, COMMAND_ID).Clean(); } @Override @@ -112,8 +83,12 @@ if (platform == null) { return false; } else { + String mainFile = project.getEvaluator().getProperty(AdaProjectProperties.MAIN_FILE); + if (mainFile == null) { + return false; + } if (!new File(FileUtil.toFile(project.getProjectDirectory()), "build").isDirectory() || - !new File(FileUtil.toFile(project.getProjectDirectory()), "dist").isDirectory()) { + !new File(FileUtil.toFile(project.getProjectDirectory()), "dist").isDirectory()) { return false; } } diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/src/org/netbeans/modules/ada/project/ui/actions/RebuildCommand.java --- a/ada.project/src/org/netbeans/modules/ada/project/ui/actions/RebuildCommand.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.project/src/org/netbeans/modules/ada/project/ui/actions/RebuildCommand.java Sun Aug 22 23:37:11 2010 +0200 @@ -36,19 +36,14 @@ * * Portions Copyrighted 2008 Sun Microsystems, Inc. */ - package org.netbeans.modules.ada.project.ui.actions; import java.io.File; -import java.util.ArrayList; import org.netbeans.api.ada.platform.AdaPlatform; -import org.netbeans.modules.ada.platform.compiler.gnat.GnatCompiler; import org.netbeans.modules.ada.project.AdaActionProvider; import org.netbeans.modules.ada.project.AdaProject; import org.netbeans.modules.ada.project.AdaProjectUtil; -import org.netbeans.modules.ada.project.options.AdaOptions; import org.netbeans.modules.ada.project.ui.properties.AdaProjectProperties; -import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; import org.openide.util.Lookup; @@ -71,41 +66,15 @@ @Override public void invokeAction(Lookup context) throws IllegalArgumentException { - // Retrieve project and platform + // Retrieve project final AdaProject project = getProject(); - AdaPlatform platform = AdaProjectUtil.getActivePlatform(project); - assert platform != null; - ArrayList sources = new ArrayList(); - FileObject[] files; - - // Retrieve main file - String mainFile = project.getEvaluator().getProperty(AdaProjectProperties.MAIN_FILE); - assert mainFile != null; - - files = project.getSourcesDirectory(); - for (int index = 0; index < files.length; index++) { - sources.add(FileUtil.toFile(files[index]).getAbsolutePath()); - } // Init compiler factory - GnatCompiler comp = new GnatCompiler( - platform, - project.getName(), // project name - FileUtil.toFile(project.getProjectDirectory()).getAbsolutePath(), // project location - sources, // sources location - mainFile, // main file - project.getName(), // executable file - COMMAND_ID, // display name - project.getEvaluator().getProperty(AdaOptions.PKG_SPEC_POSTFIX), - project.getEvaluator().getProperty(AdaOptions.PKG_BODY_POSTFIX), - project.getEvaluator().getProperty(AdaOptions.SEPARATE_POSTFIX), - project.getEvaluator().getProperty(AdaOptions.PKG_SPEC_EXT), - project.getEvaluator().getProperty(AdaOptions.PKG_BODY_EXT), - project.getEvaluator().getProperty(AdaOptions.SEPARATE_EXT)); + org.netbeans.spi.ada.platform.Compiler compiler = ActionsUtil.getCompilerFactory(project, COMMAND_ID); // Start rebuild - comp.Clean(); - comp.Build(); + compiler.Clean(); + compiler.Build(); } @Override @@ -115,12 +84,15 @@ if (platform == null) { return false; } else { + String mainFile = project.getEvaluator().getProperty(AdaProjectProperties.MAIN_FILE); + if (mainFile == null) { + return false; + } if (!new File(FileUtil.toFile(project.getProjectDirectory()), "build").isDirectory() || - !new File(FileUtil.toFile(project.getProjectDirectory()), "dist").isDirectory()) { + !new File(FileUtil.toFile(project.getProjectDirectory()), "dist").isDirectory()) { return false; } } return true; } - } diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/src/org/netbeans/modules/ada/project/ui/actions/RunCommand.java --- a/ada.project/src/org/netbeans/modules/ada/project/ui/actions/RunCommand.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.project/src/org/netbeans/modules/ada/project/ui/actions/RunCommand.java Sun Aug 22 23:37:11 2010 +0200 @@ -40,15 +40,11 @@ import java.io.File; import java.io.IOException; -import java.util.ArrayList; import org.netbeans.api.ada.platform.AdaPlatform; -import org.netbeans.modules.ada.platform.compiler.gnat.GnatCompiler; import org.netbeans.modules.ada.project.AdaActionProvider; import org.netbeans.modules.ada.project.AdaProject; import org.netbeans.modules.ada.project.AdaProjectUtil; -import org.netbeans.modules.ada.project.options.AdaOptions; import org.netbeans.modules.ada.project.ui.properties.AdaProjectProperties; -import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; import org.openide.util.Exceptions; import org.openide.util.Lookup; @@ -73,14 +69,6 @@ @Override public void invokeAction(Lookup context) throws IllegalArgumentException { final AdaProject project = getProject(); - AdaPlatform platform = AdaProjectUtil.getActivePlatform(project); - assert platform != null; - ArrayList sources = new ArrayList(); - FileObject[] files; - - // Retrieve main file - String mainFile = project.getEvaluator().getProperty(AdaProjectProperties.MAIN_FILE); - assert mainFile != null; // Create Build/Dist folders try { @@ -90,30 +78,13 @@ Exceptions.printStackTrace(ex); } - files = project.getSourcesDirectory(); - for (int index = 0; index < files.length; index++) { - sources.add(FileUtil.toFile(files[index]).getAbsolutePath()); - } // Init compiler factory - GnatCompiler comp = new GnatCompiler( - platform, - project.getName(), // project name - FileUtil.toFile(project.getProjectDirectory()).getAbsolutePath(), // project location - sources, // sources location - mainFile, // main file - project.getName(), // executable file - COMMAND_ID, // display name - project.getEvaluator().getProperty(AdaOptions.PKG_SPEC_POSTFIX), - project.getEvaluator().getProperty(AdaOptions.PKG_BODY_POSTFIX), - project.getEvaluator().getProperty(AdaOptions.SEPARATE_POSTFIX), - project.getEvaluator().getProperty(AdaOptions.PKG_SPEC_EXT), - project.getEvaluator().getProperty(AdaOptions.PKG_BODY_EXT), - project.getEvaluator().getProperty(AdaOptions.SEPARATE_EXT)); + org.netbeans.spi.ada.platform.Compiler compiler = ActionsUtil.getCompilerFactory(project, COMMAND_ID); // Start run - comp.Build(); - comp.Run(project.getEvaluator().getProperty(AdaProjectProperties.APPLICATION_ARGS)); + compiler.Build(); + compiler.Run(project.getEvaluator().getProperty(AdaProjectProperties.APPLICATION_ARGS)); } @Override @@ -123,22 +94,26 @@ if (platform == null) { return false; } + String mainFile = project.getEvaluator().getProperty(AdaProjectProperties.MAIN_FILE); + if (mainFile == null) { + return false; + } return true; } private void createBuildRoot(final AdaProject project) throws IOException { // Retrieve build path - String buildPath = project.getEvaluator().getProperty(AdaProjectProperties.BUILD_DIR); + final File projectDirectory = FileUtil.toFile(project.getProjectDirectory()); + String buildPath = projectDirectory + File.separator + project.getEvaluator().getProperty(AdaProjectProperties.BUILD_DIR); assert buildPath != null; - FileUtil.createFolder(new File(buildPath)); } private void createDistRoot(final AdaProject project) throws IOException { // Retrieve dist path - String distPath = project.getEvaluator().getProperty(AdaProjectProperties.DIST_DIR); + final File projectDirectory = FileUtil.toFile(project.getProjectDirectory()); + String distPath = projectDirectory + File.separator + project.getEvaluator().getProperty(AdaProjectProperties.DIST_DIR); assert distPath != null; - FileUtil.createFolder(new File(distPath)); } } diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/src/org/netbeans/modules/ada/project/ui/properties/AdaProjectProperties.java --- a/ada.project/src/org/netbeans/modules/ada/project/ui/properties/AdaProjectProperties.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.project/src/org/netbeans/modules/ada/project/ui/properties/AdaProjectProperties.java Sun Aug 22 23:37:11 2010 +0200 @@ -77,6 +77,10 @@ public static final String ACTIVE_PLATFORM = "platform.active"; //NOI18N public static final String ADA_LIB_PATH = "ada.lib.path"; //NOI18N public static final String SOURCE_ENCODING = "source.encoding"; //NOI18N + public static final String OUTPUT_BUILD_FORMAT = "output.build.format"; //NOI18N + + public static final String NATIVE_FORMAT = "NATIVE_FORMAT"; //NOI18N + public static final String JVM_FORMAT = "JVM_FORMAT"; //NOI18N private final AdaProject project; private final PropertyEvaluator eval; @@ -89,6 +93,7 @@ private volatile ArrayList librariesPath; private volatile String activePlatformId; + private volatile String outputBuildFormat; private volatile String adaDialects; private volatile String adaRestrictions; private volatile String pkgSpecPrefix; @@ -217,6 +222,17 @@ this.activePlatformId = activePlatformId; } + public String getOutputBuildFormat() { + if (outputBuildFormat == null) { + outputBuildFormat = eval.getProperty(OUTPUT_BUILD_FORMAT); + } + return outputBuildFormat; + } + + public void setOutputBuildFormat(String outputBuildFormat) { + this.outputBuildFormat = outputBuildFormat; + } + // Storing void save() { try { @@ -271,6 +287,10 @@ projectProperties.put(ACTIVE_PLATFORM, activePlatformId); } + if (outputBuildFormat != null) { + projectProperties.put(OUTPUT_BUILD_FORMAT, outputBuildFormat); + } + if (adaDialects != null) { projectProperties.put(AdaOptions.ADA_DIALECTS, adaDialects); } diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/src/org/netbeans/modules/ada/project/ui/properties/Bundle.properties --- a/ada.project/src/org/netbeans/modules/ada/project/ui/properties/Bundle.properties Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.project/src/org/netbeans/modules/ada/project/ui/properties/Bundle.properties Sun Aug 22 23:37:11 2010 +0200 @@ -80,3 +80,6 @@ CustomizerBuild.manage.text=Manage... CustomizerBuild.jLabel2.text=Ada Platform: CustomizerRun.executableName.text=&Executable Name: +CustomizerBuild.jLabel3.text=Build Format: +CustomizerBuild.nativeFormat.text=Native +CustomizerBuild.jvmFormat.text=JVM diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/src/org/netbeans/modules/ada/project/ui/properties/CompositePanelProviderImpl.java --- a/ada.project/src/org/netbeans/modules/ada/project/ui/properties/CompositePanelProviderImpl.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.project/src/org/netbeans/modules/ada/project/ui/properties/CompositePanelProviderImpl.java Sun Aug 22 23:37:11 2010 +0200 @@ -36,13 +36,11 @@ * * Portions Copyrighted 2008 Sun Microsystems, Inc. */ - - package org.netbeans.modules.ada.project.ui.properties; import javax.swing.JComponent; import javax.swing.JPanel; -import org.netbeans.modules.ada.project.options.AdaGeneralOptionsPanel; +import org.netbeans.modules.ada.project.options.ui.AdaGeneralOptionsPanel; import org.netbeans.spi.project.ui.support.ProjectCustomizer; import org.netbeans.spi.project.ui.support.ProjectCustomizer.CompositeCategoryProvider; import org.openide.util.Lookup; @@ -100,7 +98,7 @@ null, categories); } - + assert toReturn != null : "No category for name: " + name; return toReturn; } @@ -120,7 +118,7 @@ } else if (STANDARDS_AND_NAMING.equals(nm)) { return new AdaGeneralOptionsPanel(uiProps); } - + return new JPanel(); } diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/src/org/netbeans/modules/ada/project/ui/properties/CustomizerBuild.form --- a/ada.project/src/org/netbeans/modules/ada/project/ui/properties/CustomizerBuild.form Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.project/src/org/netbeans/modules/ada/project/ui/properties/CustomizerBuild.form Sun Aug 22 23:37:11 2010 +0200 @@ -16,21 +16,32 @@ - + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + @@ -51,7 +62,13 @@ - + + + + + + +
    @@ -120,5 +137,38 @@
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/src/org/netbeans/modules/ada/project/ui/properties/CustomizerBuild.java --- a/ada.project/src/org/netbeans/modules/ada/project/ui/properties/CustomizerBuild.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.project/src/org/netbeans/modules/ada/project/ui/properties/CustomizerBuild.java Sun Aug 22 23:37:11 2010 +0200 @@ -48,7 +48,6 @@ import org.netbeans.modules.ada.project.ui.Utils; import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; -import org.openide.filesystems.Repository; import org.openide.loaders.DataObject; import org.openide.loaders.InstanceDataObject; import org.openide.util.Exceptions; @@ -63,7 +62,8 @@ private final AdaProjectProperties uiProperties; private final DocListener listener; - + private final AdaPlatformManager manager; + /** Creates new form CustomizerBuild */ public CustomizerBuild(final AdaProjectProperties uiProperties) { assert uiProperties != null; @@ -78,15 +78,36 @@ this.platforms.setRenderer(Utils.createPlatformRenderer()); this.platforms.setModel(Utils.createPlatformModel()); - final AdaPlatformManager manager = AdaPlatformManager.getInstance(); + manager = AdaPlatformManager.getInstance(); String pid = uiProperties.getActivePlatformId(); if (pid == null) { pid = manager.getDefaultPlatform(); } + final AdaPlatform activePlatform = manager.getPlatform(pid); if (activePlatform != null) { platforms.setSelectedItem(activePlatform); } + + if (activePlatform.getJvmGnatCompilerCommand() != null) { + nativeFormat.setEnabled(true); + jvmFormat.setEnabled(true); + if (uiProperties.getOutputBuildFormat().equalsIgnoreCase(AdaProjectProperties.NATIVE_FORMAT)) { + nativeFormat.setSelected(true); + jvmFormat.setSelected(false); + } + else { + nativeFormat.setSelected(false); + jvmFormat.setSelected(true); + } + } + else { + nativeFormat.setSelected(true); + jvmFormat.setSelected(false); + nativeFormat.setEnabled(false); + jvmFormat.setEnabled(false); + } + } public HelpCtx getHelpCtx() { @@ -108,6 +129,9 @@ platforms = new javax.swing.JComboBox(); jLabel2 = new javax.swing.JLabel(); manage = new javax.swing.JButton(); + jLabel3 = new javax.swing.JLabel(); + nativeFormat = new javax.swing.JRadioButton(); + jvmFormat = new javax.swing.JRadioButton(); jLabel1.setLabelFor(mainModule); org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(CustomizerBuild.class, "CustomizerRun.mainModule.text")); // NOI18N @@ -137,6 +161,23 @@ } }); + jLabel3.setLabelFor(mainModule); + org.openide.awt.Mnemonics.setLocalizedText(jLabel3, org.openide.util.NbBundle.getMessage(CustomizerBuild.class, "CustomizerBuild.jLabel3.text")); // NOI18N + + nativeFormat.setText(org.openide.util.NbBundle.getMessage(CustomizerBuild.class, "CustomizerBuild.nativeFormat.text")); // NOI18N + nativeFormat.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + nativeFormatActionPerformed(evt); + } + }); + + jvmFormat.setText(org.openide.util.NbBundle.getMessage(CustomizerBuild.class, "CustomizerBuild.jvmFormat.text")); // NOI18N + jvmFormat.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jvmFormatActionPerformed(evt); + } + }); + org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( @@ -144,16 +185,24 @@ .add(layout.createSequentialGroup() .addContainerGap() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) - .add(jLabel1) - .add(jLabel2)) - .add(49, 49, 49) - .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) - .add(platforms, 0, 323, Short.MAX_VALUE) - .add(mainModule, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 323, Short.MAX_VALUE)) - .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) - .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false) - .add(org.jdesktop.layout.GroupLayout.TRAILING, browse, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .add(org.jdesktop.layout.GroupLayout.TRAILING, manage, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .add(layout.createSequentialGroup() + .add(jLabel3) + .add(49, 49, 49) + .add(nativeFormat) + .add(18, 18, 18) + .add(jvmFormat)) + .add(layout.createSequentialGroup() + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(jLabel1) + .add(jLabel2)) + .add(49, 49, 49) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(platforms, 0, 323, Short.MAX_VALUE) + .add(mainModule, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 323, Short.MAX_VALUE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false) + .add(org.jdesktop.layout.GroupLayout.TRAILING, browse, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(org.jdesktop.layout.GroupLayout.TRAILING, manage, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) .addContainerGap()) ); layout.setVerticalGroup( @@ -169,7 +218,12 @@ .add(jLabel1) .add(browse) .add(mainModule, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) - .addContainerGap(224, Short.MAX_VALUE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jLabel3) + .add(nativeFormat) + .add(jvmFormat)) + .addContainerGap(194, Short.MAX_VALUE)) ); }// //GEN-END:initComponents @@ -183,12 +237,32 @@ private void platformsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_platformsActionPerformed uiProperties.setActivePlatformId( ((AdaPlatform) platforms.getSelectedItem()).getName()); + + final AdaPlatform activePlatform = manager.getPlatform(uiProperties.getActivePlatformId()); + + if (activePlatform.getJvmGnatCompilerCommand() != null) { + nativeFormat.setEnabled(true); + jvmFormat.setEnabled(true); + if (uiProperties.getOutputBuildFormat().equalsIgnoreCase(AdaProjectProperties.NATIVE_FORMAT)) { + nativeFormat.setSelected(true); + jvmFormat.setSelected(false); + } else { + nativeFormat.setSelected(false); + jvmFormat.setSelected(true); + } + } else { + nativeFormat.setSelected(true); + jvmFormat.setSelected(false); + nativeFormat.setEnabled(false); + jvmFormat.setEnabled(false); + uiProperties.setOutputBuildFormat(AdaProjectProperties.NATIVE_FORMAT); + } + }//GEN-LAST:event_platformsActionPerformed private void manageActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_manageActionPerformed // Workaround, Needs an API to display platform customizer -// final FileObject fo = FileUtil.getConfigFile("Actions/Ada/org-netbeans-modules-ada-platform-PlatformsCustomizerAction.instance"); //NOI18N - final FileObject fo = Repository.getDefault().getDefaultFileSystem().findResource("Actions/Ada/org-netbeans-modules-ada-platform-PlatformsCustomizerAction.instance"); //NOI18N + final FileObject fo = FileUtil.getConfigFile("Actions/Ada/org-netbeans-modules-ada-platform-PlatformsCustomizerAction.instance"); //NOI18N if (fo != null) { try { InstanceDataObject ido = (InstanceDataObject) DataObject.find(fo); @@ -202,12 +276,26 @@ } } }//GEN-LAST:event_manageActionPerformed + +private void nativeFormatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nativeFormatActionPerformed + uiProperties.setOutputBuildFormat(AdaProjectProperties.NATIVE_FORMAT); + jvmFormat.setSelected(false); +}//GEN-LAST:event_nativeFormatActionPerformed + +private void jvmFormatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jvmFormatActionPerformed + uiProperties.setOutputBuildFormat(AdaProjectProperties.JVM_FORMAT); + nativeFormat.setSelected(false); +}//GEN-LAST:event_jvmFormatActionPerformed + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton browse; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; + private javax.swing.JLabel jLabel3; + private javax.swing.JRadioButton jvmFormat; private javax.swing.JTextField mainModule; private javax.swing.JButton manage; + private javax.swing.JRadioButton nativeFormat; private javax.swing.JComboBox platforms; // End of variables declaration//GEN-END:variables diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/src/org/netbeans/modules/ada/project/ui/resources/adb-16.png Binary file ada.project/src/org/netbeans/modules/ada/project/ui/resources/adb-16.png has changed diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/src/org/netbeans/modules/ada/project/ui/resources/ads-16.png Binary file ada.project/src/org/netbeans/modules/ada/project/ui/resources/ads-16.png has changed diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/src/org/netbeans/modules/ada/project/ui/wizards/EmptyAdaProjectPanelVisual.java --- a/ada.project/src/org/netbeans/modules/ada/project/ui/wizards/EmptyAdaProjectPanelVisual.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.project/src/org/netbeans/modules/ada/project/ui/wizards/EmptyAdaProjectPanelVisual.java Sun Aug 22 23:37:11 2010 +0200 @@ -238,7 +238,7 @@ String projectName = (String) settings.getProperty(NewAdaProjectWizardIterator.PROP_PROJECT_NAME); if (projectName == null) { - projectName = NewAdaProjectWizardIterator.getFreeFolderName(projectLocation,"NewAdaApplication"); //NOI18N + projectName = NewAdaProjectWizardIterator.getFreeFolderName(projectLocation,"AdaApplication"); //NOI18N } this.projectNameTextField.setText(projectName); this.projectNameTextField.selectAll(); diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/src/org/netbeans/modules/ada/project/ui/wizards/ExistingAdaProjectPanelVisual.java --- a/ada.project/src/org/netbeans/modules/ada/project/ui/wizards/ExistingAdaProjectPanelVisual.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.project/src/org/netbeans/modules/ada/project/ui/wizards/ExistingAdaProjectPanelVisual.java Sun Aug 22 23:37:11 2010 +0200 @@ -176,7 +176,7 @@ File projectLocation = (File) settings.getProperty(NewAdaProjectWizardIterator.PROP_PROJECT_LOCATION); String defaultName = null; if (projectLocation == null || projectLocation.getParentFile() == null || !projectLocation.getParentFile().isDirectory()) { - defaultName = NewAdaProjectWizardIterator.getFreeFolderName(ProjectChooser.getProjectsFolder(), "NewAdaApplication"); //NOI18N + defaultName = NewAdaProjectWizardIterator.getFreeFolderName(ProjectChooser.getProjectsFolder(), "AdaApplication"); //NOI18N projectLocation = new File (ProjectChooser.getProjectsFolder(),defaultName); } this.projectFolderTextField.setText(projectLocation.getAbsolutePath()); diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/src/org/netbeans/modules/ada/project/ui/wizards/NewAdaProjectWizardIterator.java --- a/ada.project/src/org/netbeans/modules/ada/project/ui/wizards/NewAdaProjectWizardIterator.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.project/src/org/netbeans/modules/ada/project/ui/wizards/NewAdaProjectWizardIterator.java Sun Aug 22 23:37:11 2010 +0200 @@ -48,6 +48,7 @@ import java.util.Map; import java.util.NoSuchElementException; import java.util.Set; +import java.util.StringTokenizer; import javax.swing.event.ChangeListener; import org.netbeans.api.progress.ProgressHandle; import org.netbeans.api.project.Project; @@ -64,7 +65,6 @@ import org.openide.WizardDescriptor; import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; -import org.openide.filesystems.Repository; import org.openide.loaders.DataFolder; import org.openide.loaders.DataObject; import org.openide.util.Exceptions; @@ -134,6 +134,15 @@ return null; } + private String removeSpaces(String s) { + StringTokenizer st = new StringTokenizer(s, " ", false); + String t = ""; + while (st.hasMoreElements()) { + t += st.nextElement(); + } + return t; + } + public Set instantiate(ProgressHandle handle) throws IOException { final Set resultSet = new HashSet(); @@ -163,8 +172,8 @@ // main file final String mainName = (String) descriptor.getProperty(NewAdaProjectWizardIterator.MAIN_FILE); if (mainName != null) { - resultSet.add(createMainFile(Repository.getDefault().getDefaultFileSystem().findResource("Templates/Ada/NewAdaMain"), - sourceDir, mainName).getPrimaryFile()); + resultSet.add(createMainFile(FileUtil.getConfigFile("Templates/Ada/NewMain"), + sourceDir, removeSpaces(mainName)).getPrimaryFile()); } } @@ -279,7 +288,6 @@ nameEl.appendChild(doc.createTextNode(name)); data.appendChild(nameEl); - EditableProperties properties = helper.getProperties(AntProjectHelper.PROJECT_PROPERTIES_PATH); configureSources(helper, data, properties); @@ -351,11 +359,11 @@ String platformId = (String) descriptor.getProperty(PROP_PLATFORM_ID); assert platformId != null; properties.setProperty(AdaProjectProperties.ACTIVE_PLATFORM, platformId); - properties.setProperty(AdaProjectProperties.ADA_LIB_PATH, ""); //NOI18N - final File projectDirectory = FileUtil.toFile(helper.getProjectDirectory()); - String buildPath = projectDirectory + File.separator + DEFAULT_BUILD_DIR; + properties.setProperty(AdaProjectProperties.OUTPUT_BUILD_FORMAT, AdaProjectProperties.NATIVE_FORMAT); + properties.setProperty(AdaProjectProperties.ADA_LIB_PATH, ""); //NOI18N + String buildPath = DEFAULT_BUILD_DIR; properties.setProperty(AdaProjectProperties.BUILD_DIR, buildPath); - String distPath = projectDirectory + File.separator + DEFAULT_DIST_DIR; + String distPath = DEFAULT_DIST_DIR; properties.setProperty(AdaProjectProperties.DIST_DIR, distPath); } diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/src/org/netbeans/modules/ada/project/ui/wizards/NewFileWizardIterator.java --- a/ada.project/src/org/netbeans/modules/ada/project/ui/wizards/NewFileWizardIterator.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.project/src/org/netbeans/modules/ada/project/ui/wizards/NewFileWizardIterator.java Sun Aug 22 23:37:11 2010 +0200 @@ -135,19 +135,24 @@ FileObject template = Templates.getTemplate(this.wizard); String ext = template.getExt(); String postfix = ""; - if (template.getName().startsWith("NewAdaMain")) { - ext = AdaOptions.getInstance().getSeparateExt(); - postfix = AdaOptions.getInstance().getSeparatePostfix(); - } else if (template.getName().startsWith("NewAdaPackageSpec")) { - ext = AdaOptions.getInstance().getPkgSpecExt(); - postfix = AdaOptions.getInstance().getPkgSpecPostfix(); - } else if (template.getName().startsWith("NewAdaPackageBody")) { - ext = AdaOptions.getInstance().getPkgBodyExt(); - postfix = AdaOptions.getInstance().getPkgBodyPostfix(); + + Project project = Templates.getProject(wizard); + assert project instanceof AdaProject; + AdaProject adaProject = (AdaProject) project; + + if (template.getName().startsWith("NewMain")) { + ext = adaProject.getEvaluator().getProperty(AdaOptions.SEPARATE_EXT); + postfix = adaProject.getEvaluator().getProperty(AdaOptions.SEPARATE_POSTFIX); + } else if (template.getName().startsWith("NewPackageSpec")) { + ext = adaProject.getEvaluator().getProperty(AdaOptions.PKG_SPEC_EXT); + postfix = adaProject.getEvaluator().getProperty(AdaOptions.PKG_SPEC_POSTFIX); + } else if (template.getName().startsWith("NewPackageBody")) { + ext = adaProject.getEvaluator().getProperty(AdaOptions.PKG_BODY_EXT); + postfix = adaProject.getEvaluator().getProperty(AdaOptions.PKG_BODY_POSTFIX); } String targetName = (targetFolder != null) ? FileUtil.findFreeFileName(targetFolder, template.getName(), ext) : template.getName();//NOI18N // TODO: manage postfix naming - targetName += /*postfix + */"." + ext; + targetName += "." + ext; Templates.setTargetName(this.wizard, targetName);//NOI18N wizardPanels = getPanels(); diff -r 2f191c83a5c4 -r d2820c029d3a ada.project/src/org/netbeans/modules/ada/project/ui/wizards/PanelOptionsVisual.java --- a/ada.project/src/org/netbeans/modules/ada/project/ui/wizards/PanelOptionsVisual.java Wed Feb 24 15:52:30 2010 -0500 +++ b/ada.project/src/org/netbeans/modules/ada/project/ui/wizards/PanelOptionsVisual.java Sun Aug 22 23:37:11 2010 +0200 @@ -54,6 +54,7 @@ import org.openide.WizardDescriptor; import org.openide.WizardValidationException; import org.openide.filesystems.FileObject; +import org.openide.filesystems.FileUtil; import org.openide.filesystems.Repository; import org.openide.loaders.DataObject; import org.openide.loaders.InstanceDataObject; @@ -118,12 +119,21 @@ } } + private String removeSpaces(String s) { + StringTokenizer st = new StringTokenizer(s, " ", false); + String t = ""; + while (st.hasMoreElements()) { + t += st.nextElement(); + } + return t; + } + public void propertyChange(PropertyChangeEvent event) { if (NewAdaProjectWizardIterator.PROP_PROJECT_NAME.equals(event.getPropertyName())) { String newProjectName = (String) event.getNewValue(); this.mainFileTextField.setText(MessageFormat.format( NbBundle.getMessage(PanelOptionsVisual.class, "TXT_MainFileName"), - new Object[]{newProjectName + "." + AdaOptions.getInstance().getSeparateExt()})); + new Object[]{removeSpaces(newProjectName) + "." + AdaOptions.getInstance().getSeparateExt()})); } if (NewAdaProjectWizardIterator.PROP_PROJECT_LOCATION.equals(event.getPropertyName())) { projectLocation = (String) event.getNewValue(); @@ -216,7 +226,7 @@ private void manageActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_manageActionPerformed // Workaround, Needs an API to display platform customizer - final FileObject fo = Repository.getDefault().getDefaultFileSystem().findResource("Actions/Ada/org-netbeans-modules-ada-platform-PlatformsCustomizerAction.instance"); //NOI18N + final FileObject fo = FileUtil.getConfigFile("Actions/Ada/org-netbeans-modules-ada-platform-PlatformsCustomizerAction.instance"); //NOI18N if (fo != null) { try { InstanceDataObject ido = (InstanceDataObject) DataObject.find(fo);