@mpeggroup/mpeg-sdl-parser 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +337 -0
- package/bun.lock +65 -0
- package/dist/index.js +11829 -0
- package/grammar/sdl.ebnf.grammar +399 -0
- package/grammar/sdl.lezer.grammar +629 -0
- package/index.ts +83 -0
- package/package.json +61 -0
- package/src/analyser/checks/check-array-definition.ts +90 -0
- package/src/analyser/checks/check-array-element-access.ts +31 -0
- package/src/analyser/checks/check-class-declaration.ts +417 -0
- package/src/analyser/checks/check-computed-array-definition.ts +44 -0
- package/src/analyser/checks/check-computed-elementary-type-definition.ts +45 -0
- package/src/analyser/checks/check-elementary-type-definition.ts +167 -0
- package/src/analyser/checks/check-expression-binary.ts +242 -0
- package/src/analyser/checks/check-expression-lengthof.ts +34 -0
- package/src/analyser/checks/check-expression-unary.ts +166 -0
- package/src/analyser/checks/check-identifier.ts +71 -0
- package/src/analyser/checks/check-if-statement.ts +164 -0
- package/src/analyser/checks/check-map-declaration.ts +180 -0
- package/src/analyser/checks/check-map-definition.ts +118 -0
- package/src/analyser/checks/check-number-literal-float.ts +28 -0
- package/src/analyser/checks/check-parameter-list.ts +42 -0
- package/src/analyser/checks/check-specification.ts +53 -0
- package/src/analyser/checks/check-switch-statement.ts +206 -0
- package/src/analyser/checks/check.ts +20 -0
- package/src/analyser/create-sdl-analyser.ts +85 -0
- package/src/analyser/node-handler/abstract-analysis-node-handler.ts +626 -0
- package/src/analyser/node-handler/build-symbol-table-node-handler.ts +649 -0
- package/src/analyser/node-handler/specific-check-node-handler.ts +46 -0
- package/src/analyser/node-handler/validate-scope-node-handler.ts +290 -0
- package/src/analyser/node-handler/validate-type-node-handler.ts +497 -0
- package/src/analyser/sdl-analyser.ts +119 -0
- package/src/analyser/symbol-table.ts +388 -0
- package/src/analyser/util/symbol-table-utils.ts +458 -0
- package/src/analyser/util/type-utils.ts +238 -0
- package/src/ast/build/consume/consume-abstract-node.ts +199 -0
- package/src/ast/build/consume/consume-ast-node.ts +400 -0
- package/src/ast/build/consume/consume-primitive.ts +59 -0
- package/src/ast/build/consume/consume-trivia.ts +96 -0
- package/src/ast/build/consume/consume-white-space-and-missing-errors.ts +27 -0
- package/src/ast/build/node/build-aggregate-output-value.ts +57 -0
- package/src/ast/build/node/build-aligned-modifier.ts +99 -0
- package/src/ast/build/node/build-array-definition.ts +131 -0
- package/src/ast/build/node/build-array-element-access.ts +45 -0
- package/src/ast/build/node/build-base64-string-literal.ts +41 -0
- package/src/ast/build/node/build-binary-expression.ts +113 -0
- package/src/ast/build/node/build-binary-literal.ts +37 -0
- package/src/ast/build/node/build-bit-modifier.ts +86 -0
- package/src/ast/build/node/build-case-clause.ts +101 -0
- package/src/ast/build/node/build-class-declaration.ts +124 -0
- package/src/ast/build/node/build-class-definition.ts +56 -0
- package/src/ast/build/node/build-class-id-range.ts +32 -0
- package/src/ast/build/node/build-class-id.ts +19 -0
- package/src/ast/build/node/build-class-member-access.ts +27 -0
- package/src/ast/build/node/build-compound-statement.ts +33 -0
- package/src/ast/build/node/build-computed-array-definition.ts +53 -0
- package/src/ast/build/node/build-computed-elementary-type-definition.ts +100 -0
- package/src/ast/build/node/build-decimal-literal.ts +15 -0
- package/src/ast/build/node/build-default-clause.ts +76 -0
- package/src/ast/build/node/build-do-statement.ts +71 -0
- package/src/ast/build/node/build-elementary-type-definition.ts +164 -0
- package/src/ast/build/node/build-elementary-type-output-value.ts +25 -0
- package/src/ast/build/node/build-elementary-type.ts +36 -0
- package/src/ast/build/node/build-expandable-modifier.ts +68 -0
- package/src/ast/build/node/build-explicit-array-dimension.ts +37 -0
- package/src/ast/build/node/build-expression-statement.ts +31 -0
- package/src/ast/build/node/build-extended-class-id-range.ts +27 -0
- package/src/ast/build/node/build-extends-modifier.ts +41 -0
- package/src/ast/build/node/build-floating-point-literal.ts +15 -0
- package/src/ast/build/node/build-for-statement.ts +117 -0
- package/src/ast/build/node/build-hexadecimal-literal.ts +38 -0
- package/src/ast/build/node/build-identifier.ts +8 -0
- package/src/ast/build/node/build-if-statement.ts +82 -0
- package/src/ast/build/node/build-implicit-array-dimension.ts +78 -0
- package/src/ast/build/node/build-integer-literal.ts +15 -0
- package/src/ast/build/node/build-length-attribute.ts +48 -0
- package/src/ast/build/node/build-lengthof-expression.ts +45 -0
- package/src/ast/build/node/build-map-declaration.ts +110 -0
- package/src/ast/build/node/build-map-definition.ts +103 -0
- package/src/ast/build/node/build-map-entry.ts +33 -0
- package/src/ast/build/node/build-missing-error.ts +10 -0
- package/src/ast/build/node/build-multiple-character-literal.ts +65 -0
- package/src/ast/build/node/build-parameter-list.ts +50 -0
- package/src/ast/build/node/build-parameter-value-list.ts +54 -0
- package/src/ast/build/node/build-parameter.ts +47 -0
- package/src/ast/build/node/build-partial-array-dimension.ts +55 -0
- package/src/ast/build/node/build-specification.ts +24 -0
- package/src/ast/build/node/build-string-definition.ts +106 -0
- package/src/ast/build/node/build-switch-statement.ts +84 -0
- package/src/ast/build/node/build-token.ts +26 -0
- package/src/ast/build/node/build-unary-expression.ts +109 -0
- package/src/ast/build/node/build-unexpected-error.ts +14 -0
- package/src/ast/build/node/build-utf-string-literal.ts +110 -0
- package/src/ast/build/node/build-while-statement.ts +55 -0
- package/src/ast/build/util/array-dimension-kind-by-token-type-id-map.ts +167 -0
- package/src/ast/build/util/binary-operator-kind-by-token-type-id-map.ts +152 -0
- package/src/ast/build/util/build-context.ts +36 -0
- package/src/ast/build/util/class-id-kind-by-token-type-id-map.ts +160 -0
- package/src/ast/build/util/expression-kind-by-token-type-id-map.ts +168 -0
- package/src/ast/build/util/fetch-node.ts +433 -0
- package/src/ast/build/util/node-kind-by-token-type-id-map.ts +202 -0
- package/src/ast/build/util/statement-kind-by-token-type-id-map.ts +210 -0
- package/src/ast/build/util/string-literal-kind-by-token-type-id-map.ts +162 -0
- package/src/ast/build/util/token-kind-by-token-type-id-map.ts +337 -0
- package/src/ast/build-ast.ts +114 -0
- package/src/ast/node/abstract-array-definition.ts +17 -0
- package/src/ast/node/abstract-array-dimension.ts +20 -0
- package/src/ast/node/abstract-class-id.ts +13 -0
- package/src/ast/node/abstract-composite-node.ts +58 -0
- package/src/ast/node/abstract-elementary-type-definition.ts +29 -0
- package/src/ast/node/abstract-expression.ts +13 -0
- package/src/ast/node/abstract-leaf-node.ts +10 -0
- package/src/ast/node/abstract-node.ts +16 -0
- package/src/ast/node/abstract-statement.ts +13 -0
- package/src/ast/node/aggregate-output-value.ts +28 -0
- package/src/ast/node/aligned-modifier.ts +21 -0
- package/src/ast/node/array-definition.ts +44 -0
- package/src/ast/node/array-element-access.ts +24 -0
- package/src/ast/node/binary-expression.ts +28 -0
- package/src/ast/node/bit-modifier.ts +24 -0
- package/src/ast/node/case-clause.ts +30 -0
- package/src/ast/node/class-declaration.ts +39 -0
- package/src/ast/node/class-definition.ts +23 -0
- package/src/ast/node/class-id-range.ts +17 -0
- package/src/ast/node/class-id.ts +14 -0
- package/src/ast/node/class-member-access.ts +19 -0
- package/src/ast/node/compound-statement.ts +19 -0
- package/src/ast/node/computed-array-definition.ts +26 -0
- package/src/ast/node/computed-elementary-type-definition.ts +34 -0
- package/src/ast/node/default-clause.ts +26 -0
- package/src/ast/node/do-statement.ts +28 -0
- package/src/ast/node/elementary-type-definition.ts +49 -0
- package/src/ast/node/elementary-type-output-value.ts +19 -0
- package/src/ast/node/elementary-type.ts +18 -0
- package/src/ast/node/enum/array-dimension-kind.ts +11 -0
- package/src/ast/node/enum/binary-operator-kind.ts +41 -0
- package/src/ast/node/enum/class-id-kind.ts +12 -0
- package/src/ast/node/enum/elementary-type-kind.ts +13 -0
- package/src/ast/node/enum/expression-kind.ts +11 -0
- package/src/ast/node/enum/node-kind.ts +57 -0
- package/src/ast/node/enum/number-literal-kind.ts +17 -0
- package/src/ast/node/enum/statement-kind.ts +37 -0
- package/src/ast/node/enum/string-literal-kind.ts +13 -0
- package/src/ast/node/enum/string-variable-kind.ts +25 -0
- package/src/ast/node/enum/token-kind.ts +87 -0
- package/src/ast/node/expandable-modifier.ts +21 -0
- package/src/ast/node/explicit-array-dimension.ts +26 -0
- package/src/ast/node/expression-statement.ts +23 -0
- package/src/ast/node/extended-class-id-range.ts +20 -0
- package/src/ast/node/extends-modifier.ts +21 -0
- package/src/ast/node/for-statement.ts +29 -0
- package/src/ast/node/identifier.ts +12 -0
- package/src/ast/node/if-statement.ts +28 -0
- package/src/ast/node/implicit-array-dimension.ts +34 -0
- package/src/ast/node/length-attribute.ts +24 -0
- package/src/ast/node/length-of-expression.ts +21 -0
- package/src/ast/node/map-declaration.ts +34 -0
- package/src/ast/node/map-definition.ts +27 -0
- package/src/ast/node/map-entry.ts +18 -0
- package/src/ast/node/missing-error.ts +9 -0
- package/src/ast/node/number-literal.ts +18 -0
- package/src/ast/node/parameter-list.ts +25 -0
- package/src/ast/node/parameter-value-list.ts +29 -0
- package/src/ast/node/parameter.ts +20 -0
- package/src/ast/node/partial-array-dimension.ts +28 -0
- package/src/ast/node/specification.ts +21 -0
- package/src/ast/node/string-definition.ts +28 -0
- package/src/ast/node/string-literal.ts +21 -0
- package/src/ast/node/switch-statement.ts +32 -0
- package/src/ast/node/token.ts +20 -0
- package/src/ast/node/trivia.ts +13 -0
- package/src/ast/node/unary-expression.ts +31 -0
- package/src/ast/node/unexpected-error.ts +12 -0
- package/src/ast/node/while-statement.ts +26 -0
- package/src/ast/util/types.ts +138 -0
- package/src/ast/visitor/node-handler.ts +15 -0
- package/src/ast/visitor/node-visitor.ts +13 -0
- package/src/ast/visitor/traversing-visitor.ts +69 -0
- package/src/completion/completion-rules.ts +447 -0
- package/src/completion/get-potential-syntactic-tokens.ts +54 -0
- package/src/completion/get-potential-token-type-ids.ts +116 -0
- package/src/completion/hierarchical-map.ts +43 -0
- package/src/completion/rules/abstract-types.ts +174 -0
- package/src/completion/rules/aggregate-output-value-rules.ts +48 -0
- package/src/completion/rules/aligned-modifier-rules.ts +45 -0
- package/src/completion/rules/array-definition-rules.ts +87 -0
- package/src/completion/rules/array-element-access-rules.ts +22 -0
- package/src/completion/rules/assignment-expression-rules.ts +19 -0
- package/src/completion/rules/binary-expression-rules.ts +23 -0
- package/src/completion/rules/bit-modifier-rules.ts +25 -0
- package/src/completion/rules/case-clause-rules.ts +39 -0
- package/src/completion/rules/class-declaration-rules.ts +81 -0
- package/src/completion/rules/class-definition-rules.ts +28 -0
- package/src/completion/rules/class-id-range-rules.ts +17 -0
- package/src/completion/rules/class-id-rules.ts +9 -0
- package/src/completion/rules/class-member-access-rules.ts +7 -0
- package/src/completion/rules/compound-statement-rules.ts +25 -0
- package/src/completion/rules/computed-array-definition-rules.ts +25 -0
- package/src/completion/rules/computed-elementary-type-rules.ts +44 -0
- package/src/completion/rules/default-clause-rules.ts +23 -0
- package/src/completion/rules/do-statement-rules.ts +38 -0
- package/src/completion/rules/elementary-type-definition-rules.ts +62 -0
- package/src/completion/rules/elementary-type-output-value-rules.ts +13 -0
- package/src/completion/rules/elementary-type-rules.ts +18 -0
- package/src/completion/rules/expandable-modifier-rules.ts +21 -0
- package/src/completion/rules/explicit-array-dimension-rules.ts +22 -0
- package/src/completion/rules/expression-statement-rules.ts +22 -0
- package/src/completion/rules/extended-class-id-range-rules.ts +17 -0
- package/src/completion/rules/extends-modifier-rules.ts +17 -0
- package/src/completion/rules/for-statement-rules.ts +51 -0
- package/src/completion/rules/if-statement-rules.ts +42 -0
- package/src/completion/rules/implicit-array-dimension-rules.ts +21 -0
- package/src/completion/rules/length-attribute-rules.ts +19 -0
- package/src/completion/rules/lengthof-expression-rules.ts +23 -0
- package/src/completion/rules/map-declaration-rules.ts +45 -0
- package/src/completion/rules/map-definition-rules.ts +46 -0
- package/src/completion/rules/map-entry-rules.ts +17 -0
- package/src/completion/rules/parameter-list-rules.ts +21 -0
- package/src/completion/rules/parameter-rules.ts +17 -0
- package/src/completion/rules/parameter-value-list-rules.ts +27 -0
- package/src/completion/rules/partial-array-dimension-rules.ts +33 -0
- package/src/completion/rules/specification-rules.ts +37 -0
- package/src/completion/rules/string-definition-rules.ts +103 -0
- package/src/completion/rules/switch-statement-rules.ts +50 -0
- package/src/completion/rules/unary-expression-rules.ts +41 -0
- package/src/completion/rules/utf-string-literal-rules.ts +17 -0
- package/src/completion/rules/while-statement-rules.ts +38 -0
- package/src/lezer/context-tracker.ts +45 -0
- package/src/lezer/create-sdl-parser.ts +88 -0
- package/src/lezer/create-syntax-error-from-text-and-cursor.ts +110 -0
- package/src/lezer/create-syntax-error-from-text-and-position.ts +36 -0
- package/src/lezer/parser.terms.ts +129 -0
- package/src/lezer/parser.ts +63 -0
- package/src/lezer/props/fold-node-prop-source.ts +27 -0
- package/src/lezer/props/primitive-node-prop-source.ts +19 -0
- package/src/lezer/props/style-tags-node-prop-source.ts +188 -0
- package/src/lezer/props/syntactic-token-node-prop-source.ts +298 -0
- package/src/lezer/sdl-string-input.ts +46 -0
- package/src/location.ts +13 -0
- package/src/parse-helper.ts +93 -0
- package/src/prettier/prettier-plugin-sdl.ts +89 -0
- package/src/prettier/print-abstract-array-dimension.ts +84 -0
- package/src/prettier/print-abstract-class-id.ts +53 -0
- package/src/prettier/print-abstract-expression.ts +168 -0
- package/src/prettier/print-abstract-node.ts +224 -0
- package/src/prettier/print-abstract-statement.ts +124 -0
- package/src/prettier/print-aggregate-output-value.ts +35 -0
- package/src/prettier/print-aligned-modifier.ts +50 -0
- package/src/prettier/print-array-definition.ts +95 -0
- package/src/prettier/print-array-element-access.ts +14 -0
- package/src/prettier/print-bit-modifier.ts +48 -0
- package/src/prettier/print-case-clause.ts +58 -0
- package/src/prettier/print-class-declaration.ts +99 -0
- package/src/prettier/print-class-definition.ts +44 -0
- package/src/prettier/print-class-member-access.ts +13 -0
- package/src/prettier/print-computed-array-definition.ts +33 -0
- package/src/prettier/print-computed-elementary-type-definition.ts +60 -0
- package/src/prettier/print-default-clause.ts +39 -0
- package/src/prettier/print-do-statement.ts +31 -0
- package/src/prettier/print-elementary-type-definition.ts +108 -0
- package/src/prettier/print-elementary-type-output-value.ts +13 -0
- package/src/prettier/print-elementary-type.ts +28 -0
- package/src/prettier/print-expandable-modifier.ts +41 -0
- package/src/prettier/print-extends-modifier.ts +29 -0
- package/src/prettier/print-for-statement.ts +64 -0
- package/src/prettier/print-identifier.ts +10 -0
- package/src/prettier/print-if-statement.ts +76 -0
- package/src/prettier/print-length-attribute.ts +14 -0
- package/src/prettier/print-map-declaration.ts +75 -0
- package/src/prettier/print-map-definition.ts +67 -0
- package/src/prettier/print-map-entry.ts +22 -0
- package/src/prettier/print-number-literal.ts +84 -0
- package/src/prettier/print-parameter-list.ts +20 -0
- package/src/prettier/print-parameter-value-list.ts +20 -0
- package/src/prettier/print-parameter.ts +34 -0
- package/src/prettier/print-specification.ts +51 -0
- package/src/prettier/print-string-definition.ts +114 -0
- package/src/prettier/print-string-literal.ts +57 -0
- package/src/prettier/print-switch-statement.ts +46 -0
- package/src/prettier/print-token.ts +7 -0
- package/src/prettier/print-unexpected-error.ts +10 -0
- package/src/prettier/print-while-statement.ts +26 -0
- package/src/prettier/util/print-utils.ts +607 -0
- package/src/prettier/util/types.ts +40 -0
- package/src/scanner-error.ts +65 -0
- package/src/util/location-utils.ts +16 -0
- package/src/util/logger.ts +165 -0
- package/tests/analyser/create-sdl-analyser.test.ts +54 -0
- package/tests/analyser/get-sdl-analyser-test-scenarios.ts +80 -0
- package/tests/analyser/sdl-analyser-scenarios.test.ts +67 -0
- package/tests/analyser/semantic-error-scenarios.test.ts +40 -0
- package/tests/analyser/symbol-table.test.ts +188 -0
- package/tests/analyser/test-cases/array_definition.txt +50 -0
- package/tests/analyser/test-cases/class_declaration.txt +112 -0
- package/tests/analyser/test-cases/class_definition.txt +60 -0
- package/tests/analyser/test-cases/compound_statement.txt +63 -0
- package/tests/analyser/test-cases/computed_array_definition.txt +12 -0
- package/tests/analyser/test-cases/computed_elementary_type_definition.txt +39 -0
- package/tests/analyser/test-cases/do_statement.txt +16 -0
- package/tests/analyser/test-cases/elementary_type_definition.txt +58 -0
- package/tests/analyser/test-cases/expression.txt +159 -0
- package/tests/analyser/test-cases/for_statement.txt +55 -0
- package/tests/analyser/test-cases/if_statement.txt +57 -0
- package/tests/analyser/test-cases/map_declaration.txt +89 -0
- package/tests/analyser/test-cases/map_definition.txt +35 -0
- package/tests/analyser/test-cases/number_literal.txt +31 -0
- package/tests/analyser/test-cases/parameter_list.txt +16 -0
- package/tests/analyser/test-cases/scopes.txt +239 -0
- package/tests/analyser/test-cases/specification.txt +28 -0
- package/tests/analyser/test-cases/string_definition.txt +40 -0
- package/tests/analyser/test-cases/switch_statement.txt +96 -0
- package/tests/analyser/test-cases/while_statement.txt +16 -0
- package/tests/analyser/util/symbol-table-utils.test.ts +65 -0
- package/tests/ast/__snapshots__/build-ast.test.ts.snap +38897 -0
- package/tests/ast/build-ast.test.ts +463 -0
- package/tests/ast/visitor/traversing-visitor.test.ts +36 -0
- package/tests/completion/get-potential-syntactic-tokens.test.ts +89 -0
- package/tests/completion/get-potential-token-type-ids.test.ts +76 -0
- package/tests/completion/test-potential-syntactic-tokens-scenario.ts +24 -0
- package/tests/completion/test-potential-token-type-ids-scenario.ts +33 -0
- package/tests/fixtures/history-recording-node-handler.ts +232 -0
- package/tests/lezer/create-parse-error-from-text-and-position.test.ts +129 -0
- package/tests/lezer/create-sdl-parser.test.ts +15 -0
- package/tests/lezer/sdl-parser-scenarios.test.ts +24 -0
- package/tests/lezer/sdl-string-input.test.ts +12 -0
- package/tests/lezer/syntax-error-scenarios.test.ts +114 -0
- package/tests/lezer/test-cases/array_definition.txt +109 -0
- package/tests/lezer/test-cases/class_declaration.txt +141 -0
- package/tests/lezer/test-cases/class_definition.txt +89 -0
- package/tests/lezer/test-cases/comment.txt +335 -0
- package/tests/lezer/test-cases/compound_statement.txt +109 -0
- package/tests/lezer/test-cases/computed_array_definition.txt +33 -0
- package/tests/lezer/test-cases/computed_elementary_type_definition.txt +59 -0
- package/tests/lezer/test-cases/do_statement.txt +48 -0
- package/tests/lezer/test-cases/elementary_type_definition.txt +158 -0
- package/tests/lezer/test-cases/expression.txt +1203 -0
- package/tests/lezer/test-cases/for_statement.txt +183 -0
- package/tests/lezer/test-cases/if_statement.txt +183 -0
- package/tests/lezer/test-cases/invalid.txt +97 -0
- package/tests/lezer/test-cases/map_declaration.txt +152 -0
- package/tests/lezer/test-cases/map_definition.txt +59 -0
- package/tests/lezer/test-cases/number_literal.txt +273 -0
- package/tests/lezer/test-cases/specification.txt +38 -0
- package/tests/lezer/test-cases/string_definition.txt +263 -0
- package/tests/lezer/test-cases/string_literal.txt +303 -0
- package/tests/lezer/test-cases/switch_statement.txt +407 -0
- package/tests/lezer/test-cases/while_statement.txt +45 -0
- package/tests/parse-helper.test.ts +361 -0
- package/tests/prettier/__snapshots__/prettier-plugin-sdl.test.ts.snap +127 -0
- package/tests/prettier/prettier-plugin-sdl.test.ts +58 -0
- package/tests/prettier/print-array.test.ts +29 -0
- package/tests/prettier/print-class.test.ts +15 -0
- package/tests/prettier/print-do.test.ts +25 -0
- package/tests/prettier/print-elementary-type.test.ts +62 -0
- package/tests/prettier/print-error.test.ts +40 -0
- package/tests/prettier/print-expression.test.ts +17 -0
- package/tests/prettier/print-for.test.ts +23 -0
- package/tests/prettier/print-if.test.ts +71 -0
- package/tests/prettier/print-number-literal.test.ts +28 -0
- package/tests/prettier/print-specification.test.ts +54 -0
- package/tests/prettier/print-string.test.ts +36 -0
- package/tests/prettier/print-switch.test.ts +69 -0
- package/tests/prettier/print-while.test.ts +23 -0
- package/tests/prettier/test-prettier-scenario.ts +41 -0
- package/tests/prettier/util/print-utils.test.ts +665 -0
- package/tests/prettier/util/types.test.ts +38 -0
- package/tests/sample-specifications/invalid.sdl +24 -0
- package/tests/sample-specifications/prettified-invalid.sdl +28 -0
- package/tests/sample-specifications/prettified-various-elements-narrow.sdl +97 -0
- package/tests/sample-specifications/prettified-various-elements.sdl +90 -0
- package/tests/sample-specifications/sample.sdl +24 -0
- package/tests/sample-specifications/various-elements.sdl +88 -0
- package/tests/util/logger.test.ts +36 -0
- package/tsconfig.json +29 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Simple
|
|
2
|
+
|
|
3
|
+
class A {int(3) a[3];}
|
|
4
|
+
|
|
5
|
+
==>
|
|
6
|
+
|
|
7
|
+
[GLOBAL]:
|
|
8
|
+
A CLASS
|
|
9
|
+
[CLASS] A:
|
|
10
|
+
members:
|
|
11
|
+
a VARIABLE INTEGER []
|
|
12
|
+
a VARIABLE INTEGER []
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
# Reserved multiple dimensions with mixed explicit and partial dimensions
|
|
16
|
+
|
|
17
|
+
class MyClass{}
|
|
18
|
+
class A {reserved MyClass a[3][[2]];}
|
|
19
|
+
|
|
20
|
+
==>
|
|
21
|
+
|
|
22
|
+
[GLOBAL]:
|
|
23
|
+
MyClass CLASS
|
|
24
|
+
A CLASS
|
|
25
|
+
[CLASS] MyClass:
|
|
26
|
+
[CLASS] A:
|
|
27
|
+
members:
|
|
28
|
+
a VARIABLE (class: MyClass) []
|
|
29
|
+
a VARIABLE (class: MyClass) []
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
# Implicit dimension
|
|
33
|
+
|
|
34
|
+
class MyClass{}
|
|
35
|
+
class A {MyClass a[1..3];}
|
|
36
|
+
|
|
37
|
+
==>
|
|
38
|
+
|
|
39
|
+
[GLOBAL]:
|
|
40
|
+
MyClass CLASS
|
|
41
|
+
A CLASS
|
|
42
|
+
[CLASS] MyClass:
|
|
43
|
+
[CLASS] A:
|
|
44
|
+
members:
|
|
45
|
+
a VARIABLE (class: MyClass) []
|
|
46
|
+
a VARIABLE (class: MyClass) []
|
|
47
|
+
|
|
48
|
+
errors:
|
|
49
|
+
|
|
50
|
+
SEMANTIC ERROR: Implicit arrays can only contain classes which have a classId defined.
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# Simple class declaration
|
|
2
|
+
|
|
3
|
+
class A{}
|
|
4
|
+
|
|
5
|
+
==>
|
|
6
|
+
|
|
7
|
+
[GLOBAL]:
|
|
8
|
+
A CLASS
|
|
9
|
+
[CLASS] A:
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
# Single parameter with single id
|
|
13
|
+
|
|
14
|
+
class A(int a) {}
|
|
15
|
+
|
|
16
|
+
==>
|
|
17
|
+
|
|
18
|
+
[GLOBAL]:
|
|
19
|
+
A CLASS
|
|
20
|
+
[CLASS] A:
|
|
21
|
+
members:
|
|
22
|
+
a VARIABLE INTEGER
|
|
23
|
+
a VARIABLE INTEGER
|
|
24
|
+
|
|
25
|
+
errors:
|
|
26
|
+
|
|
27
|
+
SEMANTIC ERROR: A parameter in a parameter list must be referenced within the class declaration.
|
|
28
|
+
|
|
29
|
+
# All features
|
|
30
|
+
|
|
31
|
+
class C{}
|
|
32
|
+
aligned(8) expandable(20) abstract class A (int a, B b) extends C(1, d) : bit(3) id=1..2,5 {}
|
|
33
|
+
|
|
34
|
+
==>
|
|
35
|
+
|
|
36
|
+
[GLOBAL]:
|
|
37
|
+
C CLASS
|
|
38
|
+
A CLASS
|
|
39
|
+
[CLASS] C:
|
|
40
|
+
[CLASS] A:
|
|
41
|
+
members:
|
|
42
|
+
sizeOfInstance VARIABLE INTEGER COMPUTED CONST
|
|
43
|
+
a VARIABLE INTEGER
|
|
44
|
+
b VARIABLE (class: B)
|
|
45
|
+
sizeOfInstance VARIABLE INTEGER COMPUTED CONST
|
|
46
|
+
a VARIABLE INTEGER
|
|
47
|
+
b VARIABLE (class: B)
|
|
48
|
+
|
|
49
|
+
errors:
|
|
50
|
+
|
|
51
|
+
SEMANTIC ERROR: Identifier: d is not declared
|
|
52
|
+
SEMANTIC ERROR: Because the class is expandable, it has an encoded sizeOfInstance value therefore it cannot be abstract.
|
|
53
|
+
SEMANTIC ERROR: A parameter in a parameter list must be referenced within the class declaration.
|
|
54
|
+
SEMANTIC ERROR: A parameter in a parameter list must be referenced within the class declaration.
|
|
55
|
+
SEMANTIC ERROR: The alignment of a class which extends another must not differ from the alignment of the base class.
|
|
56
|
+
|
|
57
|
+
# maxClassSize must be positive
|
|
58
|
+
|
|
59
|
+
expandable(0) class A {}
|
|
60
|
+
|
|
61
|
+
==>
|
|
62
|
+
|
|
63
|
+
[GLOBAL]:
|
|
64
|
+
A CLASS
|
|
65
|
+
[CLASS] A:
|
|
66
|
+
members:
|
|
67
|
+
sizeOfInstance VARIABLE INTEGER COMPUTED CONST
|
|
68
|
+
sizeOfInstance VARIABLE INTEGER COMPUTED CONST
|
|
69
|
+
|
|
70
|
+
errors:
|
|
71
|
+
|
|
72
|
+
SEMANTIC ERROR: maxClassSize must be a positive integer
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
# Expandable class cannot be abstract
|
|
76
|
+
|
|
77
|
+
expandable(20) abstract class A {}
|
|
78
|
+
|
|
79
|
+
==>
|
|
80
|
+
|
|
81
|
+
[GLOBAL]:
|
|
82
|
+
A CLASS
|
|
83
|
+
[CLASS] A:
|
|
84
|
+
members:
|
|
85
|
+
sizeOfInstance VARIABLE INTEGER COMPUTED CONST
|
|
86
|
+
sizeOfInstance VARIABLE INTEGER COMPUTED CONST
|
|
87
|
+
|
|
88
|
+
errors:
|
|
89
|
+
|
|
90
|
+
SEMANTIC ERROR: Because the class is expandable, it has an encoded sizeOfInstance value therefore it cannot be abstract.
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
# Unreferenced parameter
|
|
94
|
+
|
|
95
|
+
class A(int a, int b) {int(8) c = a;}
|
|
96
|
+
|
|
97
|
+
==>
|
|
98
|
+
|
|
99
|
+
[GLOBAL]:
|
|
100
|
+
A CLASS
|
|
101
|
+
[CLASS] A:
|
|
102
|
+
members:
|
|
103
|
+
a VARIABLE INTEGER
|
|
104
|
+
b VARIABLE INTEGER
|
|
105
|
+
c VARIABLE INTEGER
|
|
106
|
+
a VARIABLE INTEGER
|
|
107
|
+
b VARIABLE INTEGER
|
|
108
|
+
c VARIABLE INTEGER
|
|
109
|
+
|
|
110
|
+
errors:
|
|
111
|
+
|
|
112
|
+
SEMANTIC ERROR: A parameter in a parameter list must be referenced within the class declaration.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Simple
|
|
2
|
+
|
|
3
|
+
class ClassA {}
|
|
4
|
+
class A {ClassA a;}
|
|
5
|
+
|
|
6
|
+
==>
|
|
7
|
+
|
|
8
|
+
[GLOBAL]:
|
|
9
|
+
ClassA CLASS
|
|
10
|
+
A CLASS
|
|
11
|
+
[CLASS] ClassA:
|
|
12
|
+
[CLASS] A:
|
|
13
|
+
members:
|
|
14
|
+
a VARIABLE (class: ClassA)
|
|
15
|
+
a VARIABLE (class: ClassA)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
# Legacy and one parameter value
|
|
19
|
+
|
|
20
|
+
class ClassB(int a) {}
|
|
21
|
+
class A {legacy ClassB b(3);}
|
|
22
|
+
|
|
23
|
+
==>
|
|
24
|
+
|
|
25
|
+
[GLOBAL]:
|
|
26
|
+
ClassB CLASS
|
|
27
|
+
A CLASS
|
|
28
|
+
[CLASS] ClassB:
|
|
29
|
+
members:
|
|
30
|
+
a VARIABLE INTEGER
|
|
31
|
+
a VARIABLE INTEGER
|
|
32
|
+
[CLASS] A:
|
|
33
|
+
members:
|
|
34
|
+
b VARIABLE (class: ClassB)
|
|
35
|
+
b VARIABLE (class: ClassB)
|
|
36
|
+
|
|
37
|
+
errors:
|
|
38
|
+
|
|
39
|
+
SEMANTIC ERROR: A parameter in a parameter list must be referenced within the class declaration.
|
|
40
|
+
|
|
41
|
+
# Multiple parameter values
|
|
42
|
+
|
|
43
|
+
class ClassC {}
|
|
44
|
+
class A {ClassC c(i, 3);}
|
|
45
|
+
|
|
46
|
+
==>
|
|
47
|
+
|
|
48
|
+
[GLOBAL]:
|
|
49
|
+
ClassC CLASS
|
|
50
|
+
A CLASS
|
|
51
|
+
[CLASS] ClassC:
|
|
52
|
+
[CLASS] A:
|
|
53
|
+
members:
|
|
54
|
+
c VARIABLE (class: ClassC)
|
|
55
|
+
c VARIABLE (class: ClassC)
|
|
56
|
+
|
|
57
|
+
errors:
|
|
58
|
+
|
|
59
|
+
SEMANTIC ERROR: Identifier: i is not declared
|
|
60
|
+
SEMANTIC ERROR: Class 'ClassC' does not expect parameters, but 2 provided
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Simple
|
|
2
|
+
|
|
3
|
+
class A {{utf8string foo;utf8string bar;}}
|
|
4
|
+
|
|
5
|
+
==>
|
|
6
|
+
|
|
7
|
+
[GLOBAL]:
|
|
8
|
+
A CLASS
|
|
9
|
+
[CLASS] A:
|
|
10
|
+
members:
|
|
11
|
+
foo VARIABLE UCS (branch: COMPOUND)
|
|
12
|
+
bar VARIABLE UCS (branch: COMPOUND)
|
|
13
|
+
[BLOCK] COMPOUND:
|
|
14
|
+
foo VARIABLE UCS
|
|
15
|
+
bar VARIABLE UCS
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
# Nested compound statements
|
|
19
|
+
|
|
20
|
+
class A {{utf8string foo;{ utf8string bar1;utf8string bar2;}}}
|
|
21
|
+
|
|
22
|
+
==>
|
|
23
|
+
|
|
24
|
+
[GLOBAL]:
|
|
25
|
+
A CLASS
|
|
26
|
+
[CLASS] A:
|
|
27
|
+
members:
|
|
28
|
+
foo VARIABLE UCS (branch: COMPOUND)
|
|
29
|
+
bar1 VARIABLE UCS (branch: COMPOUND/COMPOUND)
|
|
30
|
+
bar2 VARIABLE UCS (branch: COMPOUND/COMPOUND)
|
|
31
|
+
[BLOCK] COMPOUND:
|
|
32
|
+
foo VARIABLE UCS
|
|
33
|
+
[BLOCK] COMPOUND:
|
|
34
|
+
bar1 VARIABLE UCS
|
|
35
|
+
bar2 VARIABLE UCS
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
# Multiple nested compound statements
|
|
39
|
+
|
|
40
|
+
class A {{utf8string foo;{ utf8string bar1;utf8string bar2;}}{utf8string fooi;{ utf8string bar1i;utf8string bar2i;}}}
|
|
41
|
+
|
|
42
|
+
==>
|
|
43
|
+
|
|
44
|
+
[GLOBAL]:
|
|
45
|
+
A CLASS
|
|
46
|
+
[CLASS] A:
|
|
47
|
+
members:
|
|
48
|
+
foo VARIABLE UCS (branch: COMPOUND)
|
|
49
|
+
bar1 VARIABLE UCS (branch: COMPOUND/COMPOUND)
|
|
50
|
+
bar2 VARIABLE UCS (branch: COMPOUND/COMPOUND)
|
|
51
|
+
fooi VARIABLE UCS (branch: COMPOUND#1)
|
|
52
|
+
bar1i VARIABLE UCS (branch: COMPOUND#1/COMPOUND)
|
|
53
|
+
bar2i VARIABLE UCS (branch: COMPOUND#1/COMPOUND)
|
|
54
|
+
[BLOCK] COMPOUND:
|
|
55
|
+
foo VARIABLE UCS
|
|
56
|
+
[BLOCK] COMPOUND:
|
|
57
|
+
bar1 VARIABLE UCS
|
|
58
|
+
bar2 VARIABLE UCS
|
|
59
|
+
[BLOCK] COMPOUND#1:
|
|
60
|
+
fooi VARIABLE UCS
|
|
61
|
+
[BLOCK] COMPOUND:
|
|
62
|
+
bar1i VARIABLE UCS
|
|
63
|
+
bar2i VARIABLE UCS
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Simple
|
|
2
|
+
|
|
3
|
+
class A {computed int a;}
|
|
4
|
+
|
|
5
|
+
==>
|
|
6
|
+
|
|
7
|
+
[GLOBAL]:
|
|
8
|
+
A CLASS
|
|
9
|
+
[CLASS] A:
|
|
10
|
+
members:
|
|
11
|
+
a VARIABLE INTEGER COMPUTED
|
|
12
|
+
a VARIABLE INTEGER COMPUTED
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
# Const and value
|
|
16
|
+
|
|
17
|
+
class A {computed const int a=3;}
|
|
18
|
+
|
|
19
|
+
==>
|
|
20
|
+
|
|
21
|
+
[GLOBAL]:
|
|
22
|
+
A CLASS
|
|
23
|
+
[CLASS] A:
|
|
24
|
+
members:
|
|
25
|
+
a VARIABLE INTEGER COMPUTED CONST
|
|
26
|
+
a VARIABLE INTEGER COMPUTED CONST
|
|
27
|
+
|
|
28
|
+
# Const computed value must be defined
|
|
29
|
+
|
|
30
|
+
computed const int a;
|
|
31
|
+
|
|
32
|
+
==>
|
|
33
|
+
|
|
34
|
+
[GLOBAL]:
|
|
35
|
+
a VARIABLE INTEGER COMPUTED CONST
|
|
36
|
+
|
|
37
|
+
errors:
|
|
38
|
+
|
|
39
|
+
SEMANTIC ERROR: a: const computed elementary type definition must have a value specified
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Simple
|
|
2
|
+
|
|
3
|
+
class A{int(3) a;}
|
|
4
|
+
|
|
5
|
+
==>
|
|
6
|
+
|
|
7
|
+
[GLOBAL]:
|
|
8
|
+
A CLASS
|
|
9
|
+
[CLASS] A:
|
|
10
|
+
members:
|
|
11
|
+
a VARIABLE INTEGER
|
|
12
|
+
a VARIABLE INTEGER
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
# Legacy, const, aligned, lookahead value range
|
|
16
|
+
|
|
17
|
+
class A{legacy const aligned(8) unsigned int(7)* a=3..i;}
|
|
18
|
+
|
|
19
|
+
==>
|
|
20
|
+
|
|
21
|
+
[GLOBAL]:
|
|
22
|
+
A CLASS
|
|
23
|
+
[CLASS] A:
|
|
24
|
+
members:
|
|
25
|
+
a VARIABLE INTEGER CONST
|
|
26
|
+
a VARIABLE INTEGER CONST
|
|
27
|
+
|
|
28
|
+
errors:
|
|
29
|
+
|
|
30
|
+
SEMANTIC ERROR: Identifier: i is not declared
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
# Default aligned
|
|
34
|
+
|
|
35
|
+
class A {aligned int(2) a;}
|
|
36
|
+
|
|
37
|
+
==>
|
|
38
|
+
|
|
39
|
+
[GLOBAL]:
|
|
40
|
+
A CLASS
|
|
41
|
+
[CLASS] A:
|
|
42
|
+
members:
|
|
43
|
+
a VARIABLE INTEGER
|
|
44
|
+
a VARIABLE INTEGER
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
# Explicit aligned bit count
|
|
48
|
+
|
|
49
|
+
class A {aligned(16) int(2) a;}
|
|
50
|
+
|
|
51
|
+
==>
|
|
52
|
+
|
|
53
|
+
[GLOBAL]:
|
|
54
|
+
A CLASS
|
|
55
|
+
[CLASS] A:
|
|
56
|
+
members:
|
|
57
|
+
a VARIABLE INTEGER
|
|
58
|
+
a VARIABLE INTEGER
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
# Number literal with unary plus operator
|
|
2
|
+
|
|
3
|
+
class A {+1;}
|
|
4
|
+
|
|
5
|
+
==>
|
|
6
|
+
|
|
7
|
+
[GLOBAL]:
|
|
8
|
+
A CLASS
|
|
9
|
+
[CLASS] A:
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
# Identifier with unary negation operator
|
|
13
|
+
|
|
14
|
+
class A {-i;}
|
|
15
|
+
|
|
16
|
+
==>
|
|
17
|
+
|
|
18
|
+
[GLOBAL]:
|
|
19
|
+
A CLASS
|
|
20
|
+
[CLASS] A:
|
|
21
|
+
|
|
22
|
+
errors:
|
|
23
|
+
|
|
24
|
+
SEMANTIC ERROR: Identifier: i is not declared
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
# Lengthof operator with unary negation
|
|
28
|
+
|
|
29
|
+
class A {-lengthof(i);}
|
|
30
|
+
|
|
31
|
+
==>
|
|
32
|
+
|
|
33
|
+
[GLOBAL]:
|
|
34
|
+
A CLASS
|
|
35
|
+
[CLASS] A:
|
|
36
|
+
|
|
37
|
+
errors:
|
|
38
|
+
|
|
39
|
+
SEMANTIC ERROR: Identifier: i is not declared
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
# Postfix operator
|
|
43
|
+
|
|
44
|
+
class A {i++;}
|
|
45
|
+
|
|
46
|
+
==>
|
|
47
|
+
|
|
48
|
+
[GLOBAL]:
|
|
49
|
+
A CLASS
|
|
50
|
+
[CLASS] A:
|
|
51
|
+
|
|
52
|
+
errors:
|
|
53
|
+
|
|
54
|
+
SEMANTIC ERROR: Identifier: i is not declared
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
# Class member access expression
|
|
58
|
+
|
|
59
|
+
class A {a.b;}
|
|
60
|
+
|
|
61
|
+
==>
|
|
62
|
+
|
|
63
|
+
[GLOBAL]:
|
|
64
|
+
A CLASS
|
|
65
|
+
[CLASS] A:
|
|
66
|
+
|
|
67
|
+
errors:
|
|
68
|
+
|
|
69
|
+
SEMANTIC ERROR: Identifier: a is not declared
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
# Class member access expression - multiple
|
|
73
|
+
|
|
74
|
+
class A {a.b.c;}
|
|
75
|
+
|
|
76
|
+
==>
|
|
77
|
+
|
|
78
|
+
[GLOBAL]:
|
|
79
|
+
A CLASS
|
|
80
|
+
[CLASS] A:
|
|
81
|
+
|
|
82
|
+
errors:
|
|
83
|
+
|
|
84
|
+
SEMANTIC ERROR: Identifier: a is not declared
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
# Array element access expression
|
|
88
|
+
|
|
89
|
+
class A {a[1];}
|
|
90
|
+
|
|
91
|
+
==>
|
|
92
|
+
|
|
93
|
+
[GLOBAL]:
|
|
94
|
+
A CLASS
|
|
95
|
+
[CLASS] A:
|
|
96
|
+
|
|
97
|
+
errors:
|
|
98
|
+
|
|
99
|
+
SEMANTIC ERROR: Identifier: a is not declared
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
# Array element access expression multiple
|
|
103
|
+
|
|
104
|
+
class A {a[1][2];}
|
|
105
|
+
|
|
106
|
+
==>
|
|
107
|
+
|
|
108
|
+
[GLOBAL]:
|
|
109
|
+
A CLASS
|
|
110
|
+
[CLASS] A:
|
|
111
|
+
|
|
112
|
+
errors:
|
|
113
|
+
|
|
114
|
+
SEMANTIC ERROR: Identifier: a is not declared
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
# Class member access expression with postfix operator
|
|
118
|
+
|
|
119
|
+
class A {a.b++;}
|
|
120
|
+
|
|
121
|
+
==>
|
|
122
|
+
|
|
123
|
+
[GLOBAL]:
|
|
124
|
+
A CLASS
|
|
125
|
+
[CLASS] A:
|
|
126
|
+
|
|
127
|
+
errors:
|
|
128
|
+
|
|
129
|
+
SEMANTIC ERROR: Identifier: a is not declared
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
# Array element access expression with postfix operator
|
|
133
|
+
|
|
134
|
+
class A {a[1]++;}
|
|
135
|
+
|
|
136
|
+
==>
|
|
137
|
+
|
|
138
|
+
[GLOBAL]:
|
|
139
|
+
A CLASS
|
|
140
|
+
[CLASS] A:
|
|
141
|
+
|
|
142
|
+
errors:
|
|
143
|
+
|
|
144
|
+
SEMANTIC ERROR: Identifier: a is not declared
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
# Class member and array element access expression - multiple mixed
|
|
148
|
+
|
|
149
|
+
class A {a[1][2].b.c[3];}
|
|
150
|
+
|
|
151
|
+
==>
|
|
152
|
+
|
|
153
|
+
[GLOBAL]:
|
|
154
|
+
A CLASS
|
|
155
|
+
[CLASS] A:
|
|
156
|
+
|
|
157
|
+
errors:
|
|
158
|
+
|
|
159
|
+
SEMANTIC ERROR: Identifier: a is not declared
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# First expression is expression
|
|
2
|
+
|
|
3
|
+
class A {for (i=1;i<9;i++) {j++;}}
|
|
4
|
+
|
|
5
|
+
==>
|
|
6
|
+
|
|
7
|
+
[GLOBAL]:
|
|
8
|
+
A CLASS
|
|
9
|
+
[CLASS] A:
|
|
10
|
+
[BLOCK] FOR:
|
|
11
|
+
[BLOCK] COMPOUND:
|
|
12
|
+
|
|
13
|
+
errors:
|
|
14
|
+
|
|
15
|
+
SEMANTIC ERROR: Identifier: i is not declared
|
|
16
|
+
SEMANTIC ERROR: Identifier: i is not declared
|
|
17
|
+
SEMANTIC ERROR: Identifier: i is not declared
|
|
18
|
+
SEMANTIC ERROR: Identifier: j is not declared
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
# First expression is computed elementary type definition
|
|
22
|
+
|
|
23
|
+
class A {for (computed int i=1;i<9;i++) {j++;}}
|
|
24
|
+
|
|
25
|
+
==>
|
|
26
|
+
|
|
27
|
+
[GLOBAL]:
|
|
28
|
+
A CLASS
|
|
29
|
+
[CLASS] A:
|
|
30
|
+
[BLOCK] FOR:
|
|
31
|
+
i VARIABLE INTEGER COMPUTED
|
|
32
|
+
[BLOCK] COMPOUND:
|
|
33
|
+
|
|
34
|
+
errors:
|
|
35
|
+
|
|
36
|
+
SEMANTIC ERROR: Identifier: j is not declared
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
# First expression is empty
|
|
40
|
+
|
|
41
|
+
class A {for (;i<9;i++) {j++;}}
|
|
42
|
+
|
|
43
|
+
==>
|
|
44
|
+
|
|
45
|
+
[GLOBAL]:
|
|
46
|
+
A CLASS
|
|
47
|
+
[CLASS] A:
|
|
48
|
+
[BLOCK] FOR:
|
|
49
|
+
[BLOCK] COMPOUND:
|
|
50
|
+
|
|
51
|
+
errors:
|
|
52
|
+
|
|
53
|
+
SEMANTIC ERROR: Identifier: i is not declared
|
|
54
|
+
SEMANTIC ERROR: Identifier: i is not declared
|
|
55
|
+
SEMANTIC ERROR: Identifier: j is not declared
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# With braces in clauses
|
|
2
|
+
|
|
3
|
+
class A {if(i==1){i++;}else if(i==2){i--;}else{j++;}}
|
|
4
|
+
|
|
5
|
+
==>
|
|
6
|
+
|
|
7
|
+
[GLOBAL]:
|
|
8
|
+
A CLASS
|
|
9
|
+
[CLASS] A:
|
|
10
|
+
[BLOCK] COMPOUND:
|
|
11
|
+
[BLOCK] COMPOUND#1:
|
|
12
|
+
[BLOCK] COMPOUND#2:
|
|
13
|
+
|
|
14
|
+
errors:
|
|
15
|
+
|
|
16
|
+
SEMANTIC ERROR: Identifier: i is not declared
|
|
17
|
+
SEMANTIC ERROR: Identifier: i is not declared
|
|
18
|
+
SEMANTIC ERROR: Identifier: i is not declared
|
|
19
|
+
SEMANTIC ERROR: Identifier: i is not declared
|
|
20
|
+
SEMANTIC ERROR: Identifier: j is not declared
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
# No braces and no else if clause
|
|
24
|
+
|
|
25
|
+
class A {if(i==1)i++;else j++;}
|
|
26
|
+
|
|
27
|
+
==>
|
|
28
|
+
|
|
29
|
+
[GLOBAL]:
|
|
30
|
+
A CLASS
|
|
31
|
+
[CLASS] A:
|
|
32
|
+
[BLOCK] COMPOUND:
|
|
33
|
+
[BLOCK] COMPOUND#1:
|
|
34
|
+
|
|
35
|
+
errors:
|
|
36
|
+
|
|
37
|
+
SEMANTIC ERROR: Identifier: i is not declared
|
|
38
|
+
SEMANTIC ERROR: Identifier: i is not declared
|
|
39
|
+
SEMANTIC ERROR: Identifier: j is not declared
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
# Two if statements
|
|
43
|
+
|
|
44
|
+
class A{if(x)1;if(y)2;}
|
|
45
|
+
|
|
46
|
+
==>
|
|
47
|
+
|
|
48
|
+
[GLOBAL]:
|
|
49
|
+
A CLASS
|
|
50
|
+
[CLASS] A:
|
|
51
|
+
[BLOCK] COMPOUND:
|
|
52
|
+
[BLOCK] COMPOUND#1:
|
|
53
|
+
|
|
54
|
+
errors:
|
|
55
|
+
|
|
56
|
+
SEMANTIC ERROR: Identifier: x is not declared
|
|
57
|
+
SEMANTIC ERROR: Identifier: y is not declared
|