Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 27x 27x 27x 27x 27x 2x 2x 2x 2x 25x 25x 27x 1x 1x 1x 1x 24x 27x 27x 27x 27x 4x 4x 4x 4x 4x 4x 4x 27x 6x 20x 5x 5x 27x 1x | import * as Expressions from "../../2_statements/expressions"; import {StatementNode} from "../../nodes"; import {IdentifierMeta, TypedIdentifier} from "../../types/_typed_identifier"; import {CharacterType, StructureType} from "../../types/basic"; import {StatementSyntax} from "../_statement_syntax"; import {SyntaxInput, syntaxIssue} from "../_syntax_input"; export class SelectionScreen implements StatementSyntax { public runSyntax(node: StatementNode, input: SyntaxInput) { const blockNode = node.findFirstExpression(Expressions.BlockName); const blockToken = blockNode?.getFirstToken(); const blockName = blockNode?.concatTokens(); if (blockName !== undefined && blockName.length > 16) { const message = "SELECTION-SCREEN block name too long, " + blockName; input.issues.push(syntaxIssue(input, node.getFirstToken(), message)); return; } const field = node.findFirstExpression(Expressions.InlineField); if (field !== undefined && field.getFirstToken().getStr().length > 8) { const message = "SELECTION-SCREEN name too long, " + field.getFirstToken().getStr(); input.issues.push(syntaxIssue(input, field.getFirstToken(), message)); return; } const fieldName = field?.getFirstToken(); const concat = node.concatTokens().toUpperCase(); if (concat.includes("BEGIN OF TABBED BLOCK") && blockToken) { const type = new StructureType([ {name: "PROG", type: new CharacterType(40)}, {name: "DYNNR", type: new CharacterType(4)}, {name: "ACTIVETAB", type: new CharacterType(132)}, ]); input.scope.addIdentifier(new TypedIdentifier(blockToken, input.filename, type, [IdentifierMeta.SelectionScreenTab])); } else if (concat.startsWith("SELECTION-SCREEN TAB") && fieldName) { input.scope.addIdentifier(new TypedIdentifier(fieldName, input.filename, new CharacterType(83), [IdentifierMeta.SelectionScreenTab])); } else if (fieldName) { input.scope.addIdentifier(new TypedIdentifier(fieldName, input.filename, new CharacterType(83))); } } } |