CIF language modification
For each change to the CIF language, follow these steps:
Update textual syntax:
Update
cif.setext
syntax (org.eclipse.escet.cif.parser/src/org/eclipse/escet/cif/parser
).Update
cif.bnf
syntax (org.eclipse.escet.cif.documentation/images/language-reference/syntax
).Update
cif.min.js
syntax (org.eclipse.escet.releng.configuration/highlightjs-assets/escet/languages/cif.min.js
).
Update metamodel (
org.eclipse.escet.cif.metamodel
).Update Ecore diagrams (open
model/cif.aird
and unfold Design and then Entities in a Class Diagram).Update diagram images.
Remove all
*.png
files in themodel/images
folder of the CIF metamodel project.Right click the
cif.aird
file in the Package Explorer` and choose Export representations as images.Set To directory to the
model/images
folder of the CIF metamodel project.Set Image Format to PNG.
Set Image Size to Nominal.
Click OK.
Update genmodel.
Delete
model/cif.genmodel
.Right click
model/cif.ecore
and select .Select Eclipse Modeling Framework and EMF Generator Model and click Next.
The parent folder and the file name should already be filled, click Next.
Select Ecore model and click Next.
Click Load and then Next.
For Root packages, select cif, for Referenced generator models, select Position, and click Finish.
Run
model/autofix.py
to update the newly createdcif.genmodel
.
Generate metamodel code.
Remove the generated model code (contents of
src-gen
).Open
model/cif.genmodel
.Right click Cif and click Generate Model Code.
Update generated Java constructors and walker code (
org.eclipse.escet.cif.metamodel.java
).Remove the generated code (contents of
src-gen
).Right click
gen-cif-constructors.launch
and click .Right click
gen-cif-walker.launch
and click .
Update LaTeX documentation (
org.eclipse.escet.cif.metamodel
).Right click
gen-cif-docs-ecore-latex-skeleton.launch
and click .Right click
gen-cif-docs-ecore-latex-skeleton-detail.launch
and click .Update
docs/cif_ecore_doc.tex
based on the changes indocs/cif_ecore_doc_generated.tex
.Update
docs/cif_ecore_doc_details.tex
based on the changes indocs/cif_ecore_doc_details_generated.tex
.Run
docs/build.bash
to generate a new PDF.
Update parser (
org.eclipse.escet.cif.parser
).Right click
gen-cif-scanner-parser.launch
and click .Implement new AST classes if needed.
Update
CifParserHooks.java
such that it implementsCifParser.Hooks
.Verify the implementation by running
chk.bash
.
Update keywords and syntax highlighting for the text editor (
org.eclipse.escet.cif.texteditor
).Update type checker (
org.eclipse.escet.cif.typechecker
).Add new constraints to the error and problem messages (
ErrMsg.java
).Verify the implementation by running
chk.bash
.
Update example and benchmark models for changed syntax and constraints (
org.eclipse.escet.cif.examples
).Update pretty printer including set of keywords (
org.eclipse.escet.cif.prettyprinter
).Update common methods (
org.eclipse.escet.cif.common
).Update CIF to CIF transformations and other tools.
Update CIF documentation, including language reference manual with lexical syntax and grammar.
Update CIF syntax highlighting definition for LaTeX (
org.eclipse.escet.cif.misc/latex/cif_listing.sty
).