Skip to content

Commit 5a78718

Browse files
authored
Updated CGBE and executables
1 parent 731cb52 commit 5a78718

File tree

7 files changed

+655
-175
lines changed

7 files changed

+655
-175
lines changed

CGBEDialog.java

Lines changed: 301 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,301 @@
1+
import java.awt.*;
2+
import java.awt.event.*;
3+
import javax.swing.*;
4+
import javax.swing.event.*;
5+
6+
import javax.swing.border.Border;
7+
import java.util.EventObject;
8+
import java.util.Vector;
9+
import java.io.*;
10+
11+
/******************************
12+
* Copyright (c) 2003--2022 Kevin Lano
13+
* This program and the accompanying materials are made available under the
14+
* terms of the Eclipse Public License 2.0 which is available at
15+
* http://www.eclipse.org/legal/epl-2.0
16+
*
17+
* SPDX-License-Identifier: EPL-2.0
18+
* *****************************/
19+
/* Package: GUI */
20+
21+
public class CGBEDialog extends JDialog
22+
{ private JPanel bottom;
23+
private JButton okButton, cancelButton;
24+
private CGBEDialogPanel dialogPanel;
25+
private String defaultName;
26+
private String defaultType;
27+
private String defaultExpressions;
28+
private String defaultStatements;
29+
private String defaultLocalDecs;
30+
private String defaultDeclarations;
31+
private String defaultClasses;
32+
private String defaultEnums;
33+
34+
private String newName;
35+
private String newType;
36+
private String newExpressions;
37+
private String newStatements;
38+
private String newLocalDecs;
39+
private String newDeclarations;
40+
private String newClasses;
41+
private String newEnums;
42+
43+
44+
public CGBEDialog(JFrame owner)
45+
{ super(owner, true);
46+
setTitle("Specify CGBE grammar/rules");
47+
okButton = new JButton("Ok");
48+
cancelButton = new JButton("Cancel");
49+
ButtonHandler bHandler = new ButtonHandler();
50+
okButton.addActionListener(bHandler);
51+
cancelButton.addActionListener(bHandler);
52+
bottom = new JPanel();
53+
bottom.add(okButton);
54+
bottom.add(cancelButton);
55+
bottom.setBorder(BorderFactory.createEtchedBorder());
56+
dialogPanel = new CGBEDialogPanel();
57+
getContentPane().setLayout(new BorderLayout());
58+
getContentPane().add(bottom, BorderLayout.SOUTH);
59+
getContentPane().add(dialogPanel, BorderLayout.CENTER);
60+
CGBESizeHandler sh = new CGBESizeHandler(dialogPanel);
61+
addComponentListener(sh);
62+
}
63+
64+
public void setOldFields(String nme, String type, String params,
65+
String pre, String post, String cls,
66+
String locdecs, String enumdecs)
67+
{ defaultName = nme;
68+
defaultType = type;
69+
defaultExpressions = params;
70+
defaultStatements = pre;
71+
defaultLocalDecs = locdecs;
72+
defaultDeclarations = post;
73+
defaultClasses = cls;
74+
defaultEnums = enumdecs;
75+
dialogPanel.setOldFields(nme,type,params,pre,
76+
post,cls,locdecs,enumdecs);
77+
}
78+
79+
public void setFields(String nme, String type,
80+
String params,
81+
String pre, String post,
82+
String stereo,
83+
String locdecs,
84+
String enumdecs)
85+
{ newName = nme;
86+
newType = type;
87+
newExpressions = params;
88+
newStatements = pre;
89+
newLocalDecs = locdecs;
90+
newDeclarations = post;
91+
newClasses = stereo;
92+
newEnums = enumdecs;
93+
}
94+
95+
public String getName()
96+
{ return newName; }
97+
98+
public String getTypesRule()
99+
{ return newType; }
100+
101+
public String getExpressionsRule()
102+
{ return newExpressions; }
103+
104+
public String getStatementsRule()
105+
{ return newStatements; }
106+
107+
public String getLocalDecsRule()
108+
{ return newLocalDecs; }
109+
110+
public String getDeclarationsRule()
111+
{ return newDeclarations; }
112+
113+
public String getClassesRule()
114+
{ return newClasses; }
115+
116+
public String getEnumsRule()
117+
{ return newEnums; }
118+
119+
class CGBEDialogPanel extends JPanel
120+
{ private JLabel nameLabel;
121+
JTextField nameField; /* name */
122+
private JLabel typeLabel;
123+
JTextField typeField;
124+
private JLabel exprsLabel;
125+
JTextField exprsField;
126+
private JLabel statsLabel;
127+
JTextField statsField;
128+
129+
private JLabel declnsLabel;
130+
JTextField declnsField;
131+
132+
private JLabel classesLabel;
133+
JTextField classesField;
134+
135+
private JLabel localdecsLabel;
136+
JTextField localdecsField;
137+
138+
private JLabel enumsLabel;
139+
JTextField enumsField;
140+
141+
public CGBEDialogPanel()
142+
{ nameLabel = new JLabel("Target Antlr grammar name:");
143+
nameField = new JTextField();
144+
nameField.setToolTipText("Antlr grammar name for target language");
145+
typeLabel = new JLabel("Grammar rule for types:");
146+
typeField = new JTextField();
147+
typeField.setToolTipText("Antlr grammar rule for parsing types");
148+
149+
exprsLabel = new JLabel("Rule for expressions:");
150+
exprsField = new JTextField();
151+
152+
statsLabel = new JLabel("Rule for statements:");
153+
statsField = new JTextField();
154+
155+
declnsLabel = new JLabel("Rule for fields/operations:");
156+
declnsField = new JTextField();
157+
declnsField.setToolTipText("Grammar rule to parse data and function declarations");
158+
159+
classesLabel = new JLabel("Rule for classes/structs:");
160+
classesField = new JTextField();
161+
162+
localdecsLabel = new JLabel("Rule for local declarations:");
163+
localdecsField = new JTextField();
164+
165+
enumsLabel = new JLabel("Rule for enum declarations:");
166+
enumsField = new JTextField();
167+
168+
add(nameLabel);
169+
add(nameField);
170+
171+
add(typeLabel);
172+
add(typeField);
173+
174+
add(exprsLabel);
175+
add(exprsField);
176+
177+
add(statsLabel);
178+
add(statsField);
179+
180+
add(declnsLabel);
181+
add(declnsField);
182+
183+
add(classesLabel);
184+
add(classesField);
185+
186+
add(localdecsLabel);
187+
add(localdecsField);
188+
189+
add(enumsLabel);
190+
add(enumsField);
191+
}
192+
193+
194+
public void setOldFields(String nme, String type, String params,
195+
String pre, String post, String cls,
196+
String locdecs, String enumdecs)
197+
{ nameField.setText(nme);
198+
typeField.setText(type);
199+
exprsField.setText(params);
200+
statsField.setText(pre);
201+
declnsField.setText(post);
202+
classesField.setText(cls);
203+
localdecsField.setText(locdecs);
204+
enumsField.setText(enumdecs);
205+
}
206+
207+
public Dimension getPreferredSize()
208+
{ return new Dimension(500,300); }
209+
210+
public Dimension getMinimumSize()
211+
{ return new Dimension(500,300); }
212+
213+
public void doLayout()
214+
{
215+
nameLabel.setBounds(10,10,200,30);
216+
nameField.setBounds(210,15,270,20);
217+
typeLabel.setBounds(10,40,200,30);
218+
typeField.setBounds(210,45,270,20);
219+
exprsLabel.setBounds(10,70,200,30);
220+
exprsField.setBounds(210,75,270,20);
221+
statsLabel.setBounds(10,100,200,30);
222+
statsField.setBounds(210,105,270,20);
223+
declnsLabel.setBounds(10,130,200,30);
224+
declnsField.setBounds(210,135,270,20);
225+
classesLabel.setBounds(10,160,200,30);
226+
classesField.setBounds(210,165,270,20);
227+
localdecsLabel.setBounds(10,190,200,30);
228+
localdecsField.setBounds(210,195,270,20);
229+
enumsLabel.setBounds(10,220,200,30);
230+
enumsField.setBounds(210,225,270,20);
231+
}
232+
233+
public void resize()
234+
{
235+
int newwidth = getWidth();
236+
nameField.setSize(newwidth - 210, 20);
237+
exprsField.setSize(newwidth - 210, 20);
238+
typeField.setSize(newwidth - 210, 20);
239+
classesField.setSize(newwidth - 210, 20);
240+
declnsField.setSize(newwidth - 210, 20);
241+
statsField.setSize(newwidth - 210, 20);
242+
localdecsField.setSize(newwidth - 210, 20);
243+
enumsField.setSize(newwidth - 210, 20);
244+
}
245+
246+
public void reset()
247+
{ nameField.setText("Java");
248+
typeField.setText("typeTypeOrVoid");
249+
exprsField.setText("expression");
250+
statsField.setText("statement");
251+
declnsField.setText("classBodyDeclaration");
252+
classesField.setText("classDeclaration");
253+
localdecsField.setText("localVariableDeclaration");
254+
enumsField.setText("enumDeclaration");
255+
}
256+
} /* inner class */
257+
258+
class ButtonHandler implements ActionListener
259+
{ public void actionPerformed(ActionEvent ev)
260+
{ JButton button = (JButton) ev.getSource();
261+
String label = button.getText();
262+
if ("Ok".equals(label))
263+
{ setFields(dialogPanel.nameField.getText(),
264+
dialogPanel.typeField.getText(),
265+
dialogPanel.exprsField.getText(),
266+
dialogPanel.statsField.getText(),
267+
dialogPanel.declnsField.getText(),
268+
dialogPanel.classesField.getText(),
269+
dialogPanel.localdecsField.getText(),
270+
dialogPanel.enumsField.getText());
271+
}
272+
else
273+
{ setFields(null,null,null,
274+
null,null,null,null,null);
275+
}
276+
277+
dialogPanel.reset();
278+
setVisible(false);
279+
}
280+
}
281+
282+
class CGBESizeHandler implements ComponentListener
283+
{ CGBEDialogPanel panel;
284+
285+
CGBESizeHandler(CGBEDialogPanel p)
286+
{ panel = p; }
287+
288+
public void componentResized(ComponentEvent e)
289+
{ panel.resize(); }
290+
291+
public void componentMoved(ComponentEvent e) { }
292+
293+
public void componentShown(ComponentEvent e) { }
294+
295+
public void componentHidden(ComponentEvent e) { }
296+
}
297+
}
298+
299+
300+
301+

Compiler2.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1115,6 +1115,8 @@ public Type parseType(int st, int en, Vector entities, Vector types)
11151115
typ.equals("boolean") ||
11161116
"OclAny".equals(typ) || "OclVoid".equals(typ) ||
11171117
"OclType".equals(typ) || "OclDate".equals(typ) ||
1118+
"OclAttribute".equals(typ) ||
1119+
"OclOperation".equals(typ) ||
11181120
"OclIterator".equals(typ) ||
11191121
"OclFile".equals(typ) || "OclRandom".equals(typ) ||
11201122
"OclProcess".equals(typ) ||

0 commit comments

Comments
 (0)