/src/main/java/io/proleap/cobol/asg/metamodel/data/screen/impl/ScreenDescriptionEntryImpl.java

https://github.com/uwol/proleap-cobol-parser · Java · 1041 lines · 752 code · 262 blank · 27 comment · 160 complexity · 6a036c3d5d0d9bd1574d5d6535867510 MD5 · raw file

  1. /*
  2. * Copyright (C) 2017, Ulrich Wolffgang <ulrich.wolffgang@proleap.io>
  3. * All rights reserved.
  4. *
  5. * This software may be modified and distributed under the terms
  6. * of the MIT license. See the LICENSE file for details.
  7. */
  8. package io.proleap.cobol.asg.metamodel.data.screen.impl;
  9. import java.util.ArrayList;
  10. import java.util.HashMap;
  11. import java.util.List;
  12. import java.util.Map;
  13. import io.proleap.cobol.CobolParser.PictureStringContext;
  14. import io.proleap.cobol.CobolParser.ScreenDescriptionAutoClauseContext;
  15. import io.proleap.cobol.CobolParser.ScreenDescriptionBackgroundColorClauseContext;
  16. import io.proleap.cobol.CobolParser.ScreenDescriptionBellClauseContext;
  17. import io.proleap.cobol.CobolParser.ScreenDescriptionBlankClauseContext;
  18. import io.proleap.cobol.CobolParser.ScreenDescriptionBlankWhenZeroClauseContext;
  19. import io.proleap.cobol.CobolParser.ScreenDescriptionBlinkClauseContext;
  20. import io.proleap.cobol.CobolParser.ScreenDescriptionColumnClauseContext;
  21. import io.proleap.cobol.CobolParser.ScreenDescriptionControlClauseContext;
  22. import io.proleap.cobol.CobolParser.ScreenDescriptionEntryContext;
  23. import io.proleap.cobol.CobolParser.ScreenDescriptionEraseClauseContext;
  24. import io.proleap.cobol.CobolParser.ScreenDescriptionForegroundColorClauseContext;
  25. import io.proleap.cobol.CobolParser.ScreenDescriptionFromClauseContext;
  26. import io.proleap.cobol.CobolParser.ScreenDescriptionFullClauseContext;
  27. import io.proleap.cobol.CobolParser.ScreenDescriptionGridClauseContext;
  28. import io.proleap.cobol.CobolParser.ScreenDescriptionJustifiedClauseContext;
  29. import io.proleap.cobol.CobolParser.ScreenDescriptionLightClauseContext;
  30. import io.proleap.cobol.CobolParser.ScreenDescriptionLineClauseContext;
  31. import io.proleap.cobol.CobolParser.ScreenDescriptionPictureClauseContext;
  32. import io.proleap.cobol.CobolParser.ScreenDescriptionPromptClauseContext;
  33. import io.proleap.cobol.CobolParser.ScreenDescriptionRequiredClauseContext;
  34. import io.proleap.cobol.CobolParser.ScreenDescriptionReverseVideoClauseContext;
  35. import io.proleap.cobol.CobolParser.ScreenDescriptionSecureClauseContext;
  36. import io.proleap.cobol.CobolParser.ScreenDescriptionSignClauseContext;
  37. import io.proleap.cobol.CobolParser.ScreenDescriptionSizeClauseContext;
  38. import io.proleap.cobol.CobolParser.ScreenDescriptionUnderlineClauseContext;
  39. import io.proleap.cobol.CobolParser.ScreenDescriptionUsageClauseContext;
  40. import io.proleap.cobol.CobolParser.ScreenDescriptionUsingClauseContext;
  41. import io.proleap.cobol.CobolParser.ScreenDescriptionValueClauseContext;
  42. import io.proleap.cobol.CobolParser.ScreenDescriptionZeroFillClauseContext;
  43. import io.proleap.cobol.asg.metamodel.IntegerLiteral;
  44. import io.proleap.cobol.asg.metamodel.Literal;
  45. import io.proleap.cobol.asg.metamodel.ProgramUnit;
  46. import io.proleap.cobol.asg.metamodel.call.Call;
  47. import io.proleap.cobol.asg.metamodel.call.ScreenDescriptionEntryCall;
  48. import io.proleap.cobol.asg.metamodel.data.screen.AutoClause;
  49. import io.proleap.cobol.asg.metamodel.data.screen.BackgroundColorClause;
  50. import io.proleap.cobol.asg.metamodel.data.screen.BellClause;
  51. import io.proleap.cobol.asg.metamodel.data.screen.BlankClause;
  52. import io.proleap.cobol.asg.metamodel.data.screen.BlankWhenZeroClause;
  53. import io.proleap.cobol.asg.metamodel.data.screen.BlinkClause;
  54. import io.proleap.cobol.asg.metamodel.data.screen.ColumnNumberClause;
  55. import io.proleap.cobol.asg.metamodel.data.screen.ControlClause;
  56. import io.proleap.cobol.asg.metamodel.data.screen.EraseClause;
  57. import io.proleap.cobol.asg.metamodel.data.screen.ForegroundColorClause;
  58. import io.proleap.cobol.asg.metamodel.data.screen.FromClause;
  59. import io.proleap.cobol.asg.metamodel.data.screen.FullClause;
  60. import io.proleap.cobol.asg.metamodel.data.screen.GridClause;
  61. import io.proleap.cobol.asg.metamodel.data.screen.JustifiedClause;
  62. import io.proleap.cobol.asg.metamodel.data.screen.LightClause;
  63. import io.proleap.cobol.asg.metamodel.data.screen.LineNumberClause;
  64. import io.proleap.cobol.asg.metamodel.data.screen.PictureClause;
  65. import io.proleap.cobol.asg.metamodel.data.screen.PromptClause;
  66. import io.proleap.cobol.asg.metamodel.data.screen.RequiredClause;
  67. import io.proleap.cobol.asg.metamodel.data.screen.ReverseVideoClause;
  68. import io.proleap.cobol.asg.metamodel.data.screen.ScreenDescriptionEntry;
  69. import io.proleap.cobol.asg.metamodel.data.screen.SecureClause;
  70. import io.proleap.cobol.asg.metamodel.data.screen.SignClause;
  71. import io.proleap.cobol.asg.metamodel.data.screen.SizeClause;
  72. import io.proleap.cobol.asg.metamodel.data.screen.UnderlineClause;
  73. import io.proleap.cobol.asg.metamodel.data.screen.UsageClause;
  74. import io.proleap.cobol.asg.metamodel.data.screen.UsingClause;
  75. import io.proleap.cobol.asg.metamodel.data.screen.ValueClause;
  76. import io.proleap.cobol.asg.metamodel.data.screen.ZeroFillClause;
  77. import io.proleap.cobol.asg.metamodel.impl.CobolDivisionElementImpl;
  78. import io.proleap.cobol.asg.metamodel.valuestmt.ValueStmt;
  79. public class ScreenDescriptionEntryImpl extends CobolDivisionElementImpl implements ScreenDescriptionEntry {
  80. protected AutoClause autoClause;
  81. protected BackgroundColorClause backgroundColorClause;
  82. protected BellClause bellClause;
  83. protected BlankClause blankClause;
  84. protected BlankWhenZeroClause blankWhenZeroClause;
  85. protected BlinkClause blinkClause;
  86. protected final List<ScreenDescriptionEntryCall> calls = new ArrayList<ScreenDescriptionEntryCall>();
  87. protected ColumnNumberClause columnNumberClause;
  88. protected ControlClause controlClause;
  89. protected ScreenDescriptionEntryContext ctx;
  90. protected EraseClause eraseClause;
  91. protected Boolean filler;
  92. protected ForegroundColorClause foregroundColorClause;
  93. protected FromClause fromClause;
  94. protected FullClause fullClause;
  95. protected GridClause gridClause;
  96. protected JustifiedClause justifiedClause;
  97. protected Integer levelNumber;
  98. protected LightClause lightClause;
  99. protected LineNumberClause lineNumberClause;
  100. protected final String name;
  101. protected ScreenDescriptionEntry parentScreenDescriptionEntry;
  102. protected PictureClause pictureClause;
  103. protected ScreenDescriptionEntry predecessor;
  104. protected PromptClause promptClause;
  105. protected RequiredClause requiredClause;
  106. protected ReverseVideoClause reverseVideoClause;
  107. protected List<ScreenDescriptionEntry> screenDescriptionEntries = new ArrayList<ScreenDescriptionEntry>();
  108. protected Map<String, ScreenDescriptionEntry> screenDescriptionEntriesSymbolTable = new HashMap<String, ScreenDescriptionEntry>();
  109. protected SecureClause secureClause;
  110. protected SignClause signClause;
  111. protected SizeClause sizeClause;
  112. protected ScreenDescriptionEntry successor;
  113. protected UnderlineClause underlineClause;
  114. protected UsageClause usageClause;
  115. protected UsingClause usingClause;
  116. protected ValueClause valueClause;
  117. protected ZeroFillClause zeroFillClause;
  118. public ScreenDescriptionEntryImpl(final String name, final ProgramUnit programUnit,
  119. final ScreenDescriptionEntryContext ctx) {
  120. super(programUnit, ctx);
  121. this.name = name;
  122. this.ctx = ctx;
  123. }
  124. @Override
  125. public AutoClause addAutoClause(final ScreenDescriptionAutoClauseContext ctx) {
  126. AutoClause result = (AutoClause) getASGElement(ctx);
  127. if (result == null) {
  128. result = new AutoClauseImpl(programUnit, ctx);
  129. // type
  130. final AutoClause.AutoClauseType type;
  131. if (ctx.AUTO() != null) {
  132. type = AutoClause.AutoClauseType.AUTO;
  133. } else if (ctx.AUTO_SKIP() != null) {
  134. type = AutoClause.AutoClauseType.AUTO_SKIP;
  135. } else {
  136. type = null;
  137. }
  138. result.setAutoClauseType(type);
  139. autoClause = result;
  140. registerASGElement(result);
  141. }
  142. return result;
  143. }
  144. @Override
  145. public BackgroundColorClause addBackgroundColorClause(final ScreenDescriptionBackgroundColorClauseContext ctx) {
  146. BackgroundColorClause result = (BackgroundColorClause) getASGElement(ctx);
  147. if (result == null) {
  148. result = new BackgroundColorClauseImpl(programUnit, ctx);
  149. final ValueStmt colorValueStmt = createValueStmt(ctx.identifier(), ctx.integerLiteral());
  150. result.setColorValueStmt(colorValueStmt);
  151. backgroundColorClause = result;
  152. registerASGElement(result);
  153. }
  154. return result;
  155. }
  156. @Override
  157. public BellClause addBellClause(final ScreenDescriptionBellClauseContext ctx) {
  158. BellClause result = (BellClause) getASGElement(ctx);
  159. if (result == null) {
  160. result = new BellClauseImpl(programUnit, ctx);
  161. // type
  162. final BellClause.BellClauseType type;
  163. if (ctx.BELL() != null) {
  164. type = BellClause.BellClauseType.BELL;
  165. } else if (ctx.BEEP() != null) {
  166. type = BellClause.BellClauseType.BEEP;
  167. } else {
  168. type = null;
  169. }
  170. result.setBellClauseType(type);
  171. bellClause = result;
  172. registerASGElement(result);
  173. }
  174. return result;
  175. }
  176. @Override
  177. public BlankClause addBlankClause(final ScreenDescriptionBlankClauseContext ctx) {
  178. BlankClause result = (BlankClause) getASGElement(ctx);
  179. if (result == null) {
  180. result = new BlankClauseImpl(programUnit, ctx);
  181. // type
  182. final BlankClause.BlankClauseType type;
  183. if (ctx.SCREEN() != null) {
  184. type = BlankClause.BlankClauseType.SCREEN;
  185. } else if (ctx.LINE() != null) {
  186. type = BlankClause.BlankClauseType.LINE;
  187. } else {
  188. type = null;
  189. }
  190. result.setBlankClauseType(type);
  191. blankClause = result;
  192. registerASGElement(result);
  193. }
  194. return result;
  195. }
  196. @Override
  197. public BlankWhenZeroClause addBlankWhenZeroClause(final ScreenDescriptionBlankWhenZeroClauseContext ctx) {
  198. BlankWhenZeroClause result = (BlankWhenZeroClause) getASGElement(ctx);
  199. if (result == null) {
  200. result = new BlankWhenZeroClauseImpl(programUnit, ctx);
  201. result.setBlankWhenZero(true);
  202. blankWhenZeroClause = result;
  203. registerASGElement(result);
  204. }
  205. return result;
  206. }
  207. @Override
  208. public BlinkClause addBlinkClause(final ScreenDescriptionBlinkClauseContext ctx) {
  209. BlinkClause result = (BlinkClause) getASGElement(ctx);
  210. if (result == null) {
  211. result = new BlinkClauseImpl(programUnit, ctx);
  212. result.setBlink(true);
  213. blinkClause = result;
  214. registerASGElement(result);
  215. }
  216. return result;
  217. }
  218. @Override
  219. public void addCall(final ScreenDescriptionEntryCall call) {
  220. calls.add(call);
  221. }
  222. @Override
  223. public ColumnNumberClause addColumnNumberClause(final ScreenDescriptionColumnClauseContext ctx) {
  224. ColumnNumberClause result = (ColumnNumberClause) getASGElement(ctx);
  225. if (result == null) {
  226. result = new ColumnNumberClauseImpl(programUnit, ctx);
  227. // type
  228. final ColumnNumberClause.ColumnNumberClauseType type;
  229. if (ctx.PLUS() != null) {
  230. type = ColumnNumberClause.ColumnNumberClauseType.PLUS;
  231. } else if (ctx.PLUSCHAR() != null) {
  232. type = ColumnNumberClause.ColumnNumberClauseType.PLUS;
  233. } else if (ctx.MINUSCHAR() != null) {
  234. type = ColumnNumberClause.ColumnNumberClauseType.MINUS;
  235. } else {
  236. type = ColumnNumberClause.ColumnNumberClauseType.EQUAL;
  237. }
  238. result.setColumnNumberClauseType(type);
  239. // line number
  240. if (ctx.integerLiteral() != null) {
  241. final IntegerLiteral lineNumber = createIntegerLiteral(ctx.integerLiteral());
  242. result.setIntegerLiteral(lineNumber);
  243. }
  244. columnNumberClause = result;
  245. registerASGElement(result);
  246. }
  247. return result;
  248. }
  249. @Override
  250. public ControlClause addControlClause(final ScreenDescriptionControlClauseContext ctx) {
  251. ControlClause result = (ControlClause) getASGElement(ctx);
  252. if (result == null) {
  253. result = new ControlClauseImpl(programUnit, ctx);
  254. if (ctx.identifier() != null) {
  255. final Call controlCall = createCall(ctx.identifier());
  256. result.setControlCall(controlCall);
  257. }
  258. controlClause = result;
  259. registerASGElement(result);
  260. }
  261. return result;
  262. }
  263. @Override
  264. public EraseClause addEraseClause(final ScreenDescriptionEraseClauseContext ctx) {
  265. EraseClause result = (EraseClause) getASGElement(ctx);
  266. if (result == null) {
  267. result = new EraseClauseImpl(programUnit, ctx);
  268. // type
  269. final EraseClause.EraseClauseType type;
  270. if (ctx.EOL() != null) {
  271. type = EraseClause.EraseClauseType.EOL;
  272. } else if (ctx.EOS() != null) {
  273. type = EraseClause.EraseClauseType.EOS;
  274. } else {
  275. type = null;
  276. }
  277. result.setEraseClauseType(type);
  278. eraseClause = result;
  279. registerASGElement(result);
  280. }
  281. return result;
  282. }
  283. @Override
  284. public ForegroundColorClause addForegroundColorClause(final ScreenDescriptionForegroundColorClauseContext ctx) {
  285. ForegroundColorClause result = (ForegroundColorClause) getASGElement(ctx);
  286. if (result == null) {
  287. result = new ForegroundColorClauseImpl(programUnit, ctx);
  288. final ValueStmt colorValueStmt = createValueStmt(ctx.identifier(), ctx.integerLiteral());
  289. result.setColorValueStmt(colorValueStmt);
  290. foregroundColorClause = result;
  291. registerASGElement(result);
  292. }
  293. return result;
  294. }
  295. @Override
  296. public FromClause addFromClause(final ScreenDescriptionFromClauseContext ctx) {
  297. FromClause result = (FromClause) getASGElement(ctx);
  298. if (result == null) {
  299. result = new FromClauseImpl(programUnit, ctx);
  300. // from
  301. final ValueStmt fromValueStmt = createValueStmt(ctx.identifier(), ctx.literal());
  302. result.setFromValueStmt(fromValueStmt);
  303. // to
  304. if (ctx.screenDescriptionToClause() != null) {
  305. result.addTo(ctx.screenDescriptionToClause());
  306. }
  307. fromClause = result;
  308. registerASGElement(result);
  309. }
  310. return result;
  311. }
  312. @Override
  313. public FullClause addFullClause(final ScreenDescriptionFullClauseContext ctx) {
  314. FullClause result = (FullClause) getASGElement(ctx);
  315. if (result == null) {
  316. result = new FullClauseImpl(programUnit, ctx);
  317. // type
  318. final FullClause.FullClauseType type;
  319. if (ctx.FULL() != null) {
  320. type = FullClause.FullClauseType.FULL;
  321. } else if (ctx.LENGTH_CHECK() != null) {
  322. type = FullClause.FullClauseType.LENGTH_CHECK;
  323. } else {
  324. type = null;
  325. }
  326. result.setFullClauseType(type);
  327. fullClause = result;
  328. registerASGElement(result);
  329. }
  330. return result;
  331. }
  332. @Override
  333. public GridClause addGridClause(final ScreenDescriptionGridClauseContext ctx) {
  334. GridClause result = (GridClause) getASGElement(ctx);
  335. if (result == null) {
  336. result = new GridClauseImpl(programUnit, ctx);
  337. // type
  338. final GridClause.GridClauseType type;
  339. if (ctx.GRID() != null) {
  340. type = GridClause.GridClauseType.GRID;
  341. } else if (ctx.LEFTLINE() != null) {
  342. type = GridClause.GridClauseType.LEFTLINE;
  343. } else if (ctx.OVERLINE() != null) {
  344. type = GridClause.GridClauseType.OVERLINE;
  345. } else {
  346. type = null;
  347. }
  348. result.setGridClauseType(type);
  349. gridClause = result;
  350. registerASGElement(result);
  351. }
  352. return result;
  353. }
  354. @Override
  355. public JustifiedClause addJustifiedClause(final ScreenDescriptionJustifiedClauseContext ctx) {
  356. JustifiedClause result = (JustifiedClause) getASGElement(ctx);
  357. if (result == null) {
  358. result = new JustifiedClauseImpl(programUnit, ctx);
  359. // type
  360. final JustifiedClause.Justified type;
  361. if (ctx.RIGHT() != null) {
  362. type = JustifiedClause.Justified.JUSTIFIED_RIGHT;
  363. } else {
  364. type = JustifiedClause.Justified.JUSTIFIED;
  365. }
  366. result.setJustified(type);
  367. justifiedClause = result;
  368. registerASGElement(result);
  369. }
  370. return result;
  371. }
  372. @Override
  373. public LightClause addLightClause(final ScreenDescriptionLightClauseContext ctx) {
  374. LightClause result = (LightClause) getASGElement(ctx);
  375. if (result == null) {
  376. result = new LightClauseImpl(programUnit, ctx);
  377. // type
  378. final LightClause.LightClauseType type;
  379. if (ctx.HIGHLIGHT() != null) {
  380. type = LightClause.LightClauseType.HIGHLIGHT;
  381. } else if (ctx.LOWLIGHT() != null) {
  382. type = LightClause.LightClauseType.LOWLIGHT;
  383. } else {
  384. type = null;
  385. }
  386. result.setLightClauseType(type);
  387. lightClause = result;
  388. registerASGElement(result);
  389. }
  390. return result;
  391. }
  392. @Override
  393. public LineNumberClause addLineNumberClause(final ScreenDescriptionLineClauseContext ctx) {
  394. LineNumberClause result = (LineNumberClause) getASGElement(ctx);
  395. if (result == null) {
  396. result = new LineNumberClauseImpl(programUnit, ctx);
  397. // type
  398. final LineNumberClause.LineNumberClauseType type;
  399. if (ctx.PLUS() != null) {
  400. type = LineNumberClause.LineNumberClauseType.PLUS;
  401. } else if (ctx.PLUSCHAR() != null) {
  402. type = LineNumberClause.LineNumberClauseType.PLUS;
  403. } else if (ctx.MINUSCHAR() != null) {
  404. type = LineNumberClause.LineNumberClauseType.MINUS;
  405. } else {
  406. type = LineNumberClause.LineNumberClauseType.EQUAL;
  407. }
  408. result.setLineNumberClauseType(type);
  409. // line number
  410. if (ctx.integerLiteral() != null) {
  411. final IntegerLiteral lineNumber = createIntegerLiteral(ctx.integerLiteral());
  412. result.setIntegerLiteral(lineNumber);
  413. }
  414. lineNumberClause = result;
  415. registerASGElement(result);
  416. }
  417. return result;
  418. }
  419. @Override
  420. public PictureClause addPictureClause(final ScreenDescriptionPictureClauseContext ctx) {
  421. PictureClause result = (PictureClause) getASGElement(ctx);
  422. if (result == null) {
  423. result = new PictureClauseImpl(programUnit, ctx);
  424. final PictureStringContext pictureString = ctx.pictureString();
  425. result.setPictureString(pictureString.getText());
  426. pictureClause = result;
  427. registerASGElement(result);
  428. }
  429. return result;
  430. }
  431. @Override
  432. public PromptClause addPromptClause(final ScreenDescriptionPromptClauseContext ctx) {
  433. PromptClause result = (PromptClause) getASGElement(ctx);
  434. if (result == null) {
  435. result = new PromptClauseImpl(programUnit, ctx);
  436. // character
  437. final ValueStmt characterValueStmt = createValueStmt(ctx.identifier(), ctx.literal());
  438. result.setCharacterValueStmt(characterValueStmt);
  439. // occurs
  440. if (ctx.screenDescriptionPromptOccursClause() != null) {
  441. result.addOccurs(ctx.screenDescriptionPromptOccursClause());
  442. }
  443. promptClause = result;
  444. registerASGElement(result);
  445. }
  446. return result;
  447. }
  448. @Override
  449. public RequiredClause addRequiredClause(final ScreenDescriptionRequiredClauseContext ctx) {
  450. RequiredClause result = (RequiredClause) getASGElement(ctx);
  451. if (result == null) {
  452. result = new RequiredClauseImpl(programUnit, ctx);
  453. // type
  454. final RequiredClause.RequiredClauseType type;
  455. if (ctx.REQUIRED() != null) {
  456. type = RequiredClause.RequiredClauseType.REQUIRED;
  457. } else if (ctx.EMPTY_CHECK() != null) {
  458. type = RequiredClause.RequiredClauseType.EMPTY_CHECK;
  459. } else {
  460. type = null;
  461. }
  462. result.setRequiredClauseType(type);
  463. requiredClause = result;
  464. registerASGElement(result);
  465. }
  466. return result;
  467. }
  468. @Override
  469. public ReverseVideoClause addReverseVideoClause(final ScreenDescriptionReverseVideoClauseContext ctx) {
  470. ReverseVideoClause result = (ReverseVideoClause) getASGElement(ctx);
  471. if (result == null) {
  472. result = new ReverseVideoClauseImpl(programUnit, ctx);
  473. result.setReverseVideo(true);
  474. reverseVideoClause = result;
  475. registerASGElement(result);
  476. }
  477. return result;
  478. }
  479. @Override
  480. public void addScreenDescriptionEntry(final ScreenDescriptionEntry screenDescriptionEntry) {
  481. final String name = screenDescriptionEntry.getName();
  482. screenDescriptionEntries.add(screenDescriptionEntry);
  483. screenDescriptionEntriesSymbolTable.put(getSymbol(name), screenDescriptionEntry);
  484. }
  485. @Override
  486. public SecureClause addSecureClause(final ScreenDescriptionSecureClauseContext ctx) {
  487. SecureClause result = (SecureClause) getASGElement(ctx);
  488. if (result == null) {
  489. result = new SecureClauseImpl(programUnit, ctx);
  490. // type
  491. final SecureClause.SecureClauseType type;
  492. if (ctx.SECURE() != null) {
  493. type = SecureClause.SecureClauseType.SECURE;
  494. } else if (ctx.NO_ECHO() != null) {
  495. type = SecureClause.SecureClauseType.NO_ECHO;
  496. } else {
  497. type = null;
  498. }
  499. result.setSecureClauseType(type);
  500. secureClause = result;
  501. registerASGElement(result);
  502. }
  503. return result;
  504. }
  505. @Override
  506. public SignClause addSignClause(final ScreenDescriptionSignClauseContext ctx) {
  507. SignClause result = (SignClause) getASGElement(ctx);
  508. if (result == null) {
  509. result = new SignClauseImpl(programUnit, ctx);
  510. // type
  511. final SignClause.SignClauseType type;
  512. if (ctx.LEADING() != null) {
  513. type = SignClause.SignClauseType.LEADING;
  514. } else if (ctx.TRAILING() != null) {
  515. type = SignClause.SignClauseType.TRAILING;
  516. } else {
  517. type = null;
  518. }
  519. result.setSignClauseType(type);
  520. signClause = result;
  521. registerASGElement(result);
  522. }
  523. return result;
  524. }
  525. @Override
  526. public SizeClause addSizeClause(final ScreenDescriptionSizeClauseContext ctx) {
  527. SizeClause result = (SizeClause) getASGElement(ctx);
  528. if (result == null) {
  529. result = new SizeClauseImpl(programUnit, ctx);
  530. final ValueStmt sizeValueStmt = createValueStmt(ctx.identifier(), ctx.integerLiteral());
  531. result.setSizeValueStmt(sizeValueStmt);
  532. sizeClause = result;
  533. registerASGElement(result);
  534. }
  535. return result;
  536. }
  537. @Override
  538. public UnderlineClause addUnderlineClause(final ScreenDescriptionUnderlineClauseContext ctx) {
  539. UnderlineClause result = (UnderlineClause) getASGElement(ctx);
  540. if (result == null) {
  541. result = new UnderlineClauseImpl(programUnit, ctx);
  542. result.setUnderline(true);
  543. underlineClause = result;
  544. registerASGElement(result);
  545. }
  546. return result;
  547. }
  548. @Override
  549. public UsageClause addUsageClause(final ScreenDescriptionUsageClauseContext ctx) {
  550. UsageClause result = (UsageClause) getASGElement(ctx);
  551. if (result == null) {
  552. result = new UsageClauseImpl(programUnit, ctx);
  553. // type
  554. final UsageClause.UsageClauseType type;
  555. if (ctx.DISPLAY() != null) {
  556. type = UsageClause.UsageClauseType.DISPLAY;
  557. } else if (ctx.DISPLAY_1() != null) {
  558. type = UsageClause.UsageClauseType.DISPLAY_1;
  559. } else {
  560. type = null;
  561. }
  562. result.setUsageClauseType(type);
  563. usageClause = result;
  564. registerASGElement(result);
  565. }
  566. return result;
  567. }
  568. @Override
  569. public UsingClause addUsingClause(final ScreenDescriptionUsingClauseContext ctx) {
  570. UsingClause result = (UsingClause) getASGElement(ctx);
  571. if (result == null) {
  572. result = new UsingClauseImpl(programUnit, ctx);
  573. if (ctx.identifier() != null) {
  574. final Call usingCall = createCall(ctx.identifier());
  575. result.setUsingCall(usingCall);
  576. }
  577. usingClause = result;
  578. registerASGElement(result);
  579. }
  580. return result;
  581. }
  582. @Override
  583. public ValueClause addValueClause(final ScreenDescriptionValueClauseContext ctx) {
  584. ValueClause result = (ValueClause) getASGElement(ctx);
  585. if (result == null) {
  586. result = new ValueClauseImpl(programUnit, ctx);
  587. if (ctx.literal() != null) {
  588. final Literal literal = createLiteral(ctx.literal());
  589. result.setLiteral(literal);
  590. }
  591. valueClause = result;
  592. registerASGElement(result);
  593. }
  594. return result;
  595. }
  596. @Override
  597. public ZeroFillClause addZeroFillClause(final ScreenDescriptionZeroFillClauseContext ctx) {
  598. ZeroFillClause result = (ZeroFillClause) getASGElement(ctx);
  599. if (result == null) {
  600. result = new ZeroFillClauseImpl(programUnit, ctx);
  601. result.setZeroFill(true);
  602. zeroFillClause = result;
  603. registerASGElement(result);
  604. }
  605. return result;
  606. }
  607. @Override
  608. public AutoClause getAutoClause() {
  609. return autoClause;
  610. }
  611. @Override
  612. public BackgroundColorClause getBackgroundColorClause() {
  613. return backgroundColorClause;
  614. }
  615. @Override
  616. public BellClause getBellClause() {
  617. return bellClause;
  618. }
  619. @Override
  620. public BlankClause getBlankClause() {
  621. return blankClause;
  622. }
  623. @Override
  624. public BlankWhenZeroClause getBlankWhenZeroClause() {
  625. return blankWhenZeroClause;
  626. }
  627. @Override
  628. public BlinkClause getBlinkClause() {
  629. return blinkClause;
  630. }
  631. @Override
  632. public List<ScreenDescriptionEntryCall> getCalls() {
  633. return calls;
  634. }
  635. @Override
  636. public ColumnNumberClause getColumnNumberClause() {
  637. return columnNumberClause;
  638. }
  639. @Override
  640. public ControlClause getControlClause() {
  641. return controlClause;
  642. }
  643. @Override
  644. public EraseClause getEraseClause() {
  645. return eraseClause;
  646. }
  647. @Override
  648. public Boolean getFiller() {
  649. return filler;
  650. }
  651. @Override
  652. public ForegroundColorClause getForegroundColorClause() {
  653. return foregroundColorClause;
  654. }
  655. @Override
  656. public FromClause getFromClause() {
  657. return fromClause;
  658. }
  659. @Override
  660. public FullClause getFullClause() {
  661. return fullClause;
  662. }
  663. @Override
  664. public GridClause getGridClause() {
  665. return gridClause;
  666. }
  667. @Override
  668. public JustifiedClause getJustifiedClause() {
  669. return justifiedClause;
  670. }
  671. @Override
  672. public Integer getLevelNumber() {
  673. return levelNumber;
  674. }
  675. @Override
  676. public LightClause getLightClause() {
  677. return lightClause;
  678. }
  679. @Override
  680. public LineNumberClause getLineNumberClause() {
  681. return lineNumberClause;
  682. }
  683. @Override
  684. public String getName() {
  685. return name;
  686. }
  687. @Override
  688. public ScreenDescriptionEntry getParentScreenDescriptionEntry() {
  689. return parentScreenDescriptionEntry;
  690. }
  691. @Override
  692. public PictureClause getPictureClause() {
  693. return pictureClause;
  694. }
  695. @Override
  696. public ScreenDescriptionEntry getPredecessor() {
  697. return predecessor;
  698. }
  699. @Override
  700. public PromptClause getPromptClause() {
  701. return promptClause;
  702. }
  703. @Override
  704. public RequiredClause getRequiredClause() {
  705. return requiredClause;
  706. }
  707. @Override
  708. public ReverseVideoClause getReverseVideoClause() {
  709. return reverseVideoClause;
  710. }
  711. @Override
  712. public List<ScreenDescriptionEntry> getScreenDescriptionEntries() {
  713. return screenDescriptionEntries;
  714. }
  715. @Override
  716. public ScreenDescriptionEntry getScreenDescriptionEntry(final String name) {
  717. return screenDescriptionEntriesSymbolTable.get(getSymbol(name));
  718. }
  719. @Override
  720. public SecureClause getSecureClause() {
  721. return secureClause;
  722. }
  723. @Override
  724. public SignClause getSignClause() {
  725. return signClause;
  726. }
  727. @Override
  728. public SizeClause getSizeClause() {
  729. return sizeClause;
  730. }
  731. @Override
  732. public ScreenDescriptionEntry getSuccessor() {
  733. return successor;
  734. }
  735. @Override
  736. public UnderlineClause getUnderlineClause() {
  737. return underlineClause;
  738. }
  739. @Override
  740. public UsageClause getUsageClause() {
  741. return usageClause;
  742. }
  743. @Override
  744. public UsingClause getUsingClause() {
  745. return usingClause;
  746. }
  747. @Override
  748. public ValueClause getValueClause() {
  749. return valueClause;
  750. }
  751. @Override
  752. public ZeroFillClause getZeroFillClause() {
  753. return zeroFillClause;
  754. }
  755. @Override
  756. public void setFiller(final Boolean filler) {
  757. this.filler = filler;
  758. }
  759. @Override
  760. public void setLevelNumber(final Integer levelNumber) {
  761. this.levelNumber = levelNumber;
  762. }
  763. @Override
  764. public void setParentScreenDescriptionEntry(final ScreenDescriptionEntry parentScreenDescriptionEntry) {
  765. this.parentScreenDescriptionEntry = parentScreenDescriptionEntry;
  766. }
  767. @Override
  768. public void setPredecessor(final ScreenDescriptionEntry predecessor) {
  769. this.predecessor = predecessor;
  770. }
  771. @Override
  772. public void setSuccessor(final ScreenDescriptionEntry successor) {
  773. this.successor = successor;
  774. }
  775. @Override
  776. public String toString() {
  777. return "name=[" + name + "]";
  778. }
  779. }