SugarHaskell not working

19 views
Skip to first unread message

jbracker

unread,
Oct 1, 2014, 6:20:31 AM10/1/14
to sug...@googlegroups.com
Hello,

I wanted to look into SugarJ for Haskell, because I want to experiment with new syntax. I followed all the steps described here [1] fpr the standalone compiler. I downloaded the most up-to-date version from here [2] and unpacked it. I added the bin directory to my path to make SugarJ available and there don't seem to be any problems since calling sugarj results in the standard help message. I also cloned the case studies to play around with them, but when I try to call SugarJ I always get this error:

$ sugarj -l haskell Test/Test.shs
Process Test/Test.shs
  PARSE next toplevel declaration.java.lang.RuntimeException: unexpected execution error
        at org.sugarj.driver.SDFCommands.sglr(SDFCommands.java:384)
        at org.sugarj.driver.SDFCommands.parseImplode(SDFCommands.java:402)
        at org.sugarj.driver.SDFCommands.parseImplode(SDFCommands.java:394)
        at org.sugarj.driver.Driver.currentParse(Driver.java:599)
        at org.sugarj.driver.declprovider.SourceToplevelDeclarationProvider.parseNextToplevelDeclaration(SourceToplevelDeclarationProvider.java:60)
        at org.sugarj.driver.declprovider.SourceToplevelDeclarationProvider.getNextToplevelDecl(SourceToplevelDeclarationProvider.java:46)
        at org.sugarj.driver.Driver.process(Driver.java:349)
        at org.sugarj.driver.Driver.run(Driver.java:262)
        at org.sugarj.driver.Driver.run(Driver.java:211)
        at org.sugarj.driver.Driver.run(Driver.java:202)
        at org.sugarj.driver.Driver.run(Driver.java:198)
        at org.sugarj.driver.cli.Main.main(Main.java:53)
Caused by: java.util.concurrent.ExecutionException: java.lang.NoSuchMethodError: org.spoofax.jsglr.client.SGLR.parseMax(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
        at java.util.concurrent.FutureTask.report(FutureTask.java:122)
        at java.util.concurrent.FutureTask.get(FutureTask.java:202)
        at org.sugarj.driver.SDFCommands.sglr(SDFCommands.java:379)
        ... 11 more
Caused by: java.lang.NoSuchMethodError: org.spoofax.jsglr.client.SGLR.parseMax(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
        at org.sugarj.driver.SDFCommands$1.call(SDFCommands.java:368)
        at org.sugarj.driver.SDFCommands$1.call(SDFCommands.java:1)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
 ... done - 547ms
  ANALYZE toplevel declaration. ... done - 1595ms
  DESUGAR toplevel declaration. ... done - 49ms
  CHECK current transformation ... done - 1ms
  COMPILE generated Haskell files ... compilation succeeded - 0ms
processing done processing ./Test/Test.shs - 3340ms

I have also tried running it on Test/Applicative.shs and Test/TestWithSugar.shs, but it makes no difference. I have also tried a simple test file of my own: 

module MyTest where

main :: IO ()
main = return ()

But still I receive the above error message.

Can any body on this mailing list help me with this issue?

Cheers,
Jan


Sebastian Erdweg

unread,
Oct 21, 2014, 4:10:05 AM10/21/14
to sug...@googlegroups.com
Hi Jan,

sorry for the delay, somehow this message got lost in my inbox.

The easiest way to experiment with SugarHaskell right now is to use our Eclipse integration. Inside Eclipse, you just install the SugarHaskell plugin from our update site (http://update.sugarj.org/), then you can import an existing SugarHaskell project using File->Import->General->Existing Project.

Let me know if this works for you.
Sebastian

Jan Bracker

unread,
Oct 28, 2014, 1:11:09 PM10/28/14
to sug...@googlegroups.com, erdw...@gmail.com
Hi Sebastian,

thank you for your reply!

I was able to install SugarJ / SugarHaskell within Eclipse now. I do not have an existing SugarHaskell project yet. Therefore, I would like to create a new one. The only entry I could find to create a new project was "Spoofax editor project", but that generates a huge conglomerate of files I do not understand or know how to use. The created project also reports errors in some of the generated files. So I am a little bit stuck there.

Did you mean a Haskell project? I tried creating a Haskell project and adding the UndefinedBlock.shs example. But SugarHaskell does not seem to be run on it. When I try to open the shs file I get an error from the Spoofax Editor component:

java.lang.RuntimeException: Java Model Exception: Java Model Status [TestHsProject does not exist]
at org.sugarj.editor.SugarLangProjectEnvironment.makeProjectEnvironment(SugarLangProjectEnvironment.java:31)
at org.sugarj.editor.SugarLangParseController.initializeEnvironment(SugarLangParseController.java:127)
at org.sugarj.editor.SugarLangParseController.initialize(SugarLangParseController.java:122)
at org.eclipse.imp.editor.UniversalEditor.initializeParseController(UniversalEditor.java:767)
at org.eclipse.imp.editor.UniversalEditor.createPartControl(UniversalEditor.java:724)
at org.strategoxt.imp.runtime.editor.SpoofaxEditor.createPartControl(SpoofaxEditor.java:78)
at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.createPartControl(CompatibilityPart.java:141)
at org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor.createPartControl(CompatibilityEditor.java:99)
at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:327)
at sun.reflect.GeneratedMethodAccessor96.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:55)
at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:888)
at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:869)
at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:120)
at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:337)
at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:258)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:162)
at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:104)
at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:73)
at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:55)
at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:127)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:983)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:662)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:766)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$2(PartRenderingEngine.java:737)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$7.run(PartRenderingEngine.java:731)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:715)
at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.showTab(StackRenderer.java:1250)
at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer$1.handleEvent(LazyStackRenderer.java:68)
at org.eclipse.e4.ui.services.internal.events.UIEventHandler$1.run(UIEventHandler.java:40)
at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:187)
at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:156)
at org.eclipse.swt.widgets.Display.syncExec(Display.java:4590)
at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:218)
at org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:36)
at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:197)
at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197)
at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:135)
at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78)
at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39)
at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:81)
at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:59)
at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374)
at org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElement(ElementContainerImpl.java:171)
at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.showElementInWindow(ModelServiceImpl.java:488)
at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.bringToTop(ModelServiceImpl.java:454)
at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.delegateBringToTop(PartServiceImpl.java:694)
at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.bringToTop(PartServiceImpl.java:387)
at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.showPart(PartServiceImpl.java:1134)
at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:3210)
at org.eclipse.ui.internal.WorkbenchPage.access$23(WorkbenchPage.java:3125)
at org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.java:3107)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3102)
at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3066)
at org.eclipse.ui.actions.OpenWithMenu.openEditor(OpenWithMenu.java:338)
at org.eclipse.ui.actions.OpenWithMenu$2.handleEvent(OpenWithMenu.java:180)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4454)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1388)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3799)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3409)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1151)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1032)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:148)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:636)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:579)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:135)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
at org.eclipse.equinox.launcher.Main.main(Main.java:1438)
Caused by: Java Model Exception: Java Model Status [TestHsProject does not exist]
at org.eclipse.jdt.internal.core.JavaElement.newNotPresentException(JavaElement.java:534)
at org.eclipse.jdt.internal.core.JavaModelManager.getPerProjectInfoCheckExistence(JavaModelManager.java:2344)
at org.eclipse.jdt.internal.core.JavaProject.getPerProjectInfo(JavaProject.java:1909)
at org.eclipse.jdt.internal.core.JavaProject.getOutputLocation(JavaProject.java:1736)
at org.sugarj.editor.SugarLangProjectEnvironment.makeProjectEnvironment(SugarLangProjectEnvironment.java:42)
at org.sugarj.editor.SugarLangProjectEnvironment.makeProjectEnvironment(SugarLangProjectEnvironment.java:29)
... 89 more

So now I am opening it through the text editor. SugarHaskell does not seem to be run on the project automatically and I can't find a option to run it manually. Am I missing something?

I was hoping that I could use SugarHaskell as a standalone tool (like a happy or alex). The plan was to use it to provide convenient syntax inside of a library and I do not want to push users into having to install eclipse to use it or install the library. Also setting up the build process through cabal it would be great to have SugarHaskell as a standalone tool. Is there a possibility to create a standalone version?

Best,
Jan


--

---
You received this message because you are subscribed to the Google Groups "SugarJ" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sugarj+un...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages