Event-B XText Front-end User Guide
From Event-B
Introduction
The Event-B XText front-end provides text editors for XContexts and and XMachines which then compiled automatically to Event-B contexts and machines.
For more details about the principles of this editor, see the Event-B XText Front-end page.
Installation
Setup
- Before install the Event-B XText front-end, you need to add the XText update site (http://download.eclipse.org/modeling/tmf/xtext/updates/composite/releases/) as an additional software site.
- The Event-B XText front-end is available as a separate plug-in from the main Rodin update site (under 'Editors' category)
Release Notes
See Event-B XText Front-end Release Notes
IMPORTANT
- Currently, Event-B XText front-end ONLY supports "standard" Event-B machines and contexts.
- Since the XContexts and XMachines are compiled to the Rodin files, the corresponding Rodin contexts and machines will be OVER-WRITTEN. Any changes in the Rodin files will not be lost.
- DO NOT USE the Event-B XText Front-end if you use modelling plug-ins such as iUML-B state-machines and class-diagrams, as the additional modelling elements will be over-written.
Configuration
Event-B Explorer
By default, XContext files (extension bucx) and XMachine files (extension bumx) are not display in the Event-B Explorer. To enable this, select Customize view for Event-B Explorer and uncheck the option All files and folders.
Editing
XContext
- Any file with extension bucx will be recognised as XContext file. As a result, XContext file can be created by the standard New File wizard of Eclipse.
- The XText syntax of XContext file is as follows.
XContext returns econtext::Context:
{econtext::Context}
(comment=(ML_COMMENT | SL_COMMENT))?
'context' name=ID
('extends' extends+=[econtext::Context]+)?
('sets' sets+=XCarrierSet+)?
('constants' constants+=XConstant+)?
('axioms' axioms+=XAxiom+)?
'end'
;
XCarrierSet returns econtext::CarrierSet:
{econtext::CarrierSet}
(comment=(ML_COMMENT | SL_COMMENT))?
name=ID
;
XConstant returns econtext::Constant:
{econtext::Constant}
(comment=(ML_COMMENT | SL_COMMENT))?
name=ID
;
XAxiom returns econtext::Axiom:
{econtext::Axiom}
(comment=(ML_COMMENT | SL_COMMENT))?
name=XLABEL predicate=STRING (theorem?='theorem')?
;
terminal XLABEL returns ecore::EString:
'@' !(':')+ ':'
;