From 36a5b14cfa9734dcca307a186cf9bb05559b2a09 Mon Sep 17 00:00:00 2001 From: "john.j.camilleri" Date: Fri, 1 Jun 2012 12:43:44 +0000 Subject: [PATCH] GFEP: Updated readme --- eclipse/images/eclipse-external-libraries.png | Bin 17458 -> 28894 bytes eclipse/index.html | 93 ++++++++++++------ 2 files changed, 62 insertions(+), 31 deletions(-) diff --git a/eclipse/images/eclipse-external-libraries.png b/eclipse/images/eclipse-external-libraries.png index 4298694b9e0d48cc2312666b7949956df6cfb149..fe9983e8cd9c74f6ecb387cba30ef48b25db133f 100644 GIT binary patch literal 28894 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 delta 15022 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 FO#sSjp$Py0 diff --git a/eclipse/index.html b/eclipse/index.html index 9c47699b0..d4325dfd7 100644 --- a/eclipse/index.html +++ b/eclipse/index.html @@ -1,17 +1,7 @@ - - - -GF Eclipse Plugin - - - - - -

The GF Eclipse Plugin

John J. Camilleri
-Updated: 19 April 2012

+Updated: 1 June 2012

The research leading to these results has received funding from the European Union’s Seventh Framework Programme (FP7/2007-2013) under grant agreement no. FP7-ICT-247914 (the MOLTO Project).

@@ -38,13 +28,20 @@ Updated: 19 April 2012

  • Software update site URL for installing through Eclipse: http://www.grammaticalframework.org/eclipse/release/
  • +

    Publications

    + +
      +
    • Poster at EAMT 2012 in Trento, Italy
    • +
    • Paper presented at FreeRBMT 2012 in Gothenburg, Sweden.
    • +
    +

    Features

    • Syntax highlighting and error detection
    • Code folding, quick block-commenting, automatic code formatting
    • Definition outlining, jump to declaration, find usage
    • -
    • Warnings for problems in module dependancy hierarchy
    • +
    • Warnings for problems in module dependency hierarchy
    • Launch configurations, i.e. compilation directly from IDE
    • Use GF Shell from within Eclipse
    • Auto-completion for declared identifiers
    • @@ -67,7 +64,7 @@ Updated: 19 April 2012

      (1.4.3.x) Improvements to the Test Manager. Added support for arbitrary commands in launch. Made the license information clearer.
      22/03/12
      -
      (1.4.2.x) Added wizard for context-free grammars (no syntax support, though). Context-menu option for toggling the GF Nature and Builder together. Test Manager now parses languages & params, and includes filtering and toggling options.
      +
      (1.4.2.x) Added wizard for context-free grammars (no syntax support, though). Context-menu option for toggling the GF Nature and Builder together. Test Manager now parses languages & parameters, and includes filtering and toggling options.
      14/03/12
      (1.4.1.x) GF source files can now be anywhere in project, not necessarily at top level.
      @@ -91,7 +88,7 @@ Updated: 19 April 2012

      (1.2.0.x) with support for “Open Declaration” (F3) function, including for external libraries.
      18/11/11
      -
      Third BETA (1.1.0.x) released, overhauled to take advantage of new compiler features. Tag-based scoping with caching for better performance. Interactive console (GF Shell) for luanch configs.
      +
      Third BETA (1.1.0.x) released, overhauled to take advantage of new compiler features. Tag-based scoping with caching for better performance. Interactive console (GF Shell) for launch configs.
      11/10/11
      Second BETA (1.0.0.x) released, with improved support for qualified names, local variable bindings, selective inheritance, module outlining, and launch configurations. Also new GF Project type.
      @@ -149,7 +146,8 @@ Updated: 19 April 2012

      1. Add the GF perspective by clicking Window → Open Perspective → Other and choosing GF.
      2. The plugin will try to determine the path to your GF executable automatically. You can check/overwrite it by going to Preferences → Grammatical Framework. -This path should include the name of the GF binary itself, e.g. /home/john/.cabal/bin/gf or C:\Users\John\GF\gf.exe.
      3. +This path should include the name of the GF binary itself, e.g. /home/john/.cabal/bin/gf or C:\Users\John\GF\gf.exe. +
      4. By default, the Library path setting is set to .:present:alltenses:prelude. This is passed to GF using the --path flag.
      5. You can also adjust the verbosity level of the GFEP console log in the preferences window.
      @@ -253,7 +251,7 @@ You will probably want to ignore these directories in your version control syste

      Create a new GF Project

      -

      If you have a folder in your workspace which you want to convert into a GF Project, then you can select it from the dropdown. This folder will then appear as an Eclipse project in your workspace.

      +

      If you have a folder in your workspace which you want to convert into a GF Project, then you can select it from the drop-down. This folder will then appear as an Eclipse project in your workspace.

      New project wizard New project wizard

      @@ -268,7 +266,7 @@ You will probably want to ignore these directories in your version control syste

      Clone module wizard

      -

      If you want to clone an existing module into a new language, you can now do so via the Clone GF Module wizard. This is also available as a context menu option in the Project Explorer, via <Richt click> → Grammatical Framework → Compile for new language:

      +

      If you want to clone an existing module into a new language, you can now do so via the Clone GF Module wizard. This is also available as a context menu option in the Project Explorer, via <Right click> → Grammatical Framework → Compile for new language:

      Clone GF module to new language wizard

      @@ -278,7 +276,7 @@ You will probably want to ignore these directories in your version control syste

      Workbench editor layout

      -

      Use Eclipes’ own features to drag and drop your editor tabs to suit your needs.

      +

      Use Eclipse’ own features to drag and drop your editor tabs to suit your needs.

      The editor and outline view

      @@ -301,7 +299,7 @@ You will probably want to ignore these directories in your version control syste

      Builder

      For validation to work correctly, the project’s Build Automatically option should be turned on. -Each time you save a file (or some other change occurs in your project), the builder should get triggered which recompiles any GF files which have changed. If the builder does not seem to get triggered, try to run a clean via Project → Clean…

      +Each time you save a file (or some other change occurs in your project), the builder should get triggered which re-compiles any GF files which have changed. If the builder does not seem to get triggered, try to run a clean via Project → Clean…

      Code formatting

      @@ -344,7 +342,7 @@ Each time you save a file (or some other change occurs in your project), the bui

      Display Selected Console icon

      -

      If the process associated with a console window has terminated, it will be indicated in the upper-left corner as below. Such console windows can then be closed using the gray cross button:

      +

      If the process associated with a console window has terminated, it will be indicated in the upper-left corner as below. Such console windows can then be closed using the grey cross button:

      Close terminated console icon

      @@ -354,9 +352,9 @@ Each time you save a file (or some other change occurs in your project), the bui

      This view is automatically populated with a list of all the external modules referenced by the current file. Double-clicking on any item provides a quick way of opening GF files which are imported into your grammar from outside your Eclipse project, for example the GF Resource Grammar Library.

      -

      External libraries view

      +

      This view also provides a text box for searching within the current module’s scope, as shown in the image below. Clicking the small arrow on the right-hand side of the view provides options for case sensitive and/or regular-expression based search.

      -

      Future versions of this view will contain a full tree of all identifiers available in the current scope.

      +

      External libraries view

      Test Manager view

      @@ -399,6 +397,34 @@ Each time you save a file (or some other change occurs in your project), the bui +

      Common issues and fixes

      + +

      No identifiers are resolved and my log contains messages saying “File Syntax.gf does not exist.”

      + +

      In general, this means that something is wrong with your library path setting.

      + +

      GFEP attempts to compile all of your files individually with GF, which is not the usual way in which you would compile your grammar. +As a result, when looking for the RGL files, GF needs a little help via the path argument.

      + +

      The normal way to do this is to specify the Library path setting from Preferences → Grammatical Framework, setting it to something like .:present:alltenses:prelude (this is the default setting). Note that these paths are relative to the true RGL directory, which GF should already be aware of. The value of this setting is passed to GF from GFEP using the --path flag.

      + +

      The Library path setting is the same for all your GF projects. If you want finer-grain control over the path compiler option then you should use compiler pragmas in your source files, e.g.:

      + +
      --# -path=.:present:alltenses:prelude
      +
      + +

      The advantage of this method is that the information is bound to the file, so you can freely compile your modules outside of GFEP without having to specify the path as a command line option to GF. +The disadvantage is that you need to specify such a pragma in every single file (at least if you want to continue to use the GFEP).

      + +

      Other strange behaviour

      + +

      When things seem strange, the very first step is always to clean the project via Project → Clean…. +I only support the latest version of the plugin, so make sure you are up to date too.

      + +

      If problems persist, please contact me or better yet file an issue on the GitHub issue tracker (see below).

      + + +

      Evaluation & feedback

      Please try to use the plugin for developing your own GF projects and report any issues you come up against. @@ -435,39 +461,44 @@ Feedback (both negative and positive) on the following would be appreciated:

      Abstract module - abstract Foods = ... + abstract Foods = {...} Concrete module - concrete FoodsEng of Foods = ... + concrete FoodsEng of Foods = {...} Resource module - resource ResFoods = ... + resource ResFoods = {...} Interface - interface LexFoods = ... + interface LexFoods = {...} Instance - instance LexFoodsEng of LexFoods = ... + instance LexFoodsEng of LexFoods = {...} Functor - incomplete concrete FoodsI of Foods = ... + incomplete concrete FoodsI of Foods = {...} Functor instantiation - concrete FoodsEng of Foods = FoodsI with (...) ... + concrete FoodsEng of Foods = FoodsI with (...) {...} - - + +

      Build command

      + +

      This is the GF command run by the builder:

      + +
      gf --v=0 --tags --output-dir=.gfbuild [--path=PATH] FILE
      +