[SCM] Lisaac compiler branch, stable, updated. lisaac-0.12-468-g4b0f42f
Damien Bouvarel
dams.bouvarel at wanadoo.fr
Sat Sep 5 16:02:27 UTC 2009
The following commit has been merged in the stable branch:
commit 4b0f42f799cc9a7d119118ff17abd3fb019fc174
Author: Damien Bouvarel <dams.bouvarel at wanadoo.fr>
Date: Sat Sep 5 18:01:38 2009 +0200
fix bugs. the plugin should be able to read the compiler src as an eclipse project
diff --git a/editor/eclipse/META-INF/MANIFEST.MF b/editor/eclipse/META-INF/MANIFEST.MF
index 5df0e1d..d56f0e5 100644
--- a/editor/eclipse/META-INF/MANIFEST.MF
+++ b/editor/eclipse/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.lisaac.ldt;singleton:=true
-Bundle-Version: 1.1.5
+Bundle-Version: 1.1.6
Bundle-Activator: org.lisaac.ldt.LisaacPlugin
Bundle-Vendor: %Bundle-Vendor.0
Require-Bundle: org.eclipse.ui,
diff --git a/editor/eclipse/src/org/lisaac/ldt/builder/LisaacChangeListener.java b/editor/eclipse/src/org/lisaac/ldt/builder/LisaacChangeListener.java
index ddb9125..a13a510 100644
--- a/editor/eclipse/src/org/lisaac/ldt/builder/LisaacChangeListener.java
+++ b/editor/eclipse/src/org/lisaac/ldt/builder/LisaacChangeListener.java
@@ -13,18 +13,20 @@ public class LisaacChangeListener implements IResourceChangeListener {
public void resourceChanged(IResourceChangeEvent event) {
IResourceDelta delta = event.getDelta();
- IResource resource = delta.getResource();
- if (resource != null) {
- if (resource instanceof IWorkspaceRoot) {
- delta = (IResourceDelta) (delta.getAffectedChildren())[0];// TODO go deeper in the delta
- resource = delta.getResource();
- }
+ if (delta != null) {
+ IResource resource = delta.getResource();
if (resource != null) {
- IProject project = (IProject) resource.getProject();
- LisaacModel model = LisaacModel.getModel(project);
+ if (resource instanceof IWorkspaceRoot) {
+ delta = (IResourceDelta) (delta.getAffectedChildren())[0];// TODO go deeper in the delta
+ resource = delta.getResource();
+ }
+ if (resource != null) {
+ IProject project = (IProject) resource.getProject();
+ LisaacModel model = LisaacModel.getModel(project);
- if (model != null) {
- model.setCompiled(false);
+ if (model != null) {
+ model.setCompiled(false);
+ }
}
}
}
diff --git a/editor/eclipse/src/org/lisaac/ldt/editors/LisaacPartitionScanner.java b/editor/eclipse/src/org/lisaac/ldt/editors/LisaacPartitionScanner.java
index 4a51bca..ae54ee5 100644
--- a/editor/eclipse/src/org/lisaac/ldt/editors/LisaacPartitionScanner.java
+++ b/editor/eclipse/src/org/lisaac/ldt/editors/LisaacPartitionScanner.java
@@ -20,17 +20,17 @@ public class LisaacPartitionScanner extends RuleBasedPartitionScanner {
IToken string = new Token(LISAAC_STRING);
IToken external = new Token(LISAAC_EXTERNAL);
- IPredicateRule[] rules = new IPredicateRule[4];
-
- rules[0] = new MultiLineRule("/*", "*/", comment);
- rules[1] = new EndOfLineRule("//", comment);
-
- rules[2] = new MultiLineRule("\"", "\"", string);
- rules[3] = new MultiLineRule("`", "`", external);
+ IPredicateRule[] rules = new IPredicateRule[6];
+ rules[0] = new MultiLineRule("\"", "\"", string);
+ rules[1] = new MultiLineRule("`", "`", external);
+
+ rules[2] = new MultiLineRule("/*", "*/", comment);
+ rules[3] = new EndOfLineRule("//", comment);
+
// avoid processing comment inside lisaac strings
- //rules[2] = new MultiLineRule("\"", "\"", Token.UNDEFINED, '\0', true);
- //rules[3] = new SingleLineRule("`", "`", Token.UNDEFINED, '\0', true);
+ rules[4] = new MultiLineRule("\"", "\"", string, '\0', true);
+ rules[5] = new SingleLineRule("`", "`", external, '\0', true);
setPredicateRules(rules);
}
diff --git a/editor/eclipse/src/org/lisaac/ldt/editors/LisaacTextHover.java b/editor/eclipse/src/org/lisaac/ldt/editors/LisaacTextHover.java
index 1ffb8dc..dbe977d 100644
--- a/editor/eclipse/src/org/lisaac/ldt/editors/LisaacTextHover.java
+++ b/editor/eclipse/src/org/lisaac/ldt/editors/LisaacTextHover.java
@@ -39,6 +39,10 @@ public class LisaacTextHover implements ITextHover, ITextHoverExtension {
return null;
}
+ if (model == null) {
+ return null;
+ }
+
String text = textViewer.getDocument().get(hoverRegion.getOffset(), hoverRegion.getLength());
if (LisaacScanner.isPrototypeIdentifier(text)) {
// get prototype info
diff --git a/editor/eclipse/src/org/lisaac/ldt/launch/LaunchConfigurationTab.java b/editor/eclipse/src/org/lisaac/ldt/launch/LaunchConfigurationTab.java
index b426bbf..7bfb35d 100644
--- a/editor/eclipse/src/org/lisaac/ldt/launch/LaunchConfigurationTab.java
+++ b/editor/eclipse/src/org/lisaac/ldt/launch/LaunchConfigurationTab.java
@@ -334,12 +334,9 @@ public class LaunchConfigurationTab extends AbstractLaunchConfigurationTab {
item.setText(2, methodComment);
if (method.getName().compareTo(ILisaacModel.slot_debug_mode) == 0) {
- if (getLaunchConfigurationDialog().getMode().compareTo("debug") == 0) {
- item.setChecked(true);
- } else {
- item.setChecked(false);
- }
- }
+ item.setChecked(true);
+ item.setText(1, getLaunchConfigurationDialog().getMode());
+ }
}
}
}
diff --git a/editor/eclipse/src/org/lisaac/ldt/model/AbstractLisaacParser.java b/editor/eclipse/src/org/lisaac/ldt/model/AbstractLisaacParser.java
index 45af489..058d2bc 100644
--- a/editor/eclipse/src/org/lisaac/ldt/model/AbstractLisaacParser.java
+++ b/editor/eclipse/src/org/lisaac/ldt/model/AbstractLisaacParser.java
@@ -495,7 +495,7 @@ public class AbstractLisaacParser {
Integer integer = Integer.valueOf(string_tmp, 16);
lastInteger = integer.intValue();
} catch (Exception e) {
- System.out.println("Warning readInteger : "+e);// FIXME hex string
+ //System.out.println("Warning readInteger : "+e);// FIXME hex string
lastInteger = 0;
}
position++;
@@ -736,7 +736,6 @@ public class AbstractLisaacParser {
//-- string -> '\"' ascii_string '\"'
public boolean readString() {
boolean result=false;
- // int old_pos;
if (readSpace() && lastCharacter() == '\"') {
// old_pos = position;
@@ -755,7 +754,7 @@ public class AbstractLisaacParser {
position = position+1;
lastString = getString(string_tmp);
result = true;
- } else {
+ } else {
position = begin_position;
reporter.syntaxError("Unterminated string constant.", getPosition());
}
diff --git a/editor/eclipse/src/org/lisaac/ldt/model/ILisaacModel.java b/editor/eclipse/src/org/lisaac/ldt/model/ILisaacModel.java
index 6ce8e63..f6c21b2 100644
--- a/editor/eclipse/src/org/lisaac/ldt/model/ILisaacModel.java
+++ b/editor/eclipse/src/org/lisaac/ldt/model/ILisaacModel.java
@@ -5,13 +5,6 @@ import org.lisaac.ldt.builder.ILisaacErrorHandler;
import org.lisaac.ldt.model.lip.LIP;
public interface ILisaacModel {
-
- final String[] keywords = new String[] { "Section", "Public",
- "Private", "Inherit", "Header", "Insert", "Mapping", "Interrupt",
- "External", "Directory",
- "Expanded", "Strict",
- "Left", "Right",
- "Self",};
final String inherit_shared = "Shared";
final String inherit_shared_expanded = "Shared Expanded";
@@ -79,13 +72,23 @@ public interface ILisaacModel {
final String variable_void = "VOID";
final String variable_self = "Self";
+
+ final String[] keywords = new String[] { keyword_section, section_public,
+ section_private, section_inherit, section_header, section_insert,
+ section_mapping, section_interrupt,
+ section_external, section_directory,
+ keyword_expanded, keyword_strict,
+ keyword_left, keyword_right,
+ variable_self, keyword_old, keyword_result};
+
+
// lip
final String slot_lip = "lip";
final String slot_if = "if";
final String slot_else = "else";
final String slot_print = "print";
- final String slot_debug_mode = "debug_mode";
+ final String slot_debug_mode = "run_mode";
ILisaacErrorHandler getReporter();
AliasString getAliasString();
diff --git a/editor/eclipse/src/org/lisaac/ldt/model/LisaacModel.java b/editor/eclipse/src/org/lisaac/ldt/model/LisaacModel.java
index b4055a7..353afc3 100644
--- a/editor/eclipse/src/org/lisaac/ldt/model/LisaacModel.java
+++ b/editor/eclipse/src/org/lisaac/ldt/model/LisaacModel.java
@@ -8,7 +8,6 @@ import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IResourceVisitor;
-import org.eclipse.core.resources.ResourceAttributes;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
diff --git a/editor/eclipse/src/org/lisaac/ldt/model/LisaacParser.java b/editor/eclipse/src/org/lisaac/ldt/model/LisaacParser.java
index cf72e27..cca09f2 100644
--- a/editor/eclipse/src/org/lisaac/ldt/model/LisaacParser.java
+++ b/editor/eclipse/src/org/lisaac/ldt/model/LisaacParser.java
@@ -131,7 +131,7 @@ public class LisaacParser extends AbstractLisaacParser {
return null;
}
if (isSection) {
- if (! (t instanceof TypeSimple)) {
+ if (! (t instanceof TypeSimple) && ! (t instanceof TypeSelf)) {
reporter.syntaxError("For a section, the prototype name only (without '('...')').", getLine());
return null;
}
@@ -378,7 +378,7 @@ public class LisaacParser extends AbstractLisaacParser {
if (lastComment != null && lastComment.length() > 0) {
lastSlot.setComment(lastComment);
}
- if (lastSection.isInheritOrInsert()) {
+ if (lastComment != null && lastSection.isInheritOrInsert()) {
// Add parent slot
Slot s = prototype.getParentSlot(lastSlot.getName());
if (s != null) {
diff --git a/editor/eclipse/src/org/lisaac/ldt/model/items/Prototype.java b/editor/eclipse/src/org/lisaac/ldt/model/items/Prototype.java
index ac95e56..500dbe0 100644
--- a/editor/eclipse/src/org/lisaac/ldt/model/items/Prototype.java
+++ b/editor/eclipse/src/org/lisaac/ldt/model/items/Prototype.java
@@ -335,6 +335,12 @@ public class Prototype {
invBracketLevel--;
}
+ // strings
+ if (c == '\"' || c == '\'' || c == '`') {
+ offset = unreadString(c, offset, source);
+ continue;
+ }
+
// ok, we're not in nested statements
if (bracketLevel == 0 && invBracketLevel == 0) {
if (c == ';' || c == '.') {
@@ -399,11 +405,6 @@ public class Prototype {
}
break;
}
- // strings
- if (c == '\"' || c == '\'' || c == '`') {
- offset = unreadString(c, offset, source);
- continue;
- }
}
offset--;
}
@@ -497,7 +498,11 @@ public class Prototype {
offset = offset - 2;
break;
}
- offset--;
+ if (c == '\"' || c == '\'' || c == '`') {
+ offset = unreadString(c, offset, source);
+ continue;
+ }
+ offset--;
}
if (offset < 0) {
offset = 0;
diff --git a/editor/eclipse/src/org/lisaac/ldt/wizards/NewProjectWizard.java b/editor/eclipse/src/org/lisaac/ldt/wizards/NewProjectWizard.java
index 0291659..ce37a5e 100644
--- a/editor/eclipse/src/org/lisaac/ldt/wizards/NewProjectWizard.java
+++ b/editor/eclipse/src/org/lisaac/ldt/wizards/NewProjectWizard.java
@@ -1,5 +1,6 @@
package org.lisaac.ldt.wizards;
+import java.awt.GridLayout;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
@@ -18,6 +19,11 @@ import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
import org.eclipse.ui.INewWizard;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;
@@ -40,15 +46,17 @@ public class NewProjectWizard extends Wizard implements INewWizard {
public boolean performFinish() {
final String name;
final IPath path;
+ final boolean genereSrc;
IRunnableWithProgress op = null;
try {
name = mainPage.getProjectName();
path = mainPage.getLocationPath();
- //lisaacPath = mainPage.getLisaacPath();
+ genereSrc = mainPage.generateSrc();
+
op = new IRunnableWithProgress() {
public void run(IProgressMonitor monitor) throws InvocationTargetException {
try {
- doFinish(name, path, monitor);
+ doFinish(name, path, genereSrc, monitor);
} catch (CoreException e) {
throw new InvocationTargetException(e);
} finally {
@@ -72,7 +80,7 @@ public class NewProjectWizard extends Wizard implements INewWizard {
return true;
}
- private void doFinish(String projectName, IPath nomRep, IProgressMonitor monitor)
+ private void doFinish(String projectName, IPath nomRep, boolean genereSrc, IProgressMonitor monitor)
throws CoreException
{
monitor.beginTask("Project Creation " + projectName, 4); //$NON-NLS-1$
@@ -114,22 +122,23 @@ public class NewProjectWizard extends Wizard implements INewWizard {
// create make file for project
IFile lipFile = project.getFile("make.lip"); //$NON-NLS-1$
if (! lipFile.exists()) {
- lipFile.create(new ByteArrayInputStream(getLipStream(project)), false, monitor);
+ lipFile.create(new ByteArrayInputStream(getLipStream(project, genereSrc)), false, monitor);
}
// create default folder & files in project
- IFolder src = project.getFolder("src"); //$NON-NLS-1$
- if (! src.exists()) {
- src.create(false, true, monitor);
- src.setPersistentProperty(
- new QualifiedName("", LisaacResourceDecorator.SOURCE_FOLDER_PROPERTY),
- "true");
- }
-
- monitor.worked(1);
- IFile mainPrototype = src.getFile(projectName.toLowerCase()+".li"); //$NON-NLS-1$
- if (! mainPrototype.exists()) {
- mainPrototype.create(new ByteArrayInputStream(getMainPrototypeStream(projectName)), false, monitor);
+ if (genereSrc) {
+ IFolder src = project.getFolder("src"); //$NON-NLS-1$
+ if (! src.exists()) {
+ src.create(false, true, monitor);
+ src.setPersistentProperty(
+ new QualifiedName("", LisaacResourceDecorator.SOURCE_FOLDER_PROPERTY),
+ "true");
+ }
+ monitor.worked(1);
+ IFile mainPrototype = src.getFile(projectName.toLowerCase()+".li"); //$NON-NLS-1$
+ if (! mainPrototype.exists()) {
+ mainPrototype.create(new ByteArrayInputStream(getMainPrototypeStream(projectName)), false, monitor);
+ }
}
IFolder bin = project.getFolder("bin"); //$NON-NLS-1$
if (! bin.exists()) {
@@ -170,7 +179,7 @@ public class NewProjectWizard extends Wizard implements INewWizard {
return contents.getBytes();
}
- public byte[] getLipStream(IProject project) throws IOException {
+ public byte[] getLipStream(IProject project, boolean genereSrc) throws IOException {
String contents = "//\n// `"+project.getName()+"` LIsaac Project file\n//"; //$NON-NLS-1$ //$NON-NLS-2$
contents += "\nSection Inherit\n\n"; //$NON-NLS-1$
contents += " + parent:STRING;\n"; //$NON-NLS-1$
@@ -179,7 +188,11 @@ public class NewProjectWizard extends Wizard implements INewWizard {
contents += " - project_src_path <- \n"; //$NON-NLS-1$
contents += " // Define the project path for source code.\n"; //$NON-NLS-1$
contents += " (\n"; //$NON-NLS-1$
- contents += " path (project_root + \"src/\");\n"; //$NON-NLS-1$
+ if (genereSrc) {
+ contents += " path (project_root + \"src/\");\n"; //$NON-NLS-1$
+ } else {
+ contents += " path project_root;\n"; //$NON-NLS-1$
+ }
contents += " );\n\n"; //$NON-NLS-1$
contents += " - front_end <- \n"; //$NON-NLS-1$
contents += " // Executed by compiler, before compilation step.\n"; //$NON-NLS-1$
@@ -188,10 +201,14 @@ public class NewProjectWizard extends Wizard implements INewWizard {
contents += " general_front_end;\n"; //$NON-NLS-1$
contents += " );\n"; //$NON-NLS-1$
contents += "\nSection Public\n\n"; //$NON-NLS-1$
- contents += " - debug_mode <- \n"; //$NON-NLS-1$
- contents += " // Run in Debug Mode.\n"; //$NON-NLS-1$
+ contents += " - run_mode m:STRING <- \n"; //$NON-NLS-1$
+ contents += " // Select Run Mode.\n"; //$NON-NLS-1$
contents += " (\n"; //$NON-NLS-1$
- contents += " debug 15; // default level [1-20]\n"; //$NON-NLS-1$
+ contents += " (m = \"run\").if {\n"; //$NON-NLS-1$
+ contents += " no_debug;\n"; //$NON-NLS-1$
+ contents += " } else {\n"; //$NON-NLS-1$
+ contents += " debug 15; // default level [1-20]\n"; //$NON-NLS-1$
+ contents += " };\n"; //$NON-NLS-1$
contents += " );\n\n"; //$NON-NLS-1$
contents += " - clean <- \n"; //$NON-NLS-1$
contents += " // Clean project.\n"; //$NON-NLS-1$
@@ -214,11 +231,30 @@ public class NewProjectWizard extends Wizard implements INewWizard {
class NewProjectWizardPage extends WizardNewProjectCreationPage {
+ Button genereSrc;
+
NewProjectWizardPage(String pageName) {
super(pageName);
setTitle(pageName);
setDescription(LisaacMessages.getString("NewProjectWizard_48"));
}
+
+ public void createControl(Composite parent) {
+ super.createControl(parent);
+
+ Composite composite = (Composite) getControl();
+
+ genereSrc = new Button(composite, SWT.CHECK);
+ genereSrc.setText("Generate src files");
+ genereSrc.setSelection(true);
+ }
+
+ public boolean generateSrc() {
+ if (! genereSrc.isDisposed()) {
+ return genereSrc.getSelection();
+ }
+ return true;
+ }
}
/*
class LicenseWizardPage extends WizardPage {
--
Lisaac compiler
More information about the Lisaac-commits
mailing list